diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 49ce8e3..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/.java_bin
-/.java_src
-/.jgit_version
-/.protobuf_version
-/config.mak
-/release
-/test
diff --git a/DEPLOY_GAE b/DEPLOY_GAE
deleted file mode 100644
index 4dea8b3..0000000
--- a/DEPLOY_GAE
+++ /dev/null
@@ -1,90 +0,0 @@
-Deploying Gerrit to Google App Engine
-=====================================
-
-To deploy Gerrit to a new (or an upgrade for an existing) Google
-App Engine instance:
-
-----
-	make update APPID=your-application-id ADMIN=your@email
-----
-
-where "your-application-id" is the unique application id you chose
-for the application instance at the time you registered it with
-Google App Engine;
-
-and where "your@email" is a Google Account username that is
-registered as a developer/administrator of the Google App Engine
-instance identified by $APPID.
-
-
-Saving Configuration
---------------------
-
-If you are frequently deploying via the same user account or to the
-same instance you may want to save your configuration options into
-a local config.mak file:
-
-----
-	$ cat config.mak
-	ADMIN = your@email
-	APPID = your-application
-----
-
-as these parameters can then be left off of the make update
-command line:
-
-----
-	make update
-----
-
-
-Admin Only Lockout
-------------------
-
-When updating a Google App Engine instance Gerrit can be configured
-to only permit admin logins.  This may be useful when setting up
-a testing/development environment, where external users are not
-desired yet.
-
-Simply set ADMIN_ONLY=1 when running the build:
-
-----
-	make update ADMIN_ONLY=1 [other options...]
-----
-
-You may wish to have this configured in your config.mak file:
-
-----
-	$ cat config.mak
-	ifeq ($(APPID),your-private-id)
-		ADMIN_ONLY=1
-	endif
-----
-
-This way the lockout is automatically enabled when you run a build.
-
-To disable the lockout, run "make update" without ADMIN_ONLY set
-(e.g. delete or comment it out from your config.mak file).
-
-
-
-Special Options
----------------
-
-When deploying to an internal Google App Engine instance you may
-need to set APPCFG_OPTS to point to the internal admin console.
-This is best configured in your config.mak file:
-
-----
-	$ cat config.mak
-	ADMIN = you@google.com
-	APPID = your-application
-
-	ifeq ($(APPID),internal-app-id)
-		APPCFG_OPTS = -s admin-console.some.internal.host.name
-	endif
-----
-
-As a Googler you will need to search the intranet to locate the
-correct hostname for the internal admin-console, or ask someone who
-is involved with Gerrit or the Google App Engine team for the name.
diff --git a/DEPLOY_MGR b/DEPLOY_MGR
deleted file mode 100644
index ff330ac..0000000
--- a/DEPLOY_MGR
+++ /dev/null
@@ -1,182 +0,0 @@
-Deploying Gerrit's Manager Backend
-==================================
-
-The manager backend is a Java process that performs batch operations
-on local Git repositories, based on the metadata recorded into the
-Gerrit instance running on Google App Engine.
-
-To deploy the backend:
-
-----
-	$ make release-mgr
-	$ scp -r release/mgr you@some.server:mgr
----
-
-
-Running
--------
-
-To start the backend server process:
-
-----
-	$ ./bin/mgr mgr.config &
-----
-
-where mgr.config is the backend's configuration file (see below
-for details on its format and options).
-
-To stop the backend, send it a SIGINT:
-
-----
-	kill -INT $mgrpid
-----
-
-
-Creating Gerrit Projects and Branches
--------------------------------------
-
-To create new projects/branches in Gerrit to match those available
-locally in Git run the mgr in the foreground with its sync option:
-
-----
-	$ ./bin/mgr mgr.config sync
-----
-
-The sync subcommand will create a new Gerrit project for any new
-Git repository found under codereview.basedir.  It also creates
-a new branch in Gerrit for any branch in any new or existing Git
-repository.
-
-
-
-Manager Configuration
----------------------
-
-The manager backend requires a configuration file to designate
-which Git repositories it will have access to, and which Gerrit
-instance it communicates with.
-
-The configuration file is in `git config` format and can thus be
-automatically read/updated via `git config --file=<name>`.  It can
-also be hand-modified.  For more details on the file format, see
-`man git-config`.
-
-----
-	$ cat mgr.config
-	[user]
-	  name = Gerrit Code Review
-	  email = gerrit@localhost
-
-	[codereview]
-	  server = http://androidreview.appspot.com/
-	  basedir = /pub/scm/git
-	  username = role-account@gmail.com
-	  secureconfig = .secure-mgr-config
-	  sleep = 60
-
-	[log]
-	  file = mgr.log
-	  level = debug
-----
-
-A description of the major options follows:
-
-user.name::
-	Author/committer name Gerrit records when creating an
-	automatic merge commit.
-
-user.email::
-	Author/committer email Gerrit records when creating an
-	automatic merge commit.
-
-codereview.server::
-	URL of the Gerrit Google App Engine instance providing
-	database support and web user interface to the code review
-	system.  Presently only HTTP is supported.  Future releases
-	of Gerrit may support HTTPS, if/when Google App Engine ever
-	supports HTTPS.
-
-codereview.basedir::
-	Root directory that all Git repositories are relative to.
-	Repositories in this directory should be bare repositories.
-	The name of a project in Gerrit is appended to this directory
-	to determine the path of the corresponding Git repository
-	where change branches are stored and merges take place.
-
-codereview.username::
-	(Optional) Google Account username to authenticate to
-	codereview.server with.  This option is only required if the
-	Gerrit instance has been set to ADMIN_ONLY=1.  (Normally the
-	manager backend uses a more secure authentication strategy.)
-	If set, make sure codereview.password is also in the secure
-	configuration file.
-
-codereview.secureconfig::
-	Path to the secure configuration file (see below).
-	A relative path is evaluated relative to the main
-	configuration file.
-
-codereview.sleep::
-	Number of seconds between queries when Gerrit says there
-	is nothing waiting to be processed.  This is the maximum
-	latency between when an upload or merge request is first
-	stored in the data store and when the backend can process it.
-
-codereview.memory::
-	Maximum amount of Java heap memory to give to the manager
-	process.  Valid values are in bytes, with standard "m" and
-	"g" suffixes for "megabytes" and "gigabytes".  E.g. "256m"
-	would assign up to 256 megabytes of memory to the manager.
-
-log.file::
-	Path to the log file the server writes messages to.  If not
-	set messages are sent to stdout.
-
-log.level::
-	Set the verbosity of the logging.  Supported values are:
-	fatal, error, warning, info, debug, trace.  Later levels
-	include all messages from all earlier levels.
-
-
-Secure Configuration File
--------------------------
-
-The secure configuration file stores additional details which
-should never be made public.  This file should be protected with
-filesystem level access controls, e.g. "chmod 0600" on UNIX prior
-to writing any information into it.
-
-----
-	$ cat .secure-mgr-config
-	[codereview]
-	  password = g3rr1t1sc001
-	  internalapikey = somebiglongkeystring
-----
-
-codereview.password::
-	(Optional) Password matching the Google Account listed
-	in codereview.username in the main configuration file.
-	This value is only required if the Gerrit instance is in
-	ADMIN_ONLY=1 mode and thus needs the backend to authenticate
-	with a Google Account.
-
-codereview.internalapikey::
-	The private key used for HMAC authentication between the
-	manager backend and the Gerrit instance running on Google
-	App Engine.  Any application developer/administrator can
-	get this key from http://APPID.appspot.com/admin/settings
-
-
-Parallel Operation Concerns
----------------------------
-
-The backend uses aggressive caching, and is not yet fully safe to
-run concurrently with command line Git operations such as `git gc`,
-`git repack` or `git pack-refs`.
-
-Until the backend has been fully patched to support concurrent
-operations, do not run Git operations in repositories under
-codereview.basedir while a backend is running on that directory.
-
-In order to repack safely, stop the backend, run the repack activity,
-then start it back up again.
diff --git a/Documentation/.gitignore b/Documentation/.gitignore
new file mode 100644
index 0000000..2d19fc7
--- /dev/null
+++ b/Documentation/.gitignore
@@ -0,0 +1 @@
+*.html
diff --git a/Documentation/Makefile b/Documentation/Makefile
new file mode 100644
index 0000000..4609712
--- /dev/null
+++ b/Documentation/Makefile
@@ -0,0 +1,18 @@
+DOC_HTML       = $(patsubst %.txt,%.html,$(wildcard *.txt))
+ASCIIDOC       = asciidoc
+ASCIIDOC_EXTRA =
+RM             = rm -f
+
+all: html
+
+html: $(DOC_HTML)
+
+clean:
+	$(RM) *.html
+
+$(DOC_HTML): %.html : %.txt
+	$(RM) $@+ $@
+	$(ASCIIDOC) \
+		-b xhtml11 -f asciidoc.conf \
+		$(ASCIIDOC_EXTRA) -o $@+ $<
+	mv $@+ $@
diff --git a/Documentation/asciidoc.conf b/Documentation/asciidoc.conf
new file mode 100644
index 0000000..48a1d59d
--- /dev/null
+++ b/Documentation/asciidoc.conf
@@ -0,0 +1,7 @@
+[attributes]
+asterisk=&#42;
+plus=&#43;
+caret=&#94;
+startsb=&#91;
+endsb=&#93;
+tilde=&#126;
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
new file mode 100644
index 0000000..a6c4210
--- /dev/null
+++ b/Documentation/config-gerrit.txt
@@ -0,0 +1,243 @@
+Gerrit2 - Configuration
+=======================
+
+Several columns in the `system_config` table may be set to control
+how Gerrit behaves.
+
+[NOTE]
+The contents of the `system_config` table are cached at startup
+by Gerrit.  If you modify any columns in this table, Gerrit needs
+to be restarted before it will use the new values.
+
+Configurable Parameters
+-----------------------
+
+max_session_age
+~~~~~~~~~~~~~~~
+
+Maximum number of seconds that an XSRF token or a session cookie
+is permitted to be valid for.
+
+By default this is 43200 seconds, or 12 hours.  Any browser session
+which has not been used in this time span will ask the user to
+login again.
+
+Administrators may increase (or decrease) this setting to control
+how long an idle session is allowed to remain alive.
+
+site_path
+~~~~~~~~~
+
+Local filesystem directory holding the site customization assets.
+Placing this directory under version control and/or backup is a
+good idea.
+
+SSH keys (`ssh_host_rsa_key`, `ssh_host_dsa_key`) in this directory
+provide the host keys for the internal SSH daemon.
+
+Other files support site customization.
+
+* link:config-headerfooter.html[Site Header/Footer]
+
+git_base_path
+~~~~~~~~~~~~~
+
+Local filesystem directory holding all Git repositories that
+Gerrit knows about and can process changes for.  A project
+entity in Gerrit maps to a local Git repository by creating
+the path string "${git_pase_path}/${project_name}.git".
+
+gerrit_git_name
+~~~~~~~~~~~~~~~
+
+Name that Gerrit calls itself in Git when it creates a new Git
+commit, such as a merge during change submission.
+
+By default this is "Gerrit Code Review".
+
+gerrit_git_email
+~~~~~~~~~~~~~~~~
+
+Email address that Gerrit refers to itself as when it creates a
+new Git commit, such as a merge commit during change submission.
+
+If NULL, Gerrit generates this as "gerrit@`hostname`", where
+`hostname` is the hostname of the system Gerrit is running on.
+
+By default, this is NULL, generating the value at startup.
+
+canonical_url
+~~~~~~~~~~~~~
+
+The default URL for Gerrit to be accessed through.
+
+Typically this would be set to "http://review.example.com/" or
+"http://example.com/gerrit/" so Gerrit can output links that point
+back to itself.
+
+Setting this is highly recommended, as its necessary for the upload
+code invoked by "git push" or "repo upload" to output hyperlinks
+to the newly uploaded changes.
+
+use_contributor_agreements
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Controls whether or not the contributor agreement features are
+enabled for the Gerrit site.  If enabled a user must complete a
+contributor agreement before they can upload changes.
+
+If enabled, the admin must also insert one or more rows into
+`contributor_agreements` and create agreement files under
+`$site_path/static`, so users can actually complete one or
+more agreements. 
+
+By default this is `N` (no agreements are used).
+
+sshd_port
+~~~~~~~~~
+
+Port number the internal SSHD listens for connections on.
+
+Gerrit receives new change submissions through this port by
+"git push ssh://you@example.com:$sshd_port/$project.git ...".
+
+By default this is 29418.
+
+login_type
+~~~~~~~~~~
+
+Type of user authentication employed by Gerrit.  This setting has
+two supported values:
+
+* `OPENID`
++
+The default setting.  Gerrit uses any valid OpenID
+provider chosen by the end-user.  For more information see
+http://openid.net/[openid.net]
+
+* `HTTP`
++
+Gerrit relies upon data in the HTTP request, such as the HTTP basic
+authentication, or some types of commerical single-sign-on solutions.
+For more information see link:config-sso.html[SSO configuration].
+
+login_http_header
+~~~~~~~~~~~~~~~~~
+
+HTTP header to trust the username from, or NULL to select HTTP
+basic or digest authentication.  Only used if `login_type = HTTP`.
+
+For more information see link:config-sso.html[SSO configuration].
+
+email_format
+~~~~~~~~~~~~
+
+Optional format string to construct user email addresses out of
+user login names.  Only used if `login_type = HTTP`.
+
+This value can be set to a format string, where `\{0\}` is replaced
+with the login name.  E.g. "\{0\}+gerrit@example.com" with a user
+login name of "foo" will produce "foo+gerrit@example.com" during
+the first time user "foo" registers.
+
+For more information see link:config-sso.html[SSO configuration].
+
+allow_google_account_upgrade
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Allow old Gerrit1 users to seamlessly upgrade from Google Accounts
+on Google App Engine to OpenID authentication.  This should only be
+set to true on a Gerrit2 database that was imported from a Gerrit1
+database run on Google App Engine.  Having it enabled incurs an
+extra database query when new Google Account users register with
+the Gerrit2 server.
+
+Its strongly encouraged to set this to 'N' once the following
+query drops to 0, or close to 0:
+
+====
+  SELECT COUNT(*) FROM account_external_ids e
+  WHERE e.external_id = 'https://www.google.com/accounts/o8/id'
+  AND NOT EXISTS (SELECT 1
+    FROM account_external_ids o
+    WHERE o.account_id = e.account_id
+	AND o.external_id LIKE '%/id?id=%');
+====
+
+
+Not User Serviceable
+--------------------
+
+These fields generally shouldn't be modified.
+
+xsrf_private_key
+~~~~~~~~~~~~~~~~
+
+A private key used to sign the XSRF (cross site request forgey)
+protection tokens.  All RPC calls which can potentially modify
+data require that the client obtain, and then later present an XSRF
+token to Gerrit.  The tokens are signed with this private key.
+
+This column is automatically generated when the database is
+initialized.  Changing it to a new value would cause all current
+XSRF tokens to be invalidated, forcing clients to either fail or
+retry any requests in progress.
+
+Changing it is not recommended.
+
+account_private_key
+~~~~~~~~~~~~~~~~~~~
+
+Like xsrf_private_key, but used to sign the cookie that tells Gerrit
+what account the end-user has signed into.  The key signs the cookie,
+preventing a client from spoofing another account.
+
+This column is automatically generated when the database is
+initialized.  Changing it to a new value would cause all current
+cookies to be invalidated, forcing clients to fail their current
+requests and require the user to sign in again.
+
+Changing it is not recommended.
+
+admin_group_id
+~~~~~~~~~~~~~~
+
+Unique identity of the group with full privileges.  Any user who
+is a member of this group may manage any other group, any project,
+and other system settings over the web.
+
+This is initialized by Gerrit to be the "Administrators" group.
+
+Changing it is not recommended.
+
+anonymous_group_id
+~~~~~~~~~~~~~~~~~~
+
+Unique identity of the group for anonymous (not authenticated) users.
+
+All users are a member of this group, whether or not they are
+actually signed in to Gerrit.  Any access rights assigned to
+this group are inherited by all users.
+
+This is initialized by Gerrit to be the "Anonymous Users" group.
+
+Changing it is not recommended.
+
+registered_group_id
+~~~~~~~~~~~~~~~~~~~
+
+Unique identity of the group for all authenticated users.
+
+All signed-in users are a member of this group.  Any access rights
+assigned to this group are inherited by all users once they have
+authenticated to Gerrit.
+
+Since account registration is open and fairly easy to obtain,
+moving from the "Anonymous Users" group to this group is not
+very difficult.  Caution should be taken when assigning any
+permissions to this group.
+
+This is initialized by Gerrit to be the "Registered Users" group.
+
+Changing it is not recommended.
+
diff --git a/Documentation/config-gitweb.txt b/Documentation/config-gitweb.txt
new file mode 100644
index 0000000..736c433
--- /dev/null
+++ b/Documentation/config-gitweb.txt
@@ -0,0 +1,43 @@
+Gerrit2 - Gitweb Integration
+============================
+
+Gerrit2 can generate hyperlinks to gitweb, allowing users to jump
+from Gerrit content to the same information, but shown by gitweb.
+
+To enable the gitweb integration, update `system_config.gitweb_url`
+with the URL of your gitweb CGI.
+
+The CGI's `$projectroot` should be `git_base_path`, or a fairly
+current replica.  If a replica is being used, ensure it uses a full
+mirror, so the `refs/changes/*` namespace is available.
+
+====
+  psql -c "UPDATE system_config SET gitweb_url='http://example.com/gitweb.cgi'" reviewdb
+====
+
+After updating `system_config`, the Gerrit server must be restarted
+and clients must reload the host page to see the change.
+
+gitweb_url
+----------
+
+Defines the web location where a `gitweb.cgi` is installed to browse
+`git_base_path` and the repositories it contains.
+
+Gerrit appends any necessary query arguments onto the end of this URL.
+For example, "?p=$project.git;h=$commit".
+
+Access Control
+--------------
+
+Gitweb access controls can be implemented using standard web server
+access controls.  This isn't typically integrated with Gerrit's own
+access controls.  Caution must be taken to ensure the controls are
+consistent if access needs to be restricted.
+
+Caching Gitweb
+--------------
+
+If your repository set is large and you are expecting a lot
+of users, you may want to look at the caching forks used by
+high-traffic sites like kernel.org or repo.or.cz.
diff --git a/Documentation/config-headerfooter.txt b/Documentation/config-headerfooter.txt
new file mode 100644
index 0000000..eaa5993
--- /dev/null
+++ b/Documentation/config-headerfooter.txt
@@ -0,0 +1,109 @@
+Gerrit2 - Site Customization
+============================
+
+Gerrit2 supports some customization of the HTML it sends to
+the browser, allowing organizations to alter the look and
+feel of the application to fit with their general scheme.
+
+HTML Header/Footer
+------------------
+
+At startup Gerrit reads the following files (if they exist) and
+uses them to customize the HTML page it sends to clients:
+
+* `$site_path/GerritSiteHeader.html`
++
+HTML is inserted below the menu bar, but above any page content.
+This is a good location for an organizational logo, or links to
+other systems like bug tracking.
+
+* `$site_path/GerritSiteFooter.html`
++
+HTML is inserted at the bottom of the page, below all other
+content.  If in the future Gerrit adds a version tag footer,
+this content would be just above that version tag.
+
+* `$site_path/GerritSite.css`
++
+The CSS rules are inlined into the top of the HTML page, inside
+of a `<style>` tag.  These rules can be used to support styling
+the elements within either the header or the footer.
+
+If any of these files are created, deleted or modified you need to
+restart the web application to make the changes take effect.
+
+The *.html files must be valid XHTML, with one root element,
+typically a single `<div>` tag.  The server parses it as XML, and
+then inserts the root element into the host page.  If a file has
+more than one root level element, Gerrit will not start.
+
+Static Images
+-------------
+
+Static image files can also be served from `$site_path/static`,
+and may be referenced in `GerritSite{Header,Footer}.html`
+or `GerritSite.css` by the relative URL `static/$name`
+(e.g. `static/logo.png`).
+
+To simplify security management, only files are served from
+`$site_path/static`.  Subdirectories are explicitly forbidden from
+being served from this location by enforcing the rule that file names
+cannot contain `/` or `\`.  (Client requests for `static/foo/bar`
+will result in 404 Not Found responses.)
+
+HTTP Caching
+------------
+
+Assets under `$site_path` are always served with a 5 minute expire,
+permitting some (limited) caching.  It may take up to 5 minutes
+after Gerrit restart before clients see the changes.
+
+Google Analytics Integration
+----------------------------
+
+To connect Gerrit to Google Analytics add the following to your
+`GerritSiteFooter.html`:
+
+====
+  <div>
+  <!-- standard analytics code -->
+    <script type="text/javascript">
+      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+    </script>
+    <script type="text/javascript">
+      var pageTracker = _gat._getTracker("UA-nnnnnnn-n");
+      pageTracker._trackPageview();
+    </script>
+  <!-- /standard analytics code -->
+
+  <script type="text/javascript">
+    window.onload = function() {
+      gerrit_addHistoryHook(function (s) {
+        pageTracker._trackPageview(s)
+      });
+    };
+  </script>
+  </div>
+====
+
+Please consult the Google Analytics documentation for the correct
+setup code (the first two script tags).  The above is shown only
+as a reference example.
+
+If your footer is otherwise empty, ensure you wrap all of the script
+tags in a single `<div>` tag to ensure it is a well-formed XHTML
+document file.
+
+The global function `gerrit_addHistoryHook` accepts functions that
+accept a string parameter.  These functions are put into a list and
+invoked any time Gerrit shifts URLs.  You'll see page names like
+`/Gerrit#change,123` be passed to these functions, which in turn
+are handed off to Google Analytics for tracking.
+
+The `window.onload` callback is necessary to ensure that the
+`gerrit_addHistoryHook` function has actually been defined by the
+page.  Because GWT loads the module asynchronously any `<script>`
+block in the header or footer will execute before Gerrit has defined
+the function and is ready to register the hook callback.
+
diff --git a/Documentation/config-sso.txt b/Documentation/config-sso.txt
new file mode 100644
index 0000000..79cd461
--- /dev/null
+++ b/Documentation/config-sso.txt
@@ -0,0 +1,129 @@
+Gerrit2 - Single Sign-On Security
+=================================
+
+Gerrit2 supports integration with some types of single sign-on
+security solutions, making it possible for end-users to setup
+and manage accounts, without administrator involvement.
+
+OpenID
+------
+
+By default a new Gerrit installation relies upon OpenID to perform
+user authentication services.  To enable OpenID, the `system_config`
+table needs `login_type` set to `OPENID`:
+
+====
+  UPDATE system_config SET login_type = 'OPENID';
+====
+
+As this is the default setting for new installations there is
+nothing required from the site administrator to make use of the
+OpenID authentication services.
+
+* http://openid.net/[openid.net]
+
+Database Schema
+~~~~~~~~~~~~~~~
+
+User identities obtained from OpenID providers are stored into the
+`account_external_ids` table.  Users may link more than one OpenID
+identity to the same Gerrit account (use Settings, Web Identities
+to manage this linking), making it easier for their browser to sign
+in to Gerrit if they are frequently switching between different
+unique OpenID accounts.
+
+
+HTTP Basic/Digest Authentication
+--------------------------------
+
+When using HTTP authentication, Gerrit assumes that the servlet
+container or the frontend web server has performed all user
+authentication prior to handing the request off to Gerrit.
+
+As a result of this assumption, Gerrit can assume that any and
+all requests have already been authenticated.  The "Sign In" and
+"Sign Out" links are therefore not displayed in the web UI.
+
+To enable this form of authentication, update `system_config`:
+
+====
+  UPDATE system_config
+  SET
+   login_type='HTTP'
+  ,login_http_header=NULL
+  ,email_format='{0}@example.com';
+====
+
+The `login_type` must always be `HTTP`, indicating the user identity
+will be obtained from the HTTP authorization data.
+
+The `login_http_header` must always be `NULL`.  If non-null then
+Gerrit won't correctly honor the `Authorization` HTTP header.
+
+The `email_format` field ('optional') sets the preferred email
+address during first login.  Gerrit will replace `\{0\}` with the
+username, as obtained from the Authorization header.  A format such
+as shown in the example would be typical, to add the domain name
+of the organization.
+
+Database Schema
+~~~~~~~~~~~~~~~
+
+User identities are stored in the `account_external_ids` table.
+The user string obtained from the authorization header has the prefix
+"gerrit:" and is stored in the `external_id` field.  For example,
+if a username was "foo" then the external_id field would be populated
+with "gerrit:foo".
+
+
+Computer Associates Siteminder
+------------------------------
+
+Siteminder is a commercial single sign on solution marketed by
+Computer Associates.  It is very common in larger enterprise
+environments.
+
+When using Siteminder, Gerrit assumes it has been installed in a
+servlet container which is running behind an Apache web server,
+and that the Siteminder authentication module has been configured
+within Apache to protect the entire Gerrit application.  In this
+configuration all users must authenticate with Siteminder before
+they can access any resource on Gerrit.
+
+As a result of this assumption, Gerrit can assume that any and
+all requests have already been authenticated.  The "Sign In" and
+"Sign Out" links are therefore not displayed in the web UI.
+
+To enable this form of authentication, update `system_config`:
+
+====
+  UPDATE system_config
+  SET
+   login_type='HTTP'
+  ,login_http_header='SM_USER'
+  ,email_format='{0}@example.com';
+====
+
+The `login_type` must always be `HTTP`, indicating the user identity
+will be obtained from an HTTP header.
+
+The `login_http_header` indicates which HTTP header field the
+Siteminder product has stored the username.  Usually this is
+"SM_USER", but may differ in your environment.  Please refer to
+your organization's single sign-on or security group to ensure the
+setting is correct.
+
+The `email_format` field ('optional') sets the user's preferred email
+address when they first login.  Gerrit will replace `\{0\}` with the
+username, as supplied by Siteminder.  A format such as shown in the
+example would be typical, to add the domain name of the organization.
+
+Database Schema
+~~~~~~~~~~~~~~~
+
+User identities are stored in the `account_external_ids` table.
+The user string obtained from Siteminder (e.g. the value in the
+"SM_USER" HTTP header) has the prefix "gerrit:" and is stored in the
+`external_id` field.  For example, if a Siteminder username was "foo"
+then the external_id field would be populated with "gerrit:foo".
+
diff --git a/Documentation/dev-eclipse.txt b/Documentation/dev-eclipse.txt
new file mode 100644
index 0000000..bdabd99
--- /dev/null
+++ b/Documentation/dev-eclipse.txt
@@ -0,0 +1,82 @@
+Gerrit2 - Eclipse Setup
+=======================
+
+This document is about installing Gerrit into an Eclipse workspace
+for development and debugging, especially with the GWT hosted
+mode debugger.
+
+You will need to have the GWT (Google Web Toolkit) SDK installed on
+your system.  A Java 5 or later SDK is also required to run GWT's
+compiler and runtime.
+
+GWT requires the Sun JDK (or OpenJDK).  The GWT "hosted mode"
+environment (Eclipse debugger or "make web-shell") does not work
+under libgcj.
+
+
+User Library
+------------
+
+Create a user library called `GWT`:
+
+* Window > Preferences
+* Java > Build Path > User Libraries
+
+* New
+* Name: `GWT`
+* Add JARs...
+
+* Select `gwt-user.jar` from the $(GWT_SDK) directory.
+* Select `gwt-dev-$(OS).jar` from the $(GWT_SDK) directory.
+
+Maven Plugin
+------------
+
+Install the Maven Integration plugins:
+
+http://m2eclipse.codehaus.org/[m2eclipse]
+
+
+Pre-Build
+---------
+
+Ensure jgit has been installed in your maven repository:
+
+====
+  (cd ../jgit/jgit-maven/jgit/ && mvn install)
+====
+
+
+Import Projects
+---------------
+
+Import appdist using General -> Maven Projects
+
+Uncheck `jgit`.  You don't want to import it.  The Maven project
+is configured in a non-standard way and the Eclipse plugin can't
+import it correctly.
+
+Right click on `gwtorm`, Maven -> Update Project Configuration to
+force a compile of the generted ANTLR sources.  This fixes the
+compile errors identified after import.
+
+
+Configure Database
+------------------
+
+You may have already done this step earlier, based on the
+instructions in link:dev-readme.html[Developer Setup].
+
+* Open gerrit-devdb/src/main/config
+* Copy `GerritServer.properties_example` to `GerritServer.properties`
+* Configure your database for debugging in hosted mode.
+
+
+Launch Gerrit
+-------------
+
+Open Run->Debug Configurations... 
+
+Under Java Application find `gerrit_debug` (not Mac OS X)
+or `gerrit_macos` (Mac OS X only) to start the GWT hosted
+mode browser and debug through Eclipse.
diff --git a/Documentation/dev-readme.txt b/Documentation/dev-readme.txt
new file mode 100644
index 0000000..aaebc7f
--- /dev/null
+++ b/Documentation/dev-readme.txt
@@ -0,0 +1,119 @@
+Gerrit2 - Developer Setup
+=========================
+
+You need Apache Maven to compile the code, and a SQL database
+to house the Gerrit2 metadata.  PostgreSQL is currently the only
+supported database.
+
+To create a new client workspace:
+
+====
+  mkdir gerrit2
+  cd gerrit2
+  repo init \
+-u git://android.git.kernel.org/tools/manifest.git \
+-b gerrit2
+====
+
+Important Links
+---------------
+
+Google Web Toolkit:
+
+* http://code.google.com/webtoolkit/download.html[Download]
+* http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5[Developer's Guide]
+
+Apache Maven:
+
+* http://maven.apache.org/download.html[Download]
+* http://maven.apache.org/run-maven/index.html[Running Maven]
+
+PostgreSQL:
+
+* http://www.postgresql.org/docs/[Documentation]
+
+
+Setting up the Database
+-----------------------
+
+You'll need to configure your development workspace to use a database
+gwtorm supports (or add the necessary dialect support to gwtorm,
+and then configure your workspace anyway).
+
+====
+  cd devdb/src/main/config/
+  cp GerritServer.properties_example GerritServer.properties
+====
+
+Now edit GerritServer.properties to uncomment the database you are
+going to use, and possibly update properties such as "user" and
+"password" to reflect the actual connection information used.
+
+====
+  # PostgreSQL
+  database.driver = org.postgresql.Driver
+  database.url = jdbc:postgresql:reviewdb
+  database.user = gerrit2
+  database.password = letmein
+====
+
+PostgreSQL Setup
+~~~~~~~~~~~~~~~~
+
+Create the JDBC user as a normal user (no superuser access) and
+assign it an encrypted password:
+
+====
+  createuser -A -D -P -E gerrit2
+====
+
+Create the database listed in your GerritServer.properties and set
+the JDBC user as the owner of that database:
+
+====
+  createdb -E UTF-8 -O gerrit2 reviewdb
+====
+
+
+Configuring Eclipse
+-------------------
+
+If you want to use the Eclipse IDE for development work, please
+see link:dev-eclipse.html[Eclipse Setup] for more details on how
+to configure your workspace.
+
+
+Building
+--------
+
+From the command line:
+
+====
+  (cd appdist && mvn install)
+====
+
+Output packages will be placed in:
+
+====
+  appdst/target/gerrit-*-bin.*
+====
+
+
+Client-Server RPC
+-----------------
+
+The client-server RPC implementation is gwtjsonrpc, not the stock RPC
+system that comes with GWT.  This buys us automatic XSRF protection.
+It also makes all of the messages readable and writable by any JSON
+implementation, facilitating "mashups" and 3rd party clients.
+
+The programming API is virtually identical (you just need to extend
+RemoteJsonService instead of RemoteService).
+
+
+Why GWT?
+--------
+
+We like it.  Plus we can write Java code once and run it both in
+the browser and on the server side.  This will be very useful as
+we implement offline support in Gerrit.
diff --git a/Documentation/feature-roadmap.txt b/Documentation/feature-roadmap.txt
new file mode 100644
index 0000000..4e80612
--- /dev/null
+++ b/Documentation/feature-roadmap.txt
@@ -0,0 +1,45 @@
+Gerrit2 Feature Roadmap
+=======================
+
+Everything Gerrit1 does
+-----------------------
+
+This list is long so I'm not listing it all here.
+
+Offline Support
+---------------
+
+Initially we will use Google Gears, but HTML 5 will include
+standardized offline application support that we should make
+use of.  With GWT we can target both.  The plan is to initially
+target Google Gears, and add HTML 5 support once Gerrit 2 is
+mostly functional and/if at least one major browser supports it.
+
+Federated Instances
+-------------------
+
+Gerrit 2 instances should be able to forward changes between
+each other.  This couples with the next item ("No Google") to
+allow corporate contributors to open source projects to use a
+Gerrit 2 server internally to review (and scrub protected IP)
+prior to submitting changes upstream to a public Gerrit server
+and an established open source project.
+
+No Google Requirement
+---------------------
+
+Gerrit 2 must not require any Google services to run.  This makes
+it suitable for installation inside of corporate firewalls where
+information security demands certain data stays internal.
+
+Arbitrary SQL Database
+----------------------
+
+Gerrit 2 should support any standard SQL database, including
+popular open source (PostgreSQL, MySQL, SQLite) and pure Java
+implementations (H2).  Some commerical servers may wind up being
+supported, but only by virtue of Gerrit 2 sticking to a very small,
+commonly implemented subset of SQL.
+
+This requirement (and the prior one) means Gerrit 2 won't run on
+Google App Engine, as GAE does not support arbitrary SQL syntax.
diff --git a/Documentation/gerrit1-import.txt b/Documentation/gerrit1-import.txt
new file mode 100644
index 0000000..e0929c7
--- /dev/null
+++ b/Documentation/gerrit1-import.txt
@@ -0,0 +1,146 @@
+Gerrit2 - Importing From Gerrit1
+================================
+
+To switch from Google App Engine running Gerrit1 to a Gerrit2 based
+system, you need to export all of the data from the GAE data store
+and load it into PostgreSQL, converting the schema in the process.
+
+GAE Backup
+----------
+
+Create a PostgreSQL database to house the backup:
+
+====
+  createdb -E UTF-8 gaeback
+====
+
+From the Gerrit1 sources, load the schema:
+
+====
+  psql -f backup/create.sql gaeback
+====
+
+Ensure you have a copy of the Google App Engine SDK in
+`../../google_appengine`.  This path is hardcoded into the backup
+script.  (Or edit the backup script to import the SDK directory.)
+
+Execute the backup task, supplying the credentials of
+an application developer:
+
+====
+  webapp/backup_gae.py \
+-d gaeback \
+-s yourapp.appspot.com \
+-e you@example.com
+====
+
+Backups are not incremental, they dump the entire data store.
+The backup does not clear the database.  If you are doing
+repeated conversions, it is recommended that you use `dropdb`
+to drop the database and recreate it before each backup.
+
+Backups are not consistent.  You may want to consider uploading the
+application in administrator-only mode, so end-users cannot modify
+the data store while the backup is taking place:
+
+====
+  make update APPID=yourapp ADMIN_ONLY=1
+====
+
+To restore normal access:
+
+====
+  make update APPID=yourapp
+====
+
+Export Dump File
+----------------
+
+Rename the schema to `gerrit1`, and then dump it into a
+backup file:
+
+====
+  psql -c 'ALTER SCHEMA public RENAME TO gerrit1' gaeback
+  pg_dump -O -Fc gaeback >yourapp.dump
+====
+
+Gerrit2 Database Setup
+----------------------
+
+Tell Gerrit about your database connection information.  Note that
+the username you use here *must* be the default of `gerrit2` and
+the database name *must* be the default of `reviewdb`, unless you
+modify `devutil/1-to-2.sh`.
+
+====
+  cd devdb/src/main/config/
+  cp GerritServer.properties_example GerritServer.properties
+====
+
+Make sure the user exists in PostgreSQL:
+
+====
+  createuser -A -D -P -E gerrit2
+====
+
+Gerrit2 Import
+--------------
+
+Create a short SQL script to set the `system_config` table correctly
+for the import process.  This might look like:
+
+====
+  $ cat config.sql
+  UPDATE system_config
+  SET git_base_path='/srv/git';
+====
+
+where `git_base_path` is pointing to the same directory that
+`codereview.basedir` was set to in your Gerrit1 mgrapp config file.
+The import task requires read access to these repositories.
+
+In the Gerrit2 source tree use `1-to-2.sh` to finish the conversion
+process:
+
+====
+  sh devutil/1-to-2.sh yourapp.dump config.sql
+====
+
+
+Fixup Groups
+------------
+
+During the Gerrit1 to Gerrit2 schema conversion process some
+additional groups may have been created.  This was necessary
+to enforce the same permissions within a project while moving
+to a system that assigns permissions only to groups, and not
+to individual users.
+
+You may want to browse #admin,groups once logged in through
+the web UI and cleanup any group names that were generated
+automatically by the import process.
+
+
+User Account Migration
+----------------------
+
+After import `system_config.allow_google_account_upgrade` will be
+set to `Y` to permit users to upgrade their account from a Google
+Account in Google App Engine to an OpenID based Google Account.
+
+Its strongly encouraged for administrators to set this flag to 'N'
+once the following query drops to 0, or close to 0:
+
+====
+  SELECT COUNT(*) FROM account_external_ids e
+  WHERE e.external_id = 'https://www.google.com/accounts/o8/id'
+  AND NOT EXISTS (SELECT 1
+    FROM account_external_ids o
+    WHERE o.account_id = e.account_id
+	AND o.external_id LIKE '%/id?id=%');
+====
+
+the above query lists all users who have not yet converted their
+accounts to the OpenID authentication scheme.  Unfortunately the
+conversion must be done by each individual user logging in, as the
+OpenID token is per-user, and per-site.
diff --git a/Documentation/i18n-readme.txt b/Documentation/i18n-readme.txt
new file mode 100644
index 0000000..066f003
--- /dev/null
+++ b/Documentation/i18n-readme.txt
@@ -0,0 +1,35 @@
+Gerrit i18n
+===========
+
+Aside from actually writing translations, there's some issues with
+the way the code produces output.  Most of the UI should support
+right-to-left (RTL) languages.
+
+
+ApprovalCategory
+----------------
+
+The getName() function produces only a single translation of the
+description string.  This name is set by the Gerrit administrator,
+which may cause problems if the site is translated into multiple
+langauges and different users want different translations.
+
+ApprovalCategoryValue
+---------------------
+
+The getName() function produces only a single translation of the
+description string.  This name is set by the Gerrit administrator,
+which may cause problems if the site is translated into multiple
+langauges and different users want different translations.
+
+/login's SetCookie.html
+-----------------------
+
+This page is static HTML, with no translations supported.
+
+/Gerrit Gerrit.html
+-------------------
+
+* The title of the host page is not translated.
+
+* The <noscript> tag is not translated.
diff --git a/Documentation/install.txt b/Documentation/install.txt
new file mode 100644
index 0000000..380b320
--- /dev/null
+++ b/Documentation/install.txt
@@ -0,0 +1,302 @@
+Gerrit2 - Installation
+======================
+
+You need Apache Maven to compile the code, and a SQL database
+to house the Gerrit2 metadata.  PostgreSQL is currently the only
+supported database.
+
+Important Links
+---------------
+
+Apache Maven:
+
+* http://maven.apache.org/download.html[Download]
+* http://maven.apache.org/run-maven/index.html[Running Maven]
+
+PostgreSQL:
+
+* http://www.postgresql.org/docs/[Documentation]
+
+Build Gerrit
+------------
+
+Build the application distribution:
+
+====
+  cd appdist
+  mvn clean install
+  cd appdist/target/gerrit-*-bin.dir/gerrit-*
+====
+
+The first build may take a while as dependencies are searched
+for and downloaded from Maven distribution repositories.
+
+Unfortunately you need to install to your local Maven repository
+(typically under `~/.m2`) in order to fully build all of the source
+based dependencies.  Core dependencies for Gerrit are still under
+active development and have not made final releases yet.
+
+Setting up the Database
+-----------------------
+
+Currently PostgreSQL is the only supported database.  H2 may also
+work, but hasn't been tested in a while.  The primary concern is
+having support for the database in the gworm project.
+
+PostgreSQL
+~~~~~~~~~~
+
+Create a Gerrit specific user as a normal user (no superuser access)
+and assign it an encrypted password:
+
+====
+  createuser -A -D -P -E gerrit2
+====
+
+Create the database to store the Gerrit metadata, and set the user
+you just created as the owner of that database:
+
+====
+  createdb -E UTF-8 -O gerrit2 reviewdb
+====
+
+Initialize the Schema
+---------------------
+
+Create the Gerrit 2 Tables
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Either run CreateSchema from the command line (requires writing
+a `GerritServer.properties`, see `GerritServer.properties_example`
+under `devdb/src/main/config`):
+
+====
+  bin/gerrit2.sh --config=GerritServer.properties CreateSchema
+====
+
+Or, run the application once in a container to force it to initialize
+the database schema before accessing it.  (See below for deployment
+setup documentation.)  If you use this approach, it is recommended
+that you stop the application before continuing with the setup.
+
+Add Indexes
+~~~~~~~~~~~
+
+A script should be run to create the query indexes, so Gerrit
+can avoid table scans when looking up information.  Run the
+`sql/query_index.sql` script through your database's query tool.
+
+e.g. with PostgreSQL:
+
+====
+  psql -f sql/query_index.sql reviewdb
+====
+
+Configure site_path
+~~~~~~~~~~~~~~~~~~~
+
+This directory holds server-specific configuration files and
+assets used to customize the deployment.  Gerrit needs read
+access (but not write access) to the directory.  The path
+is stored in `system_config.site_path`, so you will need to
+update the database with this value.
+
+====
+  mkdir /home/gerrit/cfg
+  cd /home/gerrit/cfg
+
+  ssh-keygen -t rsa -P '' -f ssh_host_rsa_key
+  ssh-keygen -t dsa -P '' -f ssh_host_dsa_key
+
+  psql -c "UPDATE system_config SET site_path='/home/gerrit/cfg'" reviewdb
+====
+
+The SSH keys generated here are used as the host keys for the
+internal SSH daemon run by Gerrit.  You may wish to backup these
+key files to ensure they can be restored in the event of a disaster.
+
+The private key files (`ssh_host_rsa_key`, `ssh_host_dsa_key`) should
+be readable *only* by the account that is executing Gerrit2's web
+application container.  It is a security risk to make these files
+readable by anyone else.
+
+Create Git Repository Base
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This directory holds the Git repositories that Gerrit knows about
+and can service.  Gerrit needs write access to this directory and
+any Git repository stored within it.
+
+====
+  mkdir /srv/git
+  psql -c "UPDATE system_config SET git_base_path='/srv/git'" reviewdb
+====
+
+You may wish to consider also exporting this directory over the
+anonymous git:// protocol, as it is more efficient than Gerrit's
+internal ssh daemon.  See the `git-daemon` documentation for details
+on how to configure this if anonymous access is desired.
+
+* http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html[man git-daemon]
+
+Futher Configuration
+~~~~~~~~~~~~~~~~~~~~
+
+Gerrit2 supports some site-specific customizations.  These are
+optional and are not required to run a server, but may be desired.
+
+* link:config-sso.html[Single Sign-On Systems]
+* link:config-headerfooter.html[Site Header/Footer]
+* link:config-gitweb.html[Gitweb Integration]
+* link:config-gerrit.html[Other system_config Settings]
+
+Application Deployment
+-----------------------
+
+Jetty
+~~~~~
+
+These directions will configure Gerrit as the default web
+application, allowing URLs like `http://example.com/4543` to
+jump directly to change 4543.
+
+Download and unzip a release version of Jetty.  From here on we
+call the unpacked directory `$JETTY_HOME`.
+
+* http://dist.codehaus.org/jetty/[Jetty Downloads]
+
+Copy Gerrit into the deployment:
+====
+  cp jdbc/c3p0-*.jar $JETTY_HOME/lib/plus/
+  cp jdbc/postgresql-*.jdbc*.jar $JETTY_HOME/lib/plus/
+  cp www/jetty_gerrit.xml $JETTY_HOME/contexts/gerrit.xml
+  cp www/gerrit-*.war $JETTY_HOME/webapps/gerrit.war
+
+  rm -f $JETTY_HOME/context/test.xml
+====
+
+Edit `$JETTY_HOME/contexts/gerrit.xml` to correctly configure the
+database connection, especially the user and password fields.
+
+To start automatically when the system boots, consider a start
+script such as the following in `/etc/init.d/gerrit2-jetty`
+
+====
+  #!/bin/sh
+  
+  export JETTY_HOST=127.0.0.1
+  export JETTY_PORT=8081
+  export JETTY_USER=gerrit2
+  export JETTY_PID=/var/run/jetty$JETTY_PORT.pid
+  export JETTY_HOME=/home/$JETTY_USER/jetty
+  export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07/jre
+  
+  JAVA_OPTIONS=""
+  JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.host=$JETTY_HOST"
+  export JAVA_OPTIONS
+  
+  exec $JETTY_HOME/bin/jetty.sh "$@"
+====
+
+To deploy on port 80, or to use SSL, you should configure Jetty
+to listen on another port, such as 127.0.0.1:8081 (like the start
+script above does) and then follow the <<apache2,reverse proxy>>
+section below.
+
+[TIP]
+Under Jetty, restarting the web application (e.g. after modifying
+`system_config`) is as simple as touching the config file:
+`$JETTY_HOME/contexts/gerrit.xml`
+
+Other Servlet Containers
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Deploy the `www/gerrit-*.war` file to your application server as
+`gerrit.war`.
+
+Configure the JNDI DataSource `jdbc/ReviewDb` for the Gerrit web
+application context to point to the database you just created.
+Don't forget to ensure your JNDI configuration can load the
+necessary JDBC drivers.
+
+[[apache2]]
+Apache2 Reverse Proxy
+~~~~~~~~~~~~~~~~~~~~~
+
+Enable the necessary Apache2 modules:
+
+====
+  a2enmod proxy_http
+  a2enmod disk_cache   ; # optional, but helps performance
+====
+
+then setup a VirtualHost to proxy to Gerrit's servlet container,
+setting the `ProxyPass` line to use the port number you configured
+in your servlet container's configuration:
+
+=======================================
+	<VirtualHost *>
+	  ServerName review.example.com
+	#
+	  ProxyRequests Off
+	  ProxyVia Off
+	  ProxyPreserveHost On
+	#
+	  <Proxy *>
+		Order deny,allow
+		Allow from all
+	  </Proxy>
+	  ProxyPass / http://127.0.0.1:8081/
+	#
+	  <IfModule mod_disk_cache.c>
+		CacheEnable disk /
+		CacheIgnoreHeaders Set-Cookie
+	  </IfModule>
+	</VirtualHost>
+=======================================
+
+To enable SSL, see the Apache server documentation.
+
+
+Administrator Setup
+-------------------
+
+Login to Gerrit through the web interface, so that a user account
+is initialized for you.
+
+Add your newly created account to the "Administrators" group,
+so that you can manage the site through the web interface:
+
+====
+  psql reviewdb
+  INSERT INTO account_group_members
+    (account_id, group_id)
+  VALUES (
+    (SELECT account_id FROM accounts
+     WHERE preferred_email='you@example.com'),
+    (SELECT admin_group_id FROM system_config)
+  );
+====
+
+Group memberships are cached, so you need to either restart Gerrit,
+or try flushing the caches over SSH.
+
+Since SSH cache flushing requires being in the "Administrators"
+group you may run into a chicken-and-egg problem, where you cannot
+flush the cache to make yourself an administrator because you are
+not yet an administrator.  Therefore, restarting the application
+is the recommended bootstrap technique.
+
+To flush the server's caches over SSH, ensure you have an SSH key
+(you can add one through the web UI under Settings, SSH Keys),
+and then run:
+
+====
+  ssh -p 29418 you@example.com gerrit flush-caches
+====
+
+Project Setup
+-------------
+
+See link:project-setup.html[Project Setup] for further details on
+how to register a project with Gerrit.
diff --git a/Documentation/project-setup.txt b/Documentation/project-setup.txt
new file mode 100644
index 0000000..f89839c
--- /dev/null
+++ b/Documentation/project-setup.txt
@@ -0,0 +1,81 @@
+Gerrit2 - Project Configuration
+===============================
+
+All Git repositories under `site_path` must be registered in the
+Gerrit database in order to be accessed through SSH, or through
+the web interface.
+
+Create Git Repository
+---------------------
+
+Create a Git repository under `git_base_path`:
+
+====
+  git --git-dir=$git_base_pathgit/new/project.git init
+====
+
+[TIP]
+By tradition the project name should have a `.git` suffix.
+
+To also make this repository available over the anonymous git://
+protocol, don't forget the git-daemon-export-ok file:
+
+====
+  touch $git_base_pathgit/new/project.git/git-daemon-export-ok
+====
+
+Register Project
+----------------
+
+At least two inserts are needed to register a project with Gerrit:
+one to define the project exists, and another to define a branch
+that changes can be uploaded to.  Additional branches may be
+defined if desired.
+
+[NOTE]
+Note that the `.git` suffix is not typically included in the
+project name, as it looks cleaner in the web when not shown.
+Gerrit automatically assumes that `project.git` is the Git repository
+for a project name `project`.
+
+====
+  psql reviewdb
+  INSERT INTO projects
+  (project_id
+   ,use_contributor_agreements
+   ,owner_group_id
+   ,name)
+  VALUES
+  (nextval('project_id')
+  ,'Y'
+  ,(SELECT admin_group_id FROM system_config)
+  ,'new/project');
+
+  INSERT INTO branches
+  (branch_id
+  ,branch_name
+  ,project_name)
+  VALUES
+  (nextval('branch_id)
+  ,'refs/heads/master'
+  ,'new/project');
+====
+
+Register Branch
+---------------
+
+To register additional branches beyond `master`, run the "INSERT
+INTO branches" statement for each branch, ensuring to use the
+`refs/heads/` prefix:
+
+====
+  INSERT INTO branches
+  (branch_id
+  ,branch_name
+  ,project_name)
+  VALUES
+  (nextval('branch_id)
+  ,'refs/heads/stable'
+  ,'new/project');
+====
+
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
deleted file mode 100755
index 684610c..0000000
--- a/GIT-VERSION-GEN
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-VN=$(git describe --abbrev=8 HEAD 2>/dev/null)
-case "$VN" in
-v[0-9]*) : happy ;;
-*)       exit 1  ;;
-esac
-
-dirty=$(sh -c 'git diff-index --name-only HEAD' 2>/dev/null) || dirty=
-case "$dirty" in
-'')
-	;;
-*)
-	VN="$VN-dirty" ;;
-esac
-
-echo $VN
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..364c188
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,3 @@
+See Documentation/install.txt
+
+To import from Gerrit1, see Documentation/gerrit1-import.txt.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index dc30a81..0000000
--- a/Makefile
+++ /dev/null
@@ -1,403 +0,0 @@
-# Gerrit
-#
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-# Define DATASTORE to the location where 'make serve' should store its
-# runtime data files; by default this is /tmp/dev_appserver.datastore.
-#
-# Define REMOTE=1 to enable remote hosts to connect to the development
-# web server started by 'make serve'.  This may be a security risk.
-#
-# Define EMAIL=1 to enable sending email messages during 'make serve'.
-# This may spam invalid addresses, so it is off by default.
-#
-# Define APPID to the unique Google App Engine application instance
-# 'make update' will upload the application files to.
-#
-# Define SDK to the location of the Google App Engine SDK download.
-#
-# Define PYSDK to the location of a 'python2.5' interpreter.
-#
-# Define ADMIN_ONLY to lock the release application build to only
-# its Google App Engine administrative accounts.
-#
-# Define ADMIN to the email address of an admin account that can
-# run appcfg.py to update the code.  This parameter is only used
-# by the administrative targets.
-#
-
-ifeq ($(shell uname),Darwin)
-	SDK = /usr/local/bin
-else
-	SDK = $(HOME)/google_appengine
-endif
-
-APPID         = gerrit-code-review-tool-demo
-APPNAME_HTML  = <i>Gerrit</i> Code Review Tool
-
-ADMIN         = set.ADMIN@read.the.docs
-PYSDK         = python2.5
-JAVAC         = javac -target 1.5
-CPIO          = cpio -pd
-DEV_APPSERVER = $(PYSDK) $(SDK)/dev_appserver.py
-APPCFG        = $(PYSDK) $(SDK)/appcfg.py $(APPCFG_OPTS) -e '$(ADMIN)'
-
--include config.mak
-
-ifeq ($(APPID),android-codereview)
-APPNAME_HTML  = Android Code Review
-endif
-
-protobuf := ../protobuf
-PROTOC   := $(abspath $(protobuf)/src/protoc)
-jgit     := ../jgit
-MGR_APP  := mgrapp
-WEB_APP  := webapp
-WEB_ARG  :=
-
-ifdef DATASTORE
-	WEB_ARG += --datastore_path=$(DATASTORE)
-endif
-ifeq (1,$(REMOTE))
-	WEB_ARG += --address 0.0.0.0
-endif
-ifeq (1,$(EMAIL))
-	WEB_ARG += --enable_sendmail
-endif
-
-R_WEB      := release/web
-R_MGR      := release/mgr
-R_PYCLIENT := release/pyclient
-
-PYZIP_IGNORE := $(strip \
-	.gitignore \
-	.gitattributes \
-	\*.pyc \
-	\*.pyo \
-)
-django_IGNORE := $(strip \
-	.svn \
-	gis \
-	admin \
-	localflavor \
-	mysql \
-	mysql_old \
-	oracle \
-	postgresql \
-	postgresql_psycopg2 \
-	sqlite3 \
-	test \
-	\*.po \
-	\*.mo \
-)
-
-WEB_INCLUDE := $(strip \
-	__init__.py \
-	app.yaml \
-	index.yaml \
-	main.py \
-	settings.py \
-	static \
-	templates \
-)
-WEB_HASH := $(strip $(patsubst $(WEB_APP)/%,%,\
-	$(wildcard $(WEB_APP)/static/*.js) \
-	$(wildcard $(WEB_APP)/static/*.css) \
-))
-WEB_PYZIP := $(strip \
-	codereview \
-	django \
-	froofle \
-)
-PYCLIENT_INCLUDE := $(strip \
-	froofle \
-	codereview/__init__.py \
-	codereview/proto_client.py \
-	codereview/*_pb2.py \
-)
-
-PROTO_SRC            := proto
-PUBLIC_PROTO         := $(wildcard $(PROTO_SRC)/*.proto)
-INTERNAL_PROTO       := $(wildcard $(PROTO_SRC)/internal/*.proto)
-
-jgit_jar               := $(MGR_APP)/lib/jgit.jar
-jsch_jar               := $(MGR_APP)/lib/jsch.jar
-protobuf_jar           := $(MGR_APP)/lib/protobuf.jar
-protobuf_jar_src       := $(protobuf)/java/src/main/java
-codereview_proto_jar   := $(MGR_APP)/lib/codereview_proto.jar
-codereview_manager_jar := $(MGR_APP)/lib/codereview_manager.jar
-
-ALL_PROTO := $(strip \
-	$(PUBLIC_PROTO) \
-	$(INTERNAL_PROTO) \
-)
-
-MGR_LIB := $(strip \
-	$(jsch_jar) \
-	$(jgit_jar) \
-	$(wildcard $(MGR_APP)/lib/*.jar) \
-	$(protobuf_jar) \
-	$(codereview_proto_jar) \
-)
-MGR_LIB := $(sort $(MGR_LIB))
-MGR_LIB := $(filter-out $(codereview_manager_jar),$(MGR_LIB))
-
-GEN_JAR := $(strip \
-	$(jsch_jar) \
-	$(jgit_jar) \
-	$(protobuf_jar) \
-	$(codereview_proto_jar) \
-	$(codereview_manager_jar) \
-	\
-	$(basename $(jsch_jar))_src.zip \
-	$(basename $(jgit_jar))_src.zip \
-)
-
-PROTO_PY := $(patsubst $(PROTO_SRC)/%,$(WEB_APP)/codereview/%,\
-            $(patsubst %.proto,%_pb2.py,$(ALL_PROTO))) \
-            $(WEB_APP)/froofle/__init__.py
-
-
-## Top level targets
-##
-
-all: web mgr
-release: release-web release-mgr release-pyclient
-
-clean:
-	@rm -rf release .java_src .java_bin .proto_out
-	@rm -f .jgit_version
-	@rm -f $(protobuf_jar_src)/com/google/protobuf/DescriptorProtos.java
-	@rm -f $(GEN_JAR)
-	@rm -rf $(WEB_APP)/froofle $(WEB_APP)/froofle+
-	@find $(WEB_APP)/codereview -name '*.pyc' | xargs rm -f
-	@find $(WEB_APP)/codereview -name '*_pb2.py' | xargs rm -f
-
-
-## Web application
-##
-
-web: $(PROTO_PY)
-
-serve: web
-	$(DEV_APPSERVER) $(WEB_ARG) $(WEB_APP)
-
-release-web: web
-	@echo Building Gerrit `./GIT-VERSION-GEN` for $(APPID):
-	@rm -rf $(R_WEB)
-	@mkdir -p $(R_WEB)
-	@cd $(WEB_APP) && \
-	 $(foreach a,$(WEB_PYZIP),\
-	   echo "  Packing $a.zip" && \
-	   find $a \
-	    $(foreach i,$(PYZIP_IGNORE), -name $i -prune -o) \
-	    $(foreach i,$(value $(a)_IGNORE), -name $i -prune -o) \
-	    -type f -print | \
-	   zip -q9 $(abspath $(R_WEB)/$a.zip) -@ &&) \
-	 echo "  Copying loose files" && \
-	 find $(WEB_INCLUDE) \
-	  $(foreach i,$(WEB_HASH), -path $i -prune -o) \
-	  -type f -print | $(CPIO) $(abspath $(R_WEB)) && \
-	 echo "  Hashing loose files" && \
-	 $(foreach i,$(WEB_HASH),\
-	   h=$$(openssl sha1 <$i) && \
-	   d=$(basename $i)-$$h$(suffix $i) && \
-	   echo "    $$d" && \
-	   cp $i $(abspath $(R_WEB))/$$d && \
-	   find $(abspath $(R_WEB)/templates) -type f \
-	   | xargs perl -pi -e "s,$i,$$d,g" && ) \
-	 true
-	@./GIT-VERSION-GEN >$(R_WEB)/static/application_version
-	@echo "This is Gerrit `./GIT-VERSION-GEN`" >$(R_WEB)/templates/live_revision.html
-	@perl -pi -e 's{PUBLIC APPLICATION NAME}{$(APPNAME_HTML)}' $(R_WEB)/templates/base.html
-	@perl -pi -e 's/(application:).*/$$1 $(APPID)/' $(R_WEB)/app.yaml
-ifdef ADMIN_ONLY
-	@echo '*** SETTING ADMIN_ONLY ***'
-	@perl -pi -e 's/^(.*)(script:.*main.py)/$$1login: admin\n$$1$$2/' $(R_WEB)/app.yaml
-endif
-	@echo $(R_WEB) built for $(APPID).
-
-update: release-web
-	$(APPCFG) update $(R_WEB)
-
-version:
-	@printf '%s = ' '$(APPID)'
-	@curl http://$(APPID).appspot.com/application_version
-
-## Python RPC client
-##
-
-release-pyclient: $(PROTO_PY)
-	@echo Building Python RPC client $(R_PYCLIENT)
-	@rm -rf $(R_PYCLIENT)
-	@mkdir -p $(R_PYCLIENT)
-	@cd $(WEB_APP) && \
-	 find $(PYCLIENT_INCLUDE) \
-	   $(foreach i,$(PYZIP_IGNORE), -name $i -prune -o) \
-	   -type f -print \
-	 | $(CPIO) $(abspath $(R_PYCLIENT))
-	@echo "__version__ = '`./GIT-VERSION-GEN`'" >>$(R_PYCLIENT)/codereview/__init__.py
-
-release-cli: release-pyclient
-	 cp $(WEB_APP)/git_upload.py $(R_PYCLIENT)
-
-## Manager backend
-##
-
-mgr: $(codereview_manager_jar)
-
-release-mgr: mgr
-	@rm -rf $(R_MGR)
-	@mkdir -p $(R_MGR)
-	@cd $(MGR_APP) && \
-	 find bin \
-	  $(foreach i,.gitignore .gitattributes, -name $i -prune -o) \
-	  -type f -print \
-	 | $(CPIO) $(abspath $(R_MGR)) && \
-	 find lib -name \*.jar -type f -print \
-	 | $(CPIO) $(abspath $(R_MGR))
-	@echo $(R_MGR) built for `./GIT-VERSION-GEN`
-
-
-## Basic productions
-##
-
-$(PROTOC): .protobuf_version $(protobuf)/Makefile
-	$(MAKE) -C $(protobuf)
-	@touch $(PROTOC)
-$(protobuf)/configure: $(protobuf)/configure.ac .protobuf_version
-	cd $(protobuf) && ./autogen.sh
-$(protobuf)/Makefile: $(protobuf)/configure .protobuf_version
-	cd $(protobuf) && ./configure
-
-$(WEB_APP)/froofle/__init__.py: .protobuf_version $(PROTOC)
-	@echo Updating $(WEB_APP)/froofle ...
-	@rm -rf $(WEB_APP)/froofle $(WEB_APP)/froofle+
-	@mkdir $(WEB_APP)/froofle+
-	@cd $(protobuf)/python/google && \
-	 find . \
-	 $(foreach i,test_util.py \*_test.py, -name $i -prune -o) \
-	 -type f -name \*.py -print \
-	 | $(CPIO) $(abspath $(WEB_APP)/froofle+)
-	@cd $(protobuf)/python && \
-	 t=$(abspath .proto_out) && \
-	 rm -rf $$t && \
-	 mkdir -p $$t/google/protobuf && \
-	 $(PROTOC) -I../src -I. \
-	           --python_out=$$t \
-	           ../src/google/protobuf/descriptor.proto
-	@cp .proto_out/google/protobuf/descriptor_pb2.py \
-	    $(WEB_APP)/froofle+/protobuf
-	@rm -rf .proto_out
-	@find $(WEB_APP)/froofle+ -name __init__.py | xargs perl -ni -e ''
-	@find $(WEB_APP)/froofle+ -name '*.py' | xargs chmod a-x
-	@find $(WEB_APP)/froofle+ -name '*.py' \
-	 | xargs perl -pi -e 's/google(?!\.com)/froofle/g'
-	@mv $(WEB_APP)/froofle+ $(WEB_APP)/froofle
-
-$(WEB_APP)/codereview/%_pb2.py: $(PROTO_SRC)/%.proto $(PROTOC)
-	@echo protoc $< && \
-	 $(PROTOC) --python_out=$(dir $@) --proto_path=$(dir $<) $< && \
-	 perl -pi -e 's/google(?!\.com)/froofle/g' $@
-
-$(codereview_manager_jar): \
-		$(MGR_LIB) \
-		$(shell find $(MGR_APP)/src -type f)
-	@echo build $@
-	@rm -rf .java_bin && \
-	 b=$(abspath .java_bin) && \
-	 cd $(MGR_APP)/src && \
-	 mkdir $$b && \
-	 mkdir $$b/META-INF && \
-	 find META-INF/MANIFEST.MF | $(CPIO) $$b && \
-	 CLASSPATH=$$b && \
-	 $(foreach c,$(MGR_LIB),CLASSPATH=$$CLASSPATH:$(abspath $c) &&) \
-	 export CLASSPATH && \
-	 find . -name \*.java | xargs $(JAVAC) \
-		-encoding UTF-8 \
-		-g \
-		-d $$b
-	@cd .java_bin && jar cf $(abspath $@) .
-	@rm -rf .java_bin
-
-$(codereview_proto_jar): $(ALL_PROTO) $(protobuf_jar) $(PROTOC)
-	@echo build $@
-	@rm -rf .java_src .java_bin && \
-	 mkdir .java_src .java_bin && \
-	 $(foreach p,$(ALL_PROTO),\
-	  $(PROTOC) --java_out=.java_src --proto_path=$(dir $p) $p &&) \
-	 unset CLASSPATH && \
-	 cd .java_src && \
-	 find . -name '*.java' | xargs $(JAVAC) \
-		-encoding UTF-8 \
-		-g:none \
-		-nowarn \
-		-classpath $(abspath $(protobuf_jar)) \
-		-d ../.java_bin && \
-	 cd ../.java_bin && jar cf $(abspath $@) .
-	@rm -rf .java_src .java_bin
-
-$(protobuf_jar): \
-		$(protobuf)/src/google/protobuf/descriptor.proto \
-		$(shell find $(protobuf_jar_src) -type f)
-	@echo build $@
-	@rm -rf .java_bin && \
-	 b=$(abspath .java_bin) && \
-	 cd $(protobuf_jar_src) && \
-	 mkdir $$b && \
-	 CLASSPATH=$$b && \
-	 export CLASSPATH && \
-	 $(PROTOC) \
-		--java_out=. \
-		-I$(abspath $(protobuf)/src) \
-		$(abspath $(protobuf)/src/google/protobuf/descriptor.proto) && \
-	 find . -name \*.java | xargs $(JAVAC) \
-		-encoding UTF-8 \
-		-g \
-		-d $$b
-	@cd .java_bin && jar cf $(abspath $@) .
-	@rm -f $(protobuf_jar_src)/com/google/protobuf/DescriptorProtos.java
-	@rm -rf .java_bin
-
-$(jsch_jar): $(jgit)/org.spearce.jgit/lib/jsch-0.1.37.jar
-	rm -f $@ $(basename $@)_src.zip
-	cp $< $@
-	cp $(basename $<).zip $(basename $@)_src.zip
-
-$(jgit_jar): .jgit_version
-	rm -f $@ $(basename $@)_src.zip
-	cd $(jgit) && $(SHELL) ./make_jgit.sh
-	cp $(jgit)/jgit.jar $@
-	chmod 644 $@
-	cp $(jgit)/jgit_src.zip $(basename $@)_src.zip
-
-.jgit_version: jgit_phony
-	@a=`git --git-dir=$(jgit)/.git rev-parse HEAD 2>/dev/null`; \
-	 b=`cat .jgit_version 2>/dev/null`; \
-	 if test z$$a = z$$b; then : up to date; \
-	 else echo $$a >$@; fi
-
-.protobuf_version: protobuf_phony
-	@a=`git --git-dir=$(protobuf)/.git rev-parse HEAD 2>/dev/null`; \
-	 b=`cat .protobuf_version 2>/dev/null`; \
-	 if test z$$a = z$$b; then : up to date; \
-	 else echo $$a >$@; fi
-
-.PHONY: all clean release
-.PHONY: web release-web
-.PHONY: mgr release-mgr
-.PHONY: protobuf_phony
-.PHONY: jgit_phony
diff --git a/appdist/.gitignore b/appdist/.gitignore
new file mode 100644
index 0000000..5460860
--- /dev/null
+++ b/appdist/.gitignore
@@ -0,0 +1,5 @@
+/target
+/bin
+/.classpath
+/.project
+/.settings
diff --git a/appdist/distribution.xml b/appdist/distribution.xml
new file mode 100644
index 0000000..485d312
--- /dev/null
+++ b/appdist/distribution.xml
@@ -0,0 +1,64 @@
+<assembly>
+  <id>bin</id>
+
+  <formats>
+    <format>dir</format>
+    <format>tar.bz2</format>
+  </formats>
+
+  <moduleSets>
+    <moduleSet>
+      <includes>
+        <include>gerrit:gerrit-appjar</include>
+      </includes>
+      <binaries>
+        <outputDirectory>lib</outputDirectory>
+        <unpack>false</unpack>
+      </binaries>
+    </moduleSet>
+
+    <moduleSet>
+      <includes>
+        <include>gerrit:gerrit-appwar</include>
+      </includes>
+      <binaries>
+        <outputDirectory>www</outputDirectory>
+        <unpack>false</unpack>
+        <includeDependencies>false</includeDependencies>
+      </binaries>
+    </moduleSet>
+
+    <moduleSet>
+      <includes>
+        <include>gerrit:gerrit-devdb</include>
+      </includes>
+      <binaries>
+        <outputDirectory>jdbc</outputDirectory>
+        <unpack>false</unpack>
+      </binaries>
+    </moduleSet>
+  </moduleSets>
+
+  <fileSets>
+    <fileSet>
+      <directory>src/main/bin</directory>
+      <outputDirectory>bin</outputDirectory>
+      <lineEnding>unix</lineEnding>
+      <fileMode>755</fileMode>
+    </fileSet>
+
+    <fileSet>
+      <directory>src/main/sql</directory>
+      <outputDirectory>sql</outputDirectory>
+      <lineEnding>unix</lineEnding>
+      <fileMode>644</fileMode>
+    </fileSet>
+
+    <fileSet>
+      <directory>src/main/www</directory>
+      <outputDirectory>www</outputDirectory>
+      <lineEnding>unix</lineEnding>
+      <fileMode>644</fileMode>
+    </fileSet>
+  </fileSets>
+</assembly>
diff --git a/appdist/pom.xml b/appdist/pom.xml
new file mode 100644
index 0000000..9fd9772
--- /dev/null
+++ b/appdist/pom.xml
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2008 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>gerrit</groupId>
+  <artifactId>gerrit</artifactId>
+  <packaging>pom</packaging>
+  <version>2.0-SNAPSHOT</version>
+  <name>gerrit</name>
+  <description>Gerrit - Web Based Code Review</description>
+  <url>http://android.git.kernel.org/?p=tools/gerrit.git</url>
+
+  <mailingLists>
+    <mailingList>
+      <name>repo-discuss mailing list</name>
+      <post>repo-discuss@googlegroups.com</post>
+    </mailingList>
+  </mailingLists>
+
+  <developers>
+    <developer>
+      <name>Shawn O. Pearce</name>
+      <email>sop@google.com</email>
+      <roles>
+        <role>Maintainer</role>
+      </roles>
+    </developer>
+  </developers>
+
+  <licenses>
+    <license>
+      <name>Apache License, 2.0</name>
+      <comments>
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+      </comments>
+    </license>
+  </licenses>
+
+  <modules>
+    <module>../../jgit/jgit-maven/jgit</module>
+    <module>../../mina_sshd</module>
+    <module>../../gwtorm</module>
+    <module>../../gwtjsonrpc</module>
+    <module>../devdb</module>
+    <module>../appjar</module>
+    <module>../appwar</module>
+  </modules>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptors>
+            <descriptor>distribution.xml</descriptor>
+          </descriptors>
+        </configuration>
+        <executions>
+          <execution>
+            <id>make-assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>attached</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/appdist/src/main/bin/gerrit2.sh b/appdist/src/main/bin/gerrit2.sh
new file mode 100644
index 0000000..a3f00ca
--- /dev/null
+++ b/appdist/src/main/bin/gerrit2.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+#
+# Copyright 2008 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+if [ -z "$GERRIT2_HOME" ]
+then
+	GERRIT2_HOME=`which $0 2>/dev/null`
+	GERRIT2_HOME=`dirname $GERRIT2_HOME`
+	GERRIT2_HOME=`dirname $GERRIT2_HOME`
+fi
+
+if [ -z "$GERRIT2_HOME" ]
+then
+	echo >&2 "error: GERRIT2_HOME not set, cannot guess"
+	exit 1
+fi
+
+if [ -z "$GERRIT2_JAVA" ]
+then
+	GERRIT2_JAVA=java
+fi
+
+config_dir=
+case "$1" in
+--config=*)
+	config_dir=`echo "$1" | sed s/^--config=//`
+	if ! [ -f "$config_dir" ]
+	then
+		echo >&2 "error: $config_dir not found"
+		exit 1
+	fi
+	case "$config_dir" in
+	*/GerritServer.properties)
+		config_dir=`dirname "$config_dir"`
+		shift
+		;;
+	*)
+		echo >&2 "error: --config must point to GerritServer.properties"
+		exit 1
+		;;
+	esac
+	;;
+esac
+
+if [ -z "$config_dir" ] || [ $# = 0 ]
+then
+    echo >&2 "usage: $0 --config=gs.prop AppName [args]"
+    exit 1
+fi
+
+app=$1
+shift
+
+CLASSPATH=$config_dir
+for j in $GERRIT2_HOME/lib/*.jar $GERRIT2_HOME/jdbc/*.jar
+do
+	if [ -f "$j" ]
+	then
+        if [ -z "$CLASSPATH" ]
+		then
+			CLASSPATH=$j
+		else
+			CLASSPATH=$CLASSPATH:$j
+        fi
+	fi
+done
+export CLASSPATH
+
+umask 0022
+exec $GERRIT2_JAVA com.google.gerrit.pgm.$app "$@"
diff --git a/appdist/src/main/sql/query_index.sql b/appdist/src/main/sql/query_index.sql
new file mode 100644
index 0000000..aa741c8
--- /dev/null
+++ b/appdist/src/main/sql/query_index.sql
@@ -0,0 +1,138 @@
+-- Indexes to support @Query
+--
+
+-- *********************************************************************
+-- AccountAccess
+--    covers:             byPreferredEmail, suggestByPreferredEmail
+CREATE INDEX accounts_byPreferredEmail
+ON accounts (preferred_email);
+
+--    covers:             bySshUserName
+CREATE INDEX accounts_bySshUserName
+ON accounts (ssh_user_name);
+
+--    covers:             suggestByFullName
+CREATE INDEX accounts_byFullName
+ON accounts (full_name);
+
+
+-- *********************************************************************
+-- AccountAgreementAccess
+--    @PrimaryKey covers: byAccount
+
+
+-- *********************************************************************
+-- AccountExternalIdAccess
+--    @PrimaryKey covers: byAccount
+--    covers:             byExternal
+CREATE INDEX account_external_ids_byExt
+ON account_external_ids (external_id);
+
+--    covers:             byEmailAddress, suggestByEmailAddress
+CREATE INDEX account_external_ids_byEmail
+ON account_external_ids (email_address);
+
+
+-- *********************************************************************
+-- AccountGroupAccess
+--    @SecondaryKey("name") covers:  all, suggestByName
+CREATE INDEX account_groups_ownedByGroup
+ON account_groups (owner_group_id);
+
+
+-- *********************************************************************
+-- AccountGroupMemberAccess
+--    @PrimaryKey covers: byAccount
+CREATE INDEX account_group_members_byGroup
+ON account_group_members (group_id);
+
+
+-- *********************************************************************
+-- AccountProjectWatchAccess
+--    @PrimaryKey covers: byAccount
+
+
+-- *********************************************************************
+-- AccountSshKeyAccess
+--    @PrimaryKey covers: byAccount, valid
+
+
+-- *********************************************************************
+-- ApprovalCategoryAccess
+--    too small to bother indexing
+
+
+-- *********************************************************************
+-- ApprovalCategoryValueAccess
+--     @PrimaryKey covers: byCategory
+
+
+-- *********************************************************************
+-- BranchAccess
+--    @PrimaryKey covers: byProject
+
+
+-- *********************************************************************
+-- ChangeAccess
+--    covers:             byOwnerOpen, byOwnerClosed
+CREATE INDEX changes_byOwnerStatus
+ON changes (owner_account_id, open, last_updated_on DESC);
+
+--    covers:             submitted
+CREATE INDEX changes_submitted
+ON changes (dest_project_name, dest_branch_name, status, last_updated_on);
+
+
+-- *********************************************************************
+-- ChangeApprovalAccess
+--    @PrimaryKey covers: byChange
+
+
+-- *********************************************************************
+-- ChangeMessageAccess
+--    @PrimaryKey covers: byChange
+
+
+-- *********************************************************************
+-- ContributorAgreementAccess
+--    covers:             active
+CREATE INDEX contributor_agreements_active
+ON contributor_agreements (active, short_name);
+
+
+-- *********************************************************************
+-- PatchAccess
+--    @PrimaryKey covers: byPatchSet
+
+
+-- *********************************************************************
+-- PatchSetAncestorAccess
+--    @PrimaryKey covers: ancestorsOf
+--    covers:             descendantsOf
+CREATE INDEX patch_set_ancestors_desc
+ON patch_set_ancestors (ancestor_revision);
+
+
+-- *********************************************************************
+-- ProjectAccess
+--    @PrimaryKey covers: all, suggestByName
+--    covers:             ownedByGroup
+CREATE INDEX projects_ownedByGroup
+ON projects (owner_group_id);
+
+
+-- *********************************************************************
+-- ProjectRightAccess
+--    @PrimaryKey covers: byProject
+--    covers:             byGroup
+CREATE INDEX project_rights_byGroup
+ON project_rights (group_id);
+
+--    covers:             byApprovalCategory
+CREATE INDEX project_rights_byCat
+ON project_rights (category_id);
+
+
+-- *********************************************************************
+-- StarredChangeAccess
+--    @PrimaryKey covers: byAccount
diff --git a/appdist/src/main/www/jetty_gerrit.xml b/appdist/src/main/www/jetty_gerrit.xml
new file mode 100644
index 0000000..c90cbfa
--- /dev/null
+++ b/appdist/src/main/www/jetty_gerrit.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+<!--
+
+  Jetty configuration to place "gerrit.war" into the root context,
+  so it answers to old-style URLs like "/$changeid" and "/mine".
+
+  * Copy this file to $JETTY_HOME/contexts/gerrit.xml
+  * Edit user, password, jdbcUrl as necessary below.
+
+  * Copy jdbc/c3p0-0.9.1.2.jar       to $JETTY_HOME/lib/plus/
+  * Copy jdbc/postgresql-*.jdbc*.jar to $JETTY_HOME/lib/plus/
+  * Copy www/gerrit-*.war            to $JETTY_HOME/webapps/gerrit.war
+
+  * Make sure you remove $JETTY_HOME/context/test.xml
+
+-->
+<Configure id="wac" class="org.mortbay.jetty.webapp.WebAppContext">
+  <Set name="contextPath">/</Set>
+  <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/gerrit.war</Set>
+
+  <Set name="extractWAR">true</Set>
+  <Set name="copyWebDir">true</Set>
+  <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
+
+  <Set name="ConfigurationClasses">
+    <Array type="java.lang.String">
+      <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
+      <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
+      <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
+      <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
+    </Array>
+  </Set>
+
+  <New id="ReviewDb" class="org.mortbay.jetty.plus.naming.Resource">
+    <Arg></Arg>
+    <Arg>jdbc/ReviewDb</Arg>
+    <Arg>
+      <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
+        <Set name="driverClass">org.postgresql.Driver</Set>
+        <Set name="jdbcUrl">jdbc:postgresql:reviewdb</Set>
+        <Set name="user">gerrit2</Set>
+        <Set name="password">secretkey</Set>
+      </New>
+    </Arg>
+  </New>
+</Configure>
diff --git a/appjar/.gitignore b/appjar/.gitignore
new file mode 100644
index 0000000..1c24d2c
--- /dev/null
+++ b/appjar/.gitignore
@@ -0,0 +1,7 @@
+/target
+/.classpath
+/.project
+/.settings/org.maven.ide.eclipse.prefs
+/gwt_www
+/tomcat
+/hs_err_pid*.log
diff --git a/mgrapp/.settings/org.eclipse.core.resources.prefs b/appjar/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from mgrapp/.settings/org.eclipse.core.resources.prefs
rename to appjar/.settings/org.eclipse.core.resources.prefs
diff --git a/mgrapp/.settings/org.eclipse.core.runtime.prefs b/appjar/.settings/org.eclipse.core.runtime.prefs
similarity index 100%
rename from mgrapp/.settings/org.eclipse.core.runtime.prefs
rename to appjar/.settings/org.eclipse.core.runtime.prefs
diff --git a/mgrapp/.settings/org.eclipse.jdt.core.prefs b/appjar/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from mgrapp/.settings/org.eclipse.jdt.core.prefs
rename to appjar/.settings/org.eclipse.jdt.core.prefs
diff --git a/mgrapp/.settings/org.eclipse.jdt.ui.prefs b/appjar/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from mgrapp/.settings/org.eclipse.jdt.ui.prefs
rename to appjar/.settings/org.eclipse.jdt.ui.prefs
diff --git a/appjar/gerrit_debug.launch b/appjar/gerrit_debug.launch
new file mode 100644
index 0000000..409fc4a
--- /dev/null
+++ b/appjar/gerrit_debug.launch
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<stringAttribute key="bad_container_name" value="/gerrit-appja"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/gerrit-appjar"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;sourceLookupDirector&gt;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;gerrit-appjar&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;gwtjsonrpc&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;gwtorm&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;default/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#10;&lt;/sourceContainers&gt;&#10;&lt;/sourceLookupDirector&gt;&#10;"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;gerrit-appjar&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.USER_LIBRARY/GWT&quot; path=&quot;3&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/gwtorm/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/gwtjsonrpc/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;gerrit-appjar&quot;/&gt;&#10;&lt;/runtimeClasspathEntry&gt;&#10;"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.GWTShell"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-out gwt_www com.google.gerrit.Gerrit/Gerrit.html"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-appjar"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M"/>
+</launchConfiguration>
diff --git a/appjar/gerrit_macos.launch b/appjar/gerrit_macos.launch
new file mode 100644
index 0000000..b49f705
--- /dev/null
+++ b/appjar/gerrit_macos.launch
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<stringAttribute key="bad_container_name" value="/gerrit-appja"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/gerrit-appjar"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;sourceLookupDirector&gt;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;gerrit-appjar&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;gwtjsonrpc&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;gwtorm&amp;quot;/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#10;&amp;lt;default/&amp;gt;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#10;&lt;/sourceContainers&gt;&#10;&lt;/sourceLookupDirector&gt;&#10;"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;gerrit-appjar&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.USER_LIBRARY/GWT&quot; path=&quot;3&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/gwtorm/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/gwtjsonrpc/src/main/java&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;gerrit-appjar&quot;/&gt;&#10;&lt;/runtimeClasspathEntry&gt;&#10;"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.classpathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.GWTShell"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-out gwt_www com.google.gerrit.Gerrit/Gerrit.html"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-appjar"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M -XstartOnFirstThread"/>
+</launchConfiguration>
diff --git a/appjar/pom.xml b/appjar/pom.xml
new file mode 100644
index 0000000..c5e06ce
--- /dev/null
+++ b/appjar/pom.xml
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2008 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>gerrit</groupId>
+  <artifactId>gerrit-appjar</artifactId>
+  <packaging>jar</packaging>
+  <version>2.0-SNAPSHOT</version>
+  <name>gerrit-appjar</name>
+  <description>Gerrit - Web Based Code Review</description>
+  <url>http://android.git.kernel.org/?p=tools/gerrit.git</url>
+
+  <mailingLists>
+    <mailingList>
+      <name>repo-discuss mailing list</name>
+      <post>repo-discuss@googlegroups.com</post>
+    </mailingList>
+  </mailingLists>
+
+  <developers>
+    <developer>
+      <name>Shawn O. Pearce</name>
+      <email>sop@google.com</email>
+      <roles>
+        <role>Maintainer</role>
+      </roles>
+    </developer>
+  </developers>
+
+  <licenses>
+    <license>
+      <name>Apache License, 2.0</name>
+      <comments>
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+      </comments>
+    </license>
+  </licenses>
+
+  <properties>
+    <gwtVersion>1.5.3</gwtVersion>
+  </properties>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>src/main/java</directory>
+        <includes>
+          <include>com/google/gerrit/Gerrit.gwt.xml</include>
+          <include>com/google/gerrit/public/**</include>
+          <include>com/google/gerrit/client/**</include>
+        </includes>
+      </resource>
+    </resources>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+          <encoding>UTF-8</encoding>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>gerrit</groupId>
+      <artifactId>gerrit-devdb</artifactId>
+      <version>2.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>gwtorm</groupId>
+      <artifactId>gwtorm</artifactId>
+      <version>0.1-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>gwtjsonrpc</groupId>
+      <artifactId>gwtjsonrpc</artifactId>
+      <version>0.1-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>com.dyuproject</groupId>
+      <artifactId>dyuproject-openid</artifactId>
+      <version>1.1.0</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>gerrit</groupId>
+      <artifactId>sshd</artifactId>
+      <version>1.0-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-log4j12</artifactId>
+      <version>1.4.3</version>
+      <scope>runtime</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>bouncycastle</groupId>
+      <artifactId>bcprov-jdk15</artifactId>
+      <version>140</version>
+      <scope>runtime</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.spearce</groupId>
+      <artifactId>jgit</artifactId>
+      <version>0.4-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <!-- GWT -->
+    <dependency>
+      <groupId>com.google.gwt</groupId>
+      <artifactId>gwt-servlet</artifactId>
+      <version>${gwtVersion}</version>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.google.gwt</groupId>
+      <artifactId>gwt-user</artifactId>
+      <version>${gwtVersion}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.google.gwt</groupId>
+      <artifactId>gwt-dev</artifactId>
+      <version>${gwtVersion}</version>
+      <classifier>${platform}-libs</classifier>
+      <type>zip</type>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.google.gwt</groupId>
+      <artifactId>gwt-dev</artifactId>
+      <version>${gwtVersion}</version>
+      <classifier>${platform}</classifier>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <profiles>
+    <profile>
+      <id>gwt-dev-windows</id>
+      <properties>
+        <platform>windows</platform>
+      </properties>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+        <os>
+          <family>windows</family>
+        </os>
+      </activation>
+    </profile>
+    <profile>
+      <id>gwt-dev-mac</id>
+      <properties>
+        <platform>mac</platform>
+      </properties>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <os>
+          <family>mac</family>
+        </os>
+      </activation>
+    </profile>
+    <profile>
+      <id>gwt-dev-linux</id>
+      <properties>
+        <platform>linux</platform>
+      </properties>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+        <os>
+          <name>linux</name>
+        </os>
+      </activation>
+    </profile>
+  </profiles>
+
+  <repositories>
+    <repository>
+      <id>dyuproject-repo</id>
+      <url>http://dyuproject.googlecode.com/svn/repos/maven2/</url>
+    </repository>
+
+    <repository>
+      <id>jgit-snapshot-repository</id>
+      <url>http://egit.googlecode.com/svn/maven/snapshot-repository/</url>
+    </repository>
+
+    <repository>
+      <id>gwt-maven</id>
+      <url>http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/</url>
+    </repository>
+  </repositories>
+
+  <pluginRepositories>
+    <pluginRepository>
+      <id>gwt-maven-plugins</id>
+      <url>http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/</url>
+    </pluginRepository>
+  </pluginRepositories>
+</project>
diff --git a/appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml b/appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml
new file mode 100644
index 0000000..ee981df
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/Gerrit.gwt.xml
@@ -0,0 +1,53 @@
+<module>
+  <inherits name='com.google.gwt.user.User'/>
+  <inherits name='com.google.gwt.i18n.I18N'/>
+  <inherits name='com.google.gwtjsonrpc.GWTJSONRPC'/>
+  <inherits name='com.google.gwtorm.GWTORM'/>
+
+  <inherits name='com.google.gwt.user.theme.chrome.Chrome'/>
+  <!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
+  <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->
+
+  <!-- openid.AllowFrameImpl -->
+	  <replace-with class="com.google.gerrit.client.openid.AllowFrameImpl">
+	    <when-type-is class="com.google.gerrit.client.openid.AllowFrameImpl"/>
+	  </replace-with>
+	  <replace-with class="com.google.gerrit.client.openid.AllowFrameImplSafari">
+	    <when-type-is class="com.google.gerrit.client.openid.AllowFrameImpl" />
+	    <any>
+	      <when-property-is name="user.agent" value="safari"/>
+	    </any>
+	  </replace-with>
+  <!-- /openid.AllowFrameImpl -->
+
+  <entry-point class='com.google.gerrit.client.Gerrit'/>
+  <stylesheet src='Gerrit.css' />
+
+  <servlet path='/Gerrit'
+           class='com.google.gerrit.server.HostPageServlet'/>
+  <servlet path='/login'
+           class='com.google.gerrit.server.OpenIdLoginServlet'/>
+  <servlet path='/ssh_info'
+           class='com.google.gerrit.server.ssh.SshServlet'/>
+
+  <servlet path='/rpc/AccountService'
+           class='com.google.gerrit.server.AccountServiceSrv'/>
+  <servlet path='/rpc/AccountSecurity'
+           class='com.google.gerrit.server.AccountSecuritySrv'/>
+  <servlet path='/rpc/ChangeDetailService'
+           class='com.google.gerrit.server.ChangeDetailServiceSrv'/>
+  <servlet path='/rpc/ChangeListService'
+           class='com.google.gerrit.server.ChangeListServiceSrv'/>
+  <servlet path='/rpc/ChangeManageService'
+           class='com.google.gerrit.server.ChangeManageServiceSrv'/>
+  <servlet path='/rpc/GroupAdminService'
+           class='com.google.gerrit.server.GroupAdminServiceSrv'/>
+  <servlet path='/rpc/PatchDetailService'
+           class='com.google.gerrit.server.PatchDetailServiceSrv'/>
+  <servlet path='/rpc/ProjectAdminService'
+           class='com.google.gerrit.server.ProjectAdminServiceSrv'/>
+  <servlet path='/rpc/SuggestService'
+           class='com.google.gerrit.server.SuggestServiceSrv'/>
+  <servlet path='/rpc/SystemInfoService'
+           class='com.google.gerrit.server.SystemInfoServiceSrv'/>
+</module>
diff --git a/appjar/src/main/java/com/google/gerrit/client/ErrorDialog.java b/appjar/src/main/java/com/google/gerrit/client/ErrorDialog.java
new file mode 100644
index 0000000..c5467e4
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ErrorDialog.java
@@ -0,0 +1,82 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.ui.AutoCenterDialogBox;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwtjsonrpc.client.RemoteJsonException;
+
+/** A dialog box showing an error message, when bad things happen. */
+public class ErrorDialog extends AutoCenterDialogBox {
+  private final FlowPanel body;
+
+  protected ErrorDialog() {
+    super(/* auto hide */true, /* modal */true);
+    setText(Gerrit.C.errorDialogTitle());
+
+    body = new FlowPanel();
+    final FlowPanel buttons = new FlowPanel();
+    buttons.setStyleName("gerrit-ErrorDialog-Buttons");
+    final Button closey = new Button();
+    closey.setText(Gerrit.C.errorDialogClose());
+    closey.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        hide();
+      }
+    });
+    buttons.add(closey);
+
+    final FlowPanel center = new FlowPanel();
+    center.setStyleName("gerrit-ErrorDialog");
+    center.add(body);
+    center.add(buttons);
+    add(center);
+  }
+
+  /** Create a dialog box to show a single message string. */
+  public ErrorDialog(final String message) {
+    this();
+    body.add(label(message, "gerrit-ErrorDialog-ErrorMessage"));
+  }
+
+  /** Create a dialog box to nicely format an exception. */
+  public ErrorDialog(final Throwable what) {
+    this();
+
+    String cn;
+    if (what instanceof RemoteJsonException) {
+      cn = Common.C.errorRemoteJsonException();
+    } else {
+      cn = what.getClass().getName();
+      if (cn.startsWith("java.lang.")) {
+        cn = cn.substring("java.lang.".length());
+      }
+    }
+
+    body.add(label(cn, "gerrit-ErrorDialog-ErrorType"));
+    body.add(label(what.getMessage(), "gerrit-ErrorDialog-ErrorMessage"));
+  }
+  
+  private static Label label(final String what, final String style) {
+    final Label r = new Label(what);
+    r.setStyleName(style);
+    return r;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/FormatUtil.java b/appjar/src/main/java/com/google/gerrit/client/FormatUtil.java
new file mode 100644
index 0000000..5f0c9df
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/FormatUtil.java
@@ -0,0 +1,91 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gwt.i18n.client.DateTimeFormat;
+
+import java.util.Date;
+
+/** Misc. formatting functions. */
+public class FormatUtil {
+  private static final DateTimeFormat sTime =
+      DateTimeFormat.getShortTimeFormat();
+  private static final DateTimeFormat mDate =
+      DateTimeFormat.getMediumDateFormat();
+  private static final DateTimeFormat dtfmt =
+      DateTimeFormat.getFormat(mDate.getPattern() + " " + sTime.getPattern());
+
+  /** Format a date using the locale's medium length format. */
+  public static String mediumFormat(final Date dt) {
+    if (dt == null) {
+      return "";
+    }
+    return dtfmt.format(new Date(dt.getTime()));
+  }
+
+  /** Format an account as a name and email address. */
+  public static String nameEmail(final Account acct) {
+    return nameEmail(new AccountInfo(acct));
+  }
+
+  /**
+   * Formats an account as an name and an email address.
+   * <p>
+   * Example output:
+   * <ul>
+   * <li><code>A U. Thor &lt;author@example.com&gt;</code>: full populated</li>
+   * <li><code>A U. Thor (12)</code>: missing email address</li>
+   * <li><code>Anonymous Coward &lt;author@example.com&gt;</code>: missing name</li>
+   * <li><code>Anonymous Coward (12)</code>: missing name and email address</li>
+   * </ul>
+   */
+  public static String nameEmail(final AccountInfo acct) {
+    String name = acct.getFullName();
+    if (name == null) {
+      name = Gerrit.C.anonymousCoward();
+    }
+
+    final StringBuilder b = new StringBuilder();
+    b.append(name);
+    if (acct.getPreferredEmail() != null) {
+      b.append(" <");
+      b.append(acct.getPreferredEmail());
+      b.append(">");
+    } else {
+      b.append(" (");
+      b.append(acct.getId().get());
+      b.append(")");
+    }
+    return b.toString();
+  }
+
+  /**
+   * Formats an account name.
+   * <p>
+   * If the account has a full name, it returns only the full name. Otherwise it
+   * returns a longer form that includes the email address.
+   */
+  public static String name(final AccountInfo ai) {
+    if (ai.getFullName() != null) {
+      return ai.getFullName();
+    }
+    if (ai.getPreferredEmail() != null) {
+      return ai.getPreferredEmail();
+    }
+    return nameEmail(ai);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/Gerrit.java b/appjar/src/main/java/com/google/gerrit/client/Gerrit.java
new file mode 100644
index 0000000..276e5b7
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/Gerrit.java
@@ -0,0 +1,356 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gerrit.client.data.GerritConfig;
+import com.google.gerrit.client.data.SystemInfoService;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.SystemConfig;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.LinkMenuBar;
+import com.google.gerrit.client.ui.LinkMenuItem;
+import com.google.gerrit.client.ui.Screen;
+import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Cookies;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.HistoryListener;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.WindowResizeListener;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.MenuBar;
+import com.google.gwt.user.client.ui.MenuItem;
+import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwtjsonrpc.client.JsonUtil;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.Map.Entry;
+
+public class Gerrit implements EntryPoint {
+  /**
+   * Name of the Cookie our authentication data is stored in.
+   * <p>
+   * If this cookie has a value we assume we are signed in.
+   * 
+   * @see #isSignedIn()
+   */
+  public static final String ACCOUNT_COOKIE = "GerritAccount";
+
+  public static final GerritConstants C = GWT.create(GerritConstants.class);
+  public static final GerritIcons ICONS = GWT.create(GerritIcons.class);
+  public static final SystemInfoService SYSTEM_SVC;
+
+  private static Account myAccount;
+  private static final ArrayList<SignedInListener> signedInListeners =
+      new ArrayList<SignedInListener>();
+
+  private static LinkMenuBar menuBar;
+  private static RootPanel body;
+  private static Screen currentScreen;
+  private static final LinkedHashMap<Object, Screen> priorScreens =
+      new LinkedHashMap<Object, Screen>(10, 0.75f, true) {
+        @Override
+        protected boolean removeEldestEntry(final Entry<Object, Screen> eldest) {
+          return 3 <= size();
+        }
+      };
+
+  static {
+    SYSTEM_SVC = GWT.create(SystemInfoService.class);
+    JsonUtil.bind(SYSTEM_SVC, "rpc/SystemInfoService");
+  }
+
+  public static void display(final String historyToken, final boolean go) {
+    History.newItem(historyToken, go);
+    if (!go && historyHooks != null) {
+      dispatchHistoryHooks(historyToken);
+    }
+  }
+
+  public static void display(final String historyToken, final Screen view) {
+    History.newItem(historyToken, false);
+    display(view);
+    if (historyHooks != null) {
+      dispatchHistoryHooks(historyToken);
+    }
+  }
+
+  public static void display(final Screen view) {
+    if (view.isRequiresSignIn() && !isSignedIn()) {
+      doSignIn(new AsyncCallback<Object>() {
+        public void onSuccess(final Object result) {
+          display(view);
+        }
+
+        public void onFailure(final Throwable caught) {
+        }
+      });
+      return;
+    }
+
+    if (currentScreen != null) {
+      body.remove(currentScreen);
+      final Object sct = currentScreen.getScreenCacheToken();
+      if (sct != null) {
+        priorScreens.put(sct, currentScreen);
+      }
+    }
+
+    final Screen p = priorScreens.get(view.getScreenCacheToken());
+    currentScreen = p != null ? p.recycleThis(view) : view;
+    body.add(currentScreen);
+  }
+
+  /** @return the currently signed in user's account data; null if no account */
+  public static Account getUserAccount() {
+    return myAccount;
+  }
+
+  /** @return true if the user is currently authenticated */
+  public static boolean isSignedIn() {
+    return getUserAccount() != null;
+  }
+
+  /**
+   * Sign the user into the application.
+   * 
+   * @param callback optional; if sign in is successful the onSuccess method
+   *        will be called.
+   */
+  public static void doSignIn(final AsyncCallback<?> callback) {
+    new SignInDialog(callback).center();
+  }
+
+  /** Sign the user out of the application (and discard the cookies). */
+  public static void doSignOut() {
+    myAccount = null;
+    Cookies.removeCookie(ACCOUNT_COOKIE);
+
+    for (final SignedInListener l : signedInListeners) {
+      l.onSignOut();
+    }
+    refreshMenuBar();
+
+    if (currentScreen != null) {
+      currentScreen.onSignOut();
+    }
+  }
+
+  /** Add a listener to monitor sign-in status. */
+  public static void addSignedInListener(final SignedInListener l) {
+    if (!signedInListeners.contains(l)) {
+      signedInListeners.add(l);
+    }
+  }
+
+  /** Remove a previously added sign in listener. */
+  public static void removeSignedInListener(final SignedInListener l) {
+    signedInListeners.remove(l);
+  }
+
+  public void onModuleLoad() {
+    initHistoryHooks();
+
+    final RootPanel topMenu = RootPanel.get("gerrit_topmenu");
+    menuBar = new LinkMenuBar();
+    topMenu.add(menuBar);
+
+    body = RootPanel.get("gerrit_body");
+    body.setHeight(Window.getClientHeight() + "px");
+    Window.addWindowResizeListener(new WindowResizeListener() {
+      public void onWindowResized(final int width, final int height) {
+        body.setHeight(height + "px");
+      }
+    });
+
+    JsonUtil.addRpcStatusListener(new RpcStatus(topMenu));
+    SYSTEM_SVC.loadGerritConfig(new GerritCallback<GerritConfig>() {
+      public void onSuccess(final GerritConfig result) {
+        Common.setGerritConfig(result);
+        onModuleLoad2();
+      }
+    });
+  }
+
+  private static ArrayList<JavaScriptObject> historyHooks;
+
+  private static native void initHistoryHooks()
+  /*-{ $wnd['gerrit_addHistoryHook'] = function(h) { @com.google.gerrit.client.Gerrit::addHistoryHook(Lcom/google/gwt/core/client/JavaScriptObject;)(h); }; }-*/;
+
+  static void addHistoryHook(final JavaScriptObject hook) {
+    if (historyHooks == null) {
+      historyHooks = new ArrayList<JavaScriptObject>();
+      History.addHistoryListener(new HistoryListener() {
+        public void onHistoryChanged(final String historyToken) {
+          dispatchHistoryHooks(historyToken);
+        }
+      });
+    }
+    historyHooks.add(hook);
+  }
+
+  private static native void callHistoryHook(JavaScriptObject hook, String url)
+  /*-{ hook(url); }-*/;
+
+  private static void dispatchHistoryHooks(final String historyToken) {
+    final String url = Window.Location.getPath() + "#" + historyToken;
+    for (final JavaScriptObject hook : historyHooks) {
+      callHistoryHook(hook, url);
+    }
+  }
+
+  private void onModuleLoad2() {
+    if (Cookies.getCookie(ACCOUNT_COOKIE) != null
+        || Common.getGerritConfig().getLoginType() == SystemConfig.LoginType.HTTP) {
+      // If the user is likely to already be signed into their account,
+      // load the account data and update the UI with that.
+      //
+      com.google.gerrit.client.account.Util.ACCOUNT_SVC
+          .myAccount(new AsyncCallback<Account>() {
+            public void onSuccess(final Account result) {
+              if (result != null) {
+                postSignIn(result);
+              } else {
+                Cookies.removeCookie(ACCOUNT_COOKIE);
+                refreshMenuBar();
+              }
+              showInitialScreen();
+            }
+
+            public void onFailure(final Throwable caught) {
+              if (!GWT.isScript() && !GerritCallback.isNotSignedIn(caught)) {
+                GWT.log("Unexpected failure from validating account", caught);
+              }
+              Cookies.removeCookie(ACCOUNT_COOKIE);
+              refreshMenuBar();
+              showInitialScreen();
+            }
+          });
+    } else {
+      refreshMenuBar();
+      showInitialScreen();
+    }
+  }
+
+  private void showInitialScreen() {
+    History.addHistoryListener(new Link());
+    if ("".equals(History.getToken())) {
+      if (isSignedIn()) {
+        History.newItem(Link.MINE);
+      } else {
+        History.newItem(Link.ALL);
+      }
+    } else {
+      History.fireCurrentHistoryState();
+    }
+  }
+
+  /** Hook from {@link SignInDialog} to let us know to refresh the UI. */
+  static void postSignIn(final Account acct) {
+    myAccount = acct;
+    refreshMenuBar();
+    DeferredCommand.addCommand(new Command() {
+      public void execute() {
+        for (final SignedInListener l : signedInListeners) {
+          l.onSignIn();
+        }
+        if (currentScreen != null) {
+          currentScreen.onSignIn();
+        }
+      }
+    });
+  }
+
+  public static void refreshMenuBar() {
+    menuBar.clearItems();
+
+    final boolean signedIn = isSignedIn();
+    MenuBar m;
+
+    m = new MenuBar(true);
+    addLink(m, C.menuAllRecentChanges(), Link.ALL);
+    addLink(m, C.menuAllUnclaimedChanges(), Link.ALL_UNCLAIMED);
+    menuBar.addItem(C.menuAll(), m);
+
+    if (signedIn) {
+      m = new MenuBar(true);
+      addLink(m, C.menuMyChanges(), Link.MINE);
+      addLink(m, C.menuMyUnclaimedChanges(), Link.MINE_UNCLAIMED);
+      addLink(m, C.menuMyStarredChanges(), Link.MINE_STARRED);
+      menuBar.addItem(C.menuMine(), m);
+    }
+
+    if (signedIn) {
+      m = new MenuBar(true);
+      addLink(m, C.menuPeople(), Link.ADMIN_PEOPLE);
+      addLink(m, C.menuGroups(), Link.ADMIN_GROUPS);
+      addLink(m, C.menuProjects(), Link.ADMIN_PROJECTS);
+      menuBar.addItem(C.menuAdmin(), m);
+    }
+
+    menuBar.lastInGroup();
+    menuBar.addGlue();
+
+    if (signedIn) {
+      whoAmI();
+      menuBar.addItem(new LinkMenuItem(C.menuSettings(), Link.SETTINGS));
+      switch (Common.getGerritConfig().getLoginType()) {
+        case HTTP:
+          break;
+
+        case OPENID:
+        default:
+          menuBar.addItem(C.menuSignOut(), new Command() {
+            public void execute() {
+              doSignOut();
+            }
+          });
+          break;
+      }
+    } else {
+      switch (Common.getGerritConfig().getLoginType()) {
+        case HTTP:
+          break;
+
+        case OPENID:
+        default:
+          menuBar.addItem(C.menuSignIn(), new Command() {
+            public void execute() {
+              doSignIn(null);
+            }
+          });
+          break;
+      }
+    }
+    menuBar.lastInGroup();
+  }
+
+  private static void whoAmI() {
+    final String name = FormatUtil.nameEmail(getUserAccount());
+    final MenuItem me = menuBar.addItem(name, (Command) null);
+    me.removeStyleName("gwt-MenuItem");
+    me.addStyleName("gerrit-MenuBarUserName");
+  }
+
+  private static void addLink(final MenuBar m, final String text,
+      final String historyToken) {
+    m.addItem(new LinkMenuItem(text, historyToken));
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/GerritConstants.java b/appjar/src/main/java/com/google/gerrit/client/GerritConstants.java
new file mode 100644
index 0000000..96bb9eb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/GerritConstants.java
@@ -0,0 +1,50 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gwt.i18n.client.Constants;
+
+public interface GerritConstants extends Constants {
+  String menuSignIn();
+  String menuSignOut();
+  String menuSettings();
+  String signInDialogTitle();
+  String linkIdentityDialogTitle();
+  String loginTypeUnsupported();
+
+  String errorDialogTitle();
+  String errorDialogClose();
+
+  String notFoundTitle();
+  String notFoundBody();
+  String nameAlreadyUsedBody();
+
+  String menuAll();
+  String menuAllUnclaimedChanges();
+  String menuAllRecentChanges();
+
+  String menuMine();
+  String menuMyChanges();
+  String menuMyUnclaimedChanges();
+  String menuMyStarredChanges();
+
+  String menuAdmin();
+  String menuPeople();
+  String menuGroups();
+  String menuProjects();
+
+  String rpcStatusLoading();
+  String anonymousCoward();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/GerritConstants.properties b/appjar/src/main/java/com/google/gerrit/client/GerritConstants.properties
new file mode 100644
index 0000000..ef6b57c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/GerritConstants.properties
@@ -0,0 +1,30 @@
+menuSignIn = Sign In
+menuSignOut = Sign Out
+menuSettings = Settings
+signInDialogTitle = Code Review - Sign In
+linkIdentityDialogTitle = Code Review - Link Identity
+loginTypeUnsupported = Sign in is not available.
+
+errorDialogTitle = Code Review - Unexpected Error
+errorDialogClose = Close
+
+notFoundTitle = Not Found
+notFoundBody = The page you requested was not found.
+nameAlreadyUsedBody = The name is already in use.
+
+menuAll = All
+menuAllUnclaimedChanges = Unclaimed Changes
+menuAllRecentChanges = Recent Changes
+
+menuMine = Mine
+menuMyChanges = My Changes
+menuMyUnclaimedChanges = Unclaimed Changes
+menuMyStarredChanges = Starred Changes
+
+menuAdmin = Admin
+menuPeople = People
+menuGroups = Groups
+menuProjects = Projects
+
+rpcStatusLoading = Loading ...
+anonymousCoward = Anonymous Coward
diff --git a/appjar/src/main/java/com/google/gerrit/client/GerritIcons.java b/appjar/src/main/java/com/google/gerrit/client/GerritIcons.java
new file mode 100644
index 0000000..fdf359b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/GerritIcons.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.ImageBundle;
+
+public interface GerritIcons extends ImageBundle {
+  public AbstractImagePrototype arrowRight();
+
+  public AbstractImagePrototype starOpen();
+
+  public AbstractImagePrototype starFilled();
+
+  public AbstractImagePrototype greenCheck();
+
+  public AbstractImagePrototype redNot();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/Link.java b/appjar/src/main/java/com/google/gerrit/client/Link.java
new file mode 100644
index 0000000..dd952bdce
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/Link.java
@@ -0,0 +1,176 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gerrit.client.account.AccountSettings;
+import com.google.gerrit.client.account.NewAgreementScreen;
+import com.google.gerrit.client.admin.AccountGroupScreen;
+import com.google.gerrit.client.admin.GroupListScreen;
+import com.google.gerrit.client.admin.ProjectAdminScreen;
+import com.google.gerrit.client.admin.ProjectListScreen;
+import com.google.gerrit.client.changes.AccountDashboardScreen;
+import com.google.gerrit.client.changes.ChangeScreen;
+import com.google.gerrit.client.changes.MineStarredScreen;
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.data.ChangeInfo;
+import com.google.gerrit.client.patches.PatchSideBySideScreen;
+import com.google.gerrit.client.patches.PatchUnifiedScreen;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.ui.Screen;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.HistoryListener;
+
+public class Link implements HistoryListener {
+  public static final String SETTINGS = "settings";
+  public static final String SETTINGS_SSHKEYS = "settings,ssh-keys";
+  public static final String SETTINGS_WEBIDENT = "settings,web-identities";
+  public static final String SETTINGS_AGREEMENTS = "settings,agreements";
+  public static final String SETTINGS_CONTACT = "settings,contact";
+  public static final String SETTINGS_NEW_AGREEMENT = "settings,new-agreement";
+
+  public static final String MINE = "mine";
+  public static final String MINE_UNCLAIMED = "mine,unclaimed";
+  public static final String MINE_STARRED = "mine,starred";
+
+  public static final String ALL = "all";
+  public static final String ALL_OPEN = "all,open";
+  public static final String ALL_UNCLAIMED = "all,unclaimed";
+
+  public static final String ADMIN_PEOPLE = "admin,people";
+  public static final String ADMIN_GROUPS = "admin,groups";
+  public static final String ADMIN_PROJECTS = "admin,projects";
+
+  public static String toChange(final ChangeInfo c) {
+    return toChange(c.getId());
+  }
+
+  public static String toChange(final Change.Id c) {
+    return "change," + c.toString();
+  }
+
+  public static String toAccountDashboard(final AccountInfo acct) {
+    return toAccountDashboard(acct.getId());
+  }
+
+  public static String toAccountDashboard(final Account.Id acct) {
+    return "dashboard," + acct.toString();
+  }
+
+  public static String toPatchSideBySide(final Patch.Key id) {
+    return toPatch("sidebyside", id);
+  }
+
+  public static String toPatchUnified(final Patch.Key id) {
+    return toPatch("unified", id);
+  }
+
+  public static String toPatch(final String type, final Patch.Key id) {
+    return "patch," + type + "," + id.toString();
+  }
+
+  public static String toAccountGroup(final AccountGroup.Id id) {
+    return "admin,group," + id.toString();
+  }
+
+  public static String toProjectAdmin(final Project.Id id) {
+    return "admin,project," + id.toString();
+  }
+
+  public void onHistoryChanged(final String token) {
+    Screen s;
+    try {
+      s = select(token);
+    } catch (RuntimeException err) {
+      GWT.log("Error parsing history token: " + token, err);
+      s = null;
+    }
+
+    if (s != null) {
+      Gerrit.display(s);
+    } else {
+      Gerrit.display(new NotFoundScreen());
+    }
+  }
+
+  private Screen select(final String token) {
+    String p;
+
+    if (token == null) {
+      return null;
+    }
+
+    if (SETTINGS.equals(token) || token.startsWith("settings,")) {
+      if (SETTINGS_NEW_AGREEMENT.equals(token)) {
+        return new NewAgreementScreen();
+      }
+      return new AccountSettings(token);
+    }
+
+    if (MINE.equals(token)) {
+      return new AccountDashboardScreen(Common.getAccountId());
+    }
+
+    if (MINE_STARRED.equals(token)) {
+      return new MineStarredScreen();
+    }
+
+    if (token.startsWith("patch,")) {
+      p = "patch,sidebyside,";
+      if (token.startsWith(p))
+        return new PatchSideBySideScreen(Patch.Key.parse(skip(p, token)));
+
+      p = "patch,unified,";
+      if (token.startsWith(p))
+        return new PatchUnifiedScreen(Patch.Key.parse(skip(p, token)));
+    }
+
+    p = "change,";
+    if (token.startsWith(p))
+      return new ChangeScreen(Change.Id.parse(skip(p, token)));
+
+    p = "dashboard,";
+    if (token.startsWith(p))
+      return new AccountDashboardScreen(Account.Id.parse(skip(p, token)));
+
+    if (token.startsWith("admin,")) {
+      p = "admin,group,";
+      if (token.startsWith(p))
+        return new AccountGroupScreen(AccountGroup.Id.parse(skip(p, token)));
+
+      p = "admin,project,";
+      if (token.startsWith(p))
+        return new ProjectAdminScreen(Project.Id.parse(skip(p, token)));
+
+      if (ADMIN_GROUPS.equals(token)) {
+        return new GroupListScreen();
+      }
+
+      if (ADMIN_PROJECTS.equals(token)) {
+        return new ProjectListScreen();
+      }
+    }
+
+    return null;
+  }
+
+  private static String skip(final String prefix, final String in) {
+    return in.substring(prefix.length());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/NotFoundScreen.java b/appjar/src/main/java/com/google/gerrit/client/NotFoundScreen.java
new file mode 100644
index 0000000..1e68a51
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/NotFoundScreen.java
@@ -0,0 +1,16 @@
+package com.google.gerrit.client;
+
+import com.google.gerrit.client.ui.Screen;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+
+/** Displays an error message letting the user know the page doesn't exist. */
+public class NotFoundScreen extends Screen {
+  public NotFoundScreen() {
+    super(Gerrit.C.notFoundTitle());
+
+    final Element body = DOM.createDiv();
+    DOM.setInnerText(body, Gerrit.C.notFoundBody());
+    DOM.appendChild(getElement(), body);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/RpcStatus.java b/appjar/src/main/java/com/google/gerrit/client/RpcStatus.java
new file mode 100644
index 0000000..8aa111e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/RpcStatus.java
@@ -0,0 +1,65 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwtjsonrpc.client.RpcStatusListener;
+
+public class RpcStatus implements RpcStatusListener {
+  private static int hideDepth;
+
+  /** Execute code, hiding the RPCs they execute from being shown visually. */
+  public static void hide(final Runnable run) {
+    try {
+      hideDepth++;
+      run.run();
+    } finally {
+      hideDepth--;
+    }
+  }
+
+  private final Label loading;
+  private int activeCalls;
+
+  RpcStatus(final Panel p) {
+    final FlowPanel r = new FlowPanel();
+    r.setStyleName("gerrit-RpcStatusPanel");
+    p.add(r);
+
+    loading = new InlineLabel();
+    loading.setText(Gerrit.C.rpcStatusLoading());
+    loading.setStyleName("gerrit-RpcStatus");
+    loading.addStyleDependentName("Loading");
+    loading.setVisible(false);
+    r.add(loading);
+  }
+
+  public void onCallStart() {
+    if (++activeCalls == 1) {
+      if (hideDepth == 0) {
+        loading.setVisible(true);
+      }
+    }
+  }
+
+  public void onCallEnd() {
+    if (--activeCalls == 0) {
+      loading.setVisible(false);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/SignInDialog.java b/appjar/src/main/java/com/google/gerrit/client/SignInDialog.java
new file mode 100644
index 0000000..6f783f0
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/SignInDialog.java
@@ -0,0 +1,178 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+import com.google.gerrit.client.account.SignInResult;
+import com.google.gerrit.client.account.SignInResult.Status;
+import com.google.gerrit.client.openid.OpenIdLoginPanel;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AutoCenterDialogBox;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwtjsonrpc.client.CallbackHandle;
+
+/**
+ * Prompts the user to sign in to their account.
+ * <p>
+ * This dialog performs the login within an iframe, allowing normal HTML based
+ * login pages to be used, including those which aren't served from the same
+ * server as Gerrit. This is important to permit an OpenID provider or some
+ * other web based single-sign-on system to be used for authentication.
+ * <p>
+ * Post login the iframe content is expected to execute the JavaScript snippet:
+ * 
+ * <pre>
+ * $callback(account);
+ * </pre>
+ * 
+ * where <code>$callback</code> is the parameter in the initial request and
+ * <code>account</code> is either <code>!= null</code> (the user is now signed
+ * in) or <code>null</code> (the sign in was aborted/canceled before it
+ * completed).
+ */
+public class SignInDialog extends AutoCenterDialogBox {
+  public static enum Mode {
+    SIGN_IN, LINK_IDENTIY;
+  }
+
+  private static SignInDialog current;
+
+  private final CallbackHandle<SignInResult> signInCallback;
+  private final AsyncCallback<?> appCallback;
+  private Widget panel;
+
+  /**
+   * Create a new dialog to handle user sign in.
+   * 
+   * @param callback optional; onSuccess will be called if sign is completed.
+   *        This can be used to trigger sending an RPC or some other action.
+   */
+  public SignInDialog(final AsyncCallback<?> callback) {
+    this(Mode.SIGN_IN, callback);
+  }
+
+  /**
+   * Create a new dialog to handle user sign in.
+   * 
+   * @param signInMode type of mode the login will perform.
+   * @param callback optional; onSuccess will be called if sign is completed.
+   *        This can be used to trigger sending an RPC or some other action.
+   */
+  public SignInDialog(final Mode signInMode, final AsyncCallback<?> callback) {
+    super(/* auto hide */true, /* modal */true);
+
+    signInCallback =
+        com.google.gerrit.client.account.Util.LOGIN_SVC
+            .signIn(new GerritCallback<SignInResult>() {
+              public void onSuccess(final SignInResult result) {
+                onCallback(result);
+              }
+            });
+    appCallback = callback;
+
+    switch (Common.getGerritConfig().getLoginType()) {
+      case OPENID:
+        panel = new OpenIdLoginPanel(signInMode, signInCallback);
+        break;
+
+      default: {
+        final FlowPanel fp = new FlowPanel();
+        fp.add(new Label(Gerrit.C.loginTypeUnsupported()));
+        panel = fp;
+        break;
+      }
+    }
+    add(panel);
+    onResize(Window.getClientWidth(), Window.getClientHeight());
+
+    switch (signInMode) {
+      case LINK_IDENTIY:
+        setText(Gerrit.C.linkIdentityDialogTitle());
+        break;
+      default:
+        setText(Gerrit.C.signInDialogTitle());
+        break;
+    }
+  }
+
+  @Override
+  protected void onResize(final int width, final int height) {
+    resizeFrame(width, height);
+    super.onResize(width, height);
+  }
+
+  private void resizeFrame(final int width, final int height) {
+    final int w = Math.min(630, width - 15);
+    final int h = Math.min(440, height - 60);
+    panel.setWidth(w + "px");
+    panel.setHeight(h + "px");
+  }
+
+  @Override
+  public void show() {
+    if (current != null) {
+      current.hide();
+    }
+
+    super.show();
+
+    current = this;
+    signInCallback.install();
+
+    if (panel instanceof OpenIdLoginPanel) {
+      ((OpenIdLoginPanel) panel).setFocus(true);
+    }
+  }
+
+  @Override
+  protected void onUnload() {
+    if (current == this) {
+      signInCallback.cancel();
+      current = null;
+    }
+    super.onUnload();
+  }
+
+  private void onCallback(final SignInResult result) {
+    final Status rc = result.getStatus();
+    if (rc == SignInResult.Status.CANCEL) {
+      hide();
+    } else if (rc == SignInResult.Status.SUCCESS) {
+      onSuccess(result);
+    } else {
+      GWT.log("Unexpected SignInResult.Status " + rc, null);
+    }
+  }
+
+  private void onSuccess(final SignInResult result) {
+    Gerrit.postSignIn(result.getAccount());
+    hide();
+    final AsyncCallback<?> ac = appCallback;
+    if (ac != null) {
+      DeferredCommand.addCommand(new Command() {
+        public void execute() {
+          ac.onSuccess(null);
+        }
+      });
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/SignedInListener.java b/appjar/src/main/java/com/google/gerrit/client/SignedInListener.java
new file mode 100644
index 0000000..31905e5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/SignedInListener.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client;
+
+/** Listener to monitor the state of the user's account token. */
+public interface SignedInListener {
+  /** Invoked after the user has finished sign-in to their account. */
+  public void onSignIn();
+
+  /** Invoked while the user is signing out of their account. */
+  public void onSignOut();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountConstants.java b/appjar/src/main/java/com/google/gerrit/client/account/AccountConstants.java
new file mode 100644
index 0000000..e190622
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountConstants.java
@@ -0,0 +1,81 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gwt.i18n.client.Constants;
+
+public interface AccountConstants extends Constants {
+  String accountSettingsHeading();
+
+  String fullName();
+  String preferredEmail();
+  String sshUserName();
+  String registeredOn();
+  String defaultContext();
+
+  String tabPreferences();
+  String tabContactInformation();
+  String tabSshKeys();
+  String tabWebIdentities();
+  String tabAgreements();
+
+  String buttonDeleteSshKey();
+  String buttonAddSshKey();
+
+  String sshKeyAlgorithm();
+  String sshKeyKey();
+  String sshKeyComment();
+  String sshKeyLastUsed();
+  String sshKeyStored();
+
+  String addSshKeyPanelHeader();
+  String addSshKeyHelp();
+
+  String webIdLastUsed();
+  String webIdEmail();
+  String webIdIdentity();
+  String buttonLinkIdentity();
+
+  String watchedProjects();
+  String buttonWatchProject();
+  String defaultProjectName();
+
+  String contactFieldFullName();
+  String contactFieldEmail();
+  String contactFieldAddress();
+  String contactFieldCountry();
+  String contactFieldPhone();
+  String contactFieldFax();
+  String buttonSaveContact();
+
+  String newAgreement();
+  String agreementStatus();
+  String agreementName();
+  String agreementDescription();
+  String agreementAccepted();
+  String agreementStatus_EXPIRED();
+  String agreementStatus_NEW();
+  String agreementStatus_REJECTED();
+  String agreementStatus_VERIFIED();
+
+  String newAgreementSelectTypeHeading();
+  String newAgreementNoneAvailable();
+  String newAgreementReviewLegalHeading();
+  String newAgreementReviewContactHeading();
+  String newAgreementCompleteHeading();
+  String newAgreementIAGREE();
+  String newAgreementAlreadySubmitted();
+  String buttonSubmitNewAgreement();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountConstants.properties b/appjar/src/main/java/com/google/gerrit/client/account/AccountConstants.properties
new file mode 100644
index 0000000..9747a15
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountConstants.properties
@@ -0,0 +1,61 @@
+accountSettingsHeading = Account Settings
+
+fullName = Full Name
+preferredEmail = Email Address
+sshUserName = SSH Username
+registeredOn = Registered
+defaultContext = Default Context
+
+tabPreferences = Preferences
+tabContactInformation = Contact Information
+tabSshKeys = SSH Keys
+tabWebIdentities = Web Identities
+tabAgreements = Agreements
+
+buttonDeleteSshKey = Delete
+buttonAddSshKey = Add
+
+sshKeyAlgorithm = Algorithm
+sshKeyKey = Key
+sshKeyComment = Comment
+sshKeyLastUsed = Last Used
+sshKeyStored = Stored
+
+webIdLastUsed = Last Login
+webIdEmail = Email Address
+webIdIdentity = Identity
+buttonLinkIdentity = Link Another Identity
+
+addSshKeyPanelHeader = Add SSH Public Key
+addSshKeyHelp = (<a href="http://github.com/guides/providing-your-ssh-key" target="_blank">GitHub's Guide to SSH Keys</a>)
+
+watchedProjects = Watched Projects
+buttonWatchProject = Watch
+defaultProjectName = Project Name
+
+contactFieldFullName = Full Name
+contactFieldEmail = Preferred Email
+contactFieldAddress = Mailing Address
+contactFieldCountry = Country
+contactFieldPhone = Phone Number
+contactFieldFax = Fax Number
+buttonSaveContact = Save
+
+newAgreement = New Contributor Agreement
+agreementStatus = Status
+agreementName = Name
+agreementStatus_EXPIRED = Expired
+agreementStatus_NEW = Pending
+agreementStatus_REJECTED = Rejected
+agreementStatus_VERIFIED = Verified
+agreementDescription = Description
+agreementAccepted = Accepted
+
+newAgreementSelectTypeHeading = Select an agreement type:
+newAgreementNoneAvailable = No contributor agreements are configured.
+newAgreementReviewLegalHeading = Review the agreement:
+newAgreementReviewContactHeading = Review your contact information:
+newAgreementCompleteHeading = Complete the agreement:
+newAgreementIAGREE = I AGREE
+newAgreementAlreadySubmitted = Agreement already submitted.
+buttonSubmitNewAgreement = Submit Agreement
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountMessages.java b/appjar/src/main/java/com/google/gerrit/client/account/AccountMessages.java
new file mode 100644
index 0000000..6049a89
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountMessages.java
@@ -0,0 +1,22 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gwt.i18n.client.Messages;
+
+public interface AccountMessages extends Messages {
+  String lines(short cnt);
+  String enterIAGREE(String iagree);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountMessages.properties b/appjar/src/main/java/com/google/gerrit/client/account/AccountMessages.properties
new file mode 100644
index 0000000..5779056
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountMessages.properties
@@ -0,0 +1,3 @@
+lines = {0} lines
+
+enterIAGREE = (enter {0} in the box to the left)
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountProjectWatchInfo.java b/appjar/src/main/java/com/google/gerrit/client/account/AccountProjectWatchInfo.java
new file mode 100644
index 0000000..c9e9290
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountProjectWatchInfo.java
@@ -0,0 +1,39 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.reviewdb.AccountProjectWatch;
+import com.google.gerrit.client.reviewdb.Project;
+
+public final class AccountProjectWatchInfo {
+  protected AccountProjectWatch watch;
+  protected Project project;
+
+  protected AccountProjectWatchInfo() {
+  }
+
+  public AccountProjectWatchInfo(final AccountProjectWatch w, final Project p) {
+    watch = w;
+    project = p;
+  }
+
+  public AccountProjectWatch getWatch() {
+    return watch;
+  }
+
+  public Project getProject() {
+    return project;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountSecurity.java b/appjar/src/main/java/com/google/gerrit/client/account/AccountSecurity.java
new file mode 100644
index 0000000..4e5c655
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountSecurity.java
@@ -0,0 +1,50 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.reviewdb.AccountSshKey;
+import com.google.gerrit.client.reviewdb.ContactInformation;
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.List;
+import java.util.Set;
+
+public interface AccountSecurity extends RemoteJsonService {
+  @SignInRequired
+  void mySshKeys(AsyncCallback<List<AccountSshKey>> callback);
+
+  @SignInRequired
+  void addSshKey(String keyText, AsyncCallback<AccountSshKey> callback);
+
+  @SignInRequired
+  void deleteSshKeys(Set<AccountSshKey.Id> ids,
+      AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void myExternalIds(AsyncCallback<List<AccountExternalId>> callback);
+
+  @SignInRequired
+  void updateContact(String fullName, String emailAddr,
+      ContactInformation info, AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void enterAgreement(ContributorAgreement.Id id,
+      AsyncCallback<VoidResult> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountService.java b/appjar/src/main/java/com/google/gerrit/client/account/AccountService.java
new file mode 100644
index 0000000..14abefc
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountService.java
@@ -0,0 +1,51 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountProjectWatch;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.AllowCrossSiteRequest;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.List;
+import java.util.Set;
+
+public interface AccountService extends RemoteJsonService {
+  @SignInRequired
+  @AllowCrossSiteRequest
+  void myAccount(AsyncCallback<Account> callback);
+
+  @SignInRequired
+  void changeDefaultContext(short newSetting, AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  @AllowCrossSiteRequest
+  void myProjectWatch(AsyncCallback<List<AccountProjectWatchInfo>> callback);
+
+  @SignInRequired
+  void addProjectWatch(String projectName,
+      AsyncCallback<AccountProjectWatchInfo> callback);
+
+  @SignInRequired
+  void deleteProjectWatches(Set<AccountProjectWatch.Key> keys,
+      AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  @AllowCrossSiteRequest
+  void myAgreements(AsyncCallback<AgreementInfo> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountServiceImpl.java b/appjar/src/main/java/com/google/gerrit/client/account/AccountServiceImpl.java
new file mode 100644
index 0000000..184d95b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountServiceImpl.java
@@ -0,0 +1,143 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountProjectWatch;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.VoidResult;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Set;
+
+public class AccountServiceImpl extends BaseServiceImplementation implements
+    AccountService {
+  public void myAccount(final AsyncCallback<Account> callback) {
+    run(callback, new Action<Account>() {
+      public Account run(ReviewDb db) throws Failure {
+        final Account a =
+            Common.getAccountCache().get(Common.getAccountId(), db);
+        if (a == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+        return a;
+      }
+    });
+  }
+
+  public void changeDefaultContext(final short newSetting,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException {
+        final Account a = db.accounts().get(Common.getAccountId());
+        a.setDefaultContext(newSetting);
+        db.accounts().update(Collections.singleton(a));
+        Common.getAccountCache().invalidate(a.getId());
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void myProjectWatch(
+      final AsyncCallback<List<AccountProjectWatchInfo>> callback) {
+    run(callback, new Action<List<AccountProjectWatchInfo>>() {
+      public List<AccountProjectWatchInfo> run(ReviewDb db) throws OrmException {
+        final List<AccountProjectWatchInfo> r =
+            new ArrayList<AccountProjectWatchInfo>();
+
+        for (final AccountProjectWatch w : db.accountProjectWatches()
+            .byAccount(Common.getAccountId()).toList()) {
+          final Project p = db.projects().get(w.getProjectId());
+          if (p == null) {
+            db.accountProjectWatches().delete(Collections.singleton(w));
+            continue;
+          }
+          r.add(new AccountProjectWatchInfo(w, p));
+        }
+        Collections.sort(r, new Comparator<AccountProjectWatchInfo>() {
+          public int compare(final AccountProjectWatchInfo a,
+              final AccountProjectWatchInfo b) {
+            return a.getProject().getName().compareTo(b.getProject().getName());
+          }
+        });
+        return r;
+      }
+    });
+  }
+
+  public void addProjectWatch(final String projectName,
+      final AsyncCallback<AccountProjectWatchInfo> callback) {
+    run(callback, new Action<AccountProjectWatchInfo>() {
+      public AccountProjectWatchInfo run(ReviewDb db) throws OrmException,
+          Failure {
+        final ProjectCache.Entry project =
+            Common.getProjectCache().get(new Project.NameKey(projectName));
+        if (project == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final AccountProjectWatch watch =
+            new AccountProjectWatch(new AccountProjectWatch.Key(Common
+                .getAccountId(), project.getProject().getId()));
+        db.accountProjectWatches().insert(Collections.singleton(watch));
+        return new AccountProjectWatchInfo(watch, project.getProject());
+      }
+    });
+  }
+
+  public void deleteProjectWatches(final Set<AccountProjectWatch.Key> keys,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        final Account.Id me = Common.getAccountId();
+        for (final AccountProjectWatch.Key keyId : keys) {
+          if (!me.equals(keyId.getParentKey()))
+            throw new Failure(new NoSuchEntityException());
+        }
+
+        final List<AccountProjectWatch> k =
+            db.accountProjectWatches().get(keys).toList();
+        if (!k.isEmpty()) {
+          final Transaction txn = db.beginTransaction();
+          db.accountProjectWatches().delete(k, txn);
+          txn.commit();
+        }
+
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void myAgreements(final AsyncCallback<AgreementInfo> callback) {
+    run(callback, new Action<AgreementInfo>() {
+      public AgreementInfo run(final ReviewDb db) throws OrmException {
+        final AgreementInfo i = new AgreementInfo();
+        i.load(Common.getAccountId(), db);
+        return i;
+      }
+    });
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AccountSettings.java b/appjar/src/main/java/com/google/gerrit/client/account/AccountSettings.java
new file mode 100644
index 0000000..0ee7d22
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AccountSettings.java
@@ -0,0 +1,177 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import static com.google.gerrit.client.FormatUtil.mediumFormat;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountScreen;
+import com.google.gerrit.client.ui.LazyTabChild;
+import com.google.gerrit.client.ui.Screen;
+import com.google.gwt.i18n.client.LocaleInfo;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.SourcesTabEvents;
+import com.google.gwt.user.client.ui.TabListener;
+import com.google.gwt.user.client.ui.TabPanel;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AccountSettings extends AccountScreen {
+  private String initialTabToken;
+  private int labelIdx, fieldIdx;
+  private Grid info;
+
+  private List<String> tabTokens;
+  private TabPanel tabs;
+  private PreferencePanel prefsPanel;
+
+  public AccountSettings(final String tabToken) {
+    super(Util.C.accountSettingsHeading());
+    initialTabToken = tabToken;
+  }
+
+  @Override
+  public Object getScreenCacheToken() {
+    return getClass();
+  }
+
+  @Override
+  public Screen recycleThis(final Screen newScreen) {
+    final AccountSettings s = (AccountSettings) newScreen;
+    initialTabToken = s.initialTabToken;
+    return this;
+  }
+
+  @Override
+  public void onLoad() {
+    if (info == null) {
+      initUI();
+    }
+
+    super.onLoad();
+    display(Gerrit.getUserAccount());
+    tabs.selectTab(tabTokens.indexOf(initialTabToken));
+
+    Util.ACCOUNT_SVC.myAccount(new GerritCallback<Account>() {
+      public void onSuccess(final Account result) {
+        if (isAttached()) {
+          display(result);
+        }
+      }
+    });
+  }
+
+  private void initUI() {
+    if (LocaleInfo.getCurrentLocale().isRTL()) {
+      labelIdx = 1;
+      fieldIdx = 0;
+    } else {
+      labelIdx = 0;
+      fieldIdx = 1;
+    }
+
+    info = new Grid(4, 2);
+    info.setStyleName("gerrit-InfoBlock");
+    info.addStyleName("gerrit-AccountInfoBlock");
+    add(info);
+
+    infoRow(0, Util.C.fullName());
+    infoRow(1, Util.C.preferredEmail());
+    infoRow(2, Util.C.sshUserName());
+    infoRow(3, Util.C.registeredOn());
+
+    final CellFormatter fmt = info.getCellFormatter();
+    fmt.addStyleName(0, 0, "topmost");
+    fmt.addStyleName(0, 1, "topmost");
+    fmt.addStyleName(2, 0, "bottomheader");
+
+    prefsPanel = new PreferencePanel();
+
+    tabTokens = new ArrayList<String>();
+    tabs = new TabPanel();
+    tabs.setWidth("98%");
+    add(tabs);
+
+    tabs.add(prefsPanel, Util.C.tabPreferences());
+    tabTokens.add(Link.SETTINGS);
+
+    tabs.add(new LazyTabChild<ContactPanel>() {
+      @Override
+      protected ContactPanel create() {
+        return new ContactPanel(AccountSettings.this);
+      }
+    }, Util.C.tabContactInformation());
+    tabTokens.add(Link.SETTINGS_CONTACT);
+
+    tabs.add(new LazyTabChild<SshKeyPanel>() {
+      @Override
+      protected SshKeyPanel create() {
+        return new SshKeyPanel();
+      }
+    }, Util.C.tabSshKeys());
+    tabTokens.add(Link.SETTINGS_SSHKEYS);
+
+    switch (Common.getGerritConfig().getLoginType()) {
+      case OPENID:
+        tabs.add(new LazyTabChild<ExternalIdPanel>() {
+          @Override
+          protected ExternalIdPanel create() {
+            return new ExternalIdPanel();
+          }
+        }, Util.C.tabWebIdentities());
+        tabTokens.add(Link.SETTINGS_WEBIDENT);
+        break;
+    }
+
+    if (Common.getGerritConfig().isUseContributorAgreements()) {
+      tabs.add(new LazyTabChild<AgreementPanel>() {
+        @Override
+        protected AgreementPanel create() {
+          return new AgreementPanel();
+        }
+      }, Util.C.tabAgreements());
+      tabTokens.add(Link.SETTINGS_AGREEMENTS);
+    }
+
+    tabs.addTabListener(new TabListener() {
+      public boolean onBeforeTabSelected(SourcesTabEvents sender, int tabIndex) {
+        return true;
+      }
+
+      public void onTabSelected(SourcesTabEvents sender, int tabIndex) {
+        Gerrit.display(tabTokens.get(tabIndex), false);
+      }
+    });
+  }
+
+  private void infoRow(final int row, final String name) {
+    info.setText(row, labelIdx, name);
+    info.getCellFormatter().addStyleName(row, 0, "header");
+  }
+
+  void display(final Account account) {
+    info.setText(0, fieldIdx, account.getFullName());
+    info.setText(1, fieldIdx, account.getPreferredEmail());
+    info.setText(2, fieldIdx, account.getSshUserName());
+    info.setText(3, fieldIdx, mediumFormat(account.getRegisteredOn()));
+    prefsPanel.display(account);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AgreementInfo.java b/appjar/src/main/java/com/google/gerrit/client/account/AgreementInfo.java
new file mode 100644
index 0000000..fc74546
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AgreementInfo.java
@@ -0,0 +1,52 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.data.AccountInfoCacheFactory;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountAgreement;
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class AgreementInfo {
+  protected AccountInfoCache accounts;
+  protected List<AccountAgreement> accepted;
+  protected Map<ContributorAgreement.Id, ContributorAgreement> agreements;
+
+  public AgreementInfo() {
+  }
+
+  public void load(final Account.Id me, final ReviewDb db) throws OrmException {
+    final AccountInfoCacheFactory acc = new AccountInfoCacheFactory(db);
+
+    accepted = db.accountAgreements().byAccount(me).toList();
+    agreements = new HashMap<ContributorAgreement.Id, ContributorAgreement>();
+    for (final AccountAgreement a : accepted) {
+      acc.want(a.getReviewedBy());
+      if (!agreements.containsKey(a.getAgreementId())) {
+        agreements.put(a.getAgreementId(), db.contributorAgreements().get(
+            a.getAgreementId()));
+      }
+    }
+
+    accounts = acc.create();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/AgreementPanel.java b/appjar/src/main/java/com/google/gerrit/client/account/AgreementPanel.java
new file mode 100644
index 0000000..a6f7bf5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/AgreementPanel.java
@@ -0,0 +1,142 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.AccountAgreement;
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gwt.user.client.ui.Anchor;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Hyperlink;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+class AgreementPanel extends Composite {
+  private AgreementTable agreements;
+
+  AgreementPanel() {
+    final FlowPanel body = new FlowPanel();
+
+    agreements = new AgreementTable();
+    body.add(agreements);
+    body.add(new Hyperlink(Util.C.newAgreement(), Link.SETTINGS_NEW_AGREEMENT));
+
+    initWidget(body);
+  }
+
+  @Override
+  public void onLoad() {
+    super.onLoad();
+    Util.ACCOUNT_SVC.myAgreements(new GerritCallback<AgreementInfo>() {
+      public void onSuccess(final AgreementInfo result) {
+        agreements.display(result);
+        agreements.finishDisplay(true);
+      }
+    });
+  }
+
+  private class AgreementTable extends FancyFlexTable<AccountAgreement> {
+    AgreementTable() {
+      table.setText(0, 1, Util.C.agreementStatus());
+      table.setText(0, 2, Util.C.agreementName());
+      table.setText(0, 3, Util.C.agreementDescription());
+      table.setText(0, 4, Util.C.agreementAccepted());
+
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          if (getRowItem(row) != null) {
+            movePointerTo(row);
+          }
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      for (int c = 1; c <= 4; c++) {
+        fmt.addStyleName(0, c, S_DATA_HEADER);
+      }
+    }
+
+    @Override
+    protected Object getRowItemKey(final AccountAgreement item) {
+      return item.getKey();
+    }
+
+    void display(final AgreementInfo result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final AccountAgreement k : result.accepted) {
+        addOne(result, k);
+      }
+    }
+
+    void addOne(final AgreementInfo info, final AccountAgreement k) {
+      final int row = table.getRowCount();
+      table.insertRow(row);
+      applyDataRowStyle(row);
+
+      final ContributorAgreement cla = info.agreements.get(k.getAgreementId());
+      final String statusName;
+      if (cla == null || !cla.isActive()) {
+        statusName = Util.C.agreementStatus_EXPIRED();
+      } else {
+        switch (k.getStatus()) {
+          case NEW:
+            statusName = Util.C.agreementStatus_NEW();
+            break;
+          case REJECTED:
+            statusName = Util.C.agreementStatus_REJECTED();
+            break;
+          case VERIFIED:
+            statusName = Util.C.agreementStatus_VERIFIED();
+            break;
+          default:
+            statusName = k.getStatus().name();
+        }
+      }
+      table.setText(row, 1, statusName);
+
+      if (cla == null) {
+        table.setText(row, 2, "");
+        table.setText(row, 3, "");
+      } else {
+        final String url = cla.getAgreementUrl();
+        if (url != null && url.length() > 0) {
+          final Anchor a = new Anchor(cla.getShortName(), url);
+          a.setTarget("_blank");
+          table.setWidget(row, 2, a);
+        } else {
+          table.setText(row, 2, cla.getShortName());
+        }
+        table.setText(row, 3, cla.getShortDescription());
+      }
+      table.setHTML(row, 4, FormatUtil.mediumFormat(k.getAcceptedOn())
+          + "<br>\n" + FormatUtil.mediumFormat(k.getReviewedOn()));
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      for (int c = 1; c <= 4; c++) {
+        fmt.addStyleName(row, c, S_DATA_CELL);
+      }
+      fmt.addStyleName(row, 4, "C_LAST_UPDATE");
+
+      setRowItem(row, k);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/ContactPanel.java b/appjar/src/main/java/com/google/gerrit/client/account/ContactPanel.java
new file mode 100644
index 0000000..faf936f
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/ContactPanel.java
@@ -0,0 +1,258 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.reviewdb.ContactInformation;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.TextSaveButtonListener;
+import com.google.gwt.i18n.client.LocaleInfo;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.TextArea;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+class ContactPanel extends Composite {
+  private final AccountSettings parentScreen;
+  private int labelIdx, fieldIdx;
+  private Grid info;
+
+  private String currentEmail;
+  private boolean haveAccount;
+  private boolean haveEmails;
+
+  private TextBox nameTxt;
+  private ListBox emailPick;
+  private TextArea addressTxt;
+  private TextBox countryTxt;
+  private TextBox phoneTxt;
+  private TextBox faxTxt;
+  private Button save;
+
+  ContactPanel() {
+    this(null);
+  }
+
+  ContactPanel(final AccountSettings parent) {
+    parentScreen = parent;
+
+    if (LocaleInfo.getCurrentLocale().isRTL()) {
+      labelIdx = 1;
+      fieldIdx = 0;
+    } else {
+      labelIdx = 0;
+      fieldIdx = 1;
+    }
+
+    nameTxt = new TextBox();
+    nameTxt.setVisibleLength(60);
+
+    emailPick = new ListBox();
+
+    addressTxt = new TextArea();
+    addressTxt.setVisibleLines(4);
+    addressTxt.setCharacterWidth(60);
+
+    countryTxt = new TextBox();
+    countryTxt.setVisibleLength(40);
+    countryTxt.setMaxLength(40);
+
+    phoneTxt = new TextBox();
+    phoneTxt.setVisibleLength(30);
+    phoneTxt.setMaxLength(30);
+
+    faxTxt = new TextBox();
+    faxTxt.setVisibleLength(30);
+    faxTxt.setMaxLength(30);
+
+    final FlowPanel body = new FlowPanel();
+    info = new Grid(6, 2);
+    info.setStyleName("gerrit-InfoBlock");
+    info.addStyleName("gerrit-AccountInfoBlock");
+    body.add(info);
+
+    row(0, Util.C.contactFieldFullName(), nameTxt);
+    row(1, Util.C.contactFieldEmail(), emailPick);
+    row(2, Util.C.contactFieldAddress(), addressTxt);
+    row(3, Util.C.contactFieldCountry(), countryTxt);
+    row(4, Util.C.contactFieldPhone(), phoneTxt);
+    row(5, Util.C.contactFieldFax(), faxTxt);
+
+    final CellFormatter fmt = info.getCellFormatter();
+    fmt.addStyleName(0, 0, "topmost");
+    fmt.addStyleName(0, 1, "topmost");
+    fmt.addStyleName(5, 0, "bottomheader");
+
+    save = new Button(Util.C.buttonSaveContact());
+    save.setEnabled(false);
+    save.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        doSave();
+      }
+    });
+    body.add(save);
+
+    final TextSaveButtonListener sbl = new TextSaveButtonListener(save);
+    nameTxt.addKeyboardListener(sbl);
+    emailPick.addChangeListener(new ChangeListener() {
+      public void onChange(Widget sender) {
+        save.setEnabled(true);
+      }
+    });
+    addressTxt.addKeyboardListener(sbl);
+    countryTxt.addKeyboardListener(sbl);
+    phoneTxt.addKeyboardListener(sbl);
+    faxTxt.addKeyboardListener(sbl);
+
+    initWidget(body);
+  }
+
+  void hideSaveButton() {
+    save.setVisible(false);
+  }
+
+  @Override
+  public void onLoad() {
+    super.onLoad();
+    display(Gerrit.getUserAccount());
+
+    emailPick.clear();
+    emailPick.setEnabled(false);
+
+    haveAccount = false;
+    haveEmails = false;
+
+    Util.ACCOUNT_SVC.myAccount(new GerritCallback<Account>() {
+      public void onSuccess(final Account result) {
+        if (!isAttached()) {
+          return;
+        }
+        display(result);
+        haveAccount = true;
+        postLoad();
+      }
+    });
+    Util.ACCOUNT_SEC
+        .myExternalIds(new GerritCallback<List<AccountExternalId>>() {
+          public void onSuccess(final List<AccountExternalId> result) {
+            if (!isAttached()) {
+              return;
+            }
+            final Set<String> emails = new HashSet<String>();
+            for (final AccountExternalId i : result) {
+              if (i.getEmailAddress() != null
+                  && i.getEmailAddress().length() > 0) {
+                emails.add(i.getEmailAddress());
+              }
+            }
+            final List<String> addrs = new ArrayList<String>(emails);
+            Collections.sort(addrs);
+            for (String s : addrs) {
+              emailPick.addItem(s);
+            }
+            haveEmails = true;
+            postLoad();
+          }
+        });
+  }
+
+  private void postLoad() {
+    if (haveAccount && haveEmails) {
+      if (currentEmail != null) {
+        boolean found = false;
+        for (int i = 0; i < emailPick.getItemCount(); i++) {
+          if (currentEmail.equals(emailPick.getValue(i))) {
+            emailPick.setSelectedIndex(i);
+            found = true;
+            break;
+          }
+        }
+        if (!found) {
+          emailPick.addItem(currentEmail);
+          emailPick.setSelectedIndex(emailPick.getItemCount() - 1);
+        }
+      }
+      emailPick.setEnabled(true);
+    }
+  }
+
+  private void row(final int row, final String name, final Widget field) {
+    info.setText(row, labelIdx, name);
+    info.setWidget(row, fieldIdx, field);
+    info.getCellFormatter().addStyleName(row, 0, "header");
+  }
+
+  private void display(final Account userAccount) {
+    ContactInformation info = userAccount.getContactInformation();
+    if (info == null) {
+      info = new ContactInformation();
+    }
+
+    currentEmail = userAccount.getPreferredEmail();
+    nameTxt.setText(userAccount.getFullName());
+    addressTxt.setText(info.getAddress());
+    countryTxt.setText(info.getCountry());
+    phoneTxt.setText(info.getPhoneNumber());
+    faxTxt.setText(info.getFaxNumber());
+    save.setEnabled(false);
+  }
+
+  void doSave() {
+    final String newName = nameTxt.getText();
+    final String newEmail;
+    if (emailPick.isEnabled() && emailPick.getSelectedIndex() >= 0) {
+      newEmail = emailPick.getValue(emailPick.getSelectedIndex());
+    } else {
+      newEmail = currentEmail;
+    }
+
+    final ContactInformation info = new ContactInformation();
+    info.setAddress(addressTxt.getText());
+    info.setCountry(countryTxt.getText());
+    info.setPhoneNumber(phoneTxt.getText());
+    info.setFaxNumber(faxTxt.getText());
+
+    Util.ACCOUNT_SEC.updateContact(newName, newEmail, info,
+        new GerritCallback<VoidResult>() {
+          public void onSuccess(final VoidResult result) {
+            save.setEnabled(false);
+            final Account me = Gerrit.getUserAccount();
+            me.setFullName(newName);
+            me.setPreferredEmail(newEmail);
+            me.setContactInformation(info);
+            Gerrit.refreshMenuBar();
+            if (parentScreen != null) {
+              parentScreen.display(me);
+            }
+          }
+        });
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/ExternalIdPanel.java b/appjar/src/main/java/com/google/gerrit/client/account/ExternalIdPanel.java
new file mode 100644
index 0000000..f410900
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/ExternalIdPanel.java
@@ -0,0 +1,131 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.SignInDialog;
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+import java.util.List;
+
+class ExternalIdPanel extends Composite {
+  private IdTable identites;
+
+  private Button linkIdentity;
+
+  ExternalIdPanel() {
+    final FlowPanel body = new FlowPanel();
+
+    identites = new IdTable();
+    body.add(identites);
+
+    linkIdentity = new Button(Util.C.buttonLinkIdentity());
+    linkIdentity.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        doLinkIdentity();
+      }
+    });
+    body.add(linkIdentity);
+
+    initWidget(body);
+  }
+
+  void doLinkIdentity() {
+    final SignInDialog d =
+        new SignInDialog(SignInDialog.Mode.LINK_IDENTIY,
+            new GerritCallback<Object>() {
+              public void onSuccess(final Object result) {
+                refresh();
+              }
+            });
+    d.center();
+  }
+
+  @Override
+  public void onLoad() {
+    super.onLoad();
+    refresh();
+  }
+
+  private void refresh() {
+    Util.ACCOUNT_SEC
+        .myExternalIds(new GerritCallback<List<AccountExternalId>>() {
+          public void onSuccess(final List<AccountExternalId> result) {
+            identites.display(result);
+            identites.finishDisplay(true);
+          }
+        });
+  }
+
+  private class IdTable extends FancyFlexTable<AccountExternalId> {
+    IdTable() {
+      table.setText(0, 1, Util.C.webIdLastUsed());
+      table.setText(0, 2, Util.C.webIdEmail());
+      table.setText(0, 3, Util.C.webIdIdentity());
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          movePointerTo(row);
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(0, 1, S_DATA_HEADER);
+      fmt.addStyleName(0, 2, S_DATA_HEADER);
+      fmt.addStyleName(0, 3, S_DATA_HEADER);
+    }
+
+    @Override
+    protected Object getRowItemKey(final AccountExternalId item) {
+      return item.getKey();
+    }
+
+    void display(final List<AccountExternalId> result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final AccountExternalId k : result) {
+        addOneId(k);
+      }
+    }
+
+    void addOneId(final AccountExternalId k) {
+      final int row = table.getRowCount();
+      table.insertRow(row);
+      applyDataRowStyle(row);
+
+      table.setText(row, 1, FormatUtil.mediumFormat(k.getLastUsedOn()));
+      table.setText(row, 2, k.getEmailAddress());
+      table.setText(row, 3, k.getExternalId());
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(row, 1, S_DATA_CELL);
+      fmt.addStyleName(row, 1, "C_LAST_UPDATE");
+      fmt.addStyleName(row, 2, S_DATA_CELL);
+      fmt.addStyleName(row, 3, S_DATA_CELL);
+
+      setRowItem(row, k);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/LoginService.java b/appjar/src/main/java/com/google/gerrit/client/account/LoginService.java
new file mode 100644
index 0000000..8c89cba
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/LoginService.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.CallbackHandle;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+
+/** Works with the LoginServlet to connect to accounts. */
+public interface LoginService extends RemoteJsonService {
+  /**
+   * Create a callback for LoginServlet to call post sign in.
+   * <p>
+   * The LoginResult.getStatus() is {@link SignInResult.Status#CANCEL} is null
+   * if the sign in was aborted by the user (or failed too many times).
+   */
+  CallbackHandle<SignInResult> signIn(AsyncCallback<SignInResult> c);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/NewAgreementScreen.java b/appjar/src/main/java/com/google/gerrit/client/account/NewAgreementScreen.java
new file mode 100644
index 0000000..1e3a479
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/NewAgreementScreen.java
@@ -0,0 +1,277 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.ErrorDialog;
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.AccountAgreement;
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountScreen;
+import com.google.gerrit.client.ui.TextSaveButtonListener;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.FormPanel;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.RadioButton;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class NewAgreementScreen extends AccountScreen {
+  private Set<ContributorAgreement.Id> mySigned;
+  private List<ContributorAgreement> available;
+  private ContributorAgreement current;
+
+  private VerticalPanel radios;
+
+  private Panel agreementGroup;
+  private HTML agreementHtml;
+
+  private Panel contactGroup;
+  private ContactPanel contactPanel;
+
+  private Panel finalGroup;
+  private TextBox yesIAgreeBox;
+  private Button submit;
+
+  public NewAgreementScreen() {
+    super(Util.C.newAgreement());
+  }
+
+  @Override
+  public void onLoad() {
+    if (radios == null) {
+      initUI();
+    }
+
+    mySigned = null;
+    available = null;
+    current = null;
+
+    agreementGroup.setVisible(false);
+    contactGroup.setVisible(false);
+    finalGroup.setVisible(false);
+    super.onLoad();
+
+    Util.ACCOUNT_SVC.myAgreements(new GerritCallback<AgreementInfo>() {
+      public void onSuccess(AgreementInfo result) {
+        if (isAttached()) {
+          mySigned = new HashSet<ContributorAgreement.Id>();
+          for (AccountAgreement a : result.accepted) {
+            mySigned.add(a.getAgreementId());
+          }
+          postRPC();
+        }
+      }
+    });
+    Gerrit.SYSTEM_SVC
+        .contributorAgreements(new GerritCallback<List<ContributorAgreement>>() {
+          public void onSuccess(final List<ContributorAgreement> result) {
+            if (isAttached()) {
+              available = result;
+              postRPC();
+            }
+          }
+        });
+  }
+
+  private void initUI() {
+    Label hdr;
+    final FlowPanel formBody = new FlowPanel();
+    radios = new VerticalPanel();
+    formBody.add(radios);
+
+    agreementGroup = new FlowPanel();
+    hdr = new Label(Util.C.newAgreementReviewLegalHeading());
+    hdr.setStyleName("gerrit-SmallHeading");
+    agreementGroup.add(hdr);
+
+    agreementHtml = new HTML();
+    agreementHtml.setStyleName("gerrit-ContributorAgreement-Legal");
+    agreementGroup.add(agreementHtml);
+    formBody.add(agreementGroup);
+
+    contactGroup = new FlowPanel();
+    hdr = new Label(Util.C.newAgreementReviewContactHeading());
+    hdr.setStyleName("gerrit-SmallHeading");
+    contactGroup.add(hdr);
+    formBody.add(contactGroup);
+
+    finalGroup = new VerticalPanel();
+    hdr = new Label(Util.C.newAgreementCompleteHeading());
+    hdr.setStyleName("gerrit-SmallHeading");
+    finalGroup.add(hdr);
+    final FlowPanel fp = new FlowPanel();
+    yesIAgreeBox = new TextBox();
+    yesIAgreeBox.setVisibleLength(Util.C.newAgreementIAGREE().length() + 8);
+    yesIAgreeBox.setMaxLength(Util.C.newAgreementIAGREE().length());
+    fp.add(yesIAgreeBox);
+    fp.add(new InlineLabel(Util.M.enterIAGREE(Util.C.newAgreementIAGREE())));
+    finalGroup.add(fp);
+    submit = new Button(Util.C.buttonSubmitNewAgreement());
+    submit.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        doSign();
+      }
+    });
+    finalGroup.add(submit);
+    formBody.add(finalGroup);
+    new TextSaveButtonListener(yesIAgreeBox, submit);
+
+    final FormPanel form = new FormPanel();
+    form.add(formBody);
+    add(form);
+  }
+
+  private void postRPC() {
+    if (mySigned != null && available != null) {
+      display();
+    }
+  }
+
+  private void display() {
+    current = null;
+    agreementGroup.setVisible(false);
+    contactGroup.setVisible(false);
+    finalGroup.setVisible(false);
+    radios.clear();
+
+    final Label hdr;
+    if (available.isEmpty()) {
+      hdr = new Label(Util.C.newAgreementNoneAvailable());
+    } else {
+      hdr = new Label(Util.C.newAgreementSelectTypeHeading());
+    }
+    hdr.setStyleName("gerrit-SmallHeading");
+    radios.add(hdr);
+
+    for (final ContributorAgreement cla : available) {
+      final RadioButton r = new RadioButton("cla_id", cla.getShortName());
+      r.addStyleName("gerrit-ContributorAgreement-Button");
+      radios.add(r);
+
+      if (mySigned.contains(cla.getId())) {
+        r.setEnabled(false);
+        final Label l = new Label(Util.C.newAgreementAlreadySubmitted());
+        l.setStyleName("gerrit-ContributorAgreement-AlreadySubmitted");
+        radios.add(l);
+      } else {
+        r.addClickListener(new ClickListener() {
+          public void onClick(final Widget sender) {
+            showCLA(cla);
+          }
+        });
+      }
+
+      if (cla.getShortDescription() != null
+          && !cla.getShortDescription().equals("")) {
+        final Label l = new Label(cla.getShortDescription());
+        l.setStyleName("gerrit-ContributorAgreement-ShortDescription");
+        radios.add(l);
+      }
+    }
+  }
+
+  private void doSign() {
+    submit.setEnabled(false);
+
+    if (current == null
+        || !Util.C.newAgreementIAGREE()
+            .equalsIgnoreCase(yesIAgreeBox.getText())) {
+      yesIAgreeBox.setText("");
+      yesIAgreeBox.setFocus(true);
+      return;
+    }
+
+    if (contactGroup.isVisible()) {
+      contactPanel.doSave();
+    }
+    Util.ACCOUNT_SEC.enterAgreement(current.getId(),
+        new GerritCallback<VoidResult>() {
+          public void onSuccess(final VoidResult result) {
+            History.newItem(Link.SETTINGS_AGREEMENTS);
+          }
+
+          @Override
+          public void onFailure(final Throwable caught) {
+            yesIAgreeBox.setText("");
+            super.onFailure(caught);
+          }
+        });
+  }
+
+  private void showCLA(final ContributorAgreement cla) {
+    current = cla;
+    String url = cla.getAgreementUrl();
+    if (url != null && url.length() > 0) {
+      agreementGroup.setVisible(true);
+      agreementHtml.setText(Gerrit.C.rpcStatusLoading());
+      if (!url.startsWith("http:") && !url.startsWith("https:")) {
+        url = GWT.getModuleBaseURL() + url;
+      }
+      final RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
+      rb.setCallback(new RequestCallback() {
+        public void onError(Request request, Throwable exception) {
+          new ErrorDialog(exception).center();
+        }
+
+        public void onResponseReceived(Request request, Response response) {
+          final String ct = response.getHeader("Content-Type");
+          if (response.getStatusCode() == 200 && ct != null
+              && (ct.equals("text/html") || ct.startsWith("text/html;"))) {
+            agreementHtml.setHTML(response.getText());
+          } else {
+            new ErrorDialog(response.getStatusText()).center();
+          }
+        }
+      });
+      try {
+        rb.send();
+      } catch (RequestException e) {
+        new ErrorDialog(e).show();
+      }
+    } else {
+      agreementGroup.setVisible(false);
+    }
+
+    if (contactPanel == null && cla.isRequireContactInformation()) {
+      contactPanel = new ContactPanel();
+      contactPanel.hideSaveButton();
+      contactGroup.add(contactPanel);
+    }
+    contactGroup.setVisible(cla.isRequireContactInformation());
+    finalGroup.setVisible(true);
+    yesIAgreeBox.setText("");
+    submit.setEnabled(false);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/PreferencePanel.java b/appjar/src/main/java/com/google/gerrit/client/account/PreferencePanel.java
new file mode 100644
index 0000000..3207536
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/PreferencePanel.java
@@ -0,0 +1,115 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gwt.i18n.client.LocaleInfo;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+class PreferencePanel extends Composite {
+  private ListBox defaultContext;
+  private short oldDefaultContext;
+  private ProjectWatchPanel watchPanel;
+
+  PreferencePanel() {
+    final FlowPanel body = new FlowPanel();
+
+    defaultContext = new ListBox();
+    for (final short v : Account.CONTEXT_CHOICES) {
+      defaultContext.addItem(Util.M.lines(v), String.valueOf(v));
+    }
+    defaultContext.addChangeListener(new ChangeListener() {
+      public void onChange(Widget sender) {
+        final int idx = defaultContext.getSelectedIndex();
+        if (idx < 0) {
+          return;
+        }
+
+        final short newLines = Short.parseShort(defaultContext.getValue(idx));
+        if (newLines == oldDefaultContext) {
+          return;
+        }
+
+        Util.ACCOUNT_SVC.changeDefaultContext(newLines,
+            new GerritCallback<VoidResult>() {
+              public void onSuccess(final VoidResult result) {
+                oldDefaultContext = newLines;
+                Gerrit.getUserAccount().setDefaultContext(newLines);
+              }
+
+              @Override
+              public void onFailure(final Throwable caught) {
+                setDefaultContext(oldDefaultContext);
+                super.onFailure(caught);
+              }
+            });
+      }
+    });
+
+    final int labelIdx, fieldIdx;
+    if (LocaleInfo.getCurrentLocale().isRTL()) {
+      labelIdx = 1;
+      fieldIdx = 0;
+    } else {
+      labelIdx = 0;
+      fieldIdx = 1;
+    }
+    final Grid formGrid = new Grid(1, 2);
+
+    formGrid.setText(0, labelIdx, Util.C.defaultContext());
+    formGrid.setWidget(0, fieldIdx, defaultContext);
+
+    body.add(formGrid);
+
+    {
+      final FlowPanel fp = new FlowPanel();
+      fp.setStyleName("gerrit-WatchedProjectPanel");
+
+      final Label hdr = new Label(Util.C.watchedProjects());
+      hdr.setStyleName("gerrit-SmallHeading");
+      fp.add(hdr);
+
+      watchPanel = new ProjectWatchPanel();
+      fp.add(watchPanel);
+      body.add(fp);
+    }
+
+    initWidget(body);
+  }
+
+  void display(final Account account) {
+    setDefaultContext(account.getDefaultContext());
+  }
+
+  private void setDefaultContext(final short lines) {
+    for (int i = 0; i < Account.CONTEXT_CHOICES.length; i++) {
+      if (Account.CONTEXT_CHOICES[i] == lines) {
+        oldDefaultContext = lines;
+        defaultContext.setSelectedIndex(i);
+        return;
+      }
+    }
+    setDefaultContext(Account.DEFAULT_CONTEXT);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/ProjectWatchPanel.java b/appjar/src/main/java/com/google/gerrit/client/account/ProjectWatchPanel.java
new file mode 100644
index 0000000..f0d6f3c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/ProjectWatchPanel.java
@@ -0,0 +1,267 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.reviewdb.AccountProjectWatch;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gerrit.client.ui.ProjectNameSuggestOracle;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.FocusListenerAdapter;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.SuggestBox;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.HashSet;
+import java.util.List;
+
+class ProjectWatchPanel extends Composite {
+  private WatchTable watches;
+
+  private Button addNew;
+  private SuggestBox nameTxt;
+  private Button delSel;
+
+  ProjectWatchPanel() {
+    final FlowPanel body = new FlowPanel();
+
+    {
+      final FlowPanel fp = new FlowPanel();
+      fp.setStyleName("gerrit-ProjectWatchPanel-AddPanel");
+
+      final TextBox box = new TextBox();
+      nameTxt = new SuggestBox(new ProjectNameSuggestOracle(), box);
+      box.setVisibleLength(50);
+      box.setText(Util.C.defaultProjectName());
+      box.addStyleName("gerrit-InputFieldTypeHint");
+      box.addFocusListener(new FocusListenerAdapter() {
+        @Override
+        public void onFocus(Widget sender) {
+          if (Util.C.defaultProjectName().equals(box.getText())) {
+            box.setText("");
+            box.removeStyleName("gerrit-InputFieldTypeHint");
+          }
+        }
+
+        @Override
+        public void onLostFocus(Widget sender) {
+          if ("".equals(box.getText())) {
+            box.setText(Util.C.defaultProjectName());
+            box.addStyleName("gerrit-InputFieldTypeHint");
+          }
+        }
+      });
+      fp.add(nameTxt);
+
+      addNew = new Button(Util.C.buttonWatchProject());
+      addNew.addClickListener(new ClickListener() {
+        public void onClick(final Widget sender) {
+          doAddNew();
+        }
+      });
+      fp.add(addNew);
+      body.add(fp);
+    }
+
+    watches = new WatchTable();
+    body.add(watches);
+    {
+      final FlowPanel fp = new FlowPanel();
+      delSel = new Button(Util.C.buttonDeleteSshKey());
+      delSel.addClickListener(new ClickListener() {
+        public void onClick(final Widget sender) {
+          watches.deleteChecked();
+        }
+      });
+      fp.add(delSel);
+      body.add(fp);
+    }
+
+    initWidget(body);
+  }
+
+  void doAddNew() {
+    final String projectName = nameTxt.getText();
+    if (projectName == null || projectName.length() == 0
+        || Util.C.defaultProjectName().equals(projectName)) {
+      return;
+    }
+
+    if (watches.moveToExistingProject(projectName)) {
+      nameTxt.setText("");
+      return;
+    }
+
+    addNew.setEnabled(false);
+    Util.ACCOUNT_SVC.addProjectWatch(projectName,
+        new GerritCallback<AccountProjectWatchInfo>() {
+          public void onSuccess(final AccountProjectWatchInfo result) {
+            addNew.setEnabled(true);
+            nameTxt.setText("");
+            watches.insertWatch(result);
+          }
+
+          @Override
+          public void onFailure(final Throwable caught) {
+            addNew.setEnabled(true);
+            super.onFailure(caught);
+          }
+        });
+  }
+
+  @Override
+  public void onLoad() {
+    super.onLoad();
+    Util.ACCOUNT_SVC
+        .myProjectWatch(new GerritCallback<List<AccountProjectWatchInfo>>() {
+          public void onSuccess(final List<AccountProjectWatchInfo> result) {
+            watches.display(result);
+            watches.finishDisplay(true);
+          }
+        });
+  }
+
+  private class WatchTable extends FancyFlexTable<AccountProjectWatchInfo> {
+    WatchTable() {
+      table.setText(0, 2, com.google.gerrit.client.changes.Util.C
+          .changeTableColumnProject());
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          if (cell != 1 && getRowItem(row) != null) {
+            movePointerTo(row);
+          }
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(0, 1, S_ICON_HEADER);
+      fmt.addStyleName(0, 2, S_DATA_HEADER);
+    }
+
+    @Override
+    protected Object getRowItemKey(final AccountProjectWatchInfo item) {
+      return item.getWatch().getKey();
+    }
+
+    @Override
+    protected boolean onKeyPress(final char keyCode, final int modifiers) {
+      if (super.onKeyPress(keyCode, modifiers)) {
+        return true;
+      }
+      if (modifiers == 0) {
+        switch (keyCode) {
+          case 's':
+          case 'c':
+            toggleCurrentRow();
+            return true;
+        }
+      }
+      return false;
+    }
+
+    @Override
+    protected void onOpenItem(final AccountProjectWatchInfo item) {
+      toggleCurrentRow();
+    }
+
+    private void toggleCurrentRow() {
+      final CheckBox cb = (CheckBox) table.getWidget(getCurrentRow(), 1);
+      cb.setChecked(!cb.isChecked());
+    }
+
+    void deleteChecked() {
+      final HashSet<AccountProjectWatch.Key> ids =
+          new HashSet<AccountProjectWatch.Key>();
+      for (int row = 1; row < table.getRowCount(); row++) {
+        final AccountProjectWatchInfo k = getRowItem(row);
+        if (k != null && ((CheckBox) table.getWidget(row, 1)).isChecked()) {
+          ids.add(k.getWatch().getKey());
+        }
+      }
+      if (!ids.isEmpty()) {
+        Util.ACCOUNT_SVC.deleteProjectWatches(ids,
+            new GerritCallback<VoidResult>() {
+              public void onSuccess(final VoidResult result) {
+                for (int row = 1; row < table.getRowCount();) {
+                  final AccountProjectWatchInfo k = getRowItem(row);
+                  if (k != null && ids.contains(k.getWatch().getKey())) {
+                    table.removeRow(row);
+                  } else {
+                    row++;
+                  }
+                }
+              }
+            });
+      }
+    }
+
+    boolean moveToExistingProject(final String projectName) {
+      for (int row = 1; row < table.getRowCount(); row++) {
+        final AccountProjectWatchInfo i = getRowItem(row);
+        if (i != null && i.getProject().getName().equals(projectName)) {
+          movePointerTo(row);
+          return true;
+        }
+      }
+      return false;
+    }
+
+    void insertWatch(final AccountProjectWatchInfo k) {
+      final String newName = k.getProject().getName();
+      int row = 1;
+      for (; row < table.getRowCount(); row++) {
+        final AccountProjectWatchInfo i = getRowItem(row);
+        if (i != null && i.getProject().getName().compareTo(newName) >= 0) {
+          break;
+        }
+      }
+
+      table.insertRow(row);
+      applyDataRowStyle(row);
+      populate(row, k);
+    }
+
+    void display(final List<AccountProjectWatchInfo> result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final AccountProjectWatchInfo k : result) {
+        final int row = table.getRowCount();
+        table.insertRow(row);
+        applyDataRowStyle(row);
+        populate(row, k);
+      }
+    }
+
+    void populate(final int row, final AccountProjectWatchInfo k) {
+      table.setWidget(row, 1, new CheckBox());
+      table.setText(row, 2, k.getProject().getName());
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(row, 1, S_ICON_CELL);
+      fmt.addStyleName(row, 2, S_DATA_CELL);
+
+      setRowItem(row, k);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/SignInResult.java b/appjar/src/main/java/com/google/gerrit/client/account/SignInResult.java
new file mode 100644
index 0000000..b1efe9d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/SignInResult.java
@@ -0,0 +1,55 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.reviewdb.Account;
+
+/** Result from a sign-in attempt via the LoginServlet. */
+public class SignInResult {
+  public static enum Status {
+    /** The user canceled the sign-in and wasn't able to complete it */
+    @SuppressWarnings("hiding")
+    CANCEL,
+
+    /** The sign-in was successful and we have the account data */
+    SUCCESS,
+  }
+
+  /** Singleton representing {@link Status#CANCEL}. */
+  public static final SignInResult CANCEL =
+      new SignInResult(Status.CANCEL, null);
+
+  protected Status status;
+  protected Account account;
+
+  protected SignInResult() {
+  }
+
+  /** Create a new result. */
+  public SignInResult(final Status s, final Account a) {
+    status = s;
+    account = a;
+  }
+
+  /** The status of the login attempt */
+  public Status getStatus() {
+    return status;
+  }
+
+  /** The account data; only if {@link #getStatus()} is {@link Status#SUCCESS} */
+  public Account getAccount() {
+    return account;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/SshKeyPanel.java b/appjar/src/main/java/com/google/gerrit/client/account/SshKeyPanel.java
new file mode 100644
index 0000000..a75ff49
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/SshKeyPanel.java
@@ -0,0 +1,245 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.reviewdb.AccountSshKey;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.TextArea;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.HashSet;
+import java.util.List;
+
+class SshKeyPanel extends Composite {
+  private SshKeyTable keys;
+
+  private Button addNew;
+  private TextArea addTxt;
+  private Button delSel;
+
+  SshKeyPanel() {
+    final FlowPanel body = new FlowPanel();
+
+    keys = new SshKeyTable();
+    body.add(keys);
+    {
+      final FlowPanel fp = new FlowPanel();
+      delSel = new Button(Util.C.buttonDeleteSshKey());
+      delSel.addClickListener(new ClickListener() {
+        public void onClick(final Widget sender) {
+          keys.deleteChecked();
+        }
+      });
+      fp.add(delSel);
+      body.add(fp);
+    }
+
+    {
+      final VerticalPanel fp = new VerticalPanel();
+      fp.setStyleName("gerrit-AddSshKeyPanel");
+      final Label hdr = new Label(Util.C.addSshKeyPanelHeader());
+      hdr.setStyleName("gerrit-SmallHeading");
+      fp.add(hdr);
+      fp.add(new HTML(Util.C.addSshKeyHelp()));
+
+      addTxt = new TextArea();
+      addTxt.setVisibleLines(12);
+      addTxt.setCharacterWidth(80);
+      fp.add(addTxt);
+
+      addNew = new Button(Util.C.buttonAddSshKey());
+      addNew.addClickListener(new ClickListener() {
+        public void onClick(final Widget sender) {
+          doAddNew();
+        }
+      });
+      fp.add(addNew);
+      body.add(fp);
+    }
+
+    initWidget(body);
+  }
+
+  void doAddNew() {
+    final String txt = addTxt.getText();
+    if (txt != null && txt.length() > 0) {
+      addNew.setEnabled(false);
+      Util.ACCOUNT_SEC.addSshKey(txt, new GerritCallback<AccountSshKey>() {
+        public void onSuccess(final AccountSshKey result) {
+          addNew.setEnabled(true);
+          addTxt.setText("");
+          keys.addOneKey(result);
+        }
+
+        @Override
+        public void onFailure(final Throwable caught) {
+          addNew.setEnabled(true);
+          super.onFailure(caught);
+        }
+      });
+    }
+  }
+
+  @Override
+  public void onLoad() {
+    super.onLoad();
+    Util.ACCOUNT_SEC.mySshKeys(new GerritCallback<List<AccountSshKey>>() {
+      public void onSuccess(final List<AccountSshKey> result) {
+        keys.display(result);
+        keys.finishDisplay(true);
+      }
+    });
+  }
+
+  private class SshKeyTable extends FancyFlexTable<AccountSshKey> {
+    SshKeyTable() {
+      table.setText(0, 3, Util.C.sshKeyAlgorithm());
+      table.setText(0, 4, Util.C.sshKeyKey());
+      table.setText(0, 5, Util.C.sshKeyComment());
+      table.setText(0, 6, Util.C.sshKeyLastUsed());
+      table.setText(0, 7, Util.C.sshKeyStored());
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          if (cell != 1 && getRowItem(row) != null) {
+            movePointerTo(row);
+          }
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(0, 1, S_ICON_HEADER);
+      fmt.addStyleName(0, 2, S_ICON_HEADER);
+
+      fmt.addStyleName(0, 3, S_DATA_HEADER);
+      fmt.addStyleName(0, 4, S_DATA_HEADER);
+      fmt.addStyleName(0, 5, S_DATA_HEADER);
+      fmt.addStyleName(0, 6, S_DATA_HEADER);
+      fmt.addStyleName(0, 7, S_DATA_HEADER);
+    }
+
+    @Override
+    protected Object getRowItemKey(final AccountSshKey item) {
+      return item.getKey();
+    }
+
+    @Override
+    protected boolean onKeyPress(final char keyCode, final int modifiers) {
+      if (super.onKeyPress(keyCode, modifiers)) {
+        return true;
+      }
+      if (modifiers == 0) {
+        switch (keyCode) {
+          case 's':
+          case 'c':
+            toggleCurrentRow();
+            return true;
+        }
+      }
+      return false;
+    }
+
+    @Override
+    protected void onOpenItem(final AccountSshKey item) {
+      toggleCurrentRow();
+    }
+
+    private void toggleCurrentRow() {
+      final CheckBox cb = (CheckBox) table.getWidget(getCurrentRow(), 1);
+      cb.setChecked(!cb.isChecked());
+    }
+
+    void deleteChecked() {
+      final HashSet<AccountSshKey.Id> ids = new HashSet<AccountSshKey.Id>();
+      for (int row = 1; row < table.getRowCount(); row++) {
+        final AccountSshKey k = getRowItem(row);
+        if (k != null && ((CheckBox) table.getWidget(row, 1)).isChecked()) {
+          ids.add(k.getKey());
+        }
+      }
+      if (!ids.isEmpty()) {
+        Util.ACCOUNT_SEC.deleteSshKeys(ids, new GerritCallback<VoidResult>() {
+          public void onSuccess(final VoidResult result) {
+            for (int row = 1; row < table.getRowCount();) {
+              final AccountSshKey k = getRowItem(row);
+              if (k != null && ids.contains(k.getKey())) {
+                table.removeRow(row);
+              } else {
+                row++;
+              }
+            }
+          }
+        });
+      }
+    }
+
+    void display(final List<AccountSshKey> result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final AccountSshKey k : result) {
+        addOneKey(k);
+      }
+    }
+
+    void addOneKey(final AccountSshKey k) {
+      final int row = table.getRowCount();
+      table.insertRow(row);
+      applyDataRowStyle(row);
+
+      table.setWidget(row, 1, new CheckBox());
+      table.setWidget(row, 2, k.isValid() ? Gerrit.ICONS.greenCheck()
+          .createImage() : Gerrit.ICONS.redNot().createImage());
+      table.setText(row, 3, k.getAlgorithm());
+      table.setText(row, 4, elide(k.getEncodedKey()));
+      table.setText(row, 5, k.getComment());
+      table.setText(row, 6, FormatUtil.mediumFormat(k.getLastUsedOn()));
+      table.setText(row, 7, FormatUtil.mediumFormat(k.getStoredOn()));
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(row, 1, S_ICON_CELL);
+      fmt.addStyleName(row, 2, S_ICON_CELL);
+      fmt.addStyleName(row, 4, "gerrit-SshKeyPanel-EncodedKey");
+      for (int c = 3; c <= 7; c++) {
+        fmt.addStyleName(row, c, S_DATA_CELL);
+      }
+      fmt.addStyleName(row, 6, "C_LAST_UPDATE");
+      fmt.addStyleName(row, 7, "C_LAST_UPDATE");
+
+      setRowItem(row, k);
+    }
+
+    String elide(final String s) {
+      if (s == null || s.length() < 40) {
+        return s;
+      }
+      return s.substring(0, 30) + "..." + s.substring(s.length() - 10);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/account/Util.java b/appjar/src/main/java/com/google/gerrit/client/account/Util.java
new file mode 100644
index 0000000..efffcb4c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/account/Util.java
@@ -0,0 +1,36 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwtjsonrpc.client.JsonUtil;
+
+public class Util {
+  public static final AccountConstants C = GWT.create(AccountConstants.class);
+  public static final AccountMessages M = GWT.create(AccountMessages.class);
+  public static final AccountService ACCOUNT_SVC;
+  public static final AccountSecurity ACCOUNT_SEC;
+  public static final LoginService LOGIN_SVC;
+
+  static {
+    ACCOUNT_SVC = GWT.create(AccountService.class);
+    JsonUtil.bind(ACCOUNT_SVC, "rpc/AccountService");
+
+    ACCOUNT_SEC = GWT.create(AccountSecurity.class);
+    JsonUtil.bind(ACCOUNT_SEC, "rpc/AccountSecurity");
+
+    LOGIN_SVC = GWT.create(LoginService.class);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/AccountGroupDetail.java b/appjar/src/main/java/com/google/gerrit/client/admin/AccountGroupDetail.java
new file mode 100644
index 0000000..7864e35
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/AccountGroupDetail.java
@@ -0,0 +1,97 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.data.AccountInfoCacheFactory;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.AccountGroupMember;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+public class AccountGroupDetail {
+  protected AccountInfoCache accounts;
+  protected AccountGroup group;
+  protected List<AccountGroupMember> members;
+  protected AccountGroup ownerGroup;
+  protected boolean autoGroup;
+
+  public AccountGroupDetail() {
+  }
+
+  public void load(final ReviewDb db, final AccountInfoCacheFactory acc,
+      final AccountGroup g, final boolean isAuto) throws OrmException {
+    group = g;
+    if (group.getId().equals(group.getOwnerGroupId())) {
+      ownerGroup = group;
+    } else {
+      ownerGroup = db.accountGroups().get(group.getOwnerGroupId());
+    }
+    autoGroup = isAuto;
+
+    if (!autoGroup) {
+      loadMembers(db, acc);
+    }
+  }
+
+  private void loadMembers(final ReviewDb db, final AccountInfoCacheFactory acc)
+      throws OrmException {
+    members = db.accountGroupMembers().byGroup(group.getId()).toList();
+    for (final AccountGroupMember m : members) {
+      acc.want(m.getAccountId());
+    }
+    accounts = acc.create();
+
+    Collections.sort(members, new Comparator<AccountGroupMember>() {
+      public int compare(final AccountGroupMember o1,
+          final AccountGroupMember o2) {
+        final AccountInfo a = accounts.get(o1.getAccountId());
+        final AccountInfo b = accounts.get(o2.getAccountId());
+        return n(a).compareTo(n(b));
+      }
+
+      private String n(final AccountInfo a) {
+        String n = a.getFullName();
+        if (n != null && n.length() > 0) {
+          return n;
+        }
+
+        n = a.getPreferredEmail();
+        if (n != null && n.length() > 0) {
+          return n;
+        }
+
+        return a.getId().toString();
+      }
+    });
+  }
+
+  public void loadOneMember(final ReviewDb db, final Account a,
+      final AccountGroupMember m) {
+    final AccountInfoCacheFactory acc = new AccountInfoCacheFactory(db);
+    acc.put(a);
+    acc.want(m.getAccountId());
+    members = new ArrayList<AccountGroupMember>(1);
+    members.add(m);
+    accounts = acc.create();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/AccountGroupScreen.java b/appjar/src/main/java/com/google/gerrit/client/admin/AccountGroupScreen.java
new file mode 100644
index 0000000..cbd8c7b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/AccountGroupScreen.java
@@ -0,0 +1,411 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.AccountGroupMember;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountDashboardLink;
+import com.google.gerrit.client.ui.AccountGroupSuggestOracle;
+import com.google.gerrit.client.ui.AccountScreen;
+import com.google.gerrit.client.ui.AccountSuggestOracle;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gerrit.client.ui.TextSaveButtonListener;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.FocusListenerAdapter;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.SuggestBox;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.TextArea;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.HashSet;
+import java.util.List;
+
+public class AccountGroupScreen extends AccountScreen {
+  private AccountGroup.Id groupId;
+  private AccountInfoCache accounts = AccountInfoCache.empty();
+  private MemberTable members;
+
+  private TextBox groupNameTxt;
+  private Button saveName;
+
+  private TextBox ownerTxtBox;
+  private SuggestBox ownerTxt;
+  private Button saveOwner;
+
+  private TextArea descTxt;
+  private Button saveDesc;
+
+  private Panel memberPanel;
+  private Button addMember;
+  private TextBox nameTxtBox;
+  private SuggestBox nameTxt;
+  private Button delMember;
+
+  public AccountGroupScreen(final AccountGroup.Id toShow) {
+    groupId = toShow;
+  }
+
+  @Override
+  public void onLoad() {
+    if (members == null) {
+      initUI();
+    }
+
+    enableForm(false);
+    saveName.setEnabled(false);
+    saveOwner.setEnabled(false);
+    saveDesc.setEnabled(false);
+    super.onLoad();
+
+    Util.GROUP_SVC.groupDetail(groupId,
+        new GerritCallback<AccountGroupDetail>() {
+          public void onSuccess(final AccountGroupDetail result) {
+            enableForm(true);
+            saveName.setEnabled(false);
+            saveOwner.setEnabled(false);
+            saveDesc.setEnabled(false);
+            display(result);
+          }
+        });
+  }
+
+  private void enableForm(final boolean on) {
+    ownerTxtBox.setEnabled(on);
+    groupNameTxt.setEnabled(on);
+    descTxt.setEnabled(on);
+    addMember.setEnabled(on);
+    nameTxtBox.setEnabled(on);
+    delMember.setEnabled(on);
+  }
+
+  private void initUI() {
+    initName();
+    initOwner();
+    initDescription();
+    initMemberList();
+  }
+
+  private void initName() {
+    final VerticalPanel groupNamePanel = new VerticalPanel();
+    groupNameTxt = new TextBox();
+    groupNameTxt.setVisibleLength(60);
+    groupNamePanel.add(groupNameTxt);
+
+    saveName = new Button(Util.C.buttonRenameGroup());
+    saveName.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        final String newName = groupNameTxt.getText().trim();
+        Util.GROUP_SVC.renameGroup(groupId, newName,
+            new GerritCallback<VoidResult>() {
+              public void onSuccess(final VoidResult result) {
+                saveName.setEnabled(false);
+                setTitleText(Util.M.group(newName));
+              }
+            });
+      }
+    });
+    groupNamePanel.add(saveName);
+    add(groupNamePanel);
+
+    new TextSaveButtonListener(groupNameTxt, saveName);
+  }
+
+  private void initOwner() {
+    final VerticalPanel ownerPanel = new VerticalPanel();
+    final Label ownerHdr = new Label(Util.C.headingOwner());
+    ownerHdr.setStyleName("gerrit-SmallHeading");
+    ownerPanel.add(ownerHdr);
+
+    ownerTxtBox = new TextBox();
+    ownerTxtBox.setVisibleLength(60);
+    ownerTxt = new SuggestBox(new AccountGroupSuggestOracle(), ownerTxtBox);
+    ownerPanel.add(ownerTxt);
+
+    saveOwner = new Button(Util.C.buttonChangeGroupOwner());
+    saveOwner.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        final String newOwner = ownerTxt.getText().trim();
+        if (newOwner.length() > 0) {
+          Util.GROUP_SVC.changeGroupOwner(groupId, newOwner,
+              new GerritCallback<VoidResult>() {
+                public void onSuccess(final VoidResult result) {
+                  saveOwner.setEnabled(false);
+                }
+              });
+        }
+      }
+    });
+    ownerPanel.add(saveOwner);
+    add(ownerPanel);
+
+    new TextSaveButtonListener(ownerTxtBox, saveOwner);
+  }
+
+  private void initDescription() {
+    final VerticalPanel vp = new VerticalPanel();
+    final Label descHdr = new Label(Util.C.headingDescription());
+    descHdr.setStyleName("gerrit-SmallHeading");
+    vp.add(descHdr);
+
+    descTxt = new TextArea();
+    descTxt.setVisibleLines(6);
+    descTxt.setCharacterWidth(60);
+    vp.add(descTxt);
+
+    saveDesc = new Button(Util.C.buttonSaveDescription());
+    saveDesc.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        final String txt = descTxt.getText().trim();
+        Util.GROUP_SVC.changeGroupDescription(groupId, txt,
+            new GerritCallback<VoidResult>() {
+              public void onSuccess(final VoidResult result) {
+                saveDesc.setEnabled(false);
+              }
+            });
+      }
+    });
+    vp.add(saveDesc);
+    add(vp);
+
+    new TextSaveButtonListener(descTxt, saveDesc);
+  }
+
+  private void initMemberList() {
+    final Label memberHdr = new Label(Util.C.headingMembers());
+    memberHdr.setStyleName("gerrit-SmallHeading");
+
+    final FlowPanel addPanel = new FlowPanel();
+    addPanel.setStyleName("gerrit-ProjectWatchPanel-AddPanel");
+
+    nameTxtBox = new TextBox();
+    nameTxt = new SuggestBox(new AccountSuggestOracle(), nameTxtBox);
+    nameTxtBox.setVisibleLength(50);
+    nameTxtBox.setText(Util.C.defaultAccountName());
+    nameTxtBox.addStyleName("gerrit-InputFieldTypeHint");
+    nameTxtBox.addFocusListener(new FocusListenerAdapter() {
+      @Override
+      public void onFocus(Widget sender) {
+        if (Util.C.defaultAccountName().equals(nameTxtBox.getText())) {
+          nameTxtBox.setText("");
+          nameTxtBox.removeStyleName("gerrit-InputFieldTypeHint");
+        }
+      }
+
+      @Override
+      public void onLostFocus(Widget sender) {
+        if ("".equals(nameTxtBox.getText())) {
+          nameTxtBox.setText(Util.C.defaultAccountName());
+          nameTxtBox.addStyleName("gerrit-InputFieldTypeHint");
+        }
+      }
+    });
+    addPanel.add(nameTxt);
+
+    addMember = new Button(Util.C.buttonAddGroupMember());
+    addMember.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        doAddNew();
+      }
+    });
+    addPanel.add(addMember);
+
+    members = new MemberTable();
+
+    delMember = new Button(Util.C.buttonDeleteGroupMembers());
+    delMember.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        members.deleteChecked();
+      }
+    });
+
+    memberPanel = new FlowPanel();
+    memberPanel.add(memberHdr);
+    memberPanel.add(addPanel);
+    memberPanel.add(members);
+    memberPanel.add(delMember);
+    add(memberPanel);
+  }
+
+  private void display(final AccountGroupDetail result) {
+    final AccountGroup group = result.group;
+    setTitleText(Util.M.group(group.getName()));
+    groupNameTxt.setText(group.getName());
+    if (result.ownerGroup != null) {
+      ownerTxt.setText(result.ownerGroup.getName());
+    } else {
+      ownerTxt.setText(Util.M.deletedGroup(group.getOwnerGroupId().get()));
+    }
+    descTxt.setText(group.getDescription());
+    if (result.autoGroup) {
+      memberPanel.setVisible(false);
+    } else {
+      memberPanel.setVisible(true);
+      accounts = result.accounts;
+      members.display(result.members);
+      members.finishDisplay(true);
+    }
+  }
+
+  void doAddNew() {
+    final String nameEmail = nameTxt.getText();
+    if (nameEmail == null || nameEmail.length() == 0
+        || Util.C.defaultAccountName().equals(nameEmail)) {
+      return;
+    }
+
+    addMember.setEnabled(false);
+    Util.GROUP_SVC.addGroupMember(groupId, nameEmail,
+        new GerritCallback<AccountGroupDetail>() {
+          public void onSuccess(final AccountGroupDetail result) {
+            addMember.setEnabled(true);
+            nameTxt.setText("");
+            if (result.accounts != null && result.members != null) {
+              accounts.merge(result.accounts);
+              for (final AccountGroupMember m : result.members) {
+                members.insertMember(m);
+              }
+            }
+          }
+
+          @Override
+          public void onFailure(final Throwable caught) {
+            addMember.setEnabled(true);
+            super.onFailure(caught);
+          }
+        });
+  }
+
+  private class MemberTable extends FancyFlexTable<AccountGroupMember> {
+    MemberTable() {
+      table.setText(0, 2, Util.C.columnMember());
+      table.setText(0, 3, Util.C.columnEmailAddress());
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          if (cell != 1 && getRowItem(row) != null) {
+            movePointerTo(row);
+          }
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(0, 1, S_ICON_HEADER);
+      fmt.addStyleName(0, 2, S_DATA_HEADER);
+      fmt.addStyleName(0, 3, S_DATA_HEADER);
+    }
+
+    @Override
+    protected Object getRowItemKey(final AccountGroupMember item) {
+      return item.getKey();
+    }
+
+    @Override
+    protected boolean onKeyPress(final char keyCode, final int modifiers) {
+      if (super.onKeyPress(keyCode, modifiers)) {
+        return true;
+      }
+      if (modifiers == 0) {
+        switch (keyCode) {
+          case 's':
+          case 'c':
+            toggleCurrentRow();
+            return true;
+        }
+      }
+      return false;
+    }
+
+    @Override
+    protected void onOpenItem(final AccountGroupMember item) {
+      toggleCurrentRow();
+    }
+
+    private void toggleCurrentRow() {
+      final CheckBox cb = (CheckBox) table.getWidget(getCurrentRow(), 1);
+      cb.setChecked(!cb.isChecked());
+    }
+
+    void deleteChecked() {
+      final HashSet<AccountGroupMember.Key> ids =
+          new HashSet<AccountGroupMember.Key>();
+      for (int row = 1; row < table.getRowCount(); row++) {
+        final AccountGroupMember k = getRowItem(row);
+        if (k != null && ((CheckBox) table.getWidget(row, 1)).isChecked()) {
+          ids.add(k.getKey());
+        }
+      }
+      if (!ids.isEmpty()) {
+        Util.GROUP_SVC.deleteGroupMembers(ids,
+            new GerritCallback<VoidResult>() {
+              public void onSuccess(final VoidResult result) {
+                for (int row = 1; row < table.getRowCount();) {
+                  final AccountGroupMember k = getRowItem(row);
+                  if (k != null && ids.contains(k.getKey())) {
+                    table.removeRow(row);
+                  } else {
+                    row++;
+                  }
+                }
+              }
+            });
+      }
+    }
+
+    void insertMember(final AccountGroupMember k) {
+      final int row = table.getRowCount();
+      table.insertRow(row);
+      applyDataRowStyle(row);
+      populate(row, k);
+    }
+
+    void display(final List<AccountGroupMember> result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final AccountGroupMember k : result) {
+        final int row = table.getRowCount();
+        table.insertRow(row);
+        applyDataRowStyle(row);
+        populate(row, k);
+      }
+    }
+
+    void populate(final int row, final AccountGroupMember k) {
+      final Account.Id accountId = k.getAccountId();
+      table.setWidget(row, 1, new CheckBox());
+      table.setWidget(row, 2, AccountDashboardLink.link(accounts, accountId));
+      table.setText(row, 3, accounts.get(accountId).getPreferredEmail());
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(row, 1, S_ICON_CELL);
+      fmt.addStyleName(row, 2, S_DATA_CELL);
+      fmt.addStyleName(row, 3, S_DATA_CELL);
+
+      setRowItem(row, k);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/AdminConstants.java b/appjar/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
new file mode 100644
index 0000000..b39fd86
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
@@ -0,0 +1,48 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gwt.i18n.client.Constants;
+
+public interface AdminConstants extends Constants {
+  String defaultAccountName();
+  String defaultAccountGroupName();
+
+  String buttonDeleteGroupMembers();
+  String buttonAddGroupMember();
+  String buttonSaveDescription();
+  String buttonRenameGroup();
+  String buttonCreateGroup();
+  String buttonChangeGroupOwner();
+  String buttonAddProjectRight();
+
+  String headingOwner();
+  String headingDescription();
+  String headingMembers();
+  String headingCreateGroup();
+  String headingAccessRights();
+
+  String columnMember();
+  String columnEmailAddress();
+  String columnGroupName();
+  String columnProjectName();
+  String columnGroupDescription();
+  String columnProjectDescription();
+  String columnApprovalCategory();
+  String columnRightRange();
+
+  String groupListTitle();
+  String projectListTitle();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties b/appjar/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
new file mode 100644
index 0000000..5534015
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
@@ -0,0 +1,28 @@
+defaultAccountName = Name or Email
+defaultAccountGroupName = Group Name
+
+buttonDeleteGroupMembers = Delete
+buttonAddGroupMember = Add
+buttonRenameGroup = Rename Group
+buttonSaveDescription = Save Description
+buttonCreateGroup = Create Group 
+buttonChangeGroupOwner = Change Owner
+buttonAddProjectRight = Add Access Right
+
+headingOwner = Owners
+headingDescription = Description
+headingMembers = Members
+headingCreateGroup = Create New Group
+headingAccessRights = Access Rights
+
+columnMember = Member
+columnEmailAddress = Email Address
+columnGroupName = Group Name
+columnProjectName = Project Name
+columnGroupDescription = Description
+columnProjectDescription = Description
+columnApprovalCategory = Category
+columnRightRange = Permitted Range
+
+groupListTitle = Groups
+projectListTitle = Projects
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/AdminMessages.java b/appjar/src/main/java/com/google/gerrit/client/admin/AdminMessages.java
new file mode 100644
index 0000000..e26ea51
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/AdminMessages.java
@@ -0,0 +1,23 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gwt.i18n.client.Messages;
+
+public interface AdminMessages extends Messages {
+  String group(String name);
+  String project(String name);
+  String deletedGroup(int id);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/AdminMessages.properties b/appjar/src/main/java/com/google/gerrit/client/admin/AdminMessages.properties
new file mode 100644
index 0000000..06123c7
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/AdminMessages.properties
@@ -0,0 +1,4 @@
+group = Group {0}
+project = Project {0}
+deletedGroup = Deleted Group {0}
+ 
\ No newline at end of file
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/GroupAdminService.java b/appjar/src/main/java/com/google/gerrit/client/admin/GroupAdminService.java
new file mode 100644
index 0000000..41ac440
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/GroupAdminService.java
@@ -0,0 +1,57 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.AccountGroupMember;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.List;
+import java.util.Set;
+
+public interface GroupAdminService extends RemoteJsonService {
+  @SignInRequired
+  void ownedGroups(AsyncCallback<List<AccountGroup>> callback);
+
+  @SignInRequired
+  void createGroup(String newName, AsyncCallback<AccountGroup.Id> callback);
+
+  @SignInRequired
+  void groupDetail(AccountGroup.Id groupId,
+      AsyncCallback<AccountGroupDetail> callback);
+
+  @SignInRequired
+  void changeGroupDescription(AccountGroup.Id groupId, String description,
+      AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void changeGroupOwner(AccountGroup.Id groupId, String newOwnerName,
+      AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void renameGroup(AccountGroup.Id groupId, String newName,
+      AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void addGroupMember(AccountGroup.Id groupId, String nameOrEmail,
+      AsyncCallback<AccountGroupDetail> callback);
+
+  @SignInRequired
+  void deleteGroupMembers(Set<AccountGroupMember.Key> keys,
+      AsyncCallback<VoidResult> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/GroupListScreen.java b/appjar/src/main/java/com/google/gerrit/client/admin/GroupListScreen.java
new file mode 100644
index 0000000..619c4d9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/GroupListScreen.java
@@ -0,0 +1,156 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountScreen;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Hyperlink;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+import java.util.List;
+
+public class GroupListScreen extends AccountScreen {
+  private GroupTable groups;
+
+  private TextBox addTxt;
+  private Button addNew;
+
+  public GroupListScreen() {
+    super(Util.C.groupListTitle());
+  }
+
+  @Override
+  public Object getScreenCacheToken() {
+    return getClass();
+  }
+
+  @Override
+  public void onLoad() {
+    if (groups == null) {
+      initUI();
+    }
+
+    Util.GROUP_SVC.ownedGroups(new GerritCallback<List<AccountGroup>>() {
+      public void onSuccess(final List<AccountGroup> result) {
+        if (isAttached()) {
+          groups.display(result);
+          groups.finishDisplay(true);
+        }
+      }
+    });
+  }
+
+  private void initUI() {
+    groups = new GroupTable();
+    groups.setSavePointerId(Link.ADMIN_GROUPS);
+    add(groups);
+
+    final VerticalPanel fp = new VerticalPanel();
+    fp.setStyleName("gerrit-AddSshKeyPanel");
+    final Label hdr = new Label(Util.C.headingCreateGroup());
+    hdr.setStyleName("gerrit-SmallHeading");
+    fp.add(hdr);
+
+    addTxt = new TextBox();
+    addTxt.setVisibleLength(60);
+    fp.add(addTxt);
+
+    addNew = new Button(Util.C.buttonCreateGroup());
+    addNew.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        doCreateGroup();
+      }
+    });
+    fp.add(addNew);
+    add(fp);
+  }
+
+  private void doCreateGroup() {
+    final String newName = addTxt.getText();
+    if (newName == null || newName.length() == 0) {
+      return;
+    }
+
+    Util.GROUP_SVC.createGroup(newName, new GerritCallback<AccountGroup.Id>() {
+      public void onSuccess(final AccountGroup.Id result) {
+        History.newItem(Link.toAccountGroup(result));
+      }
+    });
+  }
+
+  private class GroupTable extends FancyFlexTable<AccountGroup> {
+    GroupTable() {
+      table.setText(0, 1, Util.C.columnGroupName());
+      table.setText(0, 2, Util.C.columnGroupDescription());
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          if (cell != 1 && getRowItem(row) != null) {
+            movePointerTo(row);
+          }
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(0, 1, S_DATA_HEADER);
+      fmt.addStyleName(0, 2, S_DATA_HEADER);
+    }
+
+    @Override
+    protected Object getRowItemKey(final AccountGroup item) {
+      return item.getId();
+    }
+
+    @Override
+    protected void onOpenItem(final AccountGroup item) {
+      History.newItem(Link.toAccountGroup(item.getId()));
+    }
+
+    void display(final List<AccountGroup> result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final AccountGroup k : result) {
+        final int row = table.getRowCount();
+        table.insertRow(row);
+        applyDataRowStyle(row);
+        populate(row, k);
+      }
+    }
+
+    void populate(final int row, final AccountGroup k) {
+      table.setWidget(row, 1, new Hyperlink(k.getName(), Link.toAccountGroup(k
+          .getId())));
+      table.setText(row, 2, k.getDescription());
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(row, 1, S_DATA_CELL);
+      fmt.addStyleName(row, 2, S_DATA_CELL);
+
+      setRowItem(row, k);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/ProjectAdminScreen.java b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectAdminScreen.java
new file mode 100644
index 0000000..039485d5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectAdminScreen.java
@@ -0,0 +1,526 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.data.GerritConfig;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountGroupSuggestOracle;
+import com.google.gerrit.client.ui.AccountScreen;
+import com.google.gerrit.client.ui.DomUtil;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gerrit.client.ui.TextSaveButtonListener;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.FocusListenerAdapter;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.SuggestBox;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.TextArea;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+public class ProjectAdminScreen extends AccountScreen {
+  private Project.Id projectId;
+
+  private Panel ownerPanel;
+  private TextBox ownerTxtBox;
+  private SuggestBox ownerTxt;
+  private Button saveOwner;
+
+  private TextArea descTxt;
+  private Button saveDesc;
+
+  private RightsTable rights;
+  private Button delRight;
+  private Button addRight;
+  private ListBox catBox;
+  private ListBox rangeMinBox;
+  private ListBox rangeMaxBox;
+  private TextBox nameTxtBox;
+  private SuggestBox nameTxt;
+
+  public ProjectAdminScreen(final Project.Id toShow) {
+    projectId = toShow;
+  }
+
+  @Override
+  public void onLoad() {
+    if (descTxt == null) {
+      initUI();
+    }
+
+    enableForm(false);
+    saveOwner.setEnabled(false);
+    saveDesc.setEnabled(false);
+    super.onLoad();
+
+    Util.PROJECT_SVC.projectDetail(projectId,
+        new GerritCallback<ProjectDetail>() {
+          public void onSuccess(final ProjectDetail result) {
+            enableForm(true);
+            saveOwner.setEnabled(false);
+            saveDesc.setEnabled(false);
+            display(result);
+          }
+        });
+  }
+
+  private void enableForm(final boolean on) {
+    ownerTxtBox.setEnabled(on);
+    descTxt.setEnabled(on);
+    delRight.setEnabled(on);
+
+    final boolean canAdd = on && catBox.getItemCount() > 0;
+    addRight.setEnabled(canAdd);
+    nameTxtBox.setEnabled(canAdd);
+    catBox.setEnabled(canAdd);
+    rangeMinBox.setEnabled(canAdd);
+    rangeMaxBox.setEnabled(canAdd);
+  }
+
+  private void initUI() {
+    initOwner();
+    initDescription();
+    initRights();
+  }
+
+  private void initOwner() {
+    ownerPanel = new VerticalPanel();
+    final Label ownerHdr = new Label(Util.C.headingOwner());
+    ownerHdr.setStyleName("gerrit-SmallHeading");
+    ownerPanel.add(ownerHdr);
+
+    ownerTxtBox = new TextBox();
+    ownerTxtBox.setVisibleLength(60);
+    ownerTxt = new SuggestBox(new AccountGroupSuggestOracle(), ownerTxtBox);
+    ownerPanel.add(ownerTxt);
+
+    saveOwner = new Button(Util.C.buttonChangeGroupOwner());
+    saveOwner.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        final String newOwner = ownerTxt.getText().trim();
+        if (newOwner.length() > 0) {
+          Util.PROJECT_SVC.changeProjectOwner(projectId, newOwner,
+              new GerritCallback<VoidResult>() {
+                public void onSuccess(final VoidResult result) {
+                  saveOwner.setEnabled(false);
+                }
+              });
+        }
+      }
+    });
+    ownerPanel.add(saveOwner);
+    add(ownerPanel);
+
+    new TextSaveButtonListener(ownerTxtBox, saveOwner);
+  }
+
+  private void initDescription() {
+    final VerticalPanel vp = new VerticalPanel();
+    final Label descHdr = new Label(Util.C.headingDescription());
+    descHdr.setStyleName("gerrit-SmallHeading");
+    vp.add(descHdr);
+
+    descTxt = new TextArea();
+    descTxt.setVisibleLines(6);
+    descTxt.setCharacterWidth(60);
+    vp.add(descTxt);
+
+    saveDesc = new Button(Util.C.buttonSaveDescription());
+    saveDesc.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        final String txt = descTxt.getText().trim();
+        Util.PROJECT_SVC.changeProjectDescription(projectId, txt,
+            new GerritCallback<VoidResult>() {
+              public void onSuccess(final VoidResult result) {
+                saveDesc.setEnabled(false);
+              }
+            });
+      }
+    });
+    vp.add(saveDesc);
+    add(vp);
+
+    new TextSaveButtonListener(descTxt, saveDesc);
+  }
+
+  private void initRights() {
+    final Label rightsHdr = new Label(Util.C.headingAccessRights());
+    rightsHdr.setStyleName("gerrit-SmallHeading");
+
+    final FlowPanel addPanel = new FlowPanel();
+    addPanel.setStyleName("gerrit-AddSshKeyPanel");
+
+    final Grid addGrid = new Grid(4, 2);
+
+    catBox = new ListBox();
+    rangeMinBox = new ListBox();
+    rangeMaxBox = new ListBox();
+
+    catBox.addChangeListener(new ChangeListener() {
+      public void onChange(Widget sender) {
+        populateRangeBoxes();
+      }
+    });
+    for (final ApprovalType at : Common.getGerritConfig().getApprovalTypes()) {
+      final ApprovalCategory c = at.getCategory();
+      catBox.addItem(c.getName(), c.getId().get());
+    }
+    for (final ApprovalType at : Common.getGerritConfig().getActionTypes()) {
+      final ApprovalCategory c = at.getCategory();
+      catBox.addItem(c.getName(), c.getId().get());
+    }
+    if (catBox.getItemCount() > 0) {
+      catBox.setSelectedIndex(0);
+      populateRangeBoxes();
+    }
+
+    addGrid.setText(0, 0, Util.C.columnApprovalCategory() + ":");
+    addGrid.setWidget(0, 1, catBox);
+
+    nameTxtBox = new TextBox();
+    nameTxt = new SuggestBox(new AccountGroupSuggestOracle(), nameTxtBox);
+    nameTxtBox.setVisibleLength(50);
+    nameTxtBox.setText(Util.C.defaultAccountGroupName());
+    nameTxtBox.addStyleName("gerrit-InputFieldTypeHint");
+    nameTxtBox.addFocusListener(new FocusListenerAdapter() {
+      @Override
+      public void onFocus(Widget sender) {
+        if (Util.C.defaultAccountGroupName().equals(nameTxtBox.getText())) {
+          nameTxtBox.setText("");
+          nameTxtBox.removeStyleName("gerrit-InputFieldTypeHint");
+        }
+      }
+
+      @Override
+      public void onLostFocus(Widget sender) {
+        if ("".equals(nameTxtBox.getText())) {
+          nameTxtBox.setText(Util.C.defaultAccountGroupName());
+          nameTxtBox.addStyleName("gerrit-InputFieldTypeHint");
+        }
+      }
+    });
+    addGrid.setText(1, 0, Util.C.columnGroupName() + ":");
+    addGrid.setWidget(1, 1, nameTxt);
+
+    addGrid.setText(2, 0, Util.C.columnRightRange() + ":");
+    addGrid.setWidget(2, 1, rangeMinBox);
+
+    addGrid.setText(3, 0, "");
+    addGrid.setWidget(3, 1, rangeMaxBox);
+
+    addRight = new Button(Util.C.buttonAddProjectRight());
+    addRight.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        doAddNewRight();
+      }
+    });
+    addPanel.add(addGrid);
+    addPanel.add(addRight);
+
+    rights = new RightsTable();
+
+    delRight = new Button(Util.C.buttonDeleteGroupMembers());
+    delRight.addClickListener(new ClickListener() {
+      public void onClick(final Widget sender) {
+        rights.deleteChecked();
+      }
+    });
+
+    add(rightsHdr);
+    add(rights);
+    add(delRight);
+    add(addPanel);
+  }
+
+  private void display(final ProjectDetail result) {
+    final Project project = result.project;
+    final AccountGroup owner = result.groups.get(project.getOwnerGroupId());
+    setTitleText(Util.M.project(project.getName()));
+    if (owner != null) {
+      ownerTxt.setText(owner.getName());
+    } else {
+      ownerTxt.setText(Util.M.deletedGroup(project.getOwnerGroupId().get()));
+    }
+
+    if (ProjectRight.WILD_PROJECT.equals(project.getId())) {
+      ownerPanel.setVisible(false);
+    } else {
+      ownerPanel.setVisible(true);
+    }
+
+    descTxt.setText(project.getDescription());
+    rights.display(result.groups, result.rights);
+  }
+
+  private void doAddNewRight() {
+    int idx = catBox.getSelectedIndex();
+    final ApprovalType at;
+    final ApprovalCategoryValue min, max;
+    if (idx < 0) {
+      return;
+    }
+    at =
+        Common.getGerritConfig().getApprovalType(
+            new ApprovalCategory.Id(catBox.getValue(idx)));
+    if (at == null) {
+      return;
+    }
+
+    idx = rangeMinBox.getSelectedIndex();
+    if (idx < 0) {
+      return;
+    }
+    min = at.getValue(Short.parseShort(rangeMinBox.getValue(idx)));
+    if (min == null) {
+      return;
+    }
+
+    idx = rangeMaxBox.getSelectedIndex();
+    if (idx < 0) {
+      return;
+    }
+    max = at.getValue(Short.parseShort(rangeMaxBox.getValue(idx)));
+    if (max == null) {
+      return;
+    }
+
+    final String groupName = nameTxt.getText();
+    if ("".equals(groupName)
+        || Util.C.defaultAccountGroupName().equals(groupName)) {
+      return;
+    }
+
+    addRight.setEnabled(false);
+    Util.PROJECT_SVC.addRight(projectId, at.getCategory().getId(), groupName,
+        min.getValue(), max.getValue(), new GerritCallback<ProjectDetail>() {
+          public void onSuccess(final ProjectDetail result) {
+            addRight.setEnabled(true);
+            nameTxt.setText("");
+            display(result);
+          }
+
+          @Override
+          public void onFailure(final Throwable caught) {
+            addRight.setEnabled(true);
+            super.onFailure(caught);
+          }
+        });
+  }
+
+  private void populateRangeBoxes() {
+    final int idx = catBox.getSelectedIndex();
+    final ApprovalType at;
+    if (idx >= 0) {
+      at =
+          Common.getGerritConfig().getApprovalType(
+              new ApprovalCategory.Id(catBox.getValue(idx)));
+    } else {
+      at = null;
+    }
+
+    if (at != null) {
+      rangeMinBox.clear();
+      rangeMaxBox.clear();
+      for (final ApprovalCategoryValue v : at.getValues()) {
+        rangeMinBox.addItem(v.getName(), String.valueOf(v.getValue()));
+        rangeMaxBox.addItem(v.getName(), String.valueOf(v.getValue()));
+      }
+      if (rangeMaxBox.getItemCount() > 0) {
+        rangeMinBox.setSelectedIndex(0);
+        rangeMaxBox.setSelectedIndex(rangeMaxBox.getItemCount() - 1);
+      }
+    } else {
+      rangeMinBox.setEnabled(false);
+      rangeMaxBox.setEnabled(false);
+    }
+  }
+
+  private class RightsTable extends FancyFlexTable<ProjectRight> {
+    RightsTable() {
+      table.setText(0, 2, Util.C.columnApprovalCategory());
+      table.setText(0, 3, Util.C.columnGroupName());
+      table.setText(0, 4, Util.C.columnRightRange());
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          if (cell != 1 && getRowItem(row) != null) {
+            movePointerTo(row);
+          }
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(0, 1, S_ICON_HEADER);
+      fmt.addStyleName(0, 2, S_DATA_HEADER);
+      fmt.addStyleName(0, 3, S_DATA_HEADER);
+      fmt.addStyleName(0, 4, S_DATA_HEADER);
+    }
+
+    @Override
+    protected Object getRowItemKey(final ProjectRight item) {
+      return item.getKey();
+    }
+
+    @Override
+    protected boolean onKeyPress(final char keyCode, final int modifiers) {
+      if (super.onKeyPress(keyCode, modifiers)) {
+        return true;
+      }
+      if (modifiers == 0) {
+        switch (keyCode) {
+          case 's':
+          case 'c':
+            toggleCurrentRow();
+            return true;
+        }
+      }
+      return false;
+    }
+
+    @Override
+    protected void onOpenItem(final ProjectRight item) {
+      toggleCurrentRow();
+    }
+
+    private void toggleCurrentRow() {
+      final CheckBox cb = (CheckBox) table.getWidget(getCurrentRow(), 1);
+      cb.setChecked(!cb.isChecked());
+    }
+
+    void deleteChecked() {
+      final HashSet<ProjectRight.Key> ids = new HashSet<ProjectRight.Key>();
+      for (int row = 1; row < table.getRowCount(); row++) {
+        final ProjectRight k = getRowItem(row);
+        if (k != null && table.getWidget(row, 1) instanceof CheckBox
+            && ((CheckBox) table.getWidget(row, 1)).isChecked()) {
+          ids.add(k.getKey());
+        }
+      }
+      if (!ids.isEmpty()) {
+        Util.PROJECT_SVC.deleteRight(ids, new GerritCallback<VoidResult>() {
+          public void onSuccess(final VoidResult result) {
+            for (int row = 1; row < table.getRowCount();) {
+              final ProjectRight k = getRowItem(row);
+              if (k != null && ids.contains(k.getKey())) {
+                table.removeRow(row);
+              } else {
+                row++;
+              }
+            }
+          }
+        });
+      }
+    }
+
+    void display(final Map<AccountGroup.Id, AccountGroup> groups,
+        final List<ProjectRight> result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final ProjectRight k : result) {
+        final int row = table.getRowCount();
+        table.insertRow(row);
+        applyDataRowStyle(row);
+        populate(row, groups, k);
+      }
+    }
+
+    void populate(final int row,
+        final Map<AccountGroup.Id, AccountGroup> groups, final ProjectRight k) {
+      final GerritConfig config = Common.getGerritConfig();
+      final ApprovalType ar = config.getApprovalType(k.getApprovalCategoryId());
+      final AccountGroup group = groups.get(k.getAccountGroupId());
+
+      if (ProjectRight.WILD_PROJECT.equals(k.getProjectId())
+          && !ProjectRight.WILD_PROJECT.equals(projectId)) {
+        table.setText(row, 1, "");
+      } else {
+        table.setWidget(row, 1, new CheckBox());
+      }
+
+      if (ar != null) {
+        table.setText(row, 2, ar.getCategory().getName());
+      } else {
+        table.setText(row, 2, k.getApprovalCategoryId().get());
+      }
+
+      if (group != null) {
+        table.setText(row, 3, group.getName());
+      } else {
+        table.setText(row, 3, Util.M.deletedGroup(k.getAccountGroupId().get()));
+      }
+
+      {
+        final StringBuilder m = new StringBuilder();
+        final ApprovalCategoryValue min, max;
+        min = ar != null ? ar.getValue(k.getMinValue()) : null;
+        max = ar != null ? ar.getValue(k.getMaxValue()) : null;
+
+        formatValue(m, k.getMinValue(), min);
+        if (k.getMinValue() != k.getMaxValue()) {
+          m.append("<br>");
+          formatValue(m, k.getMaxValue(), max);
+        }
+        table.setHTML(row, 4, m.toString());
+      }
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(row, 1, S_ICON_CELL);
+      fmt.addStyleName(row, 2, S_DATA_CELL);
+      fmt.addStyleName(row, 3, S_DATA_CELL);
+      fmt.addStyleName(row, 4, S_DATA_CELL);
+      fmt.addStyleName(row, 4, "gerrit-ProjectAdmin-ApprovalCategoryRangeLine");
+
+      setRowItem(row, k);
+    }
+
+    private void formatValue(final StringBuilder m, final short v,
+        final ApprovalCategoryValue e) {
+      m.append("<span class=\"gerrit-ProjectAdmin-ApprovalCategoryValue\">");
+      if (v == 0) {
+        m.append(' ');
+      } else if (v > 0) {
+        m.append('+');
+      }
+      m.append(v);
+      m.append("</span>");
+      if (e != null) {
+        m.append(": ");
+        m.append(DomUtil.escape(e.getName()));
+      }
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/ProjectAdminService.java b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectAdminService.java
new file mode 100644
index 0000000..8530862
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectAdminService.java
@@ -0,0 +1,50 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.List;
+import java.util.Set;
+
+public interface ProjectAdminService extends RemoteJsonService {
+  @SignInRequired
+  void ownedProjects(AsyncCallback<List<Project>> callback);
+
+  @SignInRequired
+  void projectDetail(Project.Id projectId, AsyncCallback<ProjectDetail> callback);
+
+  @SignInRequired
+  void changeProjectDescription(Project.Id projectId, String description,
+      AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void changeProjectOwner(Project.Id projectId, String newOwnerName,
+      AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void deleteRight(Set<ProjectRight.Key> ids, AsyncCallback<VoidResult> callback);
+
+  @SignInRequired
+  void addRight(Project.Id projectId, ApprovalCategory.Id categoryId,
+      String groupName, short min, short max,
+      AsyncCallback<ProjectDetail> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/ProjectDetail.java b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectDetail.java
new file mode 100644
index 0000000..75d7053
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectDetail.java
@@ -0,0 +1,71 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.ResultSet;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ProjectDetail {
+  protected Project project;
+  protected Map<AccountGroup.Id, AccountGroup> groups;
+  protected List<ProjectRight> rights;
+
+  public ProjectDetail() {
+  }
+
+  public void load(final ReviewDb db, final ProjectCache.Entry g)
+      throws OrmException {
+    project = g.getProject();
+    groups = new HashMap<AccountGroup.Id, AccountGroup>();
+    wantGroup(project.getOwnerGroupId());
+
+    rights = new ArrayList<ProjectRight>();
+    for (final ProjectRight p : g.getRights()) {
+      rights.add(p);
+      wantGroup(p.getAccountGroupId());
+    }
+    if (!ProjectRight.WILD_PROJECT.equals(project.getId())) {
+      for (final ProjectRight p : Common.getProjectCache().getWildcardRights()) {
+        rights.add(p);
+        wantGroup(p.getAccountGroupId());
+      }
+    }
+
+    loadGroups(db);
+  }
+
+  private void wantGroup(final AccountGroup.Id id) {
+    groups.put(id, null);
+  }
+
+  private void loadGroups(final ReviewDb db) throws OrmException {
+    final ResultSet<AccountGroup> r = db.accountGroups().get(groups.keySet());
+    groups.clear();
+    for (final AccountGroup g : r) {
+      groups.put(g.getId(), g);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/ProjectListScreen.java b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectListScreen.java
new file mode 100644
index 0000000..9fe6357
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/ProjectListScreen.java
@@ -0,0 +1,123 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountScreen;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.ui.Hyperlink;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+import java.util.List;
+
+public class ProjectListScreen extends AccountScreen {
+  private ProjectTable projects;
+
+  public ProjectListScreen() {
+    super(Util.C.projectListTitle());
+  }
+
+  @Override
+  public Object getScreenCacheToken() {
+    return getClass();
+  }
+
+  @Override
+  public void onLoad() {
+    if (projects == null) {
+      initUI();
+    }
+
+    Util.PROJECT_SVC.ownedProjects(new GerritCallback<List<Project>>() {
+      public void onSuccess(final List<Project> result) {
+        if (isAttached()) {
+          projects.display(result);
+          projects.finishDisplay(true);
+        }
+      }
+    });
+  }
+
+  private void initUI() {
+    projects = new ProjectTable();
+    projects.setSavePointerId(Link.ADMIN_PROJECTS);
+    add(projects);
+
+    final VerticalPanel fp = new VerticalPanel();
+    fp.setStyleName("gerrit-AddSshKeyPanel");
+    final Label hdr = new Label(Util.C.headingCreateGroup());
+    hdr.setStyleName("gerrit-SmallHeading");
+    fp.add(hdr);
+  }
+
+  private class ProjectTable extends FancyFlexTable<Project> {
+    ProjectTable() {
+      table.setText(0, 1, Util.C.columnProjectName());
+      table.setText(0, 2, Util.C.columnProjectDescription());
+      table.addTableListener(new TableListener() {
+        public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+          if (cell != 1 && getRowItem(row) != null) {
+            movePointerTo(row);
+          }
+        }
+      });
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(0, 1, S_DATA_HEADER);
+      fmt.addStyleName(0, 2, S_DATA_HEADER);
+    }
+
+    @Override
+    protected Object getRowItemKey(final Project item) {
+      return item.getId();
+    }
+
+    @Override
+    protected void onOpenItem(final Project item) {
+      History.newItem(Link.toProjectAdmin(item.getId()));
+    }
+
+    void display(final List<Project> result) {
+      while (1 < table.getRowCount())
+        table.removeRow(table.getRowCount() - 1);
+
+      for (final Project k : result) {
+        final int row = table.getRowCount();
+        table.insertRow(row);
+        applyDataRowStyle(row);
+        populate(row, k);
+      }
+    }
+
+    void populate(final int row, final Project k) {
+      table.setWidget(row, 1, new Hyperlink(k.getName(), Link.toProjectAdmin(k
+          .getId())));
+      table.setText(row, 2, k.getDescription());
+
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.addStyleName(row, 1, S_DATA_CELL);
+      fmt.addStyleName(row, 2, S_DATA_CELL);
+
+      setRowItem(row, k);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/admin/Util.java b/appjar/src/main/java/com/google/gerrit/client/admin/Util.java
new file mode 100644
index 0000000..5de4377
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/admin/Util.java
@@ -0,0 +1,33 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.admin;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwtjsonrpc.client.JsonUtil;
+
+public class Util {
+  public static final AdminConstants C = GWT.create(AdminConstants.class);
+  public static final AdminMessages M = GWT.create(AdminMessages.class);
+  public static final GroupAdminService GROUP_SVC;
+  public static final ProjectAdminService PROJECT_SVC;
+
+  static {
+    GROUP_SVC = GWT.create(GroupAdminService.class);
+    JsonUtil.bind(GROUP_SVC, "rpc/GroupAdminService");
+
+    PROJECT_SVC = GWT.create(ProjectAdminService.class);
+    JsonUtil.bind(PROJECT_SVC, "rpc/ProjectAdminService");
+  }
+}
diff --git a/webapp/static/closedtriangle.gif b/appjar/src/main/java/com/google/gerrit/client/arrowRight.gif
similarity index 100%
rename from webapp/static/closedtriangle.gif
rename to appjar/src/main/java/com/google/gerrit/client/arrowRight.gif
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java b/appjar/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java
new file mode 100644
index 0000000..5b2247d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/AccountDashboardScreen.java
@@ -0,0 +1,87 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.data.AccountDashboardInfo;
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.rpc.ScreenLoadCallback;
+import com.google.gerrit.client.ui.Screen;
+
+
+public class AccountDashboardScreen extends Screen {
+  private Account.Id ownerId;
+  private ChangeTable table;
+  private ChangeTable.Section byOwner;
+  private ChangeTable.Section forReview;
+  private ChangeTable.Section closed;
+
+  public AccountDashboardScreen(final Account.Id id) {
+    ownerId = id;
+  }
+
+  @Override
+  public Object getScreenCacheToken() {
+    return getClass();
+  }
+
+  @Override
+  public Screen recycleThis(final Screen newScreen) {
+    ownerId = ((AccountDashboardScreen) newScreen).ownerId;
+    return this;
+  }
+
+  @Override
+  public void onLoad() {
+    if (table == null) {
+      table = new ChangeTable();
+      byOwner = new ChangeTable.Section("");
+      forReview = new ChangeTable.Section("");
+      closed = new ChangeTable.Section("");
+
+      table.addSection(byOwner);
+      table.addSection(forReview);
+      table.addSection(closed);
+      add(table);
+    }
+    table.setSavePointerId(Link.toAccountDashboard(ownerId));
+    super.onLoad();
+    Util.LIST_SVC.forAccount(ownerId,
+        new ScreenLoadCallback<AccountDashboardInfo>() {
+          public void onSuccess(final AccountDashboardInfo r) {
+            // TODO Actually we want to cancel the RPC if detached.
+            if (isAttached()) {
+              display(r);
+            }
+          }
+        });
+  }
+
+  private void display(final AccountDashboardInfo r) {
+    table.setAccountInfoCache(r.getAccounts());
+
+    final AccountInfo o = r.getAccounts().get(r.getOwner());
+    setTitleText(Util.M.accountDashboardTitle(o.getFullName()));
+    byOwner.setTitleText(Util.M.changesUploadedBy(o.getFullName()));
+    forReview.setTitleText(Util.M.changesReviewableBy(o.getFullName()));
+    closed.setTitleText(Util.C.changesRecentlyClosed());
+
+    byOwner.display(r.getByOwner());
+    forReview.display(r.getForReview());
+    closed.display(r.getClosed());
+    table.finishDisplay(true);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java b/appjar/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
new file mode 100644
index 0000000..adac654
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
@@ -0,0 +1,185 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.data.ApprovalDetail;
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.ui.AccountDashboardLink;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** Displays a table of {@link ApprovalDetail} objects for a change record. */
+public class ApprovalTable extends Composite {
+  private final List<ApprovalType> types;
+  private final Grid table;
+  private final Panel missing;
+  private AccountInfoCache accountCache = AccountInfoCache.empty();
+
+  public ApprovalTable() {
+
+    types = Common.getGerritConfig().getApprovalTypes();
+    table = new Grid(1, 3 + types.size());
+    table.addStyleName("gerrit-InfoTable");
+    displayHeader();
+
+    missing = new FlowPanel();
+    missing.setStyleName("gerrit-Change-MissingApprovalList");
+
+    final FlowPanel fp = new FlowPanel();
+    fp.add(table);
+    fp.add(missing);
+    initWidget(fp);
+  }
+
+  private void displayHeader() {
+    int col = 0;
+    header(col++, Util.C.approvalTableReviewer());
+    header(col++, "");
+
+    for (final ApprovalType t : types) {
+      header(col++, t.getCategory().getName());
+    }
+    applyEdgeStyles(0);
+  }
+
+  private void header(final int col, final String title) {
+    table.setText(0, col, title);
+    table.getCellFormatter().addStyleName(0, col, "header");
+  }
+
+  private void applyEdgeStyles(final int row) {
+    final CellFormatter fmt = table.getCellFormatter();
+    fmt.addStyleName(row, 0, "leftmost");
+    fmt.addStyleName(row, 0, "reviewer");
+    fmt.addStyleName(row, 1, "approvalrole");
+    fmt.addStyleName(row, 1 + types.size(), "rightmost");
+    fmt.addStyleName(row, 2 + types.size(), "approvalhint");
+  }
+
+  private void applyScoreStyles(final int row) {
+    final CellFormatter fmt = table.getCellFormatter();
+    for (int col = 0; col < types.size(); col++) {
+      fmt.addStyleName(row, 2 + col, "approvalscore");
+    }
+  }
+
+  public void setAccountInfoCache(final AccountInfoCache aic) {
+    assert aic != null;
+    accountCache = aic;
+  }
+
+  private AccountDashboardLink link(final Account.Id id) {
+    return AccountDashboardLink.link(accountCache, id);
+  }
+
+  public void display(final Set<ApprovalCategory.Id> need,
+      final List<ApprovalDetail> rows) {
+    final int oldcnt = table.getRowCount();
+    table.resizeRows(1 + rows.size());
+    if (oldcnt < 1 + rows.size()) {
+      for (int row = oldcnt; row < 1 + rows.size(); row++) {
+        applyEdgeStyles(row);
+        applyScoreStyles(row);
+      }
+    }
+
+    if (rows.isEmpty()) {
+      table.setVisible(false);
+    } else {
+      table.setVisible(true);
+      for (int i = 0; i < rows.size(); i++) {
+        displayRow(i + 1, rows.get(i));
+      }
+    }
+
+    missing.clear();
+    missing.setVisible(false);
+    if (need != null) {
+      for (final ApprovalType at : types) {
+        if (need.contains(at.getCategory().getId())) {
+          final Label l =
+              new Label(Util.M.needApproval(at.getCategory().getName()));
+          l.setStyleName("gerrit-Change-MissingApproval");
+          missing.add(l);
+          missing.setVisible(true);
+        }
+      }
+    }
+  }
+
+  private void displayRow(final int row, final ApprovalDetail ad) {
+    final CellFormatter fmt = table.getCellFormatter();
+    final Map<ApprovalCategory.Id, ChangeApproval> am = ad.getApprovalMap();
+    final StringBuilder hint = new StringBuilder();
+    int col = 0;
+    table.setWidget(row, col++, link(ad.getAccount()));
+    table.clearCell(row, col++); // TODO populate the account role
+
+    for (final ApprovalType type : types) {
+      final ChangeApproval ca = am.get(type.getCategory().getId());
+      if (ca == null || ca.getValue() == 0) {
+        table.clearCell(row, col);
+        col++;
+        continue;
+      }
+
+      final ApprovalCategoryValue acv = type.getValue(ca);
+      if (acv != null) {
+        if (hint.length() > 0) {
+          hint.append("; ");
+        }
+        hint.append(acv.getName());
+      }
+
+      if (type.isMaxNegative(ca)) {
+        table.setWidget(row, col, Gerrit.ICONS.redNot().createImage());
+
+      } else if (type.isMaxPositive(ca)) {
+        table.setWidget(row, col, Gerrit.ICONS.greenCheck().createImage());
+
+      } else {
+        String vstr = String.valueOf(ca.getValue());
+        if (ca.getValue() > 0) {
+          vstr = "+" + vstr;
+          fmt.removeStyleName(row, col, "negscore");
+          fmt.addStyleName(row, col, "posscore");
+        } else {
+          fmt.addStyleName(row, col, "negscore");
+          fmt.removeStyleName(row, col, "posscore");
+        }
+        table.setText(row, col, vstr);
+      }
+
+      col++;
+    }
+
+    table.setText(row, col++, hint.toString());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
new file mode 100644
index 0000000..3fc0285
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
@@ -0,0 +1,69 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gwt.i18n.client.Constants;
+
+public interface ChangeConstants extends Constants {
+  String statusLongNew();
+  String statusLongSubmitted();
+  String statusLongMerged();
+  String statusLongAbandoned();
+
+  String changesRecentlyClosed();
+
+  String starredHeading();
+
+  String changeTableColumnID();
+  String changeTableColumnSubject();
+  String changeTableColumnOwner();
+  String changeTableColumnReviewers();
+  String changeTableColumnProject();
+  String changeTableColumnLastUpdate();
+  String changeTableNone();
+
+  String patchTableColumnName();
+  String patchTableColumnDelta();
+  String patchTableColumnComments();
+  String patchTableColumnDiff();
+  String patchTableDiffSideBySide();
+  String patchTableDiffUnified();
+
+  String changeScreenDescription();
+  String changeScreenDependencies();
+  String changeScreenDependsOn();
+  String changeScreenNeededBy();
+  String changeScreenApprovals();
+  String changeScreenMessages();
+
+  String approvalTableReviewer();
+
+  String changeInfoBlockOwner();
+  String changeInfoBlockProject();
+  String changeInfoBlockBranch();
+  String changeInfoBlockUploaded();
+  String changeInfoBlockUpdated();
+  String changeInfoBlockStatus();
+  String changePermalink();
+
+  String messageNoAuthor();
+  String messageExpandRecent();
+  String messageExpandAll();
+  String messageCollapseAll();
+
+  String patchSetInfoAuthor();
+  String patchSetInfoCommitter();
+  String patchSetInfoDownload();  
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
new file mode 100644
index 0000000..e13646d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
@@ -0,0 +1,48 @@
+statusLongNew = Review in Progress
+statusLongSubmitted = Submitted, Merge Pending
+statusLongMerged = Merged
+statusLongAbandoned = Abandoned
+
+starredHeading = Starred Changes
+changesRecentlyClosed = Recently closed changes
+
+changeTableColumnID = ID
+changeTableColumnSubject = Subject
+changeTableColumnOwner = Owner
+changeTableColumnReviewers = Reviewers
+changeTableColumnProject = Project
+changeTableColumnLastUpdate = LastUpdate
+changeTableNone = (None)
+
+patchTableColumnName = File Path
+patchTableColumnDelta = Delta From
+patchTableColumnComments = Comments
+patchTableColumnDiff = Diff
+patchTableDiffSideBySide = Side-by-Side
+patchTableDiffUnified = Unified
+
+changeScreenDescription = Description
+changeScreenDependencies =  Dependencies
+changeScreenDependsOn = Depends On
+changeScreenNeededBy = Needed By
+changeScreenApprovals = Approvals
+changeScreenMessages = Messages
+
+approvalTableReviewer = Reviewer
+
+changeInfoBlockOwner = Owner
+changeInfoBlockProject = Project
+changeInfoBlockBranch = Branch
+changeInfoBlockUploaded = Uploaded
+changeInfoBlockUpdated = Updated
+changeInfoBlockStatus = Status
+changePermalink = Permalink
+
+messageNoAuthor = Gerrit Code Review
+messageExpandRecent = Expand Recent
+messageExpandAll = Expand All
+messageCollapseAll = Collapse All
+
+patchSetInfoAuthor = Author
+patchSetInfoCommitter = Committer
+patchSetInfoDownload = Download
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDetailService.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDetailService.java
new file mode 100644
index 0000000..5045a82
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDetailService.java
@@ -0,0 +1,31 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.data.ChangeDetail;
+import com.google.gerrit.client.data.PatchSetDetail;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.AllowCrossSiteRequest;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+
+public interface ChangeDetailService extends RemoteJsonService {
+  @AllowCrossSiteRequest
+  void changeDetail(Change.Id id, AsyncCallback<ChangeDetail> callback);
+
+  @AllowCrossSiteRequest
+  void patchSetDetail(PatchSet.Id key, AsyncCallback<PatchSetDetail> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDetailServiceImpl.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDetailServiceImpl.java
new file mode 100644
index 0000000..821d922
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDetailServiceImpl.java
@@ -0,0 +1,63 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.data.AccountInfoCacheFactory;
+import com.google.gerrit.client.data.ChangeDetail;
+import com.google.gerrit.client.data.PatchSetDetail;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtorm.client.OrmException;
+
+public class ChangeDetailServiceImpl extends BaseServiceImplementation
+    implements ChangeDetailService {
+  public void changeDetail(final Change.Id id,
+      final AsyncCallback<ChangeDetail> callback) {
+    run(callback, new Action<ChangeDetail>() {
+      public ChangeDetail run(final ReviewDb db) throws OrmException, Failure {
+        final Change change = db.changes().get(id);
+        if (change == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+        assertCanRead(change);
+
+        final ChangeDetail d = new ChangeDetail();
+        d.load(db, new AccountInfoCacheFactory(db), change);
+        return d;
+      }
+    });
+  }
+
+  public void patchSetDetail(final PatchSet.Id id,
+      final AsyncCallback<PatchSetDetail> callback) {
+    run(callback, new Action<PatchSetDetail>() {
+      public PatchSetDetail run(final ReviewDb db) throws OrmException, Failure {
+        final PatchSet ps = db.patchSets().get(id);
+        if (ps == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+        assertCanRead(db.changes().get(ps.getId().getParentKey()));
+
+        final PatchSetDetail d = new PatchSetDetail();
+        d.load(db, ps);
+        return d;
+      }
+    });
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeInfoBlock.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeInfoBlock.java
new file mode 100644
index 0000000..9bd5c84
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeInfoBlock.java
@@ -0,0 +1,87 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import static com.google.gerrit.client.FormatUtil.mediumFormat;
+
+import com.google.gerrit.client.data.ChangeDetail;
+import com.google.gerrit.client.reviewdb.Branch;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.ui.AccountDashboardLink;
+import com.google.gerrit.client.ui.ChangeLink;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+
+public class ChangeInfoBlock extends Composite {
+  private static final int R_OWNER = 0;
+  private static final int R_PROJECT = 1;
+  private static final int R_BRANCH = 2;
+  private static final int R_UPLOADED = 3;
+  private static final int R_UPDATED = 4;
+  private static final int R_STATUS = 5;
+  private static final int R_PERMALINK = 6;
+  private static final int R_CNT = 7;
+
+  private final Grid table;
+
+  public ChangeInfoBlock() {
+    table = new Grid(R_CNT, 2);
+    table.setStyleName("gerrit-InfoBlock");
+    table.addStyleName("gerrit-ChangeInfoBlock");
+
+    initRow(R_OWNER, Util.C.changeInfoBlockOwner());
+    initRow(R_PROJECT, Util.C.changeInfoBlockProject());
+    initRow(R_BRANCH, Util.C.changeInfoBlockBranch());
+    initRow(R_UPLOADED, Util.C.changeInfoBlockUploaded());
+    initRow(R_UPDATED, Util.C.changeInfoBlockUpdated());
+    initRow(R_STATUS, Util.C.changeInfoBlockStatus());
+
+    final CellFormatter fmt = table.getCellFormatter();
+    fmt.addStyleName(0, 0, "topmost");
+    fmt.addStyleName(0, 1, "topmost");
+    fmt.addStyleName(R_CNT - 2, 0, "bottomheader");
+    fmt.addStyleName(R_PERMALINK, 0, "permalink");
+    fmt.addStyleName(R_PERMALINK, 1, "permalink");
+
+    initWidget(table);
+  }
+
+  private void initRow(final int row, final String name) {
+    table.setText(row, 0, name);
+    table.getCellFormatter().addStyleName(row, 0, "header");
+  }
+
+  public void display(final ChangeDetail detail) {
+    final Change chg = detail.getChange();
+    final Branch.NameKey dst = chg.getDest();
+    table.setWidget(R_OWNER, 1, AccountDashboardLink.link(detail.getAccounts(),
+        detail.getChange().getOwner()));
+    table.setText(R_PROJECT, 1, dst.getParentKey().get());
+    table.setText(R_BRANCH, 1, dst.getShortName());
+    table.setText(R_UPLOADED, 1, mediumFormat(chg.getCreatedOn()));
+    table.setText(R_UPDATED, 1, mediumFormat(chg.getLastUpdatedOn()));
+    table.setText(R_STATUS, 1, Util.toLongString(chg.getStatus()));
+
+    if (chg.getStatus().isClosed()) {
+      table.getCellFormatter().addStyleName(R_STATUS, 1, "closedstate");
+    } else {
+      table.getCellFormatter().removeStyleName(R_STATUS, 1, "closedstate");
+    }
+
+    table.setWidget(R_PERMALINK, 1, new ChangeLink(Util.C.changePermalink(),
+        chg.getId()));
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeListService.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeListService.java
new file mode 100644
index 0000000..f4da0f1
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeListService.java
@@ -0,0 +1,51 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.data.AccountDashboardInfo;
+import com.google.gerrit.client.data.MineStarredInfo;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.AllowCrossSiteRequest;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.Set;
+
+public interface ChangeListService extends RemoteJsonService {
+  /** Get the data to show {@link AccountDashboardScreen} for an account. */
+  @AllowCrossSiteRequest
+  void forAccount(Account.Id id, AsyncCallback<AccountDashboardInfo> callback);
+
+  /** Get the changes starred by the caller. */
+  @AllowCrossSiteRequest
+  @SignInRequired
+  void myStarredChanges(AsyncCallback<MineStarredInfo> callback);
+
+  /** Get the ids of all changes starred by the caller. */
+  @AllowCrossSiteRequest
+  @SignInRequired
+  void myStarredChangeIds(AsyncCallback<Set<Change.Id>> callback);
+
+  /**
+   * Add and/or remove changes from the set of starred changes of the caller.
+   * 
+   * @param req the add and remove cluster.
+   */
+  @SignInRequired
+  void toggleStars(ToggleStarRequest req, AsyncCallback<VoidResult> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeListServiceImpl.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeListServiceImpl.java
new file mode 100644
index 0000000..3ed510d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeListServiceImpl.java
@@ -0,0 +1,168 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.data.AccountDashboardInfo;
+import com.google.gerrit.client.data.AccountInfoCacheFactory;
+import com.google.gerrit.client.data.ChangeInfo;
+import com.google.gerrit.client.data.MineStarredInfo;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ChangeAccess;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.reviewdb.StarredChange;
+import com.google.gerrit.client.reviewdb.Change.Id;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.VoidResult;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.ResultSet;
+import com.google.gwtorm.client.Transaction;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class ChangeListServiceImpl extends BaseServiceImplementation implements
+    ChangeListService {
+  public void forAccount(final Account.Id id,
+      final AsyncCallback<AccountDashboardInfo> callback) {
+    final Account.Id me = Common.getAccountId();
+    final Account.Id target = id != null ? id : me;
+    if (target == null) {
+      callback.onFailure(new NoSuchEntityException());
+      return;
+    }
+
+    run(callback, new Action<AccountDashboardInfo>() {
+      public AccountDashboardInfo run(final ReviewDb db) throws OrmException,
+          Failure {
+        final AccountInfoCacheFactory ac = new AccountInfoCacheFactory(db);
+        final Account user = ac.get(target);
+        if (user == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final Set<Change.Id> stars = starredBy(db, me);
+        final ChangeAccess changes = db.changes();
+        final AccountDashboardInfo d;
+
+        d = new AccountDashboardInfo(target);
+        d.setByOwner(filter(changes.byOwnerOpen(target), stars, ac));
+        d.setClosed(filter(changes.byOwnerClosed(target), stars, ac));
+        d.setAccounts(ac.create());
+        return d;
+      }
+    });
+  }
+
+  public void myStarredChanges(final AsyncCallback<MineStarredInfo> callback) {
+    run(callback, new Action<MineStarredInfo>() {
+      public MineStarredInfo run(final ReviewDb db) throws OrmException,
+          Failure {
+        final Account.Id me = Common.getAccountId();
+        final AccountInfoCacheFactory ac = new AccountInfoCacheFactory(db);
+        final Account user = ac.get(me);
+        if (user == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final MineStarredInfo d = new MineStarredInfo(me);
+        final Set<Change.Id> starred = starredBy(db, me);
+        d.setStarred(filter(db.changes().get(starred), starred, ac));
+        Collections.sort(d.getStarred(), new Comparator<ChangeInfo>() {
+          public int compare(final ChangeInfo o1, final ChangeInfo o2) {
+            return o1.getLastUpdatedOn().compareTo(o2.getLastUpdatedOn());
+          }
+        });
+        d.setAccounts(ac.create());
+        return d;
+      }
+    });
+  }
+
+  public void toggleStars(final ToggleStarRequest req,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException {
+        final Account.Id me = Common.getAccountId();
+        final Set<Change.Id> existing = starredBy(db, me);
+        final ArrayList<StarredChange> add = new ArrayList<StarredChange>();
+        final ArrayList<StarredChange> remove = new ArrayList<StarredChange>();
+
+        if (req.getAddSet() != null) {
+          for (final Change.Id id : req.getAddSet()) {
+            if (!existing.contains(id)) {
+              add.add(new StarredChange(new StarredChange.Key(me, id)));
+            }
+          }
+        }
+
+        if (req.getRemoveSet() != null) {
+          for (final Change.Id id : req.getRemoveSet()) {
+            if (existing.contains(id)) {
+              remove.add(new StarredChange(new StarredChange.Key(me, id)));
+            }
+          }
+        }
+
+        if (!add.isEmpty() || !remove.isEmpty()) {
+          final Transaction txn = db.beginTransaction();
+          db.starredChanges().insert(add);
+          db.starredChanges().delete(remove);
+          txn.commit();
+        }
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void myStarredChangeIds(final AsyncCallback<Set<Change.Id>> callback) {
+    run(callback, new Action<Set<Change.Id>>() {
+      public Set<Id> run(final ReviewDb db) throws OrmException {
+        return starredBy(db, Common.getAccountId());
+      }
+    });
+  }
+
+  private static List<ChangeInfo> filter(final ResultSet<Change> rs,
+      final Set<Change.Id> starred, final AccountInfoCacheFactory accts) {
+    final ArrayList<ChangeInfo> r = new ArrayList<ChangeInfo>();
+    for (final Change c : rs) {
+      if (canRead(c)) {
+        final ChangeInfo ci = new ChangeInfo(c, accts);
+        ci.setStarred(starred.contains(ci.getId()));
+        r.add(ci);
+      }
+    }
+    return r;
+  }
+
+  private static Set<Change.Id> starredBy(final ReviewDb db, final Account.Id me)
+      throws OrmException {
+    final Set<Change.Id> existing = new HashSet<Change.Id>();
+    if (me != null) {
+      for (final StarredChange sc : db.starredChanges().byAccount(me)) {
+        existing.add(sc.getChangeId());
+      }
+    }
+    return existing;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeManageService.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeManageService.java
new file mode 100644
index 0000000..a2a7b18
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeManageService.java
@@ -0,0 +1,28 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+public interface ChangeManageService extends RemoteJsonService {
+  @SignInRequired
+  void patchSetAction(ApprovalCategoryValue.Id value, PatchSet.Id patchSetId,
+      AsyncCallback<VoidResult> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeMessages.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeMessages.java
new file mode 100644
index 0000000..17e2ec7
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeMessages.java
@@ -0,0 +1,38 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gwt.i18n.client.Messages;
+
+public interface ChangeMessages extends Messages {
+  String accountDashboardTitle(String fullName);
+  String changesUploadedBy(String fullName);
+  String changesReviewableBy(String fullName);
+
+  String changeScreenTitleId(int id);
+  String patchSetHeader(int id);
+  String patchSetAction(String action, int id);
+  String repoDownload(String project, int change, int ps);
+
+  String patchTableComments(@PluralCount int count);
+
+  String messageWrittenOn(String date);
+
+  String renamedFrom(String sourcePath);
+  String copiedFrom(String sourcePath);
+  String otherFrom(String sourcePath);
+
+  String needApproval(String categoryName);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeMessages.properties b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeMessages.properties
new file mode 100644
index 0000000..4e761ab
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeMessages.properties
@@ -0,0 +1,19 @@
+accountDashboardTitle = Changes for {0}
+changesUploadedBy = Changes uploaded by {0}
+changesReviewableBy = Changes reviewable by {0}
+
+changeScreenTitleId = Change {0}
+patchSetHeader = Patch Set {0}
+patchSetAction = {0} Patch Set {1}
+repoDownload = repo download {0} {1}/{2}
+
+patchTableComments[one] = 1 comment
+patchTableComments = {0} comments
+
+messageWrittenOn = on {0}
+
+renamedFrom = renamed from {0}
+copiedFrom = copied from {0}
+otherFrom = from {0}
+
+needApproval = Need {0}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
new file mode 100644
index 0000000..31703aa
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
@@ -0,0 +1,335 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.data.ChangeDetail;
+import com.google.gerrit.client.data.ChangeInfo;
+import com.google.gerrit.client.data.GitwebLink;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ChangeMessage;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.ScreenLoadCallback;
+import com.google.gerrit.client.ui.ComplexDisclosurePanel;
+import com.google.gerrit.client.ui.DomUtil;
+import com.google.gerrit.client.ui.ExpandAllCommand;
+import com.google.gerrit.client.ui.LinkMenuBar;
+import com.google.gerrit.client.ui.RefreshListener;
+import com.google.gerrit.client.ui.Screen;
+import com.google.gwt.i18n.client.LocaleInfo;
+import com.google.gwt.user.client.ui.Anchor;
+import com.google.gwt.user.client.ui.DisclosurePanel;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.Widget;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+
+public class ChangeScreen extends Screen {
+  private Change.Id changeId;
+  private ChangeInfo changeInfo;
+  private boolean refreshOnSignIn;
+
+  private ChangeInfoBlock infoBlock;
+  private DisclosurePanel descriptionPanel;
+  private HTML description;
+
+  private DisclosurePanel dependenciesPanel;
+  private ChangeTable dependencies;
+  private ChangeTable.Section dependsOn;
+  private ChangeTable.Section neededBy;
+
+  private DisclosurePanel approvalsPanel;
+  private ApprovalTable approvals;
+
+  private FlowPanel patchSetPanels;
+
+  private DisclosurePanel messagesPanel;
+  private Panel messagesContent;
+
+  public ChangeScreen(final Change.Id toShow) {
+    changeId = toShow;
+  }
+
+  public ChangeScreen(final ChangeInfo c) {
+    this(c.getId());
+    changeInfo = c;
+  }
+
+  @Override
+  public Object getScreenCacheToken() {
+    return getClass();
+  }
+
+  @Override
+  public Screen recycleThis(final Screen newScreen) {
+    final ChangeScreen s = (ChangeScreen) newScreen;
+    changeId = s.changeId;
+    changeInfo = s.changeInfo;
+    return this;
+  }
+
+  @Override
+  public void onSignIn() {
+    if (refreshOnSignIn) {
+      refresh();
+    }
+  }
+
+  @Override
+  public void onSignOut() {
+  }
+
+  @Override
+  public void onLoad() {
+    if (descriptionPanel == null) {
+      initUI();
+    }
+
+    displayTitle(changeInfo != null ? changeInfo.getSubject() : null);
+    super.onLoad();
+
+    refresh();
+  }
+
+  public void refresh() {
+    Util.DETAIL_SVC.changeDetail(changeId,
+        new ScreenLoadCallback<ChangeDetail>() {
+          public void onSuccess(final ChangeDetail r) {
+            // TODO Actually we want to cancel the RPC if detached.
+            if (isAttached()) {
+              display(r);
+            }
+          }
+        });
+  }
+
+  private void initUI() {
+    addStyleName("gerrit-ChangeScreen");
+
+    infoBlock = new ChangeInfoBlock();
+
+    description = newDescriptionLabel();
+
+    descriptionPanel = new DisclosurePanel(Util.C.changeScreenDescription());
+    {
+      final Label glue = new Label();
+      final HorizontalPanel hp = new HorizontalPanel();
+      hp.add(description);
+      hp.add(glue);
+      hp.add(infoBlock);
+      hp.setCellWidth(glue, "100%");
+      add(hp);
+      descriptionPanel.setContent(hp);
+      descriptionPanel.setWidth("100%");
+      add(descriptionPanel);
+    }
+
+    dependencies = new ChangeTable();
+    dependsOn = new ChangeTable.Section(Util.C.changeScreenDependsOn());
+    neededBy = new ChangeTable.Section(Util.C.changeScreenNeededBy());
+    dependencies.addSection(dependsOn);
+    dependencies.addSection(neededBy);
+
+    dependenciesPanel = new DisclosurePanel(Util.C.changeScreenDependencies());
+    dependenciesPanel.setContent(dependencies);
+    dependenciesPanel.setWidth("95%");
+    add(dependenciesPanel);
+
+    approvals = new ApprovalTable();
+    approvalsPanel = new DisclosurePanel(Util.C.changeScreenApprovals());
+    approvalsPanel.setContent(wrap(approvals));
+    dependenciesPanel.setWidth("95%");
+    add(approvalsPanel);
+
+    patchSetPanels = new FlowPanel();
+    add(patchSetPanels);
+
+    messagesContent = new FlowPanel();
+    messagesContent.setStyleName("gerrit-ChangeMessages");
+    messagesPanel = new DisclosurePanel(Util.C.changeScreenMessages());
+    messagesPanel.setContent(messagesContent);
+    add(messagesPanel);
+  }
+
+  private void displayTitle(final String subject) {
+    final StringBuilder titleBuf = new StringBuilder();
+    if (LocaleInfo.getCurrentLocale().isRTL()) {
+      if (subject != null) {
+        titleBuf.append(subject);
+        titleBuf.append(" :");
+      }
+      titleBuf.append(Util.M.changeScreenTitleId(changeId.get()));
+    } else {
+      titleBuf.append(Util.M.changeScreenTitleId(changeId.get()));
+      if (subject != null) {
+        titleBuf.append(": ");
+        titleBuf.append(subject);
+      }
+    }
+    setTitleText(titleBuf.toString());
+  }
+
+  private void display(final ChangeDetail detail) {
+    displayTitle(detail.getChange().getSubject());
+
+    refreshOnSignIn = !detail.getChange().getStatus().isClosed();
+    dependencies.setAccountInfoCache(detail.getAccounts());
+    approvals.setAccountInfoCache(detail.getAccounts());
+
+    infoBlock.display(detail);
+    description.setHTML(DomUtil
+        .linkify(DomUtil.escape(detail.getDescription())));
+    dependsOn.display(detail.getDependsOn());
+    neededBy.display(detail.getNeededBy());
+    approvals.display(detail.getMissingApprovals(), detail.getApprovals());
+
+    addPatchSets(detail);
+    addMessages(detail);
+
+    // If any dependency change is still open, show our dependency list.
+    //
+    boolean depsOpen = false;
+    if (!detail.getChange().getStatus().isClosed()
+        && detail.getDependsOn() != null) {
+      for (final ChangeInfo ci : detail.getDependsOn()) {
+        if (ci.getStatus() != Change.Status.MERGED) {
+          depsOpen = true;
+          break;
+        }
+      }
+    }
+
+    descriptionPanel.setOpen(true);
+    dependenciesPanel.setOpen(depsOpen);
+    approvalsPanel.setOpen(true);
+  }
+
+  private void addPatchSets(final ChangeDetail detail) {
+    patchSetPanels.clear();
+
+    final PatchSet currps = detail.getCurrentPatchSet();
+    final GitwebLink gw = Common.getGerritConfig().getGitwebLink();
+    for (final PatchSet ps : detail.getPatchSets()) {
+      final ComplexDisclosurePanel panel =
+          new ComplexDisclosurePanel(Util.M.patchSetHeader(ps.getPatchSetId()),
+              ps == currps);
+      final PatchSetPanel psp = new PatchSetPanel(detail, ps);
+      panel.setContent(psp);
+
+      if (gw != null) {
+        final Anchor revlink =
+            new Anchor(ps.getRevision().get(), false, gw.toRevision(detail
+                .getChange().getDest().getParentKey(), ps));
+        revlink.addStyleName("gerrit-PatchSetLink");
+        panel.getHeader().add(revlink);
+      }
+
+      if (ps == currps) {
+        psp.ensureLoaded(detail.getCurrentPatchSetDetail());
+        psp.addRefreshListener(new RefreshListener() {
+          public void onSuggestRefresh() {
+            refresh();
+          }
+        });
+      } else {
+        panel.addEventHandler(psp);
+      }
+      add(panel);
+      patchSetPanels.add(panel);
+    }
+  }
+
+  private void addMessages(final ChangeDetail detail) {
+    messagesContent.clear();
+
+    final AccountInfoCache accts = detail.getAccounts();
+    final List<ChangeMessage> msgList = detail.getMessages();
+    if (msgList.size() > 1) {
+      messagesContent.add(messagesMenuBar());
+    }
+
+    final long AGE = 7 * 24 * 60 * 60 * 1000L;
+    final Timestamp aged = new Timestamp(System.currentTimeMillis() - AGE);
+
+    for (int i = 0; i < msgList.size(); i++) {
+      final ChangeMessage msg = msgList.get(i);
+      final MessagePanel mp = new MessagePanel(msg);
+      final String panelHeader;
+      final ComplexDisclosurePanel panel;
+
+      if (msg.getAuthor() != null) {
+        panelHeader = FormatUtil.nameEmail(accts.get(msg.getAuthor()));
+      } else {
+        panelHeader = Util.C.messageNoAuthor();
+      }
+
+      if (i == msgList.size() - 1) {
+        mp.isRecent = true;
+      } else {
+        // TODO Instead of opening messages by strict age, do it by "unread"?
+        mp.isRecent = msg.getWrittenOn().after(aged);
+      }
+
+      panel = new ComplexDisclosurePanel(panelHeader, mp.isRecent);
+      panel.getHeader().add(
+          new InlineLabel(Util.M.messageWrittenOn(FormatUtil.mediumFormat(msg
+              .getWrittenOn()))));
+      panel.setContent(mp);
+      messagesContent.add(panel);
+    }
+
+    if (msgList.size() > 1) {
+      messagesContent.add(messagesMenuBar());
+    }
+    messagesPanel.setOpen(msgList.size() > 0);
+  }
+
+  private LinkMenuBar messagesMenuBar() {
+    final Panel c = messagesContent;
+    final LinkMenuBar m = new LinkMenuBar();
+    m.addItem(Util.C.messageExpandRecent(), new ExpandAllCommand(c, true) {
+      @Override
+      protected void expand(final ComplexDisclosurePanel w) {
+        final MessagePanel mp = (MessagePanel) w.getContent();
+        w.setOpen(mp.isRecent);
+      }
+    });
+    m.addItem(Util.C.messageExpandAll(), new ExpandAllCommand(c, true));
+    m.addItem(Util.C.messageCollapseAll(), new ExpandAllCommand(c, false));
+    m.lastInGroup();
+    return m;
+  }
+
+  private static FlowPanel wrap(final Widget w) {
+    final FlowPanel p = new FlowPanel();
+    p.add(w);
+    return p;
+  }
+
+  private static HTML newDescriptionLabel() {
+    final HTML d = new HTML();
+    d.setStyleName("gerrit-ChangeScreen-Description");
+    return d;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeTable.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
new file mode 100644
index 0000000..0fbfdaa
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
@@ -0,0 +1,369 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import static com.google.gerrit.client.FormatUtil.mediumFormat;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.SignedInListener;
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.data.ChangeInfo;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountDashboardLink;
+import com.google.gerrit.client.ui.ChangeLink;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+public class ChangeTable extends FancyFlexTable<ChangeInfo> {
+  private static final String S_C_ID = "C_ID";
+  private static final String S_C_SUBJECT = "C_SUBJECT";
+  private static final String S_C_LAST_UPDATE = "C_LAST_UPDATE";
+  private static final String S_SECTION_HEADER = "SectionHeader";
+  private static final String S_EMPTY_SECTION = "EmptySection";
+
+  private static final int C_STAR = 1;
+  private static final int C_ID = 2;
+  private static final int C_SUBJECT = 3;
+  private static final int C_OWNER = 4;
+  private static final int C_REVIEWERS = 5;
+  private static final int C_PROJECT = 6;
+  private static final int C_LAST_UPDATE = 7;
+  private static final int COLUMNS = 8;
+
+  private final List<Section> sections;
+  private final SignedInListener signedInListener;
+  private AccountInfoCache accountCache = AccountInfoCache.empty();
+
+  public ChangeTable() {
+    sections = new ArrayList<Section>();
+    table.setText(0, C_STAR, "");
+    table.setText(0, C_ID, Util.C.changeTableColumnID());
+    table.setText(0, C_SUBJECT, Util.C.changeTableColumnSubject());
+    table.setText(0, C_OWNER, Util.C.changeTableColumnOwner());
+    table.setText(0, C_REVIEWERS, Util.C.changeTableColumnReviewers());
+    table.setText(0, C_PROJECT, Util.C.changeTableColumnProject());
+    table.setText(0, C_LAST_UPDATE, Util.C.changeTableColumnLastUpdate());
+
+    final FlexCellFormatter fmt = table.getFlexCellFormatter();
+    fmt.addStyleName(0, C_STAR, S_ICON_HEADER);
+    fmt.addStyleName(0, C_ID, S_C_ID);
+    for (int i = C_ID; i < COLUMNS; i++) {
+      fmt.addStyleName(0, i, S_DATA_HEADER);
+    }
+
+    table.addTableListener(new TableListener() {
+      public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+        if (cell == C_STAR) {
+          onStarClick(row);
+        } else if (cell == C_OWNER || cell == C_REVIEWERS) {
+          // Don't do anything.
+        } else if (getRowItem(row) != null) {
+          movePointerTo(row);
+        }
+      }
+    });
+
+    signedInListener = new SignedInListener() {
+      public void onSignIn() {
+        if (table.getRowCount() <= sections.size()) {
+          // There are no data rows in this table, so star status is
+          // simply not relevant to the caller.
+          //
+          return;
+        }
+
+        Util.LIST_SVC.myStarredChangeIds(new GerritCallback<Set<Change.Id>>() {
+          public void onSuccess(final Set<Change.Id> result) {
+            final FlexCellFormatter fmt = table.getFlexCellFormatter();
+            final int max = table.getRowCount();
+            for (int row = 0; row < max; row++) {
+              final ChangeInfo c = getRowItem(row);
+              if (c != null) {
+                c.setStarred(result.contains(c.getId()));
+                setStar(row, c);
+              }
+            }
+          }
+        });
+      }
+
+      public void onSignOut() {
+        final FlexCellFormatter fmt = table.getFlexCellFormatter();
+        final int max = table.getRowCount();
+        for (int row = 0; row < max; row++) {
+          if (getRowItem(row) != null) {
+            table.clearCell(row, C_STAR);
+          }
+        }
+      }
+    };
+  }
+
+  protected void onStarClick(final int row) {
+    final ChangeInfo c = getRowItem(row);
+    if (c != null && Gerrit.isSignedIn()) {
+      final boolean prior = c.isStarred();
+      c.setStarred(!prior);
+      setStar(row, c);
+
+      final ToggleStarRequest req = new ToggleStarRequest();
+      req.toggle(c.getId(), c.isStarred());
+      Util.LIST_SVC.toggleStars(req, new GerritCallback<VoidResult>() {
+        public void onSuccess(final VoidResult result) {
+        }
+
+        @Override
+        public void onFailure(final Throwable caught) {
+          super.onFailure(caught);
+          c.setStarred(prior);
+          setStar(row, c);
+        }
+      });
+    }
+  }
+
+  @Override
+  protected Object getRowItemKey(final ChangeInfo item) {
+    return item.getId();
+  }
+
+  @Override
+  protected boolean onKeyPress(final char keyCode, final int modifiers) {
+    if (super.onKeyPress(keyCode, modifiers)) {
+      return true;
+    }
+    if (modifiers == 0) {
+      switch (keyCode) {
+        case 's':
+          onStarClick(getCurrentRow());
+          return true;
+      }
+    }
+    return false;
+  }
+
+  @Override
+  protected void onOpenItem(final ChangeInfo c) {
+    Gerrit.display(Link.toChange(c), new ChangeScreen(c));
+  }
+
+  @Override
+  public void onLoad() {
+    super.onLoad();
+    Gerrit.addSignedInListener(signedInListener);
+  }
+
+  @Override
+  public void onUnload() {
+    Gerrit.removeSignedInListener(signedInListener);
+    super.onUnload();
+  }
+
+  private void insertNoneRow(final int row) {
+    insertRow(row);
+    table.setText(row, 0, Util.C.changeTableNone());
+    final FlexCellFormatter fmt = table.getFlexCellFormatter();
+    fmt.setColSpan(row, 0, COLUMNS);
+    fmt.setStyleName(row, 0, S_EMPTY_SECTION);
+  }
+
+  private void insertChangeRow(final int row) {
+    insertRow(row);
+    applyDataRowStyle(row);
+  }
+
+  @Override
+  protected void applyDataRowStyle(final int row) {
+    super.applyDataRowStyle(row);
+    final CellFormatter fmt = table.getCellFormatter();
+    fmt.addStyleName(row, C_STAR, S_ICON_CELL);
+    for (int i = C_ID; i < COLUMNS; i++) {
+      fmt.addStyleName(row, i, S_DATA_CELL);
+    }
+    fmt.addStyleName(row, C_ID, S_C_ID);
+    fmt.addStyleName(row, C_SUBJECT, S_C_SUBJECT);
+    fmt.addStyleName(row, C_LAST_UPDATE, S_C_LAST_UPDATE);
+  }
+
+  private void populateChangeRow(final int row, final ChangeInfo c) {
+    final String idstr = String.valueOf(c.getId().get());
+    table.setWidget(row, C_ARROW, null);
+    if (Gerrit.isSignedIn()) {
+      setStar(row, c);
+    }
+    table.setWidget(row, C_ID, new TableChangeLink(idstr, c));
+
+    String s = c.getSubject();
+    if (c.getStatus() != null && c.getStatus() != Change.Status.NEW) {
+      s += " (" + c.getStatus().name() + ")";
+    }
+    table.setWidget(row, C_SUBJECT, new TableChangeLink(s, c));
+    table.setWidget(row, C_OWNER, link(c.getOwner()));
+    table.setText(row, C_REVIEWERS, "TODO");
+    table.setText(row, C_PROJECT, c.getProject().getName());
+    table.setText(row, C_LAST_UPDATE, mediumFormat(c.getLastUpdatedOn()));
+    setRowItem(row, c);
+  }
+
+  private AccountDashboardLink link(final Account.Id id) {
+    return AccountDashboardLink.link(accountCache, id);
+  }
+
+  private void setStar(final int row, final ChangeInfo c) {
+    final AbstractImagePrototype star;
+    if (c.isStarred()) {
+      star = Gerrit.ICONS.starFilled();
+    } else {
+      star = Gerrit.ICONS.starOpen();
+    }
+
+    final Widget i = table.getWidget(row, C_STAR);
+    if (i instanceof Image) {
+      star.applyTo((Image) i);
+    } else {
+      table.setWidget(row, C_STAR, star.createImage());
+    }
+  }
+
+  public void addSection(final Section s) {
+    assert s.parent == null;
+
+    if (s.titleText != null) {
+      s.titleRow = table.getRowCount();
+      table.setText(s.titleRow, 0, s.titleText);
+      final FlexCellFormatter fmt = table.getFlexCellFormatter();
+      fmt.setColSpan(s.titleRow, 0, COLUMNS);
+      fmt.addStyleName(s.titleRow, 0, S_SECTION_HEADER);
+    } else {
+      s.titleRow = -1;
+    }
+
+    s.parent = this;
+    s.dataBegin = table.getRowCount();
+    insertNoneRow(s.dataBegin);
+    sections.add(s);
+  }
+
+  public void setAccountInfoCache(final AccountInfoCache aic) {
+    assert aic != null;
+    accountCache = aic;
+  }
+
+  private int insertRow(final int beforeRow) {
+    for (final Section s : sections) {
+      boolean dirty = false;
+      if (beforeRow <= s.titleRow) {
+        s.titleRow++;
+      }
+      if (beforeRow < s.dataBegin) {
+        s.dataBegin++;
+      }
+    }
+    return table.insertRow(beforeRow);
+  }
+
+  private void removeRow(final int row) {
+    for (final Section s : sections) {
+      if (row < s.titleRow) {
+        s.titleRow--;
+      }
+      if (row < s.dataBegin) {
+        s.dataBegin--;
+      }
+    }
+    table.removeRow(row);
+  }
+
+  private final class TableChangeLink extends ChangeLink {
+    private TableChangeLink(final String text, final ChangeInfo c) {
+      super(text, c);
+    }
+
+    @Override
+    protected void onClick(final Event event) {
+      movePointerTo(id);
+      super.onClick(event);
+    }
+  }
+
+  public static class Section {
+    String titleText;
+
+    ChangeTable parent;
+    int titleRow = -1;
+    int dataBegin;
+    int rows;
+
+    public Section() {
+      this(null);
+    }
+
+    public Section(final String titleText) {
+      setTitleText(titleText);
+    }
+
+    public void setTitleText(final String text) {
+      titleText = text;
+      if (titleRow >= 0) {
+        parent.table.setText(titleRow, 0, titleText);
+      }
+    }
+
+    public void display(final List<ChangeInfo> changeList) {
+      final int sz = changeList != null ? changeList.size() : 0;
+      final boolean hadData = rows > 0;
+
+      if (hadData) {
+        while (sz < rows) {
+          parent.removeRow(dataBegin);
+          rows--;
+        }
+      }
+
+      if (sz == 0) {
+        if (hadData) {
+          parent.insertNoneRow(dataBegin);
+        }
+      } else {
+        if (!hadData) {
+          parent.removeRow(dataBegin);
+        }
+
+        while (rows < sz) {
+          parent.insertChangeRow(dataBegin + rows);
+          rows++;
+        }
+        for (int i = 0; i < sz; i++) {
+          parent.populateChangeRow(dataBegin + i, changeList.get(i));
+        }
+      }
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/MessagePanel.java b/appjar/src/main/java/com/google/gerrit/client/changes/MessagePanel.java
new file mode 100644
index 0000000..c407d81
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/MessagePanel.java
@@ -0,0 +1,31 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.reviewdb.ChangeMessage;
+import com.google.gerrit.client.ui.DomUtil;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
+
+public class MessagePanel extends Composite {
+  boolean isRecent;
+
+  public MessagePanel(final ChangeMessage msg) {
+    final HTML l =
+        new HTML(DomUtil.linkify(DomUtil.escape(msg.getMessage().trim())));
+    l.setStyleName("gerrit-ChangeMessage-Message");
+    initWidget(l);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/MineStarredScreen.java b/appjar/src/main/java/com/google/gerrit/client/changes/MineStarredScreen.java
new file mode 100644
index 0000000..0157542
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/MineStarredScreen.java
@@ -0,0 +1,55 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.data.MineStarredInfo;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountScreen;
+
+
+public class MineStarredScreen extends AccountScreen {
+  private ChangeTable table;
+  private ChangeTable.Section starred;
+
+  public MineStarredScreen() {
+    super(Util.C.starredHeading());
+
+    table = new ChangeTable();
+    starred = new ChangeTable.Section();
+
+    table.addSection(starred);
+    table.setSavePointerId(Link.MINE_STARRED);
+
+    add(table);
+  }
+
+  @Override
+  public Object getScreenCacheToken() {
+    return Link.MINE_STARRED;
+  }
+
+  @Override
+  public void onLoad() {
+    super.onLoad();
+    Util.LIST_SVC.myStarredChanges(new GerritCallback<MineStarredInfo>() {
+      public void onSuccess(final MineStarredInfo result) {
+        table.setAccountInfoCache(result.getAccounts());
+        starred.display(result.getStarred());
+        table.finishDisplay(true);
+      }
+    });
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/PatchSetPanel.java b/appjar/src/main/java/com/google/gerrit/client/changes/PatchSetPanel.java
new file mode 100644
index 0000000..8ce4740
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/PatchSetPanel.java
@@ -0,0 +1,243 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.SignedInListener;
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.data.ChangeDetail;
+import com.google.gerrit.client.data.PatchSetDetail;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.UserIdentity;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.RefreshListener;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.DisclosureEvent;
+import com.google.gwt.user.client.ui.DisclosureHandler;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+class PatchSetPanel extends Composite implements DisclosureHandler {
+  private static final int R_AUTHOR = 0;
+  private static final int R_COMMITTER = 1;
+  private static final int R_DOWNLOAD = 2;
+  private static final int R_CNT = 3;
+
+  private final ChangeDetail changeDetail;
+  private final PatchSet patchSet;
+  private final FlowPanel body;
+  private List<RefreshListener> refreshListeners;
+
+  private Grid infoTable;
+  private Panel actionsPanel;
+  private PatchTable patchTable;
+  private SignedInListener signedInListener;
+
+  PatchSetPanel(final ChangeDetail detail, final PatchSet ps) {
+    changeDetail = detail;
+    patchSet = ps;
+    body = new FlowPanel();
+    initWidget(body);
+  }
+
+  public void addRefreshListener(final RefreshListener r) {
+    if (refreshListeners == null) {
+      refreshListeners = new ArrayList<RefreshListener>();
+    }
+    if (!refreshListeners.contains(r)) {
+      refreshListeners.add(r);
+    }
+  }
+
+  public void removeRefreshListener(final RefreshListener r) {
+    if (refreshListeners != null) {
+      refreshListeners.remove(r);
+    }
+  }
+
+  protected void fireOnSuggestRefresh() {
+    if (refreshListeners != null) {
+      for (final RefreshListener r : refreshListeners) {
+        r.onSuggestRefresh();
+      }
+    }
+  }
+
+  @Override
+  protected void onLoad() {
+    super.onLoad();
+    if (signedInListener != null) {
+      Gerrit.addSignedInListener(signedInListener);
+    }
+  }
+
+  @Override
+  protected void onUnload() {
+    if (signedInListener != null) {
+      Gerrit.removeSignedInListener(signedInListener);
+    }
+    super.onUnload();
+  }
+
+  public void ensureLoaded(final PatchSetDetail detail) {
+    infoTable = new Grid(R_CNT, 2);
+    infoTable.setStyleName("gerrit-InfoBlock");
+    infoTable.addStyleName("gerrit-PatchSetInfoBlock");
+
+    initRow(R_AUTHOR, Util.C.patchSetInfoAuthor());
+    initRow(R_COMMITTER, Util.C.patchSetInfoCommitter());
+    initRow(R_DOWNLOAD, Util.C.patchSetInfoDownload());
+
+    final CellFormatter itfmt = infoTable.getCellFormatter();
+    itfmt.addStyleName(0, 0, "topmost");
+    itfmt.addStyleName(0, 1, "topmost");
+    itfmt.addStyleName(R_CNT - 1, 0, "bottomheader");
+    itfmt.addStyleName(R_AUTHOR, 1, "useridentity");
+    itfmt.addStyleName(R_COMMITTER, 1, "useridentity");
+    itfmt.addStyleName(R_DOWNLOAD, 1, "command");
+
+    infoTable.setText(R_AUTHOR, 1, format(detail.getInfo().getAuthor()));
+    infoTable.setText(R_COMMITTER, 1, format(detail.getInfo().getCommitter()));
+    infoTable.setText(R_DOWNLOAD, 1, Util.M.repoDownload(changeDetail
+        .getChange().getDest().getParentKey().get(), changeDetail.getChange()
+        .getChangeId(), patchSet.getPatchSetId()));
+
+
+    patchTable = new PatchTable();
+    patchTable.setSavePointerId("patchTable "
+        + changeDetail.getChange().getChangeId() + " "
+        + patchSet.getPatchSetId());
+    patchTable.display(detail.getPatches());
+    patchTable.finishDisplay(false);
+
+    body.add(infoTable);
+    if (!changeDetail.getChange().getStatus().isClosed()
+        && changeDetail.isCurrentPatchSet(detail)) {
+      actionsPanel = new FlowPanel();
+      actionsPanel.setStyleName("gerrit-PatchSetActions");
+      signedInListener = new SignedInListener() {
+        public void onSignIn() {
+        }
+
+        public void onSignOut() {
+          actionsPanel.clear();
+          actionsPanel.setVisible(false);
+        }
+      };
+      Gerrit.addSignedInListener(signedInListener);
+      body.add(actionsPanel);
+      populateActions(detail);
+    }
+    body.add(patchTable);
+  }
+
+  private String format(final UserIdentity who) {
+    final StringBuilder r = new StringBuilder();
+    if (who.getName() != null) {
+      r.append(who.getName());
+    }
+    if (who.getEmail() != null) {
+      if (r.length() > 0) {
+        r.append(' ');
+      }
+      r.append('<');
+      r.append(who.getEmail());
+      r.append('>');
+    }
+    if (who.getDate() != null) {
+      if (r.length() > 0) {
+        r.append(' ');
+      }
+      r.append(FormatUtil.mediumFormat(who.getDate()));
+    }
+    return r.toString();
+  }
+
+  private void populateActions(final PatchSetDetail detail) {
+    final Set<ApprovalCategory.Id> allowed = changeDetail.getCurrentActions();
+    if (allowed == null) {
+      // No set of actions, perhaps the user is not signed in?
+      return;
+    }
+
+    for (final ApprovalType at : Common.getGerritConfig().getActionTypes()) {
+      final ApprovalCategoryValue max = at.getMax();
+      if (max == null || max.getValue() <= 0) {
+        // No positive assertion, don't draw a button.
+        continue;
+      }
+      if (!allowed.contains(at.getCategory().getId())) {
+        // User isn't permitted to invoke this.
+        continue;
+      }
+
+      final Button b =
+          new Button(Util.M.patchSetAction(at.getCategory().getName(), detail
+              .getPatchSet().getPatchSetId()));
+      b.addClickListener(new ClickListener() {
+        public void onClick(Widget sender) {
+          b.setEnabled(false);
+          Util.MANAGE_SVC.patchSetAction(max.getId(), patchSet.getId(),
+              new GerritCallback<VoidResult>() {
+                public void onSuccess(VoidResult result) {
+                  actionsPanel.remove(b);
+                  fireOnSuggestRefresh();
+                }
+
+                @Override
+                public void onFailure(Throwable caught) {
+                  b.setEnabled(true);
+                  super.onFailure(caught);
+                }
+              });
+        }
+      });
+      actionsPanel.add(b);
+    }
+  }
+
+  public void onOpen(final DisclosureEvent event) {
+    if (infoTable == null) {
+      Util.DETAIL_SVC.patchSetDetail(patchSet.getId(),
+          new GerritCallback<PatchSetDetail>() {
+            public void onSuccess(final PatchSetDetail result) {
+              ensureLoaded(result);
+            }
+          });
+    }
+  }
+
+  public void onClose(final DisclosureEvent event) {
+  }
+
+  private void initRow(final int row, final String name) {
+    infoTable.setText(row, 0, name);
+    infoTable.getCellFormatter().addStyleName(row, 0, "header");
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/PatchTable.java b/appjar/src/main/java/com/google/gerrit/client/changes/PatchTable.java
new file mode 100644
index 0000000..f8a47e2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/PatchTable.java
@@ -0,0 +1,187 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gerrit.client.ui.PatchLink;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+
+import java.util.List;
+
+public class PatchTable extends FancyFlexTable<Patch> {
+  private static final int C_TYPE = 1;
+  private static final int C_NAME = 2;
+  private static final int C_DELTA = 3;
+  private static final int C_COMMENTS = 4;
+  private static final int C_DIFF = 5;
+  private static final int N_DIFF = 2;
+
+  public PatchTable() {
+    table.setText(0, C_TYPE, "");
+    table.setText(0, C_NAME, Util.C.patchTableColumnName());
+    table.setText(0, C_DELTA, Util.C.patchTableColumnDelta());
+    table.setText(0, C_COMMENTS, Util.C.patchTableColumnComments());
+    table.setText(0, C_DIFF, Util.C.patchTableColumnDiff());
+
+    final FlexCellFormatter fmt = table.getFlexCellFormatter();
+    fmt.addStyleName(0, C_TYPE, S_ICON_HEADER);
+    fmt.addStyleName(0, C_NAME, S_DATA_HEADER);
+    fmt.addStyleName(0, C_DELTA, S_DATA_HEADER);
+    fmt.addStyleName(0, C_COMMENTS, S_DATA_HEADER);
+    fmt.addStyleName(0, C_DIFF, S_DATA_HEADER);
+    fmt.setColSpan(0, C_DIFF, N_DIFF);
+
+    table.addTableListener(new TableListener() {
+      public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
+        movePointerTo(row);
+      }
+    });
+  }
+
+  @Override
+  protected Object getRowItemKey(final Patch item) {
+    return item.getKey();
+  }
+
+  @Override
+  protected void onOpenItem(final Patch item) {
+    History.newItem(Link.toPatchSideBySide(item.getKey()));
+  }
+
+  @Override
+  protected void applyDataRowStyle(final int row) {
+    super.applyDataRowStyle(row);
+    final CellFormatter fmt = table.getCellFormatter();
+    fmt.addStyleName(row, C_TYPE, "ChangeTypeCell");
+
+    fmt.addStyleName(row, C_NAME, S_DATA_CELL);
+    fmt.addStyleName(row, C_NAME, "FilePathCell");
+
+    fmt.addStyleName(row, C_DELTA, S_DATA_CELL);
+
+    fmt.addStyleName(row, C_COMMENTS, S_DATA_CELL);
+    fmt.addStyleName(row, C_COMMENTS, "CommentCell");
+
+    fmt.addStyleName(row, C_DIFF + 0, S_DATA_CELL);
+    fmt.addStyleName(row, C_DIFF + 0, "DiffLinkCell");
+
+    fmt.addStyleName(row, C_DIFF + 1, S_DATA_CELL);
+    fmt.addStyleName(row, C_DIFF + 1, "DiffLinkCell");
+  }
+
+  public void display(final List<Patch> list) {
+    final int sz = list != null ? list.size() : 0;
+    int dataRows = table.getRowCount() - 1;
+    while (sz < dataRows) {
+      table.removeRow(dataRows);
+      dataRows--;
+    }
+
+    for (int i = 0; i < sz; i++) {
+      if (dataRows <= i) {
+        table.insertRow(++dataRows);
+        applyDataRowStyle(i + 1);
+      }
+      populate(i + 1, list.get(i));
+    }
+  }
+
+  private void populate(final int row, final Patch patch) {
+    table.setWidget(row, C_ARROW, null);
+    table.setText(row, C_TYPE, "" + patch.getChangeType().getCode());
+
+    Widget nameLink;
+    if (patch.getPatchType() == Patch.PatchType.UNIFIED) {
+      nameLink = new SideBySide(patch.getKey().get(), patch.getKey());
+    } else {
+      nameLink = new Unified(patch.getKey().get(), patch.getKey());
+    }
+    if (patch.getSourceFileName() != null) {
+      final String secondLine;
+      if (patch.getChangeType() == Patch.ChangeType.RENAMED) {
+        secondLine = Util.M.renamedFrom(patch.getSourceFileName());
+
+      } else if (patch.getChangeType() == Patch.ChangeType.COPIED) {
+        secondLine = Util.M.copiedFrom(patch.getSourceFileName());
+
+      } else {
+        secondLine = Util.M.otherFrom(patch.getSourceFileName());
+      }
+
+      final InlineLabel secondLineLabel = new InlineLabel(secondLine);
+      secondLineLabel.setStyleName("SourceFilePath");
+
+      final FlowPanel fp = new FlowPanel();
+      fp.add(nameLink);
+      fp.add(secondLineLabel);
+      nameLink = fp;
+    }
+    table.setWidget(row, C_NAME, nameLink);
+
+    table.clearCell(row, C_DELTA);
+
+    final int cnt = patch.getCommentCount();
+    if (cnt == 0) {
+      table.clearCell(row, C_COMMENTS);
+    } else {
+      table.setText(row, C_COMMENTS, Util.M.patchTableComments(cnt));
+    }
+
+    if (patch.getPatchType() == Patch.PatchType.UNIFIED) {
+      table.setWidget(row, C_DIFF + 0, new SideBySide(Util.C
+          .patchTableDiffSideBySide(), patch.getKey()));
+    } else {
+      table.clearCell(row, C_DIFF + 0);
+    }
+    table.setWidget(row, C_DIFF + 1, new Unified(
+        Util.C.patchTableDiffUnified(), patch.getKey()));
+
+    setRowItem(row, patch);
+  }
+
+  private final class SideBySide extends PatchLink.SideBySide {
+    private SideBySide(final String text, final Patch.Key p) {
+      super(text, p);
+    }
+
+    @Override
+    protected void onClick(final Event event) {
+      movePointerTo(key);
+      super.onClick(event);
+    }
+  }
+
+  private final class Unified extends PatchLink.Unified {
+    private Unified(final String text, final Patch.Key p) {
+      super(text, p);
+    }
+
+    @Override
+    protected void onClick(final Event event) {
+      movePointerTo(key);
+      super.onClick(event);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ToggleStarRequest.java b/appjar/src/main/java/com/google/gerrit/client/changes/ToggleStarRequest.java
new file mode 100644
index 0000000..ed76729
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/ToggleStarRequest.java
@@ -0,0 +1,63 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.reviewdb.Change;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/** Request parameters to update the changes the user has toggled. */
+public class ToggleStarRequest {
+  protected Set<Change.Id> add;
+  protected Set<Change.Id> remove;
+
+  /**
+   * Request an update to the change's star status.
+   * 
+   * @param id unique id of the change, must not be null.
+   * @param on true if the change should now be starred; false if it should now
+   *        be not starred.
+   */
+  public void toggle(final Change.Id id, final boolean on) {
+    if (on) {
+      if (add == null) {
+        add = new HashSet<Change.Id>();
+      }
+      add.add(id);
+      if (remove != null) {
+        remove.remove(id);
+      }
+    } else {
+      if (remove == null) {
+        remove = new HashSet<Change.Id>();
+      }
+      remove.add(id);
+      if (add != null) {
+        add.remove(id);
+      }
+    }
+  }
+
+  /** Get the set of changes which should have stars added; may be null. */
+  public Set<Change.Id> getAddSet() {
+    return add;
+  }
+
+  /** Get the set of changes which should have stars removed; may be null. */
+  public Set<Change.Id> getRemoveSet() {
+    return remove;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/Util.java b/appjar/src/main/java/com/google/gerrit/client/changes/Util.java
new file mode 100644
index 0000000..5a2e944
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/changes/Util.java
@@ -0,0 +1,57 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.changes;
+
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gwt.core.client.GWT;
+import com.google.gwtjsonrpc.client.JsonUtil;
+
+public class Util {
+  public static final ChangeConstants C = GWT.create(ChangeConstants.class);
+  public static final ChangeMessages M = GWT.create(ChangeMessages.class);
+
+  public static final ChangeDetailService DETAIL_SVC;
+  public static final ChangeListService LIST_SVC;
+  public static final ChangeManageService MANAGE_SVC;
+
+  static {
+    DETAIL_SVC = GWT.create(ChangeDetailService.class);
+    JsonUtil.bind(DETAIL_SVC, "rpc/ChangeDetailService");
+
+    LIST_SVC = GWT.create(ChangeListService.class);
+    JsonUtil.bind(LIST_SVC, "rpc/ChangeListService");
+
+    MANAGE_SVC = GWT.create(ChangeManageService.class);
+    JsonUtil.bind(MANAGE_SVC, "rpc/ChangeManageService");
+  }
+
+  public static String toLongString(final Change.Status status) {
+    if (status == null) {
+      return "";
+    }
+    switch (status) {
+      case NEW:
+        return C.statusLongNew();
+      case SUBMITTED:
+        return C.statusLongSubmitted();
+      case MERGED:
+        return C.statusLongMerged();
+      case ABANDONED:
+        return C.statusLongAbandoned();
+      default:
+        return status.name();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/AccountCache.java b/appjar/src/main/java/com/google/gerrit/client/data/AccountCache.java
new file mode 100644
index 0000000..db2424f
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/AccountCache.java
@@ -0,0 +1,160 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** Cache of account information. */
+public class AccountCache {
+  private final LinkedHashMap<Account.Id, Account> byId =
+      new LinkedHashMap<Account.Id, Account>(16, 0.75f, true) {
+        @Override
+        protected boolean removeEldestEntry(
+            final Map.Entry<Account.Id, Account> eldest) {
+          return 4096 <= size();
+        }
+      };
+
+  /**
+   * Invalidate all cached information about a single user account.
+   * 
+   * @param accountId the account to invalidate from the cache.
+   */
+  public void invalidate(final Account.Id accountId) {
+    synchronized (byId) {
+      byId.remove(accountId);
+    }
+  }
+
+  /**
+   * Get a single account.
+   * 
+   * @param accountId the account to obtain.
+   * @return the cached account entity; null if the account is not in the
+   *         database anymore.
+   */
+  public Account get(final Account.Id accountId) {
+    return get(accountId, null);
+  }
+
+  /**
+   * Get a single account.
+   * 
+   * @param accountId the account to obtain.
+   * @param qd optional connection to reuse (if not null) when doing a lookup.
+   * @return the cached account entity; null if the account is not in the
+   *         database anymore.
+   */
+  public Account get(final Account.Id accountId, final ReviewDb qd) {
+    if (accountId == null) {
+      return null;
+    }
+
+    Account m;
+    synchronized (byId) {
+      m = byId.get(accountId);
+    }
+    if (m != null) {
+      return m;
+    }
+
+    try {
+      final ReviewDb db = qd != null ? qd : Common.getSchemaFactory().open();
+      try {
+        m = db.accounts().get(accountId);
+      } finally {
+        if (qd == null) {
+          db.close();
+        }
+      }
+    } catch (OrmException e) {
+      m = null;
+    }
+    if (m != null) {
+      synchronized (byId) {
+        byId.put(m.getId(), m);
+      }
+    }
+    return m;
+  }
+
+  /**
+   * Lookup multiple account records.
+   * 
+   * @param fetch set of all accounts to obtain.
+   * @param qd optional query handle to use if the account data is not in cache.
+   * @return records which match; if an account listed in <code>fetch</code> is
+   *         not found it will not be returned.
+   */
+  public Collection<Account> get(final Set<Account.Id> fetch, final ReviewDb qd) {
+    final Set<Account.Id> toget = new HashSet<Account.Id>(fetch);
+    final Collection<Account> r = new ArrayList<Account>(toget.size());
+
+    synchronized (byId) {
+      for (final Iterator<Account.Id> i = toget.iterator(); i.hasNext();) {
+        final Account m = byId.get(i.next());
+        if (m != null) {
+          r.add(m);
+          i.remove();
+        }
+      }
+    }
+
+    if (!toget.isEmpty()) {
+      List<Account> found;
+      try {
+        final ReviewDb db = qd != null ? qd : Common.getSchemaFactory().open();
+        try {
+          found = qd.accounts().get(toget).toList();
+        } finally {
+          if (qd == null) {
+            db.close();
+          }
+        }
+      } catch (OrmException e) {
+        found = Collections.emptyList();
+      }
+      if (!found.isEmpty()) {
+        synchronized (byId) {
+          for (final Account a : found) {
+            byId.put(a.getId(), a);
+          }
+        }
+        r.addAll(found);
+      }
+    }
+    return r;
+  }
+
+  /** Force the entire cache to flush from memory and recompute. */
+  public void flush() {
+    synchronized (byId) {
+      byId.clear();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/AccountDashboardInfo.java b/appjar/src/main/java/com/google/gerrit/client/data/AccountDashboardInfo.java
new file mode 100644
index 0000000..e17ef5e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/AccountDashboardInfo.java
@@ -0,0 +1,72 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.changes.AccountDashboardScreen;
+import com.google.gerrit.client.reviewdb.Account;
+
+import java.util.List;
+
+/** Summary information needed for {@link AccountDashboardScreen}. */
+public class AccountDashboardInfo {
+  protected AccountInfoCache accounts;
+  protected Account.Id owner;
+  protected List<ChangeInfo> byOwner;
+  protected List<ChangeInfo> forReview;
+  protected List<ChangeInfo> closed;
+
+  protected AccountDashboardInfo() {
+  }
+
+  public AccountDashboardInfo(final Account.Id forUser) {
+    owner = forUser;
+  }
+
+  public AccountInfoCache getAccounts() {
+    return accounts;
+  }
+
+  public void setAccounts(final AccountInfoCache ac) {
+    accounts = ac;
+  }
+
+  public Account.Id getOwner() {
+    return owner;
+  }
+
+  public List<ChangeInfo> getByOwner() {
+    return byOwner;
+  }
+
+  public void setByOwner(List<ChangeInfo> c) {
+    byOwner = c;
+  }
+
+  public List<ChangeInfo> getForReview() {
+    return forReview;
+  }
+
+  public void setForReview(List<ChangeInfo> c) {
+    forReview = c;
+  }
+
+  public List<ChangeInfo> getClosed() {
+    return closed;
+  }
+
+  public void setClosed(List<ChangeInfo> c) {
+    closed = c;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/AccountInfo.java b/appjar/src/main/java/com/google/gerrit/client/data/AccountInfo.java
new file mode 100644
index 0000000..bdfd787
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/AccountInfo.java
@@ -0,0 +1,64 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Account;
+
+/** Summary information about an {@link Account}, for simple tabular displays. */
+public class AccountInfo {
+  protected Account.Id id;
+  protected String fullName;
+  protected String preferredEmail;
+
+  protected AccountInfo() {
+  }
+
+  /**
+   * Create an 'Anonymous Coward' account info, when only the id is known.
+   * <p>
+   * This constructor should only be a last-ditch effort, when the usual account
+   * lookup has failed and a stale account id has been discovered in the data
+   * store.
+   */
+  public AccountInfo(final Account.Id id) {
+    this.id = id;
+  }
+
+  /**
+   * Create an account description from a real data store record.
+   * 
+   * @param a the data store record holding the specific account details.
+   */
+  public AccountInfo(final Account a) {
+    id = a.getId();
+    fullName = a.getFullName();
+    preferredEmail = a.getPreferredEmail();
+  }
+
+  /** @return the unique local id of the account */
+  public Account.Id getId() {
+    return id;
+  }
+
+  /** @return the full name of the account holder; null if not supplied */
+  public String getFullName() {
+    return fullName;
+  }
+
+  /** @return the email address of the account holder; null if not supplied */
+  public String getPreferredEmail() {
+    return preferredEmail;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/AccountInfoCache.java b/appjar/src/main/java/com/google/gerrit/client/data/AccountInfoCache.java
new file mode 100644
index 0000000..5aafa5d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/AccountInfoCache.java
@@ -0,0 +1,79 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Account;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/** In-memory table of {@link AccountInfo}, indexed by {@link Account.Id}. */
+public class AccountInfoCache {
+  private static final AccountInfoCache EMPTY;
+  static {
+    EMPTY = new AccountInfoCache();
+    EMPTY.accounts = Collections.emptyMap();
+  }
+
+  /** Obtain an empty cache singleton. */
+  public static AccountInfoCache empty() {
+    return EMPTY;
+  }
+
+  protected Map<Account.Id, AccountInfo> accounts;
+
+  protected AccountInfoCache() {
+  }
+
+  AccountInfoCache(final Iterable<AccountInfo> list) {
+    accounts = new HashMap<Account.Id, AccountInfo>();
+    for (final AccountInfo ai : list) {
+      accounts.put(ai.getId(), ai);
+    }
+  }
+
+  /**
+   * Lookup the account summary
+   * <p>
+   * The return value can take on one of three forms:
+   * <ul>
+   * <li><code>null</code>, if <code>id == null</code>.</li>
+   * <li>a valid info block, if <code>id</code> was loaded.</li>
+   * <li>an anonymous info block, if <code>id</code> was not loaded.</li>
+   * </ul>
+   * 
+   * @param id the id desired.
+   * @return info block for the account.
+   */
+  public AccountInfo get(final Account.Id id) {
+    if (id == null) {
+      return null;
+    }
+
+    AccountInfo r = accounts.get(id);
+    if (r == null) {
+      r = new AccountInfo(id);
+      accounts.put(id, r);
+    }
+    return r;
+  }
+
+  /** Merge the information from another cache into this one. */
+  public void merge(final AccountInfoCache other) {
+    assert this != EMPTY;
+    accounts.putAll(other.accounts);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/AccountInfoCacheFactory.java b/appjar/src/main/java/com/google/gerrit/client/data/AccountInfoCacheFactory.java
new file mode 100644
index 0000000..ffb351a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/AccountInfoCacheFactory.java
@@ -0,0 +1,112 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+
+/** Efficiently builds a {@link AccountInfoCache}. */
+public class AccountInfoCacheFactory {
+  private final ReviewDb db;
+  private final HashMap<Account.Id, Account> cache;
+  private final HashSet<Account.Id> toFetch;
+
+  public AccountInfoCacheFactory(final ReviewDb schema) {
+    db = schema;
+    cache = new HashMap<Account.Id, Account>();
+    toFetch = new HashSet<Account.Id>();
+  }
+
+  /**
+   * Indicate an account will be needed later on.
+   * <p>
+   * This method permits batch fetching from the data store by building a list
+   * of Account.Ids which need to be obtained during the next {@link #fetch}.
+   * 
+   * @param id identity that will be needed in the future; may be null.
+   */
+  public void want(final Account.Id id) {
+    if (id != null && !cache.containsKey(id)) {
+      toFetch.add(id);
+    }
+  }
+
+  /** Indicate one or more accounts will be needed later on. */
+  public void want(final Collection<Account.Id> ids) {
+    for (final Account.Id id : ids) {
+      want(id);
+    }
+  }
+
+  /** Fetch all accounts previously queued by {@link #want(Account.Id)} */
+  public void fetch() {
+    if (!toFetch.isEmpty()) {
+      for (final Account a : Common.getAccountCache().get(toFetch, db)) {
+        cache.put(a.getId(), a);
+      }
+      toFetch.clear();
+    }
+  }
+
+  /** Load one account entity, reusing a cached instance if already loaded. */
+  public Account get(final Account.Id id) {
+    if (id == null) {
+      return null;
+    }
+
+    Account a = cache.get(id);
+    if (a == null) {
+      if (toFetch.isEmpty()) {
+        a = Common.getAccountCache().get(id, db);
+        if (a != null) {
+          cache.put(id, a);
+        }
+      } else {
+        toFetch.add(id);
+        fetch();
+        a = cache.get(id);
+      }
+    }
+    return a;
+  }
+
+  /** Remember one account that was previously loaded. */
+  public void put(final Account a) {
+    toFetch.remove(a.getId());
+    cache.put(a.getId(), a);
+  }
+
+  /**
+   * Create an AccountInfoCache with the currently loaded Account entities.
+   * <p>
+   * Implicitly invokes {@link #fetch()} prior to creating the cache, ensuring
+   * any previously enqueued entities will be included in the result.
+   * */
+  public AccountInfoCache create() {
+    fetch();
+    final List<AccountInfo> r = new ArrayList<AccountInfo>(cache.size());
+    for (final Account a : cache.values()) {
+      r.add(new AccountInfo(a));
+    }
+    return new AccountInfoCache(r);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/ApprovalDetail.java b/appjar/src/main/java/com/google/gerrit/client/data/ApprovalDetail.java
new file mode 100644
index 0000000..1b727cb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/ApprovalDetail.java
@@ -0,0 +1,92 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class ApprovalDetail {
+  static final Timestamp EG_0 = new Timestamp(0);
+  static final Timestamp EG_D = new Timestamp(Long.MAX_VALUE);
+
+  protected Account.Id account;
+  protected List<ChangeApproval> approvals;
+
+  transient Timestamp sortOrder = EG_D;
+
+  protected ApprovalDetail() {
+  }
+
+  public ApprovalDetail(final Account.Id id) {
+    account = id;
+    approvals = new ArrayList<ChangeApproval>();
+  }
+
+  public Account.Id getAccount() {
+    return account;
+  }
+
+  public Map<ApprovalCategory.Id, ChangeApproval> getApprovalMap() {
+    final HashMap<ApprovalCategory.Id, ChangeApproval> r;
+    r = new HashMap<ApprovalCategory.Id, ChangeApproval>();
+    for (final ChangeApproval ca : approvals) {
+      r.put(ca.getCategoryId(), ca);
+    }
+    return r;
+  }
+
+  void add(final ChangeApproval ca) {
+    approvals.add(ca);
+
+    final Timestamp g = ca.getGranted();
+    if (g != null && g.compareTo(sortOrder) < 0) {
+      sortOrder = g;
+    }
+  }
+
+  void applyProjectRights(final GroupCache groupCache,
+      final Map<ApprovalCategory.Id, Collection<ProjectRight>> rights) {
+    final Set<AccountGroup.Id> groups = groupCache.getGroups(account);
+    for (final ChangeApproval a : approvals) {
+      Collection<ProjectRight> l = rights.get(a.getCategoryId());
+      short min = 0, max = 0;
+      if (l != null) {
+        for (final ProjectRight r : l) {
+          if (groups.contains(r.getAccountGroupId())) {
+            min = (short) Math.min(min, r.getMinValue());
+            max = (short) Math.max(max, r.getMaxValue());
+          }
+        }
+      }
+
+      if (a.getValue() < min) {
+        a.setValue(min);
+      } else if (a.getValue() > max) {
+        a.setValue(max);
+      }
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/ApprovalType.java b/appjar/src/main/java/com/google/gerrit/client/data/ApprovalType.java
new file mode 100644
index 0000000..4fde172
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/ApprovalType.java
@@ -0,0 +1,110 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ApprovalType {
+  protected ApprovalCategory category;
+  protected List<ApprovalCategoryValue> values;
+  protected short maxNegative;
+  protected short maxPositive;
+
+  private transient Map<Short, ApprovalCategoryValue> byValue;
+
+  protected ApprovalType() {
+  }
+
+  public ApprovalType(final ApprovalCategory ac,
+      final List<ApprovalCategoryValue> valueList) {
+    category = ac;
+    values = new ArrayList<ApprovalCategoryValue>(valueList);
+    Collections.sort(values, new Comparator<ApprovalCategoryValue>() {
+      public int compare(ApprovalCategoryValue o1, ApprovalCategoryValue o2) {
+        return o1.getValue() - o2.getValue();
+      }
+    });
+
+    maxNegative = Short.MIN_VALUE;
+    maxPositive = Short.MAX_VALUE;
+    if (values.size() > 0) {
+      if (values.get(0).getValue() < 0) {
+        maxNegative = values.get(0).getValue();
+      }
+      if (values.get(values.size() - 1).getValue() > 0) {
+        maxPositive = values.get(values.size() - 1).getValue();
+      }
+    }
+  }
+
+  public ApprovalCategory getCategory() {
+    return category;
+  }
+
+  public List<ApprovalCategoryValue> getValues() {
+    return values;
+  }
+
+  public ApprovalCategoryValue getMin() {
+    if (values.isEmpty()) {
+      return null;
+    }
+    return values.get(0);
+  }
+
+  public ApprovalCategoryValue getMax() {
+    if (values.isEmpty()) {
+      return null;
+    }
+    final ApprovalCategoryValue v = values.get(values.size() - 1);
+    return v.getValue() > 0 ? v : null;
+  }
+
+  public boolean isMaxNegative(final ChangeApproval ca) {
+    return maxNegative == ca.getValue();
+  }
+
+  public boolean isMaxPositive(final ChangeApproval ca) {
+    return maxPositive == ca.getValue();
+  }
+
+  public ApprovalCategoryValue getValue(final short value) {
+    initByValue();
+    return byValue.get(value);
+  }
+
+  public ApprovalCategoryValue getValue(final ChangeApproval ca) {
+    initByValue();
+    return byValue.get(ca.getValue());
+  }
+
+  private void initByValue() {
+    if (byValue == null) {
+      byValue = new HashMap<Short, ApprovalCategoryValue>();
+      for (final ApprovalCategoryValue acv : values) {
+        byValue.put(acv.getValue(), acv);
+      }
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/BasePatchDetail.java b/appjar/src/main/java/com/google/gerrit/client/data/BasePatchDetail.java
new file mode 100644
index 0000000..cd32bc9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/BasePatchDetail.java
@@ -0,0 +1,40 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.patches.PatchScreen;
+import com.google.gerrit.client.reviewdb.Patch;
+
+/** Detail necessary to display {@link PatchScreen}. */
+public abstract class BasePatchDetail {
+  protected AccountInfoCache accounts;
+  protected Patch patch;
+
+  protected BasePatchDetail() {
+  }
+
+  public BasePatchDetail(final Patch p, final AccountInfoCache aic) {
+    patch = p;
+    accounts = aic;
+  }
+
+  public AccountInfoCache getAccounts() {
+    return accounts;
+  }
+
+  public Patch getPatch() {
+    return patch;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/ChangeDetail.java b/appjar/src/main/java/com/google/gerrit/client/data/ChangeDetail.java
new file mode 100644
index 0000000..db5bda2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/ChangeDetail.java
@@ -0,0 +1,224 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.changes.ChangeScreen;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+import com.google.gerrit.client.reviewdb.ChangeMessage;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.PatchSetAncestor;
+import com.google.gerrit.client.reviewdb.RevId;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.workflow.FunctionState;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** Detail necessary to display {@link ChangeScreen}. */
+public class ChangeDetail {
+  protected AccountInfoCache accounts;
+  protected Change change;
+  protected List<ChangeInfo> dependsOn;
+  protected List<ChangeInfo> neededBy;
+  protected List<PatchSet> patchSets;
+  protected List<ApprovalDetail> approvals;
+  protected Set<ApprovalCategory.Id> missingApprovals;
+  protected List<ChangeMessage> messages;
+  protected PatchSet.Id currentPatchSetId;
+  protected PatchSetDetail currentDetail;
+  protected Set<ApprovalCategory.Id> currentActions;
+
+  public ChangeDetail() {
+  }
+
+  public void load(final ReviewDb db, final AccountInfoCacheFactory acc,
+      final Change c) throws OrmException {
+    change = c;
+    final Account.Id owner = change.getOwner();
+    acc.want(owner);
+
+    patchSets = db.patchSets().byChange(change.getId()).toList();
+    messages = db.changeMessages().byChange(change.getId()).toList();
+    for (final ChangeMessage m : messages) {
+      acc.want(m.getAuthor());
+    }
+
+    final List<ChangeApproval> allApprovals =
+        db.changeApprovals().byChange(change.getId()).toList();
+    if (!change.getStatus().isClosed()) {
+      final Account.Id me = Common.getAccountId();
+      final FunctionState fs = new FunctionState(change, allApprovals);
+      missingApprovals = new HashSet<ApprovalCategory.Id>();
+      currentActions = new HashSet<ApprovalCategory.Id>();
+      for (final ApprovalType at : Common.getGerritConfig().getApprovalTypes()) {
+        at.getCategory().getFunction().run(at, fs);
+        if (!fs.isValid(at)) {
+          missingApprovals.add(at.getCategory().getId());
+        }
+      }
+      for (final ApprovalType at : Common.getGerritConfig().getActionTypes()) {
+        if (at.getCategory().getFunction().isValid(me, at, fs)) {
+          currentActions.add(at.getCategory().getId());
+        }
+      }
+    }
+
+    final HashMap<Account.Id, ApprovalDetail> ad =
+        new HashMap<Account.Id, ApprovalDetail>();
+    for (ChangeApproval ca : allApprovals) {
+      ApprovalDetail d = ad.get(ca.getAccountId());
+      if (d == null) {
+        d = new ApprovalDetail(ca.getAccountId());
+        ad.put(d.getAccount(), d);
+      }
+      d.add(ca);
+    }
+    acc.want(ad.keySet());
+    approvals = new ArrayList<ApprovalDetail>(ad.values());
+    Collections.sort(approvals, new Comparator<ApprovalDetail>() {
+      public int compare(final ApprovalDetail o1, final ApprovalDetail o2) {
+        return o2.sortOrder.compareTo(o1.sortOrder);
+      }
+    });
+
+    currentPatchSetId = change.currentPatchSetId();
+    if (currentPatchSetId != null) {
+      currentDetail = new PatchSetDetail();
+      currentDetail.load(db, getCurrentPatchSet());
+
+      final HashSet<Change.Id> changesToGet = new HashSet<Change.Id>();
+      final List<Change.Id> ancestorOrder = new ArrayList<Change.Id>();
+      for (final PatchSetAncestor a : db.patchSetAncestors().ancestorsOf(
+          currentPatchSetId).toList()) {
+        for (PatchSet p : db.patchSets().byRevision(a.getAncestorRevision())) {
+          final Change.Id ck = p.getId().getParentKey();
+          if (changesToGet.add(ck)) {
+            ancestorOrder.add(ck);
+          }
+        }
+      }
+
+      final RevId cprev = getCurrentPatchSet().getRevision();
+      final List<PatchSetAncestor> descendants =
+          cprev != null ? db.patchSetAncestors().descendantsOf(cprev).toList()
+              : Collections.<PatchSetAncestor> emptyList();
+      for (final PatchSetAncestor a : descendants) {
+        changesToGet.add(a.getPatchSet().getParentKey());
+      }
+      final Map<Change.Id, Change> m =
+          db.changes().toMap(db.changes().get(changesToGet));
+
+      dependsOn = new ArrayList<ChangeInfo>();
+      for (final Change.Id a : ancestorOrder) {
+        final Change ac = m.get(a);
+        if (ac != null) {
+          dependsOn.add(new ChangeInfo(ac, acc));
+        }
+      }
+
+      neededBy = new ArrayList<ChangeInfo>();
+      for (final PatchSetAncestor a : descendants) {
+        final Change ac = m.get(a.getPatchSet().getParentKey());
+        if (ac != null) {
+          neededBy.add(new ChangeInfo(ac, acc));
+        }
+      }
+
+      Collections.sort(neededBy, new Comparator<ChangeInfo>() {
+        public int compare(final ChangeInfo o1, final ChangeInfo o2) {
+          // TODO sort neededBy by something more reasonable than Id
+          return o1.getId().get() - o2.getId().get();
+        }
+      });
+    }
+
+    accounts = acc.create();
+  }
+
+  public AccountInfoCache getAccounts() {
+    return accounts;
+  }
+
+  public Change getChange() {
+    return change;
+  }
+
+  public List<ChangeInfo> getDependsOn() {
+    return dependsOn;
+  }
+
+  public List<ChangeInfo> getNeededBy() {
+    return neededBy;
+  }
+
+  public List<ChangeMessage> getMessages() {
+    return messages;
+  }
+
+  public List<PatchSet> getPatchSets() {
+    return patchSets;
+  }
+
+  public List<ApprovalDetail> getApprovals() {
+    return approvals;
+  }
+
+  public Set<ApprovalCategory.Id> getMissingApprovals() {
+    return missingApprovals;
+  }
+
+  public Set<ApprovalCategory.Id> getCurrentActions() {
+    return currentActions;
+  }
+
+  public boolean isCurrentPatchSet(final PatchSetDetail detail) {
+    return currentPatchSetId != null
+        && detail.getPatchSet().getId().equals(currentPatchSetId);
+  }
+
+  public PatchSet getCurrentPatchSet() {
+    if (currentPatchSetId != null) {
+      // We search through the list backwards because its *very* likely
+      // that the current patch set is also the last patch set.
+      //
+      for (int i = patchSets.size() - 1; i >= 0; i--) {
+        final PatchSet ps = patchSets.get(i);
+        if (ps.getId().equals(currentPatchSetId)) {
+          return ps;
+        }
+      }
+    }
+    return null;
+  }
+
+  public PatchSetDetail getCurrentPatchSetDetail() {
+    return currentDetail;
+  }
+
+  public String getDescription() {
+    return currentDetail != null ? currentDetail.getInfo().getMessage() : "";
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/ChangeInfo.java b/appjar/src/main/java/com/google/gerrit/client/data/ChangeInfo.java
new file mode 100644
index 0000000..3aed720
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/ChangeInfo.java
@@ -0,0 +1,77 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.Change;
+
+import java.sql.Timestamp;
+import java.util.Date;
+
+public class ChangeInfo {
+  protected Change.Id id;
+  protected Account.Id owner;
+  protected String subject;
+  protected Change.Status status;
+  protected ProjectInfo project;
+  protected boolean starred;
+  protected Timestamp lastUpdatedOn;
+
+  protected ChangeInfo() {
+  }
+
+  public ChangeInfo(final Change c, final AccountInfoCacheFactory acc) {
+    id = c.getId();
+    owner = c.getOwner();
+    subject = c.getSubject();
+    status = c.getStatus();
+    project = new ProjectInfo(c.getDest().getParentKey());
+    lastUpdatedOn = c.getLastUpdatedOn();
+
+    acc.want(owner);
+  }
+
+  public Change.Id getId() {
+    return id;
+  }
+
+  public Account.Id getOwner() {
+    return owner;
+  }
+
+  public String getSubject() {
+    return subject;
+  }
+
+  public Change.Status getStatus() {
+    return status;
+  }
+
+  public ProjectInfo getProject() {
+    return project;
+  }
+
+  public boolean isStarred() {
+    return starred;
+  }
+
+  public void setStarred(final boolean s) {
+    starred = s;
+  }
+
+  public Date getLastUpdatedOn() {
+    return lastUpdatedOn;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/GerritConfig.java b/appjar/src/main/java/com/google/gerrit/client/data/GerritConfig.java
new file mode 100644
index 0000000..29a6eb1
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/GerritConfig.java
@@ -0,0 +1,127 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.SystemConfig;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class GerritConfig {
+  protected String canonicalUrl;
+  protected GitwebLink gitweb;
+  protected List<ApprovalType> approvalTypes;
+  protected List<ApprovalType> actionTypes;
+  protected int sshdPort;
+  protected boolean useContributorAgreements;
+  protected SystemConfig.LoginType loginType;
+  private transient Map<ApprovalCategory.Id, ApprovalType> byCategoryId;
+
+  public GerritConfig() {
+  }
+
+  public String getCanonicalUrl() {
+    return canonicalUrl;
+  }
+
+  public void setCanonicalUrl(final String u) {
+    canonicalUrl = u;
+  }
+
+  public SystemConfig.LoginType getLoginType() {
+    return loginType;
+  }
+
+  public void setLoginType(final SystemConfig.LoginType t) {
+    loginType = t;
+  }
+
+  public GitwebLink getGitwebLink() {
+    return gitweb;
+  }
+
+  public void setGitwebLink(final GitwebLink w) {
+    gitweb = w;
+  }
+
+  public void add(final ApprovalType t) {
+    if (t.getCategory().isAction()) {
+      initActionTypes();
+      actionTypes.add(t);
+    } else {
+      initApprovalTypes();
+      approvalTypes.add(t);
+    }
+  }
+
+  public List<ApprovalType> getApprovalTypes() {
+    initApprovalTypes();
+    return approvalTypes;
+  }
+
+  private void initApprovalTypes() {
+    if (approvalTypes == null) {
+      approvalTypes = new ArrayList<ApprovalType>();
+    }
+  }
+
+  public List<ApprovalType> getActionTypes() {
+    initActionTypes();
+    return actionTypes;
+  }
+
+  private void initActionTypes() {
+    if (actionTypes == null) {
+      actionTypes = new ArrayList<ApprovalType>();
+    }
+  }
+
+  public int getSshdPort() {
+    return sshdPort;
+  }
+
+  public void setSshdPort(final int p) {
+    sshdPort = p;
+  }
+
+  public boolean isUseContributorAgreements() {
+    return useContributorAgreements;
+  }
+
+  public void setUseContributorAgreements(final boolean r) {
+    useContributorAgreements = r;
+  }
+
+  public ApprovalType getApprovalType(final ApprovalCategory.Id id) {
+    if (byCategoryId == null) {
+      byCategoryId = new HashMap<ApprovalCategory.Id, ApprovalType>();
+      if (actionTypes != null) {
+        for (final ApprovalType t : actionTypes) {
+          byCategoryId.put(t.getCategory().getId(), t);
+        }
+      }
+
+      if (approvalTypes != null) {
+        for (final ApprovalType t : approvalTypes) {
+          byCategoryId.put(t.getCategory().getId(), t);
+        }
+      }
+    }
+    return byCategoryId.get(id);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/GitwebLink.java b/appjar/src/main/java/com/google/gerrit/client/data/GitwebLink.java
new file mode 100644
index 0000000..a39f6c9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/GitwebLink.java
@@ -0,0 +1,83 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Branch;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gwt.http.client.URL;
+
+/** Link to an external gitweb server. */
+public class GitwebLink {
+  protected String baseUrl;
+
+  protected GitwebLink() {
+  }
+
+  public GitwebLink(final String base) {
+    baseUrl = base + "?";
+  }
+
+  public String toRevision(final Project.NameKey project, final PatchSet ps) {
+    final StringBuilder r = new StringBuilder();
+    p(r, project);
+    h(r, ps);
+    return baseUrl + r;
+  }
+
+  public String toProject(final Project.NameKey project) {
+    final StringBuilder r = new StringBuilder();
+    p(r, project);
+    a(r, "summary");
+    return baseUrl + r;
+  }
+
+  public String toBranch(final Branch.NameKey branch) {
+    final StringBuilder r = new StringBuilder();
+    p(r, branch.getParentKey());
+    h(r, branch);
+    a(r, "shortlog");
+    return baseUrl + r;
+  }
+
+  private static void p(final StringBuilder r, final Project.NameKey project) {
+    String n = project.get();
+    if (!n.endsWith(".git")) {
+      n += ".git";
+    }
+    var(r, "p", n);
+  }
+
+  private static void h(final StringBuilder r, final PatchSet ps) {
+    var(r, "h", ps.getRevision().get());
+  }
+
+  private static void h(final StringBuilder r, final Branch.NameKey branch) {
+    var(r, "h", branch.get());
+  }
+
+  private static void a(final StringBuilder r, final String where) {
+    var(r, "a", where);
+  }
+
+  private static void var(final StringBuilder r, final String n, final String v) {
+    if (r.length() > 0) {
+      r.append(";");
+    }
+    r.append(n);
+    r.append("=");
+    r.append(URL.encodeComponent(v));
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/GroupCache.java b/appjar/src/main/java/com/google/gerrit/client/data/GroupCache.java
new file mode 100644
index 0000000..17a569d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/GroupCache.java
@@ -0,0 +1,210 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.AccountGroupMember;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.reviewdb.SystemConfig;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+/** Cache of group information, including account memberships. */
+public class GroupCache {
+  private AccountGroup.Id adminGroupId;
+  private AccountGroup.Id anonymousGroupId;
+  private AccountGroup.Id registeredGroupId;
+  private Set<AccountGroup.Id> anonOnly;
+
+
+  private final LinkedHashMap<Account.Id, Set<AccountGroup.Id>> byAccount =
+      new LinkedHashMap<Account.Id, Set<AccountGroup.Id>>(16, 0.75f, true) {
+        @Override
+        protected boolean removeEldestEntry(
+            final Map.Entry<Account.Id, Set<AccountGroup.Id>> eldest) {
+          return 4096 <= size();
+        }
+      };
+
+  public GroupCache(final SystemConfig cfg) {
+    adminGroupId = cfg.adminGroupId;
+    anonymousGroupId = cfg.anonymousGroupId;
+    registeredGroupId = cfg.registeredGroupId;
+
+    anonOnly =
+        Collections.unmodifiableSet(Collections.singleton(anonymousGroupId));
+  }
+
+  /**
+   * Is this group membership managed automatically by Gerrit?
+   * 
+   * @param groupId the group to test.
+   * @return true if Gerrit handles this group membership automatically; false
+   *         if it can be manually managed.
+   */
+  public boolean isAutoGroup(final AccountGroup.Id groupId) {
+    return isAnonymousUsers(groupId) || isRegisteredUsers(groupId);
+  }
+
+  /**
+   * Does this group designate the magical 'Anonymous Users' group?
+   * 
+   * @param groupId the group to test.
+   * @return true if this is the magical 'Anonymous' group; false otherwise.
+   */
+  public boolean isAnonymousUsers(final AccountGroup.Id groupId) {
+    return anonymousGroupId.equals(groupId);
+  }
+
+  /**
+   * Does this group designate the magical 'Registered Users' group?
+   * 
+   * @param groupId the group to test.
+   * @return true if this is the magical 'Registered' group; false otherwise.
+   */
+  public boolean isRegisteredUsers(final AccountGroup.Id groupId) {
+    return registeredGroupId.equals(groupId);
+  }
+
+  /**
+   * Determine if the user is a member of the blessed administrator group.
+   * 
+   * @param accountId the account to test for membership.
+   * @return true if the account is in the special blessed administration group;
+   *         false otherwise.
+   */
+  public boolean isAdministrator(final Account.Id accountId) {
+    return isInGroup(accountId, adminGroupId);
+  }
+
+  /**
+   * Determine if the user is a member of a specific group.
+   * 
+   * @param accountId the account to test for membership.
+   * @param groupId the group to test for membership within.
+   * @return true if the account is in the group; false otherwise.
+   */
+  public boolean isInGroup(final Account.Id accountId,
+      final AccountGroup.Id groupId) {
+    if (isAnonymousUsers(groupId) || isRegisteredUsers(groupId)) {
+      return true;
+    }
+    return getGroups(accountId).contains(groupId);
+  }
+
+  /**
+   * Invalidate all cached information about a single user account.
+   * 
+   * @param accountId the account to invalidate from the cache.
+   */
+  public void invalidate(final Account.Id accountId) {
+    synchronized (byAccount) {
+      byAccount.remove(accountId);
+    }
+  }
+
+  /**
+   * Notify the cache that an account has become a member of a group.
+   * 
+   * @param m the account-group pairing that was just inserted.
+   */
+  public void notifyGroupAdd(final AccountGroupMember m) {
+    if (isAutoGroup(m.getAccountGroupId())) {
+      return;
+    }
+    synchronized (byAccount) {
+      final Set<AccountGroup.Id> e = byAccount.get(m.getAccountId());
+      if (e != null) {
+        final Set<AccountGroup.Id> n = new HashSet<AccountGroup.Id>(e);
+        n.add(m.getAccountGroupId());
+        byAccount.put(m.getAccountId(), Collections.unmodifiableSet(n));
+      }
+    }
+  }
+
+  /**
+   * Notify the cache that an account has been removed from a group.
+   * 
+   * @param m the account-group pairing that was just deleted.
+   */
+  public void notifyGroupDelete(final AccountGroupMember m) {
+    if (isAutoGroup(m.getAccountGroupId())) {
+      return;
+    }
+    synchronized (byAccount) {
+      final Set<AccountGroup.Id> e = byAccount.get(m.getAccountId());
+      if (e != null) {
+        final Set<AccountGroup.Id> n = new HashSet<AccountGroup.Id>(e);
+        n.remove(m.getAccountGroupId());
+        byAccount.put(m.getAccountId(), Collections.unmodifiableSet(n));
+      }
+    }
+  }
+
+  /**
+   * Get the groups a specific account is a member of.
+   * 
+   * @param accountId the account to obtain the group list for.
+   * @return unmodifiable set listing the groups the account is a member of.
+   */
+  public Set<AccountGroup.Id> getGroups(final Account.Id accountId) {
+    if (accountId == null) {
+      return anonOnly;
+    }
+
+    Set<AccountGroup.Id> m;
+    synchronized (byAccount) {
+      m = byAccount.get(accountId);
+    }
+    if (m != null) {
+      return m;
+    }
+
+    m = new HashSet<AccountGroup.Id>();
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        for (final AccountGroupMember g : db.accountGroupMembers().byAccount(
+            accountId)) {
+          m.add(g.getAccountGroupId());
+        }
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      m.clear();
+    }
+    m.add(anonymousGroupId);
+    m.add(registeredGroupId);
+    synchronized (byAccount) {
+      byAccount.put(accountId, Collections.unmodifiableSet(m));
+    }
+    return m;
+  }
+
+  /** Force the entire group cache to flush from memory and recompute. */
+  public void flush() {
+    synchronized (byAccount) {
+      byAccount.clear();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/LineWithComments.java b/appjar/src/main/java/com/google/gerrit/client/data/LineWithComments.java
new file mode 100644
index 0000000..3e7fb27
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/LineWithComments.java
@@ -0,0 +1,38 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.PatchLineComment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class LineWithComments {
+  protected List<PatchLineComment> comments;
+
+  protected LineWithComments() {
+  }
+
+  public List<PatchLineComment> getComments() {
+    return comments;
+  }
+
+  public void addComment(final PatchLineComment plc) {
+    if (comments == null) {
+      comments = new ArrayList<PatchLineComment>(4);
+    }
+    comments.add(plc);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/MineStarredInfo.java b/appjar/src/main/java/com/google/gerrit/client/data/MineStarredInfo.java
new file mode 100644
index 0000000..82e0999
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/MineStarredInfo.java
@@ -0,0 +1,54 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.changes.MineStarredScreen;
+import com.google.gerrit.client.reviewdb.Account;
+
+import java.util.List;
+
+/** Summary information needed for {@link MineStarredScreen}. */
+public class MineStarredInfo {
+  protected AccountInfoCache accounts;
+  protected Account.Id owner;
+  protected List<ChangeInfo> starred;
+
+  protected MineStarredInfo() {
+  }
+
+  public MineStarredInfo(final Account.Id forUser) {
+    owner = forUser;
+  }
+
+  public AccountInfoCache getAccounts() {
+    return accounts;
+  }
+
+  public void setAccounts(final AccountInfoCache ac) {
+    accounts = ac;
+  }
+
+  public Account.Id getOwner() {
+    return owner;
+  }
+
+  public List<ChangeInfo> getStarred() {
+    return starred;
+  }
+
+  public void setStarred(List<ChangeInfo> c) {
+    starred = c;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/PatchLine.java b/appjar/src/main/java/com/google/gerrit/client/data/PatchLine.java
new file mode 100644
index 0000000..7c6ed59
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/PatchLine.java
@@ -0,0 +1,62 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+/** A single line of a 2-way patch file. */
+public class PatchLine extends LineWithComments {
+  public static enum Type {
+    FILE_HEADER,
+
+    HUNK_HEADER,
+
+    PRE_IMAGE,
+
+    CONTEXT,
+
+    POST_IMAGE;
+  }
+
+  protected int oldLineNumber;
+  protected int newLineNumber;
+  protected PatchLine.Type type;
+  protected String text;
+
+  protected PatchLine() {
+  }
+
+  public PatchLine(final int oLine, final int nLine, final PatchLine.Type t,
+      final String s) {
+    oldLineNumber = oLine;
+    newLineNumber = nLine;
+    type = t;
+    text = s;
+  }
+
+  public int getOldLineNumber() {
+    return oldLineNumber;
+  }
+
+  public int getNewLineNumber() {
+    return newLineNumber;
+  }
+
+  public PatchLine.Type getType() {
+    return type;
+  }
+
+  public String getText() {
+    return text;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/PatchSetDetail.java b/appjar/src/main/java/com/google/gerrit/client/data/PatchSetDetail.java
new file mode 100644
index 0000000..fd9d914
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/PatchSetDetail.java
@@ -0,0 +1,50 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.PatchSetInfo;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.List;
+
+public class PatchSetDetail {
+  protected PatchSet patchSet;
+  protected PatchSetInfo info;
+  protected List<Patch> patches;
+
+  public PatchSetDetail() {
+  }
+
+  public void load(final ReviewDb db, final PatchSet ps) throws OrmException {
+    patchSet = ps;
+    info = db.patchSetInfo().get(patchSet.getId());
+    patches = db.patches().byPatchSet(patchSet.getId()).toList();
+  }
+
+  public PatchSet getPatchSet() {
+    return patchSet;
+  }
+
+  public PatchSetInfo getInfo() {
+    return info;
+  }
+
+  public List<Patch> getPatches() {
+    return patches;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/ProjectCache.java b/appjar/src/main/java/com/google/gerrit/client/data/ProjectCache.java
new file mode 100644
index 0000000..db1c0f5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/ProjectCache.java
@@ -0,0 +1,195 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/** Cache of project information, including access rights. */
+public class ProjectCache {
+  private final LinkedHashMap<Project.Id, Entry> byId =
+      new LinkedHashMap<Project.Id, Entry>(16, 0.75f, true) {
+        @Override
+        protected boolean removeEldestEntry(
+            final Map.Entry<Project.Id, ProjectCache.Entry> eldest) {
+          return 1024 <= size();
+        }
+      };
+  private final LinkedHashMap<Project.NameKey, Entry> byName =
+      new LinkedHashMap<Project.NameKey, Entry>(16, 0.75f, true) {
+        @Override
+        protected boolean removeEldestEntry(
+            final Map.Entry<Project.NameKey, ProjectCache.Entry> eldest) {
+          return 1024 <= size();
+        }
+      };
+
+  /** Get the rights which are applied to all projects in the system. */
+  public Collection<ProjectRight> getWildcardRights() {
+    return get(ProjectRight.WILD_PROJECT).getRights();
+  }
+
+  /** Invalidate the cached information about the given project. */
+  public void invalidate(final Project p) {
+    if (p != null) {
+      synchronized (byName) {
+        byName.remove(p.getNameKey());
+      }
+      synchronized (byId) {
+        byId.remove(p.getId());
+      }
+    }
+  }
+
+  /** Invalidate the cached information about the given project. */
+  public void invalidate(final Project.Id projectId) {
+    if (projectId != null) {
+      final Entry e;
+      synchronized (byId) {
+        e = byId.remove(projectId);
+      }
+      if (e != null) {
+        synchronized (byName) {
+          byName.remove(e.getProject().getNameKey());
+        }
+      }
+    }
+  }
+
+  /**
+   * Get the cached data for a project by its unique id.
+   * 
+   * @param projectId id of the project.
+   * @return the cached data; null if no such project exists.
+   */
+  public Entry get(final Project.Id projectId) {
+    if (projectId == null) {
+      return null;
+    }
+
+    Entry m;
+    synchronized (byId) {
+      m = byId.get(projectId);
+    }
+    if (m != null) {
+      return m;
+    }
+
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        final Project p = db.projects().get(projectId);
+        if (p == null) {
+          return null;
+        }
+        m = new Entry(db, p);
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      return null;
+    }
+
+    synchronized (byName) {
+      byName.put(m.getProject().getNameKey(), m);
+    }
+    synchronized (byId) {
+      byId.put(m.getProject().getId(), m);
+    }
+    return m;
+  }
+
+  /**
+   * Get the cached data for a project by its unique name.
+   * 
+   * @param projectName name of the project.
+   * @return the cached data; null if no such project exists.
+   */
+  public Entry get(final Project.NameKey projectName) {
+    if (projectName == null) {
+      return null;
+    }
+
+    Entry m;
+    synchronized (byName) {
+      m = byName.get(projectName);
+    }
+    if (m != null) {
+      return m;
+    }
+
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        final Project p = db.projects().get(projectName);
+        if (p == null) {
+          return null;
+        }
+        m = new Entry(db, p);
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      return null;
+    }
+
+    synchronized (byName) {
+      byName.put(m.getProject().getNameKey(), m);
+    }
+    synchronized (byId) {
+      byId.put(m.getProject().getId(), m);
+    }
+    return m;
+  }
+
+  /** Force the entire cache to flush from memory and recompute. */
+  public void flush() {
+    synchronized (byId) {
+      byId.clear();
+    }
+    synchronized (byName) {
+      byName.clear();
+    }
+  }
+
+  /** Cached information on a project. */
+  public static class Entry {
+    private final Project project;
+    private final Collection<ProjectRight> rights;
+
+    protected Entry(final ReviewDb db, final Project p) throws OrmException {
+      project = p;
+      rights =
+          Collections.unmodifiableCollection(db.projectRights().byProject(
+              project.getId()).toList());
+    }
+
+    public Project getProject() {
+      return project;
+    }
+
+    public Collection<ProjectRight> getRights() {
+      return rights;
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/ProjectInfo.java b/appjar/src/main/java/com/google/gerrit/client/data/ProjectInfo.java
new file mode 100644
index 0000000..86f68fa
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/ProjectInfo.java
@@ -0,0 +1,32 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.Project;
+
+public class ProjectInfo {
+  protected Project.NameKey key;
+
+  protected ProjectInfo() {
+  }
+
+  public ProjectInfo(final Project.NameKey key) {
+    this.key = key;
+  }
+
+  public String getName() {
+    return key.get();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/SideBySideLine.java b/appjar/src/main/java/com/google/gerrit/client/data/SideBySideLine.java
new file mode 100644
index 0000000..3f0537a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/SideBySideLine.java
@@ -0,0 +1,48 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+/** A line of a file in a side-by-side view. */
+public class SideBySideLine extends LineWithComments {
+  public static enum Type {
+    DELETE, INSERT, EQUAL;
+  }
+
+  protected int lineNumber;
+  protected SideBySideLine.Type type;
+  protected String text;
+
+  protected SideBySideLine() {
+  }
+
+  public SideBySideLine(final int line, final SideBySideLine.Type t,
+      final String s) {
+    lineNumber = line;
+    type = t;
+    text = s;
+  }
+
+  public int getLineNumber() {
+    return lineNumber;
+  }
+
+  public SideBySideLine.Type getType() {
+    return type;
+  }
+
+  public String getText() {
+    return text;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/SideBySidePatchDetail.java b/appjar/src/main/java/com/google/gerrit/client/data/SideBySidePatchDetail.java
new file mode 100644
index 0000000..f2b63f6
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/SideBySidePatchDetail.java
@@ -0,0 +1,53 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.patches.PatchSideBySideScreen;
+import com.google.gerrit.client.reviewdb.Patch;
+
+import java.util.List;
+
+/** Detail necessary to display {@link PatchSideBySideScreen}. */
+public class SideBySidePatchDetail extends BasePatchDetail {
+  protected int fileCount;
+  protected int lineCount;
+  protected List<List<SideBySideLine>> lines;
+
+  protected SideBySidePatchDetail() {
+  }
+
+  public SideBySidePatchDetail(final Patch p, final AccountInfoCache aic) {
+    super(p, aic);
+  }
+
+  public int getFileCount() {
+    return fileCount;
+  }
+
+  public int getLineCount() {
+    return lineCount;
+  }
+
+  public List<List<SideBySideLine>> getLines() {
+    return lines;
+  }
+
+  public void setLines(final int fc, final int lc,
+      final List<List<SideBySideLine>> in) {
+    fileCount = fc;
+    lineCount = lc;
+    lines = in;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/SystemInfoService.java b/appjar/src/main/java/com/google/gerrit/client/data/SystemInfoService.java
new file mode 100644
index 0000000..bcca0d6
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/SystemInfoService.java
@@ -0,0 +1,34 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.AllowCrossSiteRequest;
+import com.google.gwtjsonrpc.client.HostPageCache;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+
+import java.util.List;
+
+public interface SystemInfoService extends RemoteJsonService {
+  @AllowCrossSiteRequest
+  @HostPageCache(name = "gerrit_gerritconfig_obj", once = true)
+  void loadGerritConfig(AsyncCallback<GerritConfig> callback);
+
+  @SignInRequired
+  @AllowCrossSiteRequest
+  void contributorAgreements(AsyncCallback<List<ContributorAgreement>> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/data/UnifiedPatchDetail.java b/appjar/src/main/java/com/google/gerrit/client/data/UnifiedPatchDetail.java
new file mode 100644
index 0000000..8280231
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/data/UnifiedPatchDetail.java
@@ -0,0 +1,40 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.data;
+
+import com.google.gerrit.client.patches.PatchUnifiedScreen;
+import com.google.gerrit.client.reviewdb.Patch;
+
+import java.util.List;
+
+/** Detail necessary to display {@link PatchUnifiedScreen}. */
+public class UnifiedPatchDetail extends BasePatchDetail {
+  protected List<PatchLine> lines;
+
+  protected UnifiedPatchDetail() {
+  }
+
+  public UnifiedPatchDetail(final Patch p, final AccountInfoCache aic) {
+    super(p, aic);
+  }
+
+  public List<PatchLine> getLines() {
+    return lines;
+  }
+
+  public void setLines(final List<PatchLine> in) {
+    lines = in;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/greenCheck.png b/appjar/src/main/java/com/google/gerrit/client/greenCheck.png
new file mode 100644
index 0000000..cd70687
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/greenCheck.png
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImpl.java b/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImpl.java
new file mode 100644
index 0000000..9bc3d7a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImpl.java
@@ -0,0 +1,32 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+class AllowFrameImpl {
+  boolean permit(final String url) {
+    if (OpenIdUtil.URL_GOOGLE.equals(url)
+        || url.startsWith(OpenIdUtil.URL_GOOGLE + "?")) {
+      return true;
+    }
+    if (is_claimID(url)) {
+      return true;
+    }
+    return false;
+  }
+
+  protected static boolean is_claimID(final String url) {
+    return url.contains(".claimid.com/");
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImplSafari.java b/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImplSafari.java
new file mode 100644
index 0000000..c093b87
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/AllowFrameImplSafari.java
@@ -0,0 +1,26 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+class AllowFrameImplSafari extends AllowFrameImpl {
+  @Override
+  boolean permit(final String url) {
+    if (is_claimID(url)) {
+      return false;
+    }
+
+    return super.permit(url);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/DiscoveryResult.java b/appjar/src/main/java/com/google/gerrit/client/openid/DiscoveryResult.java
new file mode 100644
index 0000000..384844a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/DiscoveryResult.java
@@ -0,0 +1,32 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+public final class DiscoveryResult {
+  public boolean validProvider;
+  public String redirectUrl;
+
+  protected DiscoveryResult() {
+  }
+
+  public DiscoveryResult(final boolean valid, final String redirect) {
+    validProvider = valid;
+    redirectUrl = redirect;
+  }
+
+  public DiscoveryResult(final boolean fail) {
+    this(false, null);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/LoginConstants.java b/appjar/src/main/java/com/google/gerrit/client/openid/LoginConstants.java
new file mode 100644
index 0000000..965a9ef
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/LoginConstants.java
@@ -0,0 +1,29 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+import com.google.gwt.i18n.client.Constants;
+
+public interface LoginConstants extends Constants {
+  String buttonSignIn();
+  String buttonLinkId();
+  String rememberMe();
+  String notSupported();
+
+  String nameGoogle();
+  String nameYahoo();
+
+  String whatIsOpenIDHtml();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/LoginConstants.properties b/appjar/src/main/java/com/google/gerrit/client/openid/LoginConstants.properties
new file mode 100644
index 0000000..428640e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/LoginConstants.properties
@@ -0,0 +1,15 @@
+buttonSignIn = Sign In
+buttonLinkId = Link Identity
+rememberMe = Remember Me
+notSupported = Provider is not supported, or was incorrectly entered.
+
+nameGoogle = Google Account
+nameYahoo = Yahoo! ID
+
+whatIsOpenIDHtml = \
+  <h2 class="gerrit-SmallHeading" style="margin-top: 25px;">What is OpenID?</h2>\
+  <p>OpenID provides secure single-sign-on, without \
+  revealing your passwords to this website.</p>\
+  <p>There are many OpenID providers available.  You may already \
+  be member of one!</p>\
+  <p><a href="http://openid.net/get/" target="_blank">Get OpenID</a></p>\
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/LoginIcons.java b/appjar/src/main/java/com/google/gerrit/client/openid/LoginIcons.java
new file mode 100644
index 0000000..3cc1715
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/LoginIcons.java
@@ -0,0 +1,26 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.ImageBundle;
+
+public interface LoginIcons extends ImageBundle {
+  public AbstractImagePrototype openidLogo();
+
+  public AbstractImagePrototype iconGoogle();
+
+  public AbstractImagePrototype iconYahoo();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/LoginMessages.java b/appjar/src/main/java/com/google/gerrit/client/openid/LoginMessages.java
new file mode 100644
index 0000000..eb038a6
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/LoginMessages.java
@@ -0,0 +1,25 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+import com.google.gwt.i18n.client.Messages;
+
+public interface LoginMessages extends Messages {
+  String signInAt(String hostname);
+  String linkAt(String hostname);
+
+  String signInWith(String who);
+  String linkWith(String who);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/LoginMessages.properties b/appjar/src/main/java/com/google/gerrit/client/openid/LoginMessages.properties
new file mode 100644
index 0000000..bed0440
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/LoginMessages.properties
@@ -0,0 +1,5 @@
+signInAt = Sign In to Gerrit at {0}
+linkAt = Link Another Identity to Gerrit at {0}
+
+signInWith = Sign in with a {0}
+linkWith = Link a {0}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdLoginPanel.java b/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdLoginPanel.java
new file mode 100644
index 0000000..c8aacc9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdLoginPanel.java
@@ -0,0 +1,354 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+import com.google.gerrit.client.SignInDialog;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Cookies;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.FormHandler;
+import com.google.gwt.user.client.ui.FormPanel;
+import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
+import com.google.gwt.user.client.ui.FormSubmitEvent;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.Hidden;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.NamedFrame;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwtjsonrpc.client.CallbackHandle;
+
+public class OpenIdLoginPanel extends Composite implements FormHandler {
+  private final SignInDialog.Mode mode;
+  private final CallbackHandle<?> discoveryCallback;
+  private final CallbackHandle<?> signInCallback;
+  private final LoginIcons icons;
+  private final AllowFrameImpl allowFrame;
+  private final FlowPanel panelWidget;
+  private final FormPanel form;
+  private final FlowPanel formBody;
+  private final NamedFrame providerFrame;
+  private final Hidden discoveryCbField;
+  private final Hidden signInCbField;
+  private final Hidden providerField;
+
+  private FlowPanel errorLine;
+  private InlineLabel errorMsg;
+
+  private Button login;
+  private TextBox providerId;
+  private CheckBox rememberId;
+  private boolean discovering;
+
+  public OpenIdLoginPanel(final SignInDialog.Mode m, final CallbackHandle<?> sc) {
+    mode = m;
+    signInCallback = sc;
+
+    discoveryCallback =
+        OpenIdUtil.SVC.discover(new GerritCallback<DiscoveryResult>() {
+          public void onSuccess(final DiscoveryResult result) {
+            onDiscovery(result);
+          }
+        });
+    icons = GWT.create(LoginIcons.class);
+    allowFrame = GWT.create(AllowFrameImpl.class);
+
+    formBody = new FlowPanel();
+    formBody.setStyleName("gerrit-OpenID-loginform");
+    formBody.add(providerField = new Hidden("openid_identifier"));
+    formBody.add(signInCbField = new Hidden(OpenIdUtil.P_SIGNIN_CB));
+    formBody.add(discoveryCbField = new Hidden(OpenIdUtil.P_DISCOVERY_CB));
+    formBody.add(new Hidden(OpenIdUtil.P_SIGNIN_MODE, mode.name()));
+
+    providerFrame = new NamedFrame("openid_provider");
+    providerFrame.setVisible(false);
+
+    form = new FormPanel(providerFrame);
+    form.setMethod("GET");
+    form.setAction(GWT.getModuleBaseURL() + "login");
+    form.addFormHandler(this);
+    form.add(formBody);
+
+    panelWidget = new FlowPanel();
+    panelWidget.add(form);
+    panelWidget.add(providerFrame);
+    initWidget(panelWidget);
+
+    createHeaderLogo();
+    createHeaderText();
+    createErrorBox();
+    createIdentBox();
+
+    link(OpenIdUtil.URL_GOOGLE, OpenIdUtil.C.nameGoogle(), icons.iconGoogle());
+    link(OpenIdUtil.URL_YAHOO, OpenIdUtil.C.nameYahoo(), icons.iconYahoo());
+
+    formBody.add(new HTML(OpenIdUtil.C.whatIsOpenIDHtml()));
+  }
+
+  public void setFocus(final boolean take) {
+    if (take) {
+      providerId.selectAll();
+    }
+    providerId.setFocus(take);
+  }
+
+  private void createHeaderLogo() {
+    final FlowPanel headerLogo = new FlowPanel();
+    headerLogo.setStyleName("gerrit-OpenID-logobox");
+    headerLogo.add(icons.openidLogo().createImage());
+    formBody.add(headerLogo);
+  }
+
+  private void createHeaderText() {
+    final FlowPanel headerText = new FlowPanel();
+    final String me = Window.Location.getHostName();
+    final Label headerLabel = new Label();
+    switch (mode) {
+      case LINK_IDENTIY:
+        headerLabel.setText(OpenIdUtil.M.linkAt(me));
+        break;
+      case SIGN_IN:
+      default:
+        headerLabel.setText(OpenIdUtil.M.signInAt(me));
+        break;
+    }
+    headerLabel.setStyleName("gerrit-SmallHeading");
+    headerText.add(headerLabel);
+    formBody.add(headerText);
+  }
+
+  private void createErrorBox() {
+    errorLine = new FlowPanel();
+    errorLine.setVisible(false);
+
+    errorMsg = new InlineLabel(OpenIdUtil.C.notSupported());
+    errorLine.setStyleName("gerrit-OpenID-errorline");
+    errorLine.add(errorMsg);
+    formBody.add(errorLine);
+  }
+
+  private void showError() {
+    errorLine.setVisible(true);
+  }
+
+  private void hideError() {
+    errorLine.setVisible(false);
+  }
+
+  private void createIdentBox() {
+    final FlowPanel group = new FlowPanel();
+    group.setStyleName("gerrit-OpenID-loginline");
+
+    final FlowPanel line1 = new FlowPanel();
+    group.add(line1);
+
+    providerId = new TextBox();
+    providerId.setVisibleLength(60);
+    providerId.setStyleName("gerrit-OpenID-openid_identifier");
+    providerId.setTabIndex(0);
+    providerId.addKeyboardListener(new KeyboardListenerAdapter() {
+      @Override
+      public void onKeyPress(Widget sender, char keyCode, int modifiers) {
+        if (keyCode == KEY_ENTER) {
+          final Event event = DOM.eventGetCurrentEvent();
+          DOM.eventCancelBubble(event, true);
+          DOM.eventPreventDefault(event);
+          form.submit();
+        }
+      }
+    });
+    line1.add(providerId);
+
+    login = new Button();
+    switch (mode) {
+      case LINK_IDENTIY:
+        login.setText(OpenIdUtil.C.buttonLinkId());
+        break;
+      case SIGN_IN:
+      default:
+        login.setText(OpenIdUtil.C.buttonSignIn());
+        break;
+    }
+    login.addClickListener(new ClickListener() {
+      public void onClick(Widget sender) {
+        form.submit();
+      }
+    });
+    login.setTabIndex(2);
+    line1.add(login);
+
+    if (mode == SignInDialog.Mode.SIGN_IN) {
+      rememberId = new CheckBox(OpenIdUtil.C.rememberMe());
+      rememberId.setName(OpenIdUtil.P_REMEMBERID);
+      rememberId.setTabIndex(1);
+      group.add(rememberId);
+
+      final String last = Cookies.getCookie(OpenIdUtil.LASTID_COOKIE);
+      if (last != null && !"".equals(last)) {
+        providerId.setText(last);
+        rememberId.setChecked(true);
+      }
+    }
+
+    formBody.add(group);
+  }
+
+  private void link(final String identUrl, final String who,
+      final AbstractImagePrototype icon) {
+    final ClickListener i = new ClickListener() {
+      public void onClick(Widget sender) {
+        if (!discovering) {
+          providerId.setText(identUrl);
+          form.submit();
+        }
+      }
+    };
+
+    final FlowPanel line = new FlowPanel();
+    line.addStyleName("gerrit-OpenID-directlink");
+
+    final Image img = icon.createImage();
+    img.addClickListener(i);
+    line.add(img);
+
+    final InlineLabel lbl = new InlineLabel();
+    switch (mode) {
+      case LINK_IDENTIY:
+        lbl.setText(OpenIdUtil.M.linkWith(who));
+        break;
+      case SIGN_IN:
+      default:
+        lbl.setText(OpenIdUtil.M.signInWith(who));
+        break;
+    }
+    lbl.addClickListener(i);
+    line.add(lbl);
+
+    formBody.add(line);
+  }
+
+  private void enable(final boolean on) {
+    providerId.setEnabled(on);
+    login.setEnabled(on);
+  }
+
+  private void onDiscovery(final DiscoveryResult result) {
+    discovering = false;
+
+    if (result.validProvider) {
+      final String url = providerId.getText();
+      if (allowFrame.permit(url)) {
+        providerFrame.setUrl(result.redirectUrl);
+
+        // The provider page needs time to load. It won't load as fast as
+        // we can update the DOM so we delay our DOM update for just long
+        // enough that the provider is likely to be loaded.
+        //
+        new Timer() {
+          @Override
+          public void run() {
+            panelWidget.remove(form);
+            providerFrame.setVisible(true);
+          }
+        }.schedule(250);
+      } else {
+        // The provider won't support operation inside an IFRAME, so we
+        // replace our entire application. No fancy waits are needed,
+        // the browser won't update anything until its started to load
+        // the provider's page.
+        //
+        Window.Location.assign(result.redirectUrl);
+      }
+
+    } else {
+      // We failed discovery. We have to use a deferred command here
+      // as we are being called from within an invisible IFRAME. Jump
+      // back to the main event loop in the parent window.
+      //
+      DeferredCommand.addCommand(new Command() {
+        public void execute() {
+          showError();
+          enable(true);
+          providerId.selectAll();
+          providerId.setFocus(true);
+        }
+      });
+    }
+  }
+
+  @Override
+  protected void onUnload() {
+    discoveryCallback.cancel();
+    super.onUnload();
+  }
+
+  public void onSubmit(final FormSubmitEvent event) {
+    final String url = providerId.getText();
+    if (url == null || url.equals("")) {
+      enable(true);
+      event.setCancelled(true);
+      return;
+    }
+
+    discovering = true;
+    enable(false);
+    hideError();
+
+    discoveryCallback.install();
+    discoveryCbField.setValue("parent." + discoveryCallback.getFunctionName());
+    providerField.setValue(url);
+
+    if (allowFrame.permit(url)) {
+      signInCbField.setValue("parent." + signInCallback.getFunctionName());
+    } else {
+      // The provider won't work right inside of an IFRAME (or likely isn't
+      // going to work within the IFRAME) so we need to replace the whole
+      // application and then redirect back to this location.
+      //
+      signInCbField.setValue("history:" + History.getToken());
+    }
+  }
+
+  @Override
+  public void setWidth(final String width) {
+    providerFrame.setWidth(width);
+    super.setWidth(width);
+  }
+
+  @Override
+  public void setHeight(final String height) {
+    providerFrame.setHeight(height);
+    super.setHeight(height);
+  }
+
+  public void onSubmitComplete(final FormSubmitCompleteEvent event) {
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdService.java b/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdService.java
new file mode 100644
index 0000000..93ccd6d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdService.java
@@ -0,0 +1,26 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.AllowCrossSiteRequest;
+import com.google.gwtjsonrpc.client.CallbackHandle;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+
+public interface OpenIdService extends RemoteJsonService {
+  @AllowCrossSiteRequest
+  CallbackHandle<DiscoveryResult> discover(
+      AsyncCallback<DiscoveryResult> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdUtil.java b/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdUtil.java
new file mode 100644
index 0000000..77fb760
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/OpenIdUtil.java
@@ -0,0 +1,45 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.openid;
+
+import com.google.gwt.core.client.GWT;
+
+public class OpenIdUtil {
+  public static final LoginConstants C;
+  public static final LoginMessages M;
+  public static final OpenIdService SVC;
+
+  public static final String LASTID_COOKIE = "gerrit.last_openid";
+  public static final String P_SIGNIN_MODE = "gerrit.signin_mode";
+  public static final String P_SIGNIN_CB = "gerrit.signin_cb";
+  public static final String P_DISCOVERY_CB = "gerrit.discovery_cb";
+  public static final String P_REMEMBERID = "gerrit.rememberid";
+
+  public static final String URL_YAHOO = "https://me.yahoo.com";
+  public static final String URL_GOOGLE =
+      "https://www.google.com/accounts/o8/id";
+
+  static {
+    if (GWT.isClient()) {
+      C = GWT.create(LoginConstants.class);
+      M = GWT.create(LoginMessages.class);
+      SVC = GWT.create(OpenIdService.class);
+    } else {
+      C = null;
+      M = null;
+      SVC = null;
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/iconGoogle.gif b/appjar/src/main/java/com/google/gerrit/client/openid/iconGoogle.gif
new file mode 100644
index 0000000..782c2fd
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/iconGoogle.gif
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/iconYahoo.gif b/appjar/src/main/java/com/google/gerrit/client/openid/iconYahoo.gif
new file mode 100644
index 0000000..0820455
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/iconYahoo.gif
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/client/openid/openidLogo.png b/appjar/src/main/java/com/google/gerrit/client/openid/openidLogo.png
new file mode 100644
index 0000000..520ff9c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/openid/openidLogo.png
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/AbstractPatchContentTable.java b/appjar/src/main/java/com/google/gerrit/client/patches/AbstractPatchContentTable.java
new file mode 100644
index 0000000..656dd2b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/AbstractPatchContentTable.java
@@ -0,0 +1,194 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.changes.Util;
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.reviewdb.PatchLineComment;
+import com.google.gerrit.client.ui.ComplexDisclosurePanel;
+import com.google.gerrit.client.ui.FancyFlexTable;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+import com.google.gwtjsonrpc.client.VoidResult;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractPatchContentTable extends FancyFlexTable<Object> {
+  private static final long AGE = 7 * 24 * 60 * 60 * 1000L;
+  protected AccountInfoCache accountCache = AccountInfoCache.empty();
+  protected Patch.Key patchKey;
+  private final Timestamp aged =
+      new Timestamp(System.currentTimeMillis() - AGE);
+
+  protected AbstractPatchContentTable() {
+    table.setStyleName("gerrit-PatchContentTable");
+  }
+
+  @Override
+  protected MyFlexTable createFlexTable() {
+    return new DoubleClickFlexTable();
+  }
+
+  @Override
+  protected Object getRowItemKey(final Object item) {
+    return null;
+  }
+
+  /** Invoked when the user clicks on a table cell. */
+  protected abstract void onCellDoubleClick(int row, int column);
+
+  protected PatchLineComment newComment(final int line, final short side) {
+    final PatchLineComment r =
+        new PatchLineComment(new PatchLineComment.Key(patchKey, "blargh"), line,
+            Gerrit.getUserAccount().getId());
+    r.setSide(side);
+    r.setMessage("");
+    return r;
+  }
+
+  protected void createCommentEditor(final int row, final int column,
+      final int line, final short side) {
+    if (!Gerrit.isSignedIn()) {
+      Gerrit.doSignIn(new AsyncCallback<VoidResult>() {
+        public void onSuccess(final VoidResult result) {
+          createCommentEditor(row, column, line, side);
+        }
+
+        public void onFailure(Throwable caught) {
+        }
+      });
+      return;
+    }
+
+    final PatchLineComment newComment = newComment(line, side);
+    table.insertRow(row);
+    table.setWidget(row, column, new CommentEditorPanel(newComment) {
+      @Override
+      void onCancel() {
+        final int n = table.getRowCount();
+        for (int i = 0; i < n; i++) {
+          if (column < table.getCellCount(i)
+              && table.getWidget(i, column) == this) {
+            table.removeRow(i);
+            break;
+          }
+        }
+      }
+    });
+  }
+
+  @Override
+  protected void onOpenItem(final Object item) {
+    if (item instanceof CommentList) {
+      for (final ComplexDisclosurePanel p : ((CommentList) item).panels) {
+        p.setOpen(!p.isOpen());
+      }
+    }
+  }
+
+  public void setAccountInfoCache(final AccountInfoCache aic) {
+    assert aic != null;
+    accountCache = aic;
+  }
+
+  public void setPatchKey(final Patch.Key id) {
+    patchKey = id;
+  }
+
+  protected void bindComment(final int row, final int col,
+      final PatchLineComment line, final boolean isLast) {
+    final LineCommentPanel mp = new LineCommentPanel(line);
+    String panelHeader;
+    final ComplexDisclosurePanel panel;
+
+    if (line.getAuthor() != null) {
+      panelHeader = FormatUtil.nameEmail(accountCache.get(line.getAuthor()));
+    } else {
+      panelHeader = Util.C.messageNoAuthor();
+    }
+
+    if (isLast) {
+      mp.isRecent = true;
+    } else {
+      // TODO Instead of opening messages by strict age, do it by "unread"?
+      mp.isRecent = line.getWrittenOn().after(aged);
+    }
+
+    panel = new ComplexDisclosurePanel(panelHeader, mp.isRecent);
+    panel.getHeader().add(
+        new InlineLabel(Util.M.messageWrittenOn(FormatUtil.mediumFormat(line
+            .getWrittenOn()))));
+    if (line.getStatus() == PatchLineComment.Status.DRAFT) {
+      final InlineLabel d = new InlineLabel(PatchUtil.C.draft());
+      d.setStyleName("CommentIsDraftFlag");
+      panel.getHeader().add(d);
+    }
+    panel.setContent(mp);
+    table.setWidget(row, col, panel);
+
+    final FlexCellFormatter fmt = table.getFlexCellFormatter();
+    fmt.setStyleName(row, col, "Comment");
+
+    CommentList l = (CommentList) getRowItem(row);
+    if (l == null) {
+      l = new CommentList();
+      setRowItem(row, l);
+    }
+    l.comments.add(line);
+    l.panels.add(panel);
+  }
+
+  protected static class CommentList {
+    final List<PatchLineComment> comments = new ArrayList<PatchLineComment>();
+    final List<ComplexDisclosurePanel> panels =
+        new ArrayList<ComplexDisclosurePanel>();
+  }
+
+  protected class DoubleClickFlexTable extends MyFlexTable {
+    public DoubleClickFlexTable() {
+      sinkEvents(Event.ONDBLCLICK);
+    }
+
+    @Override
+    public void onBrowserEvent(final Event event) {
+      switch (DOM.eventGetType(event)) {
+        case Event.ONDBLCLICK: {
+          // Find out which cell was actually clicked.
+          Element td = getEventTargetCell(event);
+          if (td == null) {
+            return;
+          }
+          Element tr = DOM.getParent(td);
+          Element body = DOM.getParent(tr);
+          int row = DOM.getChildIndex(body, tr);
+          int column = DOM.getChildIndex(tr, td);
+          onCellDoubleClick(row, column);
+          break;
+        }
+        default:
+          super.onBrowserEvent(event);
+      }
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/CommentEditorPanel.java b/appjar/src/main/java/com/google/gerrit/client/patches/CommentEditorPanel.java
new file mode 100644
index 0000000..b05484c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/CommentEditorPanel.java
@@ -0,0 +1,58 @@
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.reviewdb.PatchLineComment;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.TextArea;
+import com.google.gwt.user.client.ui.Widget;
+
+public class CommentEditorPanel extends Composite implements ClickListener {
+  private final PatchLineComment comment;
+  private final TextArea text;
+  private final Button save;
+  private final Button cancel;
+
+  public CommentEditorPanel(final PatchLineComment plc) {
+    comment = plc;
+
+    final FlowPanel body = new FlowPanel();
+    body.setStyleName("gerrit-CommentEditor");
+
+    text = new TextArea();
+    text.setCharacterWidth(60);
+    text.setVisibleLines(5);
+    body.add(text);
+
+    final FlowPanel buttons = new FlowPanel();
+    buttons.setStyleName("gerrit-CommentEditor-Buttons");
+    body.add(buttons);
+
+    save = new Button();
+    save.setText("Save");
+    save.addClickListener(this);
+    buttons.add(save);
+
+    cancel = new Button();
+    cancel.setText("Cancel");
+    cancel.addClickListener(this);
+    buttons.add(cancel);
+
+    initWidget(body);
+  }
+
+  public void onClick(Widget sender) {
+    if (sender == save) {
+      onSave();
+    } else if (sender == cancel) {
+      onCancel();
+    }
+  }
+
+  void onSave() {
+  }
+
+  void onCancel() {
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/LineCommentPanel.java b/appjar/src/main/java/com/google/gerrit/client/patches/LineCommentPanel.java
new file mode 100644
index 0000000..5961fe0
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/LineCommentPanel.java
@@ -0,0 +1,33 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.reviewdb.PatchLineComment;
+import com.google.gerrit.client.ui.DomUtil;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
+
+public class LineCommentPanel extends Composite {
+  PatchLineComment comment;
+  boolean isRecent;
+
+  public LineCommentPanel(final PatchLineComment msg) {
+    comment = msg;
+    final HTML l =
+        new HTML(DomUtil.linkify(DomUtil.escape(comment.getMessage().trim())));
+    l.setStyleName("gerrit-PatchLineComment");
+    initWidget(l);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchConstants.java b/appjar/src/main/java/com/google/gerrit/client/patches/PatchConstants.java
new file mode 100644
index 0000000..82a1b42
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchConstants.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gwt.i18n.client.Constants;
+
+public interface PatchConstants extends Constants {
+  String draft();
+
+  String patchHeaderOld();
+  String patchHeaderNew();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchConstants.properties b/appjar/src/main/java/com/google/gerrit/client/patches/PatchConstants.properties
new file mode 100644
index 0000000..dcd572e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchConstants.properties
@@ -0,0 +1,4 @@
+draft = (DRAFT)
+
+patchHeaderOld = Old Version
+patchHeaderNew = New Version
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchDetailService.java b/appjar/src/main/java/com/google/gerrit/client/patches/PatchDetailService.java
new file mode 100644
index 0000000..a1cf9ab
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchDetailService.java
@@ -0,0 +1,32 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.data.SideBySidePatchDetail;
+import com.google.gerrit.client.data.UnifiedPatchDetail;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.AllowCrossSiteRequest;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+
+public interface PatchDetailService extends RemoteJsonService {
+  @AllowCrossSiteRequest
+  void sideBySidePatchDetail(Patch.Key key,
+      AsyncCallback<SideBySidePatchDetail> callback);
+
+  @AllowCrossSiteRequest
+  void unifiedPatchDetail(Patch.Key key,
+      AsyncCallback<UnifiedPatchDetail> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchMessages.java b/appjar/src/main/java/com/google/gerrit/client/patches/PatchMessages.java
new file mode 100644
index 0000000..05fd9d2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchMessages.java
@@ -0,0 +1,22 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gwt.i18n.client.Messages;
+
+public interface PatchMessages extends Messages {
+  String patchHeaderAncestor(int id);
+  String patchSkipRegion(@PluralCount int lineCnt);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchMessages.properties b/appjar/src/main/java/com/google/gerrit/client/patches/PatchMessages.properties
new file mode 100644
index 0000000..8f5f6db
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchMessages.properties
@@ -0,0 +1,4 @@
+patchHeaderAncestor = Ancestor {0}
+
+patchSkipRegion[one] = (... skipping 1 common line ...)
+patchSkipRegion = (...skipping {0} common lines ...)
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchScreen.java b/appjar/src/main/java/com/google/gerrit/client/patches/PatchScreen.java
new file mode 100644
index 0000000..26ecce0
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchScreen.java
@@ -0,0 +1,27 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.ui.Screen;
+
+public class PatchScreen extends Screen {
+  protected final Patch.Key patchId;
+
+  public PatchScreen(final Patch.Key id) {
+    patchId = id;
+    setTitleText(id.get());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchSideBySideScreen.java b/appjar/src/main/java/com/google/gerrit/client/patches/PatchSideBySideScreen.java
new file mode 100644
index 0000000..baa454c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchSideBySideScreen.java
@@ -0,0 +1,60 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.data.SideBySidePatchDetail;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.rpc.ScreenLoadCallback;
+import com.google.gwt.user.client.ui.FlowPanel;
+
+public class PatchSideBySideScreen extends PatchScreen {
+  private SideBySideTable sbsTable;
+
+  public PatchSideBySideScreen(final Patch.Key id) {
+    super(id);
+  }
+
+  @Override
+  public void onLoad() {
+    if (sbsTable == null) {
+      initUI();
+    }
+
+    super.onLoad();
+
+    PatchUtil.DETAIL_SVC.sideBySidePatchDetail(patchId,
+        new ScreenLoadCallback<SideBySidePatchDetail>() {
+          public void onSuccess(final SideBySidePatchDetail r) {
+            // TODO Actually we want to cancel the RPC if detached.
+            if (isAttached()) {
+              display(r);
+            }
+          }
+        });
+  }
+
+  private void initUI() {
+    final FlowPanel sbsPanel = new FlowPanel();
+    sbsPanel.setStyleName("gerrit-SideBySideScreen-SideBySideTable");
+    sbsTable = new SideBySideTable();
+    sbsPanel.add(sbsTable);
+    add(sbsPanel);
+  }
+
+  private void display(final SideBySidePatchDetail detail) {
+    sbsTable.setAccountInfoCache(detail.getAccounts());
+    sbsTable.display(detail);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchUnifiedScreen.java b/appjar/src/main/java/com/google/gerrit/client/patches/PatchUnifiedScreen.java
new file mode 100644
index 0000000..1d19d99
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchUnifiedScreen.java
@@ -0,0 +1,57 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.data.UnifiedPatchDetail;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.rpc.ScreenLoadCallback;
+
+public class PatchUnifiedScreen extends PatchScreen {
+  private UnifiedDiffTable diffTable;
+
+  public PatchUnifiedScreen(final Patch.Key id) {
+    super(id);
+  }
+
+  @Override
+  public void onLoad() {
+    if (diffTable == null) {
+      initUI();
+    }
+
+    super.onLoad();
+
+    PatchUtil.DETAIL_SVC.unifiedPatchDetail(patchId,
+        new ScreenLoadCallback<UnifiedPatchDetail>() {
+          public void onSuccess(final UnifiedPatchDetail r) {
+            // TODO Actually we want to cancel the RPC if detached.
+            if (isAttached()) {
+              display(r);
+            }
+          }
+        });
+  }
+
+  private void initUI() {
+    diffTable = new UnifiedDiffTable();
+    add(diffTable);
+  }
+
+  private void display(final UnifiedPatchDetail detail) {
+    diffTable.setPatchKey(detail.getPatch().getKey());
+    diffTable.setAccountInfoCache(detail.getAccounts());
+    diffTable.display(detail.getLines());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/PatchUtil.java b/appjar/src/main/java/com/google/gerrit/client/patches/PatchUtil.java
new file mode 100644
index 0000000..69ea33b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/PatchUtil.java
@@ -0,0 +1,39 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.ui.DomUtil;
+import com.google.gwt.core.client.GWT;
+import com.google.gwtjsonrpc.client.JsonUtil;
+
+public class PatchUtil {
+  public static final PatchConstants C = GWT.create(PatchConstants.class);
+  public static final PatchMessages M = GWT.create(PatchMessages.class);
+  public static final PatchDetailService DETAIL_SVC;
+
+  static {
+    DETAIL_SVC = GWT.create(PatchDetailService.class);
+    JsonUtil.bind(DETAIL_SVC, "rpc/PatchDetailService");
+  }
+
+  public static String lineToHTML(final String src) {
+    String html = DomUtil.escape(src);
+    html = expandTabs(html);
+    return html;
+  }
+
+  private native static String expandTabs(String src)
+  /*-{ return src.replace(/\t/g, '<span title="Visual Tab" class="gerrit-visualtab">&raquo;</span>\t'); }-*/;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/SideBySideTable.java b/appjar/src/main/java/com/google/gerrit/client/patches/SideBySideTable.java
new file mode 100644
index 0000000..993169e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/SideBySideTable.java
@@ -0,0 +1,255 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.data.SideBySideLine;
+import com.google.gerrit.client.data.SideBySidePatchDetail;
+import com.google.gerrit.client.reviewdb.PatchLineComment;
+import com.google.gerrit.client.ui.DomUtil;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.InlineLabel;
+
+import java.util.Iterator;
+import java.util.List;
+
+public class SideBySideTable extends AbstractPatchContentTable {
+  private int fileCnt;
+  private int maxLineNumber;
+
+  @Override
+  protected void onCellDoubleClick(final int row, final int column) {
+    if (column > 1 && getRowItem(row) instanceof SideBySideLineList) {
+      final SideBySideLineList pl = (SideBySideLineList) getRowItem(row);
+      final short file = (short) ((column - 1) / 2);
+      final SideBySideLine line = pl.lines.get(file);
+      switch (line.getType()) {
+        case DELETE:
+        case EQUAL:
+        case INSERT: {
+          createCommentEditor(row + 1, column, line.getLineNumber(), file);
+          break;
+        }
+      }
+    }
+  }
+
+  public void display(final SideBySidePatchDetail detail) {
+    setAccountInfoCache(detail.getAccounts());
+    setPatchKey(detail.getPatch().getKey());
+    fileCnt = detail.getFileCount();
+    maxLineNumber = detail.getLineCount();
+
+    List<SideBySideLine> prior = null;
+
+    // Generate the table in HTML, because its quicker than by DOM.
+    // This pass does not include the line comments; they need full
+    // GWT widgets and are relatively infrequent. We do them later.
+    //
+    final StringBuilder nc = new StringBuilder();
+    appendHeader(nc);
+    for (final List<SideBySideLine> pLine : detail.getLines()) {
+      if (skipped(prior, pLine) > 0) {
+        appendSkipLine(nc);
+      }
+      prior = pLine;
+      appendFileLine(nc, pLine);
+    }
+    if (skipped(prior, null) > 0) {
+      appendSkipLine(nc);
+    }
+    resetHtml(nc.toString());
+
+    // Insert the comment widgets now that the table DOM has been
+    // parsed out of the HTML by the browser. We also bind each
+    // of the row item objects.
+    //
+    int row = 1;
+    prior = null;
+    for (final List<SideBySideLine> pLine : detail.getLines()) {
+      final int skipCnt = skipped(prior, pLine);
+      if (skipCnt > 0) {
+        bindSkipLine(row, skipCnt);
+        row++;
+      }
+      prior = pLine;
+
+      setRowItem(row, new SideBySideLineList(pLine));
+
+      int nextComment = row;
+      int lastComment = row;
+      for (int fileId = 0; fileId < fileCnt; fileId++) {
+        final SideBySideLine s = pLine.get(fileId);
+        if (s == null) {
+          continue;
+        }
+
+        final List<PatchLineComment> comments = s.getComments();
+        if (comments == null) {
+          continue;
+        }
+
+        for (Iterator<PatchLineComment> ci = comments.iterator(); ci.hasNext();) {
+          final PatchLineComment c = ci.next();
+          if (nextComment == lastComment) {
+            lastComment++;
+            table.insertRow(lastComment);
+            table.getCellFormatter().setStyleName(lastComment, 0, S_ICON_CELL);
+          }
+          nextComment++;
+          table.setWidget(nextComment, 1 + 2 * fileId, null);
+          bindComment(nextComment, 1 + 2 * fileId + 1, c, !ci.hasNext());
+        }
+      }
+
+      row = lastComment + 1;
+    }
+    final int skipCnt = skipped(prior, null);
+    if (skipCnt > 0) {
+      bindSkipLine(row, skipCnt);
+      row++;
+    }
+  }
+
+  private void appendHeader(final StringBuilder nc) {
+    final String width = (100 / fileCnt) + "%";
+    nc.append("<tr>");
+    nc.append("<td class=\"FileColumnHeader " + S_ICON_CELL + "\">&nbsp;</td>");
+
+    if (fileCnt == 2) {
+      nc.append("<td class=\"FileColumnHeader LineNumber\">&nbsp;</td>");
+      nc.append("<td class=\"FileColumnHeader\" width=\"");
+      nc.append(width);
+      nc.append("\">");
+      nc.append(DomUtil.escape(PatchUtil.C.patchHeaderOld()));
+      nc.append("</td>");
+    } else {
+      for (int fileId = 0; fileId < fileCnt - 1; fileId++) {
+        nc.append("<td class=\"FileColumnHeader LineNumber\">&nbsp;</td>");
+        nc.append("<td class=\"FileColumnHeader\" width=\"");
+        nc.append(width);
+        nc.append("\">");
+        nc.append(DomUtil.escape(PatchUtil.M.patchHeaderAncestor(fileId + 1)));
+        nc.append("</td>");
+      }
+    }
+
+    nc.append("<td class=\"FileColumnHeader LineNumber\">&nbsp;</td>");
+    nc.append("<td class=\"FileColumnHeader\" width=\"");
+    nc.append(width);
+    nc.append("\">");
+    nc.append(DomUtil.escape(PatchUtil.C.patchHeaderNew()));
+    nc.append("</td>");
+
+    nc.append("</tr>");
+  }
+
+  private int skipped(List<SideBySideLine> prior,
+      final List<SideBySideLine> pLine) {
+    int existCnt = 0;
+    int gapCnt = 0;
+    int lines = 0;
+
+    if (prior != null && pLine != null) {
+      for (int i = 0; i < fileCnt; i++) {
+        final SideBySideLine ps = prior.get(i);
+        final SideBySideLine cs = pLine.get(i);
+        if (ps != null && cs != null) {
+          existCnt++;
+          if (ps.getLineNumber() + 1 != cs.getLineNumber()) {
+            lines =
+                Math.max(lines, cs.getLineNumber() - ps.getLineNumber() - 1);
+            gapCnt++;
+          }
+        }
+      }
+    } else if (prior != null) {
+      for (int i = 0; i < fileCnt; i++) {
+        final SideBySideLine ps = prior.get(i);
+        if (ps != null) {
+          existCnt++;
+          if (ps.getLineNumber() < maxLineNumber) {
+            lines = Math.max(lines, maxLineNumber - ps.getLineNumber() - 1);
+            gapCnt++;
+          }
+        }
+      }
+    } else {
+      for (int i = 0; i < fileCnt; i++) {
+        final SideBySideLine cs = pLine.get(i);
+        if (cs != null) {
+          existCnt++;
+          if (1 != cs.getLineNumber()) {
+            lines = Math.max(lines, cs.getLineNumber() - 1);
+            gapCnt++;
+          }
+        }
+      }
+    }
+    return existCnt == gapCnt ? lines : 0;
+  }
+
+  private void appendSkipLine(final StringBuilder body) {
+    body.append("<tr>");
+    body.append("<td class=\"" + S_ICON_CELL + "\">&nbsp;</td>");
+    body.append("<td class=\"SkipLine\" colspan=\"");
+    body.append(fileCnt * 2);
+    body.append("\">");
+    body.append("</td>");
+    body.append("</tr>");
+  }
+
+  private void bindSkipLine(int row, final int skipCnt) {
+    final FlowPanel skipPanel = new FlowPanel();
+    skipPanel.add(new InlineLabel(PatchUtil.M.patchSkipRegion(skipCnt)));
+    table.setWidget(row, 1, skipPanel);
+  }
+
+  private void appendFileLine(final StringBuilder nc,
+      final List<SideBySideLine> line) {
+    nc.append("<tr>");
+    nc.append("<td class=\"" + S_ICON_CELL + "\">&nbsp;</td>");
+
+    for (int fileId = 0; fileId < fileCnt; fileId++) {
+      final SideBySideLine s = line.get(fileId);
+      if (s != null) {
+        nc.append("<td class=\"LineNumber\">");
+        nc.append(s.getLineNumber());
+        nc.append("</td>");
+
+        nc.append("<td class=\"FileLine FileLine-");
+        nc.append(s.getType().name());
+        nc.append("\">");
+        if (!"".equals(s.getText()))
+          nc.append(PatchUtil.lineToHTML(s.getText()));
+        else
+          nc.append("&nbsp;");
+        nc.append("</td>");
+      } else {
+        nc.append("<td class=\"LineNumber\">&nbsp;</td>");
+        nc.append("<td class=\"FileLine FileLineNone\">&nbsp;</td>");
+      }
+    }
+
+    nc.append("</tr>");
+  }
+
+  private static class SideBySideLineList {
+    final List<SideBySideLine> lines;
+
+    SideBySideLineList(final List<SideBySideLine> a) {
+      lines = a;
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/patches/UnifiedDiffTable.java b/appjar/src/main/java/com/google/gerrit/client/patches/UnifiedDiffTable.java
new file mode 100644
index 0000000..b522e15
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/patches/UnifiedDiffTable.java
@@ -0,0 +1,80 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.patches;
+
+import com.google.gerrit.client.data.PatchLine;
+import com.google.gerrit.client.reviewdb.PatchLineComment;
+
+import java.util.Iterator;
+import java.util.List;
+
+public class UnifiedDiffTable extends AbstractPatchContentTable {
+  @Override
+  protected void onCellDoubleClick(final int row, final int column) {
+    if (column == 1 && getRowItem(row) instanceof PatchLine) {
+      final PatchLine pl = (PatchLine) getRowItem(row);
+      switch (pl.getType()) {
+        case PRE_IMAGE:
+        case CONTEXT:
+          createCommentEditor(row + 1, column, pl.getOldLineNumber(), (short) 0);
+          break;
+        case POST_IMAGE:
+          createCommentEditor(row + 1, column, pl.getOldLineNumber(), (short) 1);
+          break;
+      }
+    }
+  }
+
+  public void display(final List<PatchLine> list) {
+    final StringBuilder nc = new StringBuilder();
+    for (final PatchLine pLine : list) {
+      appendLine(nc, pLine);
+    }
+    resetHtml(nc.toString());
+
+    int row = 0;
+    for (final PatchLine pLine : list) {
+      setRowItem(row, pLine);
+      row++;
+
+      final List<PatchLineComment> comments = pLine.getComments();
+      if (comments != null) {
+        for (final Iterator<PatchLineComment> ci = comments.iterator(); ci
+            .hasNext();) {
+          final PatchLineComment c = ci.next();
+          table.insertRow(row);
+          bindComment(row, 1, c, !ci.hasNext());
+          row++;
+        }
+      }
+    }
+  }
+
+  private void appendLine(final StringBuilder nc, final PatchLine line) {
+    nc.append("<tr>");
+    nc.append("<td class=\"" + S_ICON_CELL + "\">&nbsp;</td>");
+
+    nc.append("<td class=\"DiffText DiffText-");
+    nc.append(line.getType().name());
+    nc.append("\">");
+    if (!"".equals(line.getText()))
+      nc.append(PatchUtil.lineToHTML(line.getText()));
+    else
+      nc.append("&nbsp;");
+    nc.append("</td>");
+
+    nc.append("</tr>");
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/redNot.png b/appjar/src/main/java/com/google/gerrit/client/redNot.png
new file mode 100644
index 0000000..4e83a8f
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/redNot.png
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/Account.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Account.java
new file mode 100644
index 0000000..84c7b63
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Account.java
@@ -0,0 +1,196 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.ResultSet;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+/** Preferences and information about a single user. */
+public final class Account {
+  /** Default number of lines of context. */
+  public static final short DEFAULT_CONTEXT = 10;
+
+  /** Typical valid choices for the default context setting. */
+  public static final short[] CONTEXT_CHOICES = {3, 10, 25, 50, 75, 100};
+
+  /**
+   * Locate exactly one account matching the name or name/email string.
+   * 
+   * @param db open database handle to use for the query.
+   * @param nameOrEmail a string of the format
+   *        "Full Name &lt;email@example&gt;", or just the preferred email
+   *        address ("email@example"), or a full name.
+   * @return the single account that matches; null if no account matches or
+   *         there are multiple candidates.
+   */
+  public static Account find(final ReviewDb db, final String nameOrEmail)
+      throws OrmException {
+    final int lt = nameOrEmail.indexOf('<');
+    final int gt = nameOrEmail.indexOf('>');
+    if (lt >= 0 && gt > lt) {
+      final String email = nameOrEmail.substring(lt + 1, gt);
+      return one(db.accounts().byPreferredEmail(email));
+    }
+
+    if (nameOrEmail.contains("@")) {
+      return one(db.accounts().byPreferredEmail(nameOrEmail));
+    }
+
+    return one(db.accounts().suggestByFullName(nameOrEmail, nameOrEmail, 2));
+  }
+
+  private static Account one(final ResultSet<Account> rs) {
+    final List<Account> r = rs.toList();
+    return r.size() == 1 ? r.get(0) : null;
+  }
+
+  /** Key local to Gerrit to identify a user. */
+  public static class Id extends IntKey<com.google.gwtorm.client.Key<?>> {
+    @Column
+    protected int id;
+
+    protected Id() {
+    }
+
+    public Id(final int id) {
+      this.id = id;
+    }
+
+    @Override
+    public int get() {
+      return id;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      id = newValue;
+    }
+
+    /** Parse an Account.Id out of a string representation. */
+    public static Id parse(final String str) {
+      final Id r = new Id();
+      r.fromString(str);
+      return r;
+    }
+  }
+
+  @Column
+  protected Id accountId;
+
+  /** Date and time the user registered with the review server. */
+  @Column
+  protected Timestamp registeredOn;
+
+  /** Full name of the user ("Given-name Surname" style). */
+  @Column(notNull = false)
+  protected String fullName;
+
+  /** Email address the user prefers to be contacted through. */
+  @Column(notNull = false)
+  protected String preferredEmail;
+
+  /**
+   * Username to authenticate as through SSH connections.
+   * <p>
+   * Note that this property tracks {@link #preferredEmail}.
+   */
+  @Column(notNull = false)
+  protected String sshUserName;
+
+  /** Default number of lines of context when viewing a patch. */
+  @Column
+  protected short defaultContext;
+
+  /** Non-Internet based contact details for the account's owner. */
+  @Column(notNull = false)
+  protected ContactInformation contact;
+
+  protected Account() {
+  }
+
+  /**
+   * Create a new account.
+   * 
+   * @param newId unique id, see {@link ReviewDb#nextAccountId()}.
+   */
+  public Account(final Account.Id newId) {
+    accountId = newId;
+    registeredOn = new Timestamp(System.currentTimeMillis());
+    defaultContext = DEFAULT_CONTEXT;
+  }
+
+  /** Get local id of this account, to link with in other entities */
+  public Account.Id getId() {
+    return accountId;
+  }
+
+  /** Get the full name of the user ("Given-name Surname" style). */
+  public String getFullName() {
+    return fullName;
+  }
+
+  /** Set the full name of the user ("Given-name Surname" style). */
+  public void setFullName(final String name) {
+    fullName = name;
+  }
+
+  /** Email address the user prefers to be contacted through. */
+  public String getPreferredEmail() {
+    return preferredEmail;
+  }
+
+  /** Set the email address the user prefers to be contacted through. */
+  public void setPreferredEmail(final String addr) {
+    if (addr != null && addr.contains("@")) {
+      sshUserName = addr.substring(0, addr.indexOf('@')).toLowerCase();
+    } else {
+      sshUserName = null;
+    }
+    preferredEmail = addr;
+  }
+
+  /** Get the name the user logins as through SSH. */
+  public String getSshUserName() {
+    return sshUserName;
+  }
+
+  /** Get the date and time the user first registered. */
+  public Timestamp getRegisteredOn() {
+    return registeredOn;
+  }
+
+  /** Get the default number of lines of context when viewing a patch. */
+  public short getDefaultContext() {
+    return defaultContext;
+  }
+
+  /** Set the number of lines of context when viewing a patch. */
+  public void setDefaultContext(final short s) {
+    defaultContext = s;
+  }
+
+  public ContactInformation getContactInformation() {
+    return contact;
+  }
+
+  public void setContactInformation(final ContactInformation i) {
+    contact = i;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAccess.java
new file mode 100644
index 0000000..794b20c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAccess.java
@@ -0,0 +1,42 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+/** Access interface for {@link Account}. */
+public interface AccountAccess extends Access<Account, Account.Id> {
+  /** Locate an account by our locally generated identity. */
+  @PrimaryKey("accountId")
+  Account get(Account.Id key) throws OrmException;
+
+  @Query("WHERE preferredEmail = ? LIMIT 2")
+  ResultSet<Account> byPreferredEmail(String email) throws OrmException;
+
+  @Query("WHERE sshUserName = ?")
+  ResultSet<Account> bySshUserName(String userName) throws OrmException;
+
+  @Query("WHERE fullName >= ? AND fullName <= ? ORDER BY fullName LIMIT ?")
+  ResultSet<Account> suggestByFullName(String nameA, String nameB, int limit)
+      throws OrmException;
+
+  @Query("WHERE preferredEmail >= ? AND preferredEmail <= ? ORDER BY preferredEmail LIMIT ?")
+  ResultSet<Account> suggestByPreferredEmail(String nameA, String nameB,
+      int limit) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAgreement.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAgreement.java
new file mode 100644
index 0000000..67a192a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAgreement.java
@@ -0,0 +1,146 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.CompoundKey;
+
+import java.sql.Timestamp;
+
+/** Electronic acceptance of a {@link ContributorAgreement} by {@link Account} */
+public final class AccountAgreement {
+  public static class Key extends CompoundKey<Account.Id> {
+    @Column
+    protected Account.Id accountId;
+
+    @Column
+    protected ContributorAgreement.Id claId;
+
+    protected Key() {
+      accountId = new Account.Id();
+      claId = new ContributorAgreement.Id();
+    }
+
+    public Key(final Account.Id account, final ContributorAgreement.Id cla) {
+      this.accountId = account;
+      this.claId = cla;
+    }
+
+    @Override
+    public Account.Id getParentKey() {
+      return accountId;
+    }
+
+    @Override
+    public com.google.gwtorm.client.Key<?>[] members() {
+      return new com.google.gwtorm.client.Key<?>[] {claId};
+    }
+  }
+
+  protected static final char NEW_CODE = 'n';
+
+  public static enum Status {
+    NEW(NEW_CODE),
+
+    VERIFIED('V'),
+
+    REJECTED('R');
+
+    private final char code;
+
+    private Status(final char c) {
+      code = c;
+    }
+
+    public char getCode() {
+      return code;
+    }
+
+    public static Status forCode(final char c) {
+      for (final Status s : Status.values()) {
+        if (s.code == c) {
+          return s;
+        }
+      }
+      return null;
+    }
+  }
+
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  @Column
+  protected Timestamp acceptedOn;
+
+  @Column
+  protected char status;
+
+  @Column(notNull = false)
+  protected Account.Id reviewedBy;
+
+  @Column(notNull = false)
+  protected Timestamp reviewedOn;
+
+  @Column(notNull = false, length = Integer.MAX_VALUE)
+  protected String reviewComments;
+
+  protected AccountAgreement() {
+  }
+
+  public AccountAgreement(final AccountAgreement.Key k) {
+    key = k;
+    acceptedOn = new Timestamp(System.currentTimeMillis());
+    status = Status.NEW.getCode();
+  }
+
+  public AccountAgreement.Key getKey() {
+    return key;
+  }
+
+  public ContributorAgreement.Id getAgreementId() {
+    return key.claId;
+  }
+
+  public Timestamp getAcceptedOn() {
+    return acceptedOn;
+  }
+
+  public Status getStatus() {
+    return Status.forCode(status);
+  }
+
+  public Timestamp getReviewedOn() {
+    return reviewedOn;
+  }
+
+  public Account.Id getReviewedBy() {
+    return reviewedBy;
+  }
+
+  public String getReviewComments() {
+    return reviewComments;
+  }
+
+  public void setReviewComments(final String s) {
+    reviewComments = s;
+  }
+
+  public void review(final Status newStatus, final Account.Id by) {
+    status = newStatus.getCode();
+    reviewedBy = by;
+    reviewedOn = new Timestamp(System.currentTimeMillis());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAgreementAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAgreementAccess.java
new file mode 100644
index 0000000..1745526
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountAgreementAccess.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface AccountAgreementAccess extends
+    Access<AccountAgreement, AccountAgreement.Key> {
+  @PrimaryKey("key")
+  AccountAgreement get(AccountAgreement.Key key) throws OrmException;
+
+  @Query("WHERE key.accountId = ? ORDER BY acceptedOn DESC")
+  ResultSet<AccountAgreement> byAccount(Account.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountExternalId.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountExternalId.java
new file mode 100644
index 0000000..4d38052
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountExternalId.java
@@ -0,0 +1,105 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.StringKey;
+
+import java.sql.Timestamp;
+
+/** Association of an external account identifier to a local {@link Account}. */
+public final class AccountExternalId {
+  public static class Key extends StringKey<Account.Id> {
+    @Column
+    protected Account.Id accountId;
+
+    @Column
+    protected String externalId;
+
+    protected Key() {
+      accountId = new Account.Id();
+    }
+
+    public Key(final Account.Id a, final String e) {
+      accountId = a;
+      externalId = e;
+    }
+
+    @Override
+    public Account.Id getParentKey() {
+      return accountId;
+    }
+
+    @Override
+    public String get() {
+      return externalId;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      externalId = newValue;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  @Column(notNull = false)
+  protected String emailAddress;
+
+  @Column(notNull = false)
+  protected Timestamp lastUsedOn;
+
+  protected AccountExternalId() {
+  }
+
+  /**
+   * Create a new binding to an external identity.
+   * 
+   * @param k the binding key.
+   */
+  public AccountExternalId(final AccountExternalId.Key k) {
+    key = k;
+  }
+
+  public AccountExternalId.Key getKey() {
+    return key;
+  }
+
+  /** Get local id of this account, to link with in other entities */
+  public Account.Id getAccountId() {
+    return key.accountId;
+  }
+
+  public String getExternalId() {
+    return key.externalId;
+  }
+
+  public String getEmailAddress() {
+    return emailAddress;
+  }
+
+  public void setEmailAddress(final String e) {
+    emailAddress = e;
+  }
+
+  public Timestamp getLastUsedOn() {
+    return lastUsedOn;
+  }
+
+  public void setLastUsedOn() {
+    lastUsedOn = new Timestamp(System.currentTimeMillis());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountExternalIdAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountExternalIdAccess.java
new file mode 100644
index 0000000..57a3180
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountExternalIdAccess.java
@@ -0,0 +1,40 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface AccountExternalIdAccess extends
+    Access<AccountExternalId, AccountExternalId.Key> {
+  @PrimaryKey("key")
+  AccountExternalId get(AccountExternalId.Key key) throws OrmException;
+
+  @Query("WHERE key.externalId = ? LIMIT 2")
+  ResultSet<AccountExternalId> byExternal(String id) throws OrmException;
+
+  @Query("WHERE key.accountId = ?")
+  ResultSet<AccountExternalId> byAccount(Account.Id id) throws OrmException;
+
+  @Query("WHERE emailAddress = ?")
+  ResultSet<AccountExternalId> byEmailAddress(String email) throws OrmException;
+
+  @Query("WHERE emailAddress >= ? AND emailAddress <= ? ORDER BY emailAddress LIMIT ?")
+  ResultSet<AccountExternalId> suggestByEmailAddress(String emailA,
+      String emailB, int limit) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroup.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroup.java
new file mode 100644
index 0000000..f366f1d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroup.java
@@ -0,0 +1,138 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+import com.google.gwtorm.client.StringKey;
+
+/** Named group of one or more accounts, typically used for access controls. */
+public final class AccountGroup {
+  /** Group name key */
+  public static class NameKey extends
+      StringKey<com.google.gwtorm.client.Key<?>> {
+    @Column(length = 40)
+    protected String name;
+
+    protected NameKey() {
+    }
+
+    public NameKey(final String n) {
+      name = n;
+    }
+
+    @Override
+    public String get() {
+      return name;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      name = newValue;
+    }
+  }
+
+  /** Synthetic key to link to within the database */
+  public static class Id extends IntKey<com.google.gwtorm.client.Key<?>> {
+    @Column
+    protected int id;
+
+    protected Id() {
+    }
+
+    public Id(final int id) {
+      this.id = id;
+    }
+
+    @Override
+    public int get() {
+      return id;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      id = newValue;
+    }
+
+    /** Parse an AccountGroup.Id out of a string representation. */
+    public static Id parse(final String str) {
+      final Id r = new Id();
+      r.fromString(str);
+      return r;
+    }
+  }
+
+  /** Unique name of this group within the system. */
+  @Column
+  protected NameKey name;
+
+  /** Unique identity, to link entities as {@link #name} can change. */
+  @Column
+  protected Id groupId;
+
+  /**
+   * Identity of the group whose members can manage this group.
+   * <p>
+   * This can be a self-reference to indicate the group's members manage itself.
+   */
+  @Column
+  protected Id ownerGroupId;
+
+  /** A textual description of the group's purpose. */
+  @Column(length = Integer.MAX_VALUE, notNull = false)
+  protected String description;
+
+  protected AccountGroup() {
+  }
+
+  public AccountGroup(final AccountGroup.NameKey newName,
+      final AccountGroup.Id newId) {
+    name = newName;
+    groupId = newId;
+    ownerGroupId = groupId;
+  }
+
+  public AccountGroup.Id getId() {
+    return groupId;
+  }
+
+  public String getName() {
+    return name.get();
+  }
+
+  public AccountGroup.NameKey getNameKey() {
+    return name;
+  }
+
+  public void setNameKey(final AccountGroup.NameKey nameKey) {
+    name = nameKey;
+  }
+
+  public String getDescription() {
+    return description;
+  }
+
+  public void setDescription(final String d) {
+    description = d;
+  }
+
+  public AccountGroup.Id getOwnerGroupId() {
+    return ownerGroupId;
+  }
+
+  public void setOwnerGroupId(final AccountGroup.Id id) {
+    ownerGroupId = id;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupAccess.java
new file mode 100644
index 0000000..6f8c085
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupAccess.java
@@ -0,0 +1,42 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+import com.google.gwtorm.client.SecondaryKey;
+
+public interface AccountGroupAccess extends
+    Access<AccountGroup, AccountGroup.Id> {
+  @PrimaryKey("groupId")
+  AccountGroup get(AccountGroup.Id id) throws OrmException;
+
+  @SecondaryKey("name")
+  AccountGroup get(AccountGroup.NameKey name) throws OrmException;
+
+  @Query("ORDER BY name")
+  ResultSet<AccountGroup> all() throws OrmException;
+
+  @Query("WHERE ownerGroupId = ?")
+  ResultSet<AccountGroup> ownedByGroup(AccountGroup.Id groupId)
+      throws OrmException;
+
+  @Query("WHERE name.name >= ? AND name.name <= ? ORDER BY name LIMIT ?")
+  ResultSet<AccountGroup> suggestByName(String nameA, String nameB, int limit)
+      throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupMember.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupMember.java
new file mode 100644
index 0000000..d2ee1e8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupMember.java
@@ -0,0 +1,75 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.CompoundKey;
+
+/** Membership of an {@link Account} in an {@link AccountGroup}. */
+public final class AccountGroupMember {
+  public static class Key extends CompoundKey<Account.Id> {
+    @Column
+    protected Account.Id accountId;
+
+    @Column
+    protected AccountGroup.Id groupId;
+
+    protected Key() {
+      accountId = new Account.Id();
+      groupId = new AccountGroup.Id();
+    }
+
+    public Key(final Account.Id a, final AccountGroup.Id g) {
+      accountId = a;
+      groupId = g;
+    }
+
+    @Override
+    public Account.Id getParentKey() {
+      return accountId;
+    }
+
+    public AccountGroup.Id getAccountGroupId() {
+      return groupId;
+    }
+
+    @Override
+    public com.google.gwtorm.client.Key<?>[] members() {
+      return new com.google.gwtorm.client.Key<?>[] {groupId};
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  protected AccountGroupMember() {
+  }
+
+  public AccountGroupMember(final AccountGroupMember.Key k) {
+    key = k;
+  }
+
+  public AccountGroupMember.Key getKey() {
+    return key;
+  }
+
+  public Account.Id getAccountId() {
+    return key.accountId;
+  }
+
+  public AccountGroup.Id getAccountGroupId() {
+    return key.groupId;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupMemberAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupMemberAccess.java
new file mode 100644
index 0000000..d5ea0e3
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountGroupMemberAccess.java
@@ -0,0 +1,33 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface AccountGroupMemberAccess extends
+    Access<AccountGroupMember, AccountGroupMember.Key> {
+  @PrimaryKey("key")
+  AccountGroupMember get(AccountGroupMember.Key key) throws OrmException;
+
+  @Query("WHERE key.accountId = ?")
+  ResultSet<AccountGroupMember> byAccount(Account.Id id) throws OrmException;
+
+  @Query("WHERE key.groupId = ?")
+  ResultSet<AccountGroupMember> byGroup(AccountGroup.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountProjectWatch.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountProjectWatch.java
new file mode 100644
index 0000000..5aaaf43
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountProjectWatch.java
@@ -0,0 +1,71 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.CompoundKey;
+
+/** An {@link Account} interested in a {@link Project}. */
+public final class AccountProjectWatch {
+  public static class Key extends CompoundKey<Account.Id> {
+    @Column
+    protected Account.Id accountId;
+
+    @Column
+    protected Project.Id projectId;
+
+    protected Key() {
+      accountId = new Account.Id();
+      projectId = new Project.Id();
+    }
+
+    public Key(final Account.Id a, final Project.Id g) {
+      accountId = a;
+      projectId = g;
+    }
+
+    @Override
+    public Account.Id getParentKey() {
+      return accountId;
+    }
+
+    @Override
+    public com.google.gwtorm.client.Key<?>[] members() {
+      return new com.google.gwtorm.client.Key<?>[] {projectId};
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  protected AccountProjectWatch() {
+  }
+
+  public AccountProjectWatch(final AccountProjectWatch.Key k) {
+    key = k;
+  }
+
+  public AccountProjectWatch.Key getKey() {
+    return key;
+  }
+
+  public Account.Id getAccountId() {
+    return key.accountId;
+  }
+
+  public Project.Id getProjectId() {
+    return key.projectId;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountProjectWatchAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountProjectWatchAccess.java
new file mode 100644
index 0000000..95ed9f5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountProjectWatchAccess.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface AccountProjectWatchAccess extends
+    Access<AccountProjectWatch, AccountProjectWatch.Key> {
+  @PrimaryKey("key")
+  AccountProjectWatch get(AccountProjectWatch.Key key) throws OrmException;
+
+  @Query("WHERE key.accountId = ?")
+  ResultSet<AccountProjectWatch> byAccount(Account.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountSshKey.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountSshKey.java
new file mode 100644
index 0000000..6553c32
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountSshKey.java
@@ -0,0 +1,151 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+
+import java.sql.Timestamp;
+
+/** An SSH key approved for use by an {@link Account}. */
+public final class AccountSshKey {
+  public static class Id extends IntKey<Account.Id> {
+    @Column
+    protected Account.Id accountId;
+
+    @Column
+    protected int seq;
+
+    protected Id() {
+      accountId = new Account.Id();
+    }
+
+    public Id(final Account.Id a, final int s) {
+      accountId = a;
+      seq = s;
+    }
+
+    @Override
+    public Account.Id getParentKey() {
+      return accountId;
+    }
+
+    @Override
+    public int get() {
+      return seq;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      seq = newValue;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected AccountSshKey.Id id;
+
+  @Column(length = Integer.MAX_VALUE)
+  protected String sshPublicKey;
+
+  @Column
+  protected Timestamp storedOn;
+
+  @Column
+  protected boolean valid;
+
+  @Column(notNull = false)
+  protected Timestamp lastUsedOn;
+
+  protected AccountSshKey() {
+  }
+
+  public AccountSshKey(final AccountSshKey.Id i, final String pub) {
+    id = i;
+    sshPublicKey = pub;
+    storedOn = new Timestamp(System.currentTimeMillis());
+    valid = true; // We can assume it is fine.
+  }
+
+  public Account.Id getAccount() {
+    return id.accountId;
+  }
+
+  public AccountSshKey.Id getKey() {
+    return id;
+  }
+
+  public String getSshPublicKey() {
+    return sshPublicKey;
+  }
+
+  public String getAlgorithm() {
+    final String s = getSshPublicKey();
+    if (s == null || s.length() == 0) {
+      return "none";
+    }
+
+    final String[] parts = s.split(" ");
+    if (parts.length < 1) {
+      return "none";
+    }
+    return parts[0];
+  }
+
+  public String getEncodedKey() {
+    final String s = getSshPublicKey();
+    if (s == null || s.length() == 0) {
+      return null;
+    }
+
+    final String[] parts = s.split(" ");
+    if (parts.length < 2) {
+      return null;
+    }
+    return parts[1];
+  }
+
+  public String getComment() {
+    final String s = getSshPublicKey();
+    if (s == null || s.length() == 0) {
+      return "";
+    }
+
+    final String[] parts = s.split(" ", 3);
+    if (parts.length < 3) {
+      return "";
+    }
+    return parts[2];
+  }
+
+  public Timestamp getStoredOn() {
+    return storedOn;
+  }
+
+  public boolean isValid() {
+    return valid;
+  }
+
+  public void setInvalid() {
+    valid = false;
+  }
+
+  public Timestamp getLastUsedOn() {
+    return lastUsedOn;
+  }
+
+  public void setLastUsedOn() {
+    lastUsedOn = new Timestamp(System.currentTimeMillis());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountSshKeyAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountSshKeyAccess.java
new file mode 100644
index 0000000..1497ea8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/AccountSshKeyAccess.java
@@ -0,0 +1,33 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface AccountSshKeyAccess extends
+    Access<AccountSshKey, AccountSshKey.Id> {
+  @PrimaryKey("id")
+  AccountSshKey get(AccountSshKey.Id id) throws OrmException;
+
+  @Query("WHERE id.accountId = ? ORDER BY storedOn DESC")
+  ResultSet<AccountSshKey> byAccount(Account.Id id) throws OrmException;
+
+  @Query("WHERE id.accountId = ? AND valid = true ORDER BY storedOn DESC")
+  ResultSet<AccountSshKey> valid(Account.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategory.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategory.java
new file mode 100644
index 0000000..c04c666
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategory.java
@@ -0,0 +1,124 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gerrit.client.workflow.CategoryFunction;
+import com.google.gerrit.client.workflow.MaxWithBlock;
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.Key;
+import com.google.gwtorm.client.StringKey;
+
+/** Types of approvals that can be associated with a {@link Change}. */
+public final class ApprovalCategory {
+  /** Id of the special "Submit" action (and category). */
+  public static final ApprovalCategory.Id SUBMIT =
+      new ApprovalCategory.Id("SUBM");
+
+  /** Id of the special "Read" action (and category). */
+  public static final ApprovalCategory.Id READ =
+      new ApprovalCategory.Id("READ");
+
+  public static class Id extends StringKey<Key<?>> {
+    @Column(length = 4)
+    protected String id;
+
+    protected Id() {
+    }
+
+    public Id(final String a) {
+      id = a;
+    }
+
+    @Override
+    public String get() {
+      return id;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      id = newValue;
+    }
+  }
+
+  /** Internal short unique identifier for this category. */
+  @Column
+  protected Id categoryId;
+
+  /** Unique name for this category, shown in the web interface to users. */
+  @Column(length = 20)
+  protected String name;
+
+  /**
+   * Order of this category within the Approvals table when presented.
+   * <p>
+   * If < 0 (e.g. -1) this category is not shown in the Approvals table but is
+   * instead considered to be an action that the user might be able to perform,
+   * e.g. "Submit".
+   * <p>
+   * If >= 0 this category is shown in the Approvals table, sorted along with
+   * its siblings by <code>position, name</code>.
+   */
+  @Column
+  protected short position;
+
+  /** Identity of the function used to aggregate the category's value. */
+  @Column
+  protected String functionName;
+
+  protected ApprovalCategory() {
+  }
+
+  public ApprovalCategory(final ApprovalCategory.Id id, final String name) {
+    this.categoryId = id;
+    this.name = name;
+    this.functionName = MaxWithBlock.NAME;
+  }
+
+  public ApprovalCategory.Id getId() {
+    return categoryId;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(final String n) {
+    name = n;
+  }
+
+  public short getPosition() {
+    return position;
+  }
+
+  public void setPosition(final short p) {
+    position = p;
+  }
+
+  public boolean isAction() {
+    return position < 0;
+  }
+
+  public String getFunctionName() {
+    return functionName;
+  }
+
+  public void setFunctionName(final String name) {
+    functionName = name;
+  }
+
+  public CategoryFunction getFunction() {
+    return CategoryFunction.forName(functionName);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryAccess.java
new file mode 100644
index 0000000..abe5ca3
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryAccess.java
@@ -0,0 +1,34 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+import com.google.gwtorm.client.SecondaryKey;
+
+public interface ApprovalCategoryAccess extends
+    Access<ApprovalCategory, ApprovalCategory.Id> {
+  @PrimaryKey("categoryId")
+  ApprovalCategory get(ApprovalCategory.Id id) throws OrmException;
+
+  @SecondaryKey("name")
+  ApprovalCategory byName(String name) throws OrmException;
+
+  @Query("ORDER BY position, name")
+  ResultSet<ApprovalCategory> all() throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryValue.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryValue.java
new file mode 100644
index 0000000..c37c29d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryValue.java
@@ -0,0 +1,88 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.ShortKey;
+
+/** Valid value for a {@link ApprovalCategory}. */
+public final class ApprovalCategoryValue {
+  public static class Id extends ShortKey<ApprovalCategory.Id> {
+    @Column
+    protected ApprovalCategory.Id categoryId;
+
+    @Column
+    protected short value;
+
+    protected Id() {
+      categoryId = new ApprovalCategory.Id();
+    }
+
+    public Id(final ApprovalCategory.Id cat, final short v) {
+      categoryId = cat;
+      value = v;
+    }
+
+    @Override
+    public ApprovalCategory.Id getParentKey() {
+      return categoryId;
+    }
+
+    @Override
+    public short get() {
+      return value;
+    }
+
+    @Override
+    protected void set(short newValue) {
+      value = newValue;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Id key;
+
+  @Column(length = 50)
+  protected String name;
+
+  protected ApprovalCategoryValue() {
+  }
+
+  public ApprovalCategoryValue(final ApprovalCategoryValue.Id id,
+      final String name) {
+    this.key = id;
+    this.name = name;
+  }
+
+  public ApprovalCategoryValue.Id getId() {
+    return key;
+  }
+
+  public ApprovalCategory.Id getCategoryId() {
+    return key.categoryId;
+  }
+
+  public short getValue() {
+    return key.value;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(final String n) {
+    name = n;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryValueAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryValueAccess.java
new file mode 100644
index 0000000..15f1afb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ApprovalCategoryValueAccess.java
@@ -0,0 +1,31 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface ApprovalCategoryValueAccess extends
+    Access<ApprovalCategoryValue, ApprovalCategoryValue.Id> {
+  @PrimaryKey("key")
+  ApprovalCategoryValue get(ApprovalCategoryValue.Id key) throws OrmException;
+
+  @Query("WHERE key.categoryId = ? ORDER BY key.value")
+  ResultSet<ApprovalCategoryValue> byCategory(ApprovalCategory.Id id)
+      throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/Branch.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Branch.java
new file mode 100644
index 0000000..98e7282
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Branch.java
@@ -0,0 +1,120 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+import com.google.gwtorm.client.StringKey;
+
+/** Registered line of development within a {@link Project}. */
+public final class Branch {
+  /** Branch name key */
+  public static class NameKey extends StringKey<Project.NameKey> {
+    @Column
+    protected Project.NameKey projectName;
+
+    @Column
+    protected String branchName;
+
+    protected NameKey() {
+      projectName = new Project.NameKey();
+    }
+
+    public NameKey(final Project.NameKey proj, final String n) {
+      projectName = proj;
+      branchName = n;
+    }
+
+    @Override
+    public String get() {
+      return branchName;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      branchName = newValue;
+    }
+
+    @Override
+    public Project.NameKey getParentKey() {
+      return projectName;
+    }
+
+    public String getShortName() {
+      final String n = get();
+
+      // Git style branches will tend to start with "refs/heads/".
+      // 
+      if (n.startsWith("refs/heads/")) {
+        return n.substring("refs/heads/".length());
+      }
+
+      return n;
+    }
+  }
+
+  /** Synthetic key to link to within the database */
+  public static class Id extends IntKey<com.google.gwtorm.client.Key<?>> {
+    @Column
+    protected int id;
+
+    protected Id() {
+    }
+
+    public Id(final int id) {
+      this.id = id;
+    }
+
+    @Override
+    public int get() {
+      return id;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      id = newValue;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected NameKey name;
+
+  @Column
+  protected Id branchId;
+
+  protected Branch() {
+  }
+
+  public Branch(final Branch.NameKey newName, final Branch.Id newId) {
+    name = newName;
+    branchId = newId;
+  }
+
+  public Branch.Id getId() {
+    return branchId;
+  }
+
+  public Branch.NameKey getNameKey() {
+    return name;
+  }
+
+  public String getName() {
+    return name.get();
+  }
+
+  public String getShortName() {
+    return name.getShortName();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/BranchAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/BranchAccess.java
new file mode 100644
index 0000000..0f8c478
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/BranchAccess.java
@@ -0,0 +1,33 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+import com.google.gwtorm.client.SecondaryKey;
+
+public interface BranchAccess extends Access<Branch, Branch.NameKey> {
+  @PrimaryKey("name")
+  Branch get(Branch.NameKey name) throws OrmException;
+
+  @SecondaryKey("branchId")
+  Branch get(Branch.Id id) throws OrmException;
+
+  @Query("WHERE name.projectName = ? ORDER BY name.branchName")
+  ResultSet<Branch> byProject(Project.NameKey key) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/Change.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Change.java
new file mode 100644
index 0000000..9e7fc78
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Change.java
@@ -0,0 +1,223 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+import com.google.gwtorm.client.RowVersion;
+
+import java.sql.Timestamp;
+
+/** A change recommended to be inserted into {@link Branch}. */
+public final class Change {
+  public static class Id extends IntKey<com.google.gwtorm.client.Key<?>> {
+    @Column
+    protected int id;
+
+    protected Id() {
+    }
+
+    public Id(final int id) {
+      this.id = id;
+    }
+
+    @Override
+    public int get() {
+      return id;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      id = newValue;
+    }
+
+    /** Parse a Change.Id out of a string representation. */
+    public static Id parse(final String str) {
+      final Id r = new Id();
+      r.fromString(str);
+      return r;
+    }
+  }
+
+  private static final char MIN_OPEN = 'a';
+  protected static final char STATUS_NEW = 'n';
+  protected static final char STATUS_SUBMITTED = 's';
+  private static final char MAX_OPEN = 'z';
+
+  protected static final char STATUS_MERGED = 'M';
+
+  public static enum Status {
+    NEW(STATUS_NEW),
+
+    SUBMITTED(STATUS_SUBMITTED),
+
+    MERGED(STATUS_MERGED),
+
+    ABANDONED('A');
+
+    private final char code;
+    private final boolean closed;
+
+    private Status(final char c) {
+      code = c;
+      closed = !(MIN_OPEN <= c && c <= MAX_OPEN);
+    }
+
+    public char getCode() {
+      return code;
+    }
+
+    public boolean isOpen() {
+      return !closed;
+    }
+
+    public boolean isClosed() {
+      return closed;
+    }
+
+    public static Status forCode(final char c) {
+      for (final Status s : Status.values()) {
+        if (s.code == c) {
+          return s;
+        }
+      }
+      return null;
+    }
+  }
+
+  /** Locally assigned unique identifier of the change */
+  @Column
+  protected Id changeId;
+
+  /** optimistic locking */
+  @Column
+  @RowVersion
+  protected int rowVersion;
+
+  /** When this change was first introduced into the database. */
+  @Column
+  protected Timestamp createdOn;
+
+  /**
+   * When was a meaningful modification last made to this record's data
+   * <p>
+   * Note, this update timestamp includes its children.
+   */
+  @Column
+  protected Timestamp lastUpdatedOn;
+
+  @Column(name = "owner_account_id")
+  protected Account.Id owner;
+
+  /** The branch (and project) this change merges into. */
+  @Column
+  protected Branch.NameKey dest;
+
+  /** Is the change currently open? Set to {@link #status}.isOpen(). */
+  @Column
+  protected boolean open;
+
+  /** Current state code; see {@link Status}. */
+  @Column
+  protected char status;
+
+  /** The total number of {@link PatchSet} children in this Change. */
+  @Column
+  protected int nbrPatchSets;
+
+  /** The current patch set. */
+  @Column
+  protected int currentPatchSetId;
+
+  /** Subject from the current patch set. */
+  @Column
+  protected String subject;
+
+  protected Change() {
+  }
+
+  public Change(final Change.Id newId, final Account.Id ownedBy,
+      final Branch.NameKey forBranch) {
+    changeId = newId;
+    createdOn = new Timestamp(System.currentTimeMillis());
+    lastUpdatedOn = createdOn;
+    owner = ownedBy;
+    dest = forBranch;
+    setStatus(Status.NEW);
+  }
+
+  public Change.Id getId() {
+    return changeId;
+  }
+
+  public int getChangeId() {
+    return changeId.get();
+  }
+
+  public Timestamp getCreatedOn() {
+    return createdOn;
+  }
+
+  public Timestamp getLastUpdatedOn() {
+    return lastUpdatedOn;
+  }
+
+  public void updated() {
+    lastUpdatedOn = new Timestamp(System.currentTimeMillis());
+  }
+
+  public Account.Id getOwner() {
+    return owner;
+  }
+
+  public Branch.NameKey getDest() {
+    return dest;
+  }
+
+  public String getSubject() {
+    return subject;
+  }
+
+  /** Get the id of the most current {@link PatchSet} in this change. */
+  public PatchSet.Id currentPatchSetId() {
+    if (currentPatchSetId > 0) {
+      return new PatchSet.Id(changeId, currentPatchSetId);
+    }
+    return null;
+  }
+
+  public void setCurrentPatchSet(final PatchSetInfo ps) {
+    currentPatchSetId = ps.getKey().get();
+    subject = ps.getSubject();
+  }
+
+  /**
+   * Allocate a new PatchSet id within this change.
+   * <p>
+   * <b>Note: This makes the change dirty. Call update() after.</b>
+   */
+  public PatchSet.Id newPatchSetId() {
+    return new PatchSet.Id(changeId, ++nbrPatchSets);
+  }
+
+  public Status getStatus() {
+    return Status.forCode(status);
+  }
+
+  public void setStatus(final Status newStatus) {
+    open = newStatus.isOpen();
+    status = newStatus.getCode();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeAccess.java
new file mode 100644
index 0000000..5893683
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeAccess.java
@@ -0,0 +1,36 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface ChangeAccess extends Access<Change, Change.Id> {
+  @PrimaryKey("changeId")
+  Change get(Change.Id id) throws OrmException;
+
+  @Query("WHERE owner = ? AND open = true ORDER BY lastUpdatedOn DESC")
+  ResultSet<Change> byOwnerOpen(Account.Id id) throws OrmException;
+
+  @Query("WHERE owner = ? AND open = false ORDER BY lastUpdatedOn DESC LIMIT 5")
+  ResultSet<Change> byOwnerClosed(Account.Id id) throws OrmException;
+
+  @Query("WHERE dest = ? AND status = '" + Change.STATUS_SUBMITTED
+      + "' ORDER BY lastUpdatedOn")
+  ResultSet<Change> submitted(Branch.NameKey dest) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeApproval.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeApproval.java
new file mode 100644
index 0000000..71c4c33
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeApproval.java
@@ -0,0 +1,125 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.CompoundKey;
+
+import java.sql.Timestamp;
+
+/** An approval (or negative approval) on a change. */
+public final class ChangeApproval {
+  public static class Key extends CompoundKey<Change.Id> {
+    @Column
+    protected Change.Id changeId;
+
+    @Column
+    protected Account.Id accountId;
+
+    @Column
+    protected ApprovalCategory.Id categoryId;
+
+    protected Key() {
+      changeId = new Change.Id();
+      accountId = new Account.Id();
+      categoryId = new ApprovalCategory.Id();
+    }
+
+    public Key(final Change.Id change, final Account.Id a,
+        final ApprovalCategory.Id c) {
+      this.changeId = change;
+      this.accountId = a;
+      this.categoryId = c;
+    }
+
+    @Override
+    public Change.Id getParentKey() {
+      return changeId;
+    }
+
+    @Override
+    public com.google.gwtorm.client.Key<?>[] members() {
+      return new com.google.gwtorm.client.Key<?>[] {accountId, categoryId};
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  /**
+   * Value assigned by the user.
+   * <p>
+   * The precise meaning of "value" is up to each category.
+   * <p>
+   * In general:
+   * <ul>
+   * <li><b>&lt; 0:</b> The approval is rejected/revoked.</li>
+   * <li><b>= 0:</b> No indication either way is provided.</li>
+   * <li><b>&gt; 0:</b> The approval is approved/positive.</li>
+   * </ul>
+   * and in the negative and positive direction a magnitude can be assumed.The
+   * further from 0 the more assertive the approval.
+   */
+  @Column
+  protected short value;
+
+  @Column
+  protected Timestamp granted;
+
+  protected ChangeApproval() {
+  }
+
+  public ChangeApproval(final ChangeApproval.Key k, final short v) {
+    key = k;
+    setValue(v);
+    setGranted();
+  }
+
+  public ChangeApproval.Key getKey() {
+    return key;
+  }
+
+  public Change.Id getChangeId() {
+    return key.changeId;
+  }
+
+  public Account.Id getAccountId() {
+    return key.accountId;
+  }
+
+  public ApprovalCategory.Id getCategoryId() {
+    return key.categoryId;
+  }
+
+  public short getValue() {
+    return value;
+  }
+
+  public void setValue(final short v) {
+    value = v;
+  }
+
+  public void clear() {
+    value = 0;
+  }
+
+  public Timestamp getGranted() {
+    return granted;
+  }
+
+  public void setGranted() {
+    granted = new Timestamp(System.currentTimeMillis());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeApprovalAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeApprovalAccess.java
new file mode 100644
index 0000000..4b83d71
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeApprovalAccess.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface ChangeApprovalAccess extends
+    Access<ChangeApproval, ChangeApproval.Key> {
+  @PrimaryKey("key")
+  ChangeApproval get(ChangeApproval.Key key) throws OrmException;
+
+  @Query("WHERE key.changeId = ?")
+  ResultSet<ChangeApproval> byChange(Change.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessage.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessage.java
new file mode 100644
index 0000000..d33b4de
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessage.java
@@ -0,0 +1,100 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.StringKey;
+
+import java.sql.Timestamp;
+
+/** A message attached to a {@link Change}. */
+public final class ChangeMessage {
+  public static class Key extends StringKey<Change.Id> {
+    @Column
+    protected Change.Id changeId;
+
+    @Column(length = 40)
+    protected String uuid;
+
+    protected Key() {
+      changeId = new Change.Id();
+    }
+
+    public Key(final Change.Id change, final String uuid) {
+      this.changeId = change;
+      this.uuid = uuid;
+    }
+
+    @Override
+    public Change.Id getParentKey() {
+      return changeId;
+    }
+
+    @Override
+    public String get() {
+      return uuid;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      uuid = newValue;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  /** Who wrote this comment; null if it was written by the Gerrit system. */
+  @Column(name = "author_id", notNull = false)
+  protected Account.Id author;
+
+  /** When this comment was drafted. */
+  @Column
+  protected Timestamp writtenOn;
+
+  /** The text left by the user. */
+  @Column(notNull = false, length = Integer.MAX_VALUE)
+  protected String message;
+
+  protected ChangeMessage() {
+  }
+
+  public ChangeMessage(final ChangeMessage.Key k, final Account.Id a) {
+    key = k;
+    author = a;
+    writtenOn = new Timestamp(System.currentTimeMillis());
+  }
+
+  public ChangeMessage.Key getKey() {
+    return key;
+  }
+
+  /** If null, the message was written 'by the Gerrit system'. */
+  public Account.Id getAuthor() {
+    return author;
+  }
+
+  public Timestamp getWrittenOn() {
+    return writtenOn;
+  }
+
+  public String getMessage() {
+    return message;
+  }
+
+  public void setMessage(final String s) {
+    message = s;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessageAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessageAccess.java
new file mode 100644
index 0000000..106a07f
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ChangeMessageAccess.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface ChangeMessageAccess extends
+    Access<ChangeMessage, ChangeMessage.Key> {
+  @PrimaryKey("key")
+  ChangeMessage get(ChangeMessage.Key id) throws OrmException;
+
+  @Query("WHERE key.changeId = ? ORDER BY writtenOn")
+  ResultSet<ChangeMessage> byChange(Change.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContactInformation.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContactInformation.java
new file mode 100644
index 0000000..1b44fe0
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContactInformation.java
@@ -0,0 +1,67 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+
+/** Non-Internet contact details, such as a postal address and telephone. */
+public final class ContactInformation {
+  @Column(length = Integer.MAX_VALUE, notNull = false)
+  protected String address;
+
+  @Column(notNull = false, length = 40)
+  protected String country;
+
+  @Column(notNull = false, length = 30)
+  protected String phoneNbr;
+
+  @Column(notNull = false, length = 30)
+  protected String faxNbr;
+
+  public ContactInformation() {
+  }
+
+  public String getAddress() {
+    return address;
+  }
+
+  public void setAddress(final String a) {
+    address = a;
+  }
+
+  public String getCountry() {
+    return country;
+  }
+
+  public void setCountry(final String c) {
+    country = c;
+  }
+
+  public String getPhoneNumber() {
+    return phoneNbr;
+  }
+
+  public void setPhoneNumber(final String p) {
+    phoneNbr = p;
+  }
+
+  public String getFaxNumber() {
+    return faxNbr;
+  }
+
+  public void setFaxNumber(final String f) {
+    faxNbr = f;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContributorAgreement.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContributorAgreement.java
new file mode 100644
index 0000000..cfa5c01
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContributorAgreement.java
@@ -0,0 +1,137 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+
+/**
+ * An agreement {@link Account} must acknowledge to contribute changes.
+ * 
+ * @see AccountAgreement
+ */
+public final class ContributorAgreement {
+  public static class Id extends IntKey<com.google.gwtorm.client.Key<?>> {
+    @Column(name = "cla_id")
+    protected int id;
+
+    protected Id() {
+    }
+
+    public Id(final int id) {
+      this.id = id;
+    }
+
+    @Override
+    public int get() {
+      return id;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      id = newValue;
+    }
+  }
+
+  @Column
+  protected Id id;
+
+  /** Is this an active agreement contributors can use. */
+  @Column
+  protected boolean active;
+
+  /** Does this agreement require the {@link Account} to have contact details? */
+  @Column
+  protected boolean requireContactInformation;
+
+  /** Does this agreement automatically verify new accounts? */
+  @Column
+  protected boolean autoVerify;
+
+  /** A short name for the agreement. */
+  @Column(length = 40)
+  protected String shortName;
+
+  /** A short one-line description text to appear next to the name. */
+  @Column(notNull = false)
+  protected String shortDescription;
+
+  /** Web address of the agreement documentation. */
+  @Column
+  protected String agreementUrl;
+
+  protected ContributorAgreement() {
+  }
+
+  /**
+   * Create a new agreement.
+   * 
+   * @param newId unique id, see {@link ReviewDb#nextAccountId()}.
+   * @param name a short title/name for the agreement.
+   */
+  public ContributorAgreement(final ContributorAgreement.Id newId,
+      final String name) {
+    id = newId;
+    shortName = name;
+  }
+
+  public ContributorAgreement.Id getId() {
+    return id;
+  }
+
+  public boolean isActive() {
+    return active;
+  }
+
+  public void setActive(final boolean a) {
+    active = a;
+  }
+
+  public boolean isAutoVerify() {
+    return autoVerify;
+  }
+
+  public void setAutoVerify(final boolean g) {
+    autoVerify = g;
+  }
+
+  public boolean isRequireContactInformation() {
+    return requireContactInformation;
+  }
+
+  public void setRequireContactInformation(final boolean r) {
+    requireContactInformation = r;
+  }
+
+  public String getShortName() {
+    return shortName;
+  }
+
+  public String getShortDescription() {
+    return shortDescription;
+  }
+
+  public void setShortDescription(final String d) {
+    shortDescription = d;
+  }
+
+  public String getAgreementUrl() {
+    return agreementUrl;
+  }
+
+  public void setAgreementUrl(final String h) {
+    agreementUrl = h;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContributorAgreementAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContributorAgreementAccess.java
new file mode 100644
index 0000000..ac6ac80
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ContributorAgreementAccess.java
@@ -0,0 +1,31 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+/** Access interface for {@link ContributorAgreement}. */
+public interface ContributorAgreementAccess extends
+    Access<ContributorAgreement, ContributorAgreement.Id> {
+  @PrimaryKey("id")
+  ContributorAgreement get(ContributorAgreement.Id key) throws OrmException;
+
+  @Query("WHERE active = true ORDER BY shortName")
+  ResultSet<ContributorAgreement> active() throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/Patch.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Patch.java
new file mode 100644
index 0000000..23b4593
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Patch.java
@@ -0,0 +1,196 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.StringKey;
+
+/** A single modified file in a {@link PatchSet}. */
+public final class Patch {
+  public static class Key extends StringKey<PatchSet.Id> {
+    @Column(name = Column.NONE)
+    protected PatchSet.Id patchSetId;
+
+    @Column
+    protected String fileName;
+
+    protected Key() {
+      patchSetId = new PatchSet.Id();
+    }
+
+    public Key(final PatchSet.Id ps, final String name) {
+      this.patchSetId = ps;
+      this.fileName = name;
+    }
+
+    @Override
+    public PatchSet.Id getParentKey() {
+      return patchSetId;
+    }
+
+    @Override
+    public String get() {
+      return fileName;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      fileName = newValue;
+    }
+
+    /** Parse a Patch.Id out of a string representation. */
+    public static Key parse(final String str) {
+      final Key r = new Key();
+      r.fromString(str);
+      return r;
+    }
+  }
+
+  public static enum ChangeType {
+    ADD('A'),
+
+    MODIFIED('M'),
+
+    DELETED('D'),
+
+    RENAMED('R'),
+
+    COPIED('C');
+
+    private final char code;
+
+    private ChangeType(final char c) {
+      code = c;
+    }
+
+    public char getCode() {
+      return code;
+    }
+
+    public static ChangeType forCode(final char c) {
+      for (final ChangeType s : ChangeType.values()) {
+        if (s.code == c) {
+          return s;
+        }
+      }
+      return null;
+    }
+  }
+
+  public static enum PatchType {
+    UNIFIED('U'),
+
+    BINARY('B'),
+
+    N_WAY('N');
+
+    private final char code;
+
+    private PatchType(final char c) {
+      code = c;
+    }
+
+    public char getCode() {
+      return code;
+    }
+
+    public static PatchType forCode(final char c) {
+      for (final PatchType s : PatchType.values()) {
+        if (s.code == c) {
+          return s;
+        }
+      }
+      return null;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  /** What sort of change is this to the path; see {@link ChangeType}. */
+  @Column
+  protected char changeType;
+
+  /** What type of patch is this; see {@link PatchType}. */
+  @Column
+  protected char patchType;
+
+  @Column(notNull = false)
+  protected PatchContent.Key contentSha1;
+
+  /** Number of published comments on this patch. */
+  @Column
+  protected int nbrComments;
+
+  /**
+   * Original if {@link #changeType} is {@link ChangeType#COPIED} or
+   * {@link ChangeType#RENAMED}.
+   */
+  @Column(notNull = false)
+  protected String sourceFileName;
+
+  protected Patch() {
+  }
+
+  public Patch(final Patch.Key newId) {
+    key = newId;
+    setChangeType(ChangeType.MODIFIED);
+    setPatchType(PatchType.UNIFIED);
+  }
+
+  public Patch.Key getKey() {
+    return key;
+  }
+
+  public int getCommentCount() {
+    return nbrComments;
+  }
+
+  public ChangeType getChangeType() {
+    return ChangeType.forCode(changeType);
+  }
+
+  public void setChangeType(final ChangeType type) {
+    changeType = type.getCode();
+  }
+
+  public PatchType getPatchType() {
+    return PatchType.forCode(patchType);
+  }
+
+  public void setPatchType(final PatchType type) {
+    patchType = type.getCode();
+  }
+
+  public String getFileName() {
+    return key.fileName;
+  }
+
+  public PatchContent.Key getContent() {
+    return contentSha1;
+  }
+
+  public void setContent(final PatchContent.Key k) {
+    contentSha1 = k;
+  }
+
+  public String getSourceFileName() {
+    return sourceFileName;
+  }
+
+  public void setSourceFileName(final String n) {
+    sourceFileName = n;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchAccess.java
new file mode 100644
index 0000000..a5f117d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchAccess.java
@@ -0,0 +1,29 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface PatchAccess extends Access<Patch, Patch.Key> {
+  @PrimaryKey("key")
+  Patch get(Patch.Key id) throws OrmException;
+
+  @Query("WHERE key.patchSetId = ? ORDER BY key.fileName")
+  ResultSet<Patch> byPatchSet(PatchSet.Id ps) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchContent.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchContent.java
new file mode 100644
index 0000000..4d2224f
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchContent.java
@@ -0,0 +1,79 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.KeyUtil;
+
+/** Content of a single patch file */
+public final class PatchContent {
+  public static class Key implements
+      com.google.gwtorm.client.Key<com.google.gwtorm.client.Key<?>> {
+    @Column(length = 40)
+    protected String sha1;
+
+    protected Key() {
+    }
+
+    public Key(final String ps) {
+      sha1 = ps;
+    }
+
+    @Override
+    public int hashCode() {
+      return sha1.hashCode();
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+      return getClass() == o.getClass() && sha1.equals(((Key) o).sha1);
+    }
+
+    @Override
+    public String toString() {
+      return KeyUtil.encode(sha1);
+    }
+
+    public void fromString(final String in) {
+      sha1 = KeyUtil.decode(in);
+    }
+
+    public com.google.gwtorm.client.Key<?> getParentKey() {
+      return null;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected PatchContent.Key key;
+
+  @Column(length = Integer.MAX_VALUE)
+  protected String content;
+
+  protected PatchContent() {
+  }
+
+  public PatchContent(final PatchContent.Key k, final String c) {
+    key = k;
+    content = c;
+  }
+
+  public PatchContent.Key getKey() {
+    return key;
+  }
+
+  public String getContent() {
+    return content;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchContentAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchContentAccess.java
new file mode 100644
index 0000000..4d6e21d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchContentAccess.java
@@ -0,0 +1,25 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+
+public interface PatchContentAccess extends
+    Access<PatchContent, PatchContent.Key> {
+  @PrimaryKey("key")
+  PatchContent get(PatchContent.Key key) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchLineComment.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchLineComment.java
new file mode 100644
index 0000000..e881cb2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchLineComment.java
@@ -0,0 +1,162 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.StringKey;
+
+import java.sql.Timestamp;
+
+/** A comment left by a user on a specific line of a {@link Patch}. */
+public final class PatchLineComment {
+  public static class Key extends StringKey<Patch.Key> {
+    @Column(name = Column.NONE)
+    protected Patch.Key patchKey;
+
+    @Column(length = 40)
+    protected String uuid;
+
+    protected Key() {
+      patchKey = new Patch.Key();
+    }
+
+    public Key(final Patch.Key p, final String uuid) {
+      this.patchKey = p;
+      this.uuid = uuid;
+    }
+
+    @Override
+    public Patch.Key getParentKey() {
+      return patchKey;
+    }
+
+    @Override
+    public String get() {
+      return uuid;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      uuid = newValue;
+    }
+  }
+
+  protected static final char STATUS_DRAFT = 'd';
+  protected static final char STATUS_PUBLISHED = 'P';
+
+  public static enum Status {
+    DRAFT(STATUS_DRAFT),
+
+    PUBLISHED(STATUS_PUBLISHED);
+
+    private final char code;
+
+    private Status(final char c) {
+      code = c;
+    }
+
+    public char getCode() {
+      return code;
+    }
+
+    public static Status forCode(final char c) {
+      for (final Status s : Status.values()) {
+        if (s.code == c) {
+          return s;
+        }
+      }
+      return null;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  /** Line number this comment applies to; it should display after the line. */
+  @Column
+  protected int lineNbr;
+
+  /** Who wrote this comment. */
+  @Column(name = "author_id")
+  protected Account.Id author;
+
+  /** When this comment was drafted. */
+  @Column
+  protected Timestamp writtenOn;
+
+  /** Current publication state of the comment; see {@link Status}. */
+  @Column
+  protected char status;
+
+  /** Which file is this comment; 0 is ancestor, 1 is new version. */
+  @Column
+  protected short side;
+
+  /** The text left by the user. */
+  @Column(notNull = false, length = Integer.MAX_VALUE)
+  protected String message;
+
+  protected PatchLineComment() {
+  }
+
+  public PatchLineComment(final PatchLineComment.Key id, final int line,
+      final Account.Id a) {
+    key = id;
+    lineNbr = line;
+    author = a;
+    writtenOn = new Timestamp(System.currentTimeMillis());
+    setStatus(Status.DRAFT);
+  }
+
+  public PatchLineComment.Key getKey() {
+    return key;
+  }
+
+  public int getLine() {
+    return lineNbr;
+  }
+
+  public Account.Id getAuthor() {
+    return author;
+  }
+
+  public Timestamp getWrittenOn() {
+    return writtenOn;
+  }
+
+  public Status getStatus() {
+    return Status.forCode(status);
+  }
+
+  public void setStatus(final Status s) {
+    status = s.getCode();
+  }
+
+  public short getSide() {
+    return side;
+  }
+
+  public void setSide(final short s) {
+    side = s;
+  }
+
+  public String getMessage() {
+    return message;
+  }
+
+  public void setMessage(final String s) {
+    message = s;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchLineCommentAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchLineCommentAccess.java
new file mode 100644
index 0000000..92ecbc7
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchLineCommentAccess.java
@@ -0,0 +1,37 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface PatchLineCommentAccess extends
+    Access<PatchLineComment, PatchLineComment.Key> {
+  @PrimaryKey("key")
+  PatchLineComment get(PatchLineComment.Key id) throws OrmException;
+
+  @Query("WHERE key.patchKey = ? AND status = '"
+      + PatchLineComment.STATUS_PUBLISHED + "' ORDER BY lineNbr,writtenOn")
+  ResultSet<PatchLineComment> published(Patch.Key patch) throws OrmException;
+
+  @Query("WHERE key.patchKey = ? AND status = '"
+      + PatchLineComment.STATUS_DRAFT
+      + "' AND author = ? ORDER BY lineNbr,writtenOn")
+  ResultSet<PatchLineComment> draft(Patch.Key patch, Account.Id author)
+      throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSet.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSet.java
new file mode 100644
index 0000000..5878f89
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSet.java
@@ -0,0 +1,105 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+
+/** A single revision of a {@link Change}. */
+public final class PatchSet {
+  public static class Id extends IntKey<Change.Id> {
+    @Column
+    protected Change.Id changeId;
+
+    @Column
+    protected int patchSetId;
+
+    protected Id() {
+      changeId = new Change.Id();
+    }
+
+    public Id(final Change.Id change, final int id) {
+      this.changeId = change;
+      this.patchSetId = id;
+    }
+
+    @Override
+    public Change.Id getParentKey() {
+      return changeId;
+    }
+
+    @Override
+    public int get() {
+      return patchSetId;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      patchSetId = newValue;
+    }
+
+    /** Parse a PatchSet.Id out of a string representation. */
+    public static Id parse(final String str) {
+      final Id r = new Id();
+      r.fromString(str);
+      return r;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Id id;
+
+  @Column(notNull = false)
+  protected RevId revision;
+
+  protected PatchSet() {
+  }
+
+  public PatchSet(final PatchSet.Id k) {
+    id = k;
+  }
+
+  public PatchSet.Id getId() {
+    return id;
+  }
+
+  public int getPatchSetId() {
+    return id.get();
+  }
+
+  public RevId getRevision() {
+    return revision;
+  }
+
+  public void setRevision(final RevId i) {
+    revision = i;
+  }
+
+  public String getRefName() {
+    final StringBuilder r = new StringBuilder();
+    r.append("refs/changes/");
+    final int changeId = id.getParentKey().get();
+    final int m = changeId % 100;
+    if (m < 10) {
+      r.append('0');
+    }
+    r.append(m);
+    r.append('/');
+    r.append(changeId);
+    r.append('/');
+    r.append(id.get());
+    return r.toString();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAccess.java
new file mode 100644
index 0000000..811b60a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAccess.java
@@ -0,0 +1,36 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface PatchSetAccess extends Access<PatchSet, PatchSet.Id> {
+  @PrimaryKey("id")
+  PatchSet get(PatchSet.Id id) throws OrmException;
+
+  @Query("WHERE id.changeId = ? ORDER BY id.patchSetId")
+  ResultSet<PatchSet> byChange(Change.Id id) throws OrmException;
+
+  @Query("WHERE revision = ? LIMIT 2")
+  ResultSet<PatchSet> byRevision(RevId rev) throws OrmException;
+
+  @Query("WHERE revision >= ? AND revision <= ? LIMIT 2")
+  ResultSet<PatchSet> byRevisionRange(RevId reva, RevId revb)
+      throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAncestor.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAncestor.java
new file mode 100644
index 0000000..f2267bb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAncestor.java
@@ -0,0 +1,86 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+
+/** Ancestors of a {@link PatchSet} that the PatchSet depends upon. */
+public final class PatchSetAncestor {
+  public static class Id extends IntKey<PatchSet.Id> {
+    @Column(name = Column.NONE)
+    protected PatchSet.Id patchSetId;
+
+    @Column
+    protected int position;
+
+    protected Id() {
+      patchSetId = new PatchSet.Id();
+    }
+
+    public Id(final PatchSet.Id psId, final int pos) {
+      this.patchSetId = psId;
+      this.position = pos;
+    }
+
+    @Override
+    public PatchSet.Id getParentKey() {
+      return patchSetId;
+    }
+
+    @Override
+    public int get() {
+      return position;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      position = newValue;
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Id key;
+
+  @Column
+  protected RevId ancestorRevision;
+
+  protected PatchSetAncestor() {
+  }
+
+  public PatchSetAncestor(final PatchSetAncestor.Id k) {
+    key = k;
+  }
+
+  public PatchSetAncestor.Id getId() {
+    return key;
+  }
+
+  public PatchSet.Id getPatchSet() {
+    return key.patchSetId;
+  }
+
+  public int getPosition() {
+    return key.position;
+  }
+
+  public RevId getAncestorRevision() {
+    return ancestorRevision;
+  }
+
+  public void setAncestorRevision(final RevId id) {
+    ancestorRevision = id;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAncestorAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAncestorAccess.java
new file mode 100644
index 0000000..4b6274b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetAncestorAccess.java
@@ -0,0 +1,34 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface PatchSetAncestorAccess extends
+    Access<PatchSetAncestor, PatchSetAncestor.Id> {
+  @PrimaryKey("key")
+  PatchSetAncestor get(PatchSetAncestor.Id key) throws OrmException;
+
+  @Query("WHERE key.patchSetId = ? ORDER BY key.position")
+  ResultSet<PatchSetAncestor> ancestorsOf(PatchSet.Id id) throws OrmException;
+
+  @Query("WHERE ancestorRevision = ?")
+  ResultSet<PatchSetAncestor> descendantsOf(RevId revision)
+      throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetInfo.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetInfo.java
new file mode 100644
index 0000000..a9b32d9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetInfo.java
@@ -0,0 +1,91 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+
+/**
+ * Additional data about a {@link PatchSet} not normally loaded.
+ * <p>
+ * This is stored out of band from the PatchSet itself, to reduce the size of
+ * each PatchSet record.
+ */
+public final class PatchSetInfo {
+  @Column(name = Column.NONE)
+  protected PatchSet.Id key;
+
+  /** First line of {@link #message}. */
+  @Column(notNull = false)
+  protected String subject;
+
+  /** The complete description of the change the patch set introduces. */
+  @Column(notNull = false, length = Integer.MAX_VALUE)
+  protected String message;
+
+  /** Identity of who wrote the patch set. May differ from {@link #committer}. */
+  @Column(notNull = false)
+  protected UserIdentity author;
+
+  /** Identity of who committed the patch set to the VCS. */
+  @Column(notNull = false)
+  protected UserIdentity committer;
+
+  protected PatchSetInfo() {
+  }
+
+  public PatchSetInfo(final PatchSet.Id k) {
+    key = k;
+  }
+
+  public PatchSet.Id getKey() {
+    return key;
+  }
+
+  public String getSubject() {
+    return subject;
+  }
+
+  public void setSubject(final String s) {
+    if (s != null && s.length() > 255) {
+      subject = s.substring(0, 255);
+    } else {
+      subject = s;
+    }
+  }
+
+  public String getMessage() {
+    return message;
+  }
+
+  public void setMessage(final String m) {
+    message = m;
+  }
+
+  public UserIdentity getAuthor() {
+    return author;
+  }
+
+  public void setAuthor(final UserIdentity u) {
+    author = u;
+  }
+
+  public UserIdentity getCommitter() {
+    return committer;
+  }
+
+  public void setCommitter(final UserIdentity u) {
+    committer = u;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetInfoAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetInfoAccess.java
new file mode 100644
index 0000000..1682cb7
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/PatchSetInfoAccess.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+
+public interface PatchSetInfoAccess extends Access<PatchSetInfo, PatchSet.Id> {
+  @PrimaryKey("key")
+  PatchSetInfo get(PatchSet.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/Project.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Project.java
new file mode 100644
index 0000000..ffbf394
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/Project.java
@@ -0,0 +1,136 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.IntKey;
+import com.google.gwtorm.client.StringKey;
+
+/** Projects match a source code repository managed by Gerrit */
+public final class Project {
+  /** Project name key */
+  public static class NameKey extends
+      StringKey<com.google.gwtorm.client.Key<?>> {
+    @Column
+    protected String name;
+
+    protected NameKey() {
+    }
+
+    public NameKey(final String n) {
+      name = n;
+    }
+
+    @Override
+    public String get() {
+      return name;
+    }
+
+    @Override
+    protected void set(String newValue) {
+      name = newValue;
+    }
+  }
+
+  /** Synthetic key to link to within the database */
+  public static class Id extends IntKey<com.google.gwtorm.client.Key<?>> {
+    @Column
+    protected int id;
+
+    protected Id() {
+    }
+
+    public Id(final int id) {
+      this.id = id;
+    }
+
+    @Override
+    public int get() {
+      return id;
+    }
+
+    @Override
+    protected void set(int newValue) {
+      id = newValue;
+    }
+
+    /** Parse a Project.Id out of a string representation. */
+    public static Id parse(final String str) {
+      final Id r = new Id();
+      r.fromString(str);
+      return r;
+    }
+  }
+
+  @Column
+  protected NameKey name;
+
+  @Column
+  protected Id projectId;
+
+  @Column(length = Integer.MAX_VALUE, notNull = false)
+  protected String description;
+
+  @Column
+  protected AccountGroup.Id ownerGroupId;
+
+  @Column
+  protected boolean useContributorAgreements;
+
+  protected Project() {
+  }
+
+  public Project(final Project.NameKey newName, final Project.Id newId) {
+    name = newName;
+    projectId = newId;
+    useContributorAgreements = true;
+  }
+
+  public Project.Id getId() {
+    return projectId;
+  }
+
+  public Project.NameKey getNameKey() {
+    return name;
+  }
+
+  public String getName() {
+    return name.get();
+  }
+
+  public String getDescription() {
+    return description;
+  }
+
+  public void setDescription(final String d) {
+    description = d;
+  }
+
+  public AccountGroup.Id getOwnerGroupId() {
+    return ownerGroupId;
+  }
+
+  public void setOwnerGroupId(final AccountGroup.Id id) {
+    ownerGroupId = id;
+  }
+
+  public boolean isUseContributorAgreements() {
+    return useContributorAgreements;
+  }
+
+  public void setUseContributorAgreements(final boolean u) {
+    useContributorAgreements = u;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectAccess.java
new file mode 100644
index 0000000..566c178
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectAccess.java
@@ -0,0 +1,40 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+import com.google.gwtorm.client.SecondaryKey;
+
+public interface ProjectAccess extends Access<Project, Project.NameKey> {
+  @PrimaryKey("name")
+  Project get(Project.NameKey name) throws OrmException;
+
+  @SecondaryKey("projectId")
+  Project get(Project.Id id) throws OrmException;
+
+  @Query("ORDER BY name")
+  ResultSet<Project> all() throws OrmException;
+
+  @Query("WHERE ownerGroupId = ?")
+  ResultSet<Project> ownedByGroup(AccountGroup.Id groupId) throws OrmException;
+
+  @Query("WHERE name.name >= ? AND name.name <= ? ORDER BY name LIMIT ?")
+  ResultSet<Project> suggestByName(String nameA, String nameB, int limit)
+      throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectRight.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectRight.java
new file mode 100644
index 0000000..7c2f3e8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectRight.java
@@ -0,0 +1,110 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.CompoundKey;
+
+/** Grant to use an {@link ApprovalCategory} in the scope of a {@link Project}. */
+public final class ProjectRight {
+  /** Project.Id meaning "any and all projects on this server". */
+  public static final Project.Id WILD_PROJECT = new Project.Id(0);
+
+  public static class Key extends CompoundKey<Project.Id> {
+    @Column
+    protected Project.Id projectId;
+
+    @Column
+    protected ApprovalCategory.Id categoryId;
+
+    @Column
+    protected AccountGroup.Id groupId;
+
+    protected Key() {
+      projectId = new Project.Id();
+      categoryId = new ApprovalCategory.Id();
+      groupId = new AccountGroup.Id();
+    }
+
+    public Key(final Project.Id p, final ApprovalCategory.Id a,
+        final AccountGroup.Id g) {
+      projectId = p;
+      categoryId = a;
+      groupId = g;
+    }
+
+    @Override
+    public Project.Id getParentKey() {
+      return projectId;
+    }
+
+    public Project.Id getProjectId() {
+      return projectId;
+    }
+
+    @Override
+    public com.google.gwtorm.client.Key<?>[] members() {
+      return new com.google.gwtorm.client.Key<?>[] {categoryId, groupId};
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  @Column
+  protected short minValue;
+
+  @Column
+  protected short maxValue;
+
+  protected ProjectRight() {
+  }
+
+  public ProjectRight(final ProjectRight.Key k) {
+    key = k;
+  }
+
+  public ProjectRight.Key getKey() {
+    return key;
+  }
+
+  public Project.Id getProjectId() {
+    return key.projectId;
+  }
+
+  public ApprovalCategory.Id getApprovalCategoryId() {
+    return key.categoryId;
+  }
+
+  public AccountGroup.Id getAccountGroupId() {
+    return key.groupId;
+  }
+
+  public short getMinValue() {
+    return minValue;
+  }
+
+  public void setMinValue(final short m) {
+    minValue = m;
+  }
+
+  public short getMaxValue() {
+    return maxValue;
+  }
+
+  public void setMaxValue(final short m) {
+    maxValue = m;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectRightAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectRightAccess.java
new file mode 100644
index 0000000..9c385b2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ProjectRightAccess.java
@@ -0,0 +1,37 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface ProjectRightAccess extends
+    Access<ProjectRight, ProjectRight.Key> {
+  @PrimaryKey("key")
+  ProjectRight get(ProjectRight.Key key) throws OrmException;
+
+  @Query("WHERE key.projectId = ?")
+  ResultSet<ProjectRight> byProject(Project.Id id) throws OrmException;
+
+  @Query("WHERE key.groupId = ?")
+  ResultSet<ProjectRight> byGroup(AccountGroup.Id id) throws OrmException;
+
+  @Query("WHERE key.categoryId = ?")
+  ResultSet<ProjectRight> byApprovalCategory(ApprovalCategory.Id id)
+      throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/RevId.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/RevId.java
new file mode 100644
index 0000000..f8a5eb6
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/RevId.java
@@ -0,0 +1,59 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+
+/** A revision identifier for a file or a change. */
+public final class RevId {
+  public static final int LEN = 40;
+
+  @Column(length = LEN)
+  protected String id;
+
+  protected RevId() {
+  }
+
+  public RevId(final String str) {
+    id = str;
+  }
+
+  /** @return the value of this revision id. */
+  public String get() {
+    return id;
+  }
+
+  /** @return true if this revision id has all required digits. */
+  public boolean isComplete() {
+    return get().length() == LEN;
+  }
+
+  /**
+   * @return if {@link #isComplete()}, <code>this</code>. Otherwise a new RevId
+   *         with '~' appended on the end until {@link #LEN} is reached.
+   */
+  public RevId max() {
+    if (isComplete()) {
+      return this;
+    }
+
+    final StringBuilder revEnd = new StringBuilder(LEN);
+    revEnd.append(get());
+    while (revEnd.length() < LEN) {
+      revEnd.append('~');
+    }
+    return new RevId(revEnd.toString());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java
new file mode 100644
index 0000000..65fc056
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/ReviewDb.java
@@ -0,0 +1,121 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Relation;
+import com.google.gwtorm.client.Schema;
+import com.google.gwtorm.client.Sequence;
+
+/** The review service database schema. */
+public interface ReviewDb extends Schema {
+  @Relation
+  SystemConfigAccess systemConfig();
+
+  @Relation
+  ApprovalCategoryAccess approvalCategories();
+
+  @Relation
+  ApprovalCategoryValueAccess approvalCategoryValues();
+
+  @Relation
+  ContributorAgreementAccess contributorAgreements();
+
+  @Relation
+  AccountAccess accounts();
+
+  @Relation
+  AccountExternalIdAccess accountExternalIds();
+
+  @Relation
+  AccountSshKeyAccess accountSshKeys();
+
+  @Relation
+  AccountAgreementAccess accountAgreements();
+
+  @Relation
+  AccountGroupAccess accountGroups();
+
+  @Relation
+  AccountGroupMemberAccess accountGroupMembers();
+
+  @Relation
+  StarredChangeAccess starredChanges();
+
+  @Relation
+  AccountProjectWatchAccess accountProjectWatches();
+
+  @Relation
+  ProjectAccess projects();
+
+  @Relation
+  ProjectRightAccess projectRights();
+
+  @Relation
+  BranchAccess branches();
+
+  @Relation
+  ChangeAccess changes();
+
+  @Relation
+  ChangeApprovalAccess changeApprovals();
+
+  @Relation
+  ChangeMessageAccess changeMessages();
+
+  @Relation
+  PatchSetAccess patchSets();
+
+  @Relation
+  PatchSetInfoAccess patchSetInfo();
+
+  @Relation
+  PatchSetAncestorAccess patchSetAncestors();
+
+  @Relation
+  PatchAccess patches();
+
+  @Relation
+  PatchContentAccess patchContents();
+
+  @Relation
+  PatchLineCommentAccess patchComments();
+
+  /** Create the next unique id for an {@link Account}. */
+  @Sequence(startWith = 1000000)
+  int nextAccountId();
+
+  /** Create the next unique id for a {@link ContributorAgreement}. */
+  @Sequence
+  int nextContributorAgreementId();
+
+  /** Next unique id for a {@link AccountGroup}. */
+  @Sequence
+  int nextAccountGroupId();
+
+  /** Next unique id for a {@link Project}. */
+  @Sequence
+  int nextProjectId();
+
+  /** Next unique id for a {@link Branch}. */
+  @Sequence
+  int nextBranchId();
+
+  /** Next unique id for a {@link Change}. */
+  @Sequence
+  int nextChangeId();
+
+  @Sequence
+  int nextChangeMessageId();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/StarredChange.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/StarredChange.java
new file mode 100644
index 0000000..d10b74f
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/StarredChange.java
@@ -0,0 +1,67 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.CompoundKey;
+
+/** A {@link Change} starred by an {@link Account}. */
+public class StarredChange {
+  public static class Key extends CompoundKey<Account.Id> {
+    @Column
+    protected Account.Id accountId;
+
+    @Column
+    protected Change.Id changeId;
+
+    protected Key() {
+      accountId = new Account.Id();
+      changeId = new Change.Id();
+    }
+
+    public Key(final Account.Id a, final Change.Id g) {
+      accountId = a;
+      changeId = g;
+    }
+
+    @Override
+    public Account.Id getParentKey() {
+      return accountId;
+    }
+
+    @Override
+    public com.google.gwtorm.client.Key<?>[] members() {
+      return new com.google.gwtorm.client.Key<?>[] {changeId};
+    }
+  }
+
+  @Column(name = Column.NONE)
+  protected Key key;
+
+  protected StarredChange() {
+  }
+
+  public StarredChange(final StarredChange.Key k) {
+    key = k;
+  }
+
+  public Account.Id getAccountId() {
+    return key.accountId;
+  }
+
+  public Change.Id getChangeId() {
+    return key.changeId;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java
new file mode 100644
index 0000000..391d8b2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/StarredChangeAccess.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+import com.google.gwtorm.client.Query;
+import com.google.gwtorm.client.ResultSet;
+
+public interface StarredChangeAccess extends
+    Access<StarredChange, StarredChange.Key> {
+  @PrimaryKey("key")
+  StarredChange get(StarredChange.Key key) throws OrmException;
+
+  @Query("WHERE key.accountId = ?")
+  ResultSet<StarredChange> byAccount(Account.Id id) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/SystemConfig.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/SystemConfig.java
new file mode 100644
index 0000000..252694e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/SystemConfig.java
@@ -0,0 +1,161 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gerrit.server.HostPageServlet;
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.StringKey;
+
+/** Global configuration needed to serve web requests. */
+public final class SystemConfig {
+  public static final class Key extends
+      StringKey<com.google.gwtorm.client.Key<?>> {
+    private static final String VALUE = "X";
+
+    @Column(length = 1)
+    protected String one = VALUE;
+
+    public Key() {
+    }
+
+    @Override
+    public String get() {
+      return VALUE;
+    }
+
+    @Override
+    protected void set(final String newValue) {
+      assert get().equals(newValue);
+    }
+  }
+
+  public static enum LoginType {
+    /** Login relies upon the OpenID standard: {@link "http://openid.net/"} */
+    OPENID,
+
+    /**
+     * Login relies upon the container/web server security.
+     * <p>
+     * The container or web server must populate an HTTP header with the some
+     * user token. Gerrit will implicitly trust the value of this header to
+     * supply the unique identity.
+     */
+    HTTP;
+  }
+
+  public static SystemConfig create() {
+    final SystemConfig r = new SystemConfig();
+    r.singleton = new SystemConfig.Key();
+    r.maxSessionAge = 12 * 60 * 60 /* seconds */;
+    return r;
+  }
+
+  @Column
+  protected Key singleton;
+
+  /** Private key to sign XSRF protection tokens. */
+  @Column(length = 36)
+  public transient String xsrfPrivateKey;
+
+  /** Private key to sign account identification cookies. */
+  @Column(length = 36)
+  public transient String accountPrivateKey;
+
+  /** Maximum web session age, in seconds. */
+  @Column
+  public transient int maxSessionAge;
+
+  /**
+   * Local filesystem location of header/footer/CSS configuration files
+   * 
+   * @see HostPageServlet
+   */
+  @Column(notNull = false)
+  public transient String sitePath;
+
+  /** Optional canonical URL for this application. */
+  @Column(notNull = false)
+  public String canonicalUrl;
+
+  /** Optional URL of a gitweb installation to also view changes through. */
+  @Column(notNull = false)
+  public String gitwebUrl;
+
+  /** Local filesystem loction all projects reside within. */
+  @Column(notNull = false)
+  public transient String gitBasePath;
+
+  /** Name this Gerrit instance calls itself when it makes changes in Git. */
+  @Column
+  public String gerritGitName;
+
+  /** Email this Gerrit instance calls itself when it makes changes in Git. */
+  @Column(notNull = false)
+  public String gerritGitEmail;
+
+  /** Type of login access used by this instance. */
+  @Column(length = 16)
+  protected String loginType;
+
+  /** HTTP header to use for the user identity if loginType is HTTP. */
+  @Column(length = 30, notNull = false)
+  public transient String loginHttpHeader;
+
+  /** Format to generate email address from a login names */
+  @Column(length = 30, notNull = false)
+  public transient String emailFormat;
+
+  /**
+   * Can user accounts from Gerrit1 upgrade to use OpenID?
+   * <p>
+   * This setting should only be true if this server is an upgraded database
+   * from Gerrit1, and if there are still outstanding accounts which need to be
+   * upgraded to Gerrit2's OpenID authentication scheme. Any other system should
+   * leave this setting false.
+   */
+  @Column
+  public transient boolean allowGoogleAccountUpgrade;
+
+  /** Is a verified {@link AccountAgreement} required to upload changes? */
+  @Column
+  public boolean useContributorAgreements;
+
+  /** Local TCP port number the embedded SSHD server binds onto. */
+  @Column
+  public int sshdPort;
+
+  /** Identity of the administration group; those with full access. */
+  @Column
+  public AccountGroup.Id adminGroupId;
+
+  /** Identity of the anonymous group, which permits anyone. */
+  @Column
+  public AccountGroup.Id anonymousGroupId;
+
+  /** Identity of the registered users group, which permits anyone. */
+  @Column
+  public AccountGroup.Id registeredGroupId;
+
+  public LoginType getLoginType() {
+    return loginType != null ? LoginType.valueOf(loginType) : null;
+  }
+
+  public void setLoginType(final LoginType t) {
+    loginType = t.name();
+  }
+
+  protected SystemConfig() {
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/SystemConfigAccess.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/SystemConfigAccess.java
new file mode 100644
index 0000000..6aa428b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/SystemConfigAccess.java
@@ -0,0 +1,26 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.PrimaryKey;
+
+/** Access interface for {@link SystemConfig}. */
+public interface SystemConfigAccess extends
+    Access<SystemConfig, SystemConfig.Key> { 
+  @PrimaryKey("singleton")
+  SystemConfig get(SystemConfig.Key key) throws OrmException;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/reviewdb/UserIdentity.java b/appjar/src/main/java/com/google/gerrit/client/reviewdb/UserIdentity.java
new file mode 100644
index 0000000..2c7d4a2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/reviewdb/UserIdentity.java
@@ -0,0 +1,69 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.reviewdb;
+
+import com.google.gwtorm.client.Column;
+
+import java.sql.Timestamp;
+
+public final class UserIdentity {
+  /** Full name of the user. */
+  @Column
+  protected String name;
+
+  /** Email address (or user@host style string anyway). */
+  @Column
+  protected String email;
+
+  /** Time (in UTC) when the identity was constructed. */
+  @Column
+  protected Timestamp when;
+
+  /** Offset from UTC */
+  @Column
+  protected int tz;
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(final String n) {
+    name = n;
+  }
+
+  public String getEmail() {
+    return email;
+  }
+
+  public void setEmail(final String e) {
+    email = e;
+  }
+
+  public Timestamp getDate() {
+    return when;
+  }
+
+  public void setDate(final Timestamp d) {
+    when = d;
+  }
+
+  public int getTimeZone() {
+    return tz;
+  }
+
+  public void setTimeZone(final int offset) {
+    tz = offset;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/BaseServiceImplementation.java b/appjar/src/main/java/com/google/gerrit/client/rpc/BaseServiceImplementation.java
new file mode 100644
index 0000000..8cd1dab
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/BaseServiceImplementation.java
@@ -0,0 +1,148 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.Set;
+
+/** Support for services which require a {@link ReviewDb} instance. */
+public class BaseServiceImplementation {
+  /**
+   * Executes <code>action.run</code> with an active ReviewDb connection.
+   * <p>
+   * A database handle is automatically opened and closed around the action's
+   * {@link Action#run(ReviewDb)} method. OrmExceptions are caught and passed
+   * into the onFailure method of the callback.
+   * 
+   * @param <T> type of result the callback expects.
+   * @param callback the callback that will receive the result.
+   * @param action the action logic to perform.
+   */
+  protected <T> void run(final AsyncCallback<T> callback, final Action<T> action) {
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      final T r;
+      try {
+        r = action.run(db);
+      } finally {
+        db.close();
+      }
+      if (r != null) {
+        callback.onSuccess(r);
+      }
+    } catch (OrmException e) {
+      callback.onFailure(e);
+    } catch (Failure e) {
+      callback.onFailure(e.getCause());
+    }
+  }
+
+  /** Throws NoSuchEntityException if the caller cannot access the project. */
+  public static void assertCanRead(final Change change) throws Failure {
+    if (!canRead(change)) {
+      throw new Failure(new NoSuchEntityException());
+    }
+  }
+
+  /** Throws NoSuchEntityException if the caller cannot access the project. */
+  public static void assertCanRead(final Project.NameKey projectKey)
+      throws Failure {
+    if (!canRead(projectKey)) {
+      throw new Failure(new NoSuchEntityException());
+    }
+  }
+
+  /** Return true if the current user can read this change's project. */
+  public static boolean canRead(final Change change) {
+    return change != null && canRead(change.getDest().getParentKey());
+  }
+
+  /** Return true if the current user can read this project, and its contents. */
+  public static boolean canRead(final Project.NameKey projectKey) {
+    final ProjectCache.Entry e = Common.getProjectCache().get(projectKey);
+    if (e == null) {
+      // Unexpected, a project disappearing. But claim its not available.
+      //
+      return false;
+    }
+
+    final Set<AccountGroup.Id> myGroups =
+        Common.getGroupCache().getGroups(Common.getAccountId());
+    if (myGroups.contains(e.getProject().getOwnerGroupId())) {
+      // Ownership implies full access.
+      //
+      return true;
+    }
+
+    int val = Integer.MIN_VALUE;
+    for (final ProjectRight pr : e.getRights()) {
+      if (ApprovalCategory.READ.equals(pr.getApprovalCategoryId())
+          && myGroups.contains(pr.getAccountGroupId())) {
+        if (val < 0 && pr.getMaxValue() > 0) {
+          // If one of the user's groups had denied them access, but
+          // this group grants them access, prefer the grant over
+          // the denial. We have to break the tie somehow and we
+          // prefer being "more open" to being "more closed".
+          //
+          val = pr.getMaxValue();
+        } else {
+          // Otherwise we use the largest value we can get.
+          //
+          val = Math.max(pr.getMaxValue(), val);
+        }
+      }
+    }
+    if (val == Integer.MIN_VALUE) {
+      for (final ProjectRight pr : Common.getProjectCache().getWildcardRights()) {
+        if (ApprovalCategory.READ.equals(pr.getApprovalCategoryId())
+            && myGroups.contains(pr.getAccountGroupId())) {
+          val = Math.max(pr.getMaxValue(), val);
+        }
+      }
+    }
+
+    return val > 0;
+  }
+
+  /** Exception whose cause is passed into onFailure. */
+  public static class Failure extends Exception {
+    public Failure(final Throwable why) {
+      super(why);
+    }
+  }
+
+  /** Arbitrary action to run with a database connection. */
+  public static interface Action<T> {
+    /**
+     * Perform this action, returning the onSuccess value.
+     * 
+     * @param db an open database handle to be used by this connection.
+     * @return he value to pass to {@link AsyncCallback#onSuccess(Object)}.
+     * @throws OrmException any schema based action failed.
+     * @throws Failure cause is given to
+     *         {@link AsyncCallback#onFailure(Throwable)}.
+     */
+    T run(ReviewDb db) throws OrmException, Failure;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/Common.java b/appjar/src/main/java/com/google/gerrit/client/rpc/Common.java
new file mode 100644
index 0000000..8166d6c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/Common.java
@@ -0,0 +1,124 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.data.AccountCache;
+import com.google.gerrit.client.data.GerritConfig;
+import com.google.gerrit.client.data.GroupCache;
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gwt.core.client.GWT;
+import com.google.gwtorm.client.SchemaFactory;
+
+public class Common {
+  public static final RpcConstants C;
+  private static GerritConfig config;
+  private static SchemaFactory<ReviewDb> schema;
+  private static AccountCache accountCache;
+  private static GroupCache groupCache;
+  private static ProjectCache projectCache;
+  private static CurrentAccountImpl caImpl;
+
+  static {
+    if (GWT.isClient()) {
+      C = GWT.create(RpcConstants.class);
+      caImpl = new CurrentAccountImpl() {
+        public Account.Id getAccountId() {
+          final Account a = Gerrit.getUserAccount();
+          return a != null ? a.getId() : null;
+        }
+      };
+    } else {
+      C = null;
+    }
+  }
+
+  /** Get the public configuration data used by this Gerrit instance. */
+  public static GerritConfig getGerritConfig() {
+    return config;
+  }
+
+  public static void setGerritConfig(final GerritConfig imp) {
+    config = imp;
+  }
+
+  /**
+   * Get the active AccountCache instance.
+   * <p>
+   * <b>Note: this is likely only available on the server side.</b>
+   */
+  public static AccountCache getAccountCache() {
+    return accountCache;
+  }
+
+  public static void setAccountCache(final AccountCache imp) {
+    accountCache = imp;
+  }
+
+  /**
+   * Get the active GroupCache instance.
+   * <p>
+   * <b>Note: this is likely only available on the server side.</b>
+   */
+  public static GroupCache getGroupCache() {
+    return groupCache;
+  }
+
+  public static void setGroupCache(final GroupCache imp) {
+    groupCache = imp;
+  }
+
+  /**
+   * Get the active ProjectCache instance.
+   * <p>
+   * <b>Note: this is likely only available on the server side.</b>
+   */
+  public static ProjectCache getProjectCache() {
+    return projectCache;
+  }
+
+  public static void setProjectCache(final ProjectCache imp) {
+    projectCache = imp;
+  }
+
+  /**
+   * Get the schema factory for this instance.
+   * <p>
+   * <b>Note: this is likely only available on the server side.</b>
+   */
+  public static SchemaFactory<ReviewDb> getSchemaFactory() {
+    return schema;
+  }
+
+  public static void setSchemaFactory(final SchemaFactory<ReviewDb> imp) {
+    schema = imp;
+  }
+
+  /** Get the unique id for this account; null if there is no account. */
+  public static Account.Id getAccountId() {
+    return caImpl.getAccountId();
+  }
+
+  public static void setCurrentAccountImpl(final CurrentAccountImpl i) {
+    caImpl = i;
+  }
+
+  public interface CurrentAccountImpl {
+    /** Get the unique id for this account; null if there is no account. */
+    public Account.Id getAccountId();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/CorruptEntityException.java b/appjar/src/main/java/com/google/gerrit/client/rpc/CorruptEntityException.java
new file mode 100644
index 0000000..1f34540
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/CorruptEntityException.java
@@ -0,0 +1,26 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+import com.google.gwtorm.client.Key;
+
+/** Error indicating the entity's database records are invalid. */
+public class CorruptEntityException extends Exception {
+  public static final String MESSAGE_PREFIX = "Corrupt Database Entity: ";
+
+  public CorruptEntityException(final Key<?> key) {
+    super(MESSAGE_PREFIX + key);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/GerritCallback.java b/appjar/src/main/java/com/google/gerrit/client/rpc/GerritCallback.java
new file mode 100644
index 0000000..cd163ed
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/GerritCallback.java
@@ -0,0 +1,68 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+import com.google.gerrit.client.ErrorDialog;
+import com.google.gerrit.client.Gerrit;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.RemoteJsonException;
+import com.google.gwtjsonrpc.client.ServerUnavailableException;
+
+/** Abstract callback handling generic error conditions automatically */
+public abstract class GerritCallback<T> implements AsyncCallback<T> {
+  public void onFailure(final Throwable caught) {
+    if (isNotSignedIn(caught)) {
+      new ErrorDialog(Common.C.errorNotSignedIn()).center();
+
+    } else if (isNoSuchEntity(caught)) {
+      new ErrorDialog(Gerrit.C.notFoundBody()).center();
+
+    } else if (isNameAlreadyUsed(caught)) {
+      new ErrorDialog(Gerrit.C.nameAlreadyUsedBody()).center();
+
+    } else if (caught instanceof ServerUnavailableException) {
+      new ErrorDialog(Common.C.errorServerUnavailable()).center();
+
+    } else {
+      GWT.log(getClass().getName() + " caught " + caught, caught);
+      new ErrorDialog(caught).center();
+    }
+  }
+
+  public static boolean isNotSignedIn(final Throwable caught) {
+    if (caught instanceof NotSignedInException) {
+      return true;
+    }
+    return caught instanceof RemoteJsonException
+        && caught.getMessage().equals(NotSignedInException.MESSAGE);
+  }
+
+  public static boolean isNoSuchEntity(final Throwable caught) {
+    if (caught instanceof NoSuchEntityException) {
+      return true;
+    }
+    return caught instanceof RemoteJsonException
+        && caught.getMessage().equals(NoSuchEntityException.MESSAGE);
+  }
+
+  public static boolean isNameAlreadyUsed(final Throwable caught) {
+    if (caught instanceof NameAlreadyUsedException) {
+      return true;
+    }
+    return caught instanceof RemoteJsonException
+        && caught.getMessage().equals(NameAlreadyUsedException.MESSAGE);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/NameAlreadyUsedException.java b/appjar/src/main/java/com/google/gerrit/client/rpc/NameAlreadyUsedException.java
new file mode 100644
index 0000000..b65282e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/NameAlreadyUsedException.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+/** Error indicating entity name is already taken by another entity. */
+public class NameAlreadyUsedException extends Exception {
+  public static final String MESSAGE = "Name Already Used";
+
+  public NameAlreadyUsedException() {
+    super(MESSAGE);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/NoSuchEntityException.java b/appjar/src/main/java/com/google/gerrit/client/rpc/NoSuchEntityException.java
new file mode 100644
index 0000000..a6bde94
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/NoSuchEntityException.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+/** Error indicating the entity requested doesn't exist. */
+public class NoSuchEntityException extends Exception {
+  public static final String MESSAGE = "Not Found";
+
+  public NoSuchEntityException() {
+    super(MESSAGE);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/NotSignedInException.java b/appjar/src/main/java/com/google/gerrit/client/rpc/NotSignedInException.java
new file mode 100644
index 0000000..9418b66
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/NotSignedInException.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+/** Error stating the user must be signed-in in order to perform this action. */
+public class NotSignedInException extends Exception {
+  public static final String MESSAGE = "Not Signed In";
+
+  public NotSignedInException() {
+    super(MESSAGE);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/RpcConstants.java b/appjar/src/main/java/com/google/gerrit/client/rpc/RpcConstants.java
new file mode 100644
index 0000000..afa4202
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/RpcConstants.java
@@ -0,0 +1,23 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+import com.google.gwt.i18n.client.Constants;
+
+public interface RpcConstants extends Constants {
+  String errorNotSignedIn();
+  String errorServerUnavailable();
+  String errorRemoteJsonException();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/RpcConstants.properties b/appjar/src/main/java/com/google/gerrit/client/rpc/RpcConstants.properties
new file mode 100644
index 0000000..6e596b5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/RpcConstants.properties
@@ -0,0 +1,3 @@
+errorNotSignedIn = Not Signed In
+errorServerUnavailable = Server Unavailable
+errorRemoteJsonException = Server Error
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/ScreenLoadCallback.java b/appjar/src/main/java/com/google/gerrit/client/rpc/ScreenLoadCallback.java
new file mode 100644
index 0000000..e7e07a5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/ScreenLoadCallback.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.NotFoundScreen;
+
+/** Callback switching {@link NoSuchEntityException} to {@link NotFoundScreen} */
+public abstract class ScreenLoadCallback<T> extends GerritCallback<T> {
+  @Override
+  public void onFailure(final Throwable caught) {
+    if (isNoSuchEntity(caught)) {
+      Gerrit.display(new NotFoundScreen());
+    } else {
+      super.onFailure(caught);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/rpc/SignInRequired.java b/appjar/src/main/java/com/google/gerrit/client/rpc/SignInRequired.java
new file mode 100644
index 0000000..a587dcd
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/rpc/SignInRequired.java
@@ -0,0 +1,32 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.rpc;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation indicating a service method requires a current user.
+ * <p>
+ * If there is no current user then {@link NotSignedInException} will be given
+ * to the callback's onFailure method. Methods tagged with this will never get
+ * null from {@link Common#getAccountId()}.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface SignInRequired {
+}
diff --git a/webapp/static/star-lite.gif b/appjar/src/main/java/com/google/gerrit/client/starFilled.gif
similarity index 100%
rename from webapp/static/star-lite.gif
rename to appjar/src/main/java/com/google/gerrit/client/starFilled.gif
Binary files differ
diff --git a/webapp/static/star-dark.gif b/appjar/src/main/java/com/google/gerrit/client/starOpen.gif
similarity index 100%
rename from webapp/static/star-dark.gif
rename to appjar/src/main/java/com/google/gerrit/client/starOpen.gif
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/AccountDashboardLink.java b/appjar/src/main/java/com/google/gerrit/client/ui/AccountDashboardLink.java
new file mode 100644
index 0000000..4c8d8c3
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/AccountDashboardLink.java
@@ -0,0 +1,49 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.changes.AccountDashboardScreen;
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.data.AccountInfoCache;
+import com.google.gerrit.client.reviewdb.Account;
+
+/** Link to any user's account dashboard. */
+public class AccountDashboardLink extends DirectScreenLink { 
+  /** Create a link after locating account details from an active cache. */
+  public static AccountDashboardLink link(final AccountInfoCache cache,
+      final Account.Id id) {
+    final AccountInfo ai = cache.get(id);
+    return ai != null ? new AccountDashboardLink(ai) : null;
+  }
+
+  private AccountInfo account;
+
+  public AccountDashboardLink(final AccountInfo ai) {
+    this(FormatUtil.name(ai), ai);
+  }
+
+  public AccountDashboardLink(final String text, final AccountInfo ai) {
+    super(text, Link.toAccountDashboard(ai));
+    addStyleName("gerrit-AccountName");
+    account = ai;
+  }
+
+  @Override
+  protected Screen createScreen() {
+    return new AccountDashboardScreen(account.getId());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/AccountGroupSuggestOracle.java b/appjar/src/main/java/com/google/gerrit/client/ui/AccountGroupSuggestOracle.java
new file mode 100644
index 0000000..8797702
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/AccountGroupSuggestOracle.java
@@ -0,0 +1,62 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.RpcStatus;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gwt.user.client.ui.SuggestOracle;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Suggestion Oracle for AccountGroup entities. */
+public class AccountGroupSuggestOracle extends SuggestOracle {
+  @Override
+  public void requestSuggestions(final Request req, final Callback callback) {
+    RpcStatus.hide(new Runnable() {
+      public void run() {
+        SuggestUtil.SVC.suggestAccountGroup(req.getQuery(), req.getLimit(),
+            new GerritCallback<List<AccountGroup>>() {
+              public void onSuccess(final List<AccountGroup> result) {
+                final ArrayList<AccountGroupSuggestion> r =
+                    new ArrayList<AccountGroupSuggestion>(result.size());
+                for (final AccountGroup p : result) {
+                  r.add(new AccountGroupSuggestion(p));
+                }
+                callback.onSuggestionsReady(req, new Response(r));
+              }
+            });
+      }
+    });
+  }
+
+  private static class AccountGroupSuggestion implements
+      SuggestOracle.Suggestion {
+    private final AccountGroup info;
+
+    AccountGroupSuggestion(final AccountGroup k) {
+      info = k;
+    }
+
+    public String getDisplayString() {
+      return info.getName();
+    }
+
+    public String getReplacementString() {
+      return info.getName();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/AccountScreen.java b/appjar/src/main/java/com/google/gerrit/client/ui/AccountScreen.java
new file mode 100644
index 0000000..d73eaa5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/AccountScreen.java
@@ -0,0 +1,27 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+/** A screen that requires the user to be signed-into their account. */
+public class AccountScreen extends Screen {
+  public AccountScreen(final String heading) {
+    super(heading);
+    setRequiresSignIn(true);
+  }
+
+  public AccountScreen() {
+    this("");
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/AccountSuggestOracle.java b/appjar/src/main/java/com/google/gerrit/client/ui/AccountSuggestOracle.java
new file mode 100644
index 0000000..0e97ced
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/AccountSuggestOracle.java
@@ -0,0 +1,62 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.FormatUtil;
+import com.google.gerrit.client.RpcStatus;
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gwt.user.client.ui.SuggestOracle;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Suggestion Oracle for Account entities. */
+public class AccountSuggestOracle extends SuggestOracle {
+  @Override
+  public void requestSuggestions(final Request req, final Callback callback) {
+    RpcStatus.hide(new Runnable() {
+      public void run() {
+        SuggestUtil.SVC.suggestAccount(req.getQuery(), req.getLimit(),
+            new GerritCallback<List<AccountInfo>>() {
+              public void onSuccess(final List<AccountInfo> result) {
+                final ArrayList<AccountSuggestion> r =
+                    new ArrayList<AccountSuggestion>(result.size());
+                for (final AccountInfo p : result) {
+                  r.add(new AccountSuggestion(p));
+                }
+                callback.onSuggestionsReady(req, new Response(r));
+              }
+            });
+      }
+    });
+  }
+
+  private static class AccountSuggestion implements SuggestOracle.Suggestion {
+    private final AccountInfo info;
+
+    AccountSuggestion(final AccountInfo k) {
+      info = k;
+    }
+
+    public String getDisplayString() {
+      return FormatUtil.nameEmail(info);
+    }
+
+    public String getReplacementString() {
+      return FormatUtil.nameEmail(info);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/AutoCenterDialogBox.java b/appjar/src/main/java/com/google/gerrit/client/ui/AutoCenterDialogBox.java
new file mode 100644
index 0000000..e10cf72
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/AutoCenterDialogBox.java
@@ -0,0 +1,63 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.WindowResizeListener;
+import com.google.gwt.user.client.ui.DialogBox;
+
+/** A DialogBox that automatically re-centers itself if the window changes */
+public class AutoCenterDialogBox extends DialogBox {
+  private WindowResizeListener recenter;
+
+  public AutoCenterDialogBox() {
+  }
+
+  public AutoCenterDialogBox(final boolean autoHide) {
+    super(autoHide);
+  }
+
+  public AutoCenterDialogBox(final boolean autoHide, final boolean modal) {
+    super(autoHide, modal);
+  }
+
+  @Override
+  public void show() {
+    if (recenter == null) {
+      recenter = new WindowResizeListener() {
+        public void onWindowResized(final int width, final int height) {
+          onResize(width, height);
+        }
+      };
+      Window.addWindowResizeListener(recenter);
+    }
+    super.show();
+  }
+
+  @Override
+  protected void onUnload() {
+    if (recenter != null) {
+      Window.removeWindowResizeListener(recenter);
+      recenter = null;
+    }
+    super.onUnload();
+  }
+
+  protected void onResize(final int width, final int height) {
+    if (isAttached()) {
+      center();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/ChangeLink.java b/appjar/src/main/java/com/google/gerrit/client/ui/ChangeLink.java
new file mode 100644
index 0000000..94e9deb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/ChangeLink.java
@@ -0,0 +1,44 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.changes.ChangeScreen;
+import com.google.gerrit.client.data.ChangeInfo;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.DOM;
+
+public class ChangeLink extends DirectScreenLink {
+  protected Change.Id id;
+  private ChangeInfo info;
+
+  public ChangeLink(final String text, final Change.Id c) {
+    super(text, Link.toChange(c));
+    final String plink = GWT.getModuleBaseURL() + c.get();
+    DOM.setElementProperty(DOM.getFirstChild(getElement()), "href", plink);
+    id = c;
+  }
+
+  public ChangeLink(final String text, final ChangeInfo c) {
+    this(text, c.getId());
+    info = c;
+  }
+
+  @Override
+  protected Screen createScreen() {
+    return info != null ? new ChangeScreen(info) : new ChangeScreen(id);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/ComplexDisclosurePanel.java b/appjar/src/main/java/com/google/gerrit/client/ui/ComplexDisclosurePanel.java
new file mode 100644
index 0000000..838bcce
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/ComplexDisclosurePanel.java
@@ -0,0 +1,108 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.ui.ComplexPanel;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.DisclosureHandler;
+import com.google.gwt.user.client.ui.DisclosurePanel;
+import com.google.gwt.user.client.ui.FiresDisclosureEvents;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class ComplexDisclosurePanel extends Composite implements
+    FiresDisclosureEvents {
+  private final DisclosurePanel main;
+  private final Panel header;
+
+  public ComplexDisclosurePanel(final String text, final boolean isOpen) {
+    // Ick. GWT's DisclosurePanel won't let us subclass it, or do any
+    // other modification of its header. We're stuck with injecting
+    // into the DOM directly.
+    //
+    main = new DisclosurePanel(text, isOpen);
+    final Element headerParent;
+    {
+      final Element table = main.getElement();
+      final Element tbody = DOM.getFirstChild(table);
+      final Element tr1 = DOM.getChild(tbody, 0);
+      final Element tr2 = DOM.getChild(tbody, 1);
+
+      DOM.setElementProperty(DOM.getChild(tr1, 0), "width", "20px");
+      DOM.setElementPropertyInt(DOM.getChild(tr2, 0), "colSpan", 2);
+      headerParent = tr1;
+    }
+
+    header = new ComplexPanel() {
+      {
+        setElement(DOM.createTD());
+        DOM.setInnerHTML(getElement(), "&nbsp;");
+        addStyleName("complexHeader");
+      }
+
+      @Override
+      public void add(Widget w) {
+        add(w, getElement());
+      }
+    };
+
+    initWidget(new ComplexPanel() {
+      {
+        final DisclosurePanel main = ComplexDisclosurePanel.this.main;
+        setElement(main.getElement());
+        getChildren().add(main);
+        adopt(main);
+
+        add(ComplexDisclosurePanel.this.header, headerParent);
+      }
+    });
+  }
+
+  public Panel getHeader() {
+    return header;
+  }
+
+  public void setContent(final Widget w) {
+    main.setContent(w);
+  }
+
+  public Widget getContent() {
+    return main.getContent();
+  }
+
+  public void addEventHandler(final DisclosureHandler handler) {
+    main.addEventHandler(handler);
+  }
+
+  public void removeEventHandler(final DisclosureHandler handler) {
+    main.removeEventHandler(handler);
+  }
+
+  /** @return true if the panel's content is visible. */
+  public boolean isOpen() {
+    return main.isOpen();
+  }
+
+  /**
+   * Changes the visible state of this panel's content.
+   * 
+   * @param isOpen <code>true</code> to open, <code>false</code> to close
+   */
+  public void setOpen(final boolean isOpen) {
+    main.setOpen(isOpen);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/DirectScreenLink.java b/appjar/src/main/java/com/google/gerrit/client/ui/DirectScreenLink.java
new file mode 100644
index 0000000..2017650
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/DirectScreenLink.java
@@ -0,0 +1,56 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.ui.Hyperlink;
+
+/**
+ * Link to a Screen which can carry richer payload.
+ * <p>
+ * A standard Hyperlink widget which updates the current history token when
+ * activated, but subclasses are able to create the Screen instance themselves,
+ * passing additional data into the Screen's constructor. This may permit the
+ * screen to show some limited information early, before RPCs required to fully
+ * populate it are even started.
+ */
+public abstract class DirectScreenLink extends Hyperlink {
+  /**
+   * Creates a link with its text and target history token specified.
+   * 
+   * @param text the hyperlink's text
+   * @param historyToken the history token to which it will link
+   */
+  protected DirectScreenLink(final String text, final String historyToken) {
+    super(text, historyToken);
+  }
+
+  @Override
+  public void onBrowserEvent(final Event event) {
+    if (DOM.eventGetType(event) == Event.ONCLICK) {
+      onClick(event);
+    }
+  }
+
+  protected void onClick(final Event event) {
+    Gerrit.display(getTargetHistoryToken(), createScreen());
+    DOM.eventPreventDefault(event);
+  }
+
+  /** Create the screen this link wants to display. */
+  protected abstract Screen createScreen();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/DomUtil.java b/appjar/src/main/java/com/google/gerrit/client/ui/DomUtil.java
new file mode 100644
index 0000000..d428be6
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/DomUtil.java
@@ -0,0 +1,82 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.core.client.GWT;
+
+/** Utilities for dealing with the DOM. */
+public abstract class DomUtil {
+  private static final Impl INSTANCE;
+
+  static {
+    if (GWT.isClient())
+      INSTANCE = new ClientImpl();
+    else
+      INSTANCE = new JavaImpl();
+  }
+
+  /** Escape XML/HTML special characters in the input string. */
+  public static String escape(final String in) {
+    return INSTANCE.escape(in);
+  }
+
+  /** Convert bare URLs into &lt;a href&gt; tags. */
+  public static String linkify(final String in) {
+    return INSTANCE.linkify(in);
+  }
+
+  private DomUtil() {
+  }
+
+  private static abstract class Impl {
+    abstract String escape(String in);
+
+    String linkify(String in) {
+      return in.replaceAll("(https?://[^ \n\r\t]*)", "<a href=\"$1\">$1</a>");
+    }
+  }
+
+  private static class ClientImpl extends Impl {
+    @Override
+    native String escape(String src)/*-{ return src.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;'); }-*/;
+  }
+
+  private static class JavaImpl extends Impl {
+    @Override
+    String escape(final String in) {
+      final StringBuilder r = new StringBuilder(in.length());
+      for (int i = 0; i < in.length(); i++) {
+        final char c = in.charAt(i);
+        switch (c) {
+          case '&':
+            r.append("&amp;");
+            break;
+          case '>':
+            r.append("&gt;");
+            break;
+          case '<':
+            r.append("&lt;");
+            break;
+          case '"':
+            r.append("&quot;");
+            break;
+          default:
+            r.append(c);
+        }
+      }
+      return r.toString();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/ExpandAllCommand.java b/appjar/src/main/java/com/google/gerrit/client/ui/ExpandAllCommand.java
new file mode 100644
index 0000000..6fd7329
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/ExpandAllCommand.java
@@ -0,0 +1,42 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.Widget;
+
+/** Expands all {@link ComplexDisclosurePanel} in a parent panel. */
+public class ExpandAllCommand implements Command {
+  private final Panel panel;
+  protected final boolean open;
+
+  public ExpandAllCommand(final Panel p, final boolean isOpen) {
+    panel = p;
+    open = isOpen;
+  }
+
+  public void execute() {
+    for (final Widget w : panel) {
+      if (w instanceof ComplexDisclosurePanel) {
+        expand((ComplexDisclosurePanel) w);
+      }
+    }
+  }
+
+  protected void expand(final ComplexDisclosurePanel w) {
+    w.setOpen(open);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/FancyFlexTable.java b/appjar/src/main/java/com/google/gerrit/client/ui/FancyFlexTable.java
new file mode 100644
index 0000000..f3802a9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/FancyFlexTable.java
@@ -0,0 +1,287 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.FocusListener;
+import com.google.gwt.user.client.ui.FocusPanel;
+import com.google.gwt.user.client.ui.HasFocus;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.KeyboardListener;
+import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
+import com.google.gwt.user.client.ui.UIObject;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map.Entry;
+
+public abstract class FancyFlexTable<RowItem> extends Composite implements
+    HasFocus {
+  protected static final String MY_STYLE = "gerrit-ChangeTable";
+  protected static final String S_ICON_HEADER = "IconHeader";
+  protected static final String S_DATA_HEADER = "DataHeader";
+  protected static final String S_ICON_CELL = "IconCell";
+  protected static final String S_DATA_CELL = "DataCell";
+  protected static final String S_LEFT_MOST_CELL = "LeftMostCell";
+  protected static final String S_ACTIVE_ROW = "ActiveRow";
+
+  protected static final int C_ARROW = 0;
+
+  private static final LinkedHashMap<String, Object> savedPositions =
+      new LinkedHashMap<String, Object>(10, 0.75f, true) {
+        @Override
+        protected boolean removeEldestEntry(Entry<String, Object> eldest) {
+          return size() >= 20;
+        }
+      };
+
+  protected final MyFlexTable table;
+  private final FocusPanel focusy;
+  private final Image pointer;
+  private String saveId;
+  private int currentRow = -1;
+
+  protected FancyFlexTable() {
+    pointer = Gerrit.ICONS.arrowRight().createImage();
+    table = createFlexTable();
+    table.addStyleName(MY_STYLE);
+    focusy = new FocusPanel(table);
+    focusy.addKeyboardListener(new KeyboardListenerAdapter() {
+      @Override
+      public void onKeyPress(Widget sender, char keyCode, int modifiers) {
+        if (FancyFlexTable.this.onKeyPress(keyCode, modifiers)) {
+          final Event event = DOM.eventGetCurrentEvent();
+          DOM.eventCancelBubble(event, true);
+          DOM.eventPreventDefault(event);
+        }
+      }
+    });
+    focusy.addFocusListener(new FocusListener() {
+      public void onFocus(final Widget sender) {
+        if (currentRow < 0) {
+          onDown();
+        }
+      }
+
+      public void onLostFocus(final Widget sender) {
+      }
+    });
+    initWidget(focusy);
+
+    table.setText(0, C_ARROW, "");
+    table.getCellFormatter().addStyleName(0, C_ARROW, S_ICON_HEADER);
+  }
+
+  protected MyFlexTable createFlexTable() {
+    return new MyFlexTable();
+  }
+
+  protected RowItem getRowItem(final int row) {
+    return FancyFlexTable.<RowItem> getRowItem(table.getCellFormatter()
+        .getElement(row, 0));
+  }
+
+  protected void setRowItem(final int row, final RowItem item) {
+    setRowItem(table.getCellFormatter().getElement(row, 0), item);
+  }
+
+  protected void resetHtml(final String body) {
+    for (final Iterator<Widget> i = table.iterator(); i.hasNext();) {
+      i.next();
+      i.remove();
+    }
+    DOM.setInnerHTML(table.getBodyElement(), body);
+  }
+
+  protected boolean onKeyPress(final char keyCode, final int modifiers) {
+    if (modifiers == 0) {
+      switch (keyCode) {
+        case 'k':
+        case KeyboardListener.KEY_UP:
+          onUp();
+          return true;
+
+        case 'j':
+        case KeyboardListener.KEY_DOWN:
+          onDown();
+          return true;
+
+        case 'o':
+        case KeyboardListener.KEY_ENTER:
+          onOpen();
+          return true;
+      }
+    }
+    return false;
+  }
+
+  private void onUp() {
+    for (int row = currentRow - 1; row >= 0; row--) {
+      if (getRowItem(row) != null) {
+        movePointerTo(row);
+        break;
+      }
+    }
+  }
+
+  private void onDown() {
+    final int max = table.getRowCount();
+    for (int row = currentRow + 1; row < max; row++) {
+      if (getRowItem(row) != null) {
+        movePointerTo(row);
+        break;
+      }
+    }
+  }
+
+  private void onOpen() {
+    if (0 <= currentRow && currentRow < table.getRowCount()) {
+      final RowItem item = getRowItem(currentRow);
+      if (item != null) {
+        onOpenItem(item);
+      }
+    }
+  }
+
+  protected void onOpenItem(final RowItem item) {
+  }
+
+  protected abstract Object getRowItemKey(RowItem item);
+
+  protected int getCurrentRow() {
+    return currentRow;
+  }
+
+  protected void movePointerTo(final int newRow) {
+    final CellFormatter fmt = table.getCellFormatter();
+    if (currentRow >= 0) {
+      final Element tr = DOM.getParent(fmt.getElement(currentRow, C_ARROW));
+      UIObject.setStyleName(tr, S_ACTIVE_ROW, false);
+    }
+    if (newRow >= 0) {
+      table.setWidget(newRow, C_ARROW, pointer);
+      final Element tr = DOM.getParent(fmt.getElement(newRow, C_ARROW));
+      UIObject.setStyleName(tr, S_ACTIVE_ROW, true);
+      tr.scrollIntoView();
+    } else if (currentRow >= 0) {
+      table.setWidget(currentRow, C_ARROW, null);
+    }
+    currentRow = newRow;
+  }
+
+  protected void movePointerTo(final Object oldId) {
+    if (oldId != null) {
+      final int max = table.getRowCount();
+      for (int row = 0; row < max; row++) {
+        final RowItem c = getRowItem(row);
+        if (c != null && oldId.equals(getRowItemKey(c))) {
+          movePointerTo(row);
+          break;
+        }
+      }
+    }
+  }
+
+  protected void applyDataRowStyle(final int newRow) {
+    table.getCellFormatter().addStyleName(newRow, C_ARROW, S_ICON_CELL);
+    table.getCellFormatter().addStyleName(newRow, C_ARROW, S_LEFT_MOST_CELL);
+  }
+
+  public void finishDisplay(final boolean requestFocus) {
+    if (saveId != null) {
+      final Object oldId = savedPositions.get(saveId);
+      movePointerTo(oldId);
+    }
+
+    if (currentRow < 0) {
+      onDown();
+    }
+
+    if (requestFocus && currentRow >= 0) {
+      DeferredCommand.addCommand(new Command() {
+        public void execute() {
+          setFocus(true);
+        }
+      });
+    }
+  }
+
+  public void setSavePointerId(final String id) {
+    saveId = id;
+  }
+
+  @Override
+  public void onUnload() {
+    if (saveId != null && currentRow >= 0) {
+      final RowItem c = getRowItem(currentRow);
+      if (c != null) {
+        savedPositions.put(saveId, getRowItemKey(c));
+      }
+    }
+    super.onUnload();
+  }
+
+  public int getTabIndex() {
+    return focusy.getTabIndex();
+  }
+
+  public void setAccessKey(char key) {
+    focusy.setAccessKey(key);
+  }
+
+  public void setFocus(boolean focused) {
+    focusy.setFocus(focused);
+  }
+
+  public void setTabIndex(int index) {
+    focusy.setTabIndex(index);
+  }
+
+  public void addFocusListener(FocusListener listener) {
+    focusy.addFocusListener(listener);
+  }
+
+  public void addKeyboardListener(KeyboardListener listener) {
+    focusy.addKeyboardListener(listener);
+  }
+
+  public void removeFocusListener(FocusListener listener) {
+    focusy.removeFocusListener(listener);
+  }
+
+  public void removeKeyboardListener(KeyboardListener listener) {
+    focusy.removeKeyboardListener(listener);
+  }
+
+  protected static class MyFlexTable extends FlexTable {
+    @Override
+    public Element getBodyElement() {
+      return super.getBodyElement();
+    }
+  }
+
+  private static final native <ItemType> void setRowItem(Element td, ItemType c)/*-{ td["__gerritRowItem"] = c; }-*/;
+
+  private static final native <ItemType> ItemType getRowItem(Element td)/*-{ return td["__gerritRowItem"]; }-*/;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/LazyTabChild.java b/appjar/src/main/java/com/google/gerrit/client/ui/LazyTabChild.java
new file mode 100644
index 0000000..d5ccfca
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/LazyTabChild.java
@@ -0,0 +1,32 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.Widget;
+
+/** Panel for use within a TabPanel to create the widget only on selection. */
+public abstract class LazyTabChild<T extends Widget> extends SimplePanel {
+  /** @return the widget to display in this panel. */
+  protected abstract T create();
+
+  @Override
+  public void setVisible(final boolean visible) {
+    if (visible && getWidget() == null) {
+      setWidget(create());
+    }
+    super.setVisible(visible);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/LinkMenuBar.java b/appjar/src/main/java/com/google/gerrit/client/ui/LinkMenuBar.java
new file mode 100644
index 0000000..d14d515
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/LinkMenuBar.java
@@ -0,0 +1,57 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.user.client.ui.MenuBar;
+import com.google.gwt.user.client.ui.MenuItem;
+
+/** A GWT MenuBar, rendering its items as through they were normal links. */
+public class LinkMenuBar extends MenuBar {
+  public LinkMenuBar() {
+    setStyleName("gerrit-LinkMenuBar");
+  }
+
+  @Override
+  public MenuItem addItem(final MenuItem item) {
+    item.addStyleDependentName("NormalItem");
+    return super.addItem(item);
+  }
+
+  /**
+   * Add a cell to fill the screen width.
+   * <p>
+   * The glue has 100% width, forcing the browser to align out the next element
+   * as far right as possible. If there is exactly 1 glue in the menu bar, the
+   * bar is split into a left and right section. If there are 2 glues, the bar
+   * will be split into thirds.
+   */
+  public void addGlue() {
+    addSeparator().setStyleName("gerrit-FillMenuCenter");
+  }
+
+  /**
+   * Mark this item as the last in its group, so it has no border.
+   * <p>
+   * Usually this is used just before {@link #addGlue()} and after the last item
+   * has been added.
+   */
+  public void lastInGroup() {
+    if (!getItems().isEmpty()) {
+      final MenuItem i = getItems().get(getItems().size() - 1);
+      i.removeStyleDependentName("NormalItem");
+      i.addStyleDependentName("LastItem");
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/LinkMenuItem.java b/appjar/src/main/java/com/google/gerrit/client/ui/LinkMenuItem.java
new file mode 100644
index 0000000..c3910ba
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/LinkMenuItem.java
@@ -0,0 +1,48 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.ui.MenuItem;
+
+/**
+ * A GWT {@link MenuItem} that uses a normal HTML link widget for its UI.
+ * <p>
+ * Using this widget instead of MenuItem permits the menu item to have the
+ * standard right-click "Open in new window" and "Open in new tab" feature found
+ * in popular browsers.
+ */
+public class LinkMenuItem extends MenuItem {
+  /**
+   * Creates a hyperlink with its text and target history token specified.
+   * 
+   * @param text the hyperlink's text
+   * @param targetHistoryToken the history token to which it will link
+   */
+  public LinkMenuItem(final String text, final String targetHistoryToken) {
+    super("", new Command() {
+      public void execute() {
+        History.newItem(targetHistoryToken);
+      }
+    });
+    final Element a = DOM.createAnchor();
+    DOM.setElementProperty(a, "href", "#" + targetHistoryToken);
+    DOM.setInnerText(a, text);
+    DOM.appendChild(getElement(), a);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/PatchLink.java b/appjar/src/main/java/com/google/gerrit/client/ui/PatchLink.java
new file mode 100644
index 0000000..34bc51c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/PatchLink.java
@@ -0,0 +1,51 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.patches.PatchSideBySideScreen;
+import com.google.gerrit.client.patches.PatchUnifiedScreen;
+import com.google.gerrit.client.reviewdb.Patch;
+
+public abstract class PatchLink extends DirectScreenLink {
+  protected Patch.Key key;
+
+  public PatchLink(final String text, final Patch.Key p, final String token) {
+    super(text, token);
+    key = p;
+  }
+
+  public static class SideBySide extends PatchLink {
+    public SideBySide(final String text, final Patch.Key p) {
+      super(text, p, Link.toPatchSideBySide(p));
+    }
+
+    @Override
+    protected Screen createScreen() {
+      return new PatchSideBySideScreen(key);
+    }
+  }
+
+  public static class Unified extends PatchLink {
+    public Unified(final String text, final Patch.Key p) {
+      super(text, p, Link.toPatchUnified(p));
+    }
+
+    @Override
+    protected Screen createScreen() {
+      return new PatchUnifiedScreen(key);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/ProjectNameSuggestOracle.java b/appjar/src/main/java/com/google/gerrit/client/ui/ProjectNameSuggestOracle.java
new file mode 100644
index 0000000..7425740
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/ProjectNameSuggestOracle.java
@@ -0,0 +1,62 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.RpcStatus;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gwt.user.client.ui.SuggestOracle;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Suggestion Oracle for Project.NameKey entities. */
+public class ProjectNameSuggestOracle extends SuggestOracle {
+  @Override
+  public void requestSuggestions(final Request req, final Callback callback) {
+    RpcStatus.hide(new Runnable() {
+      public void run() {
+        SuggestUtil.SVC.suggestProjectNameKey(req.getQuery(), req.getLimit(),
+            new GerritCallback<List<Project.NameKey>>() {
+              public void onSuccess(final List<Project.NameKey> result) {
+                final ArrayList<ProjectNameSuggestion> r =
+                    new ArrayList<ProjectNameSuggestion>(result.size());
+                for (final Project.NameKey p : result) {
+                  r.add(new ProjectNameSuggestion(p));
+                }
+                callback.onSuggestionsReady(req, new Response(r));
+              }
+            });
+      }
+    });
+  }
+
+  private static class ProjectNameSuggestion implements
+      SuggestOracle.Suggestion {
+    private final Project.NameKey key;
+
+    ProjectNameSuggestion(final Project.NameKey k) {
+      key = k;
+    }
+
+    public String getDisplayString() {
+      return key.get();
+    }
+
+    public String getReplacementString() {
+      return key.get();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/RefreshListener.java b/appjar/src/main/java/com/google/gerrit/client/ui/RefreshListener.java
new file mode 100644
index 0000000..f426dfb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/RefreshListener.java
@@ -0,0 +1,19 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+public interface RefreshListener {
+  void onSuggestRefresh();
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/Screen.java b/appjar/src/main/java/com/google/gerrit/client/ui/Screen.java
new file mode 100644
index 0000000..a3ede64
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/Screen.java
@@ -0,0 +1,90 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.Link;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.ui.FlowPanel;
+
+public class Screen extends FlowPanel {
+  private boolean requiresSignIn;
+  private Element headerElem;
+
+  protected Screen() {
+    this("");
+  }
+
+  protected Screen(final String headingText) {
+    setStyleName("gerrit-Screen");
+
+    headerElem = DOM.createElement("h1");
+    DOM.appendChild(getElement(), headerElem);
+
+    setTitleText(headingText);
+  }
+
+  public void setTitleText(final String text) {
+    DOM.setInnerText(headerElem, text);
+  }
+
+  /** Set whether or not {@link Gerrit#isSignedIn()} must be true. */
+  public void setRequiresSignIn(final boolean b) {
+    requiresSignIn = b;
+  }
+
+  /** Does {@link Gerrit#isSignedIn()} have to be true to be on this screen? */
+  public boolean isRequiresSignIn() {
+    return requiresSignIn;
+  }
+
+  /** Invoked if this screen is the current screen and the user signs out. */
+  public void onSignOut() {
+    if (isRequiresSignIn()) {
+      History.newItem(Link.ALL);
+    }
+  }
+
+  /** Invoked if this screen is the current screen and the user signs in. */
+  public void onSignIn() {
+  }
+
+  /** Get the token to cache this screen's widget; null if it shouldn't cache. */
+  public Object getScreenCacheToken() {
+    return null;
+  }
+
+  /**
+   * Reconfigure this screen after being recycled.
+   * <p>
+   * This method is invoked on a cached screen instance just before it is
+   * recycled into the UI. The returned screen instance is what will actually be
+   * shown to the user.
+   * 
+   * @param newScreen the screen object created by the Link class (or some other
+   *        form of screen constructor) and that was just passed into
+   *        {@link Gerrit#display(Screen)}. Its {@link #getScreenCacheToken()}
+   *        is equal to <code>this.getScreenCacheToken()</code> but it may have
+   *        other parameter information worth copying.
+   * @return typically <code>this</code> to reuse the cached screen;
+   *         <code>newScreen</code> to discard the cached screen instance and
+   *         use the new one.
+   */
+  public Screen recycleThis(final Screen newScreen) {
+    return this;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/SuggestService.java b/appjar/src/main/java/com/google/gerrit/client/ui/SuggestService.java
new file mode 100644
index 0000000..e31e757
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/SuggestService.java
@@ -0,0 +1,38 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.AllowCrossSiteRequest;
+import com.google.gwtjsonrpc.client.RemoteJsonService;
+
+import java.util.List;
+
+public interface SuggestService extends RemoteJsonService {
+  @AllowCrossSiteRequest
+  void suggestProjectNameKey(String query, int limit,
+      AsyncCallback<List<Project.NameKey>> callback);
+
+  @AllowCrossSiteRequest
+  void suggestAccount(String query, int limit,
+      AsyncCallback<List<AccountInfo>> callback);
+
+  @AllowCrossSiteRequest
+  void suggestAccountGroup(String query, int limit,
+      AsyncCallback<List<AccountGroup>> callback);
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/SuggestServiceImpl.java b/appjar/src/main/java/com/google/gerrit/client/ui/SuggestServiceImpl.java
new file mode 100644
index 0000000..04677fd
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/SuggestServiceImpl.java
@@ -0,0 +1,104 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gerrit.client.data.AccountCache;
+import com.google.gerrit.client.data.AccountInfo;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+public class SuggestServiceImpl extends BaseServiceImplementation implements
+    SuggestService {
+  public void suggestProjectNameKey(final String query, final int limit,
+      final AsyncCallback<List<Project.NameKey>> callback) {
+    run(callback, new Action<List<Project.NameKey>>() {
+      public List<Project.NameKey> run(final ReviewDb db) throws OrmException {
+        final String a = query;
+        final String b = a + "\uffff";
+        final int max = 10;
+        final int n = limit <= 0 ? max : Math.min(limit, max);
+
+        final List<Project.NameKey> r = new ArrayList<Project.NameKey>();
+        for (final Project p : db.projects().suggestByName(a, b, n)) {
+          if (canRead(p.getNameKey())) {
+            r.add(p.getNameKey());
+          }
+        }
+        return r;
+      }
+    });
+  }
+
+  public void suggestAccount(final String query, final int limit,
+      final AsyncCallback<List<AccountInfo>> callback) {
+    run(callback, new Action<List<AccountInfo>>() {
+      public List<AccountInfo> run(final ReviewDb db) throws OrmException {
+        final String a = query;
+        final String b = a + "\uffff";
+        final int max = 10;
+        final int n = limit <= 0 ? max : Math.min(limit, max);
+
+        final LinkedHashMap<Account.Id, AccountInfo> r =
+            new LinkedHashMap<Account.Id, AccountInfo>();
+        for (final Account p : db.accounts().suggestByFullName(a, b, n)) {
+          r.put(p.getId(), new AccountInfo(p));
+        }
+        if (r.size() < n) {
+          for (final Account p : db.accounts().suggestByPreferredEmail(a, b,
+              n - r.size())) {
+            r.put(p.getId(), new AccountInfo(p));
+          }
+        }
+        if (r.size() < n) {
+          final AccountCache ac = Common.getAccountCache();
+          for (final AccountExternalId e : db.accountExternalIds()
+              .suggestByEmailAddress(a, b, n - r.size())) {
+            if (!r.containsKey(e.getAccountId())) {
+              final Account p = ac.get(e.getAccountId(), db);
+              if (p != null) {
+                r.put(e.getAccountId(), new AccountInfo(p));
+              }
+            }
+          }
+        }
+        return new ArrayList<AccountInfo>(r.values());
+      }
+    });
+  }
+
+  public void suggestAccountGroup(final String query, final int limit,
+      final AsyncCallback<List<AccountGroup>> callback) {
+    run(callback, new Action<List<AccountGroup>>() {
+      public List<AccountGroup> run(final ReviewDb db) throws OrmException {
+        final String a = query;
+        final String b = a + "\uffff";
+        final int max = 10;
+        final int n = limit <= 0 ? max : Math.min(limit, max);
+        return db.accountGroups().suggestByName(a, b, n).toList();
+      }
+    });
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/SuggestUtil.java b/appjar/src/main/java/com/google/gerrit/client/ui/SuggestUtil.java
new file mode 100644
index 0000000..d904e96
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/SuggestUtil.java
@@ -0,0 +1,30 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwtjsonrpc.client.JsonUtil;
+
+public class SuggestUtil {
+  public static final SuggestService SVC;
+
+  static {
+    SVC = GWT.create(SuggestService.class);
+    JsonUtil.bind(SVC, "rpc/SuggestService");
+  }
+
+  private SuggestUtil() {
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/ui/TextSaveButtonListener.java b/appjar/src/main/java/com/google/gerrit/client/ui/TextSaveButtonListener.java
new file mode 100644
index 0000000..cf63488
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/ui/TextSaveButtonListener.java
@@ -0,0 +1,63 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.ui;
+
+import com.google.gwt.user.client.ui.FocusWidget;
+import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
+import com.google.gwt.user.client.ui.TextBoxBase;
+import com.google.gwt.user.client.ui.Widget;
+
+/** Enables an action (e.g. a Button) if the text box is modified. */
+public class TextSaveButtonListener extends KeyboardListenerAdapter {
+  private final FocusWidget descAction;
+
+  public TextSaveButtonListener(final FocusWidget action) {
+    descAction = action;
+  }
+
+  public TextSaveButtonListener(final TextBoxBase text, final FocusWidget action) {
+    this(action);
+    text.addKeyboardListener(this);
+  }
+
+  @Override
+  public void onKeyPress(final Widget sender, final char key, final int mod) {
+    if ((mod & (MODIFIER_CTRL | MODIFIER_ALT | MODIFIER_META)) == 0) {
+      switch (key) {
+        case KEY_UP:
+        case KEY_DOWN:
+        case KEY_LEFT:
+        case KEY_RIGHT:
+        case KEY_HOME:
+        case KEY_END:
+        case KEY_PAGEUP:
+        case KEY_PAGEDOWN:
+        case KEY_ALT:
+        case KEY_CTRL:
+        case KEY_SHIFT:
+          break;
+        default:
+          on(sender);
+          break;
+      }
+    } else if ((mod & MODIFIER_CTRL) != 0 && (key == 'v' || key == 'x')) {
+      on(sender);
+    }
+  }
+
+  private void on(final Widget sender) {
+    descAction.setEnabled(((TextBoxBase) sender).isEnabled());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/workflow/CategoryFunction.java b/appjar/src/main/java/com/google/gerrit/client/workflow/CategoryFunction.java
new file mode 100644
index 0000000..ea167b7
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/workflow/CategoryFunction.java
@@ -0,0 +1,88 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.workflow;
+
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/** Function to control {@link ChangeApproval}s in an {@link ApprovalCategory}. */
+public abstract class CategoryFunction {
+  private static Map<String, CategoryFunction> all =
+      new HashMap<String, CategoryFunction>();
+  static {
+    all.put(SubmitFunction.NAME, new SubmitFunction());
+    all.put(MaxWithBlock.NAME, new MaxWithBlock());
+    all.put(NoOpFunction.NAME, new NoOpFunction());
+  }
+
+  /**
+   * Locate a function by name.
+   * 
+   * @param functionName the function's unique name.
+   * @return the function implementation; null if the function is not known to
+   *         Gerrit and thus cannot be executed.
+   */
+  public static CategoryFunction forName(final String functionName) {
+    return all.get(functionName);
+  }
+
+  /**
+   * Normalize ChangeApprovals and set the valid flag for this category.
+   * <p>
+   * Implementors should invoke:
+   * 
+   * <pre>
+   * state.valid(at, true);
+   * </pre>
+   * <p>
+   * If the set of approvals from <code>state.getApprovals(at)</code> covers the
+   * requirements for the function, indicating the category has been completed.
+   * <p>
+   * An example implementation which requires at least one positive and no
+   * negatives might be:
+   * 
+   * <pre>
+   * boolean neg = false, pos = false;
+   * for (final ChangeApproval ca : state.getApprovals(at)) {
+   *   state.normalize(ca);
+   *   neg |= ca.getValue() &lt; 0;
+   *   pos |= ca.getValue() &gt; 0;
+   * }
+   * state.valid(at, !neg &amp;&amp; pos);
+   * </pre>
+   * 
+   * @param at the cached category description to process.
+   * @param state state to read approvals and project rights from, and to update
+   *        the valid status into.
+   */
+  public abstract void run(ApprovalType at, FunctionState state);
+
+  public boolean isValid(final Account.Id accountId, final ApprovalType at,
+      final FunctionState state) {
+    for (final ProjectRight pr : state.getAllRights(at)) {
+      if (state.isMember(accountId, pr.getAccountGroupId())
+          && (pr.getMinValue() < 0 || pr.getMaxValue() > 0)) {
+        return true;
+      }
+    }
+    return false;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/workflow/FunctionState.java b/appjar/src/main/java/com/google/gerrit/client/workflow/FunctionState.java
new file mode 100644
index 0000000..fa73399
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/workflow/FunctionState.java
@@ -0,0 +1,250 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.workflow;
+
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ApprovalCategory.Id;
+import com.google.gerrit.client.rpc.Common;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/** State passed through to a {@link CategoryFunction}. */
+public class FunctionState {
+  private final Map<Account.Id, Set<AccountGroup.Id>> groupCache =
+      new HashMap<Account.Id, Set<AccountGroup.Id>>();
+  private final Map<ApprovalCategory.Id, Collection<ChangeApproval>> approvals =
+      new HashMap<ApprovalCategory.Id, Collection<ChangeApproval>>();
+  private final Map<ApprovalCategory.Id, Boolean> valid =
+      new HashMap<ApprovalCategory.Id, Boolean>();
+  private final Change change;
+  private final ProjectCache.Entry project;
+  private final Map<ApprovalCategory.Id, Collection<ProjectRight>> allRights =
+      new HashMap<ApprovalCategory.Id, Collection<ProjectRight>>();
+  private Map<ApprovalCategory.Id, Collection<ProjectRight>> projectRights;
+  private Map<ApprovalCategory.Id, Collection<ProjectRight>> wildcardRights;
+  private Set<ChangeApproval> modified;
+
+  public FunctionState(final Change c, final Collection<ChangeApproval> all) {
+    change = c;
+    project = Common.getProjectCache().get(change.getDest().getParentKey());
+
+    for (final ChangeApproval ca : all) {
+      Collection<ChangeApproval> l = approvals.get(ca.getCategoryId());
+      if (l == null) {
+        l = new ArrayList<ChangeApproval>();
+        approvals.put(ca.getCategoryId(), l);
+      }
+      l.add(ca);
+    }
+  }
+
+  public Change getChange() {
+    return change;
+  }
+
+  public Project getProject() {
+    return project.getProject();
+  }
+
+  public void valid(final ApprovalType at, final boolean v) {
+    valid.put(id(at), v);
+  }
+
+  public boolean isValid(final ApprovalType at) {
+    return isValid(id(at));
+  }
+
+  public boolean isValid(final ApprovalCategory.Id id) {
+    final Boolean b = valid.get(id);
+    return b != null && b;
+  }
+
+  public Collection<ChangeApproval> getApprovals(final ApprovalType at) {
+    return getApprovals(id(at));
+  }
+
+  public Collection<ChangeApproval> getApprovals(final ApprovalCategory.Id id) {
+    final Collection<ChangeApproval> l = approvals.get(id);
+    return l != null ? l : Collections.<ChangeApproval> emptySet();
+  }
+
+  public void dirty(final ChangeApproval ap) {
+    if (modified == null) {
+      modified = new HashSet<ChangeApproval>();
+    }
+    modified.add(ap);
+  }
+
+  public Collection<ChangeApproval> getDirtyChangeApprovals() {
+    if (modified != null) {
+      return modified;
+    }
+    return Collections.emptySet();
+  }
+
+  public Collection<ProjectRight> getProjectRights(final ApprovalType at) {
+    return getProjectRights(id(at));
+  }
+
+  public Collection<ProjectRight> getProjectRights(final ApprovalCategory.Id id) {
+    if (projectRights == null) {
+      projectRights = index(project.getRights());
+    }
+    final Collection<ProjectRight> l = projectRights.get(id);
+    return l != null ? l : Collections.<ProjectRight> emptySet();
+  }
+
+  public Collection<ProjectRight> getWildcardRights(final ApprovalType at) {
+    return getWildcardRights(id(at));
+  }
+
+  public Collection<ProjectRight> getWildcardRights(final ApprovalCategory.Id id) {
+    if (wildcardRights == null) {
+      wildcardRights = index(Common.getProjectCache().getWildcardRights());
+    }
+    final Collection<ProjectRight> l = wildcardRights.get(id);
+    return l != null ? l : Collections.<ProjectRight> emptySet();
+  }
+
+  public Collection<ProjectRight> getAllRights(final ApprovalType at) {
+    return getAllRights(id(at));
+  }
+
+  public Collection<ProjectRight> getAllRights(final ApprovalCategory.Id id) {
+    Collection<ProjectRight> l = allRights.get(id);
+    if (l == null) {
+      l = new ArrayList<ProjectRight>();
+      l.addAll(getProjectRights(id));
+      l.addAll(getWildcardRights(id));
+      l = Collections.unmodifiableCollection(l);
+      allRights.put(id, l);
+    }
+    return l;
+  }
+
+  private static Map<Id, Collection<ProjectRight>> index(
+      final Collection<ProjectRight> rights) {
+    final HashMap<ApprovalCategory.Id, Collection<ProjectRight>> r;
+
+    r = new HashMap<ApprovalCategory.Id, Collection<ProjectRight>>();
+    for (final ProjectRight pr : rights) {
+      Collection<ProjectRight> l = r.get(pr.getApprovalCategoryId());
+      if (l == null) {
+        l = new ArrayList<ProjectRight>();
+        r.put(pr.getApprovalCategoryId(), l);
+      }
+      l.add(pr);
+    }
+    return r;
+  }
+
+  public boolean isMember(final ChangeApproval ca, final ProjectRight r) {
+    return isMember(ca.getAccountId(), r.getAccountGroupId());
+  }
+
+  public boolean isMember(final Account.Id accountId,
+      final AccountGroup.Id groupId) {
+    return getGroups(accountId).contains(groupId);
+  }
+
+  public Set<AccountGroup.Id> getGroups(final Account.Id id) {
+    Set<AccountGroup.Id> g = groupCache.get(id);
+    if (g == null) {
+      g = Common.getGroupCache().getGroups(id);
+      groupCache.put(id, g);
+    }
+    return g;
+  }
+
+  /**
+   * Normalize the approval record down to the range permitted by the type, in
+   * case the type was modified since the approval was originally granted.
+   * <p>
+   * If the record's value was modified, its automatically marked as dirty.
+   */
+  public void applyTypeFloor(final ApprovalType at, final ChangeApproval a) {
+    final ApprovalCategoryValue atMin = at.getMin();
+
+    if (atMin != null && a.getValue() < atMin.getValue()) {
+      a.setValue(atMin.getValue());
+      dirty(a);
+    }
+
+    final ApprovalCategoryValue atMax = at.getMax();
+    if (atMax != null && a.getValue() > atMax.getValue()) {
+      a.setValue(atMax.getValue());
+      dirty(a);
+    }
+  }
+
+  /**
+   * Normalize the approval record to be inside the maximum range permitted by
+   * the ProjectRights granted to groups the account is a member of.
+   * <p>
+   * If multiple ProjectRights are matched (assigned to different groups the
+   * account is a member of) the lowest minValue and the highest maxValue of the
+   * union of them is used.
+   * <p>
+   * If the record's value was modified, its automatically marked as dirty.
+   */
+  public void applyRightFloor(final ChangeApproval a) {
+    // Find the maximal range actually granted to the user.
+    //
+    short minAllowed = 0, maxAllowed = 0;
+    for (final ProjectRight r : getAllRights(a.getCategoryId())) {
+      if (isMember(a, r)) {
+        minAllowed = (short) Math.min(minAllowed, r.getMinValue());
+        maxAllowed = (short) Math.max(maxAllowed, r.getMaxValue());
+      }
+    }
+
+    // Normalize the value into that range, returning true if we changed
+    // the value.
+    //
+    if (a.getValue() < minAllowed) {
+      a.setValue(minAllowed);
+      dirty(a);
+
+    } else if (a.getValue() > maxAllowed) {
+      a.setValue(maxAllowed);
+      dirty(a);
+    }
+  }
+
+  /** Run <code>applyTypeFloor</code>, <code>applyRightFloor</code>. */
+  public void normalize(final ApprovalType at, final ChangeApproval ca) {
+    applyTypeFloor(at, ca);
+    applyRightFloor(ca);
+  }
+
+  private static Id id(final ApprovalType at) {
+    return at.getCategory().getId();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/workflow/MaxWithBlock.java b/appjar/src/main/java/com/google/gerrit/client/workflow/MaxWithBlock.java
new file mode 100644
index 0000000..3564b3a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/workflow/MaxWithBlock.java
@@ -0,0 +1,63 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.workflow;
+
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+
+/**
+ * Computes an {@link ApprovalCategory} by looking at maximum values.
+ * <p>
+ * In order to be considered "approved" this function requires that:
+ * <ul>
+ * <li>The maximum negative value is never used;</li>
+ * <li>The maximum positive value is used at least once;</li>
+ * <li>The user approving the maximum positive has been granted that.</li>
+ * </ul>
+ * <p>
+ * This function is primarily useful for review fields, with values such as:
+ * <ul>
+ * <li>+2: Approved change.</li>
+ * <li>+1: Looks ok, but get another approval from someone with more depth.</li>
+ * <li>-1: Soft reject, it isn't a great change but its OK if approved.</li>
+ * <li>-2: Rejected, must not be submitted.
+ * </ul>
+ * <p>
+ * Note that projects using this function would typically want to assign out the
+ * middle range (-1 .. +1) to almost everyone, so people can indicate how they
+ * feel about a change, but the extremes of -2 and +2 should be reserved for the
+ * project's long-term maintainers, those who are most familiar with its code.
+ */
+public class MaxWithBlock extends CategoryFunction {
+  public static String NAME = "MaxWithBlock";
+
+  @Override
+  public void run(final ApprovalType at, final FunctionState state) {
+    boolean rejected = false;
+    boolean passed = false;
+    for (final ChangeApproval a : state.getApprovals(at)) {
+      state.normalize(at, a);
+
+      rejected |= at.isMaxNegative(a);
+      passed |= at.isMaxPositive(a);
+    }
+
+    // The type must not have had its max negative (a forceful reject)
+    // and must have at least one max positive (a full accept).
+    //
+    state.valid(at, !rejected && passed);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/workflow/NoOpFunction.java b/appjar/src/main/java/com/google/gerrit/client/workflow/NoOpFunction.java
new file mode 100644
index 0000000..19555e0
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/workflow/NoOpFunction.java
@@ -0,0 +1,33 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.workflow;
+
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.reviewdb.Account;
+
+/** A function that does nothing. */
+public class NoOpFunction extends CategoryFunction {
+  public static String NAME = "NoOp";
+
+  @Override
+  public void run(final ApprovalType at, final FunctionState state) {
+  }
+
+  @Override
+  public boolean isValid(final Account.Id accountId, final ApprovalType at,
+      final FunctionState state) {
+    return false;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/client/workflow/SubmitFunction.java b/appjar/src/main/java/com/google/gerrit/client/workflow/SubmitFunction.java
new file mode 100644
index 0000000..008b160
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/client/workflow/SubmitFunction.java
@@ -0,0 +1,67 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.workflow;
+
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.rpc.Common;
+
+/**
+ * Computes if the submit function can be used.
+ * <p>
+ * In order to be considered "approved" this function requires that all approval
+ * categories with a position >= 0 (that is any whose
+ * {@link ApprovalCategory#isAction()} method returns false) is valid and that
+ * the change state be {@link Change.Status#NEW}.
+ * <p>
+ * This is mostly useful for actions, like {@link ApprovalCategory#SUBMIT}.
+ */
+public class SubmitFunction extends CategoryFunction {
+  public static String NAME = "Submit";
+
+  @Override
+  public void run(final ApprovalType at, final FunctionState state) {
+    state.valid(at, valid(at, state));
+  }
+
+  @Override
+  public boolean isValid(final Account.Id accountId, final ApprovalType at,
+      final FunctionState state) {
+    if (valid(at, state)) {
+      for (final ProjectRight pr : state.getAllRights(at)) {
+        if (state.isMember(accountId, pr.getAccountGroupId())
+            && pr.getMaxValue() > 0) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
+  private static boolean valid(final ApprovalType at, final FunctionState state) {
+    if (state.getChange().getStatus() != Change.Status.NEW) {
+      return false;
+    }
+    for (final ApprovalType t : Common.getGerritConfig().getApprovalTypes()) {
+      if (!state.isValid(t)) {
+        return false;
+      }
+    }
+    return true;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/CodeReviewCommit.java b/appjar/src/main/java/com/google/gerrit/git/CodeReviewCommit.java
new file mode 100644
index 0000000..8f1bca9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/CodeReviewCommit.java
@@ -0,0 +1,56 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+import com.google.gerrit.client.reviewdb.PatchSet;
+
+import org.spearce.jgit.lib.AnyObjectId;
+import org.spearce.jgit.revwalk.RevCommit;
+
+import java.util.List;
+
+/** Extended commit entity with code review specific metadata. */
+class CodeReviewCommit extends RevCommit {
+  /**
+   * Unique key of the PatchSet entity from the code review system.
+   * <p>
+   * This value is only available on commits that have a PatchSet represented in
+   * the code review system and whose PatchSet is in the current submit queue.
+   * Merge commits created during the merge or commits that aren't in the submit
+   * queue will keep this member null.
+   */
+  PatchSet.Id patchsetId;
+
+  /**
+   * Ordinal position of this commit within the submit queue.
+   * <p>
+   * Only valid if {@link #patchsetId} is not null.
+   */
+  int originalOrder;
+
+  /**
+   * The result status for this commit.
+   * <p>
+   * Only valid if {@link #patchsetId} is not null.
+   */
+  CommitMergeStatus statusCode;
+
+  /** Commits which are missing ancestors of this commit. */
+  List<CodeReviewCommit> missing;
+
+  CodeReviewCommit(final AnyObjectId id) {
+    super(id);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/CommitMergeStatus.java b/appjar/src/main/java/com/google/gerrit/git/CommitMergeStatus.java
new file mode 100644
index 0000000..89c2007
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/CommitMergeStatus.java
@@ -0,0 +1,35 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+enum CommitMergeStatus {
+  /** */
+  CLEAN_MERGE,
+
+  /** */
+  ALREADY_MERGED,
+
+  /** */
+  PATH_CONFLICT,
+
+  /** */
+  MISSING_DEPENDENCY,
+
+  /** */
+  NO_PATCH_SET,
+
+  /** */
+  REVISION_GONE;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/GitMetaUtil.java b/appjar/src/main/java/com/google/gerrit/git/GitMetaUtil.java
new file mode 100644
index 0000000..1457cb3
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/GitMetaUtil.java
@@ -0,0 +1,70 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+import org.spearce.jgit.lib.Repository;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Random;
+
+public class GitMetaUtil {
+  private static final int SLEEP_MIN = 100; // milliseconds
+  private static final int SLEEP_MAX = 2 * 60 * 1000; // milliseconds
+  private static final ThreadLocal<Random> SLEEP_RNG =
+      new ThreadLocal<Random>() {
+        @Override
+        protected Random initialValue() {
+          return new Random();
+        }
+      };
+
+  private static int waitTime() {
+    return SLEEP_MIN + SLEEP_RNG.get().nextInt(SLEEP_MAX - SLEEP_MIN);
+  }
+
+  public static void randomSleep() {
+    try {
+      Thread.sleep(waitTime());
+    } catch (InterruptedException ie) {
+      // Just let the thread continue anyway.
+    }
+  }
+
+  public static boolean isGitRepository(final File gitdir) {
+    return new File(gitdir, "config").isFile()
+        && new File(gitdir, "HEAD").isFile()
+        && new File(gitdir, "objects").isDirectory()
+        && new File(gitdir, "refs/heads").isDirectory();
+  }
+
+  public static Repository open(final File gitdir) throws IOException {
+    if (isGitRepository(gitdir)) {
+      return new Repository(gitdir);
+    }
+
+    if (isGitRepository(new File(gitdir, ".git"))) {
+      return new Repository(new File(gitdir, ".git"));
+    }
+
+    final String name = gitdir.getName();
+    final File parent = gitdir.getParentFile();
+    if (isGitRepository(new File(parent, name + ".git"))) {
+      return new Repository(new File(parent, name + ".git"));
+    }
+
+    return null;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/InvalidRepositoryException.java b/appjar/src/main/java/com/google/gerrit/git/InvalidRepositoryException.java
new file mode 100644
index 0000000..0686f21
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/InvalidRepositoryException.java
@@ -0,0 +1,26 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+/** Indicates a directory does not contain a valid Git repository. */
+public class InvalidRepositoryException extends Exception {
+  public InvalidRepositoryException(final String name) {
+    super(name);
+  }
+
+  public InvalidRepositoryException(final String name, final Throwable err) {
+    super(name, err);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/MergeException.java b/appjar/src/main/java/com/google/gerrit/git/MergeException.java
new file mode 100644
index 0000000..9529811
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/MergeException.java
@@ -0,0 +1,26 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+/** Indicates the current branch's queue cannot be processed at this time. */
+class MergeException extends Exception {
+  MergeException(final String msg) {
+    super(msg, null);
+  }
+
+  MergeException(final String msg, final Throwable why) {
+    super(msg, why);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/MergeOp.java b/appjar/src/main/java/com/google/gerrit/git/MergeOp.java
new file mode 100644
index 0000000..a514643
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/MergeOp.java
@@ -0,0 +1,506 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+import com.google.gerrit.client.reviewdb.Branch;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ChangeMessage;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import org.spearce.jgit.errors.IncorrectObjectTypeException;
+import org.spearce.jgit.errors.MissingObjectException;
+import org.spearce.jgit.lib.AnyObjectId;
+import org.spearce.jgit.lib.Commit;
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.PersonIdent;
+import org.spearce.jgit.lib.Ref;
+import org.spearce.jgit.lib.RefUpdate;
+import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.merge.MergeStrategy;
+import org.spearce.jgit.merge.Merger;
+import org.spearce.jgit.revwalk.RevCommit;
+import org.spearce.jgit.revwalk.RevSort;
+import org.spearce.jgit.revwalk.RevWalk;
+import org.spearce.jgit.util.Base64;
+import org.spearce.jgit.util.NB;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Merges changes in submission order into a single branch.
+ * <p>
+ * Branches are reduced to the minimum number of heads needed to merge
+ * everything. This allows commits to be entered into the queue in any order
+ * (such as ancestors before descendants) and only the most recent commit on any
+ * line of development will be merged. All unmerged commits along a line of
+ * development must be in the submission queue in order to merge the tip of that
+ * line.
+ * <p>
+ * Conflicts are handled by discarding the entire line of development and
+ * marking it as conflicting, even if an earlier commit along that same line can
+ * be merged cleanly.
+ */
+public class MergeOp {
+  private final GerritServer server;
+  private final PersonIdent myIdent;
+  private final Branch.NameKey destBranch;
+  private final List<CodeReviewCommit> toMerge;
+  private List<Change> submitted;
+  private final Map<Change.Id, CommitMergeStatus> status;
+  private ReviewDb schema;
+  private Repository db;
+  private RevWalk rw;
+  private CodeReviewCommit branchTip;
+  private CodeReviewCommit mergeTip;
+  private RefUpdate branchUpdate;
+
+  public MergeOp(final GerritServer gs, final Branch.NameKey branch) {
+    server = gs;
+    myIdent = server.newGerritPersonIdent();
+    destBranch = branch;
+    toMerge = new ArrayList<CodeReviewCommit>();
+    status = new HashMap<Change.Id, CommitMergeStatus>();
+  }
+
+  public void merge() throws MergeException {
+    try {
+      schema = Common.getSchemaFactory().open();
+    } catch (OrmException e) {
+      throw new MergeException("Cannot open database", e);
+    }
+    try {
+      mergeImpl();
+    } finally {
+      schema.close();
+      schema = null;
+    }
+  }
+
+  private void mergeImpl() throws MergeException {
+    openRepository();
+    openBranch();
+    listPendingSubmits();
+    validateChangeList();
+    reduceToMinimalMerge();
+    mergeTopics();
+    markCleanMerges();
+    updateBranch();
+    updateChangeStatus();
+  }
+
+  private void openRepository() throws MergeException {
+    final String name = destBranch.getParentKey().get();
+    try {
+      db = server.getRepositoryCache().get(name);
+    } catch (InvalidRepositoryException notGit) {
+      final String m = "Repository \"" + name + "\" unknown.";
+      throw new MergeException(m, notGit);
+    }
+
+    rw = new RevWalk(db) {
+      @Override
+      protected RevCommit createCommit(final AnyObjectId id) {
+        return new CodeReviewCommit(id);
+      }
+    };
+  }
+
+  private void openBranch() throws MergeException {
+    try {
+      branchUpdate = db.updateRef(destBranch.get());
+      if (branchUpdate.getOldObjectId() != null) {
+        branchTip =
+            (CodeReviewCommit) rw.parseCommit(branchUpdate.getOldObjectId());
+      } else {
+        branchTip = null;
+      }
+    } catch (IOException e) {
+      throw new MergeException("Cannot open branch", e);
+    }
+  }
+
+  private void listPendingSubmits() throws MergeException {
+    try {
+      submitted = schema.changes().submitted(destBranch).toList();
+    } catch (OrmException e) {
+      throw new MergeException("Cannot query the database", e);
+    }
+  }
+
+  private void validateChangeList() throws MergeException {
+    final Set<ObjectId> tips = new HashSet<ObjectId>();
+    for (final Ref r : db.getAllRefs().values()) {
+      tips.add(r.getObjectId());
+    }
+
+    int commitOrder = 0;
+    for (final Change chg : submitted) {
+      if (chg.currentPatchSetId() == null) {
+        status.put(chg.getId(), CommitMergeStatus.NO_PATCH_SET);
+        continue;
+      }
+
+      final PatchSet ps;
+      try {
+        ps = schema.patchSets().get(chg.currentPatchSetId());
+      } catch (OrmException e) {
+        throw new MergeException("Cannot query the database", e);
+      }
+      if (ps == null || ps.getRevision() == null
+          || ps.getRevision().get() == null) {
+        status.put(chg.getId(), CommitMergeStatus.NO_PATCH_SET);
+        continue;
+      }
+
+      final String idstr = ps.getRevision().get();
+      final ObjectId id;
+      try {
+        id = ObjectId.fromString(idstr);
+      } catch (IllegalArgumentException iae) {
+        status.put(chg.getId(), CommitMergeStatus.NO_PATCH_SET);
+        continue;
+      }
+
+      if (!tips.contains(id)) {
+        // TODO Technically the proper way to do this test is to use a
+        // RevWalk on "$id --not --all" and test for an empty set. But
+        // that is way slower than looking for a ref directly pointing
+        // at the desired tip. We should always have a ref available.
+        //
+        // TODO this is actually an error, the branch is gone but we
+        // want to merge the issue. We can't safely do that if the
+        // tip is not reachable.
+        //
+        status.put(chg.getId(), CommitMergeStatus.REVISION_GONE);
+        continue;
+      }
+
+      final CodeReviewCommit commit;
+      try {
+        commit = (CodeReviewCommit) rw.parseCommit(id);
+      } catch (IOException e) {
+        throw new MergeException("Invalid issue commit " + id, e);
+      }
+      commit.patchsetId = ps.getId();
+      commit.originalOrder = commitOrder++;
+
+      if (branchTip != null) {
+        // If this commit is already merged its a bug in the queuing code
+        // that we got back here. Just mark it complete and move on. Its
+        // merged and that is all that mattered to the requestor.
+        //
+        try {
+          if (rw.isMergedInto(commit, branchTip)) {
+            commit.statusCode = CommitMergeStatus.ALREADY_MERGED;
+            status.put(chg.getId(), commit.statusCode);
+            continue;
+          }
+        } catch (IOException err) {
+          throw new MergeException("Cannot perform merge base test", err);
+        }
+      }
+
+      toMerge.add(commit);
+    }
+  }
+
+  private void reduceToMinimalMerge() throws MergeException {
+    final Collection<CodeReviewCommit> heads;
+    try {
+      heads = new MergeSorter(rw, branchTip).sort(toMerge);
+    } catch (IOException e) {
+      throw new MergeException("Branch head sorting failed", e);
+    }
+
+    for (final CodeReviewCommit c : toMerge) {
+      if (c.statusCode != null) {
+        status.put(c.patchsetId.getParentKey(), c.statusCode);
+      }
+    }
+
+    toMerge.clear();
+    toMerge.addAll(heads);
+    Collections.sort(toMerge, new Comparator<CodeReviewCommit>() {
+      public int compare(final CodeReviewCommit a, final CodeReviewCommit b) {
+        return a.originalOrder - b.originalOrder;
+      }
+    });
+  }
+
+  private void mergeTopics() throws MergeException {
+    mergeTip = branchTip;
+
+    // Take the first fast-forward available, if any is available in the set.
+    //
+    for (final Iterator<CodeReviewCommit> i = toMerge.iterator(); i.hasNext();) {
+      try {
+        final CodeReviewCommit n = i.next();
+        if (mergeTip == null || rw.isMergedInto(mergeTip, n)) {
+          mergeTip = n;
+          i.remove();
+          break;
+        }
+      } catch (IOException e) {
+        throw new MergeException("Cannot fast-forward test during merge", e);
+      }
+    }
+
+    // If this project only permits fast-forwards, abort everything else.
+    //
+    if ("true".equals(db.getConfig().getString("gerrit", null,
+        "fastforwardonly"))) {
+      while (!toMerge.isEmpty()) {
+        final CodeReviewCommit n = toMerge.remove(0);
+        n.statusCode = CommitMergeStatus.PATH_CONFLICT;
+        status.put(n.patchsetId.getParentKey(), n.statusCode);
+      }
+      return;
+    }
+
+    // For every other commit do a pair-wise merge.
+    //
+    while (!toMerge.isEmpty()) {
+      final CodeReviewCommit n = toMerge.remove(0);
+      final Merger m = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(db);
+      try {
+        if (m.merge(new AnyObjectId[] {mergeTip, n})) {
+          writeMergeCommit(m, n);
+
+        } else {
+          rw.reset();
+          rw.markStart(n);
+          rw.markUninteresting(mergeTip);
+          CodeReviewCommit failed;
+          while ((failed = (CodeReviewCommit) rw.next()) != null) {
+            if (failed.patchsetId == null) {
+              continue;
+            }
+
+            failed.statusCode = CommitMergeStatus.PATH_CONFLICT;
+            status.put(failed.patchsetId.getParentKey(), failed.statusCode);
+          }
+        }
+      } catch (IOException e) {
+        throw new MergeException("Cannot merge " + n.name(), e);
+      }
+    }
+  }
+
+  private void writeMergeCommit(final Merger m, final CodeReviewCommit n)
+      throws IOException, MissingObjectException, IncorrectObjectTypeException {
+    final Commit mergeCommit = new Commit(db);
+    mergeCommit.setTreeId(m.getResultTreeId());
+    mergeCommit.setParentIds(new ObjectId[] {mergeTip, n});
+    mergeCommit.setAuthor(myIdent);
+    mergeCommit.setCommitter(mergeCommit.getAuthor());
+    mergeCommit.setMessage("Merge");
+
+    final ObjectId id = m.getObjectWriter().writeCommit(mergeCommit);
+    mergeTip = (CodeReviewCommit) rw.parseCommit(id);
+  }
+
+  private void markCleanMerges() throws MergeException {
+    try {
+      rw.reset();
+      rw.sort(RevSort.REVERSE);
+      rw.markStart(mergeTip);
+      if (branchTip != null) {
+        rw.markUninteresting(branchTip);
+      } else {
+        for (final Ref r : db.getAllRefs().values()) {
+          if (r.getName().startsWith(Constants.R_HEADS)
+              || r.getName().startsWith(Constants.R_TAGS)) {
+            try {
+              rw.markUninteresting(rw.parseCommit(r.getObjectId()));
+            } catch (IncorrectObjectTypeException iote) {
+              // Not a commit? Skip over it.
+            }
+          }
+        }
+      }
+
+      CodeReviewCommit c;
+      while ((c = (CodeReviewCommit) rw.next()) != null) {
+        if (c.patchsetId != null) {
+          c.statusCode = CommitMergeStatus.CLEAN_MERGE;
+          status.put(c.patchsetId.getParentKey(), c.statusCode);
+        }
+      }
+    } catch (IOException e) {
+      throw new MergeException("Cannot mark clean merges", e);
+    }
+  }
+
+  private void updateBranch() throws MergeException {
+    if (branchTip == null || branchTip != mergeTip) {
+      branchUpdate.setForceUpdate(false);
+      branchUpdate.setNewObjectId(mergeTip);
+      branchUpdate.setRefLogMessage("merged", true);
+      try {
+        switch (branchUpdate.update(rw)) {
+          case NEW:
+          case FAST_FORWARD:
+            break;
+
+          default:
+            throw new IOException(branchUpdate.getResult().name());
+        }
+      } catch (IOException e) {
+        throw new MergeException("Cannot update " + branchUpdate.getName(), e);
+      }
+    }
+  }
+
+  private void updateChangeStatus() {
+    for (final Change c : submitted) {
+      final CommitMergeStatus s = status.get(c.getId());
+      if (s == null) {
+        // Shouldn't ever happen, but leave the change alone. We'll pick
+        // it up on the next pass.
+        //
+        continue;
+      }
+
+      switch (s) {
+        case CLEAN_MERGE: {
+          final String txt =
+              "Change has been successfully merged into the git repository.";
+          setMerged(c, message(c, txt));
+          break;
+        }
+
+        case ALREADY_MERGED:
+          setMerged(c, null);
+          break;
+
+        case PATH_CONFLICT: {
+          final String txt =
+              "Your change could not been merged due to a path conflict.\n"
+                  + "\n"
+                  + "Please merge (or rebase) the change locally and upload the resolution for review.";
+          setNew(c, message(c, txt));
+          break;
+        }
+
+        case MISSING_DEPENDENCY: {
+          try {
+            final String txt =
+                "Change could not be merged because of a missing dependency.  As soon as its dependencies are submitted, the change will be submitted.";
+            final List<ChangeMessage> msgList =
+                schema.changeMessages().byChange(c.getId()).toList();
+            if (msgList.size() > 0) {
+              final ChangeMessage last = msgList.get(msgList.size() - 1);
+              if (last.getAuthor() == null && txt.equals(last.getMessage())) {
+                // The last message was written by us, and it said this
+                // same message already. Its unlikely anything has changed
+                // that would cause us to need to repeat ourselves.
+                //
+                break;
+              }
+            }
+
+            schema.changeMessages().insert(
+                Collections.singleton(message(c, txt)));
+          } catch (OrmException e) {
+          }
+          break;
+        }
+
+        default:
+          setNew(c, message(c, "Unspecified merge failure: " + s.name()));
+          break;
+      }
+    }
+  }
+
+  private ChangeMessage message(final Change c, final String body) {
+    final byte[] raw = new byte[4];
+    NB.encodeInt32(raw, 0, schema.nextChangeMessageId());
+    final String uuid = Base64.encodeBytes(raw);
+    final ChangeMessage m =
+        new ChangeMessage(new ChangeMessage.Key(c.getId(), uuid), null);
+    m.setMessage(body);
+    return m;
+  }
+
+  private void setMerged(Change c, ChangeMessage msg) {
+    final PatchSet.Id merged = c.currentPatchSetId();
+    for (int attempts = 0; attempts < 10; attempts++) {
+      c.setStatus(Change.Status.MERGED);
+      c.updated();
+      try {
+        final Transaction txn = schema.beginTransaction();
+        schema.changes().update(Collections.singleton(c), txn);
+        if (msg != null) {
+          schema.changeMessages().insert(Collections.singleton(msg), txn);
+        }
+        txn.commit();
+        break;
+      } catch (OrmException e) {
+        try {
+          c = schema.changes().get(c.getId());
+          if (!merged.equals(c.currentPatchSetId())) {
+            // Uncool; the patch set changed after we merged it.
+            // Go back to the patch set that was actually merged.
+            //
+            c.setCurrentPatchSet(schema.patchSetInfo().get(merged));
+          }
+        } catch (OrmException e2) {
+        }
+      }
+    }
+  }
+
+  private void setNew(Change c, ChangeMessage msg) {
+    for (int attempts = 0; attempts < 10; attempts++) {
+      c.setStatus(Change.Status.NEW);
+      c.updated();
+      try {
+        final Transaction txn = schema.beginTransaction();
+        schema.changes().update(Collections.singleton(c), txn);
+        schema.changeMessages().insert(Collections.singleton(msg), txn);
+        txn.commit();
+        break;
+      } catch (OrmException e) {
+        try {
+          c = schema.changes().get(c.getId());
+          if (c.getStatus().isClosed()) {
+            // Someone else marked it close while we noticed a failure.
+            // That's fine, leave it closed.
+            //
+            break;
+          }
+        } catch (OrmException e2) {
+        }
+      }
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/MergeQueue.java b/appjar/src/main/java/com/google/gerrit/git/MergeQueue.java
new file mode 100644
index 0000000..6d66c52
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/MergeQueue.java
@@ -0,0 +1,140 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+import com.google.gerrit.client.reviewdb.Branch;
+import com.google.gerrit.server.GerritServer;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+public class MergeQueue {
+  private static ScheduledThreadPoolExecutor pool;
+  private static final Map<Branch.NameKey, MergeEntry> active =
+      new HashMap<Branch.NameKey, MergeEntry>();
+
+  public static void terminate() {
+    final ScheduledThreadPoolExecutor p = shutdown();
+    if (p != null) {
+      boolean isTerminated;
+      do {
+        try {
+          isTerminated = p.awaitTermination(10, TimeUnit.SECONDS);
+        } catch (InterruptedException ie) {
+          isTerminated = false;
+        }
+      } while (!isTerminated);
+    }
+  }
+
+  private static synchronized ScheduledThreadPoolExecutor shutdown() {
+    final ScheduledThreadPoolExecutor p = pool;
+    if (p != null) {
+      p.shutdown();
+      pool = null;
+      return p;
+    }
+    return null;
+  }
+
+  public static void merge(final Branch.NameKey branch) {
+    if (start(branch)) {
+      try {
+        mergeImpl(branch);
+      } finally {
+        finish(branch);
+      }
+    }
+  }
+
+  public static synchronized boolean start(final Branch.NameKey branch) {
+    final MergeEntry e = active.get(branch);
+    if (e == null) {
+      // Let the caller attempt this merge, its the only one interested
+      // in processing this branch right now.
+      //
+      active.put(branch, new MergeEntry(branch));
+      return true;
+    } else {
+      // Request that the job queue handle this merge later.
+      //
+      e.needMerge = true;
+      return false;
+    }
+  }
+
+  public static synchronized void finish(final Branch.NameKey branch) {
+    final MergeEntry e = active.get(branch);
+    if (e == null) {
+      // Not registered for a build? Shouldn't happen but ignore it.
+      //
+      return;
+    }
+
+    if (!e.needMerge) {
+      // No additional merges are in progress, we can delete it.
+      //
+      active.remove(branch);
+      return;
+    }
+
+    if (!e.jobScheduled) {
+      // No job has been scheduled to execute this branch, but it needs
+      // to run a merge again.
+      //
+      if (pool == null) {
+        pool = new ScheduledThreadPoolExecutor(1);
+      }
+
+      e.jobScheduled = true;
+      pool.schedule(new Runnable() {
+        public void run() {
+          unschedule(e);
+          try {
+            mergeImpl(e.dest);
+          } finally {
+            finish(e.dest);
+          }
+        }
+      }, 0, TimeUnit.SECONDS);
+    }
+  }
+
+  private static synchronized void unschedule(final MergeEntry e) {
+    e.jobScheduled = false;
+    e.needMerge = false;
+  }
+
+  private static void mergeImpl(final Branch.NameKey branch) {
+    try {
+      new MergeOp(GerritServer.getInstance(), branch).merge();
+    } catch (Throwable e) {
+      // TODO we should have better logging than stderr
+      e.printStackTrace();
+    }
+  }
+
+  private static class MergeEntry {
+    final Branch.NameKey dest;
+    boolean needMerge;
+    boolean jobScheduled;
+
+    MergeEntry(final Branch.NameKey d) {
+      dest = d;
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/MergeSorter.java b/appjar/src/main/java/com/google/gerrit/git/MergeSorter.java
new file mode 100644
index 0000000..59c2beb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/MergeSorter.java
@@ -0,0 +1,123 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+import org.spearce.jgit.errors.IncorrectObjectTypeException;
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.lib.Ref;
+import org.spearce.jgit.revwalk.RevCommit;
+import org.spearce.jgit.revwalk.RevCommitList;
+import org.spearce.jgit.revwalk.RevFlag;
+import org.spearce.jgit.revwalk.RevWalk;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+class MergeSorter {
+  private final RevWalk rw;
+  private final RevCommit base;
+  private final RevFlag CAN_MERGE;
+  private final Set<RevCommit> accepted;
+
+  MergeSorter(final RevWalk walk, final RevCommit branchHead)
+      throws IOException {
+    rw = walk;
+    CAN_MERGE = rw.newFlag("CAN_MERGE");
+    base = branchHead;
+
+    accepted = new HashSet<RevCommit>();
+    for (final Ref r : rw.getRepository().getAllRefs().values()) {
+      if (r.getName().startsWith(Constants.R_HEADS)
+          || r.getName().startsWith(Constants.R_TAGS)) {
+        try {
+          accepted.add(rw.parseCommit(r.getObjectId()));
+        } catch (IncorrectObjectTypeException iote) {
+          // Not a commit? Skip over it.
+        }
+      }
+    }
+  }
+
+  Collection<CodeReviewCommit> sort(final Collection<CodeReviewCommit> incoming)
+      throws IOException {
+    final Set<CodeReviewCommit> heads = new HashSet<CodeReviewCommit>();
+    final Set<CodeReviewCommit> sort = prepareList(incoming);
+    while (!sort.isEmpty()) {
+      final CodeReviewCommit n = removeOne(sort);
+
+      rw.resetRetain(CAN_MERGE);
+      rw.markStart(n);
+      if (base != null) {
+        rw.markUninteresting(base);
+      }
+      for (RevCommit c : accepted) {
+        rw.markUninteresting(c);
+      }
+
+      RevCommit c;
+      final RevCommitList<RevCommit> contents = new RevCommitList<RevCommit>();
+      while ((c = rw.next()) != null) {
+        if (!c.has(CAN_MERGE)) {
+          // We cannot merge n as it would bring something we
+          // aren't permitted to merge at this time. Drop n.
+          //
+          if (n.missing == null) {
+            n.statusCode = CommitMergeStatus.MISSING_DEPENDENCY;
+            n.missing = new ArrayList<CodeReviewCommit>();
+          }
+          n.missing.add((CodeReviewCommit) c);
+        } else {
+          contents.add(c);
+        }
+      }
+
+      if (n.statusCode == CommitMergeStatus.MISSING_DEPENDENCY) {
+        continue;
+      }
+
+      // Anything reachable through us is better merged by just
+      // merging us directly. So prune our ancestors out and let
+      // us merge instead.
+      //
+      sort.removeAll(contents);
+      heads.removeAll(contents);
+      heads.add(n);
+    }
+    return heads;
+  }
+
+  private Set<CodeReviewCommit> prepareList(
+      final Collection<CodeReviewCommit> in) {
+    final HashSet<CodeReviewCommit> sort = new HashSet<CodeReviewCommit>();
+    for (final CodeReviewCommit c : in) {
+      if (!c.has(CAN_MERGE)) {
+        c.add(CAN_MERGE);
+        sort.add(c);
+      }
+    }
+    return sort;
+  }
+
+  private static <T> T removeOne(final Collection<T> c) {
+    final Iterator<T> i = c.iterator();
+    final T r = i.next();
+    i.remove();
+    return r;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/PatchSetImporter.java b/appjar/src/main/java/com/google/gerrit/git/PatchSetImporter.java
new file mode 100644
index 0000000..cc844d4
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/PatchSetImporter.java
@@ -0,0 +1,320 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.reviewdb.PatchContent;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.PatchSetAncestor;
+import com.google.gerrit.client.reviewdb.PatchSetInfo;
+import com.google.gerrit.client.reviewdb.RevId;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.reviewdb.UserIdentity;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import org.spearce.jgit.lib.Commit;
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.ObjectWriter;
+import org.spearce.jgit.lib.PersonIdent;
+import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.lib.Tree;
+import org.spearce.jgit.patch.CombinedFileHeader;
+import org.spearce.jgit.patch.FileHeader;
+import org.spearce.jgit.revwalk.RevCommit;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/** Imports a {@link PatchSet} from a {@link Commit}. */
+public class PatchSetImporter {
+  private static final int MAX_TRIES = 10;
+  private final ReviewDb db;
+  private final Repository repo;
+  private final RevCommit src;
+  private final PatchSet dst;
+  private final boolean isNew;
+  private Transaction txn;
+  private org.spearce.jgit.patch.Patch gitpatch;
+
+  private PatchSetInfo info;
+  private boolean infoIsNew;
+
+  private final MessageDigest contentmd = Constants.newMessageDigest();
+  private final Map<String, Patch> patchExisting = new HashMap<String, Patch>();
+  private final List<Patch> patchInsert = new ArrayList<Patch>();
+  private final List<Patch> patchUpdate = new ArrayList<Patch>();
+  private final Map<PatchContent.Key, String> content =
+      new HashMap<PatchContent.Key, String>();
+
+  private final Map<Integer, PatchSetAncestor> ancestorExisting =
+      new HashMap<Integer, PatchSetAncestor>();
+  private final List<PatchSetAncestor> ancestorInsert =
+      new ArrayList<PatchSetAncestor>();
+  private final List<PatchSetAncestor> ancestorUpdate =
+      new ArrayList<PatchSetAncestor>();
+
+  public PatchSetImporter(final ReviewDb dstDb, final Repository srcRepo,
+      final RevCommit srcCommit, final PatchSet dstPatchSet,
+      final boolean isNewPatchSet) {
+    db = dstDb;
+    repo = srcRepo;
+    src = srcCommit;
+    dst = dstPatchSet;
+    isNew = isNewPatchSet;
+  }
+
+  public void setTransaction(final Transaction t) {
+    txn = t;
+  }
+
+  public PatchSetInfo getPatchSetInfo() {
+    return info;
+  }
+
+  public void run() throws IOException, OrmException {
+    gitpatch = readGitPatch();
+
+    dst.setRevision(toRevId(src));
+
+    if (!isNew) {
+      // If we aren't a new patch set then we need to load the existing
+      // files so we can update or delete them if there are corrections.
+      //
+      info = db.patchSetInfo().get(dst.getId());
+      for (final Patch p : db.patches().byPatchSet(dst.getId())) {
+        patchExisting.put(p.getFileName(), p);
+      }
+      for (final PatchSetAncestor a : db.patchSetAncestors().ancestorsOf(
+          dst.getId())) {
+        ancestorExisting.put(a.getPosition(), a);
+      }
+    }
+
+    importInfo();
+    for (final FileHeader fh : gitpatch.getFiles()) {
+      importFile(fh);
+    }
+
+    // Ensure all content entities exist
+    //
+    putPatchContent();
+
+    final boolean auto = txn == null;
+    if (auto) {
+      txn = db.beginTransaction();
+    }
+    if (isNew) {
+      db.patchSets().insert(Collections.singleton(dst), txn);
+    }
+    if (infoIsNew) {
+      db.patchSetInfo().insert(Collections.singleton(info), txn);
+    } else {
+      db.patchSetInfo().update(Collections.singleton(info), txn);
+    }
+    db.patches().insert(patchInsert, txn);
+    db.patchSetAncestors().insert(ancestorInsert, txn);
+    if (!isNew) {
+      db.patches().update(patchUpdate, txn);
+      db.patches().delete(patchExisting.values(), txn);
+
+      db.patchSetAncestors().update(ancestorUpdate, txn);
+      db.patchSetAncestors().delete(ancestorExisting.values(), txn);
+    }
+    if (auto) {
+      txn.commit();
+      txn = null;
+    }
+  }
+
+  private void importInfo() {
+    if (info == null) {
+      info = new PatchSetInfo(dst.getId());
+      infoIsNew = true;
+    }
+
+    info.setSubject(src.getShortMessage());
+    info.setMessage(src.getFullMessage());
+    info.setAuthor(toUserIdentity(src.getAuthorIdent()));
+    info.setCommitter(toUserIdentity(src.getCommitterIdent()));
+
+    for (int p = 0; p < src.getParentCount(); p++) {
+      PatchSetAncestor a = ancestorExisting.remove(p + 1);
+      if (a == null) {
+        a = new PatchSetAncestor(new PatchSetAncestor.Id(dst.getId(), p + 1));
+        ancestorInsert.add(a);
+      } else {
+        ancestorUpdate.add(a);
+      }
+      a.setAncestorRevision(toRevId(src.getParent(p)));
+    }
+  }
+
+  private UserIdentity toUserIdentity(final PersonIdent who) {
+    final UserIdentity u = new UserIdentity();
+    u.setName(who.getName());
+    u.setEmail(who.getEmailAddress());
+    u.setDate(new Timestamp(who.getWhen().getTime()));
+    u.setTimeZone(who.getTimeZoneOffset());
+    return u;
+  }
+
+  private void importFile(final FileHeader fh)
+      throws UnsupportedEncodingException {
+    final String path;
+    if (fh.getChangeType() == FileHeader.ChangeType.DELETE) {
+      path = fh.getOldName();
+    } else {
+      path = fh.getNewName();
+    }
+
+    Patch p = patchExisting.remove(path);
+    if (p == null) {
+      p = new Patch(new Patch.Key(dst.getId(), path));
+      patchInsert.add(p);
+    } else {
+      p.setSourceFileName(null);
+      patchUpdate.add(p);
+    }
+
+    // Convert the ChangeType
+    //
+    if (fh.getChangeType() == FileHeader.ChangeType.ADD) {
+      p.setChangeType(Patch.ChangeType.ADD);
+
+    } else if (fh.getChangeType() == FileHeader.ChangeType.MODIFY) {
+      p.setChangeType(Patch.ChangeType.MODIFIED);
+
+    } else if (fh.getChangeType() == FileHeader.ChangeType.DELETE) {
+      p.setChangeType(Patch.ChangeType.DELETED);
+
+    } else if (fh.getChangeType() == FileHeader.ChangeType.RENAME) {
+      p.setChangeType(Patch.ChangeType.RENAMED);
+      p.setSourceFileName(fh.getOldName());
+
+    } else if (fh.getChangeType() == FileHeader.ChangeType.COPY) {
+      p.setChangeType(Patch.ChangeType.COPIED);
+      p.setSourceFileName(fh.getOldName());
+    }
+
+    // Convert the PatchType
+    //
+    if (fh instanceof CombinedFileHeader) {
+      p.setPatchType(Patch.PatchType.N_WAY);
+
+    } else if (fh.getPatchType() == FileHeader.PatchType.GIT_BINARY) {
+      p.setPatchType(Patch.PatchType.BINARY);
+
+    } else if (fh.getPatchType() == FileHeader.PatchType.BINARY) {
+      p.setPatchType(Patch.PatchType.BINARY);
+    }
+
+    // Hash the content.
+    //
+    final String contentStr = fh.getScriptText();
+    contentmd.reset();
+    contentmd.update(contentStr.getBytes("UTF-8"));
+    final PatchContent.Key contentKey =
+        new PatchContent.Key(ObjectId.fromRaw(contentmd.digest()).name());
+    content.put(contentKey, contentStr);
+    p.setContent(contentKey);
+  }
+
+  private void putPatchContent() throws OrmException {
+    OrmException contentPutError = null;
+    for (int attempts = 0; !content.isEmpty() && ++attempts < MAX_TRIES;) {
+      for (final PatchContent pc : db.patchContents().get(content.keySet())) {
+        content.remove(pc.getKey());
+      }
+
+      for (final Iterator<Map.Entry<PatchContent.Key, String>> i =
+          content.entrySet().iterator(); i.hasNext();) {
+        final Map.Entry<PatchContent.Key, String> e = i.next();
+        final PatchContent pc = new PatchContent(e.getKey(), e.getValue());
+        try {
+          db.patchContents().insert(Collections.singleton(pc));
+          i.remove();
+        } catch (OrmException err) {
+          contentPutError = err;
+        }
+      }
+
+      if (!content.isEmpty()) {
+        GitMetaUtil.randomSleep();
+      }
+    }
+    if (!content.isEmpty() && contentPutError != null) {
+      throw contentPutError;
+    }
+  }
+
+  private static RevId toRevId(final RevCommit src) {
+    return new RevId(src.getId().name());
+  }
+
+  private org.spearce.jgit.patch.Patch readGitPatch() throws IOException {
+    final List<String> args = new ArrayList<String>();
+    args.add("git");
+    args.add("--git-dir=.");
+    args.add("diff-tree");
+    args.add("-M");
+    args.add("--full-index");
+
+    switch (src.getParentCount()) {
+      case 0:
+        args.add("--unified=5");
+        args.add(new ObjectWriter(repo).writeTree(new Tree(repo)).name());
+        args.add(src.getTree().getId().name());
+        break;
+      case 1:
+        args.add("--unified=5");
+        args.add(src.getParent(0).getId().name());
+        args.add(src.getId().name());
+        break;
+      default:
+        args.add("--cc");
+        args.add(src.getId().name());
+        break;
+    }
+
+    final Process proc =
+        Runtime.getRuntime().exec(args.toArray(new String[args.size()]), null,
+            repo.getDirectory());
+    try {
+      final org.spearce.jgit.patch.Patch p = new org.spearce.jgit.patch.Patch();
+      proc.getOutputStream().close();
+      proc.getErrorStream().close();
+      p.parse(proc.getInputStream());
+      proc.getInputStream().close();
+      return p;
+    } finally {
+      try {
+        if (proc.waitFor() != 0) {
+          throw new IOException("git diff-tree exited abnormally");
+        }
+      } catch (InterruptedException ie) {
+      }
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/git/RepositoryCache.java b/appjar/src/main/java/com/google/gerrit/git/RepositoryCache.java
new file mode 100644
index 0000000..83b58ea
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/git/RepositoryCache.java
@@ -0,0 +1,87 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.git;
+
+import org.spearce.jgit.lib.Repository;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.ref.Reference;
+import java.lang.ref.SoftReference;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/** Cache of active Git repositories being used by the manager. */
+public class RepositoryCache {
+  private static final Pattern REPO_NAME =
+      Pattern.compile("^[A-Za-z][A-Za-z0-9/_-]+$");
+
+  private final File base;
+
+  private final Map<String, Reference<Repository>> cache;
+
+  /**
+   * Create a new cache to manage a specific base directory (and below).
+   * 
+   * @param basedir top level directory that contains all repositories.
+   */
+  public RepositoryCache(final File basedir) {
+    base = basedir;
+    cache = new HashMap<String, Reference<Repository>>();
+  }
+
+  /**
+   * @return the base directory which contains all known repositories.
+   */
+  public File getBaseDirectory() {
+    return base;
+  }
+
+  /**
+   * Get (or open) a repository by name.
+   * 
+   * @param name the repository name, relative to the base directory supplied
+   *        when the cache was created.
+   * @return the cached Repository instance.
+   * @throws InvalidRepositoryException the name does not denote an existing
+   *         repository, or the name cannot be read as a repository.
+   */
+  public synchronized Repository get(String name)
+      throws InvalidRepositoryException {
+    if (name.endsWith(".git")) {
+      name = name.substring(0, name.length() - 4);
+    }
+
+    if (!REPO_NAME.matcher(name).matches()) {
+      throw new InvalidRepositoryException(name);
+    }
+
+    final Reference<Repository> ref = cache.get(name);
+    Repository db = ref != null ? ref.get() : null;
+    if (db == null) {
+      try {
+        db = GitMetaUtil.open(new File(base, name));
+        if (db == null) {
+          throw new InvalidRepositoryException(name);
+        }
+      } catch (IOException err) {
+        throw new InvalidRepositoryException(name, err);
+      }
+      cache.put(name, new SoftReference<Repository>(db));
+    }
+    return db;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/pgm/CreateSchema.java b/appjar/src/main/java/com/google/gerrit/pgm/CreateSchema.java
new file mode 100644
index 0000000..ec44603
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/pgm/CreateSchema.java
@@ -0,0 +1,32 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.pgm;
+
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+/**
+ * Creates the Gerrit 2 database schema.
+ */
+public class CreateSchema {
+  public static void main(final String[] argv) throws OrmException,
+      XsrfException {
+    GerritServer.getInstance();
+    Common.getSchemaFactory().open().close();
+    System.out.println("Gerrit2 schema initialized");
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/pgm/ImportGerrit1.java b/appjar/src/main/java/com/google/gerrit/pgm/ImportGerrit1.java
new file mode 100644
index 0000000..e5dcb05
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/pgm/ImportGerrit1.java
@@ -0,0 +1,365 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.pgm;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.AccountGroupMember;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.reviewdb.SystemConfig;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.git.InvalidRepositoryException;
+import com.google.gerrit.git.PatchSetImporter;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.jdbc.JdbcSchema;
+
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.ProgressMonitor;
+import org.spearce.jgit.lib.Ref;
+import org.spearce.jgit.lib.RefUpdate;
+import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.lib.TextProgressMonitor;
+import org.spearce.jgit.revwalk.RevCommit;
+import org.spearce.jgit.revwalk.RevWalk;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Imports data from Gerrit 1 into Gerrit 2.
+ * <p>
+ * The tool assumes that <code>devutil/import_gerrit1.sql</code> has already
+ * been executed on this schema. All existing ProjectRight entities are wiped
+ * from the database and generated from scratch.
+ * <p>
+ * The tool requires Gerrit 1 tables (<code>gerrit1.$table_name</code>) through
+ * the same database connection as the ReviewDb schema is on.
+ */
+public class ImportGerrit1 {
+  private static GerritServer gs;
+  private static ReviewDb db;
+  private static Connection sql;
+  private static ApprovalCategory verifyCategory;
+  private static ApprovalCategory approveCategory;
+  private static ApprovalCategory submitCategory;
+
+  public static void main(final String[] argv) throws OrmException,
+      XsrfException, SQLException, IOException, InvalidRepositoryException {
+    final ProgressMonitor pm = new TextProgressMonitor();
+    gs = GerritServer.getInstance();
+    db = Common.getSchemaFactory().open();
+    sql = ((JdbcSchema) db).getConnection();
+    try {
+      verifyCategory = db.approvalCategories().byName("Verified");
+      approveCategory = db.approvalCategories().byName("Code Review");
+      submitCategory = db.approvalCategories().get(ApprovalCategory.SUBMIT);
+
+      final Statement query = sql.createStatement();
+      java.sql.ResultSet srcs;
+
+      // Convert the approval right data from projects.
+      //
+      pm.start(1);
+      pm.beginTask("Import project rights", ProgressMonitor.UNKNOWN);
+      query.executeUpdate("DELETE FROM project_rights");
+      insertApprovalWildCard();
+      insertAccessWildCard();
+      srcs =
+          query.executeQuery("SELECT p.project_id, r.ar_key"
+              + " FROM gerrit1.project_code_reviews r, projects p"
+              + " WHERE p.project_id = r.project_id");
+      while (srcs.next()) {
+        final Project.Id projectId = new Project.Id(srcs.getInt(1));
+        final String arKey = srcs.getString(2);
+        doImport(projectId, arKey);
+        pm.update(1);
+      }
+      srcs.close();
+      pm.endTask();
+
+      // Rebuild the cached PatchSet information directly from Git.
+      // There's some oddities in the Gerrit 1 data that we got from
+      // Google App Engine's data store; the quickest way to fix it
+      // is to just recache the data from Git.
+      //
+      srcs =
+          query.executeQuery("SELECT change_id,patch_set_id FROM patch_sets");
+      final ArrayList<PatchSet.Id> psToDo = new ArrayList<PatchSet.Id>();
+      while (srcs.next()) {
+        final Change.Id changeId = new Change.Id(srcs.getInt(1));
+        final PatchSet.Id psId = new PatchSet.Id(changeId, srcs.getInt(2));
+        psToDo.add(psId);
+      }
+      query.close();
+
+      final Map<String, Set<String>> validRefs =
+          new HashMap<String, Set<String>>();
+      pm.start(1);
+      pm.beginTask("Import patch sets", psToDo.size());
+      for (final PatchSet.Id psId : psToDo) {
+        final Change c = db.changes().get(psId.getParentKey());
+        final PatchSet ps = db.patchSets().get(psId);
+        final String projectName = c.getDest().getParentKey().get();
+        final Repository repo = gs.getRepositoryCache().get(projectName);
+        final RevWalk rw = new RevWalk(repo);
+        final RevCommit src =
+            rw.parseCommit(ObjectId.fromString(ps.getRevision().get()));
+        new PatchSetImporter(db, repo, src, ps, false).run();
+        Set<String> s = validRefs.get(projectName);
+        if (s == null) {
+          s = new HashSet<String>();
+          validRefs.put(projectName, s);
+        }
+        s.add(ps.getRefName());
+        pm.update(1);
+      }
+      pm.endTask();
+
+      pruneProjectRefs(pm, validRefs);
+    } finally {
+      db.close();
+    }
+  }
+
+  private static void pruneProjectRefs(final ProgressMonitor pm,
+      final Map<String, Set<String>> validRefs) throws OrmException,
+      IOException {
+    final List<Project> pToClean = db.projects().all().toList();
+    pm.start(1);
+    pm.beginTask("Prune old refs", pToClean.size());
+    for (final Project p : pToClean) {
+      final Repository repo;
+      try {
+        repo = gs.getRepositoryCache().get(p.getName());
+      } catch (InvalidRepositoryException e) {
+        pm.update(1);
+        continue;
+      }
+
+      Set<String> valid = validRefs.get(p.getName());
+      if (valid == null) {
+        valid = Collections.emptySet();
+      }
+
+      final RevWalk rw = new RevWalk(repo);
+      for (final Ref r : repo.getAllRefs().values()) {
+        boolean delete = false;
+        if (r.getName().startsWith("refs/merges/")) {
+          delete = true;
+        }
+        if (r.getName().startsWith("refs/changes/")
+            && !valid.contains(r.getName())) {
+          delete = true;
+        }
+        if (delete) {
+          final RefUpdate u = repo.updateRef(r.getName());
+          u.setForceUpdate(true);
+          u.delete(rw);
+        }
+      }
+      pm.update(1);
+    }
+    pm.endTask();
+  }
+
+  private static void insertApprovalWildCard() throws OrmException {
+    final ProjectRight.Key key =
+        new ProjectRight.Key(ProjectRight.WILD_PROJECT,
+            approveCategory.getId(), db.systemConfig().get(
+                new SystemConfig.Key()).registeredGroupId);
+    final ProjectRight pr = new ProjectRight(key);
+    pr.setMinValue((short) -1);
+    pr.setMaxValue((short) 1);
+    db.projectRights().insert(Collections.singleton(pr));
+  }
+
+  private static void insertAccessWildCard() throws OrmException {
+    final ProjectRight.Key key =
+        new ProjectRight.Key(ProjectRight.WILD_PROJECT, ApprovalCategory.READ,
+            db.systemConfig().get(new SystemConfig.Key()).anonymousGroupId);
+    final ProjectRight pr = new ProjectRight(key);
+    pr.setMinValue((short) 1);
+    pr.setMaxValue((short) 1);
+    db.projectRights().insert(Collections.singleton(pr));
+  }
+
+  private static void doImport(final Project.Id projectId, final String arKey)
+      throws OrmException, SQLException {
+    final int arId = findId(arKey);
+    if (arId < 0) {
+      return;
+    }
+
+    final Project proj = db.projects().get(projectId);
+    final Set<AccountGroup.Id> approverg = groups(arId, "approver");
+    final Set<AccountGroup.Id> verifierg = groups(arId, "verifier");
+    final Set<AccountGroup.Id> submitterg = groups(arId, "submitter");
+
+    final Set<Account.Id> approveru = users(arId, "approver");
+    final Set<Account.Id> verifieru = users(arId, "verifier");
+    final Set<Account.Id> submitteru = users(arId, "submitter");
+
+    importCat(proj, "approvers", approveCategory, approverg, approveru);
+    importCat(proj, "verifiers", verifyCategory, verifierg, verifieru);
+    importCat(proj, "submitters", submitCategory, submitterg, submitteru);
+  }
+
+  private static void importCat(final Project proj, final String type,
+      final ApprovalCategory category, final Set<AccountGroup.Id> groups,
+      final Set<Account.Id> users) throws OrmException {
+    final HashSet<Account.Id> needGroup = new HashSet<Account.Id>(users);
+    for (final AccountGroup.Id groupId : groups) {
+      insertRight(proj, category, groupId);
+      for (final Iterator<Account.Id> i = needGroup.iterator(); i.hasNext();) {
+        if (Common.getGroupCache().isInGroup(i.next(), groupId)) {
+          i.remove();
+        }
+      }
+    }
+
+    if (!needGroup.isEmpty()) {
+      final AccountGroup.Id groupId =
+          new AccountGroup.Id(db.nextAccountGroupId());
+      final AccountGroup group =
+          new AccountGroup(new AccountGroup.NameKey(shortName(proj) + "_"
+              + proj.getId().get() + "-" + type), groupId);
+      group.setOwnerGroupId(proj.getOwnerGroupId());
+      group.setDescription(proj.getName() + " " + type);
+      db.accountGroups().insert(Collections.singleton(group));
+      for (final Account.Id aId : needGroup) {
+        db.accountGroupMembers().insert(
+            Collections.singleton(new AccountGroupMember(
+                new AccountGroupMember.Key(aId, groupId))));
+      }
+      insertRight(proj, category, groupId);
+    }
+  }
+
+  private static void insertRight(final Project proj,
+      final ApprovalCategory category, final AccountGroup.Id groupId)
+      throws OrmException {
+    final ProjectRight.Key key =
+        new ProjectRight.Key(proj.getId(), category.getId(), groupId);
+    final ProjectRight pr = new ProjectRight(key);
+    if (category == approveCategory) {
+      pr.setMinValue((short) -2);
+      pr.setMaxValue((short) 2);
+    } else if (category == verifyCategory) {
+      pr.setMinValue((short) -1);
+      pr.setMaxValue((short) 1);
+    } else if (category == submitCategory) {
+      pr.setMinValue((short) 1);
+      pr.setMaxValue((short) 1);
+    } else {
+      throw new OrmException("Cannot import category " + category.getId());
+    }
+    db.projectRights().insert(Collections.singleton(pr));
+  }
+
+  private static String shortName(final Project proj) {
+    final String n = proj.getName();
+    final int s = n.lastIndexOf('/');
+    return 0 < s ? n.substring(s + 1) : n;
+  }
+
+  private static Set<AccountGroup.Id> groups(final int arId, final String type)
+      throws SQLException {
+    final PreparedStatement ps =
+        sql.prepareStatement("SELECT g.group_id FROM account_groups g,"
+            + " gerrit1.approval_right_groups s, gerrit1.account_groups o"
+            + " WHERE s.ar_id = ? AND s.type = ?"
+            + " AND o.gae_key = s.group_key AND (g.name = o.name"
+            + " OR (g.name = 'Administrators' AND o.name = 'admin'))");
+    try {
+      ps.setInt(1, arId);
+      ps.setString(2, type);
+      final java.sql.ResultSet rs = ps.executeQuery();
+      try {
+        final HashSet<AccountGroup.Id> r = new HashSet<AccountGroup.Id>();
+        while (rs.next()) {
+          r.add(new AccountGroup.Id(rs.getInt(1)));
+        }
+        return r;
+      } finally {
+        rs.close();
+      }
+    } finally {
+      ps.close();
+    }
+  }
+
+  private static Set<Account.Id> users(final int arId, final String type)
+      throws SQLException {
+    final PreparedStatement ps =
+        sql.prepareStatement("SELECT a.account_id FROM accounts a,"
+            + " gerrit1.approval_right_users s"
+            + " WHERE s.ar_id = ? AND s.type = ?"
+            + " AND a.preferred_email = s.email");
+    try {
+      ps.setInt(1, arId);
+      ps.setString(2, type);
+      final java.sql.ResultSet rs = ps.executeQuery();
+      try {
+        final HashSet<Account.Id> r = new HashSet<Account.Id>();
+        while (rs.next()) {
+          r.add(new Account.Id(rs.getInt(1)));
+        }
+        return r;
+      } finally {
+        rs.close();
+      }
+    } finally {
+      ps.close();
+    }
+  }
+
+  private static int findId(final String arKey) throws SQLException {
+    final PreparedStatement ps =
+        sql.prepareStatement("SELECT ar_id FROM gerrit1.approval_rights"
+            + " WHERE gae_key=?");
+    try {
+      ps.setString(1, arKey);
+      final java.sql.ResultSet rs = ps.executeQuery();
+      try {
+        if (rs.next()) {
+          return rs.getInt(1);
+        }
+        return -1;
+      } finally {
+        rs.close();
+      }
+    } finally {
+      ps.close();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/pgm/ReimportPatchSets.java b/appjar/src/main/java/com/google/gerrit/pgm/ReimportPatchSets.java
new file mode 100644
index 0000000..c4fa9c5
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/pgm/ReimportPatchSets.java
@@ -0,0 +1,118 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.pgm;
+
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.git.InvalidRepositoryException;
+import com.google.gerrit.git.PatchSetImporter;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.ProgressMonitor;
+import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.lib.TextProgressMonitor;
+import org.spearce.jgit.revwalk.RevCommit;
+import org.spearce.jgit.revwalk.RevWalk;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.sql.SQLException;
+import java.util.ArrayList;
+
+/**
+ * Recreates PatchSet and Patch entities for the changes supplied.
+ * <p>
+ * Takes on input strings of the form <code>change_id|patch_set_id</code> or
+ * <code>change_id,patch_set_id</code>, such as might be created by the
+ * following PostgreSQL database dump:
+ * 
+ * <pre>
+ *  psql reviewdb -tAc 'select change_id,patch_set_id from patch_sets'
+ * </pre>
+ * <p>
+ * For each supplied PatchSet the info and patch entities are completely updated
+ * based on the data stored in Git.
+ */
+public class ReimportPatchSets {
+  public static void main(final String[] argv) throws OrmException,
+      XsrfException, IOException {
+    final GerritServer gs = GerritServer.getInstance();
+    final ArrayList<PatchSet.Id> todo = new ArrayList<PatchSet.Id>();
+    final BufferedReader br =
+        new BufferedReader(new InputStreamReader(System.in));
+    String line;
+    while ((line = br.readLine()) != null) {
+      todo.add(PatchSet.Id.parse(line.replace('|', ',')));
+    }
+
+    final ReviewDb db = Common.getSchemaFactory().open();
+    final ProgressMonitor pm = new TextProgressMonitor();
+    try {
+      pm.start(1);
+      pm.beginTask("Import patch sets", todo.size());
+      for (int i = 0; i < todo.size(); i++) {
+        final PatchSet.Id psid = todo.get(i);
+        final PatchSet ps = db.patchSets().get(psid);
+        if (ps == null) {
+          System.err.println();
+          System.err.println("NotFound " + psid);
+          continue;
+        }
+
+        final Change c = db.changes().get(ps.getId().getParentKey());
+        if (c == null) {
+          System.err.println();
+          System.err.println("Orphan " + psid);
+          continue;
+        }
+
+        final String projectName = c.getDest().getParentKey().get();
+        final Repository repo;
+        try {
+          repo = gs.getRepositoryCache().get(projectName);
+        } catch (InvalidRepositoryException ie) {
+          System.err.println();
+          System.err.println("NoProject " + psid);
+          System.err.println("NoProject " + ie.getMessage());
+          continue;
+        }
+
+        final RevWalk rw = new RevWalk(repo);
+        final RevCommit src =
+            rw.parseCommit(ObjectId.fromString(ps.getRevision().get()));
+        new PatchSetImporter(db, repo, src, ps, false).run();
+        pm.update(1);
+      }
+    } catch (OrmException e) {
+      System.err.println();
+      e.printStackTrace();
+      if (e.getCause() instanceof SQLException) {
+        final SQLException e2 = (SQLException) e.getCause();
+        if (e2.getNextException() != null) {
+          e2.getNextException().printStackTrace();
+        }
+      }
+    } finally {
+      pm.endTask();
+      db.close();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/public/Gerrit.css b/appjar/src/main/java/com/google/gerrit/public/Gerrit.css
new file mode 100644
index 0000000..77af058
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/public/Gerrit.css
@@ -0,0 +1,625 @@
+.gerrit_body {
+  font-size: 11pt;
+  padding-left: 5px;
+  padding-right: 5px;
+  width: 98%;
+}
+
+#gerrit_topmenu {
+  font-size: 9pt;
+  padding-top: 5px;
+  padding-left: 5px;
+  padding-right: 5px;
+  height: 15px;
+}
+#gerrit_endtopmenu {
+  clear: both;
+  height: 5px;
+  border-bottom: 1px solid #B0BDCC;
+}
+
+
+/** Widgets **/
+.gerrit-Hyperlink {
+  text-decoration: underline;
+}
+
+.gerrit-AccountName {
+  white-space: nowrap;
+}
+
+.gerrit-visualtab {
+  color: red;
+  font-weight: bold;
+  font-size: 8pt;
+}
+
+.gerrit-InputFieldTypeHint {
+  color: grey;
+}
+
+.gerrit-SmallHeading {
+  margin-top: 5px;
+  font-weight: bold;
+}
+
+/** Menu **/
+.gerrit-LinkMenuBar .gwt-MenuItem {
+  font-size: 9pt;
+  color: #0000AA;
+  text-decoration: underline;
+  padding-left: 5px;
+  padding-right: 5px;
+  white-space: nowrap;
+  cursor: pointer;
+  cursor: hand;
+}
+.gerrit-LinkMenuBar .gwt-MenuItem-NormalItem {
+  border-right: 1px solid black;
+}
+.gerrit-LinkMenuBar .gwt-MenuItem-LastItem {
+}
+.gerrit-FillMenuCenter {
+  width: 100%;
+}
+.gwt-MenuItem .gwt-Hyperlink {
+  font-size: 9pt;
+  white-space: nowrap;
+}
+.gerrit-MenuBarUserName {
+  font-size: 9pt;
+  font-weight: bold;
+  padding-left: 5px;
+  padding-right: 5px;
+  white-space: nowrap;
+}
+
+/** RPC Status **/
+.gerrit-RpcStatusPanel {
+  position: absolute;
+  left: 50%;
+  float: left;
+  top: 6px;
+}
+
+.gerrit-RpcStatus {
+  padding-top: 4px;
+  padding-bottom: 4px;
+  padding-left: 10px;
+  padding-right: 10px;
+  text-align: center;
+  font-weight: bold;
+}
+
+.gerrit-RpcStatus-Loading {
+  background: #FFF1A8;
+}
+
+
+/** Error Dialog **/
+.gerrit-ErrorDialog {
+  margin: 10px 10px 10px 10px;
+}
+
+.gerrit-ErrorDialog-ErrorType {
+  font-weight: bold;
+  white-space: nowrap;
+  margin-bottom: 15px;
+}
+
+.gerrit-ErrorDialog-ErrorMessage {
+}
+
+.gerrit-ErrorDialog-Buttons {
+  width: 100%;
+  margin-top: 15px;
+  text-align: right;
+}
+
+
+/** Screen **/
+.gerrit-Screen {
+}
+
+.gerrit-Screen h1 {
+  white-space: nowrap;
+  font-size: 16pt;
+  margin: 3px 0 8px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+}
+
+
+/** ChangeTable **/
+.gerrit-ChangeTable {
+  width: 100%;
+  border-collapse: separate;
+  border-spacing: 0;
+}
+
+.gerrit-ChangeTable .IconCell {
+  width: 1px;
+  padding: 0px;
+  vertical-align: center;
+  border-bottom: 1px solid #d4e9a9;
+}
+
+.gerrit-ChangeTable .ChangeTypeCell {
+  width: 1px;
+  padding-left: 5px;
+  padding-right: 5px;
+  border-right: 1px solid #d4e9a9;
+  border-bottom: 1px solid #d4e9a9;
+}
+
+.gerrit-ChangeTable .CommentCell {
+  text-align: right;
+  font-weight: bold;
+  white-space: nowrap;
+}
+
+.gerrit-ChangeTable .FilePathCell {
+  white-space: nowrap;
+}
+
+.gerrit-ChangeTable .FilePathCell .SourceFilePath {
+  font-style: italic;
+  font-size: 9pt;
+}
+
+.gerrit-ChangeTable .DiffLinkCell {
+  white-space: nowrap;
+}
+
+.gerrit-ChangeTable .LeftMostCell {
+  border-left: 1px solid #d4e9a9;
+}
+
+.gerrit-ChangeTable .DataCell {
+  padding-left: 5px;
+  padding-right: 5px;
+  border-right: 1px solid #d4e9a9;
+  border-bottom: 1px solid #d4e9a9;
+}
+
+.gerrit-ChangeTable .ActiveRow {
+  background: #ffffcc;
+}
+
+.gerrit-ChangeTable .C_ID {
+  width: 3.5em;
+  text-align: right;
+}
+
+.gerrit-ChangeTable .C_SUBJECT {
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+}
+
+.gerrit-ChangeTable .C_LAST_UPDATE {
+  white-space: nowrap;
+}
+
+.gerrit-ChangeTable .IconHeader {
+  border-top: 1px solid white;
+  border-bottom: 1px solid white;
+  background-color: #d4e9a9;
+}
+
+.gerrit-ChangeTable .DataHeader {
+  border: 1px solid white;
+  padding: 2px 6px 1px;
+  background-color: #d4e9a9;
+  font-style: italic;
+  white-space: nowrap;
+}
+
+.gerrit-ChangeTable .SectionHeader {
+  border-top: 8px solid white;
+  padding: 2px 6px 1px;
+  background-color: #d4e9a9;
+  white-space: nowrap;
+  font-weight: bold;
+}
+
+.gerrit-ChangeTable .EmptySection {
+  border-left: 1px solid #d4e9a9;
+  border-right: 1px solid #d4e9a9;
+  border-bottom: 1px solid #d4e9a9;
+  font-style: italic;
+  padding-left: 25px;
+}
+
+
+/** PatchContentTable **/
+.gerrit-PatchContentTable {
+  width: 100%;
+  border-collapse: separate;
+  border-spacing: 0;
+}
+
+.gerrit-PatchContentTable .IconCell {
+  width: 1px;
+  padding: 0px;
+  vertical-align: center;
+}
+
+.gerrit-PatchContentTable .DiffText {
+  white-space: pre;
+  font-family: monospace;
+  font-size: small;
+}
+
+.gerrit-PatchContentTable .DiffText-FILE_HEADER {
+  color: grey;
+  font-weight: bold;
+}
+.gerrit-PatchContentTable .DiffText-HUNK_HEADER {
+  color: blue;
+}
+.gerrit-PatchContentTable .DiffText-PRE_IMAGE {
+  color: red;
+}
+.gerrit-PatchContentTable .DiffText-CONTEXT {
+  color: grey;
+}
+.gerrit-PatchContentTable .DiffText-POST_IMAGE {
+  color: #00a000;
+}
+
+.gerrit-PatchContentTable .Comment .header {
+  width: 35em;
+}
+.gerrit-PatchContentTable .gwt-DisclosurePanel .header td {
+  white-space: nowrap;
+}
+.gerrit-PatchContentTable .Comment .complexHeader {
+  white-space: nowrap;
+  width: 5em;
+}
+.gerrit-PatchContentTable .Comment .content {
+  border-top: 3px solid #e3e3e3;
+}
+.gerrit-PatchContentTable .CommentIsDraftFlag {
+  font-weight: bold;
+  margin-left: 0.5em;
+  margin-right: 0.5em;
+}
+
+.gerrit-PatchContentTable .FileColumnHeader {
+  background: #d4e9a9;
+  font-weight: bold;
+  text-align: center;
+}
+
+.gerrit-PatchContentTable .LineNumber {
+  font-family: monospace;
+  font-size: small;
+  width: 3.5em;
+  padding: 0px;
+  text-align: right;
+  border-right: thin solid #b0bdcc;
+  padding-left: 0.2em;
+  padding-right: 0.2em;
+}
+
+.gerrit-PatchContentTable .NoLineLineNumber {
+  font-family: monospace;
+  font-size: small;
+  width: 3.5em;
+  padding-left: 0.2em;
+  padding-right: 0.2em;
+}
+
+.gerrit-PatchContentTable .FileLine {
+  padding-left: 0.2em;
+  white-space: pre;
+  font-family: monospace;
+  font-size: small;
+  padding-right: 0.2em;
+}
+
+.gerrit-PatchContentTable .FileLineNone {
+  background: #eeeeee;
+}
+.gerrit-PatchContentTable .FileLine-DELETE {
+  background: #ffeeee;
+}
+.gerrit-PatchContentTable .FileLine-EQUAL {
+}
+.gerrit-PatchContentTable .FileLine-INSERT {
+  background: #ddffdd;
+}
+
+.gerrit-PatchContentTable .SkipLine {
+  text-align: center;
+  font-style: italic;
+  background: lightblue;
+}
+.gerrit-PatchContentTable .SkipLine div {
+  display: inline;
+}
+
+
+/** Change **/
+.gerrit-ChangeScreen .gwt-DisclosurePanel .header td {
+  font-weight: bold;
+  white-space: nowrap;
+}
+
+.gerrit-ChangeScreen .gwt-DisclosurePanel .complexHeader {
+  white-space: nowrap;
+}
+
+.gerrit-ChangeScreen .gwt-DisclosurePanel .complexHeader .gerrit-PatchSetLink {
+  padding-left: 20px;
+  font-size: 8pt;
+}
+
+.gerrit-ChangeScreen .gwt-DisclosurePanel .content {
+  margin-bottom: 10px;
+}
+
+.gerrit-ChangeScreen-Description {
+  white-space: pre;
+  font-family: monospace;
+  font-size: small;
+}
+
+.gerrit-ChangeScreen .gerrit-ChangeMessages .header {
+  width: 35em;
+}
+.gerrit-ChangeScreen .gerrit-ChangeMessages .complexHeader {
+  width: 5em;
+}
+.gerrit-ChangeScreen .gerrit-ChangeMessages .content {
+  border-top: 3px solid #e3e3e3;
+}
+
+.gerrit-ChangeMessage-Message {
+  white-space: pre;
+  font-size: small;
+}
+
+.gerrit-InfoTable {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+.gerrit-InfoTable td {
+  border-left: 1px solid #d4e9a9;
+  border-bottom: 1px solid #d4e9a9;
+  padding: 2px 6px 1px;
+}
+
+.gerrit-InfoTable td.header {
+  background-color: #d4e9a9;
+  border-left: 1px solid white;
+  font-weight: normal;
+  padding: 2px 4px 0 6px;
+  font-style: italic;
+  text-align: left;
+  vertical-align: top;
+  white-space: nowrap;
+}
+
+.gerrit-InfoTable td.leftmost  {
+}
+
+.gerrit-InfoTable td.rightmost  {
+  border-right: 1px solid #d4e9a9;
+}
+
+.gerrit-InfoTable td.approvalrole {
+  width: 5em;
+  border-left: none;
+  font-style: italic;
+  white-space: nowrap;
+}
+
+.gerrit-InfoTable td.approvalscore {
+  text-align: center;
+}
+.gerrit-InfoTable td.negscore {
+  color: red;
+}
+.gerrit-InfoTable td.posscore {
+  color: #08a400;
+}
+
+.gerrit-InfoTable td.approvalhint {
+  white-space: nowrap;
+  background-left: 1px none;
+  background-bottom: 1px none;
+  border: none;
+  color: #444444;
+}
+
+.gerrit-ChangeInfoBlock {
+}
+
+.gerrit-InfoBlock {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+.gerrit-InfoBlock td {
+  padding: 2px 4px 2px 6px;
+  border-right: 1px solid #d4e9a9;
+  border-bottom: 1px solid #d4e9a9;
+  text-align: left;
+  white-space: nowrap;
+}
+
+.gerrit-InfoBlock td.topmost {
+  border-top: 1px solid #d4e9a9;
+}
+
+.gerrit-InfoBlock td.header {
+  border-bottom: 1px solid white;
+  background-color: #d4e9a9;
+  font-style: italic;
+  text-align: right;
+}
+
+.gerrit-InfoBlock td.bottomheader {
+  border-bottom: 1px solid #d4e9a9;
+}
+
+.gerrit-InfoBlock td.closedstate {
+  font-weight: bold;
+}
+
+.gerrit-InfoBlock td.permalink {
+  border-right: 1px none;
+  border-bottom: 1px none;
+  text-align: right;
+}
+
+.gerrit-InfoBlock td.command {
+  white-space: pre;
+  font-family: monospace;
+  font-size: small;
+}
+
+.gerrit-InfoBlock td.useridentity {
+  white-space: nowrap;
+}
+
+.gerrit-PatchSetInfoBlock {
+  margin-bottom: 10px;
+}
+
+.gerrit-PatchSetActions {
+	margin-bottom: 10px;
+}
+
+.gerrit-Change-MissingApprovalList {
+	margin-top: 5px;
+}
+.gerrit-Change-MissingApproval {
+	margin-left: 10px;
+	font-weight: bold;
+	white-space: nowrap;
+}
+
+
+/** SideBySideScreen **/
+.gerrit-SideBySideScreen-SideBySideTable {
+  width: 100%;
+  border: 1px solid #B0BDCC;
+  display: table;
+}
+
+.gerrit-PatchLineComment {
+  font-size: small;
+}
+
+
+/** AccountSettings  **/
+.gerrit-SshKeyPanel-EncodedKey {
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  font-family: monospace;
+  font-size: small;
+}
+
+.gerrit-AccountInfoBlock {
+  margin-bottom: 10px;
+}
+
+.gerrit-AddSshKeyPanel {
+  margin-top: 10px;
+  background-color: #d4e9a9;
+  padding: 5px 5px 5px 5px;
+}
+
+.gerrit-WatchedProjectPanel {
+  margin-top: 10px;
+  padding: 5px 5px 5px 5px;
+  display: table;
+  border: 1px solid #b0bdcc;
+}
+
+.gerrit-ContributorAgreement-Button {
+	font-weight: bold;
+}
+
+.gerrit-ContributorAgreement-ShortDescription {
+	margin-left: 20px;
+	margin-right: 20px;
+	margin-bottom: 10px;
+  padding: 5px 5px 5px 5px;
+	border: 1px solid #b0bdcc;
+}
+
+.gerrit-ContributorAgreement-AlreadySubmitted {
+  margin-left: 20px;
+  margin-right: 20px;
+  padding: 5px 5px 5px 5px;
+  color: red;
+}
+
+.gerrit-ContributorAgreement-Legal {
+  margin-left: 20px;
+  margin-right: 20px;
+  padding: 5px 5px 5px 5px;
+  border: 1px solid #b0bdcc;
+}
+
+.gerrit-ProjectAdmin-ApprovalCategoryRangeLine {
+  white-space: nowrap;
+}
+.gerrit-ProjectAdmin-ApprovalCategoryValue {
+  font-family: monospace;
+  font-size: small;
+}
+
+
+/** Login.html **/
+.gerrit-OpenID-loginform {
+	margin-left: 10px;
+}
+
+.gerrit-OpenID-logobox {
+	width: 98%;
+	text-align: right;
+}
+
+.gerrit-OpenID-loginline {
+	margin-bottom: 10px;
+}
+
+.gerrit-OpenID-openid_identifier {
+  background: #ffffff url(openidlogin_bg1.cache.gif) no-repeat scroll 5px 50%;
+  padding-left: 25px;
+  border: 1px solid #999999;
+  margin-right: 5px;
+}
+
+.gerrit-OpenID-directlink {
+  vertical-align: center;
+  margin-right: 5px;
+  color: blue;
+}
+.gerrit-OpenID-directlink:hover {
+  text-decoration: underline;
+}
+.gerrit-OpenID-directlink img {
+	margin-right: 3px;
+  border: 0 none;
+}
+
+.gerrit-OpenID-errorline {
+	padding-top: 5px;
+	padding-bottom: 5px;
+}
+.gerrit-OpenID-errorline span {
+  padding-top: 4px;
+  padding-bottom: 4px;
+  padding-left: 10px;
+  padding-right: 10px;
+  background: #fff1a8;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/public/Gerrit.html b/appjar/src/main/java/com/google/gerrit/public/Gerrit.html
new file mode 100644
index 0000000..d4af374
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/public/Gerrit.html
@@ -0,0 +1,19 @@
+<html>
+  <head>
+    <title>Gerrit Code Review</title>
+    <script id="gerrit_gerritconfig"></script>
+    <script type="text/javascript" language="javascript" src="com.google.gerrit.Gerrit.nocache.js"></script>
+    <style type="text/css" id="gerrit_sitecss"></style>
+  </head>
+  <body>
+    <div id="gerrit_topmenu"></div>
+    <div id="gerrit_endtopmenu"></div>
+    <div id="gerrit_header"></div>
+    <noscript>
+      <p>Gerrit requires a JavaScript enabled browser.</p>
+    </noscript>
+    <div id="gerrit_body" class="gerrit_body"></div>
+    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
+    <div id="gerrit_footer"></div>
+  </body>
+</html>
diff --git a/appjar/src/main/java/com/google/gerrit/public/SetCookie.html b/appjar/src/main/java/com/google/gerrit/public/SetCookie.html
new file mode 100644
index 0000000..657c47a
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/public/SetCookie.html
@@ -0,0 +1,32 @@
+<html>
+  <head>
+    <style type="text/css">
+    #login_div {
+      width: 100%;
+      margin-left: auto;
+      margin-right: auto;
+    }
+    #submit {
+      font-weight: bold;
+    }
+    </style>
+  </head>
+  <body>
+    <div style="height: 50px"></div>
+    <p>Your browser requires one additional step to establish
+    your login session.</p>
+    <p>Click below to continue.</p>
+
+    <table width="100%" border="0">
+      <tr>
+        <td width="50%"></td>
+        <td>
+          <form id="set_form" action="/replace" method="POST">
+            <input id="submit" type="submit" value="Finish Sign-in"/>
+          </form>
+        </td>
+        <td width="50%"></td>
+      </tr>
+    </table>
+  </body>
+</html>
diff --git a/appjar/src/main/java/com/google/gerrit/public/openidlogin_bg1.cache.gif b/appjar/src/main/java/com/google/gerrit/public/openidlogin_bg1.cache.gif
new file mode 100644
index 0000000..cde836c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/public/openidlogin_bg1.cache.gif
Binary files differ
diff --git a/appjar/src/main/java/com/google/gerrit/server/AccountSecurityImpl.java b/appjar/src/main/java/com/google/gerrit/server/AccountSecurityImpl.java
new file mode 100644
index 0000000..d8f961b
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/AccountSecurityImpl.java
@@ -0,0 +1,151 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.account.AccountSecurity;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountAgreement;
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.reviewdb.AccountSshKey;
+import com.google.gerrit.client.reviewdb.ContactInformation;
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gerrit.server.ssh.SshUtil;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.VoidResult;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.spec.InvalidKeySpecException;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+public class AccountSecurityImpl extends BaseServiceImplementation implements
+    AccountSecurity {
+  public void mySshKeys(final AsyncCallback<List<AccountSshKey>> callback) {
+    run(callback, new Action<List<AccountSshKey>>() {
+      public List<AccountSshKey> run(ReviewDb db) throws OrmException {
+        return db.accountSshKeys().byAccount(Common.getAccountId()).toList();
+      }
+    });
+  }
+
+  public void addSshKey(final String keyText,
+      final AsyncCallback<AccountSshKey> callback) {
+    run(callback, new Action<AccountSshKey>() {
+      public AccountSshKey run(final ReviewDb db) throws OrmException {
+        int max = 0;
+        final Account.Id me = Common.getAccountId();
+        for (final AccountSshKey k : db.accountSshKeys().byAccount(me)) {
+          max = Math.max(max, k.getKey().get());
+        }
+
+        String keyStr = keyText;
+        if (keyStr.startsWith("---- BEGIN SSH2 PUBLIC KEY ----")) {
+          keyStr = SshUtil.toOpenSshPublicKey(keyStr);
+        }
+
+        final AccountSshKey newKey =
+            new AccountSshKey(new AccountSshKey.Id(me, max + 1), keyStr);
+        try {
+          SshUtil.parse(newKey);
+        } catch (NoSuchAlgorithmException e) {
+          newKey.setInvalid();
+        } catch (InvalidKeySpecException e) {
+          newKey.setInvalid();
+        } catch (NoSuchProviderException e) {
+          newKey.setInvalid();
+        }
+        db.accountSshKeys().insert(Collections.singleton(newKey));
+        SshUtil.invalidate(Common.getAccountCache().get(me, db));
+        return newKey;
+      }
+    });
+  }
+
+  public void deleteSshKeys(final Set<AccountSshKey.Id> ids,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        final Account.Id me = Common.getAccountId();
+        for (final AccountSshKey.Id keyId : ids) {
+          if (!me.equals(keyId.getParentKey()))
+            throw new Failure(new NoSuchEntityException());
+        }
+
+        final List<AccountSshKey> k = db.accountSshKeys().get(ids).toList();
+        if (!k.isEmpty()) {
+          final Transaction txn = db.beginTransaction();
+          db.accountSshKeys().delete(k, txn);
+          txn.commit();
+          SshUtil.invalidate(Common.getAccountCache().get(me, db));
+        }
+
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void myExternalIds(AsyncCallback<List<AccountExternalId>> callback) {
+    run(callback, new Action<List<AccountExternalId>>() {
+      public List<AccountExternalId> run(ReviewDb db) throws OrmException {
+        final Account.Id me = Common.getAccountId();
+        return db.accountExternalIds().byAccount(me).toList();
+      }
+    });
+  }
+
+  public void updateContact(final String fullName, final String emailAddr,
+      final ContactInformation info, final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(ReviewDb db) throws OrmException {
+        final Account me = db.accounts().get(Common.getAccountId());
+        me.setFullName(fullName);
+        me.setPreferredEmail(emailAddr);
+        me.setContactInformation(info);
+        db.accounts().update(Collections.singleton(me));
+        Common.getAccountCache().invalidate(me.getId());
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void enterAgreement(final ContributorAgreement.Id id,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        final ContributorAgreement cla = db.contributorAgreements().get(id);
+        if (cla == null || !cla.isActive()) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final AccountAgreement a =
+            new AccountAgreement(new AccountAgreement.Key(
+                Common.getAccountId(), id));
+        if (cla.isAutoVerify()) {
+          a.review(AccountAgreement.Status.VERIFIED, null);
+        }
+        db.accountAgreements().insert(Collections.singleton(a));
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/AccountSecuritySrv.java b/appjar/src/main/java/com/google/gerrit/server/AccountSecuritySrv.java
new file mode 100644
index 0000000..2691522
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/AccountSecuritySrv.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+
+/** Publishes {@link AccountSecurityImpl} over JSON. */
+public class AccountSecuritySrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new AccountSecurityImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/AccountServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/AccountServiceSrv.java
new file mode 100644
index 0000000..f750a76
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/AccountServiceSrv.java
@@ -0,0 +1,25 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.account.AccountServiceImpl;
+
+/** Publishes {@link AccountServiceImpl} over JSON. */
+public class AccountServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new AccountServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/CacheControlFilter.java b/appjar/src/main/java/com/google/gerrit/server/CacheControlFilter.java
new file mode 100644
index 0000000..055be93
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/CacheControlFilter.java
@@ -0,0 +1,87 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Forces GWT resources to cache for a very long time.
+ * <p>
+ * GWT compiled JavaScript and ImageBundles can be cached indefinitely by a
+ * browser and/or an edge proxy, as they never contain user-specific data and
+ * are named by a unique checksum. If their content is ever modified then the
+ * URL changes, so user agents would request a different resource. We force
+ * these resources to have very long expiration times.
+ */
+public class CacheControlFilter implements Filter {
+  public void init(final FilterConfig config) {
+  }
+
+  public void destroy() {
+  }
+
+  public void doFilter(final ServletRequest sreq, final ServletResponse srsp,
+      final FilterChain chain) throws IOException, ServletException {
+    final HttpServletRequest req = (HttpServletRequest) sreq;
+    final HttpServletResponse rsp = (HttpServletResponse) srsp;
+    final String pathInfo = pathInfo(req);
+
+    if (cacheForever(pathInfo)) {
+      rsp.setHeader("Cache-Control", "max-age=31536000,public");
+      rsp.setDateHeader("Expires", System.currentTimeMillis() + 31536000000L);
+    } else if (nocache(pathInfo)) {
+      rsp.setHeader("Expires", "Fri, 01 Jan 1980 00:00:00 GMT");
+      rsp.setHeader("Pragma", "no-cache");
+      rsp.setHeader("Cache-Control", "no-cache, must-revalidate");
+    }
+
+    chain.doFilter(req, rsp);
+  }
+
+  private static boolean cacheForever(final String pathInfo) {
+    if (pathInfo.endsWith(".cache.gif")) {
+      return true;
+    }
+    if (pathInfo.endsWith(".cache.html")) {
+      return true;
+    }
+    if (pathInfo.endsWith(".cache.png")) {
+      return true;
+    }
+    return false;
+  }
+
+  private static boolean nocache(final String pathInfo) {
+    if (pathInfo.endsWith(".nocache.js")) {
+      return true;
+    }
+    return false;
+  }
+
+  private static String pathInfo(final HttpServletRequest req) {
+    final String uri = req.getRequestURI();
+    final String ctx = req.getContextPath();
+    return uri.startsWith(ctx) ? uri.substring(ctx.length()) : uri;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ChangeDetailServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/ChangeDetailServiceSrv.java
new file mode 100644
index 0000000..b7680ef
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ChangeDetailServiceSrv.java
@@ -0,0 +1,25 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.changes.ChangeDetailServiceImpl;
+
+/** Publishes {@link ChangeDetailServiceImpl} over JSON. */
+public class ChangeDetailServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new ChangeDetailServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ChangeListServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/ChangeListServiceSrv.java
new file mode 100644
index 0000000..ff1cd0e0
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ChangeListServiceSrv.java
@@ -0,0 +1,25 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.changes.ChangeListServiceImpl;
+
+/** Publishes {@link ChangeListServiceImpl} over JSON. */
+public class ChangeListServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new ChangeListServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ChangeManageServiceImpl.java b/appjar/src/main/java/com/google/gerrit/server/ChangeManageServiceImpl.java
new file mode 100644
index 0000000..bd2e336
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ChangeManageServiceImpl.java
@@ -0,0 +1,139 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.changes.ChangeManageService;
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gerrit.client.workflow.FunctionState;
+import com.google.gerrit.git.MergeQueue;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.VoidResult;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class ChangeManageServiceImpl extends BaseServiceImplementation
+    implements ChangeManageService {
+
+  public void patchSetAction(final ApprovalCategoryValue.Id value,
+      final PatchSet.Id patchSetId, final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        final Change change = db.changes().get(patchSetId.getParentKey());
+        if (change == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        if (!patchSetId.equals(change.currentPatchSetId())) {
+          throw new Failure(new IllegalStateException("Patch set " + patchSetId
+              + " not current"));
+        }
+        if (change.getStatus().isClosed()) {
+          throw new Failure(new IllegalStateException("Change" + change.getId()
+              + " is closed"));
+        }
+
+        final List<ChangeApproval> allApprovals =
+            new ArrayList<ChangeApproval>(db.changeApprovals().byChange(
+                change.getId()).toList());
+
+        final Account.Id me = Common.getAccountId();
+        final ChangeApproval.Key ak =
+            new ChangeApproval.Key(change.getId(), me, value.getParentKey());
+        ChangeApproval myAction = null;
+        boolean isnew = true;
+        for (final ChangeApproval ca : allApprovals) {
+          if (ak.equals(ca.getKey())) {
+            isnew = false;
+            myAction = ca;
+            myAction.setValue(value.get());
+            myAction.setGranted();
+            break;
+          }
+        }
+        if (myAction == null) {
+          myAction = new ChangeApproval(ak, value.get());
+          allApprovals.add(myAction);
+        }
+
+        final ApprovalType actionType =
+            Common.getGerritConfig().getApprovalType(myAction.getCategoryId());
+        if (actionType == null || !actionType.getCategory().isAction()) {
+          throw new Failure(new IllegalArgumentException(actionType
+              .getCategory().getName()
+              + " not an action"));
+        }
+
+        final FunctionState fs = new FunctionState(change, allApprovals);
+        for (ApprovalType c : Common.getGerritConfig().getApprovalTypes()) {
+          c.getCategory().getFunction().run(c, fs);
+        }
+        if (!actionType.getCategory().getFunction().isValid(me, actionType, fs)) {
+          throw new Failure(new IllegalStateException(actionType.getCategory()
+              .getName()
+              + " not permitted"));
+        }
+        fs.normalize(actionType, myAction);
+        if (myAction.getValue() <= 0) {
+          throw new Failure(new IllegalStateException(actionType.getCategory()
+              .getName()
+              + " not permitted"));
+        }
+
+        if (ApprovalCategory.SUBMIT.equals(actionType.getCategory().getId())) {
+          if (change.getStatus() == Change.Status.NEW) {
+            change.setStatus(Change.Status.SUBMITTED);
+            change.updated();
+          }
+        } else {
+          throw new Failure(new IllegalArgumentException(actionType
+              .getCategory().getName()
+              + " cannot be perfomed by Gerrit"));
+        }
+
+        final Transaction txn = db.beginTransaction();
+        db.changes().update(Collections.singleton(change), txn);
+        if (change.getStatus().isClosed()) {
+          db.changeApprovals().update(fs.getDirtyChangeApprovals(), txn);
+        }
+        if (isnew) {
+          db.changeApprovals().insert(Collections.singleton(myAction), txn);
+        } else {
+          db.changeApprovals().update(Collections.singleton(myAction), txn);
+        }
+        txn.commit();
+
+        if (change.getStatus() == Change.Status.SUBMITTED) {
+          MergeQueue.merge(change.getDest());
+        }
+
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ChangeManageServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/ChangeManageServiceSrv.java
new file mode 100644
index 0000000..d76e0e7
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ChangeManageServiceSrv.java
@@ -0,0 +1,24 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+
+/** Publishes {@link ChangeManageServiceImpl} over JSON. */
+public class ChangeManageServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new ChangeManageServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/GerritCall.java b/appjar/src/main/java/com/google/gerrit/server/GerritCall.java
new file mode 100644
index 0000000..04c60a4
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/GerritCall.java
@@ -0,0 +1,209 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.Common.CurrentAccountImpl;
+import com.google.gwtjsonrpc.server.ActiveCall;
+import com.google.gwtjsonrpc.server.ValidToken;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import org.spearce.jgit.util.Base64;
+
+import java.text.MessageFormat;
+import java.util.Collections;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class GerritCall extends ActiveCall {
+  static {
+    Common.setCurrentAccountImpl(new CurrentAccountImpl() {
+      public Account.Id getAccountId() {
+        final GerritCall c = GerritJsonServlet.getCurrentCall();
+        return c != null ? c.getAccountId() : null;
+      }
+    });
+  }
+
+  private final GerritServer server;
+  private boolean accountRead;
+  private Account.Id accountId;
+
+  public GerritCall(final GerritServer gs, final HttpServletRequest i,
+      final HttpServletResponse o) {
+    super(i, o);
+    server = gs;
+  }
+
+  @Override
+  public void onFailure(final Throwable error) {
+    if (error instanceof OrmException) {
+      onInternalFailure(error);
+    } else {
+      super.onFailure(error);
+    }
+  }
+
+  @Override
+  public String getUser() {
+    initAccount();
+    return accountId != null ? accountId.toString() : null;
+  }
+
+  public Account.Id getAccountId() {
+    initAccount();
+    return accountId;
+  }
+
+  private void initAccount() {
+    if (accountRead) {
+      return;
+    }
+
+    accountRead = true;
+    ValidToken accountInfo;
+    accountInfo = getCookie(Gerrit.ACCOUNT_COOKIE, server.getAccountToken());
+
+    if (accountInfo == null) {
+      switch (Common.getGerritConfig().getLoginType()) {
+        case HTTP:
+          if (assumeHttp()) {
+            return;
+          }
+          break;
+      }
+
+      if (getCookie(Gerrit.ACCOUNT_COOKIE) != null) {
+        // The cookie is bogus, but it was sent. Send an expired cookie
+        // back to clear it out of the browser's cookie store.
+        //
+        removeCookie(Gerrit.ACCOUNT_COOKIE);
+      }
+      return;
+    }
+
+    try {
+      accountId = Account.Id.parse(accountInfo.getData());
+    } catch (RuntimeException e) {
+      // Whoa, did we change our cookie format or something? This should
+      // never happen on a valid acocunt token, but discard it anyway.
+      //
+      removeCookie(Gerrit.ACCOUNT_COOKIE);
+      accountInfo = null;
+      accountId = null;
+      return;
+    }
+
+    if (accountInfo.needsRefresh()) {
+      // The cookie is valid, but its getting stale. Update it with a
+      // newer date so it doesn't expire on an active user.
+      //
+      final String idstr = accountId.toString();
+      setCookie(Gerrit.ACCOUNT_COOKIE, idstr, server.getAccountToken());
+    }
+  }
+
+  private boolean assumeHttp() {
+    final String hdr = server.getLoginHttpHeader();
+    String user;
+    if (hdr != null && !"".equals(hdr)
+        && !"Authorization".equalsIgnoreCase(hdr)) {
+      user = getHttpServletRequest().getHeader(hdr);
+    } else {
+      user = getHttpServletRequest().getRemoteUser();
+      if (user == null) {
+        // If the container didn't do the authentication we might
+        // have done it in the front-end web server. Try to split
+        // the identity out of the Authorization header and honor it.
+        //
+        user = getHttpServletRequest().getHeader("Authorization");
+        if (user != null && user.startsWith("Basic ")) {
+          user = new String(Base64.decode(user.substring("Basic ".length())));
+          if (user.indexOf(':') >= 0) {
+            user = user.substring(0, user.indexOf(':'));
+          }
+        } else if (user != null && user.startsWith("Digest ")
+            && user.contains("username=\"")) {
+          user = user.substring(user.indexOf("username=\"") + 10);
+          user = user.substring(0, user.indexOf('"'));
+        } else {
+          user = null;
+        }
+      }
+    }
+    if (user == null) {
+      return false;
+    }
+
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        final String eid = "gerrit:" + user;
+        final List<AccountExternalId> matches =
+            db.accountExternalIds().byExternal(eid).toList();
+
+        if (matches.size() == 1) {
+          // Account exists, connect to it again.
+          //
+          final AccountExternalId e = matches.get(0);
+          e.setLastUsedOn();
+          db.accountExternalIds().update(Collections.singleton(e));
+
+          accountId = e.getAccountId();
+          setCookie(Gerrit.ACCOUNT_COOKIE, accountId.toString(), server
+              .getAccountToken());
+          return true;
+        }
+
+        if (matches.size() == 0) {
+          // No account, automatically initialize a new one.
+          //
+          final Transaction txn = db.beginTransaction();
+          final Account.Id nid = new Account.Id(db.nextAccountId());
+          final Account a = new Account(nid);
+          a.setFullName(user);
+          final String efmt = server.getEmailFormat();
+          if (efmt != null && efmt.contains("{0}")) {
+            a.setPreferredEmail(MessageFormat.format(efmt, user));
+          }
+
+          final AccountExternalId e =
+              new AccountExternalId(new AccountExternalId.Key(nid, eid));
+          e.setEmailAddress(a.getPreferredEmail());
+          e.setLastUsedOn();
+          db.accounts().insert(Collections.singleton(a), txn);
+          db.accountExternalIds().insert(Collections.singleton(e), txn);
+          txn.commit();
+
+          accountId = nid;
+          setCookie(Gerrit.ACCOUNT_COOKIE, accountId.toString(), server
+              .getAccountToken());
+          return true;
+        }
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+    }
+    return false;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/GerritJsonServlet.java b/appjar/src/main/java/com/google/gerrit/server/GerritJsonServlet.java
new file mode 100644
index 0000000..790bb52
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/GerritJsonServlet.java
@@ -0,0 +1,90 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.rpc.NotSignedInException;
+import com.google.gerrit.client.rpc.SignInRequired;
+import com.google.gerrit.git.MergeQueue;
+import com.google.gwtjsonrpc.server.JsonServlet;
+import com.google.gwtjsonrpc.server.SignedToken;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Base JSON servlet to ensure the current user is not forged.
+ */
+public abstract class GerritJsonServlet extends JsonServlet<GerritCall> {
+  @SuppressWarnings("unchecked")
+  public static final GerritCall getCurrentCall() {
+    return JsonServlet.<GerritCall> getCurrentCall();
+  }
+
+  private GerritServer server;
+
+  @Override
+  public void init(final ServletConfig config) throws ServletException {
+    super.init(config);
+
+    try {
+      server = GerritServer.getInstance();
+    } catch (OrmException e) {
+      throw new ServletException("Cannot configure GerritServer", e);
+    } catch (XsrfException e) {
+      throw new ServletException("Cannot configure GerritServer", e);
+    }
+  }
+
+  @Override
+  public void destroy() {
+    MergeQueue.terminate();
+    super.destroy();
+  }
+
+  @Override
+  protected SignedToken createXsrfSignedToken() throws XsrfException {
+    try {
+      return GerritServer.getInstance().getXsrfToken();
+    } catch (OrmException e) {
+      throw new XsrfException("Cannot configure GerritServer", e);
+    }
+  }
+
+  @Override
+  protected GerritCall createActiveCall(final HttpServletRequest req,
+      final HttpServletResponse resp) {
+    return new GerritCall(server, req, resp);
+  }
+
+  @Override
+  protected void preInvoke(final GerritCall call) {
+    super.preInvoke(call);
+    if (!call.isComplete()
+        && call.getMethod().getAnnotation(SignInRequired.class) != null
+        && call.getAccountId() == null) {
+      // If SignInRequired exists on the method and we don't have an
+      // account id in the request, we can't permit this call to finish.
+      //
+      call.onFailure(new NotSignedInException());
+    }
+  }
+
+  @Override
+  protected abstract Object createServiceHandle() throws Exception;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/GerritOpenIdUserManager.java b/appjar/src/main/java/com/google/gerrit/server/GerritOpenIdUserManager.java
new file mode 100644
index 0000000..03d8fb8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/GerritOpenIdUserManager.java
@@ -0,0 +1,45 @@
+// Copyright 2009 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.dyuproject.openid.OpenIdUser;
+import com.dyuproject.openid.OpenIdUserManager;
+import com.dyuproject.openid.RelyingParty;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class GerritOpenIdUserManager extends OpenIdUserManager {
+  public GerritOpenIdUserManager() {
+    setCookieName("gerrit_openid");
+    setSecretKey("gerrit_openid");
+    setMaxAge(120);
+    setEncrypted(true);
+  }
+
+  public void init(Properties properties) {
+  }
+
+  @Override
+  public OpenIdUser getUser(final HttpServletRequest request)
+      throws IOException {
+    if (request.getParameter(RelyingParty.DEFAULT_PARAMETER) != null) {
+      return null;
+    }
+    return super.getUser(request);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/GerritServer.java b/appjar/src/main/java/com/google/gerrit/server/GerritServer.java
new file mode 100644
index 0000000..44df7eb
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/GerritServer.java
@@ -0,0 +1,441 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.data.AccountCache;
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.data.GerritConfig;
+import com.google.gerrit.client.data.GitwebLink;
+import com.google.gerrit.client.data.GroupCache;
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.reviewdb.SystemConfig;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.workflow.NoOpFunction;
+import com.google.gerrit.client.workflow.SubmitFunction;
+import com.google.gerrit.git.RepositoryCache;
+import com.google.gwtjsonrpc.server.SignedToken;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+import com.google.gwtorm.jdbc.Database;
+import com.google.gwtorm.jdbc.SimpleDataSource;
+
+import org.apache.commons.codec.binary.Base64;
+import org.spearce.jgit.lib.PersonIdent;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/** Global server-side state for Gerrit. */
+public class GerritServer {
+  private static GerritServer impl;
+
+  /**
+   * Obtain the singleton server instance for this web application.
+   * 
+   * @return the server instance. Never null.
+   * @throws OrmException the database could not be configured. There is
+   *         something wrong with the schema configuration in {@link ReviewDb}
+   *         that must be addressed by a developer.
+   * @throws XsrfException the XSRF support could not be correctly configured to
+   *         protect the application against cross-site request forgery. The JVM
+   *         is most likely lacking critical security algorithms.
+   */
+  public static synchronized GerritServer getInstance() throws OrmException,
+      XsrfException {
+    if (impl == null) {
+      try {
+        impl = new GerritServer();
+      } catch (OrmException e) {
+        e.printStackTrace();
+        throw e;
+      }
+    }
+    return impl;
+  }
+
+  private final Database<ReviewDb> db;
+  private SystemConfig sConfig;
+  private PersonIdent gerritPersonIdentTemplate;
+  private final SignedToken xsrf;
+  private final SignedToken account;
+  private final RepositoryCache repositories;
+
+  private GerritServer() throws OrmException, XsrfException {
+    db = createDatabase();
+    loadSystemConfig();
+    if (sConfig == null) {
+      throw new OrmException("No " + SystemConfig.class.getName() + " found");
+    }
+
+    xsrf = new SignedToken(sConfig.maxSessionAge, sConfig.xsrfPrivateKey);
+
+    final int accountCookieAge;
+    switch (sConfig.getLoginType()) {
+      case HTTP:
+        accountCookieAge = -1; // expire when the browser closes
+        break;
+      case OPENID:
+      default:
+        accountCookieAge = sConfig.maxSessionAge;
+        break;
+    }
+    account = new SignedToken(accountCookieAge, sConfig.accountPrivateKey);
+
+    if (sConfig.gitBasePath != null) {
+      repositories = new RepositoryCache(new File(sConfig.gitBasePath));
+    } else {
+      repositories = null;
+    }
+
+    String email = sConfig.gerritGitEmail;
+    if (email == null || email.length() == 0) {
+      try {
+        email = "gerrit@" + InetAddress.getLocalHost().getCanonicalHostName();
+      } catch (UnknownHostException e) {
+        email = "gerrit@localhost";
+      }
+    }
+    gerritPersonIdentTemplate = new PersonIdent(sConfig.gerritGitName, email);
+
+    Common.setSchemaFactory(db);
+    Common.setProjectCache(new ProjectCache());
+    Common.setAccountCache(new AccountCache());
+    Common.setGroupCache(new GroupCache(sConfig));
+  }
+
+  private Database<ReviewDb> createDatabase() throws OrmException {
+    final String dsName = "java:comp/env/jdbc/ReviewDb";
+    final String pName = "GerritServer.properties";
+    DataSource ds;
+    try {
+      ds = (DataSource) new InitialContext().lookup(dsName);
+    } catch (NamingException namingErr) {
+      final Properties p = readGerritDataSource(pName);
+      if (p == null) {
+        throw new OrmException("No DataSource " + dsName + " and no " + pName
+            + " in CLASSPATH.  GerritServer requires either format.", namingErr);
+      }
+
+      try {
+        ds = new SimpleDataSource(p);
+      } catch (SQLException se) {
+        throw new OrmException("Database in " + pName + " unavailable", se);
+      }
+    }
+    return new Database<ReviewDb>(ds, ReviewDb.class);
+  }
+
+  private Properties readGerritDataSource(final String name)
+      throws OrmException {
+    final Properties srvprop = new Properties();
+    final InputStream in;
+
+    in = getClass().getClassLoader().getResourceAsStream(name);
+    if (in == null) {
+      return null;
+    }
+    try {
+      try {
+        srvprop.load(in);
+      } finally {
+        in.close();
+      }
+    } catch (IOException e) {
+      throw new OrmException("Cannot read " + name, e);
+    }
+
+    final Properties dbprop = new Properties();
+    for (final Map.Entry<Object, Object> e : srvprop.entrySet()) {
+      final String key = (String) e.getKey();
+      if (key.startsWith("database.")) {
+        dbprop.put(key.substring("database.".length()), e.getValue());
+      }
+    }
+    return dbprop;
+  }
+
+  private void initSystemConfig(final ReviewDb c) throws OrmException {
+    final AccountGroup admin =
+        new AccountGroup(new AccountGroup.NameKey("Administrators"),
+            new AccountGroup.Id(c.nextAccountGroupId()));
+    admin.setDescription("Gerrit Site Administrators");
+    c.accountGroups().insert(Collections.singleton(admin));
+
+    final AccountGroup anonymous =
+        new AccountGroup(new AccountGroup.NameKey("Anonymous Users"),
+            new AccountGroup.Id(c.nextAccountGroupId()));
+    anonymous.setDescription("Any user, signed-in or not");
+    anonymous.setOwnerGroupId(admin.getId());
+    c.accountGroups().insert(Collections.singleton(anonymous));
+
+    final AccountGroup registered =
+        new AccountGroup(new AccountGroup.NameKey("Registered Users"),
+            new AccountGroup.Id(c.nextAccountGroupId()));
+    registered.setDescription("Any signed-in user");
+    registered.setOwnerGroupId(admin.getId());
+    c.accountGroups().insert(Collections.singleton(registered));
+
+    final SystemConfig s = SystemConfig.create();
+    s.xsrfPrivateKey = SignedToken.generateRandomKey();
+    s.accountPrivateKey = SignedToken.generateRandomKey();
+    s.sshdPort = 29418;
+    s.adminGroupId = admin.getId();
+    s.anonymousGroupId = anonymous.getId();
+    s.registeredGroupId = registered.getId();
+    s.gerritGitName = "Gerrit Code Review";
+    s.setLoginType(SystemConfig.LoginType.OPENID);
+    c.systemConfig().insert(Collections.singleton(s));
+  }
+
+  private void initWildCardProject(final ReviewDb c) throws OrmException {
+    final Project proj;
+
+    proj =
+        new Project(new Project.NameKey("-- All Projects --"),
+            ProjectRight.WILD_PROJECT);
+    proj.setDescription("Rights inherited by all other projects");
+    proj.setOwnerGroupId(sConfig.adminGroupId);
+    proj.setUseContributorAgreements(false);
+    c.projects().insert(Collections.singleton(proj));
+  }
+
+  private void initVerifiedCategory(final ReviewDb c) throws OrmException {
+    final Transaction txn = c.beginTransaction();
+    final ApprovalCategory cat;
+    final ArrayList<ApprovalCategoryValue> vals;
+
+    cat = new ApprovalCategory(new ApprovalCategory.Id("VRIF"), "Verified");
+    cat.setPosition((short) 0);
+    vals = new ArrayList<ApprovalCategoryValue>();
+    vals.add(value(cat, 1, "Verified"));
+    vals.add(value(cat, 0, "No score"));
+    vals.add(value(cat, -1, "Fails"));
+    c.approvalCategories().insert(Collections.singleton(cat), txn);
+    c.approvalCategoryValues().insert(vals);
+    txn.commit();
+  }
+
+  private void initCodeReviewCategory(final ReviewDb c) throws OrmException {
+    final Transaction txn = c.beginTransaction();
+    final ApprovalCategory cat;
+    final ArrayList<ApprovalCategoryValue> vals;
+
+    cat = new ApprovalCategory(new ApprovalCategory.Id("CRVW"), "Code Review");
+    cat.setPosition((short) 1);
+    vals = new ArrayList<ApprovalCategoryValue>();
+    vals.add(value(cat, 2, "Looks good to me, approved"));
+    vals.add(value(cat, 1, "Looks good to me, but someone else must approve"));
+    vals.add(value(cat, 0, "No score"));
+    vals.add(value(cat, -1, "I would prefer that you didn't submit this"));
+    vals.add(value(cat, -2, "Do not submit"));
+    c.approvalCategories().insert(Collections.singleton(cat), txn);
+    c.approvalCategoryValues().insert(vals);
+    txn.commit();
+
+    final ProjectRight approve =
+        new ProjectRight(new ProjectRight.Key(ProjectRight.WILD_PROJECT, cat
+            .getId(), sConfig.registeredGroupId));
+    approve.setMaxValue((short) 1);
+    approve.setMinValue((short) -1);
+    c.projectRights().insert(Collections.singleton(approve));
+  }
+
+  private void initReadCategory(final ReviewDb c) throws OrmException {
+    final Transaction txn = c.beginTransaction();
+    final ApprovalCategory cat;
+    final ArrayList<ApprovalCategoryValue> vals;
+
+    cat = new ApprovalCategory(ApprovalCategory.READ, "Read Access");
+    cat.setPosition((short) -1);
+    cat.setFunctionName(NoOpFunction.NAME);
+    vals = new ArrayList<ApprovalCategoryValue>();
+    vals.add(value(cat, 1, "Read access"));
+    vals.add(value(cat, -1, "No access"));
+    c.approvalCategories().insert(Collections.singleton(cat), txn);
+    c.approvalCategoryValues().insert(vals);
+    txn.commit();
+    {
+      final ProjectRight read =
+          new ProjectRight(new ProjectRight.Key(ProjectRight.WILD_PROJECT, cat
+              .getId(), sConfig.anonymousGroupId));
+      read.setMaxValue((short) 1);
+      read.setMinValue((short) 0);
+      c.projectRights().insert(Collections.singleton(read));
+    }
+    {
+      final ProjectRight read =
+          new ProjectRight(new ProjectRight.Key(ProjectRight.WILD_PROJECT, cat
+              .getId(), sConfig.adminGroupId));
+      read.setMaxValue((short) 1);
+      read.setMinValue((short) 0);
+      c.projectRights().insert(Collections.singleton(read));
+    }
+  }
+
+  private void initSubmitCategory(final ReviewDb c) throws OrmException {
+    final Transaction txn = c.beginTransaction();
+    final ApprovalCategory cat;
+    final ArrayList<ApprovalCategoryValue> vals;
+
+    cat = new ApprovalCategory(ApprovalCategory.SUBMIT, "Submit");
+    cat.setPosition((short) -1);
+    cat.setFunctionName(SubmitFunction.NAME);
+    vals = new ArrayList<ApprovalCategoryValue>();
+    vals.add(value(cat, 1, "Submit"));
+    c.approvalCategories().insert(Collections.singleton(cat), txn);
+    c.approvalCategoryValues().insert(vals);
+    txn.commit();
+  }
+
+  private static ApprovalCategoryValue value(final ApprovalCategory cat,
+      final int value, final String name) {
+    return new ApprovalCategoryValue(new ApprovalCategoryValue.Id(cat.getId(),
+        (short) value), name);
+  }
+
+  private void loadSystemConfig() throws OrmException {
+    final ReviewDb c = db.open();
+    try {
+      try {
+        sConfig = c.systemConfig().get(new SystemConfig.Key());
+      } catch (OrmException e) {
+        // Assume the schema doesn't exist, and create it.
+        // TODO Implement schema upgrades and/or exporting to a script file.
+        //
+        sConfig = null;
+        c.createSchema();
+      }
+
+      if (sConfig == null) {
+        // Assume the schema is empty and populate it.
+        //
+        initSystemConfig(c);
+        sConfig = c.systemConfig().get(new SystemConfig.Key());
+        initWildCardProject(c);
+        initReadCategory(c);
+        initVerifiedCategory(c);
+        initCodeReviewCategory(c);
+        initSubmitCategory(c);
+      }
+
+      loadGerritConfig(c);
+    } finally {
+      c.close();
+    }
+  }
+
+  private void loadGerritConfig(final ReviewDb db) throws OrmException {
+    final GerritConfig r = new GerritConfig();
+    r.setCanonicalUrl(getCanonicalURL());
+    r.setSshdPort(sConfig.sshdPort);
+    r.setUseContributorAgreements(sConfig.useContributorAgreements);
+    r.setLoginType(sConfig.getLoginType());
+    if (sConfig.gitwebUrl != null) {
+      r.setGitwebLink(new GitwebLink(sConfig.gitwebUrl));
+    }
+
+    for (final ApprovalCategory c : db.approvalCategories().all()) {
+      r.add(new ApprovalType(c, db.approvalCategoryValues().byCategory(
+          c.getId()).toList()));
+    }
+
+    Common.setGerritConfig(r);
+  }
+
+  /** Time (in seconds) that user sessions stay "signed in". */
+  public int getSessionAge() {
+    return sConfig.maxSessionAge;
+  }
+
+  /** Get the signature support used to protect against XSRF attacks. */
+  public SignedToken getXsrfToken() {
+    return xsrf;
+  }
+
+  /** Get the signature support used to protect user identity cookies. */
+  public SignedToken getAccountToken() {
+    return account;
+  }
+
+  public String getLoginHttpHeader() {
+    return sConfig.loginHttpHeader;
+  }
+
+  public String getEmailFormat() {
+    return sConfig.emailFormat;
+  }
+
+  /** A binary string key to encrypt cookies related to account data. */
+  public String getAccountCookieKey() {
+    byte[] r = new byte[sConfig.accountPrivateKey.length()];
+    for (int k = r.length - 1; k >= 0; k--) {
+      r[k] = (byte) sConfig.accountPrivateKey.charAt(k);
+    }
+    r = Base64.decodeBase64(r);
+    final StringBuilder b = new StringBuilder();
+    for (int i = 0; i < r.length; i++) {
+      b.append((char) r[i]);
+    }
+    return b.toString();
+  }
+
+  /** Local filesystem location of header/footer/CSS configuration files. */
+  public File getSitePath() {
+    return sConfig.sitePath != null ? new File(sConfig.sitePath) : null;
+  }
+
+  /** Optional canonical URL for this application. */
+  public String getCanonicalURL() {
+    String u = sConfig.canonicalUrl;
+    if (u != null && !u.endsWith("/")) {
+      u += "/";
+    }
+    return u;
+  }
+
+  /** Get the repositories maintained by this server. */
+  public RepositoryCache getRepositoryCache() {
+    return repositories;
+  }
+
+  /** Get a new identity representing this Gerrit server in Git. */
+  public PersonIdent newGerritPersonIdent() {
+    return new PersonIdent(gerritPersonIdentTemplate);
+  }
+
+  public boolean isAllowGoogleAccountUpgrade() {
+    return sConfig.allowGoogleAccountUpgrade;
+  }
+
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/GoogleAccountDiscovery.java b/appjar/src/main/java/com/google/gerrit/server/GoogleAccountDiscovery.java
new file mode 100644
index 0000000..59be6c8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/GoogleAccountDiscovery.java
@@ -0,0 +1,54 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.openid.OpenIdUtil;
+
+import com.dyuproject.openid.Discovery;
+import com.dyuproject.openid.OpenIdContext;
+import com.dyuproject.openid.OpenIdUser;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/** Discovery support for Google Accounts and other standard OpenID providers */
+public class GoogleAccountDiscovery implements Discovery {
+  /** OpenID discovery end-point for Google Accounts */
+  public static final String GOOGLE_ACCOUNT = OpenIdUtil.URL_GOOGLE;
+
+  private final Discovery base;
+
+  public GoogleAccountDiscovery(final Discovery base) {
+    this.base = base;
+  }
+
+  public OpenIdUser discover(final String claimedId, final OpenIdContext context)
+      throws Exception {
+    if (GOOGLE_ACCOUNT.equals(claimedId)
+        || claimedId.startsWith(GOOGLE_ACCOUNT + "?")) {
+      // TODO We shouldn't hard-code the XRDS discovery result.
+      //
+      final Map<String, String> m = new HashMap<String, String>();
+      m.put("ci", claimedId);
+      m.put("os", "https://www.google.com/accounts/o8/ud");
+
+      final OpenIdUser u = new OpenIdUser();
+      u.fromJSON(m);
+      return u;
+    }
+
+    return base.discover(claimedId, context);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/GroupAdminServiceImpl.java b/appjar/src/main/java/com/google/gerrit/server/GroupAdminServiceImpl.java
new file mode 100644
index 0000000..982cde6
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/GroupAdminServiceImpl.java
@@ -0,0 +1,270 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.admin.AccountGroupDetail;
+import com.google.gerrit.client.admin.GroupAdminService;
+import com.google.gerrit.client.data.AccountInfoCacheFactory;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.AccountGroupMember;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.NameAlreadyUsedException;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.VoidResult;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class GroupAdminServiceImpl extends BaseServiceImplementation implements
+    GroupAdminService {
+  public void ownedGroups(final AsyncCallback<List<AccountGroup>> callback) {
+    run(callback, new Action<List<AccountGroup>>() {
+      public List<AccountGroup> run(ReviewDb db) throws OrmException {
+        final List<AccountGroup> result;
+        if (Common.getGroupCache().isAdministrator(Common.getAccountId())) {
+          result = db.accountGroups().all().toList();
+        } else {
+          result = myOwnedGroups(db);
+          Collections.sort(result, new Comparator<AccountGroup>() {
+            public int compare(final AccountGroup a, final AccountGroup b) {
+              return a.getName().compareTo(b.getName());
+            }
+          });
+        }
+        return result;
+      }
+    });
+  }
+
+  public void createGroup(final String newName,
+      final AsyncCallback<AccountGroup.Id> callback) {
+    run(callback, new Action<AccountGroup.Id>() {
+      public AccountGroup.Id run(final ReviewDb db) throws OrmException,
+          Failure {
+        final AccountGroup.NameKey nameKey = new AccountGroup.NameKey(newName);
+        if (db.accountGroups().get(nameKey) != null) {
+          throw new Failure(new NameAlreadyUsedException());
+        }
+
+        final AccountGroup group =
+            new AccountGroup(nameKey, new AccountGroup.Id(db
+                .nextAccountGroupId()));
+        group.setNameKey(nameKey);
+        group.setDescription("");
+
+        final AccountGroupMember m =
+            new AccountGroupMember(new AccountGroupMember.Key(Common
+                .getAccountId(), group.getId()));
+
+        final Transaction txn = db.beginTransaction();
+        db.accountGroups().insert(Collections.singleton(group), txn);
+        db.accountGroupMembers().insert(Collections.singleton(m), txn);
+        txn.commit();
+        Common.getGroupCache().notifyGroupAdd(m);
+
+        return group.getId();
+      }
+    });
+  }
+
+  public void groupDetail(final AccountGroup.Id groupId,
+      final AsyncCallback<AccountGroupDetail> callback) {
+    run(callback, new Action<AccountGroupDetail>() {
+      public AccountGroupDetail run(ReviewDb db) throws OrmException, Failure {
+        assertAmGroupOwner(db, groupId);
+        final AccountGroup group = db.accountGroups().get(groupId);
+        if (group == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final AccountGroupDetail d = new AccountGroupDetail();
+        final boolean auto = Common.getGroupCache().isAutoGroup(group.getId());
+        d.load(db, new AccountInfoCacheFactory(db), group, auto);
+        return d;
+      }
+    });
+  }
+
+  public void changeGroupDescription(final AccountGroup.Id groupId,
+      final String description, final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        assertAmGroupOwner(db, groupId);
+        final AccountGroup group = db.accountGroups().get(groupId);
+        if (group == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+        group.setDescription(description);
+        db.accountGroups().update(Collections.singleton(group));
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void changeGroupOwner(final AccountGroup.Id groupId,
+      final String newOwnerName, final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        assertAmGroupOwner(db, groupId);
+        final AccountGroup group = db.accountGroups().get(groupId);
+        if (group == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final AccountGroup owner =
+            db.accountGroups().get(new AccountGroup.NameKey(newOwnerName));
+        if (owner == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        group.setOwnerGroupId(owner.getId());
+        db.accountGroups().update(Collections.singleton(group));
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void renameGroup(final AccountGroup.Id groupId, final String newName,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        assertAmGroupOwner(db, groupId);
+        final AccountGroup group = db.accountGroups().get(groupId);
+        if (group == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final AccountGroup.NameKey nameKey = new AccountGroup.NameKey(newName);
+        if (!nameKey.equals(group.getNameKey())) {
+          if (db.accountGroups().get(nameKey) != null) {
+            throw new Failure(new NameAlreadyUsedException());
+          }
+          group.setNameKey(nameKey);
+          db.accountGroups().update(Collections.singleton(group));
+        }
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void addGroupMember(final AccountGroup.Id groupId,
+      final String nameOrEmail, final AsyncCallback<AccountGroupDetail> callback) {
+    run(callback, new Action<AccountGroupDetail>() {
+      public AccountGroupDetail run(ReviewDb db) throws OrmException, Failure {
+        assertAmGroupOwner(db, groupId);
+        if (Common.getGroupCache().isAutoGroup(groupId)) {
+          throw new Failure(new NameAlreadyUsedException());
+        }
+        final Account a = findAccount(db, nameOrEmail);
+        final AccountGroupMember.Key key =
+            new AccountGroupMember.Key(a.getId(), groupId);
+        if (db.accountGroupMembers().get(key) != null) {
+          return new AccountGroupDetail();
+        }
+
+        final AccountGroupMember m = new AccountGroupMember(key);
+        db.accountGroupMembers().insert(Collections.singleton(m));
+        Common.getGroupCache().notifyGroupAdd(m);
+
+        final AccountGroupDetail d = new AccountGroupDetail();
+        d.loadOneMember(db, a, m);
+        return d;
+      }
+    });
+  }
+
+  public void deleteGroupMembers(final Set<AccountGroupMember.Key> keys,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        final Set<AccountGroup.Id> owned = ids(myOwnedGroups(db));
+        Boolean amAdmin = null;
+        for (final AccountGroupMember.Key k : keys) {
+          if (!owned.contains(k.getAccountGroupId())) {
+            if (amAdmin == null) {
+              amAdmin =
+                  Common.getGroupCache().isAdministrator(Common.getAccountId());
+            }
+            if (!amAdmin) {
+              throw new Failure(new NoSuchEntityException());
+            }
+          }
+        }
+        for (final AccountGroupMember.Key k : keys) {
+          final AccountGroupMember m = db.accountGroupMembers().get(k);
+          if (m != null) {
+            db.accountGroupMembers().delete(Collections.singleton(m));
+            Common.getGroupCache().notifyGroupDelete(m);
+          }
+        }
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  private void assertAmGroupOwner(final ReviewDb db,
+      final AccountGroup.Id groupId) throws OrmException, Failure {
+    final AccountGroup group = db.accountGroups().get(groupId);
+    if (group == null) {
+      throw new Failure(new NoSuchEntityException());
+    }
+    final Account.Id me = Common.getAccountId();
+    if (!Common.getGroupCache().isInGroup(me, group.getOwnerGroupId())
+        && !Common.getGroupCache().isAdministrator(me)) {
+      throw new Failure(new NoSuchEntityException());
+    }
+  }
+
+  private static Set<AccountGroup.Id> ids(
+      final Collection<AccountGroup> groupList) {
+    final HashSet<AccountGroup.Id> r = new HashSet<AccountGroup.Id>();
+    for (final AccountGroup group : groupList) {
+      r.add(group.getId());
+    }
+    return r;
+  }
+
+  private List<AccountGroup> myOwnedGroups(final ReviewDb db)
+      throws OrmException {
+    final Account.Id me = Common.getAccountId();
+    final List<AccountGroup> own = new ArrayList<AccountGroup>();
+    for (final AccountGroup.Id groupId : Common.getGroupCache().getGroups(me)) {
+      for (final AccountGroup g : db.accountGroups().ownedByGroup(groupId)) {
+        own.add(g);
+      }
+    }
+    return own;
+  }
+
+  private static Account findAccount(final ReviewDb db, final String nameOrEmail)
+      throws OrmException, Failure {
+    final Account r = Account.find(db, nameOrEmail);
+    if (r == null) {
+      throw new Failure(new NoSuchEntityException());
+    }
+    return r;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/GroupAdminServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/GroupAdminServiceSrv.java
new file mode 100644
index 0000000..36edbc9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/GroupAdminServiceSrv.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+
+/** Publishes {@link GroupAdminServiceImpl} over JSON. */
+public class GroupAdminServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new GroupAdminServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/HostPageServlet.java b/appjar/src/main/java/com/google/gerrit/server/HostPageServlet.java
new file mode 100644
index 0000000..b03bfef
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/HostPageServlet.java
@@ -0,0 +1,187 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwt.user.server.rpc.RPCServletUtils;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/** Sends the Gerrit host page to clients. */
+public class HostPageServlet extends HttpServlet {
+  static final long MAX_AGE = 5 * 60 * 1000L/* milliseconds */;
+  static final String CACHE_CTRL = "public, max-age=" + (MAX_AGE / 1000L);
+
+  private String canonicalUrl;
+  private byte[] hostPageRaw;
+  private byte[] hostPageCompressed;
+  private long lastModified;
+
+  @Override
+  public void init(final ServletConfig config) throws ServletException {
+    super.init(config);
+
+    final GerritServer srv;
+    try {
+      srv = GerritServer.getInstance();
+    } catch (OrmException e) {
+      throw new ServletException("Cannot load GerritServer", e);
+    } catch (XsrfException e) {
+      throw new ServletException("Cannot load GerritServer", e);
+    }
+
+    final File sitePath = srv.getSitePath();
+    canonicalUrl = srv.getCanonicalURL();
+
+    final String hostPageName = "com/google/gerrit/public/Gerrit.html";
+    final Document hostDoc = HtmlDomUtil.parseFile(hostPageName);
+    if (hostDoc == null) {
+      throw new ServletException("No " + hostPageName + " in CLASSPATH");
+    }
+    injectJson(hostDoc, "gerrit_gerritconfig", Common.getGerritConfig());
+    injectCssFile(hostDoc, "gerrit_sitecss", sitePath, "GerritSite.css");
+    injectXmlFile(hostDoc, "gerrit_header", sitePath, "GerritSiteHeader.html");
+    injectXmlFile(hostDoc, "gerrit_footer", sitePath, "GerritSiteFooter.html");
+    try {
+      hostPageRaw = HtmlDomUtil.toUTF8(hostDoc);
+      hostPageCompressed = HtmlDomUtil.compress(hostPageRaw);
+    } catch (IOException e) {
+      throw new ServletException(e.getMessage(), e);
+    }
+    lastModified = System.currentTimeMillis();
+  }
+
+  private void injectXmlFile(final Document hostDoc, final String id,
+      final File sitePath, final String fileName) throws ServletException {
+    final Element banner = HtmlDomUtil.find(hostDoc, id);
+    if (banner == null) {
+      return;
+    }
+
+    while (banner.getFirstChild() != null) {
+      banner.removeChild(banner.getFirstChild());
+    }
+
+    final Document html = HtmlDomUtil.parseFile(sitePath, fileName);
+    if (html == null) {
+      banner.getParentNode().removeChild(banner);
+      return;
+    }
+
+    final Element content = html.getDocumentElement();
+    banner.appendChild(hostDoc.importNode(content, true));
+  }
+
+  private void injectCssFile(final Document hostDoc, final String id,
+      final File sitePath, final String fileName) throws ServletException {
+    final Element banner = HtmlDomUtil.find(hostDoc, id);
+    if (banner == null) {
+      return;
+    }
+
+    while (banner.getFirstChild() != null) {
+      banner.removeChild(banner.getFirstChild());
+    }
+
+    final String css = HtmlDomUtil.readFile(sitePath, fileName);
+    if (css == null) {
+      banner.getParentNode().removeChild(banner);
+      return;
+    }
+
+    banner.removeAttribute("id");
+    banner.appendChild(hostDoc.createCDATASection("\n" + css + "\n"));
+  }
+
+  private void injectJson(final Document hostDoc, final String id,
+      final Object obj) {
+    final Element scriptNode = HtmlDomUtil.find(hostDoc, id);
+    if (scriptNode == null) {
+      return;
+    }
+
+    while (scriptNode.getFirstChild() != null) {
+      scriptNode.removeChild(scriptNode.getFirstChild());
+    }
+
+    if (obj == null) {
+      scriptNode.getParentNode().removeChild(scriptNode);
+      return;
+    }
+
+    final StringWriter w = new StringWriter();
+    w.write("<!--\n");
+    w.write("var ");
+    w.write(id);
+    w.write("_obj=");
+    GerritJsonServlet.defaultGsonBuilder().create().toJson(obj, w);
+    w.write(";\n// -->\n");
+    scriptNode.removeAttribute("id");
+    scriptNode.setAttribute("type", "text/javascript");
+    scriptNode.setAttribute("language", "javascript");
+    scriptNode.appendChild(hostDoc.createCDATASection(w.toString()));
+  }
+
+  @Override
+  protected long getLastModified(final HttpServletRequest req) {
+    return lastModified;
+  }
+
+  @Override
+  protected void doGet(final HttpServletRequest req,
+      final HttpServletResponse rsp) throws IOException {
+    if (canonicalUrl != null
+        && !canonicalUrl.equals(OpenIdLoginServlet.serverUrl(req))) {
+      rsp.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
+      rsp.setHeader("Location", canonicalUrl + "Gerrit");
+      return;
+    }
+
+    final byte[] tosend;
+    if (RPCServletUtils.acceptsGzipEncoding(req)) {
+      rsp.setHeader("Content-Encoding", "gzip");
+      tosend = hostPageCompressed;
+    } else {
+      tosend = hostPageRaw;
+    }
+
+    rsp.setHeader("Cache-Control", CACHE_CTRL);
+    rsp.setDateHeader("Expires", System.currentTimeMillis() + MAX_AGE);
+    rsp.setDateHeader("Last-Modified", lastModified);
+    rsp.setContentType("text/html");
+    rsp.setCharacterEncoding(HtmlDomUtil.ENC);
+    rsp.setContentLength(tosend.length);
+    final OutputStream out = rsp.getOutputStream();
+    try {
+      out.write(tosend);
+    } finally {
+      out.close();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/HtmlDomUtil.java b/appjar/src/main/java/com/google/gerrit/server/HtmlDomUtil.java
new file mode 100644
index 0000000..e70a041
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/HtmlDomUtil.java
@@ -0,0 +1,226 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.util.zip.GZIPOutputStream;
+
+import javax.servlet.ServletException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+/** Utility functions to deal with HTML using W3C DOM operations. */
+public class HtmlDomUtil {
+  /** Standard character encoding we prefer (UTF-8). */
+  public static final String ENC = "UTF-8";
+
+  /** DOCTYPE for a standards mode HTML document. */
+  public static final String HTML_STRICT =
+      "-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd";
+
+  /** Convert a document to a UTF-8 byte sequence. */
+  public static byte[] toUTF8(final Document hostDoc) throws IOException {
+    return toString(hostDoc).getBytes(ENC);
+  }
+
+  /** Compress the document. */
+  public static byte[] compress(final byte[] raw) throws IOException {
+    final ByteArrayOutputStream out = new ByteArrayOutputStream();
+    final GZIPOutputStream gz = new GZIPOutputStream(out);
+    gz.write(raw);
+    gz.finish();
+    gz.flush();
+    return out.toByteArray();
+  }
+
+  /** Convert a document to a String, assuming later encoding to UTF-8. */
+  public static String toString(final Document hostDoc) throws IOException {
+    try {
+      final StringWriter out = new StringWriter();
+      final DOMSource domSource = new DOMSource(hostDoc);
+      final StreamResult streamResult = new StreamResult(out);
+      final TransformerFactory tf = TransformerFactory.newInstance();
+      final Transformer serializer = tf.newTransformer();
+      serializer.setOutputProperty(OutputKeys.ENCODING, ENC);
+      serializer.setOutputProperty(OutputKeys.METHOD, "html");
+      serializer.setOutputProperty(OutputKeys.INDENT, "no");
+      serializer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,
+          HtmlDomUtil.HTML_STRICT);
+      serializer.transform(domSource, streamResult);
+      return out.toString();
+    } catch (TransformerConfigurationException e) {
+      final IOException r = new IOException("Error transforming page");
+      r.initCause(e);
+      throw r;
+    } catch (TransformerException e) {
+      final IOException r = new IOException("Error transforming page");
+      r.initCause(e);
+      throw r;
+    }
+  }
+
+  /** Find an element by its "id" attribute; null if no element is found. */
+  public static Element find(final Node parent, final String name) {
+    final NodeList list = parent.getChildNodes();
+    for (int i = 0; i < list.getLength(); i++) {
+      final Node n = list.item(i);
+      if (n instanceof Element) {
+        final Element e = (Element) n;
+        if (name.equals(e.getAttribute("id"))) {
+          return e;
+        }
+      }
+      final Element r = find(n, name);
+      if (r != null) {
+        return r;
+      }
+    }
+    return null;
+  }
+
+  /** Append an HTML &lt;input type="hidden"&gt; to the form. */
+  public static void addHidden(final Element form, final String name,
+      final String value) {
+    final Element in = form.getOwnerDocument().createElement("input");
+    in.setAttribute("type", "hidden");
+    in.setAttribute("name", name);
+    in.setAttribute("value", value);
+    form.appendChild(in);
+  }
+
+  /** Clone a document so it can be safely modified on a per-request basis. */
+  public static Document clone(final Document doc) throws IOException {
+    final Document d;
+    try {
+      d = newBuilder().newDocument();
+    } catch (ParserConfigurationException e) {
+      throw new IOException("Cannot clone document");
+    }
+    final Node n = d.importNode(doc.getDocumentElement(), true);
+    d.appendChild(n);
+    return d;
+  }
+
+  /** Parse an XHTML file from our CLASSPATH and return the instance. */
+  public static Document parseFile(final String name) throws ServletException {
+    final InputStream in;
+
+    in = HtmlDomUtil.class.getClassLoader().getResourceAsStream(name);
+    if (in == null) {
+      return null;
+    }
+    try {
+      try {
+        try {
+          return newBuilder().parse(in);
+        } catch (SAXException e) {
+          throw new ServletException("Error reading " + name, e);
+        } catch (ParserConfigurationException e) {
+          throw new ServletException("Error reading " + name, e);
+        }
+      } finally {
+        in.close();
+      }
+    } catch (IOException e) {
+      throw new ServletException("Error reading " + name, e);
+    }
+  }
+
+  /** Parse an XHTML file from the local drive and return the instance. */
+  public static Document parseFile(final File parentDir, final String name)
+      throws ServletException {
+    if (parentDir == null) {
+      return null;
+    }
+    final File path = new File(parentDir, name);
+    try {
+      final InputStream in = new FileInputStream(path);
+      try {
+        try {
+          return newBuilder().parse(in);
+        } catch (SAXException e) {
+          throw new ServletException("Error reading " + path, e);
+        } catch (ParserConfigurationException e) {
+          throw new ServletException("Error reading " + path, e);
+        }
+      } finally {
+        in.close();
+      }
+    } catch (FileNotFoundException e) {
+      return null;
+    } catch (IOException e) {
+      throw new ServletException("Error reading " + path, e);
+    }
+  }
+
+  /** Read a UTF-8 text file from the local drive. */
+  public static String readFile(final File parentDir, final String name)
+      throws ServletException {
+    if (parentDir == null) {
+      return null;
+    }
+    final File path = new File(parentDir, name);
+    try {
+      final InputStream in = new FileInputStream(path);
+      try {
+        final StringBuilder w = new StringBuilder();
+        final InputStreamReader r = new InputStreamReader(in, ENC);
+        final char[] buf = new char[512];
+        int n;
+        while ((n = r.read(buf)) > 0) {
+          w.append(buf, 0, n);
+        }
+        return w.toString();
+      } finally {
+        in.close();
+      }
+    } catch (FileNotFoundException e) {
+      return null;
+    } catch (IOException e) {
+      throw new ServletException("Error reading " + path, e);
+    }
+  }
+
+  private static DocumentBuilder newBuilder()
+      throws ParserConfigurationException {
+    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+    factory.setValidating(false);
+    factory.setExpandEntityReferences(false);
+    factory.setIgnoringComments(true);
+    final DocumentBuilder parser = factory.newDocumentBuilder();
+    return parser;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/OpenIdLoginServlet.java b/appjar/src/main/java/com/google/gerrit/server/OpenIdLoginServlet.java
new file mode 100644
index 0000000..a222c65
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/OpenIdLoginServlet.java
@@ -0,0 +1,662 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.SignInDialog;
+import com.google.gerrit.client.SignInDialog.Mode;
+import com.google.gerrit.client.account.SignInResult;
+import com.google.gerrit.client.openid.DiscoveryResult;
+import com.google.gerrit.client.openid.OpenIdUtil;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.reviewdb.AccountExternalIdAccess;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwt.user.server.rpc.RPCServletUtils;
+import com.google.gwtjsonrpc.server.JsonServlet;
+import com.google.gwtjsonrpc.server.ValidToken;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import com.dyuproject.openid.Constants;
+import com.dyuproject.openid.DefaultDiscovery;
+import com.dyuproject.openid.DiffieHellmanAssociation;
+import com.dyuproject.openid.OpenIdContext;
+import com.dyuproject.openid.OpenIdUser;
+import com.dyuproject.openid.RelyingParty;
+import com.dyuproject.openid.SimpleHttpConnector;
+
+import org.mortbay.util.UrlEncoded;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.zip.GZIPOutputStream;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/** Handles the <code>/login</code> URL for web based single-sign-on. */
+public class OpenIdLoginServlet extends HttpServlet {
+  private static final int LASTID_AGE = 365 * 24 * 60 * 60; // seconds
+  private static final String AX_SCHEMA = "http://openid.net/srv/ax/1.0";
+  private static final String OMODE_CANCEL = "cancel";
+  private static final String GMODE_CHKCOOKIE = "gerrit.chkcookie";
+  private static final String GMODE_SETCOOKIE = "gerrit.setcookie";
+
+  private RelyingParty relyingParty;
+  private GerritServer server;
+  private Document pleaseSetCookieDoc;
+
+  @Override
+  public void init(final ServletConfig config) throws ServletException {
+    super.init(config);
+
+    try {
+      server = GerritServer.getInstance();
+    } catch (OrmException e) {
+      e.printStackTrace();
+      throw new ServletException("Cannot configure GerritServer", e);
+    } catch (XsrfException e) {
+      e.printStackTrace();
+      throw new ServletException("Cannot configure GerritServer", e);
+    }
+
+    try {
+      final OpenIdContext context = new OpenIdContext();
+      context.setAssociation(new DiffieHellmanAssociation());
+      context.setDiscovery(new GoogleAccountDiscovery(new DefaultDiscovery()));
+      context.setHttpConnector(new SimpleHttpConnector());
+      relyingParty = new RelyingParty(context, new GerritOpenIdUserManager());
+    } catch (Throwable e) {
+      e.printStackTrace();
+      throw new RuntimeException("Cannot setup RelyingParty", e);
+    }
+
+    final String scHtmlName = "com/google/gerrit/public/SetCookie.html";
+    pleaseSetCookieDoc = HtmlDomUtil.parseFile(scHtmlName);
+    if (pleaseSetCookieDoc == null) {
+      throw new ServletException("No " + scHtmlName + " in CLASSPATH");
+    }
+  }
+
+  @Override
+  public void doGet(final HttpServletRequest req, final HttpServletResponse rsp)
+      throws IOException {
+    doPost(req, rsp);
+  }
+
+  @Override
+  public void doPost(final HttpServletRequest req, final HttpServletResponse rsp)
+      throws IOException {
+    try {
+      doAuth(req, rsp);
+    } catch (Exception e) {
+      getServletContext().log("Unexpected error during authentication", e);
+      callback(req, rsp, SignInResult.CANCEL);
+    }
+  }
+
+  private void doAuth(final HttpServletRequest req,
+      final HttpServletResponse rsp) throws Exception {
+    if (false) {
+      System.out.println(req.getMethod() + " /login");
+      for (final Enumeration e = req.getParameterNames(); e.hasMoreElements();) {
+        final String n = (String) e.nextElement();
+        for (final String v : req.getParameterValues(n)) {
+          System.out.println("  " + n + "=" + v);
+        }
+      }
+      System.out.println();
+    }
+
+    final String mode = req.getParameter(Constants.OPENID_MODE);
+    if (OMODE_CANCEL.equals(mode)) {
+      // Provider wants us to cancel the attempt.
+      //
+      callback(req, rsp, SignInResult.CANCEL);
+      return;
+    } else if (GMODE_CHKCOOKIE.equals(mode)) {
+      modeChkSetCookie(req, rsp, true);
+      return;
+    } else if (GMODE_SETCOOKIE.equals(mode)) {
+      modeChkSetCookie(req, rsp, false);
+      return;
+    }
+
+    final OpenIdUser user = relyingParty.discover(req);
+    if (user == null) {
+      // User isn't known, no provider is known.
+      //
+      callback(req, rsp, SignInResult.CANCEL);
+      return;
+    }
+
+    if (user.isAssociated() && RelyingParty.isAuthResponse(req)) {
+      if (!relyingParty.verifyAuth(user, req, rsp)) {
+        // Failed verification... re-authenticate.
+        //
+        callback(req, rsp, SignInResult.CANCEL);
+        return;
+      }
+
+      // Authentication was successful.
+      //
+      String fullname = req.getParameter("openid.sreg.fullname");
+      String email = req.getParameter("openid.sreg.email");
+      for (int i = 1;; i++) {
+        final String nskey = "openid.ns.ext" + i;
+        final String nsval = req.getParameter(nskey);
+        if (nsval == null) {
+          break;
+        }
+
+        final String ext = "openid.ext" + i + ".";
+        if (AX_SCHEMA.equals(nsval)
+            && "fetch_response".equals(req.getParameter(ext + "mode"))) {
+          final String ax_fname = req.getParameter(ext + "value.fname");
+          final String ax_email = req.getParameter(ext + "value.email");
+          if (fullname == null && ax_fname != null) {
+            fullname = ax_fname;
+          }
+          if (email == null && ax_email != null) {
+            email = ax_email;
+          }
+          break;
+        }
+      }
+
+      initializeAccount(req, rsp, user, fullname, email);
+      return;
+    }
+
+    if (!relyingParty.associate(user, req, rsp)) {
+      // Failed association. Try again.
+      //
+      callback(req, rsp, SignInResult.CANCEL);
+      return;
+    }
+
+    // Authenticate user through his/her OpenID provider
+    //
+    final String realm = serverUrl(req);
+    final StringBuilder retTo = new StringBuilder(req.getRequestURL());
+    save(retTo, req, OpenIdUtil.P_SIGNIN_CB);
+    save(retTo, req, OpenIdUtil.P_SIGNIN_MODE);
+    save(retTo, req, OpenIdUtil.P_REMEMBERID);
+    final StringBuilder auth;
+
+    auth = RelyingParty.getAuthUrlBuffer(user, realm, realm, retTo.toString());
+    append(auth, "openid.ns.ext1", AX_SCHEMA);
+    final String ext1 = "openid.ext1.";
+    append(auth, ext1 + "mode", "fetch_request");
+    append(auth, ext1 + "type.fname", "http://example.com/schema/fullname");
+    append(auth, ext1 + "type.email", "http://schema.openid.net/contact/email");
+    append(auth, ext1 + "required", "email");
+    append(auth, ext1 + "if_available", "fname");
+
+    append(auth, "openid.sreg.optional", "fullname,email");
+    append(auth, "openid.ns.sreg", "http://openid.net/extensions/sreg/1.1");
+
+    sendJson(req, rsp, new DiscoveryResult(true, auth.toString()), req
+        .getParameter(OpenIdUtil.P_DISCOVERY_CB));
+  }
+
+  private static void save(StringBuilder b, HttpServletRequest r, String n) {
+    final String v = r.getParameter(n);
+    if (v != null) {
+      append(b, n, v);
+    }
+  }
+
+  private void initializeAccount(final HttpServletRequest req,
+      final HttpServletResponse rsp, final OpenIdUser user,
+      final String fullname, final String email) throws IOException {
+    final SignInDialog.Mode mode = signInMode(req);
+    Account account = null;
+    if (user != null) {
+      try {
+        final ReviewDb d = Common.getSchemaFactory().open();
+        try {
+          switch (mode) {
+            case SIGN_IN:
+              account = openAccount(d, user, fullname, email);
+              break;
+            case LINK_IDENTIY:
+              account = linkAccount(req, d, user, email);
+              break;
+          }
+        } finally {
+          d.close();
+        }
+      } catch (OrmException e) {
+        getServletContext().log("Account lookup failed", e);
+        account = null;
+      }
+    }
+
+    rsp.reset();
+
+    String tok;
+    try {
+      final String idstr = String.valueOf(account.getId().get());
+      tok = server.getAccountToken().newToken(idstr);
+    } catch (XsrfException e) {
+      getServletContext().log("Account cookie signature impossible", e);
+      account = null;
+      tok = "";
+    }
+
+    Cookie c = new Cookie(Gerrit.ACCOUNT_COOKIE, tok);
+    c.setPath(req.getContextPath() + "/");
+
+    if (account == null) {
+      if (mode == SignInDialog.Mode.SIGN_IN) {
+        c.setMaxAge(0);
+        rsp.addCookie(c);
+      }
+      callback(req, rsp, SignInResult.CANCEL);
+    } else {
+      c.setMaxAge(server.getSessionAge());
+      rsp.addCookie(c);
+
+      final StringBuilder me = new StringBuilder(req.getRequestURL());
+      append(me, Constants.OPENID_MODE, GMODE_CHKCOOKIE);
+      append(me, Gerrit.ACCOUNT_COOKIE, tok);
+      save(me, req, OpenIdUtil.P_SIGNIN_CB);
+      save(me, req, OpenIdUtil.P_SIGNIN_MODE);
+      if ("on".equals(req.getParameter(OpenIdUtil.P_REMEMBERID))) {
+        final String ident = saveLastId(req, rsp, user.getIdentity());
+        append(me, OpenIdUtil.LASTID_COOKIE, ident);
+        save(me, req, OpenIdUtil.P_REMEMBERID);
+      } else {
+        c = new Cookie(OpenIdUtil.LASTID_COOKIE, "");
+        c.setPath(req.getContextPath() + "/");
+        c.setMaxAge(0);
+        rsp.addCookie(c);
+      }
+      rsp.sendRedirect(me.toString());
+    }
+  }
+
+  private String saveLastId(final HttpServletRequest req,
+      final HttpServletResponse rsp, String ident) {
+    final Cookie c = new Cookie(OpenIdUtil.LASTID_COOKIE, ident);
+    c.setPath(req.getContextPath() + "/");
+    c.setMaxAge(LASTID_AGE);
+    rsp.addCookie(c);
+    return ident;
+  }
+
+  private Account openAccount(final ReviewDb db, final OpenIdUser user,
+      final String fullname, final String email) throws OrmException {
+    Account account;
+    final AccountExternalIdAccess extAccess = db.accountExternalIds();
+    AccountExternalId acctExt = lookup(extAccess, user.getIdentity());
+
+    if (acctExt == null && email != null
+        && server.isAllowGoogleAccountUpgrade() && isGoogleAccount(user)) {
+      acctExt = lookupGoogleAccount(extAccess, email);
+      if (acctExt != null) {
+        // Legacy user from Gerrit 1? Attach the OpenID identity.
+        //
+        final AccountExternalId openidExt =
+            new AccountExternalId(new AccountExternalId.Key(acctExt
+                .getAccountId(), user.getIdentity()));
+        extAccess.insert(Collections.singleton(openidExt));
+        acctExt = openidExt;
+      }
+    }
+
+    if (acctExt != null) {
+      // Existing user; double check the email is current.
+      //
+      if (email != null && !email.equals(acctExt.getEmailAddress())) {
+        acctExt.setEmailAddress(email);
+      }
+      acctExt.setLastUsedOn();
+      extAccess.update(Collections.singleton(acctExt));
+      account = Common.getAccountCache().get(acctExt.getAccountId(), db);
+    } else {
+      account = null;
+    }
+
+    if (account == null) {
+      // New user; create an account entity for them.
+      //
+      final Transaction txn = db.beginTransaction();
+
+      account = new Account(new Account.Id(db.nextAccountId()));
+      account.setFullName(fullname);
+      account.setPreferredEmail(email);
+
+      acctExt =
+          new AccountExternalId(new AccountExternalId.Key(account.getId(), user
+              .getIdentity()));
+      acctExt.setLastUsedOn();
+      acctExt.setEmailAddress(email);
+
+      db.accounts().insert(Collections.singleton(account), txn);
+      extAccess.insert(Collections.singleton(acctExt), txn);
+      txn.commit();
+    }
+    return account;
+  }
+
+  private Account linkAccount(final HttpServletRequest req, final ReviewDb db,
+      final OpenIdUser user, final String email) throws OrmException {
+    final Cookie[] cookies = req.getCookies();
+    if (cookies == null) {
+      return null;
+    }
+    Account.Id me = null;
+    for (final Cookie c : cookies) {
+      if (Gerrit.ACCOUNT_COOKIE.equals(c.getName())) {
+        try {
+          final ValidToken tok =
+              server.getAccountToken().checkToken(c.getValue(), null);
+          if (tok == null) {
+            return null;
+          }
+          me = Account.Id.parse(tok.getData());
+          break;
+        } catch (XsrfException e) {
+          return null;
+        } catch (RuntimeException e) {
+          return null;
+        }
+      }
+    }
+    if (me == null) {
+      return null;
+    }
+
+    final Account account = Common.getAccountCache().get(me, db);
+    if (account == null) {
+      return null;
+    }
+
+    final AccountExternalId.Key idKey =
+        new AccountExternalId.Key(account.getId(), user.getIdentity());
+    AccountExternalId id = db.accountExternalIds().get(idKey);
+    if (id == null) {
+      id = new AccountExternalId(idKey);
+      id.setLastUsedOn();
+      id.setEmailAddress(email);
+      db.accountExternalIds().insert(Collections.singleton(id));
+    } else {
+      if (email != null && !email.equals(id.getEmailAddress())) {
+        id.setEmailAddress(email);
+      }
+      id.setLastUsedOn();
+      db.accountExternalIds().update(Collections.singleton(id));
+    }
+    return account;
+  }
+
+  private static Mode signInMode(final HttpServletRequest req) {
+    final String p = req.getParameter(OpenIdUtil.P_SIGNIN_MODE);
+    if (p == null || p.length() == 0) {
+      return SignInDialog.Mode.SIGN_IN;
+    }
+    try {
+      return SignInDialog.Mode.valueOf(p);
+    } catch (RuntimeException e) {
+      return SignInDialog.Mode.SIGN_IN;
+    }
+  }
+
+  private static AccountExternalId lookup(
+      final AccountExternalIdAccess extAccess, final String id)
+      throws OrmException {
+    final List<AccountExternalId> extRes = extAccess.byExternal(id).toList();
+    switch (extRes.size()) {
+      case 0:
+        return null;
+      case 1:
+        return extRes.get(0);
+      default:
+        throw new OrmException("More than one account matches: " + id);
+    }
+  }
+
+  private static boolean isGoogleAccount(final OpenIdUser user) {
+    return user.getIdentity().startsWith(OpenIdUtil.URL_GOOGLE + "?");
+  }
+
+  private static AccountExternalId lookupGoogleAccount(
+      final AccountExternalIdAccess extAccess, final String email)
+      throws OrmException {
+    // We may have multiple records which match the email address, but
+    // all under the same account. This happens when the user does a
+    // login through different server hostnames, as Google issues
+    // unique OpenID tokens per server.
+    //
+    // Match to an existing account only if there is exactly one record
+    // for this email using the generic Google URL.
+    //
+    final List<AccountExternalId> m = new ArrayList<AccountExternalId>();
+    for (final AccountExternalId e : extAccess.byEmailAddress(email)) {
+      if (e.getExternalId().equals(OpenIdUtil.URL_GOOGLE)) {
+        m.add(e);
+      }
+    }
+    return m.size() == 1 ? m.get(0) : null;
+  }
+
+  private void modeChkSetCookie(final HttpServletRequest req,
+      final HttpServletResponse rsp, final boolean isCheck) throws IOException {
+    final String exp = req.getParameter(Gerrit.ACCOUNT_COOKIE);
+    final ValidToken chk;
+    try {
+      chk = server.getAccountToken().checkToken(exp, null);
+    } catch (XsrfException e) {
+      getServletContext().log("Cannot validate cookie token", e);
+      callback(req, rsp, SignInResult.CANCEL);
+      return;
+    }
+
+    final Account.Id id;
+    try {
+      id = new Account.Id(Integer.parseInt(chk.getData()));
+    } catch (NumberFormatException e) {
+      callback(req, rsp, SignInResult.CANCEL);
+      return;
+    }
+
+    final Account account = Common.getAccountCache().get(id);
+    if (account == null) {
+      callback(req, rsp, SignInResult.CANCEL);
+      return;
+    }
+
+    final String act = getCookie(req, Gerrit.ACCOUNT_COOKIE);
+    if (isCheck && !exp.equals(act)) {
+      // Cookie won't set without "user interaction" (thanks Safari). Lets
+      // send an HTML page to the browser and ask the user to click to let
+      // us set the cookie.
+      //
+      sendSetCookieHtml(req, rsp, exp);
+      return;
+    }
+
+    Cookie c = new Cookie(Gerrit.ACCOUNT_COOKIE, exp);
+    c.setPath(req.getContextPath() + "/");
+    c.setMaxAge(server.getSessionAge());
+    rsp.addCookie(c);
+
+    if ("on".equals(req.getParameter(OpenIdUtil.P_REMEMBERID))) {
+      saveLastId(req, rsp, req.getParameter(OpenIdUtil.LASTID_COOKIE));
+    } else {
+      c = new Cookie(OpenIdUtil.LASTID_COOKIE, "");
+      c.setPath(req.getContextPath() + "/");
+      c.setMaxAge(0);
+      rsp.addCookie(c);
+    }
+    callback(req, rsp, new SignInResult(SignInResult.Status.SUCCESS, account));
+  }
+
+  private void sendSetCookieHtml(final HttpServletRequest req,
+      final HttpServletResponse rsp, final String exp) throws IOException {
+    final Document doc = HtmlDomUtil.clone(pleaseSetCookieDoc);
+    final Element set_form = HtmlDomUtil.find(doc, "set_form");
+    set_form.setAttribute("action", req.getRequestURL().toString());
+    HtmlDomUtil.addHidden(set_form, Constants.OPENID_MODE, GMODE_SETCOOKIE);
+    HtmlDomUtil.addHidden(set_form, Gerrit.ACCOUNT_COOKIE, exp);
+    save(set_form, req, OpenIdUtil.LASTID_COOKIE);
+    save(set_form, req, OpenIdUtil.P_REMEMBERID);
+    save(set_form, req, OpenIdUtil.P_SIGNIN_CB);
+    save(set_form, req, OpenIdUtil.P_SIGNIN_MODE);
+    sendHtml(req, rsp, HtmlDomUtil.toString(doc));
+  }
+
+  private static void save(Element f, HttpServletRequest r, String n) {
+    final String v = r.getParameter(n);
+    if (v != null) {
+      HtmlDomUtil.addHidden(f, n, v);
+    }
+  }
+
+  private static String getCookie(final HttpServletRequest req,
+      final String name) {
+    final Cookie[] allCookies = req.getCookies();
+    if (allCookies != null) {
+      for (final Cookie c : allCookies) {
+        if (name.equals(c.getName())) {
+          return c.getValue();
+        }
+      }
+    }
+    return null;
+  }
+
+  private void callback(final HttpServletRequest req,
+      final HttpServletResponse rsp, final SignInResult result)
+      throws IOException {
+    final String dcb = req.getParameter(OpenIdUtil.P_DISCOVERY_CB);
+    if (dcb != null) {
+      // We're in the middle of a discovery request; we need to use
+      // the discovery request callback and not the sign in callback.
+      //
+      sendJson(req, rsp, new DiscoveryResult(false), dcb);
+      return;
+    }
+
+    // We're not in an OpenID transaction so try to clear out the
+    // OpenID management cookie.
+    //
+    relyingParty.getOpenIdUserManager().invalidate(rsp);
+
+    final String cb = req.getParameter(OpenIdUtil.P_SIGNIN_CB);
+    if (cb != null && cb.startsWith("history:")) {
+      final StringBuffer rdr = req.getRequestURL();
+      rdr.setLength(rdr.lastIndexOf("/"));
+      rdr.append("/Gerrit");
+      rdr.append('#');
+      rdr.append(cb.substring("history:".length()));
+      rsp.sendRedirect(rdr.toString());
+      return;
+    }
+    sendJson(req, rsp, result, cb);
+  }
+
+  private void sendJson(final HttpServletRequest req,
+      final HttpServletResponse rsp, final Object result, final String cb)
+      throws IOException {
+    final StringWriter body = new StringWriter();
+    body.write("<html>");
+    body.append("<body>");
+    if (JsonServlet.SAFE_CALLBACK.matcher(cb).matches()) {
+      body.write("<script><!--\n");
+      body.write(cb);
+      body.write("(");
+      JsonServlet.defaultGsonBuilder().create().toJson(result, body);
+      body.write(");\n");
+      body.write("// -->\n");
+      body.write("</script>");
+      body.write("<p>Loading ...</p>");
+    } else {
+      body.append("Unsafe JSON callback requested; refusing to execute it.");
+    }
+    body.append("</body>");
+    body.write("</html>");
+    sendHtml(req, rsp, body.toString());
+  }
+
+  private void sendHtml(final HttpServletRequest req,
+      final HttpServletResponse rsp, final String bodystr) throws IOException {
+    final byte[] raw = bodystr.getBytes(HtmlDomUtil.ENC);
+    final byte[] tosend;
+    if (RPCServletUtils.acceptsGzipEncoding(req)) {
+      rsp.setHeader("Content-Encoding", "gzip");
+      final ByteArrayOutputStream compressed = new ByteArrayOutputStream();
+      final GZIPOutputStream gz = new GZIPOutputStream(compressed);
+      gz.write(raw);
+      gz.finish();
+      gz.flush();
+      tosend = compressed.toByteArray();
+    } else {
+      tosend = raw;
+    }
+
+    rsp.setCharacterEncoding(HtmlDomUtil.ENC);
+    rsp.setContentType("text/html");
+    rsp.setHeader("Expires", "Fri, 01 Jan 1980 00:00:00 GMT");
+    rsp.setHeader("Pragma", "no-cache");
+    rsp.setHeader("Cache-Control", "no-cache, must-revalidate");
+    rsp.setContentLength(tosend.length);
+    final OutputStream out = rsp.getOutputStream();
+    try {
+      out.write(tosend);
+    } finally {
+      out.close();
+    }
+  }
+
+  static String serverUrl(final HttpServletRequest req) {
+    // Assume this servlet is in the context with a simple name like "login"
+    // and we were accessed without any path info. Clipping the last part of
+    // the name from the URL should generate the web application's root path.
+    //
+    final String uri = req.getRequestURL().toString();
+    final int s = uri.lastIndexOf('/');
+    return s >= 0 ? uri.substring(0, s + 1) : uri;
+  }
+
+  private static void append(final StringBuilder buffer, final String name,
+      final String value) {
+    if (buffer.indexOf("?") >= 0) {
+      buffer.append('&');
+    } else {
+      buffer.append('?');
+    }
+    buffer.append(name);
+    buffer.append('=');
+    buffer.append(UrlEncoded.encodeString(value));
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/PatchDetailServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/PatchDetailServiceSrv.java
new file mode 100644
index 0000000..3f08a06
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/PatchDetailServiceSrv.java
@@ -0,0 +1,25 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.server.patch.PatchDetailServiceImpl;
+
+/** Publishes {@link PatchDetailServiceImpl} over JSON. */
+public class PatchDetailServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new PatchDetailServiceImpl(GerritServer.getInstance());
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ProjectAdminServiceImpl.java b/appjar/src/main/java/com/google/gerrit/server/ProjectAdminServiceImpl.java
new file mode 100644
index 0000000..5078623
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ProjectAdminServiceImpl.java
@@ -0,0 +1,241 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.admin.ProjectAdminService;
+import com.google.gerrit.client.admin.ProjectDetail;
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountGroup;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtjsonrpc.client.VoidResult;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class ProjectAdminServiceImpl extends BaseServiceImplementation
+    implements ProjectAdminService {
+  public void ownedProjects(final AsyncCallback<List<Project>> callback) {
+    run(callback, new Action<List<Project>>() {
+      public List<Project> run(ReviewDb db) throws OrmException {
+        final List<Project> result;
+        if (Common.getGroupCache().isAdministrator(Common.getAccountId())) {
+          result = db.projects().all().toList();
+        } else {
+          result = myOwnedProjects(db);
+          Collections.sort(result, new Comparator<Project>() {
+            public int compare(final Project a, final Project b) {
+              return a.getName().compareTo(b.getName());
+            }
+          });
+        }
+        return result;
+      }
+    });
+  }
+
+  public void projectDetail(final Project.Id projectId,
+      final AsyncCallback<ProjectDetail> callback) {
+    run(callback, new Action<ProjectDetail>() {
+      public ProjectDetail run(ReviewDb db) throws OrmException, Failure {
+        assertAmProjectOwner(db, projectId);
+        final ProjectCache.Entry p = Common.getProjectCache().get(projectId);
+        if (p == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final ProjectDetail d = new ProjectDetail();
+        d.load(db, p);
+        return d;
+      }
+    });
+  }
+
+  public void changeProjectDescription(final Project.Id projectId,
+      final String description, final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        assertAmProjectOwner(db, projectId);
+        final Project proj = db.projects().get(projectId);
+        if (proj == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+        proj.setDescription(description);
+        db.projects().update(Collections.singleton(proj));
+        Common.getProjectCache().invalidate(proj);
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void changeProjectOwner(final Project.Id projectId,
+      final String newOwnerName, final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        assertAmProjectOwner(db, projectId);
+        final Project project = db.projects().get(projectId);
+        if (project == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+        if (ProjectRight.WILD_PROJECT.equals(projectId)) {
+          // This is *not* a good idea to change away from administrators.
+          //
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final AccountGroup owner =
+            db.accountGroups().get(new AccountGroup.NameKey(newOwnerName));
+        if (owner == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        project.setOwnerGroupId(owner.getId());
+        db.projects().update(Collections.singleton(project));
+        Common.getProjectCache().invalidate(project);
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void deleteRight(final Set<ProjectRight.Key> keys,
+      final AsyncCallback<VoidResult> callback) {
+    run(callback, new Action<VoidResult>() {
+      public VoidResult run(final ReviewDb db) throws OrmException, Failure {
+        final Set<Project.Id> owned = ids(myOwnedProjects(db));
+        Boolean amAdmin = null;
+        for (final ProjectRight.Key k : keys) {
+          if (!owned.contains(k.getProjectId())) {
+            if (amAdmin == null) {
+              amAdmin =
+                  Common.getGroupCache().isAdministrator(Common.getAccountId());
+            }
+            if (!amAdmin) {
+              throw new Failure(new NoSuchEntityException());
+            }
+          }
+        }
+        for (final ProjectRight.Key k : keys) {
+          final ProjectRight m = db.projectRights().get(k);
+          if (m != null) {
+            db.projectRights().delete(Collections.singleton(m));
+            Common.getProjectCache().invalidate(k.getProjectId());
+          }
+        }
+        return VoidResult.INSTANCE;
+      }
+    });
+  }
+
+  public void addRight(final Project.Id projectId,
+      final ApprovalCategory.Id categoryId, final String groupName,
+      final short min, final short max,
+      final AsyncCallback<ProjectDetail> callback) {
+    run(callback, new Action<ProjectDetail>() {
+      public ProjectDetail run(ReviewDb db) throws OrmException, Failure {
+        assertAmProjectOwner(db, projectId);
+        final Project proj = db.projects().get(projectId);
+        if (proj == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final ApprovalCategory cat = db.approvalCategories().get(categoryId);
+        if (cat == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        if (db.approvalCategoryValues().get(
+            new ApprovalCategoryValue.Id(categoryId, min)) == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        if (db.approvalCategoryValues().get(
+            new ApprovalCategoryValue.Id(categoryId, max)) == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final AccountGroup group =
+            db.accountGroups().get(new AccountGroup.NameKey(groupName));
+        if (group == null) {
+          throw new Failure(new NoSuchEntityException());
+        }
+
+        final ProjectRight.Key key =
+            new ProjectRight.Key(projectId, categoryId, group.getId());
+        ProjectRight pr = db.projectRights().get(key);
+        if (pr == null) {
+          pr = new ProjectRight(key);
+          pr.setMinValue(min);
+          pr.setMaxValue(max);
+          db.projectRights().insert(Collections.singleton(pr));
+        } else {
+          pr.setMinValue(min);
+          pr.setMaxValue(max);
+          db.projectRights().update(Collections.singleton(pr));
+        }
+
+        Common.getProjectCache().invalidate(proj);
+        final ProjectDetail d = new ProjectDetail();
+        d.load(db, Common.getProjectCache().get(projectId));
+        return d;
+      }
+    });
+  }
+
+  private void assertAmProjectOwner(final ReviewDb db,
+      final Project.Id projectId) throws Failure {
+    final ProjectCache.Entry p = Common.getProjectCache().get(projectId);
+    if (p == null) {
+      throw new Failure(new NoSuchEntityException());
+    }
+    final Account.Id me = Common.getAccountId();
+    if (!Common.getGroupCache().isInGroup(me, p.getProject().getOwnerGroupId())
+        && !Common.getGroupCache().isAdministrator(me)) {
+      throw new Failure(new NoSuchEntityException());
+    }
+  }
+
+  private List<Project> myOwnedProjects(final ReviewDb db) throws OrmException {
+    final Account.Id me = Common.getAccountId();
+    final List<Project> own = new ArrayList<Project>();
+    for (final AccountGroup.Id groupId : Common.getGroupCache().getGroups(me)) {
+      for (final Project g : db.projects().ownedByGroup(groupId)) {
+        own.add(g);
+      }
+    }
+    return own;
+  }
+
+  private static Set<Project.Id> ids(final Collection<Project> projectList) {
+    final HashSet<Project.Id> r = new HashSet<Project.Id>();
+    for (final Project project : projectList) {
+      r.add(project.getId());
+    }
+    return r;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ProjectAdminServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/ProjectAdminServiceSrv.java
new file mode 100644
index 0000000..e97f1d8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ProjectAdminServiceSrv.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+
+/** Publishes {@link ProjectAdminServiceImpl} over JSON. */
+public class ProjectAdminServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new ProjectAdminServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/StaticServlet.java b/appjar/src/main/java/com/google/gerrit/server/StaticServlet.java
new file mode 100644
index 0000000..c02417d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/StaticServlet.java
@@ -0,0 +1,168 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gwt.user.server.rpc.RPCServletUtils;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+import org.spearce.jgit.util.NB;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.zip.GZIPOutputStream;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/** Sends static content from the site 's <code>static/</code> subdirectory. */
+public class StaticServlet extends HttpServlet {
+  private static final long MAX_AGE = 12 * 60 * 60 * 1000L/* milliseconds */;
+  private static final String CACHE_CTRL =
+      "public, max-age=" + (MAX_AGE / 1000L);
+
+  private static final HashMap<String, String> MIME_TYPES =
+      new HashMap<String, String>();
+  static {
+    MIME_TYPES.put("html", "text/html");
+    MIME_TYPES.put("htm", "text/html");
+    MIME_TYPES.put("js", "application/x-javascript");
+    MIME_TYPES.put("css", "text/css");
+    MIME_TYPES.put("rtf", "text/rtf");
+    MIME_TYPES.put("txt", "text/plain");
+    MIME_TYPES.put("text", "text/plain");
+    MIME_TYPES.put("pdf", "application/pdf");
+    MIME_TYPES.put("jpeg", "image/jpeg");
+    MIME_TYPES.put("jpg", "image/jpeg");
+    MIME_TYPES.put("gif", "image/gif");
+    MIME_TYPES.put("png", "image/png");
+    MIME_TYPES.put("tiff", "image/tiff");
+    MIME_TYPES.put("tif", "image/tiff");
+    MIME_TYPES.put("svg", "image/svg+xml");
+  }
+
+  private static String contentType(final String name) {
+    final int dot = name.lastIndexOf('.');
+    final String ext = 0 < dot ? name.substring(dot + 1) : "";
+    final String type = MIME_TYPES.get(ext);
+    return type != null ? type : "application/octet-stream";
+  }
+
+  private static byte[] readFile(final File p) throws IOException {
+    final FileInputStream in = new FileInputStream(p);
+    try {
+      final byte[] r = new byte[(int) in.getChannel().size()];
+      NB.readFully(in, r, 0, r.length);
+      return r;
+    } finally {
+      in.close();
+    }
+  }
+
+  private static byte[] compress(final byte[] raw) throws IOException {
+    final ByteArrayOutputStream out = new ByteArrayOutputStream();
+    final GZIPOutputStream gz = new GZIPOutputStream(out);
+    gz.write(raw);
+    gz.finish();
+    gz.flush();
+    return out.toByteArray();
+  }
+
+  private File staticBase;
+
+  @Override
+  public void init(final ServletConfig config) throws ServletException {
+    super.init(config);
+
+    final GerritServer srv;
+    try {
+      srv = GerritServer.getInstance();
+    } catch (OrmException e) {
+      throw new ServletException("Cannot load GerritServer", e);
+    } catch (XsrfException e) {
+      throw new ServletException("Cannot load GerritServer", e);
+    }
+
+    final File p = srv.getSitePath();
+    staticBase = p != null ? new File(p, "static") : null;
+  }
+
+  private File local(final HttpServletRequest req) {
+    final String name = req.getPathInfo();
+    if (name.length() < 2 || !name.startsWith("/")) {
+      // Too short to be a valid file name, or doesn't start with
+      // the path info separator like we expected.
+      //
+      return null;
+    }
+
+    if (name.indexOf('/', 1) > 0 || name.indexOf('\\', 1) > 0) {
+      // Contains a path separator. Don't serve it as the client
+      // might be trying something evil like "/../../etc/passwd".
+      // This static servlet is just meant to facilitate simple
+      // assets like banner images.
+      //
+      return null;
+    }
+
+    final File p = new File(staticBase, name.substring(1));
+    return p.isFile() ? p : null;
+  }
+
+  @Override
+  protected long getLastModified(final HttpServletRequest req) {
+    final File p = local(req);
+    return p != null ? p.lastModified() : -1;
+  }
+
+  @Override
+  protected void doGet(final HttpServletRequest req,
+      final HttpServletResponse rsp) throws IOException {
+    final File p = local(req);
+    if (p == null) {
+      rsp.setStatus(HttpServletResponse.SC_NOT_FOUND);
+      return;
+    }
+
+    final String type = contentType(p.getName());
+    final byte[] tosend;
+    if (!type.equals("application/x-javascript")
+        && RPCServletUtils.acceptsGzipEncoding(req)) {
+      rsp.setHeader("Content-Encoding", "gzip");
+      tosend = compress(readFile(p));
+    } else {
+      tosend = readFile(p);
+    }
+
+    rsp.setHeader("Cache-Control", CACHE_CTRL);
+    rsp.setDateHeader("Expires", System.currentTimeMillis() + MAX_AGE);
+    rsp.setDateHeader("Last-Modified", p.lastModified());
+    rsp.setContentType(type);
+    rsp.setContentLength(tosend.length);
+    final OutputStream out = rsp.getOutputStream();
+    try {
+      out.write(tosend);
+    } finally {
+      out.close();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/SuggestServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/SuggestServiceSrv.java
new file mode 100644
index 0000000..965585d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/SuggestServiceSrv.java
@@ -0,0 +1,25 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.ui.SuggestServiceImpl;
+
+/** Publishes {@link SuggestServiceImpl} over JSON. */
+public class SuggestServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new SuggestServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/SystemInfoServiceImpl.java b/appjar/src/main/java/com/google/gerrit/server/SystemInfoServiceImpl.java
new file mode 100644
index 0000000..db8985e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/SystemInfoServiceImpl.java
@@ -0,0 +1,45 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.data.GerritConfig;
+import com.google.gerrit.client.data.SystemInfoService;
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwtorm.client.OrmException;
+
+import java.util.List;
+
+public class SystemInfoServiceImpl implements SystemInfoService {
+  public void loadGerritConfig(final AsyncCallback<GerritConfig> callback) {
+    callback.onSuccess(Common.getGerritConfig());
+  }
+
+  public void contributorAgreements(
+      final AsyncCallback<List<ContributorAgreement>> callback) {
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        callback.onSuccess(db.contributorAgreements().active().toList());
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      callback.onFailure(e);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/SystemInfoServiceSrv.java b/appjar/src/main/java/com/google/gerrit/server/SystemInfoServiceSrv.java
new file mode 100644
index 0000000..2d25cc8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/SystemInfoServiceSrv.java
@@ -0,0 +1,24 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+
+/** Publishes {@link SystemInfoServiceImpl} over JSON. */
+public class SystemInfoServiceSrv extends GerritJsonServlet {
+  @Override
+  protected Object createServiceHandle() throws Exception {
+    return new SystemInfoServiceImpl();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/UrlRewriteFilter.java b/appjar/src/main/java/com/google/gerrit/server/UrlRewriteFilter.java
new file mode 100644
index 0000000..dcbb988
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/UrlRewriteFilter.java
@@ -0,0 +1,276 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.reviewdb.RevId;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/** Rewrites Gerrit 1 style URLs to Gerrit 2 style URLs. */
+public class UrlRewriteFilter implements Filter {
+  private static final Pattern CHANGE_ID = Pattern.compile("^/(\\d+)/?$");
+  private static final Pattern REV_ID =
+      Pattern.compile("^/r/([0-9a-fA-F]{4," + RevId.LEN + "})/?$");
+  private static final Pattern USER_PAGE = Pattern.compile("^/user/(.*)/?$");
+  private static final Map<String, String> staticLinks;
+  private static final Set<String> staticExtensions;
+
+  static {
+    staticLinks = new HashMap<String, String>();
+    staticLinks.put("", "");
+    staticLinks.put("/", "");
+
+    staticLinks.put("/mine", Link.MINE);
+    staticLinks.put("/unclaimed", Link.MINE_UNCLAIMED);
+    staticLinks.put("/starred", Link.MINE_STARRED);
+
+    staticLinks.put("/all", Link.ALL);
+    staticLinks.put("/all_unclaimed", Link.ALL_UNCLAIMED);
+    staticLinks.put("/open", Link.ALL_OPEN);
+
+    staticExtensions = new HashSet<String>();
+    staticExtensions.add(".css");
+    staticExtensions.add(".gif");
+    staticExtensions.add(".html");
+    staticExtensions.add(".js");
+    staticExtensions.add(".png");
+  }
+
+  private FilterConfig config;
+
+  public void init(final FilterConfig config) throws ServletException {
+    this.config = config;
+    try {
+      GerritServer.getInstance();
+    } catch (OrmException e) {
+      throw new ServletException("Cannot initialize GerritServer", e);
+    } catch (XsrfException e) {
+      throw new ServletException("Cannot initialize GerritServer", e);
+    }
+  }
+
+  public void destroy() {
+  }
+
+  public void doFilter(final ServletRequest sreq, final ServletResponse srsp,
+      final FilterChain chain) throws IOException, ServletException {
+    final HttpServletRequest req = (HttpServletRequest) sreq;
+    final HttpServletResponse rsp = (HttpServletResponse) srsp;
+    final String pathInfo = pathInfo(req);
+
+    if (pathInfo.startsWith("/rpc/")) {
+      // RPC requests are very common in Gerrit 2, we want to make sure
+      // they run quickly by jumping through the chain as fast as we can.
+      //
+      chain.doFilter(req, rsp);
+    } else if (staticExtension(pathInfo, req, rsp, chain)) {
+    } else if (staticLink(pathInfo, req, rsp)) {
+    } else if (bareChangeId(pathInfo, req, rsp)) {
+    } else if (bareRevisionId(pathInfo, req, rsp)) {
+    } else if (bareUserEmailDashboard(pathInfo, req, rsp)) {
+    } else {
+      // Anything else is either a static resource request (which the container
+      // can do for us) or is going to be a 404 error when the container cannot
+      // find the resource. Either form of request is not very common compared
+      // to the above cases.
+      //
+      chain.doFilter(req, rsp);
+    }
+  }
+
+  private static boolean staticExtension(final String pathInfo,
+      final HttpServletRequest req, final HttpServletResponse rsp,
+      final FilterChain chain) throws IOException, ServletException {
+    final int d = pathInfo.lastIndexOf('.');
+    if (d > 0 && staticExtensions.contains(pathInfo.substring(d + 1))) {
+      // Any URL which ends in this static extension is meant to be handled
+      // by the servlet container, by returning a resource from the WAR.
+      // We don't need to evaluate it any further.
+      //
+      chain.doFilter(req, rsp);
+      return true;
+    }
+    return false;
+  }
+
+  private static boolean staticLink(final String pathInfo,
+      final HttpServletRequest req, final HttpServletResponse rsp)
+      throws IOException {
+    final String newLink = staticLinks.get(pathInfo);
+    if (newLink == null) {
+      return false;
+    }
+
+    // A static link (one with no parameters).
+    //
+    final StringBuffer url = toGerrit(req);
+    if (newLink.length() > 0) {
+      url.append('#');
+      url.append(newLink);
+    }
+    rsp.sendRedirect(url.toString());
+    return true;
+  }
+
+  private static boolean bareChangeId(final String pathInfo,
+      final HttpServletRequest req, final HttpServletResponse rsp)
+      throws IOException {
+    final Matcher m = CHANGE_ID.matcher(pathInfo);
+    if (!m.matches()) {
+      return false;
+    }
+
+    final Change.Id id = Change.Id.parse(m.group(1));
+    final StringBuffer url = toGerrit(req);
+    url.append('#');
+    url.append(Link.toChange(id));
+    rsp.sendRedirect(url.toString());
+    return true;
+  }
+
+  private boolean bareRevisionId(final String pathInfo,
+      final HttpServletRequest req, final HttpServletResponse rsp)
+      throws IOException {
+    final Matcher m = REV_ID.matcher(pathInfo);
+    if (!m.matches()) {
+      return false;
+    }
+
+    final String rev = m.group(1).toLowerCase();
+    if (rev.length() > RevId.LEN) {
+      rsp.sendError(HttpServletResponse.SC_NOT_FOUND);
+      return true;
+    }
+
+    final RevId id = new RevId(rev);
+    final List<PatchSet> patches;
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        if (id.isComplete()) {
+          patches = db.patchSets().byRevision(id).toList();
+        } else {
+          patches = db.patchSets().byRevisionRange(id, id.max()).toList();
+        }
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      config.getServletContext().log("Unable to query for " + rev, e);
+      rsp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+      return true;
+    }
+
+    if (patches.size() == 0) {
+      rsp.sendError(HttpServletResponse.SC_NOT_FOUND);
+    } else if (patches.size() == 1) {
+      final StringBuffer url = toGerrit(req);
+      url.append('#');
+      url.append(Link.toChange(patches.get(0).getId().getParentKey()));
+      rsp.sendRedirect(url.toString());
+    } else {
+      // TODO Someday this should be a menu of choices.
+      rsp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+    }
+    return true;
+  }
+
+  private boolean bareUserEmailDashboard(final String pathInfo,
+      final HttpServletRequest req, final HttpServletResponse rsp)
+      throws IOException {
+    final Matcher m = USER_PAGE.matcher(pathInfo);
+    if (!m.matches()) {
+      return false;
+    }
+
+    final String email = cleanEmail(m.group(1));
+    final List<Account> people;
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        people = db.accounts().byPreferredEmail(email).toList();
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      config.getServletContext().log("Unable to query for " + email, e);
+      rsp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+      return true;
+    }
+
+    if (people.size() == 0) {
+      rsp.sendError(HttpServletResponse.SC_NOT_FOUND);
+    } else if (people.size() == 1) {
+      final StringBuffer url = toGerrit(req);
+      url.append('#');
+      url.append(Link.toAccountDashboard(people.get(0).getId()));
+      rsp.sendRedirect(url.toString());
+    } else {
+      // TODO Someday this should be a menu of choices.
+      rsp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+    }
+    return true;
+  }
+
+  private static String cleanEmail(final String email) {
+    int dc = email.indexOf(",,");
+    if (dc >= 0) {
+      return email.substring(0, dc) + "@" + email.substring(dc + 2);
+    }
+
+    dc = email.indexOf(',');
+    if (dc >= 0) {
+      return email.substring(0, dc) + "@" + email.substring(dc + 1);
+    }
+    return email;
+  }
+
+  private static String pathInfo(final HttpServletRequest req) {
+    final String uri = req.getRequestURI();
+    final String ctx = req.getContextPath();
+    return uri.startsWith(ctx) ? uri.substring(ctx.length()) : uri;
+  }
+
+  private static StringBuffer toGerrit(final HttpServletRequest req) {
+    final StringBuffer url = new StringBuffer();
+    url.append(req.getContextPath());
+    url.append("/Gerrit");
+    return url;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/patch/PatchDetailAction.java b/appjar/src/main/java/com/google/gerrit/server/patch/PatchDetailAction.java
new file mode 100644
index 0000000..aaa758e
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/patch/PatchDetailAction.java
@@ -0,0 +1,180 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.patch;
+
+import com.google.gerrit.client.data.AccountInfoCacheFactory;
+import com.google.gerrit.client.data.LineWithComments;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.reviewdb.PatchContent;
+import com.google.gerrit.client.reviewdb.PatchLineComment;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.CorruptEntityException;
+import com.google.gerrit.client.rpc.NoSuchEntityException;
+import com.google.gerrit.client.rpc.BaseServiceImplementation.Action;
+import com.google.gerrit.client.rpc.BaseServiceImplementation.Failure;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.ResultSet;
+
+import org.spearce.jgit.errors.IncorrectObjectTypeException;
+import org.spearce.jgit.lib.AnyObjectId;
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.ObjectLoader;
+import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.patch.CombinedFileHeader;
+import org.spearce.jgit.patch.FileHeader;
+import org.spearce.jgit.patch.FormatError;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+
+abstract class PatchDetailAction<T> implements Action<T> {
+  protected static final byte[] EMPTY_FILE = {};
+
+  protected final Patch.Key key;
+  protected Change change;
+  protected Patch patch;
+  protected FileHeader file;
+  protected int fileCnt;
+  protected AccountInfoCacheFactory accountInfo;
+  protected Account.Id me;
+
+  protected HashMap<Integer, List<PatchLineComment>> published[];
+  protected HashMap<Integer, List<PatchLineComment>> drafted[];
+
+  PatchDetailAction(final Patch.Key key) {
+    this.key = key;
+  }
+
+  protected void init(final ReviewDb db) throws OrmException, Failure {
+    patch = db.patches().get(key);
+    if (patch == null) {
+      throw new Failure(new NoSuchEntityException());
+    }
+    change = db.changes().get(patch.getKey().getParentKey().getParentKey());
+    BaseServiceImplementation.assertCanRead(change);
+
+    file = parse(patch, read(db, patch));
+    if (file instanceof CombinedFileHeader) {
+      fileCnt = ((CombinedFileHeader) file).getParentCount() + 1;
+    } else {
+      fileCnt = 2;
+    }
+
+    accountInfo = new AccountInfoCacheFactory(db);
+    me = Common.getAccountId();
+
+    published = new HashMap[fileCnt];
+    for (int n = 0; n < fileCnt; n++) {
+      published[n] = new HashMap<Integer, List<PatchLineComment>>();
+    }
+    indexComments(published, db.patchComments().published(key));
+
+    if (me != null) {
+      drafted = new HashMap[fileCnt];
+      for (int n = 0; n < fileCnt; n++) {
+        drafted[n] = new HashMap<Integer, List<PatchLineComment>>();
+      }
+      indexComments(drafted, db.patchComments().draft(key, me));
+    }
+  }
+
+  protected static void indexComments(
+      final HashMap<Integer, List<PatchLineComment>>[] out,
+      final ResultSet<PatchLineComment> comments) {
+    for (final PatchLineComment c : comments) {
+      if (0 <= c.getSide() && c.getSide() < out.length) {
+        final HashMap<Integer, List<PatchLineComment>> m = out[c.getSide()];
+        List<PatchLineComment> l = m.get(c.getLine());
+        if (l == null) {
+          l = new ArrayList<PatchLineComment>(4);
+          m.put(c.getLine(), l);
+        }
+        l.add(c);
+      }
+    }
+  }
+
+  protected void addComments(final LineWithComments pLine,
+      final HashMap<Integer, List<PatchLineComment>>[] cache, final int side,
+      final int line) {
+    List<PatchLineComment> l = cache[side].get(line);
+    if (l != null) {
+      for (final PatchLineComment c : l) {
+        pLine.addComment(c);
+        accountInfo.want(c.getAuthor());
+      }
+    }
+  }
+
+  protected byte[] read(final Repository repo, final AnyObjectId id)
+      throws Failure {
+    if (id == null || ObjectId.zeroId().equals(id)) {
+      return EMPTY_FILE;
+    }
+    try {
+      final ObjectLoader ldr = repo.openObject(id);
+      if (ldr == null) {
+        throw new Failure(new CorruptEntityException(patch.getKey()));
+      }
+      final byte[] content = ldr.getCachedBytes();
+      if (ldr.getType() != Constants.OBJ_BLOB) {
+        throw new Failure(new IncorrectObjectTypeException(id.toObjectId(),
+            Constants.TYPE_BLOB));
+      }
+      return content;
+    } catch (IOException err) {
+      throw new Failure(err);
+    }
+  }
+
+  protected static String read(final ReviewDb db, final Patch patch)
+      throws Failure, OrmException {
+    final PatchContent.Key key = patch.getContent();
+    if (key == null) {
+      throw new Failure(new CorruptEntityException(patch.getKey()));
+    }
+
+    final PatchContent pc = db.patchContents().get(key);
+    if (pc == null || pc.getContent() == null) {
+      throw new Failure(new CorruptEntityException(patch.getKey()));
+    }
+
+    return pc.getContent();
+  }
+
+  protected static FileHeader parse(final Patch patch, final String content)
+      throws Failure {
+    final byte[] buf = Constants.encode(content);
+    final org.spearce.jgit.patch.Patch p = new org.spearce.jgit.patch.Patch();
+    p.parse(buf, 0, buf.length);
+    for (final FormatError err : p.getErrors()) {
+      if (err.getSeverity() == FormatError.Severity.ERROR) {
+        throw new Failure(new CorruptEntityException(patch.getKey()));
+      }
+    }
+    if (p.getFiles().size() != 1) {
+      throw new Failure(new CorruptEntityException(patch.getKey()));
+    }
+    return p.getFiles().get(0);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/patch/PatchDetailServiceImpl.java b/appjar/src/main/java/com/google/gerrit/server/patch/PatchDetailServiceImpl.java
new file mode 100644
index 0000000..01b7f62
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/patch/PatchDetailServiceImpl.java
@@ -0,0 +1,48 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.patch;
+
+import com.google.gerrit.client.data.SideBySidePatchDetail;
+import com.google.gerrit.client.data.UnifiedPatchDetail;
+import com.google.gerrit.client.patches.PatchDetailService;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.git.RepositoryCache;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+public class PatchDetailServiceImpl extends BaseServiceImplementation implements
+    PatchDetailService {
+  private final GerritServer server;
+
+  public PatchDetailServiceImpl(final GerritServer gs) {
+    server = gs;
+  }
+
+  public void sideBySidePatchDetail(final Patch.Key key,
+      final AsyncCallback<SideBySidePatchDetail> callback) {
+    final RepositoryCache rc = server.getRepositoryCache();
+    if (rc == null) {
+      callback.onFailure(new Exception("No Repository Cache configured"));
+      return;
+    }
+    run(callback, new SideBySidePatchDetailAction(rc, key));
+  }
+
+  public void unifiedPatchDetail(final Patch.Key key,
+      final AsyncCallback<UnifiedPatchDetail> callback) {
+    run(callback, new UnifiedPatchDetailAction(key));
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/patch/SideBySidePatchDetailAction.java b/appjar/src/main/java/com/google/gerrit/server/patch/SideBySidePatchDetailAction.java
new file mode 100644
index 0000000..b777ada
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/patch/SideBySidePatchDetailAction.java
@@ -0,0 +1,205 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.patch;
+
+import static org.spearce.jgit.util.RawParseUtils.decode;
+import static org.spearce.jgit.util.RawParseUtils.nextLF;
+
+import com.google.gerrit.client.data.SideBySideLine;
+import com.google.gerrit.client.data.SideBySidePatchDetail;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.CorruptEntityException;
+import com.google.gerrit.client.rpc.BaseServiceImplementation.Failure;
+import com.google.gerrit.git.InvalidRepositoryException;
+import com.google.gerrit.git.RepositoryCache;
+import com.google.gwtorm.client.OrmException;
+
+import org.spearce.jgit.lib.AbbreviatedObjectId;
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.lib.Repository;
+import org.spearce.jgit.patch.CombinedFileHeader;
+import org.spearce.jgit.patch.CombinedHunkHeader;
+import org.spearce.jgit.patch.HunkHeader;
+import org.spearce.jgit.util.IntList;
+import org.spearce.jgit.util.RawParseUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+class SideBySidePatchDetailAction extends
+    PatchDetailAction<SideBySidePatchDetail> {
+  private final RepositoryCache repoCache;
+  private int fileCount;
+  private byte[][] fileContents;
+  private IntList[] lineIndex;
+
+  SideBySidePatchDetailAction(final RepositoryCache rc, final Patch.Key key) {
+    super(key);
+    repoCache = rc;
+  }
+
+  public SideBySidePatchDetail run(final ReviewDb db) throws OrmException,
+      Failure {
+    init(db);
+
+    if (file.getHunks().isEmpty()) {
+      throw new Failure(new CorruptEntityException(key));
+    }
+
+    openContents(db);
+
+    final ArrayList<List<SideBySideLine>> lines =
+        new ArrayList<List<SideBySideLine>>();
+    if (file instanceof CombinedFileHeader) {
+      for (final CombinedHunkHeader h : ((CombinedFileHeader) file).getHunks()) {
+      }
+
+    } else {
+      for (final HunkHeader h : file.getHunks()) {
+        int oldLine = h.getOldImage().getStartLine();
+        int newLine = h.getNewStartLine();
+
+        final byte[] buf = h.getBuffer();
+        final int hunkEnd = h.getEndOffset();
+        int ptr = h.getStartOffset();
+        int eol = nextLF(buf, ptr);
+        SCAN: for (ptr = eol; ptr < hunkEnd; ptr = eol) {
+          eol = nextLF(buf, ptr);
+
+          final SideBySideLine o, n;
+          switch (buf[ptr]) {
+            case ' ':
+            case '\n': {
+              final String text = decode(Constants.CHARSET, buf, ptr + 1, eol);
+
+              o = new SideBySideLine(oldLine, SideBySideLine.Type.EQUAL, text);
+              n = new SideBySideLine(newLine, SideBySideLine.Type.EQUAL, text);
+              oldLine++;
+              newLine++;
+              break;
+            }
+            case '-': {
+              final String text = decode(Constants.CHARSET, buf, ptr + 1, eol);
+              o = new SideBySideLine(oldLine, SideBySideLine.Type.DELETE, text);
+              n = null;
+              oldLine++;
+              break;
+            }
+            case '+': {
+              final String text = decode(Constants.CHARSET, buf, ptr + 1, eol);
+              o = null;
+              n = new SideBySideLine(newLine, SideBySideLine.Type.INSERT, text);
+              newLine++;
+
+              // Attempt to insert this line backwards where it matches as a
+              // replacement for a prior deletion. Typically the delete is
+              // presented first in the patch, then the addition, so we only
+              // need to backtrack here.
+              //
+              int p = lines.size();
+              while (0 < p && lines.get(p - 1).get(1) == null) {
+                p--;
+              }
+              if (0 < p && p < lines.size() && lines.get(p).get(1) == null) {
+                lines.get(p).set(1, n);
+                continue;
+              }
+              break;
+            }
+            case '\\':
+              continue;
+            default:
+              break SCAN;
+          }
+          lines.add(Arrays.asList(new SideBySideLine[] {o, n}));
+        }
+      }
+    }
+
+    for (final List<SideBySideLine> p : lines) {
+      for (int i = 0; i < fileCount; i++) {
+        final SideBySideLine line = p.get(i);
+        if (line != null) {
+          addComments(line, published, i, line.getLineNumber());
+          if (drafted != null) {
+            addComments(line, drafted, i, line.getLineNumber());
+          }
+        }
+      }
+    }
+
+    int maxLine = 0;
+    for (int i = 0; i < fileCount; i++) {
+      maxLine = Math.max(maxLine, lineIndex[i].size());
+    }
+
+    final SideBySidePatchDetail d;
+    d = new SideBySidePatchDetail(patch, accountInfo.create());
+    d.setLines(fileCount, maxLine, lines);
+    return d;
+  }
+
+  private void openContents(final ReviewDb db) throws Failure, OrmException {
+    final Change.Id changeId = key.getParentKey().getParentKey();
+    final Change change = db.changes().get(changeId);
+    if (change == null || change.getDest() == null) {
+      throw new Failure(new CorruptEntityException(changeId));
+    }
+
+    final Repository repo;
+    try {
+      repo = repoCache.get(change.getDest().getParentKey().get());
+    } catch (InvalidRepositoryException err) {
+      throw new Failure(err);
+    }
+
+    if (file instanceof CombinedFileHeader) {
+      final CombinedFileHeader ch = (CombinedFileHeader) file;
+
+      fileCount = ch.getParentCount() + 1;
+      fileContents = new byte[fileCount][];
+      for (int i = 0; i < ch.getParentCount(); i++) {
+        final AbbreviatedObjectId old = ch.getOldId(i);
+        if (old == null || !old.isComplete()) {
+          throw new Failure(new CorruptEntityException(key));
+        }
+        fileContents[i] = read(repo, old.toObjectId());
+      }
+
+    } else {
+      if (file.getOldId() == null || !file.getOldId().isComplete()) {
+        throw new Failure(new CorruptEntityException(key));
+      }
+
+      fileCount = 2;
+      fileContents = new byte[fileCount][];
+      fileContents[0] = read(repo, file.getOldId().toObjectId());
+    }
+
+    if (file.getNewId() == null || !file.getNewId().isComplete()) {
+      throw new Failure(new CorruptEntityException(key));
+    }
+    fileContents[fileCount - 1] = read(repo, file.getNewId().toObjectId());
+
+    lineIndex = new IntList[fileCount];
+    for (int i = 0; i < fileCount; i++) {
+      final byte[] c = fileContents[i];
+      lineIndex[i] = RawParseUtils.lineMap(c, 0, c.length);
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/patch/UnifiedPatchDetailAction.java b/appjar/src/main/java/com/google/gerrit/server/patch/UnifiedPatchDetailAction.java
new file mode 100644
index 0000000..edf8114
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/patch/UnifiedPatchDetailAction.java
@@ -0,0 +1,119 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.patch;
+
+import static org.spearce.jgit.util.RawParseUtils.decode;
+import static org.spearce.jgit.util.RawParseUtils.nextLF;
+
+import com.google.gerrit.client.data.PatchLine;
+import com.google.gerrit.client.data.UnifiedPatchDetail;
+import com.google.gerrit.client.data.PatchLine.Type;
+import com.google.gerrit.client.reviewdb.Patch;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation.Failure;
+import com.google.gwtorm.client.OrmException;
+
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.patch.HunkHeader;
+
+import java.util.ArrayList;
+
+class UnifiedPatchDetailAction extends PatchDetailAction<UnifiedPatchDetail> {
+  UnifiedPatchDetailAction(final Patch.Key key) {
+    super(key);
+  }
+
+  public UnifiedPatchDetail run(final ReviewDb db) throws OrmException, Failure {
+    init(db);
+
+    final byte[] buf = file.getBuffer();
+    int ptr = file.getStartOffset();
+    final int end = file.getEndOffset();
+    final int hdrEnd;
+    final ArrayList<PatchLine> lines = new ArrayList<PatchLine>();
+
+    if (file.getHunks().size() > 0) {
+      hdrEnd = file.getHunks().get(0).getStartOffset();
+    } else if (file.getForwardBinaryHunk() != null) {
+      hdrEnd = file.getForwardBinaryHunk().getStartOffset();
+    } else if (file.getReverseBinaryHunk() != null) {
+      hdrEnd = file.getReverseBinaryHunk().getStartOffset();
+    } else {
+      hdrEnd = end;
+    }
+
+    int eol;
+    for (; ptr < hdrEnd; ptr = eol) {
+      eol = nextLF(buf, ptr);
+      lines.add(new PatchLine(0, 0, Type.FILE_HEADER, decode(Constants.CHARSET,
+          buf, ptr, eol)));
+    }
+
+    for (final HunkHeader h : file.getHunks()) {
+      final int hunkEnd = h.getEndOffset();
+      if (ptr < hunkEnd) {
+        eol = nextLF(buf, ptr);
+        lines.add(new PatchLine(h.getOldImage().getStartLine(), h
+            .getNewStartLine(), Type.HUNK_HEADER, decode(Constants.CHARSET,
+            buf, ptr, eol)));
+        ptr = eol;
+      }
+
+      int oldLine = h.getOldImage().getStartLine() - 1;
+      int newLine = h.getNewStartLine() - 1;
+      SCAN: for (; ptr < hunkEnd; ptr = eol) {
+        eol = nextLF(buf, ptr);
+        final PatchLine.Type type;
+        switch (buf[ptr]) {
+          case ' ':
+          case '\n':
+            oldLine++;
+            newLine++;
+            type = Type.CONTEXT;
+            break;
+          case '-':
+            oldLine++;
+            type = Type.PRE_IMAGE;
+            break;
+          case '+':
+            newLine++;
+            type = Type.POST_IMAGE;
+            break;
+          case '\\':
+            type = Type.CONTEXT;
+            break;
+          default:
+            break SCAN;
+        }
+
+        final PatchLine pLine =
+            new PatchLine(oldLine, newLine, type, decode(Constants.CHARSET,
+                buf, ptr, eol));
+        addComments(pLine, published, 0, oldLine);
+        addComments(pLine, published, 1, newLine);
+        if (drafted != null) {
+          addComments(pLine, drafted, 0, oldLine);
+          addComments(pLine, drafted, 1, newLine);
+        }
+        lines.add(pLine);
+      }
+    }
+
+    final UnifiedPatchDetail d;
+    d = new UnifiedPatchDetail(patch, accountInfo.create());
+    d.setLines(lines);
+    return d;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/AbstractCommand.java b/appjar/src/main/java/com/google/gerrit/server/ssh/AbstractCommand.java
new file mode 100644
index 0000000..ec8923d
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/AbstractCommand.java
@@ -0,0 +1,192 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.git.RepositoryCache;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+import org.apache.sshd.server.CommandFactory.Command;
+import org.apache.sshd.server.CommandFactory.ExitCallback;
+import org.apache.sshd.server.CommandFactory.SessionAware;
+import org.apache.sshd.server.session.ServerSession;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/** Basic command implementation invoked by {@link GerritCommandFactory}. */
+abstract class AbstractCommand implements Command, SessionAware {
+  protected InputStream in;
+  protected OutputStream out;
+  protected OutputStream err;
+  protected ExitCallback exit;
+  protected ServerSession session;
+  private String name;
+  private String[] args;
+
+  public void setInputStream(final InputStream in) {
+    this.in = in;
+  }
+
+  public void setOutputStream(final OutputStream out) {
+    this.out = out;
+  }
+
+  public void setErrorStream(final OutputStream err) {
+    this.err = err;
+  }
+
+  public void setExitCallback(final ExitCallback callback) {
+    this.exit = callback;
+  }
+
+  public void setSession(final ServerSession session) {
+    this.session = session;
+  }
+
+  protected GerritServer getGerritServer() throws Failure {
+    try {
+      return GerritServer.getInstance();
+    } catch (OrmException e) {
+      throw new Failure(128, "fatal: Gerrit is not available");
+    } catch (XsrfException e) {
+      throw new Failure(128, "fatal: Gerrit is not available");
+    }
+  }
+
+  protected RepositoryCache getRepositoryCache() throws Failure {
+    final RepositoryCache rc = getGerritServer().getRepositoryCache();
+    if (rc == null) {
+      throw new Failure(128, "fatal: Gerrit repositories are not available");
+    }
+    return rc;
+  }
+
+  protected ReviewDb openReviewDb() throws Failure {
+    try {
+      return Common.getSchemaFactory().open();
+    } catch (OrmException e) {
+      throw new Failure(1, "fatal: Gerrit database is offline");
+    }
+  }
+
+  protected Account.Id getAccountId() {
+    return session.getAttribute(SshUtil.CURRENT_ACCOUNT);
+  }
+
+  protected String getName() {
+    return name;
+  }
+
+  void parseArguments(final String cmdName, final String line) {
+    final List<String> list = new ArrayList<String>();
+    boolean inquote = false;
+    StringBuilder r = new StringBuilder();
+    for (int ip = 0; ip < line.length();) {
+      final char b = line.charAt(ip++);
+      switch (b) {
+        case '\t':
+        case ' ':
+          if (inquote)
+            r.append(b);
+          else if (r.length() > 0) {
+            list.add(r.toString());
+            r = new StringBuilder();
+          }
+          continue;
+        case '\'':
+          inquote = !inquote;
+          continue;
+        case '\\':
+          if (inquote || ip == line.length())
+            r.append(b); // literal within a quote
+          else
+            r.append(line.charAt(ip++));
+          continue;
+        default:
+          r.append(b);
+          continue;
+      }
+    }
+    if (r.length() > 0) {
+      list.add(r.toString());
+    }
+    name = cmdName;
+    args = list.toArray(new String[list.size()]);
+  }
+
+  public void start() {
+    final String who = session.getUsername() + "," + getAccountId();
+    new Thread("Execute " + getName() + " [" + who + "]") {
+      @Override
+      public void run() {
+        runImp();
+      }
+    }.start();
+  }
+
+  private void runImp() {
+    int rc = 0;
+    try {
+      try {
+        run(args);
+      } catch (IOException e) {
+        rc = 1;
+      } catch (Failure e) {
+        rc = e.exitCode;
+        try {
+          err.write((e.getMessage() + '\n').getBytes("UTF-8"));
+          err.flush();
+        } catch (IOException err) {
+        }
+      }
+    } finally {
+      try {
+        in.close();
+      } catch (IOException err) {
+      }
+
+      try {
+        out.close();
+      } catch (IOException err) {
+      }
+
+      try {
+        err.close();
+      } catch (IOException err) {
+      }
+
+      exit.onExit(rc);
+    }
+  }
+
+  protected abstract void run(final String args[]) throws IOException, Failure;
+
+  public static class Failure extends Exception {
+    final int exitCode;
+
+    public Failure(final int exitCode, final String why) {
+      super(why);
+      this.exitCode = exitCode;
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/AbstractGitCommand.java b/appjar/src/main/java/com/google/gerrit/server/ssh/AbstractGitCommand.java
new file mode 100644
index 0000000..35a03e9
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/AbstractGitCommand.java
@@ -0,0 +1,102 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import com.google.gerrit.client.data.ProjectCache;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.Project;
+import com.google.gerrit.client.reviewdb.ProjectRight;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.BaseServiceImplementation;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.git.InvalidRepositoryException;
+
+import org.spearce.jgit.lib.Repository;
+
+import java.io.IOException;
+
+abstract class AbstractGitCommand extends AbstractCommand {
+  protected Repository repo;
+  protected Project proj;
+  protected Account userAccount;
+  protected ReviewDb db;
+
+  protected boolean isGerrit() {
+    return getName().startsWith("gerrit-");
+  }
+
+  @Override
+  protected final void run(final String[] args) throws IOException, Failure {
+    final String reqName = parseCommandLine(args);
+    String projectName = reqName;
+    if (projectName.endsWith(".git")) {
+      // Be nice and drop the trailing ".git" suffix, which we never keep
+      // in our database, but clients might mistakenly provide anyway.
+      //
+      projectName = projectName.substring(0, projectName.length() - 4);
+    }
+    if (projectName.startsWith("/")) {
+      // Be nice and drop the leading "/" if supplied by an absolute path.
+      // We don't have a file system hierarchy, just a flat namespace in
+      // the database's Project entities. We never encode these with a
+      // leading '/' but users might accidentally include them in Git URLs.
+      //
+      projectName = projectName.substring(1);
+    }
+
+    final ProjectCache.Entry cachedProj =
+        Common.getProjectCache().get(new Project.NameKey(projectName));
+    if (cachedProj == null) {
+      throw new Failure(1, "fatal: '" + reqName + "': not a Gerrit project");
+    }
+
+    proj = cachedProj.getProject();
+    if (ProjectRight.WILD_PROJECT.equals(proj.getId())) {
+      throw new Failure(1, "fatal: '" + reqName + "': not a valid project");
+    }
+    if (!BaseServiceImplementation.canRead(proj.getNameKey())) {
+      throw new Failure(1, "fatal: '" + reqName + "': not a Gerrit project");
+    }
+
+    try {
+      repo = getRepositoryCache().get(proj.getName());
+    } catch (InvalidRepositoryException e) {
+      throw new Failure(1, "fatal: '" + reqName + "': not a git archive");
+    }
+
+    db = openReviewDb();
+    try {
+      userAccount = Common.getAccountCache().get(getAccountId(), db);
+      if (userAccount == null) {
+        throw new Failure(1, "fatal: cannot query user database");
+      }
+
+      runImpl();
+    } finally {
+      closeDb();
+    }
+  }
+
+  protected void closeDb() {
+    if (db != null) {
+      db.close();
+      db = null;
+    }
+  }
+
+  protected abstract void runImpl() throws IOException, Failure;
+
+  protected abstract String parseCommandLine(String[] args) throws Failure;
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/AdminFlushCaches.java b/appjar/src/main/java/com/google/gerrit/server/ssh/AdminFlushCaches.java
new file mode 100644
index 0000000..435c2d8
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/AdminFlushCaches.java
@@ -0,0 +1,33 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import com.google.gerrit.client.data.GroupCache;
+import com.google.gerrit.client.rpc.Common;
+
+/** Causes the caches to purge all entries and reload. */
+class AdminFlushCaches extends AbstractCommand {
+  @Override
+  protected void run(String[] args) throws Failure {
+    final GroupCache gc = Common.getGroupCache();
+    if (gc.isAdministrator(getAccountId())) {
+      gc.flush();
+      Common.getProjectCache().flush();
+      Common.getAccountCache().flush();
+    } else {
+      throw new Failure(1, "fatal: Not a Gerrit administrator");
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/DatabasePubKeyAuth.java b/appjar/src/main/java/com/google/gerrit/server/ssh/DatabasePubKeyAuth.java
new file mode 100644
index 0000000..2f92edc
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/DatabasePubKeyAuth.java
@@ -0,0 +1,116 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import com.google.gerrit.client.reviewdb.AccountSshKey;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwtorm.client.OrmException;
+
+import org.apache.sshd.server.PublickeyAuthenticator;
+import org.apache.sshd.server.session.ServerSession;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.PublicKey;
+import java.security.spec.InvalidKeySpecException;
+import java.util.Collections;
+
+/**
+ * Authenticates by public key through {@link AccountSshKey} entities.
+ * <p>
+ * The username supplied by the client must be the user's preferred email
+ * address, as listed in their Account entity. Only keys listed under that
+ * account as authorized keys are permitted to access the account.
+ */
+class DatabasePubKeyAuth implements PublickeyAuthenticator {
+  public boolean hasKey(final String username, final PublicKey inkey,
+      final ServerSession session) {
+    AccountSshKey matched = null;
+
+    for (final AccountSshKey k : SshUtil.keysFor(username)) {
+      if (match(username, k, inkey)) {
+        if (matched == null) {
+          matched = k;
+
+        } else if (!matched.getAccount().equals(k.getAccount())) {
+          // Don't permit keys to authenticate to different accounts
+          // that have the same username and public key.
+          //
+          // We'd have to pick one at random, yielding unpredictable
+          // behavior for the end-user.
+          //
+          return false;
+        }
+      }
+    }
+
+    if (matched != null) {
+      updateLastUsed(matched);
+      session.setAttribute(SshUtil.CURRENT_ACCOUNT, matched.getAccount());
+      return true;
+    }
+    return false;
+  }
+
+  private boolean match(final String username, final AccountSshKey k,
+      final PublicKey inkey) {
+    try {
+      return SshUtil.parse(k).equals(inkey);
+    } catch (NoSuchAlgorithmException e) {
+      markInvalid(username, k);
+      return false;
+    } catch (InvalidKeySpecException e) {
+      markInvalid(username, k);
+      return false;
+    } catch (NoSuchProviderException e) {
+      markInvalid(username, k);
+      return false;
+    } catch (RuntimeException e) {
+      markInvalid(username, k);
+      return false;
+    }
+  }
+
+  private void markInvalid(final String username, final AccountSshKey k) {
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        k.setInvalid();
+        db.accountSshKeys().update(Collections.singleton(k));
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      // TODO log mark invalid failure
+    } finally {
+      SshUtil.invalidate(username);
+    }
+  }
+
+  private void updateLastUsed(final AccountSshKey k) {
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        k.setLastUsedOn();
+        db.accountSshKeys().update(Collections.singleton(k));
+      } finally {
+        db.close();
+      }
+    } catch (OrmException e) {
+      // TODO log update last used failure
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/GerritCommandFactory.java b/appjar/src/main/java/com/google/gerrit/server/ssh/GerritCommandFactory.java
new file mode 100644
index 0000000..610599f
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/GerritCommandFactory.java
@@ -0,0 +1,99 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import org.apache.sshd.server.CommandFactory;
+
+import java.util.HashMap;
+
+/** Creates a command implementation based on the client input. */
+class GerritCommandFactory implements CommandFactory {
+  private final HashMap<String, Factory> commands;
+
+  GerritCommandFactory() {
+    commands = new HashMap<String, Factory>();
+
+    commands.put("gerrit-upload-pack", new Factory() {
+      public AbstractCommand create() {
+        return new Upload();
+      }
+    });
+    commands.put("gerrit-receive-pack", new Factory() {
+      public AbstractCommand create() {
+        return new Receive();
+      }
+    });
+    commands.put("gerrit-flush-caches", new Factory() {
+      public AbstractCommand create() {
+        return new AdminFlushCaches();
+      }
+    });
+
+    alias("gerrit-upload-pack", "git-upload-pack");
+    alias("gerrit-receive-pack", "git-receive-pack");
+  }
+
+  private void alias(final String from, final String to) {
+    commands.put(to, commands.get(from));
+  }
+
+  public Command createCommand(final String commandLine) {
+    final int sp1 = commandLine.indexOf(' ');
+    String cmd, args;
+    if (0 < sp1) {
+      cmd = commandLine.substring(0, sp1);
+      args = commandLine.substring(sp1 + 1);
+    } else {
+      cmd = commandLine;
+      args = "";
+    }
+
+    // Support newer-style "git receive-pack" requests by converting
+    // to the older-style "git-receive-pack".
+    //
+    if ("git".equals(cmd) || "gerrit".equals(cmd)) {
+      cmd += "-";
+      final int sp2 = args.indexOf(' ');
+      if (0 < sp2) {
+        cmd += args.substring(0, sp2);
+        args = args.substring(sp2 + 1);
+      } else {
+        cmd += args;
+        args = "";
+      }
+    }
+
+    final AbstractCommand c = create(cmd);
+    c.parseArguments(cmd, args);
+    return c;
+  }
+
+  private AbstractCommand create(final String cmd) {
+    final Factory f = commands.get(cmd);
+    if (f != null) {
+      return f.create();
+    }
+    return new AbstractCommand() {
+      @Override
+      protected void run(final String[] argv) throws Failure {
+        throw new Failure(127, "gerrit: " + getName() + ": not found");
+      }
+    };
+  }
+
+  protected static interface Factory {
+    AbstractCommand create();
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/NoShell.java b/appjar/src/main/java/com/google/gerrit/server/ssh/NoShell.java
new file mode 100644
index 0000000..7f9b1a2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/NoShell.java
@@ -0,0 +1,68 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import org.apache.sshd.server.ShellFactory;
+import org.spearce.jgit.lib.Constants;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Map;
+
+/**
+ * Dummy shell which prints a message and terminates.
+ * <p>
+ * This implementation is used by {@link SshServlet} to ensure clients who try
+ * to SSH directly to this server without supplying a command will get a
+ * reasonable error message, but cannot continue further.
+ */
+class NoShell implements ShellFactory {
+  public Shell createShell() {
+    return new Shell() {
+      private InputStream in;
+      private OutputStream out;
+      private OutputStream err;
+      private ExitCallback exit;
+
+      public void setInputStream(final InputStream in) {
+        this.in = in;
+      }
+
+      public void setOutputStream(final OutputStream out) {
+        this.out = out;
+      }
+
+      public void setErrorStream(final OutputStream err) {
+        this.err = err;
+      }
+
+      public void setExitCallback(final ExitCallback callback) {
+        this.exit = callback;
+      }
+
+      public void start(final Map<String, String> env) throws IOException {
+        err.write(Constants.encodeASCII("gerrit: no shell available\n"));
+        in.close();
+        out.close();
+        err.close();
+        exit.onExit(127);
+      }
+
+      public void destroy() {
+      }
+    };
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/Receive.java b/appjar/src/main/java/com/google/gerrit/server/ssh/Receive.java
new file mode 100644
index 0000000..9a57ef2
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/Receive.java
@@ -0,0 +1,588 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.data.ApprovalType;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountAgreement;
+import com.google.gerrit.client.reviewdb.AccountExternalId;
+import com.google.gerrit.client.reviewdb.ApprovalCategory;
+import com.google.gerrit.client.reviewdb.ApprovalCategoryValue;
+import com.google.gerrit.client.reviewdb.Branch;
+import com.google.gerrit.client.reviewdb.Change;
+import com.google.gerrit.client.reviewdb.ChangeApproval;
+import com.google.gerrit.client.reviewdb.ChangeMessage;
+import com.google.gerrit.client.reviewdb.ContactInformation;
+import com.google.gerrit.client.reviewdb.ContributorAgreement;
+import com.google.gerrit.client.reviewdb.PatchSet;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.git.PatchSetImporter;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwtorm.client.OrmException;
+import com.google.gwtorm.client.Transaction;
+
+import org.spearce.jgit.lib.Constants;
+import org.spearce.jgit.lib.ObjectId;
+import org.spearce.jgit.lib.PersonIdent;
+import org.spearce.jgit.lib.Ref;
+import org.spearce.jgit.lib.RefUpdate;
+import org.spearce.jgit.revwalk.RevCommit;
+import org.spearce.jgit.revwalk.RevSort;
+import org.spearce.jgit.revwalk.RevWalk;
+import org.spearce.jgit.transport.PreReceiveHook;
+import org.spearce.jgit.transport.ReceiveCommand;
+import org.spearce.jgit.transport.ReceivePack;
+import org.spearce.jgit.transport.ReceiveCommand.Result;
+import org.spearce.jgit.util.Base64;
+import org.spearce.jgit.util.NB;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/** Receives change upload over SSH using the Git receive-pack protocol. */
+class Receive extends AbstractGitCommand {
+  private static final String NEW_CHANGE = "refs/for/";
+  private static final Pattern NEW_PATCHSET =
+      Pattern.compile("^refs/changes/(?:[0-9][0-9]/)?([1-9][0-9]*)(?:/new)?$");
+
+  private final Set<String> reviewerEmail = new HashSet<String>();
+  private final Set<String> ccEmail = new HashSet<String>();
+
+  private final Set<Account.Id> reviewerId = new HashSet<Account.Id>();
+  private final Set<Account.Id> ccId = new HashSet<Account.Id>();
+
+  private GerritServer server;
+  private ReceivePack rp;
+  private ReceiveCommand newChange;
+  private Branch destBranch;
+
+  private final Set<String> myEmails = new HashSet<String>();
+  private final List<Change.Id> allNewChanges = new ArrayList<Change.Id>();
+
+  private final Map<Change.Id, ReceiveCommand> addByChange =
+      new HashMap<Change.Id, ReceiveCommand>();
+  private final Map<ObjectId, Change> addByCommit =
+      new HashMap<ObjectId, Change>();
+  private final Map<Change.Id, Change> changeCache =
+      new HashMap<Change.Id, Change>();
+
+  @Override
+  protected void runImpl() throws IOException, Failure {
+    server = getGerritServer();
+    if (Common.getGerritConfig().isUseContributorAgreements()
+        && proj.isUseContributorAgreements()) {
+      verifyActiveContributorAgreement();
+    }
+    loadMyEmails();
+    lookup(reviewerId, "reviewer", reviewerEmail);
+    lookup(ccId, "cc", ccEmail);
+
+    rp = new ReceivePack(repo);
+    rp.setAllowCreates(true);
+    rp.setAllowDeletes(true);
+    rp.setAllowNonFastForwards(true);
+    rp.setCheckReceivedObjects(true);
+    rp.setPreReceiveHook(new PreReceiveHook() {
+      public void onPreReceive(final ReceivePack arg0,
+          final Collection<ReceiveCommand> commands) {
+        parseCommands(commands);
+        createNewChanges();
+        appendPatchSets();
+      }
+    });
+    rp.receive(in, out, err);
+
+    if (!allNewChanges.isEmpty() && server.getCanonicalURL() != null) {
+      // Make sure there isn't anything buffered; we want to give the
+      // push client a chance to display its status report before we
+      // show our own messages on standard error.
+      //
+      out.flush();
+
+      final String url = server.getCanonicalURL();
+      final OutputStreamWriter msg = new OutputStreamWriter(err, "UTF-8");
+      msg.write("\nNew Changes:\n");
+      for (final Change.Id c : allNewChanges) {
+        msg.write("  " + url + "Gerrit#" + Link.toChange(c) + "\n");
+      }
+      msg.write('\n');
+      msg.flush();
+    }
+  }
+
+  private void verifyActiveContributorAgreement() throws Failure {
+    AccountAgreement bestAgreement = null;
+    ContributorAgreement bestCla = null;
+    try {
+      for (final AccountAgreement a : db.accountAgreements().byAccount(
+          userAccount.getId()).toList()) {
+        final ContributorAgreement cla =
+            db.contributorAgreements().get(a.getAgreementId());
+        if (cla == null) {
+          continue;
+        }
+
+        bestAgreement = a;
+        bestCla = cla;
+        break;
+      }
+    } catch (OrmException e) {
+      throw new Failure(1, "database error");
+    }
+
+    if (bestCla != null && !bestCla.isActive()) {
+      final StringBuilder msg = new StringBuilder();
+      msg.append("\nfatal: ");
+      msg.append(bestCla.getShortName());
+      msg.append(" contributor agreement is expired.\n");
+      if (server.getCanonicalURL() != null) {
+        msg.append("\nPlease complete a new agreement");
+        msg.append(":\n\n  ");
+        msg.append(server.getCanonicalURL());
+        msg.append("Gerrit#");
+        msg.append(Link.SETTINGS_AGREEMENTS);
+        msg.append("\n");
+      }
+      msg.append("\n");
+      throw new Failure(1, msg.toString());
+    }
+
+    if (bestCla != null && bestCla.isRequireContactInformation()) {
+      final ContactInformation info = userAccount.getContactInformation();
+      boolean fail = false;
+      fail |= missing(userAccount.getFullName());
+      fail |= missing(userAccount.getPreferredEmail());
+      fail |= info == null || missing(info.getAddress());
+
+      if (fail) {
+        final StringBuilder msg = new StringBuilder();
+        msg.append("\nfatal: ");
+        msg.append(bestCla.getShortName());
+        msg.append(" contributor agreement requires");
+        msg.append(" current contact information.\n");
+        if (server.getCanonicalURL() != null) {
+          msg.append("\nPlease review your contact information");
+          msg.append(":\n\n  ");
+          msg.append(server.getCanonicalURL());
+          msg.append("Gerrit#");
+          msg.append(Link.SETTINGS_CONTACT);
+          msg.append("\n");
+        }
+        msg.append("\n");
+        throw new Failure(1, msg.toString());
+      }
+    }
+
+    if (bestAgreement != null) {
+      switch (bestAgreement.getStatus()) {
+        case VERIFIED:
+          return;
+        case REJECTED:
+          throw new Failure(1, "\nfatal: " + bestCla.getShortName()
+              + " contributor agreement was rejected."
+              + "\n       (rejected on " + bestAgreement.getReviewedOn()
+              + ")\n");
+        case NEW:
+          throw new Failure(1, "\nfatal: " + bestCla.getShortName()
+              + " contributor agreement is still pending review.\n");
+      }
+    }
+
+    final StringBuilder msg = new StringBuilder();
+    msg.append("\nfatal: A Contributor Agreement"
+        + " must be completed before uploading");
+    if (server.getCanonicalURL() != null) {
+      msg.append(":\n\n  ");
+      msg.append(server.getCanonicalURL());
+      msg.append("Gerrit#");
+      msg.append(Link.SETTINGS_AGREEMENTS);
+      msg.append("\n");
+    } else {
+      msg.append(".");
+    }
+    msg.append("\n");
+    throw new Failure(1, msg.toString());
+  }
+
+  private static boolean missing(final String value) {
+    return value == null || value.trim().equals("");
+  }
+
+  private void loadMyEmails() throws Failure {
+    try {
+      for (final AccountExternalId id : db.accountExternalIds().byAccount(
+          userAccount.getId())) {
+        if (id.getEmailAddress() != null && id.getEmailAddress().length() > 0) {
+          myEmails.add(id.getEmailAddress());
+        }
+      }
+    } catch (OrmException e) {
+      throw new Failure(1, "database error");
+    }
+  }
+
+  private void lookup(final Set<Account.Id> accountIds,
+      final String addressType, final Set<String> emails) throws Failure {
+    final StringBuilder errors = new StringBuilder();
+    try {
+      for (final String email : emails) {
+        final Account who = Account.find(db, email);
+        if (who != null) {
+          accountIds.add(who.getId());
+        } else {
+          errors.append("fatal: " + addressType + " " + email
+              + " is not registered on Gerrit\n");
+        }
+      }
+    } catch (OrmException err) {
+      throw new Failure(1, "fatal: cannot lookup reviewers, database is down");
+    }
+    if (errors.length() > 0) {
+      throw new Failure(1, errors.toString());
+    }
+  }
+
+  @Override
+  protected String parseCommandLine(final String[] args) throws Failure {
+    int argi = 0;
+    if (isGerrit()) {
+      for (; argi < args.length - 1; argi++) {
+        final int eq = args[argi].indexOf('=');
+        final String opt, val;
+        if (eq < 0) {
+          opt = args[argi];
+          val = "";
+        } else {
+          opt = args[argi].substring(0, eq);
+          val = args[argi].substring(eq + 1);
+        }
+
+        if (opt.equals("--reviewer")) {
+          reviewerEmail.add(val);
+          continue;
+        }
+        if (opt.equals("--cc")) {
+          ccEmail.add(val);
+          continue;
+        }
+        break;
+      }
+    }
+    if (argi != args.length - 1) {
+      throw usage();
+    }
+    return args[argi];
+  }
+
+  private Failure usage() {
+    final StringBuilder m = new StringBuilder();
+    m.append("usage: ");
+    m.append(getName());
+    if (isGerrit()) {
+      m.append(" [--reviewer=email]*");
+      m.append(" [--cc=email]*");
+    }
+    m.append(" '/project.git'");
+    return new Failure(1, m.toString());
+  }
+
+  private void parseCommands(final Collection<ReceiveCommand> commands) {
+    for (final ReceiveCommand cmd : commands) {
+      if (cmd.getResult() != ReceiveCommand.Result.NOT_ATTEMPTED) {
+        // Already rejected by the core receive process.
+        //
+        continue;
+      }
+
+      if (cmd.getRefName().startsWith(NEW_CHANGE)) {
+        parseNewChangeCommand(cmd);
+        continue;
+      }
+
+      final Matcher m = NEW_PATCHSET.matcher(cmd.getRefName());
+      if (m.matches()) {
+        // The referenced change must exist and must still be open.
+        //
+        final Change.Id changeId = Change.Id.parse(m.group(1));
+        parseNewPatchSetCommand(cmd, changeId);
+        continue;
+      }
+
+      // Everything else is bogus as far as we are concerned.
+      //
+      reject(cmd);
+    }
+  }
+
+  private void parseNewChangeCommand(final ReceiveCommand cmd) {
+    // Permit exactly one new change request per push.
+    //
+    if (newChange != null) {
+      reject(cmd, "duplicate request");
+      return;
+    }
+
+    newChange = cmd;
+    String destBranchName = cmd.getRefName().substring(NEW_CHANGE.length());
+    if (!destBranchName.startsWith(Constants.R_REFS)) {
+      destBranchName = Constants.R_HEADS + destBranchName;
+    }
+
+    try {
+      destBranch =
+          db.branches().get(
+              new Branch.NameKey(proj.getNameKey(), destBranchName));
+    } catch (OrmException e) {
+      reject(cmd, "database error");
+      return;
+    }
+    if (destBranch == null) {
+      String n = destBranchName;
+      if (n.startsWith(Constants.R_HEADS))
+        n = n.substring(Constants.R_HEADS.length());
+      reject(cmd, "branch " + n + " not found");
+      return;
+    }
+  }
+
+  private void parseNewPatchSetCommand(final ReceiveCommand cmd,
+      final Change.Id changeId) {
+    final Change changeEnt;
+    try {
+      changeEnt = db.changes().get(changeId);
+    } catch (OrmException e) {
+      reject(cmd, "database error");
+      return;
+    }
+    if (changeEnt == null) {
+      reject(cmd, "change " + changeId.get() + " not found");
+      return;
+    }
+    if (changeEnt.getStatus().isClosed()) {
+      reject(cmd, "change " + changeId.get() + " closed");
+      return;
+    }
+
+    if (addByChange.containsKey(changeId)) {
+      reject(cmd, "duplicate request");
+      return;
+    }
+    if (addByCommit.containsKey(cmd.getNewId())) {
+      reject(cmd, "duplicate request");
+      return;
+    }
+
+    addByChange.put(changeId, cmd);
+    addByCommit.put(cmd.getNewId(), changeEnt);
+    changeCache.put(changeId, changeEnt);
+  }
+
+  private void createNewChanges() {
+    if (newChange == null
+        || newChange.getResult() != ReceiveCommand.Result.NOT_ATTEMPTED) {
+      return;
+    }
+
+    final List<RevCommit> toCreate = new ArrayList<RevCommit>();
+    final RevWalk walk = rp.getRevWalk();
+    walk.reset();
+    walk.sort(RevSort.TOPO);
+    walk.sort(RevSort.REVERSE, true);
+    try {
+      walk.markStart(walk.parseCommit(newChange.getNewId()));
+      for (final Ref r : rp.getAdvertisedRefs().values()) {
+        try {
+          walk.markUninteresting(walk.parseCommit(r.getObjectId()));
+        } catch (IOException e) {
+          continue;
+        }
+      }
+
+      for (;;) {
+        final RevCommit c = walk.next();
+        if (c == null) {
+          break;
+        }
+        if (addByCommit.containsKey(c.copy())) {
+          // This commit is slated to replace an existing PatchSet.
+          //
+          continue;
+        }
+        if (!validCommitter(newChange, c)) {
+          return;
+        }
+        toCreate.add(c);
+      }
+    } catch (IOException e) {
+      // Should never happen, the core receive process would have
+      // identified the missing object earlier before we got control.
+      //
+      newChange.setResult(Result.REJECTED_MISSING_OBJECT);
+    }
+
+    if (toCreate.isEmpty()) {
+      reject(newChange, "no new changes");
+      return;
+    }
+
+    try {
+      for (final RevCommit c : toCreate) {
+        createChange(walk, c);
+      }
+      newChange.setResult(ReceiveCommand.Result.OK);
+    } catch (IOException e) {
+      reject(newChange, "diff error");
+    } catch (OrmException e) {
+      reject(newChange, "database error");
+    }
+  }
+
+  private void createChange(final RevWalk walk, final RevCommit c)
+      throws OrmException, IOException {
+    final Transaction txn = db.beginTransaction();
+    final Change change =
+        new Change(new Change.Id(db.nextChangeId()), userAccount.getId(),
+            destBranch.getNameKey());
+    final PatchSet ps = new PatchSet(change.newPatchSetId());
+    final PatchSetImporter imp = new PatchSetImporter(db, repo, c, ps, true);
+    imp.setTransaction(txn);
+    imp.run();
+    change.setCurrentPatchSet(imp.getPatchSetInfo());
+    db.changes().insert(Collections.singleton(change));
+
+    for (final ApprovalType t : Common.getGerritConfig().getApprovalTypes()) {
+      final ApprovalCategoryValue v = t.getMax();
+      if (v != null) {
+        db.changeApprovals().insert(
+            Collections.singleton(new ChangeApproval(new ChangeApproval.Key(
+                change.getId(), userAccount.getId(), v.getCategoryId()), v
+                .getValue())));
+      }
+    }
+    txn.commit();
+
+    final RefUpdate ru = repo.updateRef(ps.getRefName());
+    ru.setForceUpdate(true);
+    ru.setNewObjectId(c);
+    ru.update(walk);
+
+    allNewChanges.add(change.getId());
+  }
+
+  private void appendPatchSets() {
+    for (Map.Entry<Change.Id, ReceiveCommand> e : addByChange.entrySet()) {
+      final ReceiveCommand cmd = e.getValue();
+      final Change.Id changeId = e.getKey();
+      final Change change = changeCache.get(changeId);
+      try {
+        appendPatchSet(change, cmd);
+
+        if (cmd.getResult() == ReceiveCommand.Result.NOT_ATTEMPTED) {
+          cmd.setResult(ReceiveCommand.Result.OK);
+        }
+      } catch (IOException err) {
+        reject(cmd, "diff error");
+      } catch (OrmException err) {
+        reject(cmd, "database error");
+      }
+    }
+  }
+
+  private void appendPatchSet(final Change change, final ReceiveCommand cmd)
+      throws IOException, OrmException {
+    final RevCommit c = rp.getRevWalk().parseCommit(cmd.getNewId());
+    if (!validCommitter(cmd, c)) {
+      return;
+    }
+    final Transaction txn = db.beginTransaction();
+    final PatchSet ps = new PatchSet(change.newPatchSetId());
+    final PatchSetImporter imp = new PatchSetImporter(db, repo, c, ps, true);
+    imp.setTransaction(txn);
+    imp.run();
+
+    final Set<ApprovalCategory.Id> have = new HashSet<ApprovalCategory.Id>();
+    for (final ChangeApproval a : db.changeApprovals().byChange(change.getId())) {
+      if (userAccount.getId().equals(a.getAccountId())) {
+        // Leave my own approvals alone.
+        //
+        have.add(a.getCategoryId());
+
+      } else if (a.getValue() > 0) {
+        a.clear();
+        db.changeApprovals().update(Collections.singleton(a), txn);
+      }
+    }
+    for (final ApprovalType t : Common.getGerritConfig().getApprovalTypes()) {
+      final ApprovalCategoryValue v = t.getMax();
+      if (!have.contains(t.getCategory().getId()) && v != null) {
+        db.changeApprovals().insert(
+            Collections.singleton(new ChangeApproval(new ChangeApproval.Key(
+                change.getId(), userAccount.getId(), v.getCategoryId()), v
+                .getValue())), txn);
+      }
+    }
+
+    final byte[] raw = new byte[4];
+    NB.encodeInt32(raw, 0, db.nextChangeMessageId());
+    final String uuid = Base64.encodeBytes(raw);
+    final ChangeMessage m =
+        new ChangeMessage(new ChangeMessage.Key(change.getId(), uuid),
+            getAccountId());
+    m.setMessage("Uploaded patch set " + ps.getPatchSetId() + ".");
+    db.changeMessages().insert(Collections.singleton(m), txn);
+
+    change.setStatus(Change.Status.NEW);
+    change.setCurrentPatchSet(imp.getPatchSetInfo());
+    change.updated();
+    db.changes().update(Collections.singleton(change), txn);
+    txn.commit();
+
+    final RefUpdate ru = repo.updateRef(ps.getRefName());
+    ru.setForceUpdate(true);
+    ru.setNewObjectId(c);
+    ru.update(rp.getRevWalk());
+  }
+
+  private boolean validCommitter(final ReceiveCommand cmd, final RevCommit c) {
+    // Require that committer matches the uploader.
+    final PersonIdent committer = c.getCommitterIdent();
+    final String email = committer.getEmailAddress();
+    if (myEmails.contains(email)) {
+      return true;
+    } else {
+      reject(cmd, "invalid committer " + email);
+      return false;
+    }
+  }
+
+  private static void reject(final ReceiveCommand cmd) {
+    reject(cmd, "prohibited by Gerrit");
+  }
+
+  private static void reject(final ReceiveCommand cmd, final String why) {
+    cmd.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON, why);
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/SshServlet.java b/appjar/src/main/java/com/google/gerrit/server/ssh/SshServlet.java
new file mode 100644
index 0000000..adb720c
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/SshServlet.java
@@ -0,0 +1,141 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.server.GerritServer;
+import com.google.gwtjsonrpc.server.XsrfException;
+import com.google.gwtorm.client.OrmException;
+
+import org.apache.sshd.SshServer;
+import org.apache.sshd.common.NamedFactory;
+import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
+import org.apache.sshd.server.UserAuth;
+import org.apache.sshd.server.auth.UserAuthPublicKey;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Arrays;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Servlet hosting an SSH daemon on another port. During a standard HTTP GET
+ * request the servlet returns the hostname and port number back to the client
+ * in the form <code>${host} ${port}</code>.
+ * <p>
+ * Use a Git URL such as <code>ssh://${email}@${host}:${port}/${path}</code>,
+ * e.g. <code>ssh://sop@google.com@gerrit.com:8010/tools/gerrit.git</code> to
+ * access the SSH daemon itself.
+ * <p>
+ * Versions of Git before 1.5.3 may require setting the username and port
+ * properties in the user's <code>~/.ssh/config</code> file, and using a host
+ * alias through a URL such as <code>gerrit-alias:/tools/gerrit.git:
+ * <pre>
+ * Host gerrit-alias
+ *  User sop@google.com
+ *  Hostname gerrit.com
+ *  Port 8010
+ * </pre>
+ */
+public class SshServlet extends HttpServlet {
+  private static SshServer sshd;
+
+  public static synchronized void startSshd() throws ServletException {
+    final GerritServer srv;
+    try {
+      srv = GerritServer.getInstance();
+    } catch (OrmException e) {
+      throw new ServletException("Cannot load GerritServer", e);
+    } catch (XsrfException e) {
+      throw new ServletException("Cannot load GerritServer", e);
+    }
+
+    final int myPort = Common.getGerritConfig().getSshdPort();
+    sshd = SshServer.setUpDefaultServer();
+    sshd.setPort(myPort);
+    sshd.setKeyPairProvider(new FileKeyPairProvider(new String[] {
+        new File(srv.getSitePath(), "ssh_host_rsa_key").getAbsolutePath(),
+        new File(srv.getSitePath(), "ssh_host_dsa_key").getAbsolutePath()}));
+    sshd.setUserAuthFactories(Arrays
+        .<NamedFactory<UserAuth>> asList(new UserAuthPublicKey.Factory()));
+    sshd.setPublickeyAuthenticator(new DatabasePubKeyAuth());
+    sshd.setCommandFactory(new GerritCommandFactory());
+    sshd.setShellFactory(new NoShell());
+
+    try {
+      sshd.start();
+    } catch (IOException e) {
+      sshd = null;
+      throw new ServletException("Cannot start sshd on " + sshd.getPort(), e);
+    }
+  }
+
+  public static synchronized void stopSshd() {
+    if (sshd != null) {
+      try {
+        sshd.stop();
+      } finally {
+        sshd = null;
+      }
+    }
+  }
+
+  public static synchronized int getSshdPort() {
+    return sshd != null ? sshd.getPort() : 0;
+  }
+
+  @Override
+  public void init(final ServletConfig config) throws ServletException {
+    super.init(config);
+    startSshd();
+  }
+
+  @Override
+  public void destroy() {
+    stopSshd();
+    super.destroy();
+  }
+
+  @Override
+  protected void doGet(final HttpServletRequest req,
+      final HttpServletResponse rsp) throws IOException {
+    rsp.setHeader("Expires", "Fri, 01 Jan 1980 00:00:00 GMT");
+    rsp.setHeader("Pragma", "no-cache");
+    rsp.setHeader("Cache-Control", "no-cache, must-revalidate");
+
+    final int port = getSshdPort();
+    final String out;
+    if (0 < port) {
+      out = req.getServerName() + " " + port;
+    } else {
+      out = "NOT_AVAILABLE";
+    }
+
+    rsp.setCharacterEncoding("UTF-8");
+    rsp.setContentType("text/plain");
+    final PrintWriter w = rsp.getWriter();
+    try {
+      w.write(out);
+    } finally {
+      w.close();
+    }
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/SshUtil.java b/appjar/src/main/java/com/google/gerrit/server/ssh/SshUtil.java
new file mode 100644
index 0000000..82c7021
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/SshUtil.java
@@ -0,0 +1,199 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.reviewdb.AccountSshKey;
+import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gwtorm.client.OrmException;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.sshd.common.KeyPairProvider;
+import org.apache.sshd.common.session.AttributeKey;
+import org.apache.sshd.common.util.Buffer;
+import org.spearce.jgit.lib.Constants;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.PublicKey;
+import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.InvalidKeySpecException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/** Utilities to support SSH operations. */
+public class SshUtil {
+  /** Server session attribute holding the {@link Account.Id}. */
+  static final AttributeKey<Account.Id> CURRENT_ACCOUNT =
+      new AttributeKey<Account.Id>();
+
+  /**
+   * Parse a public key into its Java type.
+   * 
+   * @param key the account key to parse.
+   * @return the valid public key object.
+   * @throws InvalidKeySpecException the key supplied is not a valid SSH key.
+   * @throws NoSuchAlgorithmException the JVM is missing the key algorithm.
+   * @throws NoSuchProviderException the JVM is missing the provider.
+   */
+  public static PublicKey parse(final AccountSshKey key)
+      throws NoSuchAlgorithmException, InvalidKeySpecException,
+      NoSuchProviderException {
+    try {
+      final String s = key.getEncodedKey();
+      if (s == null) {
+        throw new InvalidKeySpecException("No key string");
+      }
+      final byte[] bin = Base64.decodeBase64(Constants.encodeASCII(s));
+      return new Buffer(bin).getPublicKey();
+    } catch (RuntimeException re) {
+      throw new InvalidKeySpecException("Cannot parse key", re);
+    }
+  }
+
+  /**
+   * Convert an RFC 4716 style key to an OpenSSH style key.
+   * 
+   * @param keyStr the key string to convert.
+   * @return <code>keyStr</code> if conversion failed; otherwise the converted
+   *         key, in OpenSSH key format.
+   */
+  public static String toOpenSshPublicKey(final String keyStr) {
+    try {
+      final StringBuilder strBuf = new StringBuilder();
+      final BufferedReader br = new BufferedReader(new StringReader(keyStr));
+      String line = br.readLine(); // BEGIN SSH2 line...
+      if (!line.equals("---- BEGIN SSH2 PUBLIC KEY ----")) {
+        return keyStr;
+      }
+
+      while ((line = br.readLine()) != null) {
+        if (line.indexOf(':') == -1) {
+          strBuf.append(line);
+          break;
+        }
+      }
+
+      while ((line = br.readLine()) != null) {
+        if (line.startsWith("---- ")) {
+          break;
+        }
+        strBuf.append(line);
+      }
+
+      final PublicKey key =
+          new Buffer(Base64.decodeBase64(Constants.encodeASCII(strBuf
+              .toString()))).getPublicKey();
+      if (key instanceof RSAPublicKey) {
+        strBuf.insert(0, KeyPairProvider.SSH_RSA + " ");
+
+      } else if (key instanceof DSAPublicKey) {
+        strBuf.insert(0, KeyPairProvider.SSH_DSS + " ");
+
+      } else {
+        return keyStr;
+      }
+
+      strBuf.append(' ');
+      strBuf.append("converted-key");
+      return strBuf.toString();
+    } catch (IOException e) {
+      return keyStr;
+    } catch (RuntimeException re) {
+      return keyStr;
+    } catch (NoSuchAlgorithmException e) {
+      return keyStr;
+    } catch (InvalidKeySpecException e) {
+      return keyStr;
+    } catch (NoSuchProviderException e) {
+      return keyStr;
+    }
+  }
+
+  private static final Map<String, List<AccountSshKey>> keys;
+
+  static {
+    keys = new LinkedHashMap<String, List<AccountSshKey>>(16, 0.75f, true) {
+      @Override
+      protected boolean removeEldestEntry(
+          final Entry<String, List<AccountSshKey>> eldest) {
+        return 256 <= size();
+      }
+    };
+  }
+
+  /** Invalidate all cached keys for the given account. */
+  public static void invalidate(final Account acct) {
+    if (acct != null) {
+      invalidate(acct.getSshUserName());
+    }
+  }
+
+  /** Invalidate all cached keys for the given account. */
+  public static void invalidate(final String username) {
+    synchronized (keys) {
+      keys.remove(username);
+    }
+  }
+
+  /** Locate keys for the requested account whose email matches the name given. */
+  public static List<AccountSshKey> keysFor(final String username) {
+    synchronized (keys) {
+      final List<AccountSshKey> r = keys.get(username);
+      if (r != null) {
+        return r;
+      }
+    }
+
+    List<AccountSshKey> kl;
+    try {
+      final ReviewDb db = Common.getSchemaFactory().open();
+      try {
+        final List<Account> matches =
+            db.accounts().bySshUserName(username).toList();
+        if (matches.isEmpty()) {
+          return Collections.<AccountSshKey> emptyList();
+        }
+
+        kl = new ArrayList<AccountSshKey>();
+        for (final Account a : matches) {
+          for (final AccountSshKey k : db.accountSshKeys().valid(a.getId())) {
+            kl.add(k);
+          }
+        }
+      } finally {
+        db.close();
+      }
+    } catch (OrmException err) {
+      // TODO log database query error
+      return Collections.<AccountSshKey> emptyList();
+    }
+
+    kl = Collections.unmodifiableList(kl);
+    synchronized (keys) {
+      keys.put(username, kl);
+    }
+    return kl;
+  }
+}
diff --git a/appjar/src/main/java/com/google/gerrit/server/ssh/Upload.java b/appjar/src/main/java/com/google/gerrit/server/ssh/Upload.java
new file mode 100644
index 0000000..aa2cf61
--- /dev/null
+++ b/appjar/src/main/java/com/google/gerrit/server/ssh/Upload.java
@@ -0,0 +1,37 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.server.ssh;
+
+import org.spearce.jgit.transport.UploadPack;
+
+import java.io.IOException;
+
+/** Publishes Git repositories over SSH using the Git upload-pack protocol. */
+class Upload extends AbstractGitCommand {
+  @Override
+  protected void runImpl() throws IOException {
+    closeDb();
+
+    final UploadPack up = new UploadPack(repo);
+    up.upload(in, out, err);
+  }
+
+  @Override
+  protected String parseCommandLine(final String[] args) throws Failure {
+    if (args.length != 1)
+      throw new Failure(1, "usage: " + getName() + " '/project.git'");
+    return args[0];
+  }
+}
diff --git a/appwar/.gitignore b/appwar/.gitignore
new file mode 100644
index 0000000..cf30e1c
--- /dev/null
+++ b/appwar/.gitignore
@@ -0,0 +1,5 @@
+/target
+/.classpath
+/.project
+/.settings/org.maven.ide.eclipse.prefs
+/.settings/org.eclipse.jdt.core.prefs
diff --git a/appwar/pom.xml b/appwar/pom.xml
new file mode 100644
index 0000000..53e52ae
--- /dev/null
+++ b/appwar/pom.xml
@@ -0,0 +1,343 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2008 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>gerrit</groupId>
+  <artifactId>gerrit-appwar</artifactId>
+  <packaging>war</packaging>
+  <version>2.0-SNAPSHOT</version>
+  <name>gerrit-appwar</name>
+  <description>Gerrit - Web Based Code Review</description>
+  <url>http://android.git.kernel.org/?p=tools/gerrit.git</url>
+
+  <mailingLists>
+    <mailingList>
+      <name>repo-discuss mailing list</name>
+      <post>repo-discuss@googlegroups.com</post>
+    </mailingList>
+  </mailingLists>
+
+  <developers>
+    <developer>
+      <name>Shawn O. Pearce</name>
+      <email>sop@google.com</email>
+      <roles>
+        <role>Maintainer</role>
+      </roles>
+    </developer>
+  </developers>
+
+  <licenses>
+    <license>
+      <name>Apache License, 2.0</name>
+      <comments>
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+      </comments>
+    </license>
+  </licenses>
+
+  <properties>
+    <gwtVersion>1.5.3</gwtVersion>
+  </properties>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>com.totsp.gwt</groupId>
+        <artifactId>maven-googlewebtoolkit2-plugin</artifactId>
+        <version>2.0-beta26</version>
+        <configuration>
+          <compileTargets>
+            <value>com.google.gerrit.Gerrit</value>
+          </compileTargets>
+          <runTarget>com.google.gerrit.Gerrit/Gerrit.html</runTarget>
+          <noServer>false</noServer>
+          <extraJvmArgs>-Xmx512m</extraJvmArgs>
+          <gwtVersion>${gwtVersion}</gwtVersion>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>compile</goal>                    
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>                                
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>fixOutput</id>
+            <phase>process-classes</phase>
+            <configuration>
+              <tasks>
+                <property name="d" location="${basedir}/target/${project.name}-${project.version}"/>
+                <move todir="${d}">
+                  <fileset dir="${d}/com.google.gerrit.Gerrit">
+                    <exclude name="Gerrit.html" />
+                    <exclude name="SetCookie.html" />
+                    <exclude name="hosted.html" />
+                  </fileset>
+                </move>
+                <delete dir="${d}/com.google.gerrit.Gerrit" />
+                <apply executable="gzip" addsourcefile="false">
+                  <arg value="-9"/> 
+                  <fileset dir="${d}"
+                           includes="**/*.html,**/*.css"/>
+                  <redirector>
+                    <inputmapper type="glob" from="*" to="${d}/*"/>
+                    <outputmapper type="glob" from="*" to="${d}/*.gz"/>
+                  </redirector>
+                </apply>
+              </tasks>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <configuration>
+          <warSourceExcludes>.gwt-tmp/**</warSourceExcludes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>gerrit</groupId>
+      <artifactId>gerrit-appjar</artifactId>
+      <version>${project.version}</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+
+  <pluginRepositories>
+    <pluginRepository>
+      <id>gwt-maven-plugins</id>
+      <url>http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/</url>
+    </pluginRepository>
+  </pluginRepositories>
+</project>
diff --git a/appwar/src/main/webapp/WEB-INF/web.xml b/appwar/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..488df0e
--- /dev/null
+++ b/appwar/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app>
+  <resource-ref>
+    <res-ref-name>jdbc/ReviewDb</res-ref-name>
+    <res-type>javax.sql.DataSource</res-type>
+    <res-auth>Container</res-auth>
+  </resource-ref>
+
+  <filter>
+    <filter-name>UrlRewrite</filter-name>
+    <filter-class>com.google.gerrit.server.UrlRewriteFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>UrlRewrite</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <filter>
+    <filter-name>CacheControl</filter-name>
+    <filter-class>com.google.gerrit.server.CacheControlFilter</filter-class>
+  </filter>
+  <filter-mapping>
+    <filter-name>CacheControl</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+
+  <servlet>
+    <servlet-name>Gerrit</servlet-name>
+    <servlet-class>com.google.gerrit.server.HostPageServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>Gerrit</servlet-name>
+    <url-pattern>/Gerrit</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>Login</servlet-name>
+    <servlet-class>com.google.gerrit.server.OpenIdLoginServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>Login</servlet-name>
+    <url-pattern>/login</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>ssh</servlet-name>
+    <servlet-class>com.google.gerrit.server.ssh.SshServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>ssh</servlet-name>
+    <url-pattern>/ssh_info</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>Static</servlet-name>
+    <servlet-class>com.google.gerrit.server.StaticServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>Static</servlet-name>
+    <url-pattern>/static/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>AccountService</servlet-name>
+    <servlet-class>com.google.gerrit.server.AccountServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>AccountService</servlet-name>
+    <url-pattern>/rpc/AccountService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>AccountSecurity</servlet-name>
+    <servlet-class>com.google.gerrit.server.AccountSecuritySrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>AccountSecurity</servlet-name>
+    <url-pattern>/rpc/AccountSecurity</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>GroupAdminService</servlet-name>
+    <servlet-class>com.google.gerrit.server.GroupAdminServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>GroupAdminService</servlet-name>
+    <url-pattern>/rpc/GroupAdminService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>ChangeDetailService</servlet-name>
+    <servlet-class>com.google.gerrit.server.ChangeDetailServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>ChangeDetailService</servlet-name>
+    <url-pattern>/rpc/ChangeDetailService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>ChangeListService</servlet-name>
+    <servlet-class>com.google.gerrit.server.ChangeListServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>ChangeListService</servlet-name>
+    <url-pattern>/rpc/ChangeListService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>ChangeManageService</servlet-name>
+    <servlet-class>com.google.gerrit.server.ChangeManageServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>ChangeManageService</servlet-name>
+    <url-pattern>/rpc/ChangeManageService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>PatchDetailService</servlet-name>
+    <servlet-class>com.google.gerrit.server.PatchDetailServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>PatchDetailService</servlet-name>
+    <url-pattern>/rpc/PatchDetailService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>ProjectAdminService</servlet-name>
+    <servlet-class>com.google.gerrit.server.ProjectAdminServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>ProjectAdminService</servlet-name>
+    <url-pattern>/rpc/ProjectAdminService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>SuggestService</servlet-name>
+    <servlet-class>com.google.gerrit.server.SuggestServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>SuggestService</servlet-name>
+    <url-pattern>/rpc/SuggestService</url-pattern>
+  </servlet-mapping>
+
+  <servlet>
+    <servlet-name>SystemInfoService</servlet-name>
+    <servlet-class>com.google.gerrit.server.SystemInfoServiceSrv</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>SystemInfoService</servlet-name>
+    <url-pattern>/rpc/SystemInfoService</url-pattern>
+  </servlet-mapping>
+</web-app>
diff --git a/backup/create.sql b/backup/create.sql
deleted file mode 100644
index 4962585..0000000
--- a/backup/create.sql
+++ /dev/null
@@ -1,394 +0,0 @@
--- class ApprovalRight
-
-CREATE TABLE approval_rights
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  ar_id INT NOT NULL,
-  gae_key VARCHAR(255) NOT NULL,
-  required CHAR(1) NOT NULL DEFAULT 'N' CHECK (required IN ('Y','N')),
-
-  PRIMARY KEY (ar_id),
-  UNIQUE (gae_key)
-);
-
-CREATE TABLE approval_right_files
-(
-  ar_id INT NOT NULL,
-  path VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (ar_id, path),
-
-  FOREIGN KEY (ar_id)
-  REFERENCES approval_rights (ar_id)
-  ON DELETE CASCADE
-);
-
-CREATE TABLE approval_right_users
-(
-  ar_id INT NOT NULL,
-  email VARCHAR(255) NOT NULL,
-  type VARCHAR(9) NOT NULL CHECK (type IN ('approver',
-                                           'verifier',
-                                           'submitter')),
-
-  PRIMARY KEY (ar_id, type, email),
-
-  FOREIGN KEY (ar_id)
-  REFERENCES approval_rights (ar_id)
-  ON DELETE CASCADE
-);
-
-CREATE TABLE approval_right_groups
-(
-  ar_id INT NOT NULL,
-  group_key VARCHAR(255) NOT NULL,
-  type VARCHAR(9) NOT NULL CHECK (type IN ('approver',
-                                           'verifier',
-                                           'submitter')),
-
-  PRIMARY KEY (ar_id, type, group_key),
-
-  FOREIGN KEY (ar_id)
-  REFERENCES approval_rights (ar_id)
-  ON DELETE CASCADE
-);
-
--- class Project
-
-CREATE TABLE projects
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  project_id INT NOT NULL,
-  gae_key VARCHAR(255) NOT NULL,
-  name VARCHAR(255) NOT NULL,
-  comment VARCHAR(255),
-
-  PRIMARY KEY (project_id),
-  UNIQUE (gae_key)
-);
-
-CREATE TABLE project_owner_users
-(
-  project_id INT NOT NULL,
-  email VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (project_id, email),
-
-  FOREIGN KEY (project_id)
-  REFERENCES projects (project_id)
-  ON DELETE CASCADE
-);
-
-CREATE TABLE project_owner_groups
-(
-  project_id INT NOT NULL,
-  group_key VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (project_id, group_key),
-
-  FOREIGN KEY (project_id)
-  REFERENCES projects (project_id)
-  ON DELETE CASCADE
-);
-
-CREATE TABLE project_code_reviews
-(
-  project_id INT NOT NULL,
-  ar_key VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (project_id, ar_key),
-
-  FOREIGN KEY (project_id)
-  REFERENCES projects (project_id)
-  ON DELETE CASCADE
-);
-
--- class Branch
-
-CREATE TABLE branches
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-  project_key VARCHAR(255) NOT NULL,
-  name VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (project_key, name),
-  UNIQUE (gae_key)
-);
-
--- class RevisionId
-
-CREATE TABLE revisions
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-
-  project_key VARCHAR(255) NOT NULL,
-  revision_id CHAR(40) NOT NULL,
-
-  author_name VARCHAR(255),
-  author_email VARCHAR(255),
-  author_when TIMESTAMP WITH TIME ZONE,
-  author_tz INT,
-
-  committer_name VARCHAR(255),
-  committer_email VARCHAR(255),
-  committer_when TIMESTAMP WITH TIME ZONE,
-  committer_tz INT,
-
-  message TEXT,
-  patchset_key VARCHAR(255),
-
-  UNIQUE (gae_key)
-);
-CREATE INDEX revisions_idx1 ON revisions (revision_id);
-
-CREATE TABLE revision_ancestors
-(
-  gae_key VARCHAR(255) NOT NULL,
-  child_id CHAR(40) NOT NULL,
-  parent_id CHAR(40) NOT NULL,
-  position INT NOT NULL,
-
-  PRIMARY KEY (gae_key, position),
-
-  FOREIGN KEY (gae_key)
-  REFERENCES revisions (gae_key)
-  ON DELETE CASCADE
-);
-
--- class Change
-
-CREATE TABLE changes
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-  change_id INT NOT NULL,
-
-  subject VARCHAR(255) NOT NULL,
-  description TEXT,
-  owner VARCHAR(255) NOT NULL,
-  created TIMESTAMP WITH TIME ZONE NOT NULL,
-  modified TIMESTAMP WITH TIME ZONE NOT NULL,
-  claimed CHAR(1) NOT NULL DEFAULT 'N' CHECK (claimed IN ('Y','N')),
-  closed CHAR(1) NOT NULL DEFAULT 'N' CHECK (closed IN ('Y','N')),
-  n_comments INT,
-  n_patchsets INT,
-  dest_project_key VARCHAR(255) NOT NULL,
-  dest_branch_key VARCHAR(255) NOT NULL,
-  merge_submitted TIMESTAMP WITH TIME ZONE,
-  merged CHAR(1) NOT NULL DEFAULT 'N' CHECK (merged IN ('Y','N')),
-  emailed_clean_merge CHAR(1) NOT NULL DEFAULT 'N' CHECK (emailed_clean_merge IN ('Y','N')),
-  emailed_missing_dependency CHAR(1) NOT NULL DEFAULT 'N' CHECK (emailed_missing_dependency IN ('Y','N')),
-  emailed_path_conflict CHAR(1) NOT NULL DEFAULT 'N' CHECK (emailed_path_conflict IN ('Y','N')),
-  merge_patchset_key VARCHAR(255),
-
-  PRIMARY KEY (change_id),
-  UNIQUE (gae_key)
-);
-
-CREATE TABLE change_people
-(
-  change_id INT NOT NULL,
-  email VARCHAR(255) NOT NULL,
-  type VARCHAR(8) NOT NULL CHECK (type IN ('reviewer', 'cc')),
-
-  PRIMARY KEY (change_id, type, email),
-
-  FOREIGN KEY (change_id)
-  REFERENCES changes (change_id)
-  ON DELETE CASCADE
-);
-
--- class PatchSet
-
-CREATE TABLE patch_sets
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-
-  patchset_id INT NOT NULL,
-  change_key VARCHAR(255) NOT NULL,
-  message VARCHAR(255),
-  owner VARCHAR(255) NOT NULL,
-  created TIMESTAMP WITH TIME ZONE NOT NULL,
-  modified TIMESTAMP WITH TIME ZONE NOT NULL,
-  revision_key VARCHAR(255) NOT NULL,
-  complete CHAR(1) NOT NULL DEFAULT 'N' CHECK (complete IN ('Y','N')),
-
-  PRIMARY KEY (change_key, patchset_id),
-  UNIQUE (gae_key)
-);
-
--- class Message
-
-CREATE TABLE messages
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-
-  change_key VARCHAR(255) NOT NULL,
-  subject VARCHAR(255),
-  sender VARCHAR(255),
-  date_sent TIMESTAMP WITH TIME ZONE,
-  body TEXT,
-
-  PRIMARY KEY (gae_key)
-);
-
-CREATE TABLE message_recipients
-(
-  message_key VARCHAR(255) NOT NULL,
-  email VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (message_key, email),
-
-  FOREIGN KEY (message_key)
-  REFERENCES messages (gae_key)
-  ON DELETE CASCADE
-);
-
--- class Patch
-
-CREATE TABLE patches
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-
-  patchset_key VARCHAR(255) NOT NULL,
-  filename VARCHAR(255) NOT NULL,
-  status CHAR(1) NOT NULL CHECK (status IN ('A', 'M', 'D')),
-  multi_way_diff CHAR(1) NOT NULL DEFAULT 'N' CHECK (multi_way_diff IN ('Y','N')),
-  n_comments INT,
-  old_data_key VARCHAR(255),
-  new_data_key VARCHAR(255),
-  diff_data_key VARCHAR(255),
-
-  PRIMARY KEY (patchset_key, filename),
-  UNIQUE(gae_key)
-);
-
--- class Comment
-
-CREATE TABLE comments
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-  
-  patch_key VARCHAR(255) NOT NULL,
-  message_id VARCHAR(255) NOT NULL,
-  author VARCHAR(255),
-  written TIMESTAMP WITH TIME ZONE,
-  lineno INT,
-  body TEXT,
-  is_left CHAR(1) NOT NULL DEFAULT 'N' CHECK (is_left IN ('Y','N')),
-  draft CHAR(1) NOT NULL DEFAULT 'N' CHECK (draft IN ('Y','N')),
-
-  UNIQUE(gae_key)
-);
-
--- class ReviewStatus
-
-CREATE TABLE review_status
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-
-  change_key VARCHAR(255) NOT NULL,
-  email VARCHAR(255) NOT NULL,
-  lgtm VARCHAR(7) CHECK (lgtm IN ('lgtm',
-                                  'yes',
-                                  'abstain',
-                                  'no',
-                                  'reject')),
-  verified CHAR(1) CHECK (verified IN ('Y','N')),
-
-  PRIMARY KEY (change_key, email),
-  UNIQUE(gae_key)
-);
-
--- class Account
-
-CREATE TABLE accounts
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-
-  user_email VARCHAR(255) NOT NULL,
-  email VARCHAR(255) NOT NULL,
-  preferred_email VARCHAR(255),
-
-  created TIMESTAMP WITH TIME ZONE,
-  modified TIMESTAMP WITH TIME ZONE,
-
-  is_admin CHAR(1) NOT NULL DEFAULT 'N' CHECK (is_admin IN ('Y','N')),
-  welcomed CHAR(1) NOT NULL DEFAULT 'N' CHECK (welcomed IN ('Y','N')),
-  real_name_entered CHAR(1) NOT NULL DEFAULT 'N' CHECK (real_name_entered IN ('Y','N')),
-  real_name VARCHAR(255),
-  mailing_address VARCHAR(255),
-  mailing_address_country VARCHAR(255),
-  phone_number VARCHAR(255),
-  fax_number VARCHAR(255),
-
-  cla_verified CHAR(1) NOT NULL DEFAULT 'N' CHECK (cla_verified IN ('Y','N')),
-  cla_verified_by VARCHAR(255),
-  cla_verified_timestamp TIMESTAMP WITH TIME ZONE,
-  individual_cla_version INT,
-  individual_cla_timestamp TIMESTAMP WITH TIME ZONE,
-  cla_comments TEXT,
-
-  default_context INT,
-
-  PRIMARY KEY (email),
-  UNIQUE(gae_key)
-);
-
-CREATE TABLE account_stars
-(
-  email VARCHAR(255) NOT NULL,
-  change_id INT NOT NULL,
-
-  PRIMARY KEY (email, change_id),
-
-  FOREIGN KEY (email)
-  REFERENCES accounts (email)
-  ON DELETE CASCADE
-);
-
-CREATE TABLE account_unclaimed_changes_projects
-(
-  email VARCHAR(255) NOT NULL,
-  project_key VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (email, project_key),
-
-  FOREIGN KEY (email)
-  REFERENCES accounts (email)
-  ON DELETE CASCADE
-);
-
--- class AccountGroup
-
-CREATE TABLE account_groups
-(
-  last_backed_up INT NOT NULL DEFAULT 0,
-  gae_key VARCHAR(255) NOT NULL,
-
-  name VARCHAR(255) NOT NULL,
-  comment TEXT,
-
-  PRIMARY KEY (name),
-  UNIQUE(gae_key)
-);
-
-CREATE TABLE account_group_users
-(
-  group_name VARCHAR(255) NOT NULL,
-  email VARCHAR(255) NOT NULL,
-
-  PRIMARY KEY (group_name, email),
-
-  FOREIGN KEY (group_name)
-  REFERENCES account_groups (name)
-  ON DELETE CASCADE
-);
diff --git a/backup/drop.sql b/backup/drop.sql
deleted file mode 100644
index 10c06ce..0000000
--- a/backup/drop.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-DROP VIEW popular_projects;
-DROP VIEW popular_files;
-DROP VIEW change_totals;
-
-DROP TABLE account_group_users;
-DROP TABLE account_groups;
-
-DROP TABLE account_unclaimed_changes_projects;
-DROP TABLE account_stars;
-DROP TABLE accounts;
-
-DROP TABLE review_status;
-
-DROP TABLE comments;
-
-DROP TABLE patches;
-
-DROP TABLE message_recipients;
-DROP TABLE messages;
-
-DROP TABLE patch_sets;
-
-DROP TABLE change_people;
-DROP TABLE changes;
-
-DROP TABLE revision_ancestors;
-DROP TABLE revisions;
-
-DROP TABLE branches;
-
-DROP TABLE project_code_reviews;
-DROP TABLE project_owner_groups;
-DROP TABLE project_owner_users;
-DROP TABLE projects;
-
-DROP TABLE approval_right_files;
-DROP TABLE approval_right_users;
-DROP TABLE approval_right_groups;
-DROP TABLE approval_rights;
diff --git a/backup/views.sql b/backup/views.sql
deleted file mode 100644
index 94fcd6f2..0000000
--- a/backup/views.sql
+++ /dev/null
@@ -1,40 +0,0 @@
-CREATE OR REPLACE VIEW popular_projects
-AS SELECT
-  p.name,
-  count(c.change_id) as changes
-FROM
-  projects p,
-  changes c
-WHERE
-  c.dest_project_key = p.gae_key
-GROUP BY
-  p.name
-ORDER BY
-  changes DESC;
-
-CREATE OR REPLACE VIEW popular_files
-AS SELECT
-  j.name as project,
-  p.filename,
-  count(p.patchset_key) as changes
-FROM
-  patches p,
-  projects j,
-  patch_sets q,
-  changes c
-WHERE
-  j.gae_key = c.dest_project_key
-  AND c.gae_key = q.change_key
-  AND q.gae_key = p.patchset_key
-GROUP BY
-  j.name,
-  p.filename
-ORDER BY
-  changes DESC;
-
-CREATE OR REPLACE VIEW change_totals
-AS SELECT
-  (select count(*) from changes where closed='Y' and merged='N') as abandoned,
-  (select count(*) from changes where closed='Y' and merged='Y') as merged,
-  (select count(*) from changes where closed='N') as active,
-  (select count(*) from changes) as total;
diff --git a/devdb/.gitignore b/devdb/.gitignore
new file mode 100644
index 0000000..a626183
--- /dev/null
+++ b/devdb/.gitignore
@@ -0,0 +1,5 @@
+/target
+/.classpath
+/.project
+/.settings
+/src/main/config/GerritServer.properties
diff --git a/devdb/pom.xml b/devdb/pom.xml
new file mode 100644
index 0000000..da04748
--- /dev/null
+++ b/devdb/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2008 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>gerrit</groupId>
+  <artifactId>gerrit-devdb</artifactId>
+  <packaging>jar</packaging>
+  <version>2.0-SNAPSHOT</version>
+  <name>gerrit-devdb</name>
+  <description>Gerrit - Hosted Mode Debugging Support</description>
+  <url>http://android.git.kernel.org/?p=tools/gerrit.git</url>
+
+  <build>
+    <testResources>
+      <testResource>
+        <directory>src/main/config</directory>
+        <includes>
+          <include>GerritServer.properties</include>
+          <include>log4j.properties</include>
+        </includes>
+      </testResource>
+    </testResources>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+          <encoding>UTF-8</encoding>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>postgresql</groupId>
+      <artifactId>postgresql</artifactId>
+      <version>8.3-603.jdbc3</version>
+      <scope>runtime</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>com.h2database</groupId>
+      <artifactId>h2</artifactId>
+      <version>1.1.106</version>
+      <scope>runtime</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>c3p0</groupId>
+      <artifactId>c3p0</artifactId>
+      <version>0.9.1.2</version>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/devdb/src/main/config/GerritServer.properties_example b/devdb/src/main/config/GerritServer.properties_example
new file mode 100644
index 0000000..fe10ac6
--- /dev/null
+++ b/devdb/src/main/config/GerritServer.properties_example
@@ -0,0 +1,18 @@
+# Any properties starting with "database." will be fed to the JDBC driver,
+# after removing the "database." prefix.
+#
+# The following "special" properties are removed from that set:
+#
+#  database.driver :  Class name of the driver to load.
+#  database.url    :  The connection URL
+#
+
+# H2
+# database.driver = org.h2.Driver
+# database.url = jdbc:h2:file:ReviewDb
+
+# PostgreSQL
+# database.driver = org.postgresql.Driver
+# database.url = jdbc:postgresql:reviewdb
+# database.user = gerrit2
+# database.password = supersecretcode
diff --git a/devdb/src/main/config/log4j.properties b/devdb/src/main/config/log4j.properties
new file mode 100644
index 0000000..eef6217
--- /dev/null
+++ b/devdb/src/main/config/log4j.properties
@@ -0,0 +1,8 @@
+log4j.rootCategory=DEBUG, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.TTCCLayout
+
+# Silence non-critical messages from MINA SSHD.
+#
+log4j.logger.org.apache.sshd.common.util.SecurityUtils=WARN
+log4j.logger.org.apache.sshd.server=WARN
diff --git a/devutil/1-to-2.sh b/devutil/1-to-2.sh
new file mode 100755
index 0000000..3c9ce14
--- /dev/null
+++ b/devutil/1-to-2.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# To get a gerrit1.dump:
+#    psql -c 'ALTER SCHEMA public RENAME TO gerrit1' $src
+#    pg_dump -O -Fc $src >gerrit1.dump
+#
+# Your config.sql should look like:
+#   UPDATE system_config
+#   SET
+#    site_path='/home/gerrit2/site_dir'
+#   ,git_base_path='/srv/git'
+#   ;
+
+v1data="$1"
+cfgsql="$2"
+nobuild="$3"
+if [ -z "$v1data" -o -z "$cfgsql" ]
+then
+	echo >&2 "usage: $0 gerrit1.dump config.sql [-n]"
+	exit 1
+fi
+
+dstdb=reviewdb
+user=gerrit2
+gscfg=devdb/src/main/config/GerritServer.properties
+
+if [ -z "$nobuild" ]
+then
+	(cd appdist && mvn install) || exit
+fi
+
+out=$(cd appdist/target/gerrit-*-bin.dir/gerrit-* && pwd)
+g2="$out/bin/gerrit2.sh --config=$gscfg"
+
+dropdb $dstdb
+createdb -E UTF-8 -O $user $dstdb || exit
+pg_restore -O -d $dstdb $v1data || exit
+$g2 CreateSchema || exit
+psql -f devutil/import_gerrit1.sql $dstdb || exit
+psql -f $cfgsql $dstdb || exit
+$g2 ImportGerrit1 || exit
+
+echo >&2
+echo >&2 "Creating secondary indexes..."
+echo >&2 "  ignore failures unless on a production system"
+psql -f $out/sql/query_index.sql $dstdb
+echo >&2
+
+psql -c 'DROP SCHEMA gerrit1 CASCADE' $dstdb
+echo "CONVERT Gerrit 1 -> Gerrit 2 SUCCESSFUL"
+
diff --git a/devutil/export_safe.sh b/devutil/export_safe.sh
new file mode 100755
index 0000000..35da028
--- /dev/null
+++ b/devutil/export_safe.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# This script assumes the Gerrit1 import has already been
+# renamed to 'gerrit1' schema:
+#
+#  psql -c 'ALTER SCHEMA public RENAME TO gerrit1' $src
+#
+
+src=android_codereview
+tmp=safedump
+N="N.$$.sql"
+
+dropdb $tmp
+createdb -E UTF-8 $tmp &&
+pg_dump -O -Fc $src >$N &&
+pg_restore -d $tmp $N &&
+psql -c 'UPDATE gerrit1.accounts SET
+  mailing_address = NULL
+ ,mailing_address_country = NULL
+ ,phone_number = NULL
+ ,fax_number = NULL
+ ,cla_comments = NULL' $tmp &&
+pg_dump -O -Fc $tmp | bzip2 -9 >gerrit1.dump.bz2
+dropdb $tmp
+rm -f $N
diff --git a/devutil/import_gerrit1.sql b/devutil/import_gerrit1.sql
new file mode 100644
index 0000000..4dca903
--- /dev/null
+++ b/devutil/import_gerrit1.sql
@@ -0,0 +1,712 @@
+-- PostgreSQL conversion from Gerrit 1 -> Gerrit 2
+--
+-- If this is the first time the Gerrit1 schema has been used it
+-- needs to be renamed:
+--     psql -c 'ALTER SCHEMA public RENAME TO gerrit1' $srcdb
+--
+-- Make sure there is a current dump file:
+--     pg_dump -O -Fc $src >gerrit1.dump
+--
+-- Write your "UPDATE system_config SET ..." and put it into
+-- some config.sql script.  At least git_base_path must be set.
+--
+-- Execute the conversion script:
+--     devutil/1-to-2.sh gerrit1.dump config.sql
+--
+
+DELETE FROM accounts;
+INSERT INTO accounts
+(account_id,
+ registered_on,
+ full_name,
+ preferred_email,
+ ssh_user_name,
+ contact_address,
+ contact_country,
+ contact_phone_nbr,
+ contact_fax_nbr,
+ default_context
+) SELECT
+ nextval('account_id'),
+ a.created,
+ a.real_name,
+ a.user_email,
+ CASE WHEN a.user_email LIKE '%@%'
+      THEN lower(substring(a.user_email from '^(.*)@.*$'))
+      ELSE NULL
+ END,
+ a.mailing_address,
+ a.mailing_address_country,
+ a.phone_number,
+ a.fax_number,
+ a.default_context
+ FROM gerrit1.accounts a;
+
+UPDATE system_config
+SET allow_google_account_upgrade = 'Y';
+
+DELETE FROM account_external_ids;
+INSERT INTO account_external_ids
+(account_id,
+ external_id,
+ email_address) SELECT
+ l.account_id,
+ 'https://www.google.com/accounts/o8/id',
+ a.user_email
+ FROM gerrit1.accounts a, accounts l
+ WHERE l.preferred_email = a.user_email;
+
+DELETE FROM contributor_agreements;
+INSERT INTO contributor_agreements
+(active,
+ require_contact_information,
+ auto_verify,
+ short_name,
+ short_description,
+ agreement_url,
+ id) VALUES (
+ 'Y',
+ 'Y',
+ 'Y',
+ 'Individual',
+ 'If you are going to be contributing code on your own, this is the one you want. You can sign this one online.',
+ 'static/cla_individual.html',
+ nextval('contributor_agreement_id'));
+INSERT INTO contributor_agreements
+(active,
+ require_contact_information,
+ auto_verify,
+ short_name,
+ short_description,
+ agreement_url,
+ id) VALUES (
+ 'Y',
+ 'N',
+ 'N',
+ 'Corporate',
+ 'If you are going to be contributing code on behalf of your company, this is the one you want. We\'ll give you a form that will need to printed, signed and sent back via post, email or fax.',
+ 'static/cla_corporate.html',
+ nextval('contributor_agreement_id'));
+
+DELETE FROM account_agreements;
+INSERT INTO account_agreements
+(accepted_on,
+ status,
+ account_id,
+ review_comments,
+ reviewed_by,
+ reviewed_on,
+ cla_id) SELECT
+ a.individual_cla_timestamp,
+ CASE WHEN a.cla_verified = 'Y' THEN 'V'
+      ELSE 'n'
+ END,
+ r.account_id,
+ a.cla_comments,
+ (SELECT m.account_id FROM accounts m
+  WHERE m.preferred_email = a.cla_verified_by),
+ a.cla_verified_timestamp,
+ i.id
+ FROM contributor_agreements i,
+ gerrit1.accounts a,
+ accounts r
+ WHERE i.short_name = 'Individual'
+ AND a.individual_cla_version = 1
+ AND r.preferred_email = a.user_email;
+INSERT INTO account_agreements
+(accepted_on,
+ status,
+ account_id,
+ review_comments,
+ reviewed_by,
+ reviewed_on,
+ cla_id) SELECT
+ CASE WHEN a.individual_cla_timestamp IS NOT NULL
+      THEN a.individual_cla_timestamp
+      ELSE a.created
+      END,
+ 'V',
+ r.account_id,
+ a.cla_comments,
+ (SELECT m.account_id FROM accounts m
+  WHERE m.preferred_email = a.cla_verified_by),
+ a.cla_verified_timestamp,
+ i.id
+ FROM contributor_agreements i,
+ gerrit1.accounts a,
+ accounts r
+ WHERE i.short_name = 'Corporate'
+ AND a.individual_cla_version = 0
+ AND a.cla_verified = 'Y'
+ AND r.preferred_email = a.user_email;
+
+DELETE FROM account_groups;
+INSERT INTO account_groups
+(group_id,
+ description,
+ name) SELECT
+ nextval('account_group_id'),
+ g.comment,
+ g.name
+ FROM gerrit1.account_groups g;
+
+INSERT INTO account_groups
+(group_id,
+ description,
+ name) VALUES
+(nextval('account_group_id'),
+'Any user, signed-in or not',
+'Anonymous Users');
+
+INSERT INTO account_groups
+(group_id,
+ description,
+ name) VALUES
+(nextval('account_group_id'),
+'Any signed-in user',
+'Registered Users');
+
+
+DELETE FROM account_group_members;
+INSERT INTO account_group_members
+(account_id,
+ group_id) SELECT
+ a.account_id,
+ g.group_id
+ FROM accounts a,
+ account_groups g,
+ gerrit1.account_group_users o
+ WHERE
+ o.group_name = g.name
+ AND a.preferred_email = o.email;
+
+UPDATE system_config
+SET
+ use_contributor_agreements = 'Y'
+,admin_group_id = (SELECT group_id
+                  FROM account_groups
+                  WHERE name = 'admin')
+,anonymous_group_id = (SELECT group_id
+                      FROM account_groups
+                      WHERE name = 'Anonymous Users')
+,registered_group_id = (SELECT group_id
+                      FROM account_groups
+                      WHERE name = 'Registered Users');
+
+UPDATE account_groups
+SET owner_group_id = (SELECT admin_group_id FROM system_config);
+
+DELETE FROM projects WHERE project_id <> 0;
+INSERT INTO projects
+(project_id,
+ description,
+ name,
+ use_contributor_agreements,
+ owner_group_id) SELECT
+ p.project_id,
+ p.comment,
+ p.name,
+ 'Y',
+ (SELECT admin_group_id FROM system_config)
+ FROM gerrit1.projects p;
+
+DELETE FROM account_project_watches;
+INSERT INTO account_project_watches
+(account_id,
+ project_id) SELECT
+ a.account_id,
+ p.project_id
+ FROM gerrit1.projects p,
+ accounts a,
+ gerrit1.account_unclaimed_changes_projects q
+ WHERE a.preferred_email = q.email
+ AND p.gae_key = q.project_key;
+
+DELETE FROM branches;
+INSERT INTO branches
+(branch_id,
+ project_name,
+ branch_name) SELECT
+ nextval('branch_id'),
+ p.name,
+ b.name
+ FROM gerrit1.branches b, gerrit1.projects p
+ WHERE p.gae_key = b.project_key;
+
+CREATE TEMPORARY TABLE need_groups (project_id INT NOT NULL);
+INSERT INTO need_groups
+ SELECT p.project_id
+ FROM projects p, gerrit1.project_owner_groups o
+ WHERE p.project_id = o.project_id
+ GROUP BY p.project_id
+ HAVING COUNT(*) > 1;
+INSERT INTO need_groups
+ SELECT p.project_id
+ FROM projects p
+ WHERE EXISTS (SELECT 1 FROM gerrit1.project_owner_users u
+               WHERE u.project_id = p.project_id)
+ AND NOT EXISTS (SELECT 1 FROM need_groups n
+                 WHERE n.project_id = p.project_id);
+
+INSERT INTO account_groups
+(group_id,
+ owner_group_id,
+ description,
+ name) SELECT
+ nextval('account_group_id'),
+ (SELECT admin_group_id FROM system_config),
+ p.name || ' maintainers',
+ substring(p.name from '^.*/([^/]*)$') || '_' || p.project_id || '-owners'
+ FROM projects p, need_groups g
+ WHERE p.project_id = g.project_id;
+
+UPDATE account_groups
+SET owner_group_id = group_id
+WHERE name IN (SELECT
+ substring(p.name from '^.*/([^/]*)$') || '_' || p.project_id || '-owners'
+ FROM projects p, need_groups g
+ WHERE p.project_id = g.project_id);
+
+UPDATE projects
+SET owner_group_id = (SELECT group_id
+FROM account_groups
+WHERE name = substring(projects.name
+from '^.*/([^/]*)$') || '_' || projects.project_id || '-owners')
+WHERE project_id IN (SELECT project_id FROM need_groups);
+
+INSERT INTO account_group_members
+(account_id,
+ group_id) SELECT DISTINCT
+ q.account_id,
+ p.owner_group_id
+ FROM projects p,
+ need_groups n,
+ gerrit1.account_groups og,
+ gerrit1.project_owner_groups o,
+ account_groups g,
+ account_group_members q
+ WHERE
+ n.project_id = p.project_id
+ AND o.project_id = p.project_id
+ AND og.gae_key = o.group_key
+ AND g.name = og.name
+ AND q.group_id = g.group_id
+ UNION
+ SELECT
+ a.account_id,
+ p.owner_group_id
+ FROM accounts a,
+ projects p,
+ need_groups n,
+ gerrit1.project_owner_users o
+ WHERE
+ n.project_id = p.project_id
+ AND o.project_id = p.project_id
+ AND a.preferred_email = o.email;
+
+UPDATE projects
+SET owner_group_id = (
+ SELECT g.group_id
+ FROM account_groups g,
+ gerrit1.project_owner_groups o,
+ gerrit1.account_groups og
+ WHERE projects.project_id = o.project_id
+ AND og.gae_key = o.group_key
+ AND g.name = og.name)
+WHERE project_id NOT IN (SELECT project_id FROM need_groups)
+AND EXISTS (
+ SELECT g.group_id
+ FROM account_groups g,
+ gerrit1.project_owner_groups o,
+ gerrit1.account_groups og
+ WHERE projects.project_id = o.project_id
+ AND og.gae_key = o.group_key
+ AND g.name = og.name);
+
+DROP TABLE need_groups;
+ 
+
+DELETE FROM changes;
+INSERT INTO changes
+(created_on,
+ last_updated_on,
+ owner_account_id,
+ dest_project_name,
+ dest_branch_name,
+ status,
+ open,
+ nbr_patch_sets,
+ current_patch_set_id,
+ subject,
+ change_id) SELECT
+ c.created,
+ c.modified,
+ a.account_id,
+ p.name,
+ b.name,
+ CASE WHEN c.merged = 'Y' THEN 'M'
+      WHEN c.closed = 'Y' THEN 'A'
+      ELSE 'n'
+ END,
+ CASE WHEN c.merged = 'Y' THEN 'N'
+      WHEN c.closed = 'Y' THEN 'N'
+      ELSE 'Y'
+ END,
+ c.n_patchsets,
+ c.n_patchsets,
+ c.subject,
+ c.change_id
+ FROM gerrit1.changes c,
+ accounts a,
+ gerrit1.projects p,
+ gerrit1.branches b
+ WHERE 
+ a.preferred_email = c.owner
+ AND p.gae_key = c.dest_project_key
+ AND b.gae_key = c.dest_branch_key
+ ;
+
+UPDATE gerrit1.messages
+SET sender = substring(sender from '<(.*)>')
+WHERE sender LIKE '%<%>';
+
+UPDATE gerrit1.messages
+SET sender = NULL
+WHERE sender = 'code-review@android.com';
+
+UPDATE gerrit1.messages
+SET body = 'Change has been successfully merged into the git repository.'
+WHERE body LIKE '
+Hi.
+
+Your change has been successfully merged into the git repository.
+
+-Your friendly git merger%'
+AND sender IS NULL;
+
+UPDATE gerrit1.messages
+SET body = 'Change could not be merged because of a missing dependency.  As soon as its dependencies are submitted, the change will be submitted.'
+WHERE (body LIKE '
+Hi.
+
+Your change could not be merged because of a missing dependency.%
+
+-Your friendly git merger%'
+OR body LIKE '
+Your change could not be merged because of a missing dependency.
+
+As soon as all dependencies are submitted, your change will be
+resubmitted automatically.%'
+) AND sender IS NULL;
+
+UPDATE gerrit1.messages
+SET body = 'Change cannot be merged because of a path conflict.'
+WHERE body LIKE '
+Hi.
+
+Your change has not been successfully merged into the git repository
+because of a path conflict.
+
+-Your friendly git merger%'
+AND sender is NULL;
+
+UPDATE gerrit1.messages
+SET body = TRIM(both '
+' FROM body);
+
+DELETE FROM change_messages;
+INSERT INTO change_messages
+(change_id,
+ uuid,
+ author_id,
+ written_on,
+ message) SELECT
+ c.change_id,
+ substr(m.gae_key, length(m.change_key) + length('wLEgdNZXNzYWdlG')),
+ a.account_id,
+ m.date_sent,
+ m.body
+ FROM gerrit1.messages m
+ LEFT OUTER JOIN accounts a ON a.preferred_email = m.sender,
+ gerrit1.changes c
+ WHERE
+ c.gae_key = m.change_key;
+
+DELETE FROM patch_sets;
+INSERT INTO patch_sets
+(revision,
+ change_id,
+ patch_set_id) SELECT
+ r.revision_id,
+ c.change_id,
+ p.patchset_id
+ FROM gerrit1.patch_sets p
+ JOIN gerrit1.changes c ON p.change_key = c.gae_key
+ LEFT OUTER JOIN gerrit1.revisions r ON r.gae_key = p.revision_key;
+
+DELETE FROM patch_set_info;
+INSERT INTO patch_set_info
+(subject,
+ message,
+ author_name,
+ author_email,
+ author_when,
+ author_tz,
+ committer_name,
+ committer_email,
+ committer_when,
+ committer_tz,
+ change_id,
+ patch_set_id) SELECT DISTINCT
+ (SELECT c.subject FROM changes c
+  WHERE c.change_id = p.change_id
+  AND c.current_patch_set_id = p.patch_set_id),
+ r.message,
+ r.author_name,
+ r.author_email,
+ r.author_when,
+ r.author_tz,
+ r.committer_name,
+ r.committer_email,
+ r.committer_when,
+ r.committer_tz,
+ p.change_id,
+ p.patch_set_id
+ FROM gerrit1.revisions r, patch_sets p
+ WHERE r.revision_id = p.revision;
+
+DELETE FROM patch_set_ancestors;
+INSERT INTO patch_set_ancestors
+(ancestor_revision,
+change_id,
+patch_set_id,
+position
+) SELECT DISTINCT
+ p.parent_id,
+ ps.change_id,
+ ps.patch_set_id,
+ p.position
+ FROM gerrit1.revision_ancestors p,
+ patch_sets ps
+ WHERE ps.revision = p.child_id;
+
+DELETE FROM patches;
+INSERT INTO patches
+(change_type,
+ patch_type,
+ nbr_comments,
+ change_id,
+ patch_set_id,
+ file_name) SELECT
+ p.status,
+ CASE WHEN p.multi_way_diff = 'Y' THEN 'N'
+      ELSE 'U'
+ END,
+ p.n_comments,
+ c.change_id,
+ ps.patchset_id,
+ p.filename
+ FROM gerrit1.patches p,
+ gerrit1.patch_sets ps,
+ gerrit1.changes c
+ WHERE p.patchset_key = ps.gae_key
+ AND ps.change_key = c.gae_key;
+
+DELETE FROM patch_comments;
+INSERT INTO patch_comments
+(line_nbr,
+ author_id,
+ written_on,
+ status,
+ side,
+ message,
+ change_id,
+ patch_set_id,
+ file_name,
+ uuid) SELECT
+ c.lineno,
+ a.account_id,
+ c.written,
+ CASE WHEN c.draft = 'Y' THEN 'd'
+      ELSE 'P'
+ END,
+ CASE WHEN c.is_left = 'Y' THEN 0
+      ELSE 1
+ END,
+ c.body,
+ o_c.change_id,
+ o_ps.patchset_id,
+ o_p.filename,
+ c.message_id
+ FROM gerrit1.comments c,
+ accounts a,
+ gerrit1.patches o_p,
+ gerrit1.patch_sets o_ps,
+ gerrit1.changes o_c
+ WHERE o_p.patchset_key = o_ps.gae_key
+ AND o_ps.change_key = o_c.gae_key
+ AND o_p.gae_key = c.patch_key
+ AND a.preferred_email = c.author;
+
+DELETE FROM change_approvals;
+INSERT INTO change_approvals
+(value,
+ change_id,
+ account_id,
+ category_id) SELECT
+ 1,
+ c.change_id,
+ a.account_id,
+ 'VRIF'
+ FROM gerrit1.review_status s,
+ gerrit1.changes c,
+ accounts a
+ WHERE
+ s.verified = 'Y'
+ AND s.change_key = c.gae_key
+ AND a.preferred_email = s.email;
+INSERT INTO change_approvals
+(value,
+ change_id,
+ account_id,
+ category_id) SELECT
+ CASE WHEN s.lgtm = 'lgtm' THEN 2
+      WHEN s.lgtm = 'yes' THEN 1
+      WHEN s.lgtm = 'abstain' THEN 0
+      WHEN s.lgtm = 'no' THEN -1
+      WHEN s.lgtm = 'reject' THEN -2
+      ELSE NULL
+ END,
+ c.change_id,
+ a.account_id,
+ 'CRVW'
+ FROM gerrit1.review_status s,
+ gerrit1.changes c,
+ accounts a
+ WHERE
+ s.lgtm IS NOT NULL
+ AND s.change_key = c.gae_key
+ AND a.preferred_email = s.email;
+
+DELETE FROM starred_changes;
+INSERT INTO starred_changes
+(account_id,
+ change_id) SELECT
+ a.account_id,
+ c.change_id
+FROM gerrit1.account_stars s,
+     accounts a,
+     changes c
+WHERE a.preferred_email = s.email
+      AND c.change_id = s.change_id;
+
+UPDATE account_groups
+SET name = 'Administrators'
+WHERE name = 'admin';
+
+-- Fix change.nbr_patch_sets
+--
+UPDATE changes
+SET nbr_patch_sets = (SELECT MAX(p.patch_set_id)
+                      FROM patch_sets p
+                      WHERE p.change_id = changes.change_id);
+
+-- Fix change.last_updated_on
+--
+CREATE TEMPORARY TABLE temp_dates (
+change_id INT NOT NULL,
+dt TIMESTAMP NOT NULL);
+
+INSERT INTO temp_dates
+SELECT change_id,written_on
+FROM patch_comments
+WHERE status = 'P';
+
+INSERT INTO temp_dates
+SELECT change_id,written_on FROM change_messages;
+
+INSERT INTO temp_dates
+SELECT change_id,merge_submitted
+FROM gerrit1.changes
+WHERE merge_submitted IS NOT NULL
+AND merged = 'Y';
+
+UPDATE changes
+SET last_updated_on = (SELECT MAX(m.dt)
+                       FROM temp_dates m
+                       WHERE m.change_id = changes.change_id)
+WHERE EXISTS (SELECT 1 FROM temp_dates m
+              WHERE m.change_id = changes.change_id);
+DROP TABLE temp_dates;
+
+
+-- Fix patches.nbr_comments
+--
+UPDATE patches
+SET nbr_comments = (SELECT COUNT(*)
+                    FROM patch_comments c
+                    WHERE c.status = 'P'
+                    AND c.change_id = patches.change_id
+                    AND c.patch_set_id = patches.patch_set_id
+                    AND c.file_name = patches.file_name);
+
+SELECT
+ (SELECT COUNT(*) FROM gerrit1.accounts) as accounts_g1,
+ (SELECT COUNT(*) FROM accounts) as accounts_g1
+WHERE
+  (SELECT COUNT(*) FROM gerrit1.accounts)
+!=(SELECT COUNT(*) FROM accounts);
+
+SELECT
+ (SELECT COUNT(*) FROM gerrit1.changes) as changes_g1,
+ (SELECT COUNT(*) FROM changes) as changes_g2
+WHERE 
+  (SELECT COUNT(*) FROM gerrit1.changes)
+!=(SELECT COUNT(*) FROM changes);
+
+SELECT
+ (SELECT COUNT(*) FROM gerrit1.messages) as messages_g1,
+ (SELECT COUNT(*) FROM change_messages) as messages_g2
+WHERE 
+  (SELECT COUNT(*) FROM gerrit1.messages)
+!=(SELECT COUNT(*) FROM change_messages);
+
+SELECT
+ (SELECT COUNT(*) FROM gerrit1.patch_sets) as patch_sets_g1,
+ (SELECT COUNT(*) FROM patch_sets) as patch_sets_g2
+WHERE
+  (SELECT COUNT(*) FROM gerrit1.patch_sets)
+!=(SELECT COUNT(*) FROM patch_sets);
+
+SELECT
+ (SELECT COUNT(*) FROM gerrit1.patches g, gerrit1.patch_sets p
+  WHERE g.patchset_key = p.gae_key) as patches_g1,
+ (SELECT COUNT(*) FROM patches) as patches_g2
+WHERE
+  (SELECT COUNT(*) FROM gerrit1.patches g, gerrit1.patch_sets p
+   WHERE g.patchset_key = p.gae_key)
+!=(SELECT COUNT(*) FROM patches);
+
+SELECT
+ (SELECT COUNT(*) FROM gerrit1.comments) as comments_g1,
+ (SELECT COUNT(*) FROM patch_comments) as comments_g2
+WHERE
+  (SELECT COUNT(*) FROM gerrit1.comments)
+!=(SELECT COUNT(*) FROM patch_comments);
+
+-- Reset sequences
+--
+-- account_group_id (above)
+-- account_id (above)
+-- branch_id (above)
+SELECT setval('change_id',(SELECT MAX(change_id) FROM changes));
+-- contributor_agreement_id (above)
+SELECT setval('project_id',(SELECT MAX(project_id) FROM projects));
+
+-- Grant access to read tables needed for import
+--
+GRANT SELECT ON gerrit1.project_code_reviews TO gerrit2;
+GRANT SELECT ON gerrit1.approval_right_groups TO gerrit2;
+GRANT SELECT ON gerrit1.approval_right_users TO gerrit2;
+GRANT SELECT ON gerrit1.approval_rights TO gerrit2;
+GRANT SELECT ON gerrit1.account_groups TO gerrit2;
diff --git a/mgrapp/.classpath b/mgrapp/.classpath
deleted file mode 100644
index 5428a9b..0000000
--- a/mgrapp/.classpath
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry exported="true" kind="lib" path="lib/codereview_proto.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/protobuf.jar" sourcepath="lib/protobuf_src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/jgit.jar" sourcepath="lib/jgit_src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-httpclient.jar" sourcepath="lib/commons-httpclient_src.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-codec.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/commons-logging.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jsch.jar"/>
-	<classpathentry kind="lib" path="lib/commons-net.jar" sourcepath="lib/commons-net_src.zip"/>
-	<classpathentry kind="lib" path="lib/log4j.jar" sourcepath="lib/log4j_src.zip"/>
-	<classpathentry kind="output" path="out_classes"/>
-</classpath>
diff --git a/mgrapp/.gitignore b/mgrapp/.gitignore
deleted file mode 100644
index f0ca765..0000000
--- a/mgrapp/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/lib/*_src.zip
-/lib/codereview_proto.jar
-/lib/codereview_manager.jar
-/lib/protobuf.jar
-/lib/jsch.jar
-/lib/jgit.jar
-/out_classes
-/.password-*
diff --git a/mgrapp/.project b/mgrapp/.project
deleted file mode 100644
index 868f04e..0000000
--- a/mgrapp/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>mgrapp</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/mgrapp/bin/mgr b/mgrapp/bin/mgr
deleted file mode 100755
index 7a14aeb..0000000
--- a/mgrapp/bin/mgr
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-if [ -z "$MGR_HOME" ]
-then
-	MGR_HOME=`which $0 2>/dev/null`
-	MGR_HOME=`dirname $MGR_HOME`
-	MGR_HOME=`dirname $MGR_HOME`
-fi
-
-if [ -z "$MGR_HOME" ]
-then
-	echo >&2 "error: MGR_HOME not set, cannot guess"
-	exit 1
-fi
-
-if ! [ -f "$MGR_HOME/lib/codereview_manager.jar" ]
-then
-	echo >&2 "error: MGR_HOME $MGR_HOME not compiled"
-	exit 1
-fi
-
-if [ -z "$1" ]
-then
-	echo >&2 "usage: $0 app.config [args]"
-	exit 1
-fi
-config_file=$1
-shift
-
-java_opts=
-
-m=`GIT_CONFIG=$config_file git config --get codereview.memory`
-if [ -n "$m" ]
-then
-	java_opts="$java_opts -Xmx${m}"
-fi
-
-CLASSPATH=
-for j in $MGR_HOME/lib/*.jar
-do
-	if [ -z "$CLASSPATH" ]
-	then
-		CLASSPATH=$j
-	else
-		CLASSPATH=$CLASSPATH:$j
-	fi
-done
-export CLASSPATH
-
-umask 0022
-exec java $java_opts com.google.codereview.Main "$config_file" "$@"
diff --git a/mgrapp/compile.sh b/mgrapp/compile.sh
deleted file mode 100755
index 0a45a69..0000000
--- a/mgrapp/compile.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-CLASSPATH=
-for j in `pwd`/lib/*.jar
-do
-	CLASSPATH=$CLASSPATH:$j
-done
-export CLASSPATH
-
-(cd src &&
- mkdir -p ../bin &&
- mkdir -p ../bin/META-INF &&
- cp -f META-INF/MANIFEST.MF ../bin/META-INF &&
- find . -name \*.java | xargs javac -g -d ../bin) &&
-(cd bin &&
- rm -f ../codereview_manager.jar &&
- jar cf ../codereview_manager.jar . ) || exit
diff --git a/mgrapp/lib/commons-codec.jar b/mgrapp/lib/commons-codec.jar
deleted file mode 100644
index 957b675..0000000
--- a/mgrapp/lib/commons-codec.jar
+++ /dev/null
Binary files differ
diff --git a/mgrapp/lib/commons-httpclient.jar b/mgrapp/lib/commons-httpclient.jar
deleted file mode 100644
index 7c59774..0000000
--- a/mgrapp/lib/commons-httpclient.jar
+++ /dev/null
Binary files differ
diff --git a/mgrapp/lib/commons-logging.jar b/mgrapp/lib/commons-logging.jar
deleted file mode 100644
index 8758a96..0000000
--- a/mgrapp/lib/commons-logging.jar
+++ /dev/null
Binary files differ
diff --git a/mgrapp/lib/commons-net.jar b/mgrapp/lib/commons-net.jar
deleted file mode 100644
index 9666a92..0000000
--- a/mgrapp/lib/commons-net.jar
+++ /dev/null
Binary files differ
diff --git a/mgrapp/lib/log4j.jar b/mgrapp/lib/log4j.jar
deleted file mode 100644
index c930a6a..0000000
--- a/mgrapp/lib/log4j.jar
+++ /dev/null
Binary files differ
diff --git a/mgrapp/src/META-INF/MANIFEST.MF b/mgrapp/src/META-INF/MANIFEST.MF
deleted file mode 100644
index db91724..0000000
--- a/mgrapp/src/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: com.google.codereview.Main
-
diff --git a/mgrapp/src/com/google/codereview/Main.java b/mgrapp/src/com/google/codereview/Main.java
deleted file mode 100644
index 1a5c181..0000000
--- a/mgrapp/src/com/google/codereview/Main.java
+++ /dev/null
@@ -1,244 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview;
-
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.ProjectSync;
-import com.google.codereview.manager.RepositoryCache;
-import com.google.codereview.manager.merge.PendingMerger;
-import com.google.codereview.manager.prune.BuildPruner;
-import com.google.codereview.manager.prune.BundlePruner;
-import com.google.codereview.manager.unpack.ReceivedBundleUnpacker;
-import com.google.codereview.rpc.HttpRpc;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.log4j.Appender;
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.FileAppender;
-import org.apache.log4j.Layout;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PatternLayout;
-import org.spearce.jgit.lib.PersonIdent;
-import org.spearce.jgit.lib.RepositoryConfig;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-/** Server startup, invoked from the command line. */
-public class Main {
-  private static final Log LOG = LogFactory.getLog("main");
-  private static final String SEC_CODEREVIEW = "codereview";
-  private static final String SEC_LOG = "log";
-  private static final int FOUR_HOURS = 4 * 60 * 60; // seconds
-  private static final int ONCE_PER_DAY = 24 * 60 * 60;// seconds
-
-  public static void main(final String[] args) {
-    if (args.length == 0) {
-      System.err.println("usage: " + Main.class.getName() + " configfile");
-      System.exit(1);
-    }
-
-    final File configPath = new File(args[0]).getAbsoluteFile();
-    final RepositoryConfig config = new RepositoryConfig(null, configPath);
-    try {
-      config.load();
-    } catch (FileNotFoundException e) {
-      System.err.println("error: " + configPath + " not found");
-      System.exit(1);
-    } catch (IOException e) {
-      System.err.println("error: " + configPath + " not readable");
-      e.printStackTrace(System.err);
-      System.exit(1);
-    }
-
-    configureLogging(config, args.length > 1);
-    LOG.info("Read " + configPath);
-    final Main me = new Main(configPath, config);
-
-    if (args.length == 1) {
-      me.addShutdownHook();
-      me.start();
-    } else {
-      final String cmd = args[1];
-      if (cmd.equals("sync")) {
-        new ProjectSync(me.backend).sync();
-      } else {
-        System.err.println("error: " + cmd + " not recognized");
-      }
-      LogManager.shutdown();
-    }
-  }
-
-  private final RepositoryConfig config;
-  private final ScheduledThreadPoolExecutor pool;
-  private final int taskSleep;
-  private final Backend backend;
-
-  private Main(final File configPath, final RepositoryConfig rc) {
-    config = rc;
-
-    final int threads = config.getInt(SEC_CODEREVIEW, "threads", 10);
-    taskSleep = config.getInt(SEC_CODEREVIEW, "sleep", 10);
-    LOG.info("Starting thread pool with " + threads + " initial threads.");
-    pool = new ScheduledThreadPoolExecutor(threads);
-
-    final RepositoryCache repoCache = createRepositoryCache();
-    final HttpRpc rpc = createHttpRpc(configPath.getParentFile());
-    backend = new Backend(repoCache, rpc, pool, createUserPersonIdent());
-  }
-
-  private RepositoryCache createRepositoryCache() {
-    final File basedir = new File(required(SEC_CODEREVIEW, "basedir"));
-    return new RepositoryCache(basedir);
-  }
-
-  private HttpRpc createHttpRpc(final File base) throws ThreadDeath {
-    final URL serverUrl;
-    try {
-      serverUrl = new URL(required(SEC_CODEREVIEW, "server"));
-    } catch (MalformedURLException err) {
-      System.err.println("error: Bad URL in " + SEC_CODEREVIEW + ".server");
-      System.exit(1);
-      throw new ThreadDeath();
-    }
-
-    final String roleUser = config.getString(SEC_CODEREVIEW, null, "username");
-    File pwf = new File(required(SEC_CODEREVIEW, "secureconfig"));
-    if (!pwf.isAbsolute()) {
-      pwf = new File(base, pwf.getPath());
-    }
-
-    final RepositoryConfig pwc = new RepositoryConfig(null, pwf);
-    try {
-      pwc.load();
-    } catch (IOException e) {
-      System.err.println("error: Cannot read secureconfig: " + pwf + ": "
-          + e.getMessage());
-      System.exit(1);
-      throw new ThreadDeath();
-    }
-
-    final String rolePass = pwc.getString(SEC_CODEREVIEW, null, "password");
-    final String apiKey = pwc.getString(SEC_CODEREVIEW, null, "internalapikey");
-    return new HttpRpc(serverUrl, roleUser, rolePass, apiKey);
-  }
-
-  private PersonIdent createUserPersonIdent() {
-    final String name = required("user", "name");
-    final String email = required("user", "email");
-    return new PersonIdent(name, email, System.currentTimeMillis(), 0);
-  }
-
-  private void addShutdownHook() {
-    Runtime.getRuntime().addShutdownHook(new Thread() {
-      @Override
-      public void run() {
-        LOG.info("Shutting down thread pool.");
-        pool.shutdown();
-
-        boolean isTerminated;
-        do {
-          try {
-            isTerminated = pool.awaitTermination(10, TimeUnit.SECONDS);
-          } catch (InterruptedException ie) {
-            isTerminated = false;
-          }
-        } while (!isTerminated);
-        LOG.info("Thread pool shutdown.");
-        LogManager.shutdown();
-      }
-    });
-  }
-
-  private void start() {
-    schedule(new ReceivedBundleUnpacker(backend));
-    schedule(new PendingMerger(backend));
-    schedule(new BundlePruner(backend), FOUR_HOURS);
-    schedule(new BuildPruner(backend), ONCE_PER_DAY);
-  }
-
-  private void schedule(final Runnable t) {
-    schedule(t, taskSleep);
-  }
-
-  private void schedule(final Runnable t, final int sleep) {
-    pool.scheduleWithFixedDelay(t, 0, sleep, TimeUnit.SECONDS);
-  }
-
-  private String required(final String sec, final String key) {
-    final String r = config.getString(sec, null, key);
-    if (r == null || r.length() == 0) {
-      System.err.println("error: Missing required config " + sec + "." + key);
-      System.exit(1);
-    }
-    return r;
-  }
-
-  private static void configureLogging(final RepositoryConfig config,
-      final boolean interactive) {
-    final String logfile = config.getString(SEC_LOG, null, "file");
-    final Layout layout;
-    final Appender out;
-
-    layout = new PatternLayout("%d{yyyyMMdd.HHmmss} %-5p %c - %m%n");
-    if (logfile != null && !interactive) {
-      try {
-        out = new FileAppender(layout, logfile, true);
-      } catch (IOException err) {
-        System.err.println("fatal: Cannot open log '" + logfile + "': " + err);
-        System.exit(1);
-        throw new ThreadDeath();
-      }
-    } else {
-      out = new ConsoleAppender(layout);
-    }
-    LogManager.getRootLogger().addAppender(out);
-
-    final Level levelObj;
-    final String levelStr = config.getString(SEC_LOG, null, "level");
-    if (levelStr == null || levelStr.length() == 0) {
-      levelObj = Level.INFO;
-    } else if ("trace".equalsIgnoreCase(levelStr)) {
-      levelObj = Level.TRACE;
-    } else if ("debug".equalsIgnoreCase(levelStr)) {
-      levelObj = Level.DEBUG;
-    } else if ("info".equalsIgnoreCase(levelStr)) {
-      levelObj = Level.INFO;
-    } else if ("warning".equalsIgnoreCase(levelStr)
-        || "warn".equalsIgnoreCase(levelStr)) {
-      levelObj = Level.WARN;
-    } else if ("error".equalsIgnoreCase(levelStr)) {
-      levelObj = Level.ERROR;
-    } else if ("fatal".equalsIgnoreCase(levelStr)) {
-      levelObj = Level.FATAL;
-    } else {
-      System.out.println("warning: Bad " + SEC_LOG + ".level " + levelStr
-          + "; assuming info");
-      levelObj = Level.INFO;
-    }
-    LogManager.getRootLogger().setLevel(levelObj);
-
-    Logger.getLogger("httpclient").setLevel(Level.WARN);
-    Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.WARN);
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/Backend.java b/mgrapp/src/com/google/codereview/manager/Backend.java
deleted file mode 100644
index 02a6bcf..0000000
--- a/mgrapp/src/com/google/codereview/manager/Backend.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager;
-
-import com.google.codereview.internal.Admin.AdminService;
-import com.google.codereview.internal.Build.BuildService;
-import com.google.codereview.internal.BundleStore.BundleStoreService;
-import com.google.codereview.internal.Change.ChangeService;
-import com.google.codereview.internal.Merge.MergeService;
-import com.google.protobuf.RpcChannel;
-
-import org.spearce.jgit.lib.PersonIdent;
-
-import java.util.concurrent.ScheduledExecutorService;
-
-/**
- * Configuration and state related to a single Gerrit backend process.
- */
-public class Backend {
-  private final RepositoryCache repoCache;
-  private final RpcChannel rpc;
-  private final ScheduledExecutorService executor;
-  private final PersonIdent mergeIdent;
-
-  private final AdminService adminSvc;
-  private final BuildService buildSvc;
-  private final BundleStoreService bundleStoreSvc;
-  private final ChangeService changeSvc;
-  private final MergeService mergeSvc;
-
-  public Backend(final RepositoryCache cache, final RpcChannel api,
-      final ScheduledExecutorService threadPool,
-      final PersonIdent performMergsAs) {
-    repoCache = cache;
-    rpc = api;
-    executor = threadPool;
-    mergeIdent = performMergsAs;
-
-    adminSvc = AdminService.newStub(rpc);
-    buildSvc = BuildService.newStub(rpc);
-    bundleStoreSvc = BundleStoreService.newStub(rpc);
-    changeSvc = ChangeService.newStub(rpc);
-    mergeSvc = MergeService.newStub(rpc);
-  }
-
-  public RepositoryCache getRepositoryCache() {
-    return repoCache;
-  }
-
-  public RpcChannel getRpcChannel() {
-    return rpc;
-  }
-
-  public PersonIdent getMergeIdentity() {
-    return mergeIdent;
-  }
-
-  /**
-   * @return a copy of {@link #getMergeIdentity()} modified to use the current
-   *         system clock as the time, in the GMT/UTC time zone.
-   */
-  public PersonIdent newMergeIdentity() {
-    return new PersonIdent(getMergeIdentity(), System.currentTimeMillis(), 0);
-  }
-
-  /**
-   * Schedule a task for execution on a background thread.
-   * 
-   * @param task runnable to perform the task. The task will be executed once,
-   *        as soon as a thread is available.
-   */
-  public void asyncExec(final Runnable task) {
-    executor.submit(task);
-  }
-
-  public AdminService getAdminService() {
-    return adminSvc;
-  }
-
-  public BuildService getBuildService() {
-    return buildSvc;
-  }
-
-  public BundleStoreService getBundleStoreService() {
-    return bundleStoreSvc;
-  }
-
-  public ChangeService getChangeService() {
-    return changeSvc;
-  }
-
-  public MergeService getMergeService() {
-    return mergeSvc;
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/InvalidRepositoryException.java b/mgrapp/src/com/google/codereview/manager/InvalidRepositoryException.java
deleted file mode 100644
index 0928418..0000000
--- a/mgrapp/src/com/google/codereview/manager/InvalidRepositoryException.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager;
-
-/** Indicates a directory does not contain a valid Git repository. */
-public class InvalidRepositoryException extends Exception {
-  public InvalidRepositoryException(final String name) {
-    super(name);
-  }
-
-  public InvalidRepositoryException(final String name, final Throwable err) {
-    super(name, err);
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/ProjectSync.java b/mgrapp/src/com/google/codereview/manager/ProjectSync.java
deleted file mode 100644
index ea2f141..0000000
--- a/mgrapp/src/com/google/codereview/manager/ProjectSync.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager;
-
-import com.google.codereview.internal.SyncProject.BranchSync;
-import com.google.codereview.internal.SyncProject.SyncProjectRequest;
-import com.google.codereview.internal.SyncProject.SyncProjectResponse;
-import com.google.codereview.rpc.SimpleController;
-import com.google.codereview.util.GitMetaUtil;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.spearce.jgit.errors.IncorrectObjectTypeException;
-import org.spearce.jgit.lib.Constants;
-import org.spearce.jgit.lib.Ref;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.revwalk.RevCommit;
-import org.spearce.jgit.revwalk.RevWalk;
-
-import java.io.File;
-import java.io.IOException;
-
-public class ProjectSync {
-  private static final Log LOG = LogFactory.getLog(ProjectSync.class);
-
-  private final Backend server;
-
-  public ProjectSync(final Backend be) {
-    server = be;
-  }
-
-  public void sync() {
-    syncDirectoryImpl(server.getRepositoryCache().getBaseDirectory(), "");
-  }
-
-  private void syncDirectoryImpl(final File root, final String prefix) {
-    final File[] entries = root.listFiles();
-    if (entries == null) {
-      return;
-    }
-
-    for (final File f : entries) {
-      final String fName = f.getName();
-      if (fName.equals(".") || fName.equals("..")) {
-        continue;
-      }
-
-      if (!f.isDirectory()) {
-        continue;
-      }
-
-      String fullName = prefix + fName;
-      final Repository db;
-      try {
-        db = GitMetaUtil.open(f);
-      } catch (IOException e) {
-        LOG.error("Cannot open " + f + ": " + e.toString());
-        continue;
-      }
-
-      if (db != null) {
-        try {
-          if (fullName.endsWith(".git")) {
-            fullName = fullName.substring(0, fullName.length() - 4);
-          }
-          sync(fullName, db);
-        } finally {
-          db.close();
-        }
-      } else {
-        syncDirectoryImpl(f, fullName + "/");
-      }
-    }
-  }
-
-  public void sync(final String name, final Repository db) {
-    final SyncProjectRequest.Builder req = SyncProjectRequest.newBuilder();
-    req.setProjectName(name);
-
-    try {
-      final RevWalk rw = new RevWalk(db);
-      for (final Ref ref : db.getAllRefs().values()) {
-        if (ref.getName().startsWith(Constants.R_HEADS)) {
-          final RevCommit c;
-          try {
-            c = rw.parseCommit(ref.getObjectId());
-          } catch (IncorrectObjectTypeException e) {
-            continue;
-          }
-
-          final String branchName =
-              ref.getName().substring(Constants.R_HEADS.length());
-          if ("true".equals(db.getConfig().getString("branch", branchName,
-              "denygerrit"))) {
-            continue;
-          }
-
-          req.addBranch(toBranch(ref, c));
-        }
-      }
-    } catch (IOException err) {
-      LOG.error("Cannot synchronize " + name, err);
-    }
-
-    send(req.build());
-  }
-
-  private BranchSync toBranch(final Ref r, final RevCommit c) {
-    final BranchSync.Builder bs = BranchSync.newBuilder();
-    bs.setBranchName(r.getName());
-    return bs.build();
-  }
-
-  private void send(final SyncProjectRequest req) {
-    final SimpleController ctrl = new SimpleController();
-    server.getAdminService().syncProject(ctrl, req,
-        new RpcCallback<SyncProjectResponse>() {
-          public void run(final SyncProjectResponse rsp) {
-          }
-        });
-    if (ctrl.failed()) {
-      final String name = req.getProjectName();
-      LOG.error("syncProject " + name + ": " + ctrl.errorText());
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/RepositoryCache.java b/mgrapp/src/com/google/codereview/manager/RepositoryCache.java
deleted file mode 100644
index bc106b2..0000000
--- a/mgrapp/src/com/google/codereview/manager/RepositoryCache.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager;
-
-import com.google.codereview.util.GitMetaUtil;
-
-import org.spearce.jgit.lib.Repository;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-/** Cache of active Git repositories being used by the manager. */
-public class RepositoryCache {
-  private static final Pattern REPO_NAME =
-      Pattern.compile("^[A-Za-z][A-Za-z0-9/_-]+$");
-
-  private final File base;
-
-  private final Map<String, Reference<Repository>> cache;
-
-  /**
-   * Create a new cache to manage a specific base directory (and below).
-   * 
-   * @param basedir top level directory that contains all repositories.
-   */
-  public RepositoryCache(final File basedir) {
-    base = basedir;
-    cache = new HashMap<String, Reference<Repository>>();
-  }
-
-  /**
-   * @return the base directory which contains all known repositories.
-   */
-  public File getBaseDirectory() {
-    return base;
-  }
-
-  /**
-   * Get (or open) a repository by name.
-   * 
-   * @param name the repository name, relative to the base directory supplied
-   *        when the cache was created.
-   * @return the cached Repository instance.
-   * @throws InvalidRepositoryException the name does not denote an existing
-   *         repository, or the name cannot be read as a repository.
-   */
-  public synchronized Repository get(String name)
-      throws InvalidRepositoryException {
-    if (name.endsWith(".git")) {
-      name = name.substring(0, name.length() - 4);
-    }
-
-    if (!REPO_NAME.matcher(name).matches()) {
-      throw new InvalidRepositoryException(name);
-    }
-
-    final Reference<Repository> ref = cache.get(name);
-    Repository db = ref != null ? ref.get() : null;
-    if (db == null) {
-      try {
-        db = GitMetaUtil.open(new File(base, name));
-        if (db == null) {
-          throw new InvalidRepositoryException(name);
-        }
-      } catch (IOException err) {
-        throw new InvalidRepositoryException(name, err);
-      }
-      cache.put(name, new SoftReference<Repository>(db));
-    }
-    return db;
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/StopProcessingException.java b/mgrapp/src/com/google/codereview/manager/StopProcessingException.java
deleted file mode 100644
index ac0b2fa..0000000
--- a/mgrapp/src/com/google/codereview/manager/StopProcessingException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager;
-
-/** Indicates the worker task wants to be unscheduled and never run again. */
-public class StopProcessingException extends RuntimeException {
-  public StopProcessingException(String message) {
-    super(message);
-  }
-
-  public StopProcessingException(Throwable cause) {
-    super(cause);
-  }
-
-  public StopProcessingException(String message, Throwable cause) {
-    super(message, cause);
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/merge/BranchUpdater.java b/mgrapp/src/com/google/codereview/manager/merge/BranchUpdater.java
deleted file mode 100644
index 3304d74..0000000
--- a/mgrapp/src/com/google/codereview/manager/merge/BranchUpdater.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.merge;
-
-import com.google.codereview.internal.PostBranchUpdate.PostBranchUpdateRequest;
-import com.google.codereview.internal.PostBranchUpdate.PostBranchUpdateResponse;
-import com.google.codereview.internal.PostBuildResult.PostBuildResultResponse;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.rpc.SimpleController;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class BranchUpdater {
-  private static final Log LOG = LogFactory.getLog(BranchUpdater.class);
-
-  private final Backend server;
-
-  public BranchUpdater(final Backend be) {
-    server = be;
-  }
-
-  public void updateBranch(final PostBuildResultResponse buildInfo) {
-    if (new UpdateOp(server.getRepositoryCache(), buildInfo).update()) {
-      final PostBranchUpdateRequest.Builder req;
-
-      req = PostBranchUpdateRequest.newBuilder();
-      req.setBranchKey(buildInfo.getDestBranchKey());
-      req.addAllNewChange(buildInfo.getNewChangeList());
-      send(req.build());
-    } else {
-      final PostBranchUpdateRequest.Builder req;
-
-      req = PostBranchUpdateRequest.newBuilder();
-      req.setBranchKey(buildInfo.getDestBranchKey());
-      // Don't mark any changes merged.
-      send(req.build());
-    }
-  }
-
-  private void send(final PostBranchUpdateRequest msg) {
-    if (LOG.isDebugEnabled()) {
-      LOG.debug("\n" + msg);
-    }
-
-    final SimpleController ctrl = new SimpleController();
-    server.getMergeService().postBranchUpdate(ctrl, msg,
-        new RpcCallback<PostBranchUpdateResponse>() {
-          public void run(final PostBranchUpdateResponse rsp) {
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("postBranchUpdate failed: " + ctrl.errorText());
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/merge/CodeReviewCommit.java b/mgrapp/src/com/google/codereview/manager/merge/CodeReviewCommit.java
deleted file mode 100644
index 8542240..0000000
--- a/mgrapp/src/com/google/codereview/manager/merge/CodeReviewCommit.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.merge;
-
-import com.google.codereview.internal.PostMergeResult.MergeResultItem;
-
-import org.spearce.jgit.lib.AnyObjectId;
-import org.spearce.jgit.revwalk.RevCommit;
-
-import java.util.List;
-
-/** Extended commit entity with code review specific metadata. */
-class CodeReviewCommit extends RevCommit {
-  /**
-   * Unique key of the PatchSet entity from the code review system.
-   * <p>
-   * This value is only available on commits that have a PatchSet represented in
-   * the code review system and whose PatchSet is in the current submit queue.
-   * Merge commits created during the merge or commits that aren't in the submit
-   * queue will keep this member null.
-   */
-  String patchsetKey;
-
-  /**
-   * Ordinal position of this commit within the submit queue.
-   * <p>
-   * Only valid if {@link #patchsetKey} is not null.
-   */
-  int originalOrder;
-
-  /**
-   * The result status for this commit.
-   * <p>
-   * Only valid if {@link #patchsetKey} is not null.
-   */
-  MergeResultItem.CodeType statusCode;
-
-  /** Commits which are missing ancestors of this commit. */
-  List<CodeReviewCommit> missing;
-
-  CodeReviewCommit(final AnyObjectId id) {
-    super(id);
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/merge/MergeException.java b/mgrapp/src/com/google/codereview/manager/merge/MergeException.java
deleted file mode 100644
index 3928a33..0000000
--- a/mgrapp/src/com/google/codereview/manager/merge/MergeException.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.merge;
-
-/** Indicates the current branch's queue cannot be processed at this time. */
-class MergeException extends Exception {
-  MergeException(final String msg) {
-    super(msg, null);
-  }
-
-  MergeException(final String msg, final Throwable why) {
-    super(msg, why);
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/merge/MergeOp.java b/mgrapp/src/com/google/codereview/manager/merge/MergeOp.java
deleted file mode 100644
index 24f88b8..0000000
--- a/mgrapp/src/com/google/codereview/manager/merge/MergeOp.java
+++ /dev/null
@@ -1,416 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.merge;
-
-import com.google.codereview.internal.PendingMerge.PendingMergeItem;
-import com.google.codereview.internal.PendingMerge.PendingMergeResponse;
-import com.google.codereview.internal.PostMergeResult.MergeResultItem;
-import com.google.codereview.internal.PostMergeResult.MissingDependencyItem;
-import com.google.codereview.internal.PostMergeResult.PostMergeResultRequest;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.InvalidRepositoryException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.spearce.jgit.errors.IncorrectObjectTypeException;
-import org.spearce.jgit.errors.MissingObjectException;
-import org.spearce.jgit.lib.AnyObjectId;
-import org.spearce.jgit.lib.Commit;
-import org.spearce.jgit.lib.Constants;
-import org.spearce.jgit.lib.ObjectId;
-import org.spearce.jgit.lib.PersonIdent;
-import org.spearce.jgit.lib.Ref;
-import org.spearce.jgit.lib.RefUpdate;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.merge.MergeStrategy;
-import org.spearce.jgit.merge.Merger;
-import org.spearce.jgit.revwalk.RevCommit;
-import org.spearce.jgit.revwalk.RevSort;
-import org.spearce.jgit.revwalk.RevWalk;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Merges changes in submission order into a single branch.
- * <p>
- * Branches are reduced to the minimum number of heads needed to merge
- * everything. This allows commits to be entered into the queue in any order
- * (such as ancestors before descendants) and only the most recent commit on any
- * line of development will be merged. All unmerged commits along a line of
- * development must be in the submission queue in order to merge the tip of that
- * line.
- * <p>
- * Conflicts are handled by discarding the entire line of development and
- * marking it as conflicting, even if an earlier commit along that same line can
- * be merged cleanly.
- */
-class MergeOp {
-  private static final Log LOG = LogFactory.getLog(MergeOp.class);
-
-  static String mergePinName(final AnyObjectId id) {
-    return mergePinName(id.name());
-  }
-
-  static String mergePinName(final String idstr) {
-    return "refs/merges/" + idstr;
-  }
-
-  private final Backend server;
-  private final PendingMergeResponse in;
-  private final PersonIdent mergeIdent;
-  private final Collection<MergeResultItem> updates;
-  private final List<CodeReviewCommit> toMerge;
-  private Repository db;
-  private RevWalk rw;
-  private CodeReviewCommit branchTip;
-  private CodeReviewCommit mergeTip;
-  private final List<CodeReviewCommit> newChanges;
-
-  MergeOp(final Backend be, final PendingMergeResponse mergeInfo) {
-    server = be;
-    in = mergeInfo;
-    mergeIdent = server.newMergeIdentity();
-    updates = new ArrayList<MergeResultItem>();
-    toMerge = new ArrayList<CodeReviewCommit>();
-    newChanges = new ArrayList<CodeReviewCommit>();
-  }
-
-  PostMergeResultRequest merge() {
-    final String loc = in.getDestProjectName() + " " + in.getDestBranchName();
-    LOG.debug("Merging " + loc);
-    try {
-      mergeImpl();
-
-      final PostMergeResultRequest.Builder update;
-      update = PostMergeResultRequest.newBuilder();
-      update.setDestBranchKey(in.getDestBranchKey());
-      update.addAllChange(updates);
-      return update.build();
-    } catch (MergeException ee) {
-      LOG.error("Error merging " + loc, ee);
-
-      mergeTip = null;
-
-      final PostMergeResultRequest.Builder update;
-      update = PostMergeResultRequest.newBuilder();
-      update.setDestBranchKey(in.getDestBranchKey());
-      for (final PendingMergeItem pmi : in.getChangeList()) {
-        update.addChange(suspend(pmi));
-      }
-      return update.build();
-    }
-  }
-
-  CodeReviewCommit getMergeTip() {
-    return mergeTip;
-  }
-
-  Collection<CodeReviewCommit> getNewChanges() {
-    return Collections.unmodifiableCollection(newChanges);
-  }
-
-  private void mergeImpl() throws MergeException {
-    openRepository();
-    openBranch();
-    validateChangeList();
-    reduceToMinimalMerge();
-    mergeTopics();
-    markCleanMerges();
-    pinMergeCommit();
-  }
-
-  private void openRepository() throws MergeException {
-    final String name = in.getDestProjectName();
-    try {
-      db = server.getRepositoryCache().get(name);
-    } catch (InvalidRepositoryException notGit) {
-      final String m = "Repository \"" + name + "\" unknown.";
-      throw new MergeException(m, notGit);
-    }
-
-    rw = new RevWalk(db) {
-      @Override
-      protected RevCommit createCommit(final AnyObjectId id) {
-        return new CodeReviewCommit(id);
-      }
-    };
-  }
-
-  private void openBranch() throws MergeException {
-    try {
-      final RefUpdate ru = db.updateRef(in.getDestBranchName());
-      if (ru.getOldObjectId() != null) {
-        branchTip = (CodeReviewCommit) rw.parseCommit(ru.getOldObjectId());
-      } else {
-        branchTip = null;
-      }
-    } catch (IOException e) {
-      throw new MergeException("Cannot open branch", e);
-    }
-  }
-
-  private void validateChangeList() throws MergeException {
-    final Set<ObjectId> tips = new HashSet<ObjectId>();
-    for (final Ref r : db.getAllRefs().values()) {
-      tips.add(r.getObjectId());
-    }
-
-    int commitOrder = 0;
-    for (final PendingMergeItem pmi : in.getChangeList()) {
-      final String idstr = pmi.getRevisionId();
-      final ObjectId id;
-      try {
-        id = ObjectId.fromString(idstr);
-      } catch (IllegalArgumentException iae) {
-        throw new MergeException("Invalid ObjectId: " + idstr);
-      }
-
-      if (!tips.contains(id)) {
-        // TODO Technically the proper way to do this test is to use a
-        // RevWalk on "$id --not --all" and test for an empty set. But
-        // that is way slower than looking for a ref directly pointing
-        // at the desired tip. We should always have a ref available.
-        //
-        // TODO this is actually an error, the branch is gone but we
-        // want to merge the issue. We can't safely do that if the
-        // tip is not reachable.
-
-        LOG.error("Cannot find branch head for " + id.name());
-        updates.add(suspend(pmi));
-        continue;
-      }
-
-      final CodeReviewCommit commit;
-      try {
-        commit = (CodeReviewCommit) rw.parseCommit(id);
-      } catch (IOException e) {
-        throw new MergeException("Invalid issue commit " + id, e);
-      }
-      commit.patchsetKey = pmi.getPatchsetKey();
-      commit.originalOrder = commitOrder++;
-      LOG.debug("Commit " + commit.name() + " is " + commit.patchsetKey);
-
-      if (branchTip != null) {
-        // If this commit is already merged its a bug in the queuing code
-        // that we got back here. Just mark it complete and move on. Its
-        // merged and that is all that mattered to the requestor.
-        //
-        try {
-          if (rw.isMergedInto(commit, branchTip)) {
-            commit.statusCode = MergeResultItem.CodeType.ALREADY_MERGED;
-            updates.add(toResult(commit));
-            LOG.debug("Already merged " + commit.name());
-            continue;
-          }
-        } catch (IOException err) {
-          throw new MergeException("Cannot perform merge base test", err);
-        }
-      }
-
-      toMerge.add(commit);
-    }
-  }
-
-  private void reduceToMinimalMerge() throws MergeException {
-    final Collection<CodeReviewCommit> heads;
-    try {
-      heads = new MergeSorter(rw, branchTip).sort(toMerge);
-    } catch (IOException e) {
-      throw new MergeException("Branch head sorting failed", e);
-    }
-
-    for (final CodeReviewCommit c : toMerge) {
-      if (c.statusCode != null) {
-        updates.add(toResult(c));
-      }
-    }
-
-    toMerge.clear();
-    toMerge.addAll(heads);
-    Collections.sort(toMerge, new Comparator<CodeReviewCommit>() {
-      public int compare(final CodeReviewCommit a, final CodeReviewCommit b) {
-        return a.originalOrder - b.originalOrder;
-      }
-    });
-  }
-
-  private void mergeTopics() throws MergeException {
-    mergeTip = branchTip;
-
-    // Take the first fast-forward available, if any is available in the set.
-    //
-    for (final Iterator<CodeReviewCommit> i = toMerge.iterator(); i.hasNext();) {
-      try {
-        final CodeReviewCommit n = i.next();
-        if (mergeTip == null || rw.isMergedInto(mergeTip, n)) {
-          mergeTip = n;
-          i.remove();
-          LOG.debug("Fast-forward to " + n.name());
-          break;
-        }
-      } catch (IOException e) {
-        throw new MergeException("Cannot fast-forward test during merge", e);
-      }
-    }
-
-    // If this project only permits fast-forwards, abort everything else.
-    //
-    if ("true".equals(db.getConfig().getString("gerrit", null,
-        "fastforwardonly"))) {
-      while (!toMerge.isEmpty()) {
-        final CodeReviewCommit n = toMerge.remove(0);
-        n.statusCode = MergeResultItem.CodeType.PATH_CONFLICT;
-        updates.add(toResult(n));
-      }
-      return;
-    }
-
-    // For every other commit do a pair-wise merge.
-    //
-    while (!toMerge.isEmpty()) {
-      final CodeReviewCommit n = toMerge.remove(0);
-      final Merger m = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(db);
-      try {
-        if (m.merge(new AnyObjectId[] {mergeTip, n})) {
-          writeMergeCommit(m, n);
-
-          LOG.debug("Merged " + n.name());
-        } else {
-          rw.reset();
-          rw.markStart(n);
-          rw.markUninteresting(mergeTip);
-          CodeReviewCommit failed;
-          while ((failed = (CodeReviewCommit) rw.next()) != null) {
-            if (failed.patchsetKey == null) {
-              continue;
-            }
-
-            failed.statusCode = MergeResultItem.CodeType.PATH_CONFLICT;
-            updates.add(toResult(failed));
-          }
-          LOG.debug("Rejected (path conflict) " + n.name());
-        }
-      } catch (IOException e) {
-        throw new MergeException("Cannot merge " + n.name(), e);
-      }
-    }
-  }
-
-  private void writeMergeCommit(final Merger m, final CodeReviewCommit n)
-      throws IOException, MissingObjectException, IncorrectObjectTypeException {
-    final Commit mergeCommit = new Commit(db);
-    mergeCommit.setTreeId(m.getResultTreeId());
-    mergeCommit.setParentIds(new ObjectId[] {mergeTip, n});
-    mergeCommit.setAuthor(mergeIdent);
-    mergeCommit.setCommitter(mergeCommit.getAuthor());
-    mergeCommit.setMessage("Merge");
-
-    final ObjectId id = m.getObjectWriter().writeCommit(mergeCommit);
-    mergeTip = (CodeReviewCommit) rw.parseCommit(id);
-  }
-
-  private void markCleanMerges() throws MergeException {
-    try {
-      rw.reset();
-      rw.sort(RevSort.REVERSE);
-      rw.markStart(mergeTip);
-      if (branchTip != null) {
-        rw.markUninteresting(branchTip);
-      } else {
-        for (final Ref r : db.getAllRefs().values()) {
-          if (r.getName().startsWith(Constants.R_HEADS)
-              || r.getName().startsWith(Constants.R_TAGS)) {
-            try {
-              rw.markUninteresting(rw.parseCommit(r.getObjectId()));
-            } catch (IncorrectObjectTypeException iote) {
-              // Not a commit? Skip over it.
-            }
-          }
-        }
-      }
-
-      CodeReviewCommit c;
-      while ((c = (CodeReviewCommit) rw.next()) != null) {
-        if (c.patchsetKey != null) {
-          c.statusCode = MergeResultItem.CodeType.CLEAN_MERGE;
-          updates.add(toResult(c));
-          newChanges.add(c);
-        }
-      }
-    } catch (IOException e) {
-      throw new MergeException("Cannot mark clean merges", e);
-    }
-  }
-
-  private void pinMergeCommit() throws MergeException {
-    final String name = mergePinName(mergeTip.getId());
-    final RefUpdate.Result r;
-    try {
-      final RefUpdate u = db.updateRef(name);
-      u.setNewObjectId(mergeTip.getId());
-      u.setRefLogMessage("Merged submit queue", false);
-      r = u.update();
-    } catch (IOException err) {
-      final String m = "Failure creating " + name;
-      throw new MergeException(m, err);
-    }
-
-    if (r == RefUpdate.Result.NEW) {
-    } else if (r == RefUpdate.Result.FAST_FORWARD) {
-    } else if (r == RefUpdate.Result.FORCED) {
-    } else if (r == RefUpdate.Result.NO_CHANGE) {
-    } else {
-      final String m = "Failure creating " + name + ": " + r.name();
-      throw new MergeException(m);
-    }
-  }
-
-  private static MergeResultItem suspend(final PendingMergeItem pmi) {
-    final MergeResultItem.Builder delay = MergeResultItem.newBuilder();
-    delay.setStatusCode(MergeResultItem.CodeType.MISSING_DEPENDENCY);
-    delay.setPatchsetKey(pmi.getPatchsetKey());
-    return delay.build();
-  }
-
-  private static MergeResultItem toResult(final CodeReviewCommit c) {
-    final MergeResultItem.Builder delay = MergeResultItem.newBuilder();
-    delay.setStatusCode(c.statusCode);
-    delay.setPatchsetKey(c.patchsetKey);
-
-    if (c.statusCode == MergeResultItem.CodeType.MISSING_DEPENDENCY) {
-      for (final CodeReviewCommit m : c.missing) {
-        final MissingDependencyItem.Builder d;
-
-        d = MissingDependencyItem.newBuilder();
-        if (m.patchsetKey != null) {
-          d.setPatchsetKey(m.patchsetKey);
-        } else {
-          d.setRevisionId(m.getId().name());
-        }
-        delay.addMissing(d);
-      }
-    }
-
-    return delay.build();
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/merge/MergeSorter.java b/mgrapp/src/com/google/codereview/manager/merge/MergeSorter.java
deleted file mode 100644
index 957fdb4..0000000
--- a/mgrapp/src/com/google/codereview/manager/merge/MergeSorter.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.merge;
-
-import com.google.codereview.internal.PostMergeResult.MergeResultItem;
-
-import org.spearce.jgit.errors.IncorrectObjectTypeException;
-import org.spearce.jgit.lib.Constants;
-import org.spearce.jgit.lib.Ref;
-import org.spearce.jgit.revwalk.RevCommit;
-import org.spearce.jgit.revwalk.RevCommitList;
-import org.spearce.jgit.revwalk.RevFlag;
-import org.spearce.jgit.revwalk.RevWalk;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-class MergeSorter {
-  private final RevWalk rw;
-  private final RevCommit base;
-  private final RevFlag CAN_MERGE;
-  private final Set<RevCommit> accepted;
-
-  MergeSorter(final RevWalk walk, final RevCommit branchHead)
-      throws IOException {
-    rw = walk;
-    CAN_MERGE = rw.newFlag("CAN_MERGE");
-    base = branchHead;
-
-    accepted = new HashSet<RevCommit>();
-    for (final Ref r : rw.getRepository().getAllRefs().values()) {
-      if (r.getName().startsWith(Constants.R_HEADS)
-          || r.getName().startsWith(Constants.R_TAGS)) {
-        try {
-          accepted.add(rw.parseCommit(r.getObjectId()));
-        } catch (IncorrectObjectTypeException iote) {
-          // Not a commit? Skip over it.
-        }
-      }
-    }
-  }
-
-  Collection<CodeReviewCommit> sort(final Collection<CodeReviewCommit> incoming)
-      throws IOException {
-    final Set<CodeReviewCommit> heads = new HashSet<CodeReviewCommit>();
-    final Set<CodeReviewCommit> sort = prepareList(incoming);
-    while (!sort.isEmpty()) {
-      final CodeReviewCommit n = removeOne(sort);
-
-      rw.resetRetain(CAN_MERGE);
-      rw.markStart(n);
-      if (base != null) {
-        rw.markUninteresting(base);
-      }
-      for (RevCommit c : accepted) {
-        rw.markUninteresting(c);
-      }
-
-      RevCommit c;
-      final RevCommitList<RevCommit> contents = new RevCommitList<RevCommit>();
-      while ((c = rw.next()) != null) {
-        if (!c.has(CAN_MERGE)) {
-          // We cannot merge n as it would bring something we
-          // aren't permitted to merge at this time. Drop n.
-          //
-          if (n.missing == null) {
-            n.statusCode = MergeResultItem.CodeType.MISSING_DEPENDENCY;
-            n.missing = new ArrayList<CodeReviewCommit>();
-          }
-          n.missing.add((CodeReviewCommit) c);
-        } else {
-          contents.add(c);
-        }
-      }
-
-      if (n.statusCode == MergeResultItem.CodeType.MISSING_DEPENDENCY) {
-        continue;
-      }
-
-      // Anything reachable through us is better merged by just
-      // merging us directly. So prune our ancestors out and let
-      // us merge instead.
-      //
-      sort.removeAll(contents);
-      heads.removeAll(contents);
-      heads.add(n);
-    }
-    return heads;
-  }
-
-  private Set<CodeReviewCommit> prepareList(
-      final Collection<CodeReviewCommit> in) {
-    final HashSet<CodeReviewCommit> sort = new HashSet<CodeReviewCommit>();
-    for (final CodeReviewCommit c : in) {
-      if (!c.has(CAN_MERGE)) {
-        c.add(CAN_MERGE);
-        sort.add(c);
-      }
-    }
-    return sort;
-  }
-
-  private static <T> T removeOne(final Collection<T> c) {
-    final Iterator<T> i = c.iterator();
-    final T r = i.next();
-    i.remove();
-    return r;
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/merge/PendingMerger.java b/mgrapp/src/com/google/codereview/manager/merge/PendingMerger.java
deleted file mode 100644
index bad3aa0..0000000
--- a/mgrapp/src/com/google/codereview/manager/merge/PendingMerger.java
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.merge;
-
-import com.google.codereview.internal.PendingMerge.PendingMergeRequest;
-import com.google.codereview.internal.PendingMerge.PendingMergeResponse;
-import com.google.codereview.internal.PostBranchUpdate.PostBranchUpdateRequest;
-import com.google.codereview.internal.PostBranchUpdate.PostBranchUpdateResponse;
-import com.google.codereview.internal.PostBuildResult.PostBuildResultRequest;
-import com.google.codereview.internal.PostBuildResult.PostBuildResultResponse;
-import com.google.codereview.internal.PostMergeResult.PostMergeResultRequest;
-import com.google.codereview.internal.PostMergeResult.PostMergeResultResponse;
-import com.google.codereview.internal.SubmitBuild.SubmitBuildRequest;
-import com.google.codereview.internal.SubmitBuild.SubmitBuildResponse;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.StopProcessingException;
-import com.google.codereview.rpc.SimpleController;
-import com.google.codereview.util.MutableBoolean;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.spearce.jgit.lib.ObjectId;
-
-/** Merges changes from branches with changes waiting to be merged. */
-public class PendingMerger implements Runnable {
-  private static final Log LOG = LogFactory.getLog(PendingMerger.class);
-
-  private static final PendingMergeRequest NEXT_REQ =
-      PendingMergeRequest.getDefaultInstance();
-
-  private final Backend server;
-  private final BranchUpdater updater;
-
-  public PendingMerger(final Backend be) {
-    server = be;
-    updater = new BranchUpdater(server);
-  }
-
-  public void run() {
-    try {
-      runImpl();
-    } catch (RuntimeException err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    } catch (Error err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    }
-  }
-
-  private void runImpl() {
-    boolean tryAnother;
-    do {
-      tryAnother = next();
-    } while (tryAnother);
-  }
-
-  private boolean next() {
-    final MutableBoolean tryAnother = new MutableBoolean();
-    final SimpleController ctrl = new SimpleController();
-    server.getMergeService().nextPendingMerge(ctrl, NEXT_REQ,
-        new RpcCallback<PendingMergeResponse>() {
-          public void run(final PendingMergeResponse rsp) {
-            tryAnother.value = merge(rsp);
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("nextPendingMerge failed: " + ctrl.errorText());
-      tryAnother.value = false;
-    }
-    return tryAnother.value;
-  }
-
-  private boolean merge(final PendingMergeResponse rsp) {
-    final PendingMergeResponse.CodeType sc = rsp.getStatusCode();
-    if (sc == PendingMergeResponse.CodeType.QUEUE_EMPTY) {
-      return false;
-    }
-
-    if (sc == PendingMergeResponse.CodeType.MERGE_READY) {
-      mergeImpl(rsp);
-      return true;
-    }
-
-    throw new StopProcessingException("unknown status " + sc.name());
-  }
-
-  protected void mergeImpl(final PendingMergeResponse rsp) {
-    final MergeOp mo = new MergeOp(server, rsp);
-    final PostMergeResultRequest result = mo.merge();
-
-    send(result);
-
-    if (mo.getMergeTip() != null && !mo.getNewChanges().isEmpty()) {
-      final SubmitBuildRequest.Builder b = SubmitBuildRequest.newBuilder();
-      b.setBranchKey(rsp.getDestBranchKey());
-      b.setRevisionId(mo.getMergeTip().name());
-      for (final CodeReviewCommit c : mo.getNewChanges()) {
-        if (c.patchsetKey != null) {
-          b.addNewChange(c.patchsetKey);
-        }
-      }
-      send(b.build(), mo.getMergeTip().getId());
-    } else {
-      final PostBranchUpdateRequest.Builder b;
-
-      b = PostBranchUpdateRequest.newBuilder();
-      b.setBranchKey(rsp.getDestBranchKey());
-      // Don't mark any changes merged.
-      send(b.build());
-    }
-  }
-
-  private void send(final PostMergeResultRequest msg) {
-    if (LOG.isDebugEnabled()) {
-      LOG.debug("\n" + msg);
-    }
-
-    final SimpleController ctrl = new SimpleController();
-    server.getMergeService().postMergeResult(ctrl, msg,
-        new RpcCallback<PostMergeResultResponse>() {
-          public void run(final PostMergeResultResponse rsp) {
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("postMergeResult failed: " + ctrl.errorText());
-    }
-  }
-
-  private void send(final SubmitBuildRequest msg, final ObjectId id) {
-    if (LOG.isDebugEnabled()) {
-      LOG.debug("\n" + msg);
-    }
-
-    final SimpleController ctrl = new SimpleController();
-    server.getBuildService().submitBuild(ctrl, msg,
-        new RpcCallback<SubmitBuildResponse>() {
-          public void run(final SubmitBuildResponse rsp) {
-            scheduleBuild(rsp, id);
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("submitBuild failed: " + ctrl.errorText());
-    }
-  }
-
-  private void scheduleBuild(final SubmitBuildResponse rsp, final ObjectId id) {
-    final int buildId = rsp.getBuildId();
-    LOG.debug("Merge commit " + id.name() + " is build " + buildId);
-
-    // For now assume the build was successful.
-    //
-    final PostBuildResultRequest.Builder req;
-    req = PostBuildResultRequest.newBuilder();
-    req.setBuildId(buildId);
-    req.setBuildStatus(PostBuildResultRequest.ResultType.SUCCESS);
-    final SimpleController ctrl = new SimpleController();
-    server.getBuildService().postBuildResult(ctrl, req.build(),
-        new RpcCallback<PostBuildResultResponse>() {
-          public void run(final PostBuildResultResponse rsp) {
-            updater.updateBranch(rsp);
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("postBuildResult failed: " + ctrl.errorText());
-    }
-  }
-
-  private void send(final PostBranchUpdateRequest msg) {
-    if (LOG.isDebugEnabled()) {
-      LOG.debug("\n" + msg);
-    }
-
-    final SimpleController ctrl = new SimpleController();
-    server.getMergeService().postBranchUpdate(ctrl, msg,
-        new RpcCallback<PostBranchUpdateResponse>() {
-          public void run(final PostBranchUpdateResponse rsp) {
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("postBranchUpdate failed: " + ctrl.errorText());
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/merge/UpdateOp.java b/mgrapp/src/com/google/codereview/manager/merge/UpdateOp.java
deleted file mode 100644
index efc715d..0000000
--- a/mgrapp/src/com/google/codereview/manager/merge/UpdateOp.java
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.merge;
-
-import com.google.codereview.internal.PostBuildResult.PostBuildResultResponse;
-import com.google.codereview.manager.InvalidRepositoryException;
-import com.google.codereview.manager.RepositoryCache;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.spearce.jgit.lib.ObjectId;
-import org.spearce.jgit.lib.RefUpdate;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.revwalk.RevCommit;
-import org.spearce.jgit.revwalk.RevWalk;
-
-import java.io.IOException;
-
-public class UpdateOp {
-  private static final Log LOG = LogFactory.getLog(UpdateOp.class);
-
-  private final RepositoryCache repoCache;
-  private final PostBuildResultResponse in;
-  private Repository db;
-  private RevCommit newCommit;
-  private RevWalk rw;
-  private RefUpdate branch;
-
-  UpdateOp(final RepositoryCache rc, final PostBuildResultResponse mergeInfo) {
-    repoCache = rc;
-    in = mergeInfo;
-  }
-
-  boolean update() {
-    final String loc = in.getDestProjectName() + " " + in.getDestBranchName();
-    LOG.debug("Updating " + loc);
-    try {
-      updateImpl();
-      return true;
-    } catch (MergeException ee) {
-      LOG.error("Error updating " + loc, ee);
-      return false;
-    } finally {
-      if (db != null && rw != null) {
-        unpinMerge();
-      }
-    }
-  }
-
-  private void unpinMerge() {
-    final String name = MergeOp.mergePinName(in.getRevisionId());
-    try {
-      final RefUpdate ru = db.updateRef(name);
-      ru.setNewObjectId(ru.getOldObjectId());
-      ru.delete(rw);
-    } catch (IOException err) {
-      LOG.warn("Cannot remove " + name, err);
-    }
-  }
-
-  private void updateImpl() throws MergeException {
-    openRepository();
-    openBranch();
-    parseCommit();
-    updateBranch();
-  }
-
-  private void openRepository() throws MergeException {
-    final String name = in.getDestProjectName();
-    try {
-      db = repoCache.get(name);
-    } catch (InvalidRepositoryException notGit) {
-      final String m = "Repository \"" + name + "\" unknown.";
-      throw new MergeException(m, notGit);
-    }
-    rw = new RevWalk(db);
-  }
-
-  private void openBranch() throws MergeException {
-    try {
-      branch = db.updateRef(in.getDestBranchName());
-    } catch (IOException e) {
-      throw new MergeException("Cannot open branch", e);
-    }
-  }
-
-  private void parseCommit() throws MergeException {
-    try {
-      newCommit = rw.parseCommit(ObjectId.fromString(in.getRevisionId()));
-    } catch (IllegalArgumentException e) {
-      throw new MergeException("Not a commit name: " + in.getRevisionId());
-    } catch (IOException e) {
-      throw new MergeException("Not a commit name: " + in.getRevisionId(), e);
-    }
-  }
-
-  private void updateBranch() throws MergeException {
-    branch.setForceUpdate(false);
-    branch.setNewObjectId(newCommit);
-    branch.setRefLogMessage(newCommit.getShortMessage(), false);
-
-    final RefUpdate.Result r;
-    try {
-      r = branch.update(rw);
-    } catch (IOException err) {
-      final String m = "Failure updating " + branch.getName();
-      throw new MergeException(m, err);
-    }
-
-    if (r == RefUpdate.Result.NEW) {
-    } else if (r == RefUpdate.Result.FAST_FORWARD) {
-    } else if (r == RefUpdate.Result.NO_CHANGE) {
-    } else {
-      final String m = "Failure updating " + branch.getName() + ": " + r.name();
-      throw new MergeException(m);
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/prune/BuildPruner.java b/mgrapp/src/com/google/codereview/manager/prune/BuildPruner.java
deleted file mode 100644
index cf93325..0000000
--- a/mgrapp/src/com/google/codereview/manager/prune/BuildPruner.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.prune;
-
-import com.google.codereview.internal.PruneBuilds.PruneBuildsRequest;
-import com.google.codereview.internal.PruneBuilds.PruneBuildsResponse;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.StopProcessingException;
-import com.google.codereview.rpc.SimpleController;
-import com.google.codereview.util.MutableBoolean;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Deletes unnecessary builds from the data store. */
-public class BuildPruner implements Runnable {
-  private static final Log LOG = LogFactory.getLog(BuildPruner.class);
-
-  private static final PruneBuildsRequest NEXT_REQ =
-      PruneBuildsRequest.getDefaultInstance();
-
-  private final Backend server;
-
-  public BuildPruner(final Backend be) {
-    server = be;
-  }
-
-  public void run() {
-    try {
-      runImpl();
-    } catch (RuntimeException err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    } catch (Error err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    }
-  }
-
-  private void runImpl() {
-    boolean tryAnother;
-    do {
-      tryAnother = next();
-    } while (tryAnother);
-  }
-
-  private boolean next() {
-    final MutableBoolean tryAnother = new MutableBoolean();
-    final SimpleController ctrl = new SimpleController();
-    server.getBuildService().pruneBuilds(ctrl, NEXT_REQ,
-        new RpcCallback<PruneBuildsResponse>() {
-          public void run(final PruneBuildsResponse rsp) {
-            tryAnother.value = prune(rsp);
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("pruneBuilds failed: " + ctrl.errorText());
-      tryAnother.value = false;
-    }
-    return tryAnother.value;
-  }
-
-  private boolean prune(final PruneBuildsResponse rsp) {
-    final PruneBuildsResponse.CodeType sc = rsp.getStatusCode();
-
-    if (sc == PruneBuildsResponse.CodeType.QUEUE_EMPTY) {
-      return false;
-    }
-
-    if (sc == PruneBuildsResponse.CodeType.BUILDS_PRUNED) {
-      return true;
-    }
-
-    throw new StopProcessingException("unknown status " + sc.name());
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/prune/BundlePruner.java b/mgrapp/src/com/google/codereview/manager/prune/BundlePruner.java
deleted file mode 100644
index 60a9bad..0000000
--- a/mgrapp/src/com/google/codereview/manager/prune/BundlePruner.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.prune;
-
-import com.google.codereview.internal.PruneBundles.PruneBundlesRequest;
-import com.google.codereview.internal.PruneBundles.PruneBundlesResponse;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.StopProcessingException;
-import com.google.codereview.rpc.SimpleController;
-import com.google.codereview.util.MutableBoolean;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Deletes invalid bundles from the data store. */
-public class BundlePruner implements Runnable {
-  private static final Log LOG = LogFactory.getLog(BundlePruner.class);
-
-  private static final PruneBundlesRequest NEXT_REQ =
-      PruneBundlesRequest.getDefaultInstance();
-
-  private final Backend server;
-
-  public BundlePruner(final Backend be) {
-    server = be;
-  }
-
-  public void run() {
-    try {
-      runImpl();
-    } catch (RuntimeException err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    } catch (Error err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    }
-  }
-
-  private void runImpl() {
-    boolean tryAnother;
-    do {
-      tryAnother = next();
-    } while (tryAnother);
-  }
-
-  private boolean next() {
-    final MutableBoolean tryAnother = new MutableBoolean();
-    final SimpleController ctrl = new SimpleController();
-    server.getBundleStoreService().pruneBundles(ctrl, NEXT_REQ,
-        new RpcCallback<PruneBundlesResponse>() {
-          public void run(final PruneBundlesResponse rsp) {
-            tryAnother.value = prune(rsp);
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("pruneBundles failed: " + ctrl.errorText());
-      tryAnother.value = false;
-    }
-    return tryAnother.value;
-  }
-
-  private boolean prune(final PruneBundlesResponse rsp) {
-    final PruneBundlesResponse.CodeType sc = rsp.getStatusCode();
-
-    if (sc == PruneBundlesResponse.CodeType.QUEUE_EMPTY) {
-      return false;
-    }
-
-    if (sc == PruneBundlesResponse.CodeType.BUNDLES_PRUNED) {
-      return true;
-    }
-
-    throw new StopProcessingException("unknown status " + sc.name());
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/unpack/DiffReader.java b/mgrapp/src/com/google/codereview/manager/unpack/DiffReader.java
deleted file mode 100644
index a7249fe..0000000
--- a/mgrapp/src/com/google/codereview/manager/unpack/DiffReader.java
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import static org.spearce.jgit.lib.Constants.encodeASCII;
-
-import com.google.codereview.internal.UploadPatchsetFile.UploadPatchsetFileRequest.StatusType;
-
-import org.spearce.jgit.lib.Constants;
-import org.spearce.jgit.lib.ObjectId;
-import org.spearce.jgit.lib.ObjectWriter;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.lib.Tree;
-import org.spearce.jgit.revwalk.RevCommit;
-import org.spearce.jgit.util.RawParseUtils;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Parses 'git diff-tree' output into {@link FileDiff} objects. */
-class DiffReader {
-  private static final byte[] DIFF_GIT = encodeASCII("diff --git a/");
-  private static final byte[] DIFF_CC = encodeASCII("diff --cc ");
-  private static final byte[] H_DELETED_FILE = encodeASCII("deleted file ");
-  private static final byte[] H_NEW_FILE = encodeASCII("new file ");
-  private static final byte[] H_INDEX = encodeASCII("index ");
-  static final byte[] H_NEWPATH = encodeASCII("+++ b/");
-  private static final byte[] H_BINARY = encodeASCII("Binary file");
-  private static final int MAX_PATCH_SIZE = 1024 * 1024; // bytes
-
-  static boolean match(final byte[] key, final byte[] line, int offset) {
-    int remain = line.length - offset;
-    if (remain < key.length) {
-      return false;
-    }
-    for (int k = 0; k < key.length;) {
-      if (key[k++] != line[offset++]) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  private static String str(final byte[] b, final int off) {
-    return RawParseUtils.decode(Constants.CHARSET, b, off, b.length);
-  }
-
-  private Process proc;
-  private RecordInputStream in;
-  private FileDiff current;
-  private boolean isMerge;
-
-  DiffReader(final Repository db, final RevCommit c) throws IOException {
-    final List<String> args = new ArrayList<String>();
-    args.add("git");
-    args.add("--git-dir=.");
-    args.add("diff-tree");
-
-    if (c.getParentCount() > 1) {
-      args.add("--cc");
-      args.add("-M");
-      args.add("--full-index");
-      args.add(c.getId().name());
-      isMerge = true;
-    } else if (c.getParentCount() == 1) {
-      args.add("--unified=1");
-      args.add("-M");
-      args.add("--full-index");
-      args.add(c.getParent(0).getTree().getId().name());
-      args.add(c.getTree().getId().name());
-    } else if (c.getParentCount() == 0) {
-      args.add("--unified=1");
-      args.add("-M");
-      args.add("--full-index");
-      args.add(new ObjectWriter(db).writeTree(new Tree(db)).name());
-      args.add(c.getTree().getId().name());
-    }
-
-    proc =
-        Runtime.getRuntime().exec(args.toArray(new String[args.size()]), null,
-            db.getDirectory());
-    proc.getOutputStream().close();
-    proc.getErrorStream().close();
-    in = new RecordInputStream(proc.getInputStream());
-    if (isMerge) {
-      // A diff --cc output from diff-tree starts with one line
-      // holding the commit we passed in as an argument.
-      //
-      in.readRecord('\n');
-    }
-  }
-
-  FileDiff next() throws IOException {
-    return readOneDiff();
-  }
-
-  private FileDiff readOneDiff() throws IOException {
-    boolean consume = false;
-    for (;;) {
-      final byte[] hdr = in.readRecord('\n');
-      if (hdr == null) {
-        final FileDiff prior = current;
-        current = null;
-        return prior;
-      }
-
-      if ((isMerge && match(DIFF_CC, hdr, 0))
-          || (!isMerge && match(DIFF_GIT, hdr, 0))) {
-        final FileDiff prior = current;
-        current = new FileDiff();
-        current.appendLine(hdr);
-
-        // TODO(sop) This can split the old and new names wrong if the
-        // old name was "f b/c". Until we can do diffs in-core we'll
-        // just assume nobody uses spaces in filenames.
-        //
-        final String hdrStr = str(hdr, 0);
-        if (isMerge) {
-          current.setFilename(hdrStr.substring(DIFF_CC.length));
-          current.setMerge(true);
-        } else {
-          final int newpos = hdrStr.indexOf(" b/");
-          if (newpos > 0) {
-            current.setFilename(hdrStr.substring(newpos + 3));
-          }
-        }
-
-        if (prior != null) {
-          return prior;
-        } else {
-          continue;
-        }
-      }
-
-      if (!isMerge && match(H_INDEX, hdr, 0)) {
-        current.setBaseId(ObjectId.fromString(hdr, H_INDEX.length));
-        current.setFinalId(ObjectId.fromString(hdr, H_INDEX.length
-            + Constants.OBJECT_ID_LENGTH * 2 + 2));
-      } else if (match(H_NEW_FILE, hdr, 0)) {
-        current.setStatus(StatusType.ADD);
-      } else if (match(H_DELETED_FILE, hdr, 0)) {
-        current.setStatus(StatusType.DELETE);
-      } else if (match(H_BINARY, hdr, 0)) {
-        current.setBinary(true);
-      } else if (match(H_NEWPATH, hdr, 0)) {
-        current.setFilename(str(hdr, H_NEWPATH.length));
-      }
-
-      if (consume) {
-        continue;
-      } else if (current.getPatchSize() + hdr.length >= MAX_PATCH_SIZE) {
-        current.truncatePatch();
-        consume = true;
-      } else {
-        current.appendLine(hdr);
-      }
-    }
-  }
-
-  void close() throws IOException {
-    in.close();
-    try {
-      proc.waitFor();
-    } catch (InterruptedException ie) {
-      //
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/unpack/FileDiff.java b/mgrapp/src/com/google/codereview/manager/unpack/FileDiff.java
deleted file mode 100644
index 669adab..0000000
--- a/mgrapp/src/com/google/codereview/manager/unpack/FileDiff.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import static org.spearce.jgit.lib.Constants.encodeASCII;
-
-import com.google.codereview.internal.UploadPatchsetFile.UploadPatchsetFileRequest.StatusType;
-
-import org.spearce.jgit.lib.AnyObjectId;
-import org.spearce.jgit.lib.ObjectId;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/** Computed difference for a single file. */
-class FileDiff {
-  private ObjectId baseId;
-  private ObjectId finalId;
-  private String filename;
-  private boolean binary;
-  private boolean truncated;
-  private boolean merge;
-  private List<byte[]> lines = new ArrayList<byte[]>();
-  private StatusType status = StatusType.MODIFY;
-  private int linesSize;
-
-  ObjectId getBaseId() {
-    return baseId;
-  }
-
-  void setBaseId(final AnyObjectId id) {
-    baseId = id.toObjectId();
-  }
-
-  ObjectId getFinalId() {
-    return finalId;
-  }
-
-  void setFinalId(final AnyObjectId id) {
-    finalId = id.toObjectId();
-  }
-
-  String getFilename() {
-    return filename;
-  }
-
-  void setFilename(final String name) {
-    filename = name;
-  }
-
-  StatusType getStatus() {
-    return status;
-  }
-
-  void setStatus(final StatusType t) {
-    status = t;
-  }
-
-  boolean isBinary() {
-    return binary;
-  }
-
-  void setBinary(final boolean b) {
-    binary = b;
-  }
-
-  boolean isTruncated() {
-    return truncated;
-  }
-
-  void setTruncated(final boolean b) {
-    truncated = b;
-  }
-
-  boolean isMerge() {
-    return merge;
-  }
-
-  void setMerge(final boolean b) {
-    merge = b;
-  }
-
-  byte[] getPatch() {
-    final byte[] r = new byte[linesSize + lines.size()];
-    int pos = 0;
-    for (final byte[] line : lines) {
-      System.arraycopy(line, 0, r, pos, line.length);
-      pos += line.length;
-      r[pos++] = '\n';
-    }
-    return r;
-  }
-
-  int getPatchSize() {
-    return linesSize;
-  }
-
-  void appendLine(final byte[] line) {
-    lines.add(line);
-    linesSize += line.length;
-  }
-
-  void truncatePatch() {
-    final List<byte[]> oldLines = lines;
-
-    linesSize = 0;
-    lines = new ArrayList<byte[]>();
-    for (final byte[] b : oldLines) {
-      appendLine(b);
-      if (DiffReader.match(DiffReader.H_NEWPATH, b, 0)) {
-        appendLine(encodeASCII("File content is too large to display"));
-        break;
-      }
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/unpack/PatchSetUploader.java b/mgrapp/src/com/google/codereview/manager/unpack/PatchSetUploader.java
deleted file mode 100644
index 7e0edd1..0000000
--- a/mgrapp/src/com/google/codereview/manager/unpack/PatchSetUploader.java
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import com.google.codereview.internal.CompletePatchset.CompletePatchsetRequest;
-import com.google.codereview.internal.CompletePatchset.CompletePatchsetResponse;
-import com.google.codereview.internal.UploadPatchsetFile.UploadPatchsetFileRequest;
-import com.google.codereview.internal.UploadPatchsetFile.UploadPatchsetFileResponse;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.StopProcessingException;
-import com.google.codereview.rpc.SimpleController;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.spearce.jgit.lib.Constants;
-import org.spearce.jgit.lib.ObjectId;
-import org.spearce.jgit.lib.ObjectLoader;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.revwalk.RevCommit;
-
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.security.MessageDigest;
-import java.util.zip.Deflater;
-import java.util.zip.DeflaterOutputStream;
-
-
-class PatchSetUploader implements Runnable {
-  private static final Log LOG = LogFactory.getLog(PatchSetUploader.class);
-  private static final int MAX_DATA_SIZE = 1022 * 1024; // bytes
-  private static final String EMPTY_BLOB_ID;
-  private static ByteString EMPTY_DEFLATE;
-
-  static {
-    final MessageDigest md = Constants.newMessageDigest();
-    md.update(Constants.encodeASCII("blob 0\0"));
-    EMPTY_BLOB_ID = ObjectId.fromRaw(md.digest()).name();
-  }
-
-  private final Backend server;
-  private final Repository db;
-  private final RevCommit commit;
-  private final String commitName;
-  private final String patchsetKey;
-  private Deflater patchDeflater;
-  private ByteString.Output compressedFilenames;
-  private Writer filenameOut;
-
-  PatchSetUploader(final Backend be, final Repository sourceRepo,
-      final RevCommit sourceCommit, final String destPatchsetKey) {
-    server = be;
-    db = sourceRepo;
-    commit = sourceCommit;
-    commitName = commit.getId().name();
-    patchsetKey = destPatchsetKey;
-  }
-
-  private String logkey() {
-    return db.getDirectory().getAbsolutePath() + " " + commitName;
-  }
-
-  public void run() {
-    LOG.debug(logkey() + " begin");
-    try {
-      runImpl();
-    } catch (RuntimeException e) {
-      LOG.fatal(logkey() + " failure", e);
-    } catch (Error e) {
-      LOG.fatal(logkey() + " failure", e);
-    }
-  }
-
-  private void runImpl() {
-    try {
-      compressedFilenames = ByteString.newOutput();
-      filenameOut =
-          new OutputStreamWriter(new DeflaterOutputStream(compressedFilenames,
-              new Deflater(Deflater.BEST_COMPRESSION)), "UTF-8");
-    } catch (IOException e) {
-      LOG.error(logkey() + " cannot initialize filename compression", e);
-      return;
-    }
-
-    patchDeflater = new Deflater(Deflater.BEST_COMPRESSION);
-    try {
-      final DiffReader dr = new DiffReader(db, commit);
-      try {
-        boolean first = true;
-        FileDiff file;
-        while ((file = dr.next()) != null) {
-          storeOneDiff(file);
-
-          if (first) {
-            first = false;
-          } else {
-            filenameOut.write('\0');
-          }
-          filenameOut.write(file.getFilename());
-        }
-      } finally {
-        dr.close();
-      }
-      filenameOut.close();
-    } catch (StopProcessingException halt) {
-      return;
-    } catch (IOException err) {
-      LOG.error(logkey() + " diff failed", err);
-      return;
-    } finally {
-      patchDeflater.end();
-    }
-
-    final CompletePatchsetRequest.Builder req;
-    req = CompletePatchsetRequest.newBuilder();
-    req.setPatchsetKey(patchsetKey);
-    req.setCompressedFilenames(compressedFilenames.toByteString());
-    final SimpleController ctrl = new SimpleController();
-    server.getChangeService().completePatchset(ctrl, req.build(),
-        new RpcCallback<CompletePatchsetResponse>() {
-          public void run(final CompletePatchsetResponse rsp) {
-            LOG.debug(logkey() + " complete");
-          }
-        });
-    if (ctrl.failed()) {
-      final String why = ctrl.errorText();
-      LOG.error(logkey() + " completing failed: " + why);
-    }
-  }
-
-  private void storeOneDiff(final FileDiff diff) throws StopProcessingException {
-    final UploadPatchsetFileRequest req = toFileRequest(diff);
-    final SimpleController ctrl = new SimpleController();
-    server.getChangeService().uploadPatchsetFile(ctrl, req,
-        new RpcCallback<UploadPatchsetFileResponse>() {
-          public void run(final UploadPatchsetFileResponse rsp) {
-            final UploadPatchsetFileResponse.CodeType sc = rsp.getStatusCode();
-            final String fn = req.getFileName();
-            final String pk = req.getPatchsetKey();
-
-            if (sc == UploadPatchsetFileResponse.CodeType.CREATED) {
-              LOG.debug(logkey() + " uploaded " + fn);
-            } else if (sc == UploadPatchsetFileResponse.CodeType.CLOSED) {
-              ctrl.setFailed("patchset closed " + pk);
-            } else if (sc == UploadPatchsetFileResponse.CodeType.UNKNOWN_PATCHSET) {
-              ctrl.setFailed("patchset unknown " + pk);
-            } else if (sc == UploadPatchsetFileResponse.CodeType.PATCHING_ERROR) {
-              ctrl.setFailed("server cannot apply patch");
-            } else {
-              ctrl.setFailed("Unknown status " + sc.name() + " " + pk);
-            }
-          }
-        });
-    if (ctrl.failed()) {
-      final String fn = req.getFileName();
-      final String why = ctrl.errorText();
-      LOG.error(logkey() + " uploading " + fn + " failed: " + why);
-      throw new StopProcessingException(why);
-    }
-  }
-
-  private UploadPatchsetFileRequest toFileRequest(final FileDiff diff) {
-    final UploadPatchsetFileRequest.Builder req;
-
-    req = UploadPatchsetFileRequest.newBuilder();
-    req.setPatchsetKey(patchsetKey);
-    req.setFileName(diff.getFilename());
-    req.setStatus(diff.getStatus());
-    req.setMultiWayDiff(diff.isMerge());
-
-    if (!diff.isMerge()) {
-      if (!diff.isBinary() && !diff.isTruncated()) {
-        final ObjectId baseId = diff.getBaseId();
-
-        if (baseId == null || ObjectId.equals(baseId, ObjectId.zeroId())) {
-          req.setBaseId(EMPTY_BLOB_ID);
-          req.setBaseZ(getEmptyDeflatedBlob());
-        } else {
-          try {
-            final ObjectLoader ldr = db.openBlob(baseId);
-            if (ldr == null) {
-              LOG.fatal(logkey() + " missing " + baseId.name());
-              throw new StopProcessingException("No " + baseId.name());
-            }
-
-            final byte[] base = ldr.getCachedBytes();
-            if (base.length + diff.getPatchSize() > MAX_DATA_SIZE) {
-              diff.truncatePatch();
-            } else {
-              req.setBaseId(baseId.name());
-              req.setBaseZ(deflate(base));
-            }
-          } catch (IOException err) {
-            LOG.fatal(logkey() + " cannot read base " + baseId.name(), err);
-            throw new StopProcessingException("No " + baseId.name());
-          }
-        }
-      }
-
-      if (!diff.isBinary() && !diff.isTruncated()) {
-        final ObjectId finalId = diff.getFinalId();
-        if (finalId == null || ObjectId.equals(finalId, ObjectId.zeroId())) {
-          req.setFinalId(EMPTY_BLOB_ID);
-        } else {
-          req.setFinalId(finalId.name());
-        }
-      }
-    }
-
-    final byte[] rawpatch = diff.getPatch();
-    req.setPatchZ(deflate(rawpatch));
-    req.setPatchId(hashOf(rawpatch));
-
-    return req.build();
-  }
-
-  private ByteString getEmptyDeflatedBlob() {
-    synchronized (PatchSetUploader.class) {
-      if (EMPTY_DEFLATE == null) {
-        EMPTY_DEFLATE = deflate(new byte[0]);
-      }
-      return EMPTY_DEFLATE;
-    }
-  }
-
-  private ByteString deflate(final byte[] buf) {
-    final ByteString.Output r = ByteString.newOutput();
-    final DeflaterOutputStream out;
-
-    out = new DeflaterOutputStream(r, patchDeflater);
-    try {
-      out.write(buf);
-      out.close();
-    } catch (IOException err) {
-      // This should not happen.
-      throw new StopProcessingException("Unexpected IO error", err);
-    } finally {
-      patchDeflater.reset();
-    }
-    return r.toByteString();
-  }
-
-  private static String hashOf(final byte[] in) {
-    final MessageDigest md = Constants.newMessageDigest();
-    md.update(in, 0, in.length);
-    return ObjectId.fromRaw(md.digest()).name();
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/unpack/ReceivedBundleUnpacker.java b/mgrapp/src/com/google/codereview/manager/unpack/ReceivedBundleUnpacker.java
deleted file mode 100644
index 942013d..0000000
--- a/mgrapp/src/com/google/codereview/manager/unpack/ReceivedBundleUnpacker.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import com.google.codereview.internal.NextReceivedBundle.NextReceivedBundleRequest;
-import com.google.codereview.internal.NextReceivedBundle.NextReceivedBundleResponse;
-import com.google.codereview.internal.UpdateReceivedBundle.UpdateReceivedBundleRequest;
-import com.google.codereview.internal.UpdateReceivedBundle.UpdateReceivedBundleResponse;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.StopProcessingException;
-import com.google.codereview.rpc.SimpleController;
-import com.google.codereview.util.MutableBoolean;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/** Obtains newly received bundles and unpacks them into Git. */
-public class ReceivedBundleUnpacker implements Runnable {
-  private static final Log LOG =
-      LogFactory.getLog(ReceivedBundleUnpacker.class);
-
-  private static final NextReceivedBundleRequest NEXT_REQ =
-      NextReceivedBundleRequest.getDefaultInstance();
-
-  private final Backend server;
-
-  public ReceivedBundleUnpacker(final Backend be) {
-    server = be;
-  }
-
-  public void run() {
-    try {
-      runImpl();
-    } catch (RuntimeException err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    } catch (Error err) {
-      LOG.fatal("Unexpected runtime failure", err);
-      throw err;
-    }
-  }
-
-  private void runImpl() {
-    boolean tryAnother;
-    do {
-      tryAnother = next();
-    } while (tryAnother);
-  }
-
-  private boolean next() {
-    final MutableBoolean tryAnother = new MutableBoolean();
-    final SimpleController ctrl = new SimpleController();
-    server.getBundleStoreService().nextReceivedBundle(ctrl, NEXT_REQ,
-        new RpcCallback<NextReceivedBundleResponse>() {
-          public void run(final NextReceivedBundleResponse rsp) {
-            tryAnother.value = unpack(rsp);
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.warn("nextReceivedBundle failed: " + ctrl.errorText());
-      tryAnother.value = false;
-    }
-    return tryAnother.value;
-  }
-
-  private boolean unpack(final NextReceivedBundleResponse rsp) {
-    final NextReceivedBundleResponse.CodeType sc = rsp.getStatusCode();
-    if (sc == NextReceivedBundleResponse.CodeType.QUEUE_EMPTY) {
-      return false;
-    }
-
-    if (sc == NextReceivedBundleResponse.CodeType.BUNDLE_AVAILABLE) {
-      send(unpackImpl(rsp));
-      return true;
-    }
-
-    throw new StopProcessingException("unknown status " + sc.name());
-  }
-
-  protected UpdateReceivedBundleRequest unpackImpl(
-      final NextReceivedBundleResponse rsp) {
-    return new UnpackBundleOp(server, rsp).unpack();
-  }
-
-  private void send(final UpdateReceivedBundleRequest req) {
-    final String key = req.getBundleKey();
-    final String sc = req.getStatusCode().name();
-    LOG.debug("Bundle " + key + ", status " + sc);
-
-    final SimpleController ctrl = new SimpleController();
-    server.getBundleStoreService().updateReceivedBundle(ctrl, req,
-        new RpcCallback<UpdateReceivedBundleResponse>() {
-          public void run(final UpdateReceivedBundleResponse rsp) {
-            final UpdateReceivedBundleResponse.CodeType sc =
-                rsp.getStatusCode();
-            if (sc != UpdateReceivedBundleResponse.CodeType.UPDATED) {
-              ctrl.setFailed(sc.name());
-            }
-          }
-        });
-    if (ctrl.failed()) {
-      LOG.error("Updating bundle " + key + " failed: " + ctrl.errorText());
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/unpack/RecordInputStream.java b/mgrapp/src/com/google/codereview/manager/unpack/RecordInputStream.java
deleted file mode 100644
index 3fe0974..0000000
--- a/mgrapp/src/com/google/codereview/manager/unpack/RecordInputStream.java
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/** Buffering input stream which can read entire lines. */
-class RecordInputStream extends InputStream {
-  private InputStream in;
-  private byte[] buf;
-  private int pos;
-  private int end;
-
-  RecordInputStream(final InputStream in) {
-    this.in = in;
-    buf = new byte[4096];
-  }
-
-  @Override
-  public void close() throws IOException {
-    try {
-      in.close();
-    } finally {
-      in = null;
-      buf = null;
-    }
-  }
-
-  private boolean fill() throws IOException {
-    pos = 0;
-    end = in.read(buf, pos, buf.length);
-    if (end < 0) {
-      end = 0;
-      return false;
-    }
-    return true;
-  }
-
-  @Override
-  public int read() throws IOException {
-    if (pos == end && !fill()) {
-      return -1;
-    }
-    return buf[pos++];
-  }
-
-  @Override
-  public int read(final byte[] b, final int off, final int len)
-      throws IOException {
-    if (pos == end && !fill()) {
-      return -1;
-    }
-    final int cnt = Math.min(len, end - pos);
-    System.arraycopy(buf, pos, b, off, cnt);
-    pos += cnt;
-    return cnt;
-  }
-
-  /**
-   * Read a record terminated by the separator byte.
-   * 
-   * @param sep byte which delimits the end of a record.
-   * @return record content, with the separator removed from the end. The empty
-   *         array indicates an empty record; null indicates stream EOF.
-   * @throws IOException the stream could not be read from.
-   */
-  byte[] readRecord(final int sep) throws IOException {
-    if (pos == end && !fill()) {
-      return null;
-    }
-
-    byte[] line = fastReadRecord(sep);
-    if (line != null) {
-      return line;
-    }
-
-    if (end - pos <= buf.length / 2) {
-      int cnt = end - pos;
-      System.arraycopy(buf, pos, buf, 0, cnt);
-      pos = 0;
-      end = cnt;
-
-      cnt = in.read(buf, end, buf.length - end);
-      if (cnt < 0) {
-        final byte[] r = new byte[end];
-        System.arraycopy(buf, 0, r, 0, end);
-        pos = end = 0;
-        return r;
-      }
-      end += cnt;
-
-      line = fastReadRecord(sep);
-      if (line != null) {
-        return line;
-      }
-    }
-
-    final ByteArrayOutputStream out = new ByteArrayOutputStream();
-    out.write(buf, pos, end - pos);
-    for (;;) {
-      if (!fill()) {
-        return out.toByteArray();
-      }
-
-      for (int lf = pos; lf < end; lf++) {
-        if (buf[lf] == sep) {
-          out.write(buf, pos, lf - pos);
-          pos = lf + 1;
-          return out.toByteArray();
-        }
-      }
-
-      out.write(buf, pos, end - pos);
-      pos = end;
-    }
-  }
-
-  private byte[] fastReadRecord(final int sep) {
-    for (int lf = pos; lf < end; lf++) {
-      if (buf[lf] == sep) {
-        final int cnt = lf - pos;
-        final byte[] r = new byte[cnt];
-        System.arraycopy(buf, pos, r, 0, cnt);
-        pos = lf + 1;
-        return r;
-      }
-    }
-    return null;
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/unpack/UnpackBundleOp.java b/mgrapp/src/com/google/codereview/manager/unpack/UnpackBundleOp.java
deleted file mode 100644
index 1a99da0..0000000
--- a/mgrapp/src/com/google/codereview/manager/unpack/UnpackBundleOp.java
+++ /dev/null
@@ -1,396 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import com.google.codereview.internal.AddPatchset.AddPatchSetRequest;
-import com.google.codereview.internal.AddPatchset.AddPatchSetResponse;
-import com.google.codereview.internal.NextReceivedBundle.BundleSegmentRequest;
-import com.google.codereview.internal.NextReceivedBundle.BundleSegmentResponse;
-import com.google.codereview.internal.NextReceivedBundle.NextReceivedBundleResponse;
-import com.google.codereview.internal.NextReceivedBundle.ReplacePatchSet;
-import com.google.codereview.internal.SubmitChange.SubmitChangeRequest;
-import com.google.codereview.internal.SubmitChange.SubmitChangeResponse;
-import com.google.codereview.internal.UpdateReceivedBundle.UpdateReceivedBundleRequest;
-import com.google.codereview.internal.UpdateReceivedBundle.UpdateReceivedBundleRequest.CodeType;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.InvalidRepositoryException;
-import com.google.codereview.rpc.SimpleController;
-import com.google.codereview.util.GitMetaUtil;
-import com.google.codereview.util.MutableBoolean;
-import com.google.protobuf.RpcCallback;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.spearce.jgit.errors.IncorrectObjectTypeException;
-import org.spearce.jgit.errors.MissingBundlePrerequisiteException;
-import org.spearce.jgit.lib.NullProgressMonitor;
-import org.spearce.jgit.lib.ObjectId;
-import org.spearce.jgit.lib.Ref;
-import org.spearce.jgit.lib.RefUpdate;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.revwalk.RevCommit;
-import org.spearce.jgit.revwalk.RevSort;
-import org.spearce.jgit.revwalk.RevWalk;
-import org.spearce.jgit.transport.FetchConnection;
-import org.spearce.jgit.transport.Transport;
-import org.spearce.jgit.transport.TransportBundleStream;
-import org.spearce.jgit.transport.URIish;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/** Unpacks a bundle and imports the commits into the code review system. */
-class UnpackBundleOp {
-  private static final Log LOG = LogFactory.getLog(UnpackBundleOp.class);
-
-  private static String refOf(final int changeId, final int patchsetId) {
-    final StringBuilder b = new StringBuilder();
-    final int dh = changeId % 100;
-    b.append("refs/changes/");
-    if (dh < 10) {
-      b.append('0');
-    }
-    b.append(dh);
-    b.append('/');
-    b.append(changeId);
-    b.append('/');
-    b.append(patchsetId);
-    return b.toString();
-  }
-
-  private final Backend server;
-  private final NextReceivedBundleResponse in;
-  private final Map<ObjectId, ReplacePatchSet> replacements;
-  private Repository db;
-  private ObjectId tip;
-  private int changeId;
-  private int patchsetId;
-  private String patchsetKey;
-
-  UnpackBundleOp(final Backend be, final NextReceivedBundleResponse bundleInfo) {
-    server = be;
-    in = bundleInfo;
-    replacements = new HashMap<ObjectId, ReplacePatchSet>();
-  }
-
-  UpdateReceivedBundleRequest unpack() {
-    final UpdateReceivedBundleRequest.Builder update;
-    update = UpdateReceivedBundleRequest.newBuilder();
-    update.setBundleKey(in.getBundleKey());
-    try {
-      unpackImpl();
-      update.setStatusCode(CodeType.UNPACKED_OK);
-    } catch (UnpackException ue) {
-      update.setStatusCode(ue.status);
-      update.setErrorDetails(ue.details);
-      LOG.error("Unpacking bundle " + in.getBundleKey() + " failed.", ue);
-    }
-    return update.build();
-  }
-
-  private void unpackImpl() throws UnpackException {
-    LOG.debug("Unpacking bundle " + in.getBundleKey());
-    for (final ReplacePatchSet p : in.getReplaceList()) {
-      replacements.put(ObjectId.fromString(p.getObjectId()), p);
-    }
-    openRepository();
-    unpackTip();
-    createChanges(newCommits());
-  }
-
-  private void openRepository() throws UnpackException {
-    try {
-      db = server.getRepositoryCache().get(in.getDestProject());
-    } catch (InvalidRepositoryException notGit) {
-      final String m = "Repository \"" + in.getDestProject() + "\" unknown.";
-      throw new UnpackException(CodeType.UNKNOWN_PROJECT, m, notGit);
-    }
-  }
-
-  private void unpackTip() throws UnpackException {
-    final Transport bundleTransport = openBundle();
-    try {
-      final FetchConnection fc = bundleTransport.openFetch();
-      if (fc.getRefs().size() > 1) {
-        final String m = "Bundle contains more than one head";
-        throw new UnpackException(CodeType.INVALID_BUNDLE, m);
-      } else if (fc.getRefs().size() == 0) {
-        final String m = "Bundle contains no heads";
-        throw new UnpackException(CodeType.INVALID_BUNDLE, m);
-      }
-
-      fc.fetch(NullProgressMonitor.INSTANCE, fc.getRefs());
-      tip = fc.getRefs().iterator().next().getObjectId();
-      LOG.debug("Unpacked " + tip.name() + " from " + in.getBundleKey());
-    } catch (MissingBundlePrerequisiteException e) {
-      throw new UnpackException(CodeType.MISSING_BASE, e.getMessage(), e);
-    } catch (IOException readError) {
-      final String m = "Processing the bundle stream failed";
-      throw new UnpackException(CodeType.INVALID_BUNDLE, m, readError);
-    } finally {
-      bundleTransport.close();
-    }
-  }
-
-  private List<RevCommit> newCommits() throws UnpackException {
-    final RevWalk rw = new RevWalk(db);
-    rw.sort(RevSort.REVERSE, true);
-    rw.sort(RevSort.TOPO, true);
-
-    try {
-      rw.markStart(rw.parseCommit(tip));
-    } catch (IOException e) {
-      final String m = "Chain " + tip.name() + " is corrupt";
-      throw new UnpackException(CodeType.INVALID_BUNDLE, m, e);
-    }
-
-    for (final Ref r : db.getAllRefs().values()) {
-      try {
-        rw.markUninteresting(rw.parseCommit(r.getObjectId()));
-      } catch (IncorrectObjectTypeException notCommit) {
-        // These happen in some repositories like linux-2.6.git where
-        // there is an annotated tag pointing at a tree, or in git.git
-        // where there is an annotated tag pointing at a blob.
-        //
-        continue;
-      } catch (IOException err) {
-        final String m = "Local ref is invalid";
-        throw new UnpackException(CodeType.SUSPEND_BUNDLE, m, err);
-      }
-    }
-
-    try {
-      final List<RevCommit> newList = new ArrayList<RevCommit>();
-      RevCommit c;
-      while ((c = rw.next()) != null) {
-        // Ensure the parents are parsed so we know the parent's tree.
-        // We need that later to compute a difference.
-        //
-        for (final RevCommit p : c.getParents()) {
-          rw.parse(p);
-        }
-        newList.add(c);
-      }
-      return newList;
-    } catch (IOException e) {
-      final String m = "Chain " + tip.name() + " is corrupt";
-      throw new UnpackException(CodeType.INVALID_BUNDLE, m, e);
-    }
-  }
-
-  private void createChanges(final List<RevCommit> newCommits)
-      throws UnpackException {
-    for (final RevCommit c : newCommits) {
-      final ReplacePatchSet r = replacements.get(c.getId().copy());
-      if (r != null) {
-        if (addPatchSet(c, r)) {
-          createChangeRef(c);
-          server.asyncExec(new PatchSetUploader(server, db, c, patchsetKey));
-        }
-      } else if (submitChange(c)) {
-        createChangeRef(c);
-        server.asyncExec(new PatchSetUploader(server, db, c, patchsetKey));
-      }
-    }
-  }
-
-  private boolean submitChange(final RevCommit c) throws UnpackException {
-    final SubmitChangeRequest.Builder req = SubmitChangeRequest.newBuilder();
-
-    req.setOwner(in.getOwner());
-    req.setDestBranchKey(in.getDestBranchKey());
-    req.setCommit(GitMetaUtil.toGitCommit(c));
-    req.setBundleKey(in.getBundleKey());
-
-    final MutableBoolean continueCreation = new MutableBoolean();
-    final SimpleController ctrl = new SimpleController();
-    server.getChangeService().submitChange(ctrl, req.build(),
-        new RpcCallback<SubmitChangeResponse>() {
-          public void run(final SubmitChangeResponse rsp) {
-            final SubmitChangeResponse.CodeType sc = rsp.getStatusCode();
-
-            if (sc == SubmitChangeResponse.CodeType.CREATED) {
-              changeId = rsp.getChangeId();
-              patchsetId = rsp.getPatchsetId();
-              patchsetKey = rsp.getPatchsetKey();
-              continueCreation.value = true;
-              LOG.debug("Commit " + c.getId().name() + " is change " + changeId
-                  + " patchset " + patchsetId);
-
-            } else if (sc == SubmitChangeResponse.CodeType.PATCHSET_EXISTS) {
-              LOG.debug("Commit " + c.getId().name() + " exists in data store");
-
-            } else {
-              ctrl.setFailed("Unknown status " + sc.name());
-            }
-          }
-        });
-    if (ctrl.failed()) {
-      throw new UnpackException(CodeType.SUSPEND_BUNDLE, ctrl.errorText());
-    }
-    return continueCreation.value;
-  }
-
-  private boolean addPatchSet(final RevCommit c, final ReplacePatchSet replace)
-      throws UnpackException {
-    final AddPatchSetRequest.Builder req = AddPatchSetRequest.newBuilder();
-
-    req.setOwner(in.getOwner());
-    req.setDestBranchKey(in.getDestBranchKey());
-    req.setChangeId(replace.getChangeId());
-    req.setCommit(GitMetaUtil.toGitCommit(c));
-
-    final MutableBoolean continueCreation = new MutableBoolean();
-    final SimpleController ctrl = new SimpleController();
-    server.getChangeService().addPatchSet(ctrl, req.build(),
-        new RpcCallback<AddPatchSetResponse>() {
-          public void run(final AddPatchSetResponse rsp) {
-            final AddPatchSetResponse.CodeType sc = rsp.getStatusCode();
-
-            if (sc == AddPatchSetResponse.CodeType.CREATED) {
-              changeId = replace.getChangeId();
-              patchsetId = rsp.getPatchsetId();
-              patchsetKey = rsp.getPatchsetKey();
-              continueCreation.value = true;
-              LOG.debug("Commit " + c.getId().name() + " is change " + changeId
-                  + " patchset " + patchsetId);
-
-            } else if (sc == AddPatchSetResponse.CodeType.PATCHSET_EXISTS) {
-              LOG.debug("Commit " + c.getId().name() + " exists in data store");
-
-            } else if (sc == AddPatchSetResponse.CodeType.UNKNOWN_CHANGE) {
-              LOG.debug("Change " + req.getChangeId() + " not found");
-
-            } else {
-              ctrl.setFailed("Unknown status " + sc.name());
-            }
-          }
-        });
-    if (ctrl.failed()) {
-      throw new UnpackException(CodeType.SUSPEND_BUNDLE, ctrl.errorText());
-    }
-    return continueCreation.value;
-  }
-
-  private void createChangeRef(final RevCommit c) throws UnpackException {
-    final String name = refOf(changeId, patchsetId);
-    final RefUpdate.Result r;
-    try {
-      final RefUpdate u = db.updateRef(name);
-      u.setNewObjectId(c.getId());
-      u.setForceUpdate(true);
-      u.setRefLogMessage("Change submitted", false);
-      r = u.update();
-    } catch (IOException err) {
-      final String m = "Failure creating " + name;
-      throw new UnpackException(CodeType.SUSPEND_BUNDLE, m, err);
-    }
-
-    if (r == RefUpdate.Result.NEW) {
-    } else if (r == RefUpdate.Result.FAST_FORWARD) {
-    } else if (r == RefUpdate.Result.FORCED) {
-    } else if (r == RefUpdate.Result.NO_CHANGE) {
-    } else {
-      final String m = "Failure creating " + name + ": " + r.name();
-      throw new UnpackException(CodeType.SUSPEND_BUNDLE, m);
-    }
-  }
-
-  private TransportBundleStream openBundle() {
-    final URIish uri = makeURI(in);
-    return new TransportBundleStream(db, uri, new BundleStream());
-  }
-
-  private static URIish makeURI(final NextReceivedBundleResponse in) {
-    URIish u = new URIish();
-    u = u.setScheme("codereview-bundle");
-    u = u.setPath(in.getBundleKey());
-    return u;
-  }
-
-  private class BundleStream extends InputStream {
-    private int segmentId = 1;
-    private final int totalSegments = in.getNSegments();
-    private InputStream stream = in.getBundleData().newInput();
-
-    @Override
-    public int read() throws IOException {
-      for (;;) {
-        if (stream == null) {
-          return -1;
-        }
-
-        final int r = stream.read();
-        if (r < 0) {
-          openNextStream();
-        } else {
-          return r;
-        }
-      }
-    }
-
-    @Override
-    public int read(final byte[] b, final int off, final int len)
-        throws IOException {
-      for (;;) {
-        if (stream == null) {
-          return -1;
-        }
-
-        final int r = stream.read(b, off, len);
-        if (r < 0) {
-          openNextStream();
-        } else {
-          return r;
-        }
-      }
-    }
-
-    private void openNextStream() throws IOException {
-      if (segmentId >= totalSegments) {
-        stream = null;
-        return;
-      }
-
-      segmentId++;
-      final BundleSegmentRequest.Builder req;
-
-      req = BundleSegmentRequest.newBuilder();
-      req.setBundleKey(in.getBundleKey());
-      req.setSegmentId(segmentId);
-
-      final SimpleController ctrl = new SimpleController();
-      server.getBundleStoreService().bundleSegment(ctrl, req.build(),
-          new RpcCallback<BundleSegmentResponse>() {
-            public void run(final BundleSegmentResponse rsp) {
-              final BundleSegmentResponse.CodeType sc = rsp.getStatusCode();
-              if (sc == BundleSegmentResponse.CodeType.DATA) {
-                stream = rsp.getBundleData().newInput();
-              } else {
-                ctrl.setFailed(sc.name());
-              }
-            }
-          });
-      if (ctrl.failed()) {
-        throw new IOException("Bundle" + in.getBundleKey() + " segment "
-            + segmentId + " unavailable: " + ctrl.errorText());
-      }
-    }
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/manager/unpack/UnpackException.java b/mgrapp/src/com/google/codereview/manager/unpack/UnpackException.java
deleted file mode 100644
index d1af4a0..0000000
--- a/mgrapp/src/com/google/codereview/manager/unpack/UnpackException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import com.google.codereview.internal.UpdateReceivedBundle.UpdateReceivedBundleRequest.CodeType;
-
-/** Indicates unpacking failed and the bundle cannot be processed. */
-class UnpackException extends Exception {
-  final CodeType status;
-  final String details;
-
-  UnpackException(final CodeType s, final String msg) {
-    super(msg, null);
-    status = s;
-    details = msg;
-  }
-
-  UnpackException(final CodeType s, final String msg, final Throwable why) {
-    super(msg, why);
-    status = s;
-    details = msg;
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/rpc/HttpRpc.java b/mgrapp/src/com/google/codereview/rpc/HttpRpc.java
deleted file mode 100644
index 7409861..0000000
--- a/mgrapp/src/com/google/codereview/rpc/HttpRpc.java
+++ /dev/null
@@ -1,446 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.rpc;
-
-import com.google.codereview.NeedRetry.RetryRequestLaterResponse;
-import com.google.protobuf.Message;
-import com.google.protobuf.RpcCallback;
-import com.google.protobuf.RpcChannel;
-import com.google.protobuf.RpcController;
-import com.google.protobuf.Descriptors.MethodDescriptor;
-import com.google.protobuf.Message.Builder;
-
-import org.apache.commons.httpclient.Cookie;
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HostConfiguration;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.URI;
-import org.apache.commons.httpclient.URIException;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
-import org.spearce.jgit.util.Base64;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.ConnectException;
-import java.net.URL;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.zip.InflaterInputStream;
-
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
-
-/**
- * Simple protocol buffer RPC embedded inside HTTP POST.
- * <p>
- * Request messages are POSTed to "/proto/$serviceName/$methodName".
- * Authentication for the user is always obtained via the user's Google Account,
- * with session cookies automatically renewing themselves if expired.
- * <p>
- * This implementation is thread safe. Callers may use a single HttpRpc over
- * multiple threads in order to pool and reuse connections across threads.
- * <p>
- * All remote calls are performed synchronously. This is a simplification within
- * the implementation, as it is unlikely the remote side can support parallel
- * requests over the same top level entities.
- * <p>
- * Authentication is tied to Google accounts.
- */
-public class HttpRpc implements RpcChannel {
-  private static final String ENC = "UTF-8";
-
-  private static final Message RETRY_LATER =
-      RetryRequestLaterResponse.getDefaultInstance();
-
-  /** URL required to authenticate the user into their Google account. */
-  private static final URI LOGIN;
-
-  /**
-   * Maximum number of connections we should make to 'production' servers.
-   * <p>
-   * If the servers are running on Google owned infrastructure such as the
-   * www.google.com or Google App Engine we can generally push at least one or
-   * two connections per thread without causing any trouble.
-   */
-  private static final int MAX_PROD_CONNS = 10;
-
-  /** Special token used in authentication to verify we were successful. */
-  private static final String AUTH_CONTINUE_TOKEN = "http://localhost/";
-
-  static {
-    try {
-      LOGIN = new URI("https://www.google.com/accounts/ClientLogin", true);
-    } catch (URIException err) {
-      final ExceptionInInitializerError le;
-      le = new ExceptionInInitializerError("Bad LOGIN URL");
-      le.initCause(err);
-      throw le;
-    }
-  }
-
-  private final HttpClient http;
-  private final URI server;
-  private final String userEmail;
-  private final String userPassword;
-  private final byte[] apiKey;
-  private boolean authenticated;
-
-  /**
-   * Create a new RPC implementation.
-   * 
-   * @param host protocol, server host, and port number. The path component is
-   *        ignored as requests are made absolute ('/proto/$service/$method').
-   * @param user name to authenticate to Google with. This is very likely the
-   *        user's email address.
-   * @param pass password for the user's Google account.
-   * @param apiKeyStr (optional) the internal API key. If supplied all requests
-   *        will be signed with the key, in case the request requires the
-   *        internal API authentication.
-   */
-  public HttpRpc(final URL host, final String user, final String pass,
-      final String apiKeyStr) {
-    http = new HttpClient(new MultiThreadedHttpConnectionManager());
-    userEmail = user;
-    userPassword = pass;
-    apiKey = apiKeyStr != null ? Base64.decode(apiKeyStr) : null;
-
-    final HttpConnectionManagerParams params =
-        http.getHttpConnectionManager().getParams();
-    try {
-      server = new URI(host.toExternalForm(), true);
-
-      final HostConfiguration serverConfig = new HostConfiguration();
-      serverConfig.setHost(server);
-
-      // The development server cannot do normal authentication so we must
-      // fake it here by injecting a development server specific cookie.
-      //
-      if ("localhost".equals(server.getHost())) {
-        if (userEmail != null) {
-          final Cookie c = new Cookie();
-          c.setDomain(server.getHost());
-          c.setPath("/");
-          c.setName("dev_appserver_login");
-          c.setValue(userEmail + ":False");
-          http.getState().addCookie(c);
-        }
-        authenticated = true;
-        params.setMaxConnectionsPerHost(serverConfig, 1);
-      } else {
-        params.setMaxConnectionsPerHost(serverConfig, MAX_PROD_CONNS);
-      }
-
-      final HostConfiguration clientLoginConfig = new HostConfiguration();
-      clientLoginConfig.setHost(LOGIN);
-      params.setMaxConnectionsPerHost(clientLoginConfig, MAX_PROD_CONNS);
-    } catch (URIException e) {
-      throw new IllegalArgumentException("Bad URL: " + host.toExternalForm(), e);
-    }
-  }
-
-  public void callMethod(final MethodDescriptor method,
-      final RpcController controller, final Message request,
-      final Message responsePrototype, final RpcCallback<Message> done) {
-    final URI uri;
-    final String svcName = method.getService().getName();
-    final String methodName = method.getName();
-    try {
-      uri = new URI(server, "/proto/" + svcName + "/" + methodName, true);
-    } catch (URIException urlError) {
-      controller.setFailed(urlError.toString());
-      return;
-    }
-
-    final MessageRequestEntity entity;
-    try {
-      entity = new MessageRequestEntity(request);
-    } catch (IOException err) {
-      controller.setFailed("cannot encode request: " + err);
-      return;
-    }
-
-    if (controller instanceof SimpleController) {
-      ((SimpleController) controller).markFirstRequest();
-    }
-
-    for (;;) {
-      final PostMethod conn = new PostMethod();
-      Message responseMessage = null;
-      try {
-        conn.setDoAuthentication(false);
-        conn.setURI(uri);
-        conn.setRequestEntity(entity);
-
-        ensureAuthenticated();
-        for (int attempts = 1; responseMessage == null; attempts++) {
-          if (apiKey != null) {
-            sign(conn);
-          }
-
-          final int status = http.executeMethod(conn);
-          if (HttpStatus.SC_OK == status) {
-            responseMessage = parseResponse(conn, responsePrototype);
-          } else if (HttpStatus.SC_UNAUTHORIZED == status) {
-            if (attempts == 2) {
-              responseMessage = null;
-              controller.setFailed("Authentication required");
-              break;
-            }
-            synchronized (this) {
-              authenticated = false;
-              ensureAuthenticated();
-            }
-          } else if (HttpStatus.SC_FORBIDDEN == status
-              || HttpStatus.SC_NOT_FOUND == status
-              || HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE == status) {
-            String body = conn.getResponseBodyAsString(60);
-            if (body.indexOf('\n') > 0)
-              body = body.substring(0, body.indexOf('\n'));
-            responseMessage = null;
-            controller.setFailed(svcName + ": " + body);
-            break;
-          } else {
-            responseMessage = null;
-            controller.setFailed("HTTP failure: " + status);
-            break;
-          }
-        }
-      } catch (ConnectException ce) {
-        final String why = ce.getMessage() + " " + server;
-        if (controller instanceof SimpleController) {
-          final SimpleController sc = (SimpleController) controller;
-          if (sc.retry()) {
-            continue;
-          } else {
-            controller.setFailed(controller.errorText() + ": " + why);
-            break;
-          }
-        } else {
-          controller.setFailed(why);
-          break;
-        }
-      } catch (IOException err) {
-        controller.setFailed("HTTP failure: " + err.getMessage());
-        break;
-      } finally {
-        conn.releaseConnection();
-      }
-
-      if (responseMessage instanceof RetryRequestLaterResponse) {
-        if (controller instanceof SimpleController) {
-          final SimpleController sc = (SimpleController) controller;
-          if (sc.retry()) {
-            continue;
-          }
-        }
-
-        controller.setFailed("remote requested retry");
-        break;
-      }
-
-      if (responseMessage != null) {
-        done.run(responseMessage);
-      }
-
-      break;
-    }
-
-    entity.destroy();
-  }
-
-  private Message parseResponse(final PostMethod conn,
-      final Message responsePrototype) throws IOException {
-    final Header typeHeader = conn.getResponseHeader("Content-Type");
-    if (typeHeader == null) {
-      throw new IOException("No Content-Type in response");
-    }
-    final String[] typeTokens = typeHeader.getValue().split("; ");
-    if (!MessageRequestEntity.TYPE.equals(typeTokens[0])) {
-      throw new IOException("Invalid Content-Type " + typeHeader.getValue());
-    }
-
-    String rspName = null;
-    String rspCompress = null;
-    for (int i = 1; i < typeTokens.length; i++) {
-      final String tok = typeTokens[i];
-      if (tok.startsWith("name=")) {
-        rspName = tok.substring("name=".length());
-      } else if (tok.startsWith("compress=")) {
-        rspCompress = tok.substring("compress=".length());
-      }
-    }
-
-    String expName = responsePrototype.getDescriptorForType().getFullName();
-    final Builder builder;
-    if (expName.equals(rspName)) {
-      builder = responsePrototype.newBuilderForType();
-    } else if (rspName.equals(RETRY_LATER.getDescriptorForType().getFullName())) {
-      builder = RETRY_LATER.newBuilderForType();
-    } else {
-      throw new IOException("Expected a " + expName + " got " + rspName);
-    }
-
-    InputStream in = conn.getResponseBodyAsStream();
-    if ("deflate".equals(rspCompress)) {
-      in = new InflaterInputStream(in);
-    } else if (rspCompress != null) {
-      throw new IOException("Unsupported compression " + rspCompress);
-    }
-
-    try {
-      builder.mergeFrom(in);
-    } finally {
-      in.close();
-    }
-    return builder.build();
-  }
-
-  private synchronized void ensureAuthenticated() throws IOException {
-    if (!authenticated) {
-      if (userEmail != null && userPassword != null) {
-        computeAuthCookie(computeAuthToken());
-      }
-      authenticated = true;
-    }
-  }
-
-  private String computeAuthToken() throws IOException {
-    String accountType = "GOOGLE";
-    if (server.getHost().endsWith(".google.com")) {
-      accountType = "HOSTED";
-    }
-
-    final PostMethod conn = new PostMethod();
-    try {
-      conn.setDoAuthentication(false);
-      conn.setURI(LOGIN);
-      conn.setRequestBody(new NameValuePair[] {
-          new NameValuePair("Email", userEmail),
-          new NameValuePair("Passwd", userPassword),
-          new NameValuePair("service", "ah"),
-          new NameValuePair("source", "gerrit-codereview-manager"),
-          new NameValuePair("accountType", accountType)});
-
-      final int status = http.executeMethod(conn);
-      final Map<String, String> rsp =
-          splitPairs(conn.getResponseBodyAsStream());
-      if (status != HttpStatus.SC_OK) {
-        throw new IOException("Authentication failed: " + rsp.get("Error"));
-      }
-      return rsp.get("Auth");
-    } finally {
-      conn.releaseConnection();
-    }
-  }
-
-  private void computeAuthCookie(final String authToken) throws IOException {
-    final GetMethod conn = new GetMethod();
-    try {
-      conn.setFollowRedirects(false);
-      conn.setDoAuthentication(false);
-      conn.setURI(new URI(server, "/_ah/login", true));
-      conn.setQueryString(new NameValuePair[] {
-          new NameValuePair("continue", AUTH_CONTINUE_TOKEN),
-          new NameValuePair("auth", authToken),});
-
-      final int status = http.executeMethod(conn);
-      final Header location = conn.getResponseHeader("Location");
-      if (status != HttpStatus.SC_MOVED_TEMPORARILY || location == null
-          || !AUTH_CONTINUE_TOKEN.equals(location.getValue())) {
-        throw new IOException("Obtaining authentication cookie failed: "
-            + status);
-      }
-    } finally {
-      conn.releaseConnection();
-    }
-  }
-
-  private Map<String, String> splitPairs(final InputStream cin)
-      throws IOException {
-    final HashMap<String, String> rsp = new HashMap<String, String>();
-    final BufferedReader in =
-        new BufferedReader(new InputStreamReader(cin, ENC));
-    try {
-      String line;
-      while ((line = in.readLine()) != null) {
-        final int eq = line.indexOf('=');
-        if (eq >= 0) {
-          rsp.put(line.substring(0, eq), line.substring(eq + 1));
-        }
-      }
-    } finally {
-      in.close();
-    }
-    return rsp;
-  }
-
-  private void sign(final PostMethod conn) throws IOException {
-    conn.setRequestHeader("X-Date-UTC", xDateUTC());
-
-    final StringBuilder b = new StringBuilder();
-
-    b.append("POST ");
-    b.append(conn.getPath());
-    b.append('\n');
-
-    b.append("X-Date-UTC: ");
-    b.append(conn.getRequestHeader("X-Date-UTC").getValue());
-    b.append('\n');
-
-    b.append("Content-Type: ");
-    b.append(conn.getRequestEntity().getContentType());
-    b.append('\n');
-
-    b.append('\n');
-
-    final String sec;
-    try {
-      final Mac m = Mac.getInstance("HmacSHA1");
-      m.init(new SecretKeySpec(apiKey, "HmacSHA1"));
-      m.update(b.toString().getBytes("UTF-8"));
-      conn.getRequestEntity().writeRequest(new OutputStream() {
-        @Override
-        public void write(byte[] b, int off, int len) {
-          m.update(b, off, len);
-        }
-
-        @Override
-        public void write(int b) {
-          m.update((byte) b);
-        }
-      });
-      sec = Base64.encodeBytes(m.doFinal());
-    } catch (NoSuchAlgorithmException e) {
-      throw new IOException("No HmacSHA1 support:" + e.getMessage());
-    } catch (InvalidKeyException e) {
-      throw new IOException("Invalid key: " + e.getMessage());
-    }
-    conn.setRequestHeader("Authorization", "proto :" + sec);
-  }
-
-  private String xDateUTC() {
-    return String.valueOf(System.currentTimeMillis() / 1000L);
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/rpc/MessageRequestEntity.java b/mgrapp/src/com/google/codereview/rpc/MessageRequestEntity.java
deleted file mode 100644
index ba9afd3..0000000
--- a/mgrapp/src/com/google/codereview/rpc/MessageRequestEntity.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.rpc;
-
-import com.google.protobuf.Message;
-
-import org.apache.commons.httpclient.methods.RequestEntity;
-import org.spearce.jgit.lib.NullProgressMonitor;
-import org.spearce.jgit.util.TemporaryBuffer;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.zip.DeflaterOutputStream;
-
-/**
- * Formats a protocol buffer Message into an HTTP request body.
- * <p>
- * The compressed binary serialized form is always used.
- */
-public class MessageRequestEntity implements RequestEntity {
-  /** Content-Type for a protocol buffer. */
-  public static final String TYPE = "application/x-google-protobuf";
-
-  private final Message msg;
-  private final String name;
-  private final TemporaryBuffer temp;
-
-  /**
-   * Create a new request for a single message.
-   * 
-   * @param m the message to serialize and transmit.
-   * @throws IOException the message could not be compressed into temporary
-   *         storage. The local file system may be full, or the message is
-   *         unable to compress itself.
-   */
-  public MessageRequestEntity(final Message m) throws IOException {
-    msg = m;
-    name = msg.getDescriptorForType().getFullName();
-    temp = new TemporaryBuffer();
-    final DeflaterOutputStream dos = new DeflaterOutputStream(temp);
-    try {
-      msg.writeTo(dos);
-    } finally {
-      dos.close();
-    }
-  }
-
-  public long getContentLength() {
-    return (int) temp.length();
-  }
-
-  public String getContentType() {
-    return TYPE + "; name=" + name + "; compress=deflate";
-  }
-
-  public boolean isRepeatable() {
-    return true;
-  }
-
-  public void writeRequest(final OutputStream out) throws IOException {
-    temp.writeTo(out, NullProgressMonitor.INSTANCE);
-  }
-
-  public void destroy() {
-    temp.destroy();
-  }
-
-  @Override
-  public String toString() {
-    final StringBuilder r = new StringBuilder();
-    r.append(name);
-    r.append('\n');
-    r.append(msg.toString());
-    return r.toString();
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/rpc/SimpleController.java b/mgrapp/src/com/google/codereview/rpc/SimpleController.java
deleted file mode 100644
index 6f0736c..0000000
--- a/mgrapp/src/com/google/codereview/rpc/SimpleController.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.rpc;
-
-import com.google.protobuf.RpcCallback;
-import com.google.protobuf.RpcController;
-
-import java.util.Random;
-
-/**
- * A simple controller which does not support cancellation.
- * <p>
- * Users should check {@link #failed()} to determine if a call failed.
- */
-public class SimpleController implements RpcController {
-  private static final int SLEEP_MIN = 100; // milliseconds
-  private static final int SLEEP_MAX = 2 * 60 * 1000; // milliseconds
-  private static final int MAX_ATTEMPT_PERIOD = 30 * 60 * 1000; // milliseconds
-  private static final ThreadLocal<Random> SLEEP_RNG =
-      new ThreadLocal<Random>() {
-        @Override
-        protected Random initialValue() {
-          return new Random();
-        }
-      };
-
-  private static int waitTime() {
-    return SLEEP_MIN + SLEEP_RNG.get().nextInt(SLEEP_MAX - SLEEP_MIN);
-  }
-
-  private String errorText;
-  private long start;
-
-  public String errorText() {
-    return errorText;
-  }
-
-  public boolean failed() {
-    return errorText != null;
-  }
-
-  public void reset() {
-    errorText = null;
-  }
-
-  public void setFailed(final String reason) {
-    errorText = reason;
-  }
-
-  public void startCancel() {
-    throw new UnsupportedOperationException();
-  }
-
-  public boolean isCanceled() {
-    return false;
-  }
-
-  public void notifyOnCancel(final RpcCallback<Object> callback) {
-    throw new UnsupportedOperationException();
-  }
-
-  boolean retry() {
-    if (System.currentTimeMillis() - start < MAX_ATTEMPT_PERIOD) {
-      try {
-        Thread.sleep(waitTime());
-      } catch (InterruptedException ie) {
-        // Just let the thread continue anyway.
-      }
-      return true;
-    }
-
-    if (start == 0) {
-      setFailed("retry not supported by the RpcChannel");
-      return false;
-    }
-
-    final int s = MAX_ATTEMPT_PERIOD / 1000;
-    setFailed("cannot complete in <" + s + " seconds");
-    return false;
-  }
-
-  void markFirstRequest() {
-    start = System.currentTimeMillis();
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/util/GitMetaUtil.java b/mgrapp/src/com/google/codereview/util/GitMetaUtil.java
deleted file mode 100644
index 0625a6f..0000000
--- a/mgrapp/src/com/google/codereview/util/GitMetaUtil.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.util;
-
-import com.google.codereview.internal.GitMeta.GitCommit;
-import com.google.codereview.internal.GitMeta.GitPerson;
-
-import org.spearce.jgit.lib.PersonIdent;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.revwalk.RevCommit;
-
-import java.io.File;
-import java.io.IOException;
-
-public class GitMetaUtil {
-  public static GitCommit toGitCommit(final RevCommit c) {
-    final GitCommit.Builder b = GitCommit.newBuilder();
-    b.setId(c.getId().name());
-    for (final RevCommit p : c.getParents())
-      b.addParentId(p.getId().name());
-    b.setAuthor(toGitPerson(c.getAuthorIdent()));
-    b.setCommitter(toGitPerson(c.getCommitterIdent()));
-    b.setMessage(c.getFullMessage());
-    b.setSubject(c.getShortMessage());
-    return b.build();
-  }
-
-  public static GitPerson toGitPerson(final PersonIdent who) {
-    final GitPerson.Builder b = GitPerson.newBuilder();
-    b.setName(who.getName());
-    b.setEmail(who.getEmailAddress());
-    b.setWhen((int) (who.getWhen().getTime() / 1000L));
-    b.setTz(who.getTimeZoneOffset());
-    return b.build();
-  }
-
-  public static boolean isGitRepository(final File gitdir) {
-    return new File(gitdir, "config").isFile()
-        && new File(gitdir, "HEAD").isFile()
-        && new File(gitdir, "objects").isDirectory()
-        && new File(gitdir, "refs/heads").isDirectory();
-  }
-
-  public static Repository open(final File gitdir) throws IOException {
-    if (isGitRepository(gitdir)) {
-      return new Repository(gitdir);
-    }
-
-    if (isGitRepository(new File(gitdir, ".git"))) {
-      return new Repository(new File(gitdir, ".git"));
-    }
-
-    final String name = gitdir.getName();
-    final File parent = gitdir.getParentFile();
-    if (isGitRepository(new File(parent, name + ".git"))) {
-      return new Repository(new File(parent, name + ".git"));
-    }
-
-    return null;
-  }
-}
diff --git a/mgrapp/src/com/google/codereview/util/MutableBoolean.java b/mgrapp/src/com/google/codereview/util/MutableBoolean.java
deleted file mode 100644
index 1329d4a..0000000
--- a/mgrapp/src/com/google/codereview/util/MutableBoolean.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.util;
-
-import com.google.protobuf.RpcCallback;
-
-/**
- * A simple boolean which can be modified.
- * <p>
- * This can be useful in a {@link RpcCallback}.
- */
-public class MutableBoolean {
-  public boolean value;
-
-  public MutableBoolean() {
-  }
-
-  public MutableBoolean(final boolean initial) {
-    value = initial;
-  }
-}
diff --git a/proto/backup.proto b/proto/backup.proto
deleted file mode 100644
index 6ffa192..0000000
--- a/proto/backup.proto
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview;
-option java_package = "com.google.codereview";
-
-message NextChunkRequest {
-  required string kind = 1;
-  required string last_key = 2;
-}
-
-message EntityData {
-  optional int32 key_id = 1;
-  optional string key_name = 2;
-  required string key = 3;
-  required int32 last_backed_up = 4;
-  required bytes data = 5;
-}
-
-message NextChunkResponse {
-  repeated EntityData entity = 1;
-}
-
-service BackupService {
-  rpc NextChunk (NextChunkRequest)
-  returns (NextChunkResponse);
-}
diff --git a/proto/internal/add_patchset.proto b/proto/internal/add_patchset.proto
deleted file mode 100644
index 309c834..0000000
--- a/proto/internal/add_patchset.proto
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "git_meta.proto";
-
-message AddPatchSetRequest {
-  // Key of the branch the owner wants the change on.
-  //
-  required string dest_branch_key = 10;
-
-  // Change number to append this patch set onto.
-  //
-  required int32 change_id = 11;
-
-  // Parsed description of the commit at the tip of topic_branch.
-  // Identity of the change owner (usually this is the
-  // bundle owner).
-  //
-  required string owner = 12;
-
-  // Dependencies are inferred by commit.parent_id.
-  //
-  required GitCommit commit = 13;
-}
-
-message AddPatchSetResponse {
-  enum CodeType {
-    CREATED = 1;
-    PATCHSET_EXISTS = 2;
-    UNKNOWN_BRANCH = 3;
-    UNKNOWN_CHANGE = 4;
-  }
-  required CodeType status_code = 10;
-
-  // Identifier for the patchset within the change.
-  //
-  optional int32 patchset_id = 11;
-
-  // Unique key for the patchset.
-  //
-  optional string patchset_key = 12;
-}
diff --git a/proto/internal/admin.proto b/proto/internal/admin.proto
deleted file mode 100644
index b7f156e..0000000
--- a/proto/internal/admin.proto
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "sync_project.proto";
-
-service AdminService {
-  rpc SyncProject(SyncProjectRequest)
-  returns (SyncProjectResponse);
-}
diff --git a/proto/internal/build.proto b/proto/internal/build.proto
deleted file mode 100644
index ebe0bea..0000000
--- a/proto/internal/build.proto
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "submit_build.proto";
-import "post_build_result.proto";
-import "prune_builds.proto";
-
-service BuildService {
-  // Denote that a project build is starting.
-  //
-  rpc SubmitBuild(SubmitBuildRequest)
-  returns (SubmitBuildResponse);
-
-  // Update an open build attempt with its status.
-  //
-  rpc PostBuildResult(PostBuildResultRequest)
-  returns (PostBuildResultResponse);
-
-  // Clear out any build logs we don't need any more.
-  //
-  rpc PruneBuilds(PruneBuildsRequest)
-  returns (PruneBuildsResponse);
-}
diff --git a/proto/internal/bundle_store.proto b/proto/internal/bundle_store.proto
deleted file mode 100644
index bbdbd5d..0000000
--- a/proto/internal/bundle_store.proto
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "next_received_bundle.proto";
-import "prune_bundles.proto";
-import "update_received_bundle.proto";
-
-service BundleStoreService {
-  // Grab the next available bundle.  The bundle is deferred from
-  // processing for a short period of time to avoid duplicate work.
-  //
-  rpc NextReceivedBundle(NextReceivedBundleRequest)
-  returns (NextReceivedBundleResponse);
-
-  // Get a single, specific segment of a bundle.
-  //
-  rpc BundleSegment(BundleSegmentRequest)
-  returns (BundleSegmentResponse);
-
-  // Acknowledge a bundle as received into Git.
-  //
-  rpc UpdateReceivedBundle(UpdateReceivedBundleRequest)
-  returns (UpdateReceivedBundleResponse);
-
-  // Clear out any bundles we don't need any longer.
-  //
-  rpc PruneBundles(PruneBundlesRequest)
-  returns (PruneBundlesResponse);
-}
diff --git a/proto/internal/change.proto b/proto/internal/change.proto
deleted file mode 100644
index 85b011d..0000000
--- a/proto/internal/change.proto
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "add_patchset.proto";
-import "complete_patchset.proto";
-import "submit_change.proto";
-import "upload_patchset_file.proto";
-
-service ChangeService {
-  // Create a change and (empty) patchset for a Git commit.
-  //
-  rpc SubmitChange(SubmitChangeRequest)
-  returns (SubmitChangeResponse);
-
-  // Add a patch set to a change.
-  //
-  rpc AddPatchSet(AddPatchSetRequest)
-  returns (AddPatchSetResponse);
-
-  // Attaches a file to an existing patchset
-  //
-  rpc UploadPatchsetFile(UploadPatchsetFileRequest)
-  returns (UploadPatchsetFileResponse);
-
-  // Mark a patchset as complete (fully uploaded)
-  //
-  rpc CompletePatchset(CompletePatchsetRequest)
-  returns (CompletePatchsetResponse);
-}
diff --git a/proto/internal/complete_patchset.proto b/proto/internal/complete_patchset.proto
deleted file mode 100644
index e016f78..0000000
--- a/proto/internal/complete_patchset.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message CompletePatchsetRequest {
-  // Unique key for the patchset.
-  //
-  required string patchset_key = 10;
-
-  // Complete list of paths in this patch.  Paths are
-  // encoded in UTF-8, null delimited and the list is
-  // compressed with deflate to reduce storage space.
-  //
-  optional bytes compressed_filenames = 11;
-}
-
-message CompletePatchsetResponse {
-}
diff --git a/proto/internal/git_meta.proto b/proto/internal/git_meta.proto
deleted file mode 100644
index 8c6e3b2..0000000
--- a/proto/internal/git_meta.proto
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message GitPerson {
-  // "Givenname Surname" of the person this identifies.
-  //
-  required string name = 1;
-
-  // "who@example.com"; email address of the person.
-  //
-  required string email = 2;
-
-  // UTC seconds since epoch of the time event
-  //
-  required int32 when = 3;
-
-  // Person's preferred timezone offset, minutes east of UTC.
-  //
-  required int32 tz = 4;
-}
-
-message GitCommit {
-  // Commit hash as a hex string.
-  //
-  required string id = 1;
-
-  // Parent commit(s) this commit depends upon in ancestry.
-  // Formatted as hex strings.
-  //
-  repeated string parent_id = 2;
-
-  // Identity of the author of the commit.
-  //
-  required GitPerson author = 3;
-
-  // Identity of the committer (creator) of the commit.
-  // If not present use author instead (as committer is
-  // identical to author, a very common case).
-  //
-  optional GitPerson committer = 4;
-
-  // Message body of the commit.
-  //
-  optional string message = 5;
-
-  // First line (no LF) of the message.
-  //
-  optional string subject = 6;
-}
diff --git a/proto/internal/merge.proto b/proto/internal/merge.proto
deleted file mode 100644
index 40024dc..0000000
--- a/proto/internal/merge.proto
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "pending_merge.proto";
-import "post_branch_update.proto";
-import "post_merge_result.proto";
-
-service MergeService {
-  // Grab the next available pending merge.
-  //
-  rpc NextPendingMerge(PendingMergeRequest)
-  returns (PendingMergeResponse);
-
-  // Updates the status of a pending merge.
-  //
-  rpc PostMergeResult(PostMergeResultRequest)
-  returns (PostMergeResultResponse);
-
-  // Notify the data store that a branch has
-  // updated to a new revision.
-  //
-  rpc PostBranchUpdate(PostBranchUpdateRequest)
-  returns (PostBranchUpdateResponse);
-}
diff --git a/proto/internal/next_received_bundle.proto b/proto/internal/next_received_bundle.proto
deleted file mode 100644
index 1ef5d3c..0000000
--- a/proto/internal/next_received_bundle.proto
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message NextReceivedBundleRequest {
-}
-
-message ReplacePatchSet {
-  // Identity of the change to add a replacement patch set to.
-  //
-  required int32 change_id = 1;
-
-  // Commit within the bundle to use as the replacement patch set.
-  //
-  required string object_id = 2;
-}
-
-message NextReceivedBundleResponse {
-  enum CodeType {
-    BUNDLE_AVAILABLE = 1;
-    QUEUE_EMPTY = 2;
-  }
-  required CodeType status_code = 1;
-
-  // Unique identification of this bundle record.
-  //
-  optional string bundle_key = 2;
-
-  // Name of the project this bundle is applied to.
-  //
-  optional string dest_project = 3;
-
-  // Key of the project this bundle is applied to.
-  //
-  optional string dest_project_key = 4;
-
-  // Key of the branch the uploader thought the bundle
-  // should be applied to.
-  //
-  optional string dest_branch_key = 5;
-
-  // The unmodified bundle file, including its header.
-  //
-  optional bytes bundle_data = 6;
-
-  // Total number of segments in the bundle.
-  //
-  optional int32 n_segments = 8;
-
-  // Identification key for the owner of the bundle.
-  // Issues created will be tied back to them.
-  //
-  optional string owner = 7;
-
-  repeated ReplacePatchSet replace = 9;
-}
-
-message BundleSegmentRequest {
-  required string bundle_key = 10;
-  required int32 segment_id = 11;
-}
-
-message BundleSegmentResponse {
-  enum CodeType {
-    DATA = 1;
-
-    UNKNOWN_BUNDLE = 2;
-    UNKNOWN_SEGMENT = 3;
-  }
-  required CodeType status_code = 10;
-  optional bytes bundle_data = 11;
-}
diff --git a/proto/internal/pending_merge.proto b/proto/internal/pending_merge.proto
deleted file mode 100644
index b7ed3d5..0000000
--- a/proto/internal/pending_merge.proto
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-// Request for the next available pending merge
-//
-message PendingMergeRequest {
-}
-
-// A single revision needing to be merged
-//
-message PendingMergeItem {
-  // Unique key of the PatchSet to merge
-  //
-  required string patchset_key = 1;
-
-  // Revision in the VCS
-  //
-  required string revision_id = 2;
-}
-
-// A repository+branch pair, and the commits to merge into it
-//
-message PendingMergeResponse {
-  enum CodeType {
-    QUEUE_EMPTY = 1;
-    MERGE_READY = 2;
-  }
-  required CodeType status_code = 10;
-
-  // The repository the merge should take place in
-  //
-  optional string dest_project_name = 11;
-
-  // Unique key for the repository
-  //
-  optional string dest_project_key = 12;
-
-  // The branch the result of the merge goes into
-  //
-  optional string dest_branch_name = 13;
-
-  // Unique key for the branch (and repository).
-  //
-  optional string dest_branch_key = 14;
-
-  // One or more commits to merge into dest_branch
-  // (all commits must be in dest_repository already)
-  //
-  repeated PendingMergeItem change = 1;
-}
diff --git a/proto/internal/post_branch_update.proto b/proto/internal/post_branch_update.proto
deleted file mode 100644
index 5d99b2b..0000000
--- a/proto/internal/post_branch_update.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message PostBranchUpdateRequest {
-  // Unique key for the branch (and repository).
-  //
-  required string branch_key = 10;
-
-  // Unique keys of the PatchSets which were added
-  // into the branch.
-  //
-  repeated string new_change = 1;
-}
-
-message PostBranchUpdateResponse {
-}
diff --git a/proto/internal/post_build_result.proto b/proto/internal/post_build_result.proto
deleted file mode 100644
index c0be468..0000000
--- a/proto/internal/post_build_result.proto
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-// Update a build entity with the results of the build
-// (status of build, log file)
-//
-message PostBuildResultRequest {
-  // Unique number assigned by a previous SubmitBuildResponse
-  //
-  required int32 build_id = 10;
-
-  enum ResultType {
-    SUCCESS = 1;   // the build (and/or tests) completed normally
-    FAILURE = 2;   // the build (and/or tests) did not pass
-  }
-  required ResultType build_status = 11;
-
-  // Complete output (log file and/or captured stdout/stderr)
-  // This message usually contains embedded newlines and is
-  // the direct output of 'make' or some other process.
-  //
-  optional string build_log = 12;
-}
-
-// Information about a branch that needs to finish merging
-//
-message PostBuildResultResponse {
-  // The repository the merge should take place in
-  //
-  optional string dest_project_name = 10;
-
-  // Unique key for the repository
-  //
-  optional string dest_project_key = 11;
-
-  // The branch the result of the merge goes into
-  //
-  optional string dest_branch_name = 12;
-
-  // Unique key for the branch (and repository).
-  //
-  optional string dest_branch_key = 13;
-
-  // Revision the branch should advance to if the branch
-  // wants to advance based on the build result.
-  //
-  optional string revision_id = 14;
-
-  // Unique keys of the PatchSets which would be added
-  // to the branch if the branch is updated to match
-  // revision_id
-  //
-  repeated string new_change = 1;
-}
diff --git a/proto/internal/post_merge_result.proto b/proto/internal/post_merge_result.proto
deleted file mode 100644
index ebcc9e5..0000000
--- a/proto/internal/post_merge_result.proto
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message MissingDependencyItem {
-  // Unique key of the PatchSet that is missing; missing
-  // if the patchset is not known but the revision is.
-  //
-  optional string patchset_key = 1;
-
-  // Unique revision id of the revision that is missing,
-  // if patchset_key was not available to the processor.
-  //
-  optional string revision_id = 2;
-}
-
-message MergeResultItem {
-  enum CodeType {
-    CLEAN_MERGE = 1;        // change merged clean
-    ALREADY_MERGED = 2;     // previously merged into the branch
-    MISSING_DEPENDENCY = 3; // another issue is still required
-    PATH_CONFLICT = 4;      // path level conflict; not trivial
-  }
-  required CodeType status_code = 1;
-
-  // Unique key of the PatchSet to merge
-  //
-  required string patchset_key = 2;
-
-  // If status_code = MISSING_DEPENDENCY this is the list of
-  // ancestors needed to merge this item into the branch.
-  //
-  repeated MissingDependencyItem missing = 3;
-}
-
-message PostMergeResultRequest {
-  // Unique key of the branch this merge submits into.
-  //
-  required string dest_branch_key = 10;
-
-  // Individual patch set update responses
-  //
-  repeated MergeResultItem change = 1;
-}
-
-message PostMergeResultResponse {
-}
diff --git a/proto/internal/prune_builds.proto b/proto/internal/prune_builds.proto
deleted file mode 100644
index 326de5c..0000000
--- a/proto/internal/prune_builds.proto
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message PruneBuildsRequest {
-}
-
-message PruneBuildsResponse {
-  enum CodeType {
-    BUILDS_PRUNED = 1;
-    QUEUE_EMPTY = 2;
-  }
-  required CodeType status_code = 10;
-}
diff --git a/proto/internal/prune_bundles.proto b/proto/internal/prune_bundles.proto
deleted file mode 100644
index baa0c0e..0000000
--- a/proto/internal/prune_bundles.proto
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message PruneBundlesRequest {
-}
-
-message PruneBundlesResponse {
-  enum CodeType {
-    BUNDLES_PRUNED = 1;
-    QUEUE_EMPTY = 2;
-  }
-  required CodeType status_code = 10;
-}
diff --git a/proto/internal/submit_build.proto b/proto/internal/submit_build.proto
deleted file mode 100644
index e369184..0000000
--- a/proto/internal/submit_build.proto
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message SubmitBuildRequest {
-  required string branch_key = 10;
-  required string revision_id = 11;
-  repeated string new_change = 1;
-}
-
-message SubmitBuildResponse {
-  optional int32 build_id = 10;
-}
diff --git a/proto/internal/submit_change.proto b/proto/internal/submit_change.proto
deleted file mode 100644
index 6cfab47..0000000
--- a/proto/internal/submit_change.proto
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "git_meta.proto";
-
-message SubmitChangeRequest {
-  // Key of the branch the owner wants the change on.
-  //
-  required string dest_branch_key = 10;
-
-  // Parsed description of the commit at the tip of topic_branch.
-  // Identity of the change owner (usually this is the
-  // bundle owner).
-  //
-  required string owner = 11;
-
-  // Dependencies are inferred by commit.parent_id.
-  //
-  required GitCommit commit = 12;
-
-  // ID of the original uploaded bundle, so gerrit
-  // can tie in the metadata.
-  //
-  optional string bundle_key = 14;
-}
-
-message SubmitChangeResponse {
-  enum CodeType {
-    CREATED = 1;
-    PATCHSET_EXISTS = 2;
-    UNKNOWN_BRANCH = 3;
-  }
-  required CodeType status_code = 10;
-
-  // The identifier for the change.
-  //
-  optional int32 change_id = 11;
-
-  // Identifier for the patchset within the change.
-  //
-  optional int32 patchset_id = 12;
-
-  // Unique key for the patchset.
-  //
-  optional string patchset_key = 13;
-}
diff --git a/proto/internal/sync_project.proto b/proto/internal/sync_project.proto
deleted file mode 100644
index 9d5b534..0000000
--- a/proto/internal/sync_project.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message BranchSync {
-  required string branch_name = 1;
-  // field 2 used to be "commit"
-}
-
-message SyncProjectRequest {
-  required string project_name = 10;
-  repeated BranchSync branch = 1;
-}
-
-message SyncProjectResponse {
-}
diff --git a/proto/internal/update_received_bundle.proto b/proto/internal/update_received_bundle.proto
deleted file mode 100644
index 13f2e06..0000000
--- a/proto/internal/update_received_bundle.proto
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-message UpdateReceivedBundleRequest {
-  enum CodeType {
-    UNPACKED_OK = 1;
-    UNKNOWN_PROJECT = 2;
-    INVALID_BUNDLE = 3;
-    MISSING_BASE = 4;
-    SUSPEND_BUNDLE = 5;
-  }
-  required CodeType status_code = 1;
-
-  // Unique identification of the bundle record.
-  //
-  required string bundle_key = 2;
-
-  // Exception details related to why the bundle is bad.
-  //
-  optional string error_details = 3;
-}
-
-message UpdateReceivedBundleResponse {
-  enum CodeType {
-    UPDATED = 1;
-    UNKNOWN_BUNDLE = 2;
-    INVALID_STATE = 3;
-  }
-  required CodeType status_code = 1;
-}
diff --git a/proto/internal/upload_patchset_file.proto b/proto/internal/upload_patchset_file.proto
deleted file mode 100644
index e05cbbd..0000000
--- a/proto/internal/upload_patchset_file.proto
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview.internal;
-option java_package = "com.google.codereview.internal";
-
-import "git_meta.proto";
-
-message UploadPatchsetFileRequest {
-  // Unique key for the patchset.
-  //
-  required string patchset_key = 10;
-
-  // Path of the file once the patch is applied
-  //
-  required string file_name = 11;
-
-  // Type of change made to the file
-  //
-  enum StatusType {
-    ADD = 1;
-    MODIFY = 2;
-    DELETE = 3;
-  }
-  required StatusType status = 13;
-  optional bool multi_way_diff = 19;
-
-  // Deflated base content for the file (pre-image), encoding
-  // is not specified, but should be UTF-8.  base_id is the
-  // Git style blob SHA-1 hash of the inflated base_data.
-  //
-  optional bytes base_z = 14;
-  optional string base_id = 15;
-
-  // Deflated gerrit friendly patch format for the file
-  //
-  optional bytes patch_z = 16;
-  optional string patch_id = 17;
-  optional string final_id = 18;
-}
-
-message UploadPatchsetFileResponse {
-  enum CodeType {
-    CREATED = 1;
-
-    CLOSED = 2;           // the patchset is not accepting files
-    UNKNOWN_PATCHSET = 3; // the patchset key is invalid
-    PATCHING_ERROR = 4;   // the patch could not be applied
-  }
-  required CodeType status_code = 10;
-}
diff --git a/proto/need_retry.proto b/proto/need_retry.proto
deleted file mode 100644
index d1b02fe..0000000
--- a/proto/need_retry.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview;
-option java_package = "com.google.codereview";
-
-// Message sent in reply to any "atomic" RPC asking
-// the client to sleep a bit, then resubmit the same
-// request message to the server.
-//
-// If any work was performed before the retry was
-// returned, the server assures the client that
-// duplicate records won't be created as a result
-// of the resubmission.
-//
-
-message RetryRequestLaterResponse {
-}
diff --git a/proto/review.proto b/proto/review.proto
deleted file mode 100644
index ffc5934..0000000
--- a/proto/review.proto
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview;
-option java_package = "com.google.codereview";
-
-import "upload_bundle.proto";
-
-// Review service operations available to users.
-//
-service ReviewService {
-  // Upload a Git bundle file for review and merging.
-  //
-  rpc UploadBundle (UploadBundleRequest)
-  returns (UploadBundleResponse);
-
-  // Continue uploading a partial bundle.
-  //
-  rpc ContinueBundle (UploadBundleContinue)
-  returns (UploadBundleResponse);
-}
diff --git a/proto/upload_bundle.proto b/proto/upload_bundle.proto
deleted file mode 100644
index a50f7d9..0000000
--- a/proto/upload_bundle.proto
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package codereview;
-option java_package = "com.google.codereview";
-
-// Uploads a bundle to start a review process.
-//
-
-message ReplacePatchSet {
-  // Identity of the change to add a replacement patch set to.
-  //
-  required string change_id = 1;
-
-  // Commit within the bundle to use as the replacement patch set.
-  //
-  required string object_id = 2;
-}
-
-message UploadBundleRequest {
-  // Name of the project this bundle is applied to.
-  //
-  required string dest_project = 10;
-
-  // Name of the branch the uploader thinks it should
-  // have its tip commit merged into.
-  //
-  required string dest_branch = 11;
-
-  // Set if this is a partial bundle upload.  Remaining
-  // segments can be supplied with UploadBundleContinue.
-  //
-  required bool partial_upload = 12;
-
-  // The unmodified bundle file, including its text based header.
-  //
-  // The bundle must have exactly 1 ref available, but the
-  // name of the ref does not matter.  It only needs to be
-  // a valid ref name ("refs/..." or "HEAD").
-  //
-  // This may be a partial fragment of the bundle, in which
-  // case the partial_upload flag must be set.
-  //
-  required bytes bundle_data = 13;
-
-  // An object id known to be in this bundle.  Typically only
-  // commits and/or annotated tags would be enumerated here.
-  //
-  repeated string contained_object = 1;
-
-  // Optional specification of replacement patches for
-  // already existing change records.
-  //
-  repeated ReplacePatchSet replace = 2;
-
-  // The requested reviewers for this change.  If any are 
-  // email addresses that the server doesn't recognize, an
-  // UNKNOWN_EMAIL error will be returned, with the
-  // invalid_reviewers field set to the invalid reviewers.
-  repeated string reviewers = 3;
-
-  // Email addresses to CC for this change.  If any are 
-  // not properly formed, email addresses, an UNKNOWN_EMAIL
-  // error will be returned, with the invalid_cc field see to
-  // the invalid values.
-  repeated string cc = 4;
-}
-
-message UploadBundleResponse {
-  enum CodeType {
-    RECEIVED = 1;         // the bundle is fully uploaded
-    CONTINUE = 4;         // client should use UploadBundleContinue
-
-    UNAUTHORIZED_USER = 7;  // the user account is not allowed to upload
-    UNKNOWN_CHANGE = 9;     // an invalid replacement was suggested
-    CHANGE_CLOSED =  10;    // an invalid replacement was suggested
-    UNKNOWN_EMAIL = 11;     // an unknown or invalid email was supplied
-
-    UNKNOWN_PROJECT = 2;  // the project is invalid
-    UNKNOWN_BRANCH = 3;   // the branch is invalid
-    UNKNOWN_BUNDLE = 5;   // the bundle id is invalid
-    NOT_BUNDLE_OWNER = 6; // the bundle is not your bundle
-    BUNDLE_CLOSED = 8;    // the bundle is already uploaded
-  }
-  required CodeType status_code = 10;
-
-  // Unique identification of this bundle record.
-  // (RECEIVED, CONTINUE)
-  //
-  optional string bundle_id = 11;
-
-  // Set for UNKNOWN_EMAIL errors.
-  repeated string invalid_reviewers = 12;
-  repeated string invalid_cc = 13;
-}
-
-message UploadBundleContinue {
-  // The bundle identifier supplied by UploadBundleResponse
-  //
-  required string bundle_id = 10;
-
-  // The segment number of this segment in the bundle.
-  //
-  // The first segment (created by UploadBundleRequest)
-  // is always 1.  The first UploadBundleContinue should
-  // use a segment_id of 2.
-  //
-  required int32 segment_id = 11;
-
-  // Set if this is a partial bundle upload.  Remaining
-  // segments can be supplied with UploadBundleContinue.
-  //
-  required bool partial_upload = 12;
-
-  // The next data segment for the bundle.
-  //
-  // This may be a partial fragment of the bundle, in which
-  // case the partial_upload flag must be set.
-  //
-  optional bytes bundle_data = 13;
-}
diff --git a/test-utils.sh b/test-utils.sh
deleted file mode 100644
index bb80b78..0000000
--- a/test-utils.sh
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-## 
-## Source this script into your shell:
-##
-##   . test-utils.sh
-##
-## so that you can run:
-##
-##   gerrit clean
-##   gerrit reset
-##   gerrit web
-##   gerrit mgr
-##
-## to setup a local testing environment using the Google App Engine
-## SDK and a local Java installation.
-##
-
-TEST_DIR=test
-TEST_CRM_DATA_DIR=$TEST_DIR/crm-data
-TEST_GERRIT_DATASTORE_DIR=$TEST_DIR/gerrit-datastore
-
-REMOTE_TEST_REPOSITORY=git://android.git.kernel.org/tools/test/project0.git
-REMOTE_MANIFEST_REPOSITORY=git://android.git.kernel.org/tools/test/manifest.git
-
-TEST_CLIENT=../../gerrit-test
-TEST_LOCAL_CONFIG=$TEST_DIR/localhost.config
-
-TEST_CRM_PASSWORD_FILE=$TEST_DIR/.crm-password
-
-REPO_CMD=$( cd ../repo ; pwd)/repo
-
-function gerrit-clean()
-{
-  rm -rf $TEST_DIR
-}
-
-function gerrit-reset()
-{
-  # delete the old data
-  gerrit-clean
-
-  # make the crm data
-  FULL_GIT_DIR=`pwd`/$TEST_CRM_DATA_DIR/tools/test/project0
-  mkdir -p $FULL_GIT_DIR
-  git --git-dir=$FULL_GIT_DIR init
-  git --git-dir=$FULL_GIT_DIR fetch $REMOTE_TEST_REPOSITORY refs/heads/master:refs/heads/master
-
-  # make a repo client
-  mkdir -p $TEST_CLIENT
-  ( cd $TEST_CLIENT ; $REPO_CMD init -u $REMOTE_MANIFEST_REPOSITORY ; $REPO_CMD sync )
-
-  make all
-
-  # make localhost.config
-  echo "[user]" > $TEST_LOCAL_CONFIG
-  echo "  name = Gerrit Code Review" >> $TEST_LOCAL_CONFIG
-  echo "  email = gerrit@localhost" >> $TEST_LOCAL_CONFIG
-  echo "" >> $TEST_LOCAL_CONFIG
-  echo "[codereview]" >> $TEST_LOCAL_CONFIG
-  echo "  server = http://localhost:8080/" >> $TEST_LOCAL_CONFIG
-  echo "  basedir = $(pwd)/$TEST_CRM_DATA_DIR"  >> $TEST_LOCAL_CONFIG
-  echo "  username = android-git@google.com" >> $TEST_LOCAL_CONFIG
-  echo "  secureconfig = .crm-password" \
-      >> $TEST_LOCAL_CONFIG
-  echo "  sleep = 10" >> $TEST_LOCAL_CONFIG
-  echo "  threads = 1" >> $TEST_LOCAL_CONFIG
-
-  echo
-  echo "Finished.  Now you can run:"
-  echo "   gerrit web   to run webapp/"
-  echo "   gerrit mgr   to run mgrapp/"
-  echo
-}
-
-
-# run webapp on google app engine dev server
-function gerrit-web()
-{
-  FULL_GERRIT_DATASTORE_DIR=`pwd`/$TEST_GERRIT_DATASTORE_DIR
-  make serve DATASTORE=$FULL_GERRIT_DATASTORE_DIR
-}
-
-# run mgrapp
-function gerrit-mgr()
-{
-  if [ ! -f $TEST_CRM_PASSWORD_FILE ] ; then
-    ( curl http://localhost:8080/dev_init > $TEST_CRM_PASSWORD_FILE )
-    ( ./mgrapp/bin/mgr $TEST_LOCAL_CONFIG sync)
-  fi
-  ( ./mgrapp/bin/mgr $TEST_LOCAL_CONFIG )
-}
-
-function gerrit-help()
-{
-  echo "commands:"
-  echo "  clean"
-  echo "  reset"
-  echo "  pack-crm-data"
-  echo "  web"
-  echo "  mgr"
-  echo "  upload"
-}
-
-function gerrit-upload()
-{
-  python2.5 ../../../webapp/git_upload.py -s localhost:8080 \
-    -e author@example.com -p test -b refs/heads/master -B HEAD^
-}
-
-# main gerrit command
-function gerrit()
-{
-  if [ ! -f test-utils.sh ] ; then
-    echo Run gerrit from the directory that contains test-utils.sh
-    return
-  fi
-
-  case $1 in
-    clean)
-      gerrit-clean
-      ;;
-    reset)
-      gerrit-reset
-      ;;
-    pack-crm-data)
-      gerrit-pack-crm-data
-      ;;
-    web|gae)
-      gerrit-web
-      ;;
-    mgr|crm)
-      gerrit-mgr
-      ;;
-    help)
-      gerrit-help
-      ;;
-    *)
-      echo invalid gerrit command $1
-      ;;
-  esac
-}
-
-
-# vi: sts=2 ts=2 sw=2 nocindent
diff --git a/tests_mgrapp/.classpath b/tests_mgrapp/.classpath
deleted file mode 100644
index 7ce87a6..0000000
--- a/tests_mgrapp/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/mgrapp"/>
-	<classpathentry kind="output" path="out_classes"/>
-</classpath>
diff --git a/tests_mgrapp/.gitignore b/tests_mgrapp/.gitignore
deleted file mode 100644
index 7b04794..0000000
--- a/tests_mgrapp/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/out_classes
diff --git a/tests_mgrapp/.project b/tests_mgrapp/.project
deleted file mode 100644
index e4c1e9b..0000000
--- a/tests_mgrapp/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>tests_mgrapp</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests_mgrapp/.settings/org.eclipse.core.resources.prefs b/tests_mgrapp/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 82eb859..0000000
--- a/tests_mgrapp/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Sep 02 16:59:24 PDT 2008
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
diff --git a/tests_mgrapp/.settings/org.eclipse.core.runtime.prefs b/tests_mgrapp/.settings/org.eclipse.core.runtime.prefs
deleted file mode 100644
index 8667cfd..0000000
--- a/tests_mgrapp/.settings/org.eclipse.core.runtime.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Sep 02 16:59:24 PDT 2008
-eclipse.preferences.version=1
-line.separator=\n
diff --git a/tests_mgrapp/.settings/org.eclipse.jdt.core.prefs b/tests_mgrapp/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index fa64d21..0000000
--- a/tests_mgrapp/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,268 +0,0 @@
-#Thu Sep 04 11:18:51 PDT 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=16
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=0
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=0
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=2
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=true
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=80
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=3
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=2
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/tests_mgrapp/.settings/org.eclipse.jdt.ui.prefs b/tests_mgrapp/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index f37f6f0..0000000
--- a/tests_mgrapp/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,9 +0,0 @@
-#Tue Sep 02 17:00:18 PDT 2008
-eclipse.preferences.version=1
-formatter_profile=_Google Format
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=com.google;com;junit;net;org;java;javax;
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
diff --git a/tests_mgrapp/src/com/google/codereview/TrashTestCase.java b/tests_mgrapp/src/com/google/codereview/TrashTestCase.java
deleted file mode 100644
index c374b1a..0000000
--- a/tests_mgrapp/src/com/google/codereview/TrashTestCase.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview;
-
-import junit.framework.TestCase;
-
-import java.io.File;
-
-/**
- * JUnit TestCase with support for creating a temporary directory.
- */
-public abstract class TrashTestCase extends TestCase {
-  protected File tempRoot;
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-
-    tempRoot = File.createTempFile("codereview", "test");
-    tempRoot.delete();
-    tempRoot.mkdir();
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    if (tempRoot != null) {
-      rm(tempRoot);
-    }
-    super.tearDown();
-  }
-
-  protected static void rm(final File dir) {
-    final File[] list = dir.listFiles();
-    for (int i = 0; list != null && i < list.length; i++) {
-      final File f = list[i];
-      if (f.getName().equals(".") || f.getName().equals("..")) {
-        continue;
-      }
-      if (f.isDirectory()) {
-        rm(f);
-      } else {
-        f.delete();
-      }
-    }
-    dir.delete();
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/manager/RepositoryCacheTest.java b/tests_mgrapp/src/com/google/codereview/manager/RepositoryCacheTest.java
deleted file mode 100644
index 8bf541a..0000000
--- a/tests_mgrapp/src/com/google/codereview/manager/RepositoryCacheTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager;
-
-import com.google.codereview.TrashTestCase;
-
-import org.spearce.jgit.lib.Repository;
-
-import java.io.File;
-
-public class RepositoryCacheTest extends TrashTestCase {
-  public void testCreateCache() {
-    final RepositoryCache rc = new RepositoryCache(tempRoot);
-  }
-
-  public void testLookupInvalidNames() {
-    final RepositoryCache rc = new RepositoryCache(tempRoot);
-    assertInvalidRepository(rc, "");
-    assertInvalidRepository(rc, "^");
-    assertInvalidRepository(rc, ".");
-    assertInvalidRepository(rc, "..");
-    assertInvalidRepository(rc, "../foo");
-    assertInvalidRepository(rc, "/foo");
-    assertInvalidRepository(rc, "/foo/bar");
-    assertInvalidRepository(rc, "bar/../foo");
-    assertInvalidRepository(rc, "bar\\..\\foo");
-  }
-
-  private void assertInvalidRepository(final RepositoryCache rc, final String n) {
-    try {
-      rc.get(n);
-      fail("Cache accepted name " + n);
-    } catch (InvalidRepositoryException err) {
-      assertEquals(n, err.getMessage());
-    }
-  }
-
-  public void testLookupNotCreatedRepository() {
-    final String name = "test.git";
-    final RepositoryCache rc = new RepositoryCache(tempRoot);
-    try {
-      rc.get(name);
-    } catch (InvalidRepositoryException err) {
-      assertEquals(name, err.getMessage());
-    }
-  }
-
-  public void testLookupExistingEmptyRepository() throws Exception {
-    final RepositoryCache rc = new RepositoryCache(tempRoot);
-
-    // Create after the cache is built, to test creation-on-the-fly.
-    //
-    final String[] names = {"test.git", "foo/bar/test.git"};
-    final File[] gitdir = new File[names.length];
-    for (int i = 0; i < names.length; i++) {
-      gitdir[i] = new File(tempRoot, names[i]);
-      final Repository r = new Repository(gitdir[i]);
-      r.create();
-      assertTrue(gitdir[i].isDirectory());
-    }
-
-    final Repository[] cached = new Repository[names.length];
-    for (int i = 0; i < names.length; i++) {
-      cached[i] = rc.get(names[i]);
-      assertNotNull(cached[i]);
-      assertEquals(gitdir[i], cached[i].getDirectory());
-    }
-    for (int i = 0; i < names.length; i++) {
-      assertSame(cached[i], rc.get(names[i]));
-    }
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/manager/unpack/DiffReaderTest.java b/tests_mgrapp/src/com/google/codereview/manager/unpack/DiffReaderTest.java
deleted file mode 100644
index 43f9141..0000000
--- a/tests_mgrapp/src/com/google/codereview/manager/unpack/DiffReaderTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import com.google.codereview.TrashTestCase;
-import com.google.codereview.internal.UploadPatchsetFile.UploadPatchsetFileRequest.StatusType;
-
-import org.spearce.jgit.lib.Commit;
-import org.spearce.jgit.lib.ObjectId;
-import org.spearce.jgit.lib.ObjectWriter;
-import org.spearce.jgit.lib.PersonIdent;
-import org.spearce.jgit.lib.Repository;
-import org.spearce.jgit.lib.Tree;
-import org.spearce.jgit.revwalk.RevCommit;
-import org.spearce.jgit.revwalk.RevWalk;
-
-import java.io.File;
-import java.io.IOException;
-
-public class DiffReaderTest extends TrashTestCase {
-  private Repository db;
-  private ObjectWriter writer;
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-
-    db = new Repository(new File(tempRoot, ".git"));
-    db.create();
-    writer = new ObjectWriter(db);
-  }
-
-  public void testAddOneTextFile_RootCommit() throws Exception {
-    final Tree top = new Tree(db);
-    final ObjectId blobId = blob("a\nb\n");
-    top.addFile("foo").setId(blobId);
-    final RevCommit c = commit(top);
-    final DiffReader dr = new DiffReader(db, c);
-
-    final FileDiff foo = dr.next();
-    assertNotNull(foo);
-    assertEquals("foo", foo.getFilename());
-    assertSame(StatusType.ADD, foo.getStatus());
-    assertEquals(ObjectId.zeroId(), foo.getBaseId());
-    assertEquals("diff --git a/foo b/foo\n" + "new file mode 100644\n"
-        + "index " + ObjectId.zeroId().name() + ".." + blobId.name() + "\n"
-        + "--- /dev/null\n" + "+++ b/foo\n" + "@@ -0,0 +1,2 @@\n" + "+a\n"
-        + "+b\n", foo.getPatch());
-
-    assertNull(dr.next());
-    dr.close();
-  }
-
-  public void testAddOneTextFile_ExistingTree() throws Exception {
-    final Tree top = new Tree(db);
-    final RevCommit parent = commit(top);
-    final ObjectId blobId = blob("a\nb\n");
-    top.addFile("foo").setId(blobId);
-    final RevCommit c = commit(top, parent);
-    final DiffReader dr = new DiffReader(db, c);
-
-    final FileDiff foo = dr.next();
-    assertNotNull(foo);
-    assertEquals("foo", foo.getFilename());
-    assertSame(StatusType.ADD, foo.getStatus());
-    assertEquals(ObjectId.zeroId(), foo.getBaseId());
-    assertEquals("diff --git a/foo b/foo\n" + "new file mode 100644\n"
-        + "index " + ObjectId.zeroId().name() + ".." + blobId.name() + "\n"
-        + "--- /dev/null\n" + "+++ b/foo\n" + "@@ -0,0 +1,2 @@\n" + "+a\n"
-        + "+b\n", foo.getPatch());
-
-    assertNull(dr.next());
-    dr.close();
-  }
-
-  public void testDeleteOneTextFile() throws Exception {
-    final Tree top = new Tree(db);
-    final ObjectId blobId = blob("a\nb\n");
-    top.addFile("foo").setId(blobId);
-    final RevCommit parent = commit(top);
-    top.findBlobMember("foo").delete();
-    final RevCommit c = commit(top, parent);
-    final DiffReader dr = new DiffReader(db, c);
-
-    final FileDiff foo = dr.next();
-    assertNotNull(foo);
-    assertEquals("foo", foo.getFilename());
-    assertSame(StatusType.DELETE, foo.getStatus());
-    assertEquals(blobId, foo.getBaseId());
-    assertEquals("diff --git a/foo b/foo\n" + "deleted file mode 100644\n"
-        + "index " + blobId.name() + ".." + ObjectId.zeroId().name() + "\n"
-        + "--- a/foo\n" + "+++ /dev/null\n" + "@@ -1,2 +0,0 @@\n" + "-a\n"
-        + "-b\n", foo.getPatch());
-
-    assertNull(dr.next());
-    dr.close();
-  }
-
-  public void testModifyTwoTextFiles() throws Exception {
-    final Tree top = new Tree(db);
-    final ObjectId barBaseId = blob("a\nc\n");
-    top.addFile("bar").setId(barBaseId);
-    final ObjectId fooBaseId = blob("a\nb\n");
-    top.addFile("foo").setId(fooBaseId);
-
-    final RevCommit parent = commit(top);
-    final ObjectId barNewId = blob("a\nd\nc\n");
-    top.findBlobMember("bar").setId(barNewId);
-    final ObjectId fooNewId = blob("a\nc\nb\n");
-    top.findBlobMember("foo").setId(fooNewId);
-
-    final RevCommit c = commit(top, parent);
-    final DiffReader dr = new DiffReader(db, c);
-
-    final FileDiff bar = dr.next();
-    assertNotNull(bar);
-    assertEquals("bar", bar.getFilename());
-    assertSame(StatusType.MODIFY, bar.getStatus());
-    assertEquals(barBaseId, bar.getBaseId());
-    assertEquals("diff --git a/bar b/bar\n" + "index " + barBaseId.name()
-        + ".." + barNewId.name() + " 100644\n" + "--- a/bar\n" + "+++ b/bar\n"
-        + "@@ -1,2 +1,3 @@\n" + " a\n" + "+d\n" + " c\n", bar.getPatch());
-
-    final FileDiff foo = dr.next();
-    assertNotNull(foo);
-    assertEquals("foo", foo.getFilename());
-    assertSame(StatusType.MODIFY, foo.getStatus());
-    assertEquals(fooBaseId, foo.getBaseId());
-    assertEquals("diff --git a/foo b/foo\n" + "index " + fooBaseId.name()
-        + ".." + fooNewId.name() + " 100644\n" + "--- a/foo\n" + "+++ b/foo\n"
-        + "@@ -1,2 +1,3 @@\n" + " a\n" + "+c\n" + " b\n", foo.getPatch());
-
-    assertNull(dr.next());
-    dr.close();
-  }
-
-  public void testAddBinaryFile() throws Exception {
-    final Tree top = new Tree(db);
-    final ObjectId blobId = blob("\0\1\2\0\1\2\0\1\2");
-    top.addFile("foo").setId(blobId);
-    final RevCommit c = commit(top);
-    final DiffReader dr = new DiffReader(db, c);
-
-    final FileDiff foo = dr.next();
-    assertNotNull(foo);
-    assertEquals("foo", foo.getFilename());
-    assertSame(StatusType.ADD, foo.getStatus());
-    assertEquals(ObjectId.zeroId(), foo.getBaseId());
-    assertEquals("diff --git a/foo b/foo\n" + "new file mode 100644\n"
-        + "index " + ObjectId.zeroId().name() + ".." + blobId.name() + "\n"
-        + "Binary files /dev/null and b/foo differ\n", foo.getPatch());
-
-    assertNull(dr.next());
-    dr.close();
-  }
-
-  private ObjectId blob(final String content) throws IOException {
-    return writer.writeBlob(content.getBytes("UTF-8"));
-  }
-
-  private RevCommit commit(final Tree top, final RevCommit... parents)
-      throws IOException {
-    final Commit c = new Commit(db);
-    c.setTreeId(writer.writeTree(top));
-    final ObjectId parentIds[] = new ObjectId[parents.length];
-    for (int i = 0; i < parents.length; i++) {
-      parentIds[i] = parents[i].getId();
-    }
-    c.setParentIds(parentIds);
-    c.setAuthor(new PersonIdent("A U Thor <a@example.com> 1 +0000"));
-    c.setCommitter(c.getAuthor());
-    c.setMessage("");
-    c.setCommitId(writer.writeCommit(c));
-    final RevWalk rw = new RevWalk(db);
-    final RevCommit r = rw.parseCommit(c.getCommitId());
-    for (final RevCommit p : r.getParents()) {
-      rw.parse(p);
-    }
-    return r;
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/manager/unpack/FileDiffTest.java b/tests_mgrapp/src/com/google/codereview/manager/unpack/FileDiffTest.java
deleted file mode 100644
index 6e866ea..0000000
--- a/tests_mgrapp/src/com/google/codereview/manager/unpack/FileDiffTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import com.google.codereview.internal.UploadPatchsetFile.UploadPatchsetFileRequest.StatusType;
-
-import junit.framework.TestCase;
-
-import org.spearce.jgit.lib.ObjectId;
-
-import java.io.UnsupportedEncodingException;
-
-public class FileDiffTest extends TestCase {
-  public void testConstructor() {
-    final FileDiff fd = new FileDiff();
-    assertNull(fd.getBaseId());
-    assertNull(fd.getFilename());
-    assertSame(StatusType.MODIFY, fd.getStatus());
-    assertEquals("", fd.getPatch());
-  }
-
-  public void testBaseId() {
-    final ObjectId id1 =
-        ObjectId.fromString("fc5ac44497e0548c32506b9c584248fc49bb9f97");
-    final ObjectId id2 =
-        ObjectId.fromString("8abf2492d8c5228192a3cba5528e47b3a4bb87e0");
-    final FileDiff fd = new FileDiff();
-    fd.setBaseId(id1);
-    assertSame(id1, fd.getBaseId());
-    fd.setBaseId(id2);
-    assertSame(id2, fd.getBaseId());
-  }
-
-  public void testFilename() {
-    final FileDiff fd = new FileDiff();
-    final String name1 = "foo";
-    final String name2 = "foo/bar/baz";
-    fd.setFilename(name1);
-    assertSame(name1, fd.getFilename());
-    fd.setFilename(name2);
-    assertSame(name2, fd.getFilename());
-  }
-
-  public void testStatus() {
-    final FileDiff fd = new FileDiff();
-    fd.setStatus(StatusType.ADD);
-    assertSame(StatusType.ADD, fd.getStatus());
-    fd.setStatus(StatusType.MODIFY);
-    assertSame(StatusType.MODIFY, fd.getStatus());
-    fd.setStatus(StatusType.DELETE);
-    assertSame(StatusType.DELETE, fd.getStatus());
-  }
-
-  public void testPatchBody() {
-    final FileDiff fd = new FileDiff();
-    final String n1 = "diff --git a/foo b/foo";
-    final String n2 = "--- a/foo";
-    final String n3 = "+++ b/foo";
-    final String n4 = "@@ -20,7 + 20,7 @@";
-
-    fd.appendLine(toBytes(n1));
-    fd.appendLine(toBytes(n2));
-    fd.appendLine(toBytes(n3));
-    fd.appendLine(toBytes(n4));
-    assertEquals(n1 + "\n" + n2 + "\n" + n3 + "\n" + n4 + "\n", fd.getPatch());
-  }
-
-  private static byte[] toBytes(final String s) {
-    final String enc = "UTF-8";
-    try {
-      return s.getBytes(enc);
-    } catch (UnsupportedEncodingException uee) {
-      throw new RuntimeException("No " + enc + " support?", uee);
-    }
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/manager/unpack/ReceivedBundleUnpackerTest.java b/tests_mgrapp/src/com/google/codereview/manager/unpack/ReceivedBundleUnpackerTest.java
deleted file mode 100644
index cad463e..0000000
--- a/tests_mgrapp/src/com/google/codereview/manager/unpack/ReceivedBundleUnpackerTest.java
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import com.google.codereview.TrashTestCase;
-import com.google.codereview.internal.NextReceivedBundle.NextReceivedBundleRequest;
-import com.google.codereview.internal.NextReceivedBundle.NextReceivedBundleResponse;
-import com.google.codereview.internal.UpdateReceivedBundle.UpdateReceivedBundleRequest;
-import com.google.codereview.internal.UpdateReceivedBundle.UpdateReceivedBundleResponse;
-import com.google.codereview.manager.Backend;
-import com.google.codereview.manager.RepositoryCache;
-import com.google.codereview.rpc.MockRpcChannel;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.Message;
-import com.google.protobuf.RpcCallback;
-import com.google.protobuf.RpcChannel;
-import com.google.protobuf.RpcController;
-import com.google.protobuf.Descriptors.MethodDescriptor;
-
-import org.spearce.jgit.lib.Repository;
-
-import java.io.File;
-
-public class ReceivedBundleUnpackerTest extends TrashTestCase {
-  private MockRpcChannel rpc;
-  private RepositoryCache repoCache;
-  private Backend server;
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-
-    rpc = new MockRpcChannel();
-    repoCache = new RepositoryCache(tempRoot);
-    server = new Backend(repoCache, rpc, null, null);
-    new Repository(new File(tempRoot, "foo.git")).create();
-  }
-
-  public void testNextReceivedBundle_EmptyQueue() throws Exception {
-    final ReceivedBundleUnpacker rbu = newRBU();
-    rpc.add(new RpcChannel() {
-      public void callMethod(final MethodDescriptor method,
-          final RpcController controller, final Message request,
-          final Message responsePrototype, final RpcCallback<Message> done) {
-        assertEquals("NextReceivedBundle", method.getName());
-        assertSame(NextReceivedBundleRequest.getDefaultInstance(), request);
-
-        final NextReceivedBundleResponse.Builder r =
-            NextReceivedBundleResponse.newBuilder();
-        r.setStatusCode(NextReceivedBundleResponse.CodeType.QUEUE_EMPTY);
-        done.run(r.build());
-      }
-    });
-    rbu.run();
-    rpc.assertAllCallsMade();
-  }
-
-  public void testNextReceivedBundle_GetBundle() throws Exception {
-    final String bundleKey = "bundle-key-abcd123efg";
-    final NextReceivedBundleResponse nrb[] = new NextReceivedBundleResponse[1];
-    final UpdateReceivedBundleRequest urbr[] =
-        new UpdateReceivedBundleRequest[1];
-
-    final ReceivedBundleUnpacker rbu =
-        new ReceivedBundleUnpacker(server) {
-          @Override
-          protected UpdateReceivedBundleRequest unpackImpl(
-              final NextReceivedBundleResponse rsp) {
-            assertNotNull("unpackImpl only after bundle available", nrb[0]);
-            assertSame(nrb[0], rsp);
-
-            final UpdateReceivedBundleRequest.Builder r =
-                UpdateReceivedBundleRequest.newBuilder();
-            r.setBundleKey(bundleKey);
-            r.setStatusCode(UpdateReceivedBundleRequest.CodeType.UNPACKED_OK);
-            urbr[0] = r.build();
-            return urbr[0];
-          }
-        };
-
-    rpc.add(new RpcChannel() {
-      public void callMethod(final MethodDescriptor method,
-          final RpcController controller, final Message request,
-          final Message responsePrototype, final RpcCallback<Message> done) {
-        assertEquals("NextReceivedBundle", method.getName());
-        assertSame(NextReceivedBundleRequest.getDefaultInstance(), request);
-
-        final NextReceivedBundleResponse.Builder r =
-            NextReceivedBundleResponse.newBuilder();
-        r.setStatusCode(NextReceivedBundleResponse.CodeType.BUNDLE_AVAILABLE);
-        r.setBundleKey(bundleKey);
-        r.setBundleData(ByteString.EMPTY);
-        r.setDestProject("foo.git");
-        r.setDestProjectKey("project:foo.git");
-        r.setDestBranchKey("branch:refs/heads/master");
-        r.setOwner("author@example.com");
-        nrb[0] = r.build();
-        done.run(nrb[0]);
-      }
-    });
-
-    rpc.add(new RpcChannel() {
-      public void callMethod(final MethodDescriptor method,
-          final RpcController controller, final Message request,
-          final Message responsePrototype, final RpcCallback<Message> done) {
-        assertEquals("UpdateReceivedBundle", method.getName());
-        assertSame(urbr[0], request);
-
-        final UpdateReceivedBundleResponse.Builder r =
-            UpdateReceivedBundleResponse.newBuilder();
-        r.setStatusCode(UpdateReceivedBundleResponse.CodeType.UPDATED);
-        done.run(r.build());
-      }
-    });
-
-    rpc.add(new RpcChannel() {
-      public void callMethod(final MethodDescriptor method,
-          final RpcController controller, final Message request,
-          final Message responsePrototype, final RpcCallback<Message> done) {
-        assertEquals("NextReceivedBundle", method.getName());
-        assertSame(NextReceivedBundleRequest.getDefaultInstance(), request);
-
-        final NextReceivedBundleResponse.Builder r =
-            NextReceivedBundleResponse.newBuilder();
-        r.setStatusCode(NextReceivedBundleResponse.CodeType.QUEUE_EMPTY);
-        done.run(r.build());
-      }
-    });
-
-    rbu.run();
-    assertNotNull(nrb[0]);
-    assertNotNull(urbr[0]);
-    rpc.assertAllCallsMade();
-  }
-
-  public void testNextReceivedBundle_RpcFailure() throws Exception {
-    final ReceivedBundleUnpacker rbu = newRBU();
-    rpc.add(new RpcChannel() {
-      public void callMethod(final MethodDescriptor method,
-          final RpcController controller, final Message request,
-          final Message responsePrototype, final RpcCallback<Message> done) {
-        assertEquals("NextReceivedBundle", method.getName());
-        controller.setFailed("mock failure");
-      }
-    });
-    rbu.run();
-    rpc.assertAllCallsMade();
-  }
-
-  public void testNextReceivedBundle_RuntimeException() throws Exception {
-    final String msg = "test-a-message-win-a-prize";
-    final ReceivedBundleUnpacker rbu = newRBU();
-    rpc.add(new RpcChannel() {
-      public void callMethod(final MethodDescriptor method,
-          final RpcController controller, final Message request,
-          final Message responsePrototype, final RpcCallback<Message> done) {
-        assertEquals("NextReceivedBundle", method.getName());
-        throw new RuntimeException(msg);
-      }
-    });
-    try {
-      rbu.run();
-      fail("Unpacker did not rethrow an unexpected runtime exception");
-    } catch (RuntimeException re) {
-      assertEquals(msg, re.getMessage());
-    }
-    rpc.assertAllCallsMade();
-  }
-
-  public void testNextReceivedBundle_RuntimeError() throws Exception {
-    final String msg = "test-a-message-win-a-prize";
-    final ReceivedBundleUnpacker rbu = newRBU();
-    rpc.add(new RpcChannel() {
-      public void callMethod(final MethodDescriptor method,
-          final RpcController controller, final Message request,
-          final Message responsePrototype, final RpcCallback<Message> done) {
-        assertEquals("NextReceivedBundle", method.getName());
-        throw new OutOfMemoryError(msg);
-      }
-    });
-    try {
-      rbu.run();
-      fail("Unpacker did not rethrow an unexpected OutOfMemoryError");
-    } catch (OutOfMemoryError re) {
-      assertEquals(msg, re.getMessage());
-    }
-    rpc.assertAllCallsMade();
-  }
-
-  private ReceivedBundleUnpacker newRBU() {
-    return new ReceivedBundleUnpacker(server);
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/manager/unpack/RecordInputStreamTest.java b/tests_mgrapp/src/com/google/codereview/manager/unpack/RecordInputStreamTest.java
deleted file mode 100644
index c848af2..0000000
--- a/tests_mgrapp/src/com/google/codereview/manager/unpack/RecordInputStreamTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.manager.unpack;
-
-import junit.framework.TestCase;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-
-public class RecordInputStreamTest extends TestCase {
-  public void testEmptyStream() throws IOException {
-    final RecordInputStream in = b("");
-    assertEquals(-1, in.read());
-    assertEquals(-1, in.read());
-    assertEquals(-1, in.read(new byte[8], 0, 8));
-    assertNull(in.readRecord('\n'));
-    in.close();
-  }
-
-  public void testReadOneByte() throws IOException {
-    final String exp = "abc";
-    final RecordInputStream in = b(exp);
-    assertEquals(exp.charAt(0), in.read());
-    assertEquals(exp.charAt(1), in.read());
-    assertEquals(exp.charAt(2), in.read());
-    assertEquals(-1, in.read());
-    in.close();
-  }
-
-  public void testReadBlockOffset0() throws IOException {
-    final String exp = "abc";
-    final RecordInputStream in = b(exp);
-    final byte[] act = new byte[exp.length()];
-    assertEquals(act.length, in.read(act, 0, act.length));
-    assertEquals(exp.charAt(0), act[0]);
-    assertEquals(exp.charAt(1), act[1]);
-    assertEquals(exp.charAt(2), act[2]);
-    assertEquals(-1, in.read(act, 0, act.length));
-    in.close();
-  }
-
-  public void testReadBlockOffset1() throws IOException {
-    final String exp = "abc";
-    final RecordInputStream in = b(exp);
-    assertEquals(exp.charAt(0), in.read());
-    final byte[] act = new byte[exp.length() - 1];
-    assertEquals(act.length, in.read(act, 0, act.length));
-    assertEquals(exp.charAt(1), act[0]);
-    assertEquals(exp.charAt(2), act[1]);
-    assertEquals(-1, in.read(act, 0, act.length));
-    in.close();
-  }
-
-  public void testReadRecord_SeparatorOnly() throws IOException {
-    final String rec1 = "foo";
-    final String rec2 = "bar";
-    final char sep = '\0';
-    final RecordInputStream in = b(rec1 + sep + rec2);
-    assertTrue(Arrays.equals(toBytes(rec1), in.readRecord(sep)));
-    assertTrue(Arrays.equals(toBytes(rec2), in.readRecord(sep)));
-    assertNull(in.readRecord(sep));
-    in.close();
-  }
-
-  public void testReadRecord_Terminated() throws IOException {
-    final String rec1 = "foo";
-    final String rec2 = "bar";
-    final char sep = '\0';
-    final RecordInputStream in = b(rec1 + sep + rec2 + sep);
-    assertTrue(Arrays.equals(toBytes(rec1), in.readRecord(sep)));
-    assertTrue(Arrays.equals(toBytes(rec2), in.readRecord(sep)));
-    assertNull(in.readRecord(sep));
-    in.close();
-  }
-
-  public void testReadRecord_EmptyRecords() throws IOException {
-    final char sep = '\0';
-    final RecordInputStream in = b("" + sep + "" + sep);
-    assertTrue(Arrays.equals(new byte[0], in.readRecord(sep)));
-    assertTrue(Arrays.equals(new byte[0], in.readRecord(sep)));
-    assertNull(in.readRecord(sep));
-    in.close();
-  }
-
-  public void testReadRecord_PartialRecordInBuffer() throws IOException {
-    final int huge = 16 * 1024;
-    final StringBuilder temp = new StringBuilder(huge);
-    for (int i = 0; i < huge; i++) {
-      temp.append('x');
-    }
-    final char sep = '\n';
-    final String ts = temp.toString();
-    final RecordInputStream in = b(ts + "1" + sep + ts + "2");
-    assertEquals(ts + "1", toString(in.readRecord(sep)));
-    assertEquals(ts + "2", toString(in.readRecord(sep)));
-    assertNull(in.readRecord(sep));
-    in.close();
-  }
-
-  private static RecordInputStream b(final String s) {
-    return new RecordInputStream(new ByteArrayInputStream(toBytes(s)));
-  }
-
-  private static byte[] toBytes(final String s) {
-    final String enc = "UTF-8";
-    try {
-      return s.getBytes(enc);
-    } catch (UnsupportedEncodingException uee) {
-      throw new RuntimeException("No " + enc + " support?", uee);
-    }
-  }
-
-  private static String toString(final byte[] b) {
-    final String enc = "UTF-8";
-    try {
-      return new String(b, 0, b.length, enc);
-    } catch (UnsupportedEncodingException uee) {
-      throw new RuntimeException("No " + enc + " support?", uee);
-    }
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java b/tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java
deleted file mode 100644
index adf5995..0000000
--- a/tests_mgrapp/src/com/google/codereview/rpc/MessageRequestEntityTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.rpc;
-
-import com.google.codereview.internal.SubmitChange.SubmitChangeResponse;
-import com.google.protobuf.Message;
-
-import junit.framework.TestCase;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.zip.DeflaterOutputStream;
-
-public class MessageRequestEntityTest extends TestCase {
-  public void testCompressedEntity() throws Exception {
-    final Message msg = buildMessage();
-    final byte[] bin = compress(msg);
-    final String contentType =
-        "application/x-google-protobuf"
-            + "; name=codereview.internal.SubmitChangeResponse"
-            + "; compress=deflate";
-
-    final MessageRequestEntity mre = new MessageRequestEntity(msg);
-    assertTrue(mre.isRepeatable());
-    assertEquals(bin.length, mre.getContentLength());
-    assertEquals(contentType, mre.getContentType());
-
-    for (int i = 0; i < 5; i++) {
-      final ByteArrayOutputStream compressed = new ByteArrayOutputStream();
-      mre.writeRequest(compressed);
-      assertTrue(Arrays.equals(bin, compressed.toByteArray()));
-    }
-  }
-
-  private static Message buildMessage() {
-    final SubmitChangeResponse.Builder r = SubmitChangeResponse.newBuilder();
-    r.setStatusCode(SubmitChangeResponse.CodeType.PATCHSET_EXISTS);
-    return r.build();
-  }
-
-  private static byte[] compress(final Message m) throws IOException {
-    final ByteArrayOutputStream out = new ByteArrayOutputStream();
-    final DeflaterOutputStream dos = new DeflaterOutputStream(out);
-    m.writeTo(dos);
-    dos.close();
-    return out.toByteArray();
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/rpc/MockRpcChannel.java b/tests_mgrapp/src/com/google/codereview/rpc/MockRpcChannel.java
deleted file mode 100644
index 4a1f1a4..0000000
--- a/tests_mgrapp/src/com/google/codereview/rpc/MockRpcChannel.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.rpc;
-
-import com.google.protobuf.Message;
-import com.google.protobuf.RpcCallback;
-import com.google.protobuf.RpcChannel;
-import com.google.protobuf.RpcController;
-import com.google.protobuf.Descriptors.MethodDescriptor;
-
-import junit.framework.TestCase;
-
-import java.util.LinkedList;
-
-public class MockRpcChannel implements RpcChannel {
-  private LinkedList<RpcChannel> calls = new LinkedList<RpcChannel>();
-
-  public void add(final RpcChannel c) {
-    calls.add(c);
-  }
-
-  public void callMethod(final MethodDescriptor method,
-      final RpcController controller, final Message request,
-      final Message responsePrototype, final RpcCallback<Message> done) {
-    if (calls.isEmpty()) {
-      TestCase.fail("Incorrect call for " + method.getFullName());
-    }
-
-    final RpcChannel c = calls.removeFirst();
-    c.callMethod(method, controller, request, responsePrototype, done);
-  }
-
-  public void assertAllCallsMade() {
-    TestCase.assertTrue(calls.isEmpty());
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/rpc/SimpleControllerTest.java b/tests_mgrapp/src/com/google/codereview/rpc/SimpleControllerTest.java
deleted file mode 100644
index 9496f45..0000000
--- a/tests_mgrapp/src/com/google/codereview/rpc/SimpleControllerTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.rpc;
-
-import com.google.protobuf.RpcCallback;
-
-import junit.framework.TestCase;
-
-public class SimpleControllerTest extends TestCase {
-  public void testDefaultConstructor() {
-    final SimpleController sc = new SimpleController();
-    assertNull(sc.errorText());
-    assertFalse(sc.failed());
-    assertFalse(sc.isCanceled());
-  }
-
-  public void testNotifyCancelUnsupported() {
-    try {
-      new SimpleController().notifyOnCancel(new RpcCallback<Object>() {
-        public void run(Object parameter) {
-          fail("Callback invoked during notifyOnCancel setup");
-        }
-      });
-      fail("notifyOnCancel accepted a callback");
-    } catch (UnsupportedOperationException e) {
-      // Pass
-    }
-  }
-
-  public void testStartCancelUnsupported() {
-    try {
-      new SimpleController().startCancel();
-      fail("startCancel did not fail");
-    } catch (UnsupportedOperationException e) {
-      // Pass
-    }
-  }
-
-  public void testSetFailed() {
-    final String reason = "we failed, yes we did";
-    final SimpleController sc = new SimpleController();
-    sc.setFailed(reason);
-    assertTrue(sc.failed());
-    assertSame(reason, sc.errorText());
-  }
-
-  public void testResetClearedFailure() {
-    final String reason = "we failed, yes we did";
-    final SimpleController sc = new SimpleController();
-    sc.setFailed(reason);
-    sc.reset();
-    assertNull(sc.errorText());
-    assertFalse(sc.failed());
-    assertFalse(sc.isCanceled());
-  }
-}
diff --git a/tests_mgrapp/src/com/google/codereview/util/MutableBooleanTest.java b/tests_mgrapp/src/com/google/codereview/util/MutableBooleanTest.java
deleted file mode 100644
index 7d4d646..0000000
--- a/tests_mgrapp/src/com/google/codereview/util/MutableBooleanTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.codereview.util;
-
-import junit.framework.TestCase;
-
-
-public class MutableBooleanTest extends TestCase {
-  public void testCreateDefault() {
-    final MutableBoolean b = new MutableBoolean();
-    assertFalse(b.value);
-  }
-
-  public void testCreateTrue() {
-    final MutableBoolean b = new MutableBoolean(true);
-    assertTrue(b.value);
-  }
-
-  public void testCreateFalse() {
-    final MutableBoolean b = new MutableBoolean(false);
-    assertFalse(b.value);
-  }
-
-  public void testMutable() {
-    final MutableBoolean b = new MutableBoolean();
-    assertFalse(b.value);
-    b.value = true;
-    assertTrue(b.value);
-    b.value = false;
-    assertFalse(b.value);
-  }
-}
diff --git a/to_jetty.sh b/to_jetty.sh
new file mode 100755
index 0000000..fa6023e
--- /dev/null
+++ b/to_jetty.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# Builds and deploys into Jetty; primarily for debugging
+
+jetty=$1
+fast=$2
+if [ -z "$jetty" ]
+then
+	echo >&2 "usage: $0 jettydir [--fast]"
+	exit 1
+fi
+if ! [ -f "$jetty/etc/jetty.xml" ]
+then
+	echo >&2 "error: $jetty is not a Jetty installation"
+	exit 1
+fi
+
+ctx="$jetty/contexts/gerrit.xml" &&
+
+if [ -f "$ctx" -a -n "$fast" ]
+then
+	echo >&2 "warning: Using fast mode to build only GWT..."
+	echo >&2
+	(cd appjar && mvn install) &&
+	(cd appwar && mvn package) &&
+	cp appwar/target/gerrit-*.war "$jetty/webapps/gerrit.war" &&
+	touch "$ctx"
+else
+	(cd appdist && mvn clean install) &&
+	out=$(cd appdist/target/gerrit-*-bin.dir/gerrit-* && pwd) &&
+
+	cp $out/www/gerrit-*.war "$jetty/webapps/gerrit.war" &&
+	if [ -f "$ctx" ]
+	then
+		touch "$ctx"
+	else
+		cp $out/jdbc/c3p0-*.jar "$jetty/lib/plus" &&
+		cp $out/jdbc/postgresql-*jdbc*.jar "$jetty/lib/plus" &&
+
+		rm -f "$jetty/contexts/test.xml" &&
+		cp $out/www/jetty_gerrit.xml "$ctx" &&
+
+		echo >&2 &&
+		echo >&2 "You need to edit and configure $ctx"
+	fi
+fi
diff --git a/webapp/.gitignore b/webapp/.gitignore
deleted file mode 100644
index 88e22b4..0000000
--- a/webapp/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.pyc
-/froofle
-/codereview/*_pb2.py
-/codereview/internal/*_pb2.py
diff --git a/webapp/TODO b/webapp/TODO
deleted file mode 100644
index 5e6493f..0000000
--- a/webapp/TODO
+++ /dev/null
@@ -1,64 +0,0 @@
-Bugs
-----
-
-If a user never logs in, someone else can grab their nickname
-See the issue tracker at code.google.com/p/gerrit for more bugs
-
-Data Cleaning
--------------
-
-Email addresses should be lowercased before comparing
-Nicknames too???
-Nicknames should not be allowed to contain multiple internal spaces
-    nor internal whitespace other than space
-
-Sending Mail
-------------
-
-Should allow registered nicknames in Reviewers and CC fields
-Normalize emails to nicknames in these fields even when editing, if known
-
-Issues
-------
-
-Archive issues (that's per user rather than per issue)
-
-Patch Sets
-----------
-
-Edit patch set message
-Delete patch sets
-
-Searching, Organizing
----------------------
-
-View all open issues by base, or by repository
-View all closed issues (issue 15 in the tracker)
-
-Commenting
-----------
-
-Add stars
-Add non-inline comments per file, per patchset, per issue
-Keyboard shortcut for entering a comment at the blue line
-    (isn't this already in the JS code?)
-
-Diffs and Patches
------------------
-
-Improve UI for selecting patch set deltas; handle missing files better
-Syntax colorization
-Record revision and show in UI; indicate action (add/edit/delete)
-Add line length option
-Need a more powerful way to specify the URL for finding a revision (?)
-
-User Experience
----------------
-
-Make Edit Issue show the form inline instead of opening a new page?
-Right-justify the "Id" and "Drafts (mine)" headings in the Issues list table
-
-Software Engineering
---------------------
-
-Unittests
diff --git a/webapp/__init__.py b/webapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/__init__.py
+++ /dev/null
diff --git a/webapp/app.yaml b/webapp/app.yaml
deleted file mode 100644
index fea66ed..0000000
--- a/webapp/app.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-application: gerrit-code-review-tool-demo
-version: 1
-runtime: python
-api_version: 1
-
-default_expiration: 7d  # This is good for images, which never change
-
-handlers:
-
-- url: /(robots.txt|favicon.ico)
-  static_files: static/\1
-  upload: static/(robots.txt|favicon.ico)
-
-- url: /google7db36eb2cc527940.html
-  static_files: static/robots.txt
-  upload: static/robots.txt
-
-- url: /(application_version)
-  static_files: static/\1
-  mime_type: text/plain
-  expiration: 1s
-  upload: static/application_version
-
-- url: /static
-  static_dir: static
-
-- url: .*
-  script: main.py
diff --git a/webapp/backup_gae.py b/webapp/backup_gae.py
deleted file mode 100755
index c2ca71d..0000000
--- a/webapp/backup_gae.py
+++ /dev/null
@@ -1,479 +0,0 @@
-#!/usr/bin/env python2.4
-#
-# Copyright 2007 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import sys
-sys.path.insert(0, '../../google_appengine/')
-
-from datetime import datetime
-import cStringIO
-import pickle
-import getpass
-import logging
-import optparse
-import os
-import sys
-from pyPgSQL import PgSQL
-from pyPgSQL.libpq import OperationalError
-
-from google.appengine.ext import db
-from google.appengine.api import users
-from codereview.proto_client import HttpRpc, Proxy
-from codereview.backup_pb2 import *
-from codereview import models
-
-KINDS = [
-  "ApprovalRight",
-  "Project",
-  "Branch",
-  "RevisionId",
-  "Change",
-  "PatchSet",
-  "Message",
-  "Patch",
-  "Comment",
-  "ReviewStatus",
-  "Account",
-  "AccountGroup",
-]
-[
-  "DeltaContent",
-  "Settings",
-  "BuildAttempt",
-  "PatchSetFilenames",
-  "Bucket",
-]
-
-try:
-  import readline
-except ImportError:
-  pass
-
-parser = optparse.OptionParser(usage="%prog [options] [-- diff_options]")
-
-# Review server
-group = parser.add_option_group("Review server options")
-group.add_option("-s", "--server", action="store", dest="server",
-                 default="codereview.appspot.com",
-                 metavar="SERVER",
-                 help=("The server to upload to. The format is host[:port]. "
-                       "Defaults to 'codereview.appspot.com'."))
-group.add_option("-e", "--email", action="store", dest="email",
-                 metavar="EMAIL", default=None,
-                 help="The username to use. Will prompt if omitted.")
-group.add_option("-H", "--host", action="store", dest="host",
-                 metavar="HOST", default=None,
-                 help="Overrides the Host header sent with all RPCs.")
-group.add_option("--no_cookies", action="store_false",
-                 dest="save_cookies", default=True,
-                 help="Do not save authentication cookies to local disk.")
-
-group = parser.add_option_group("Backup database options")
-group.add_option("-d", action="store", dest="dbname",
-                 metavar="DBNAME",
-                 help="PostgreSQL database name")
-
-def GetRpcServer(options):
-  def GetUserCredentials():
-    email = options.email
-    if email is None:
-      email = raw_input("Email: ").strip()
-    password = getpass.getpass("Password for %s: " % email)
-    return (email, password)
-
-  host = (options.host or options.server).lower()
-  if host == "localhost" or host.startswith("localhost:"):
-    email = options.email
-    if email is None:
-      email = "test@example.com"
-      logging.info("Using debug user %s.  Override with --email" % email)
-
-    server = HttpRpc(
-        options.server,
-        lambda: (email, "password"),
-        host_override=options.host,
-        extra_headers={"Cookie":
-                       'dev_appserver_login="%s:False"' % email})
-    server.authenticated = True
-    return server
-
-  if options.save_cookies:
-    cookie_file = ".gerrit_cookies"
-  else:
-    cookie_file = None
-
-  return HttpRpc(options.server, GetUserCredentials,
-                 host_override=options.host,
-                 cookie_file=cookie_file)
-
-def one(v):
-  if not isinstance(v, list):
-    return v
-  if len(v) == 1:
-    return v[0]
-  return None
-
-def yn(v):
-  if one(v):
-    return 'Y'
-  return 'N'
-
-def yn_null(v):
-  if not isinstance(v, list):
-    v = [v]
-  if len(v) == 1 and v[0] is not None:
-    return yn(v)
-  return None
-
-
-class LocalStore(object):
-  def __init__(self, db):
-    self.db = db
-
-  def delete(self, table_name, entity):
-    c = self.db.cursor()
-    c.execute('DELETE FROM ' + table_name + ' WHERE gae_key=%s',
-              (entity.key))
-
-  def insert(self, table_name, dict):
-    p = []
-    v = []
-    for u in dict.keys():
-      p.append('%s')
-      a = dict[u]
-      if isinstance(a, users.User):
-        a = a.email()
-      if isinstance(a, db.Key):
-        a = str(a)
-      if isinstance(a, datetime):
-        a = a.isoformat(' ') + ' +00:00'
-      if isinstance(a, unicode):
-        a = a.encode('utf-8')
-      v.append(a)
-
-    s = 'INSERT INTO ' + table_name + '(' + ','.join(dict.keys()) + ')'
-    s += 'VALUES(' + ','.join(p) + ')'
-    c = self.db.cursor()
-    try:
-      c.execute(s, v)
-    except OperationalError:
-      print
-      print 'FAIL %s' % table_name
-      print 'SQL  %s' % s
-      print 'DATA %s' % dict
-      raise
-
-  def save_ApprovalRight(self, entity, obj):
-    ar_id = entity.key_id
-    self.delete('approval_rights', entity)
-    self.insert('approval_rights', {
-      'ar_id': ar_id,
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-
-      'required': yn(obj.required),
-    })
-
-    for p in obj.files:
-      self.insert('approval_right_files', {'ar_id':ar_id, 'path':p})
-
-    for u in obj.approvers_users:
-      self.insert('approval_right_users', {'ar_id':ar_id, 'email':u, 'type': 'approver'})
-    for u in obj.verifiers_users:
-      self.insert('approval_right_users', {'ar_id':ar_id, 'email':u, 'type': 'verifier'})
-    for u in obj.submitters_users:
-      self.insert('approval_right_users', {'ar_id':ar_id, 'email':u, 'type': 'submitter'})
-
-    for u in obj.approvers_groups:
-      self.insert('approval_right_groups', {'ar_id':ar_id, 'group_key':u, 'type': 'approver'})
-    for u in obj.verifiers_groups:
-      self.insert('approval_right_groups', {'ar_id':ar_id, 'group_key':u, 'type': 'verifier'})
-    for u in obj.submitters_groups:
-      self.insert('approval_right_groups', {'ar_id':ar_id, 'group_key':u, 'type': 'submitter'})
-
-  def save_Project(self, entity, obj):
-    project_id = entity.key_id
-    self.delete('projects', entity)
-    self.insert('projects', {
-      'project_id': project_id,
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-
-      'name': one(obj.name),
-      'comment': one(obj.comment),
-    })
-
-    for u in obj.owners_users:
-      self.insert('project_owner_users', {'project_id':project_id, 'email':u})
-    for u in obj.owners_groups:
-      self.insert('project_owner_groups', {'project_id':project_id, 'group_key':u})
-    for u in obj.code_reviews:
-      self.insert('project_code_reviews', {'project_id':project_id, 'ar_key':u})
-
-  def save_Branch(self, entity, obj):
-    self.delete('branches', entity)
-    self.insert('branches', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'project_key': models.Branch.project.get_value_for_datastore(obj),
-      'name': one(obj.name),
-    })
-
-  def save_RevisionId(self, entity, obj):
-    self.delete('revisions', entity)
-    self.insert('revisions', {
-      'revision_id': one(obj.id),
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'project_key': models.RevisionId.project.get_value_for_datastore(obj),
-
-      'author_name': one(obj.author_name),
-      'author_email': one(obj.author_email),
-      'author_when': one(obj.author_when),
-      'author_tz': one(obj.author_tz),
-
-      'committer_name': one(obj.committer_name),
-      'committer_email': one(obj.committer_email),
-      'committer_when': one(obj.committer_when),
-      'committer_tz': one(obj.committer_tz),
-
-      'message': one(obj.message),
-      'patchset_key': one(obj.patchset_key),
-    })
-
-    p = 1
-    for a in obj.ancestors:
-      self.insert('revision_ancestors', {
-        'gae_key': entity.key,
-        'child_id': one(obj.id),
-        'parent_id': a,
-        'position': p})
-      p += 1
-
-  def save_Change(self, entity, obj):
-    change_id = entity.key_id
-    self.delete('changes', entity)
-    self.insert('changes', {
-      'last_backed_up': one(obj.last_backed_up),
-      'gae_key': entity.key,
-      'change_id': change_id,
-      'subject': one(obj.subject),
-      'description': one(obj.description),
-      'owner': one(obj.owner),
-      'created': one(obj.created),
-      'modified': one(obj.modified),
-      'claimed': yn(obj.claimed),
-      'closed': yn(obj.closed),
-      'n_comments': one(obj.n_comments),
-      'n_patchsets': one(obj.n_patchsets),
-      'dest_project_key': models.Change.dest_project.get_value_for_datastore(obj),
-      'dest_branch_key': models.Change.dest_branch.get_value_for_datastore(obj),
-      'merge_submitted': one(obj.merge_submitted),
-      'merged': yn(obj.merged),
-      'emailed_clean_merge': yn(obj.emailed_clean_merge),
-      'emailed_missing_dependency': yn(obj.emailed_missing_dependency),
-      'emailed_path_conflict': yn(obj.emailed_path_conflict),
-      'merge_patchset_key': one(obj.merge_patchset_key),
-    })
-    
-    for u in obj.reviewers:
-      self.insert('change_people', {'change_id':change_id,'email':u,'type':'reviewer'})
-    for u in obj.cc:
-      self.insert('change_people', {'change_id':change_id,'email':u,'type':'cc'})
-
-  def save_PatchSet(self, entity, obj):
-    self.delete('patch_sets', entity)
-    self.insert('patch_sets', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'patchset_id': one(obj.id),
-      'change_key': models.PatchSet.change.get_value_for_datastore(obj),
-      'message': one(obj.message),
-      'owner': one(obj.owner),
-      'created': one(obj.created),
-      'modified': one(obj.modified),
-      'revision_key': models.PatchSet.revision.get_value_for_datastore(obj),
-      'complete': yn(obj.complete),
-    })
-
-  def save_Message(self, entity, obj):
-    self.delete('messages', entity)
-    self.insert('messages', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'change_key': models.Message.change.get_value_for_datastore(obj),
-      'subject': one(obj.subject),
-      'sender': one(obj.sender),
-      'date_sent': one(obj.date),
-      'body': one(obj.text),
-    })
-
-    for u in set(obj.recipients):
-      self.insert('message_recipients', {'message_key':entity.key,'email':u})
-
-  def save_Patch(self, entity, obj):
-    self.delete('patches', entity)
-    self.insert('patches', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'patchset_key': models.Patch.patchset.get_value_for_datastore(obj),
-      'filename': one(obj.filename),
-      'status': one(obj.status),
-      'multi_way_diff': yn(obj.multi_way_diff),
-      'n_comments': one(obj.n_comments),
-      'old_data_key': models.Patch.old_data.get_value_for_datastore(obj),
-      'new_data_key': models.Patch.new_data.get_value_for_datastore(obj),
-      'diff_data_key': models.Patch.diff_data.get_value_for_datastore(obj),
-    })
-
-  def save_Comment(self, entity, obj):
-    self.delete('comments', entity)
-    self.insert('comments', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'patch_key': models.Comment.patch.get_value_for_datastore(obj),
-      'message_id': one(obj.message_id),
-      'author': one(obj.author),
-      'written': one(obj.date),
-      'lineno': one(obj.lineno),
-      'body': one(obj.text),
-      'is_left': yn(obj.left),
-      'draft': yn(obj.draft),
-    })
-
-  def save_ReviewStatus(self, entity, obj):
-    if obj.lgtm == '':
-      obj.lgtm = 'abstain'
-    self.delete('review_status', entity)
-    self.insert('review_status', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'change_key': models.ReviewStatus.change.get_value_for_datastore(obj),
-      'email': one(obj.user),
-      'lgtm': one(obj.lgtm),
-      'verified': yn_null(obj.verified),
-    })
-
-  def save_Account(self, entity, obj):
-    email = entity.key_name
-    if email.startswith('<'):
-      email = email[1:]
-    if email.endswith('>'):
-      email = email[:-1]
-    if '@' not in email:
-      email += '@gmail.com'
-
-    self.delete('accounts', entity)
-    self.insert('accounts', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-
-      'user_email': one(obj.user),
-      'email': email,
-      'preferred_email': one(obj.preferred_email),
-      'created': one(obj.created),
-      'modified': one(obj.modified),
-
-      'is_admin': yn(obj.is_admin),
-      'welcomed': yn(obj.welcomed),
-      'real_name_entered': yn(obj.real_name_entered),
-      'real_name': one(obj.real_name),
-      'mailing_address': one(obj.mailing_address),
-      'mailing_address_country': one(obj.mailing_address_country),
-      'phone_number': one(obj.phone_number),
-      'fax_number': one(obj.fax_number),
-
-      'cla_verified': yn(obj.cla_verified),
-      'cla_verified_by': one(obj.cla_verified_by),
-      'cla_verified_timestamp': one(obj.cla_verified_timestamp),
-      'individual_cla_version': one(obj.individual_cla_version),
-      'individual_cla_timestamp': one(obj.individual_cla_timestamp),
-      'cla_comments': one(obj.cla_comments),
-
-      'default_context': one(obj.default_context),
-    })
-
-    for i in set(obj.stars):
-      self.insert('account_stars', {'email':email,'change_id':i})
-    for i in set(obj.unclaimed_changes_projects):
-      self.insert('account_unclaimed_changes_projects', {'email':email,'project_key':i})
-
-  def save_AccountGroup(self, entity, obj):
-    self.delete('account_groups', entity)
-    self.insert('account_groups', {
-      'gae_key': entity.key,
-      'last_backed_up': one(obj.last_backed_up),
-      'name': one(obj.name),
-      'comment': one(obj.comment),
-    })
-
-    for i in set(obj.members):
-      self.insert('account_group_users', {'group_name':one(obj.name),'email':i})
-
-def RealMain(argv, data=None):
-  os.environ['LC_ALL'] = 'C'
-  options, args = parser.parse_args(argv[1:])
-
-  srv = GetRpcServer(options)
-  backup = Proxy(BackupService_Stub(srv))
-  db = PgSQL.connect(database=options.dbname,
-                     client_encoding="utf-8",
-                     unicode_results=1)
-  db.cursor().execute("set client_encoding to unicode")
-
-  store = LocalStore(db)
-
-  print 'BEGIN BACKUP'
-  for kind_name in KINDS:
-    sys.stdout.write('\n')
-    cnt = 0
-    last_key = ''
-
-    while True:
-      sys.stdout.write('\r%-18s ... ' % kind_name)
-      r = NextChunkRequest()
-      r.kind = kind_name
-      r.last_key = last_key
-      
-      r = backup.NextChunk(r)
-      if not r.entity:
-        break
-
-      for entity in r.entity:
-        cnt += 1
-        sys.stdout.write('\r%-18s ... %5d ' % (kind_name, cnt))
-
-        o = pickle.load(cStringIO.StringIO(entity.data))
-        getattr(store, 'save_%s' % kind_name)(entity, o)
-        last_key = entity.key
-      db.commit()
-
-  sys.stdout.write('\n')
-  print 'BACKUP DONE'
-  db.commit()
-  db.close()
-
-
-def main():
-  try:
-    RealMain(sys.argv)
-  except KeyboardInterrupt:
-    print
-    print "Interrupted."
-    sys.exit(1)
-
-
-if __name__ == "__main__":
-  main()
diff --git a/webapp/codereview/__init__.py b/webapp/codereview/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/codereview/__init__.py
+++ /dev/null
diff --git a/webapp/codereview/backup_service.py b/webapp/codereview/backup_service.py
deleted file mode 100644
index c2fa143..0000000
--- a/webapp/codereview/backup_service.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import base64
-import logging
-import cStringIO
-import pickle
-
-from google.appengine.ext import db
-
-import models
-from backup_pb2 import *
-from internal.util import automatic_retry
-
-class GetLostError(Exception):
-  pass
-
-KINDS = {
-  "ApprovalRight": models.ApprovalRight,
-  "Project": models.Project,
-  "Branch": models.Branch,
-  "RevisionId": models.RevisionId,
-  "BuildAttempt": models.BuildAttempt,
-  "Change": models.Change,
-  "PatchSetFilenames": models.PatchSetFilenames,
-  "PatchSet": models.PatchSet,
-  "Message": models.Message,
-  "DeltaContent": models.DeltaContent,
-  "Patch": models.Patch,
-  "Comment": models.Comment,
-  "Bucket": models.Bucket,
-  "ReviewStatus": models.ReviewStatus,
-  "Account": models.Account,
-  "AccountGroup": models.AccountGroup,
-}
-
-class BackupServiceImp(BackupService):
-  @automatic_retry
-  def NextChunk(self, rpc_controller, req, done):
-    if not self.http_request.user_is_admin:
-      raise GetLostError()
-
-    rsp = NextChunkResponse()
-
-    try:
-      cls = KINDS[req.kind]
-    except KeyError:
-      done(rsp)
-      return
-
-    if req.last_key:
-      q = models.gql(cls,
-                     'WHERE __key__ > :1 ORDER BY __key__',
-                      db.Key(req.last_key))
-    else:
-      q = models.gql(cls, 'ORDER BY __key__')
-
-    sz = 20
-    for o in q.fetch(sz):
-      e = rsp.entity.add()
-      if o.key().id() is not None:
-        e.key_id = o.key().id()
-      if o.key().name() is not None:
-        e.key_name = o.key().name()
-      e.key = str(o.key())
-      e.last_backed_up = o.last_backed_up
-
-      buf = cStringIO.StringIO()
-      pickle.dump(o, buf, -1)
-      e.data = buf.getvalue()
-    done(rsp)
diff --git a/webapp/codereview/changetable.py b/webapp/codereview/changetable.py
deleted file mode 100755
index 346e278..0000000
--- a/webapp/codereview/changetable.py
+++ /dev/null
@@ -1,191 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from django.utils import safestring
-from django.utils import html
-from django.template import defaultfilters
-
-import logging
-import operator
-import library
-
-class FieldRendererException(Exception):
-  def __init__(self, msg):
-    self.msg = msg
-  def __str__(self):
-    return "FieldRendererException('%s')" % self.msg
-
-def _render_star(change, current_user):
-  id = change.key().id()
-
-  list = []
-  list.append("""<span id="change-star-%d">""" % id)
-  if change.is_starred:
-    list.append("""<a href="javascript:M_removeChangeStar(%d)"><img src="/static/star-lite.gif" width="15" height="15" border="0"></a>"""
-        % id)
-  else:
-    if current_user:
-      list.append("""<a href="javascript:M_addChangeStar(%d)"><img src="/static/star-dark.gif" width="15" height="15" border="0"></a>"""
-          % id)
-  list.append("</span>")
-  return "".join(list)
-
-
-class BaseFieldRenderer(object):
-  """Base class for renderers for particular fields.
-  
-  Implement the render_title() and render_contents() methods.
-  """
-  def column_count(self):
-    raise FieldRendererException, "column_count not implemented"
-
-  def render_title(self):
-    """Render the title for a column in the table.
-
-    Returns:
-      The string of the rendered title.
-    """
-    raise FieldRendererException, "render_title not implemented"
-  def render_contents(self, change, current_user):
-    raise FieldRendererException, "render_contents not implemented"
-
-
-class IdFieldRenderer(BaseFieldRenderer):
-  def column_count(self):
-    return 3
-
-  def render_title(self):
-    return """<th class="header-columns" colspan="3" style="text-align: right;">Id</th>
-    """
-
-  def render_contents(self, change, current_user):
-    return """<td class="selection"><img src="/static/closedtriangle.gif" style="visibility: hidden;" width="12" height="9" /></td>
-<td class="star" width="17" align="center">%(star)s</td>
-<td class="id" align="right"><a href="/%(id)d">%(id)d</a></td>""" % {
-        'id': change.key().id(),
-        'star': _render_star(change, current_user)
-      }
-
-
-class FieldRenderer(BaseFieldRenderer):
-  def __init__(self, cell_class, title, func):
-    self.cell_class = cell_class
-    self.title = title
-    self.func = func
-
-  def column_count(self):
-    return 1
-
-  def render_title(self):
-    return """<th class="header-columns %(cell_class)s">%(title)s</th>""" % {
-        'title': self.title,
-        'cell_class': self.cell_class,
-      }
-
-  def render_contents(self, change, current_user):
-    return """<td class="%(cell_class)s">%(cell_contents)s</td>""" % {
-        'cell_contents': self.func(change),
-        'cell_class': self.cell_class,
-      }
-
-
-class SubjectFieldRenderer(FieldRenderer):
-  def __init__(self):
-    FieldRenderer.__init__(self, 'subject', 'Subject',
-        lambda c: """<a href="/%(id)d">%(subject)s</a> %(closed)s""" % {
-            'id': c.key().id(),
-            'subject': html.escape(defaultfilters.truncatewords(c.subject, 11)),
-            'closed': library.closed_label(c),
-          })
-
-  def render_title(self):
-    return """<th class="header-columns %(class)s">%(title)s</th>""" % {
-              'title': self.title,
-              'class': self.cell_class,
-            }
-
-
-
-class UserListFieldRenderer(FieldRenderer):
-  def __init__(self, cell_class, title, func):
-    FieldRenderer.__init__(self, cell_class, title, 
-        lambda c: ", ".join(map(library.show_user, func(c))))
-
-
-FIELD_ID = IdFieldRenderer()
-FIELD_SUBJECT = SubjectFieldRenderer()
-FIELD_OWNER = UserListFieldRenderer('owner', 'Owner', lambda c: [c.owner])
-FIELD_REVIEWERS = UserListFieldRenderer('reviewers', 'Reviewers',
-                      lambda c: c.reviewers)
-FIELD_PROJECT = FieldRenderer('project', 'Project', lambda c: html.escape(c.dest_project.name))
-FIELD_MODIFIED = FieldRenderer('modified', 'Last Update',
-                      lambda c: library.abbrevtimesince(c.modified))
-
-# this one should be change so that it's what they see in repo
-FIELD_BRANCH = FieldRenderer('branch', 'Branch', lambda c: html.escape(c.dest_branch.short_name))
-
-class ChangeTable(object):
-  """An object to help render a list of changes as a table.
-  
-  Generally, changes are grouped into sections.  If a section's title is
-  None, then the section header won't be rendered, and it will appear to
-  be merged with the last section.
-  """
-
-  def __init__(self, current_user, fields):
-    """Construct a ChangeTable object.
-    
-    Args:
-      fields - A list of BaseFieldRenderer objects.  See the FIELD_ constants
-               in this module for the common ones.
-    """
-    self.current_user = current_user
-    self.fields = fields
-    self.sections = []
-
-  def add_section(self, title, changes):
-    self.sections.append({'title': title, 'changes': changes})
-
-  def render(self):
-    column_count = reduce(operator.add,
-                      map(lambda x: x.column_count(), self.fields))
-    def _render_none():
-      return ("""<tr><td colspan="%d" class="disabled">(None)</td></tr>"""
-            % column_count)
-    lines = []
-    lines.append("""<table class="change-list" id="user-queues">""")
-    lines.append("""<tr>""")
-    for field in self.fields:
-      lines.append(field.render_title())
-    lines.append("""</tr>""")
-    if len(self.sections) == 0:
-      lines.append(_render_none())
-    else:
-      for section in self.sections:
-        title = section['title']
-        if not title is None:
-          lines.append("""<tr><th class="header-title" colspan="%d">%s</th></tr>"""
-              % (column_count, html.escape(title)))
-        changes = section['changes']
-        if not changes:
-          lines.append(_render_none())
-        else:
-          for change in section['changes']:
-            lines.append("""<tr name="change">""")
-            for field in self.fields:
-              lines.append(field.render_contents(change, self.current_user))
-            lines.append("</tr>")
-    lines.append("""</table>""")
-    return safestring.mark_safe("\n".join(lines))
-
diff --git a/webapp/codereview/dev_init.py b/webapp/codereview/dev_init.py
deleted file mode 100644
index 175f68b..0000000
--- a/webapp/codereview/dev_init.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Init the dev instance."""
-
-from django.http import HttpResponse
-
-import models
-from view_util import devenv_required
-
-@devenv_required
-def dev_init(request):
-  settings = models.Settings.get_settings()
-  key = settings.internal_api_key
-
-  return HttpResponse(
-    "[codereview]\n"
-    "    internalapikey = %s\n"
-    "\n"
-    % (key))
diff --git a/webapp/codereview/email.py b/webapp/codereview/email.py
deleted file mode 100644
index 231366f..0000000
--- a/webapp/codereview/email.py
+++ /dev/null
@@ -1,166 +0,0 @@
-# Copyright 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-
-from google.appengine.ext import db
-from google.appengine.api import mail
-from google.appengine.api import users
-from google.appengine.runtime import apiproxy_errors
-
-import django.template
-
-import email
-import library
-import models
-from internal import util
-
-def get_default_sender():
-  return models.Settings.get_settings().from_email
-
-def _encode_safely(s):
-  """Helper to turn a unicode string into 8-bit bytes."""
-  if isinstance(s, unicode):
-    s = s.encode('utf-8')
-  return s
-
-def to_email_string(obj):
-  if not obj:
-    return None
-  if isinstance(obj, str):
-    return obj
-  elif isinstance(obj, unicode):
-    return obj.encode('utf-8')
-  elif isinstance(obj, db.Email):
-    account = models.Account.get_account_for_email(obj)
-  elif isinstance(obj, users.User):
-    account = models.Account.get_account_for_user(obj)
-  elif isinstance(obj, models.Account):
-    account = obj
-  if account:
-    result = account.get_email()
-  else:
-    result = str(email)
-  return _encode_safely(result)
-
-def make_to_strings(to):
-  return [x for x in [to_email_string(e) for e in to] if x]
-
-
-def send(sender, to, subject, template, template_args):
-  """Sends an email based on a template.
-
-  All email address parameters can be: strings, unicode, db.Email users.User
-  or models.Account objects.
-
-  Returns a Message object, suitable for keeping in the db.
-
-  Args:
-    sender:   The From address.  Null if it should be sent from the role acct.
-    to:       An email address or a list of email address to be in the To field.
-    subject:  The subject line.
-    template: The name of the template file to use from the mail dir.
-    template_args:  A map of args to be pasaed to the template
-  """
-  sender_string = to_email_string(sender)
-  if not sender_string:
-    return 'no from address'
-  to_strings = make_to_strings(to)
-  if not to_strings:
-    return 'no to addresses'
-  body = django.template.loader.render_to_string(template, template_args)
-  try:
-    mail.send_mail(sender=sender_string,
-                   to=to_strings,
-                   subject=subject,
-                   body=body)
-  except apiproxy_errors.OverQuotaError, e:
-    logging.error(str(e), exc_info=True)
-
-def make_change_subject(change):
-  subject = "Change %s: (%s) %s" % (change.key().id(), change.dest_project.name,
-                                    change.subject)
-  if change.message_set.count(1) > 0:
-    subject = 'Re: ' + subject
-  return subject
-
-def send_change_message(request,
-                        change,
-                        template,
-                        template_args,
-                        sender,
-                        send_email=True,
-                        email_template=None,
-                        additional_to=[]):
-  # sender
-  default = get_default_sender()
-  if not sender:
-    sender = default
-  sender_string = to_email_string(sender)
-
-  # to
-  to_users = set(  [change.owner]
-                 + change.reviewers
-                 + change.cc
-                 + [default]
-                 + additional_to)
-  if sender in to_users:
-    to_users.remove(sender)
-  to_strings = make_to_strings(to_users)
-  to_emails = [db.Email(s) for s in to_strings]
-
-  # subject
-  subject = make_change_subject(change)
-
-  # body
-  uri = library.change_url(change)
-  if template_args is None:
-    template_args = dict()
-  else:
-    template_args = dict(template_args)
-  template_args['change'] = change
-
-  if not email_template:
-    email_template = template
-  body = django.template.loader.render_to_string(email_template,
-                                                 template_args)
-
-  # don't send emails without all of these fields
-  if not sender_string or not to_strings or not subject or not body:
-    return None
-
-  # send the email
-  if send_email:
-    message_body = "%s\n--\n%s\n" % (body, uri)
-    try:
-      mail.send_mail(sender=sender_string,
-                     to=to_strings,
-                     subject=subject,
-                     body=message_body)
-    except apiproxy_errors.OverQuotaError, e:
-      logging.error(str(e), exc_info=True)
-  
-  # make and return the email
-  if email_template != template:
-    body = django.template.loader.render_to_string(
-                                          template, template_args)
-  msg = models.Message(change=change,
-                       subject=util.u(subject),
-                       sender=util.u(sender_string),
-                       recipients=to_emails,
-                       text=db.Text(body),
-                       parent=change)
-  return msg
-
-
diff --git a/webapp/codereview/engine.py b/webapp/codereview/engine.py
deleted file mode 100644
index 59ac9a0..0000000
--- a/webapp/codereview/engine.py
+++ /dev/null
@@ -1,699 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Diff rendering in HTML for Gerrit."""
-
-# Python imports
-import re
-import cgi
-import difflib
-import logging
-import urlparse
-
-# AppEngine imports
-from google.appengine.api import urlfetch
-from google.appengine.api import users
-from google.appengine.ext import db
-
-# Django imports
-from django.template import loader
-
-# Local imports
-import library
-import models
-import patching
-import intra_region_diff
-
-
-# NOTE: this function is duplicated in upload.py, keep them in sync.
-def SplitPatch(data):
-  """Splits a patch into separate pieces for each file.
-
-  Args:
-    data: A string containing the output of svn diff.
-
-  Returns:
-    A list of 2-tuple (filename, text) where text is the svn diff output
-      pertaining to filename.
-  """
-  patches = []
-  filename = None
-  diff = []
-  for line in data.splitlines(True):
-    new_filename = None
-    if line.startswith('Index:'):
-      unused, new_filename = line.split(':', 1)
-      new_filename = new_filename.strip()
-    elif line.startswith('Property changes on:'):
-      unused, temp_filename = line.split(':', 1)
-      # When a file is modified, paths use '/' between directories, however
-      # when a property is modified '\' is used on Windows.  Make them the same
-      # otherwise the file shows up twice.
-      temp_filename = temp_filename.strip().replace('\\', '/')
-      if temp_filename != filename:
-        # File has property changes but no modifications, create a new diff.
-        new_filename = temp_filename
-    if new_filename:
-      if filename and diff:
-        patches.append((filename, ''.join(diff)))
-      filename = new_filename
-      diff = [line]
-      continue
-    if diff is not None:
-      diff.append(line)
-  if filename and diff:
-    patches.append((filename, ''.join(diff)))
-  return patches
-
-def RenderDiffTableRows(request, old_lines, chunks, patch,
-                        colwidth=100,
-                        debug=False,
-                        context=models.DEFAULT_CONTEXT):
-  """Render the HTML table rows for a side-by-side diff for a patch.
-
-  Args:
-    request: Django Request object.
-    old_lines: List of lines representing the original file.
-    chunks: List of chunks as returned by patching.ParsePatchToChunks().
-    patch: A models.Patch instance.
-    colwidth: Optional column width (default 100).
-    debug: Optional debugging flag (default False).
-    context: Maximum number of rows surrounding a change (default CONTEXT).
-
-  Yields:
-    Strings, each of which represents the text rendering one complete
-    pair of lines of the side-by-side diff, possibly including comments.
-    Each yielded string may consist of several <tr> elements.
-  """
-  rows =  _RenderDiffTableRows(request, old_lines, chunks, patch,
-                               colwidth, debug)
-  return _CleanupTableRowsGenerator(rows, context)
-
-
-def RenderDiff2TableRows(request, old_lines, old_patch, new_lines, new_patch,
-                         colwidth=100,
-                         debug=False,
-                         context=models.DEFAULT_CONTEXT):
-  """Render the HTML table rows for a side-by-side diff between two patches.
-
-  Args:
-    request: Django Request object.
-    old_lines: List of lines representing the patched file on the left.
-    old_patch: The models.Patch instance corresponding to old_lines.
-    new_lines: List of lines representing the patched file on the right.
-    new_patch: The models.Patch instance corresponding to new_lines.
-    colwidth: Optional column width (default 100).
-    debug: Optional debugging flag (default False).
-    context: Maximum number of visible context lines (default models.DEFAULT_CONTEXT).
-
-  Yields:
-    Strings, each of which represents the text rendering one complete
-    pair of lines of the side-by-side diff, possibly including comments.
-    Each yielded string may consist of several <tr> elements.
-  """
-  rows = _RenderDiff2TableRows(request, old_lines, old_patch,
-                               new_lines, new_patch, colwidth, debug)
-  return _CleanupTableRowsGenerator(rows, context)
-
-
-def _CleanupTableRowsGenerator(rows, context):
-  """Cleanup rows returned by _TableRowGenerator for output.
-
-  Args:
-    rows: List of tuples (tag, text)
-    context: Maximum number of visible context lines.
-
-  Yields:
-    Rows marked as 'equal' are possibly contracted using _ShortenBuffer().
-    Stops on rows marked as 'error'.
-  """
-  buffer = []
-  for tag, text in rows:
-    if tag == 'equal':
-      buffer.append(text)
-      continue
-    else:
-      for t in _ShortenBuffer(buffer, context):
-        yield t
-      buffer = []
-    yield text
-    if tag == 'error':
-      yield None
-      break
-  if buffer:
-    for t in _ShortenBuffer(buffer, context):
-      yield t
-
-
-def _ShortenBuffer(buffer, context):
-  """Render a possibly contracted series of HTML table rows.
-
-  Args:
-    buffer: a list of strings representing HTML table rows.
-    context: Maximum number of visible context lines.
-
-  Yields:
-    If the buffer has fewer than 3 times context items, yield all
-    the items.  Otherwise, yield the first context items, a single
-    table row representing the contraction, and the last context
-    items.
-  """
-  if len(buffer) < 3*context:
-    for t in buffer:
-      yield t
-  else:
-    last_id = None
-    for t in buffer[:context]:
-      m = re.match('^<tr( name="hook")? id="pair-(?P<rowcount>\d+)">', t)
-      if m:
-        last_id = int(m.groupdict().get("rowcount"))
-      yield t
-    skip = len(buffer) - 2*context
-    if skip <= 10:
-      expand_link = ('<a href="javascript:M_expandSkipped(%(before)d, '
-                     '%(after)d, \'b\', %(skip)d)">Show</a>')
-    else:
-      expand_link = ('<a href="javascript:M_expandSkipped(%(before)d, '
-                     '%(after)d, \'t\', %(skip)d)">Show 10 above</a> '
-                     '<a href="javascript:M_expandSkipped(%(before)d, '
-                     '%(after)d, \'b\', %(skip)d)">Show 10 below</a> ')
-    expand_link = expand_link % {'before': last_id+1,
-                                 'after': last_id+skip,
-                                 'skip': last_id}
-    yield ('<tr id="skip-%d"><td colspan="2" align="center" '
-           'style="background:lightblue">'
-           '(...skipping <span id="skipcount-%d">%d</span> matching lines...) '
-           '<span id="skiplinks-%d">%s</span>'
-           '</td></tr>\n' % (last_id, last_id, skip,
-                             last_id, expand_link))
-    for t in buffer[-context:]:
-      yield t
-
-
-def _RenderDiff2TableRows(request, old_lines, old_patch, new_lines, new_patch,
-                         colwidth, debug=False):
-  """Internal version of RenderDiff2TableRows().
-
-  Args:
-    The same as for RenderDiff2TableRows.
-
-  Yields:
-    Tuples (tag, row) where tag is an indication of the row type.
-  """
-  old_dict = {}
-  new_dict = {}
-  for patch, dct in [(old_patch, old_dict), (new_patch, new_dict)]:
-    # XXX GQL doesn't support OR yet...  Otherwise we'd be using that.
-    for comment in models.Comment.gql(
-        'WHERE patch = :1 AND left = FALSE ORDER BY date', patch):
-      if comment.draft and comment.author != request.user:
-        continue  # Only show your own drafts
-      comment.complete(patch)
-      lst = dct.setdefault(comment.lineno, [])
-      lst.append(comment)
-      library.prefetch_names([comment.author])
-  return _TableRowGenerator(old_patch, old_dict, len(old_lines)+1, 'new',
-                            new_patch, new_dict, len(new_lines)+1, 'new',
-                            _GenerateTriples(old_lines, new_lines),
-                            colwidth, debug)
-
-
-def _GenerateTriples(old_lines, new_lines):
-  """Helper for _RenderDiff2TableRows yielding input for _TableRowGenerator.
-
-  Args:
-    old_lines: List of lines representing the patched file on the left.
-    new_lines: List of lines representing the patched file on the right.
-
-  Yields:
-    Tuples (tag, old_slice, new_slice) where tag is a tag as returned by
-    difflib.SequenceMatchser.get_opcodes(), and old_slice and new_slice
-    are lists of lines taken from old_lines and new_lines.
-  """
-  sm = difflib.SequenceMatcher(None, old_lines, new_lines)
-  for tag, i1, i2, j1, j2 in sm.get_opcodes():
-    yield tag, old_lines[i1:i2], new_lines[j1:j2]
-
-
-def _GetComments(request):
-  """Helper that returns comments for a patch.
-
-  Args:
-    request: Django Request object.
-
-  Returns:
-    A 2-tuple of (old, new) where old/new are dictionaries that holds comments
-      for that file, mapping from line number to a Comment entity.
-  """
-  old_dict = {}
-  new_dict = {}
-  # XXX GQL doesn't support OR yet...  Otherwise we'd be using
-  # .gql('WHERE patch = :1 AND (draft = FALSE OR author = :2) ORDER BY data',
-  #      patch, request.user)
-  for comment in models.Comment.gql('WHERE patch = :1 ORDER BY date',
-                                    request.patch):
-    if comment.draft and comment.author != request.user:
-      continue  # Only show your own drafts
-    comment.complete(request.patch)
-    if comment.left:
-      dct = old_dict
-    else:
-      dct = new_dict
-    dct.setdefault(comment.lineno, []).append(comment)
-    library.prefetch_names([comment.author])
-  return old_dict, new_dict
-
-
-def _RenderDiffTableRows(request, old_lines, chunks, patch,
-                         colwidth, debug=False):
-  """Internal version of RenderDiffTableRows().
-
-  Args:
-    The same as for RenderDiffTableRows.
-
-  Yields:
-    Tuples (tag, row) where tag is an indication of the row type.
-  """
-  old_dict = {}
-  new_dict = {}
-  if patch:
-    old_dict, new_dict = _GetComments(request)
-  old_max, new_max = _ComputeLineCounts(old_lines, chunks)
-  return _TableRowGenerator(patch, old_dict, old_max, 'old',
-                            patch, new_dict, new_max, 'new',
-                            patching.PatchChunks(old_lines, chunks),
-                            colwidth, debug)
-
-
-def _TableRowGenerator(old_patch, old_dict, old_max, old_snapshot,
-                       new_patch, new_dict, new_max, new_snapshot,
-                       triple_iterator, colwidth, debug=False,
-                       mark_tabs=True):
-  """Helper function to render side-by-side table rows.
-
-  Args:
-    old_patch: First models.Patch instance.
-    old_dict: Dictionary with line numbers as keys and comments as values (left)
-    old_max: Line count of the patch on the left.
-    old_snapshot: A tag used in the comments form.
-    new_patch: Second models.Patch instance.
-    new_dict: Same as old_dict, but for the right side.
-    new_max: Line count of the patch on the right.
-    new_snapshot: A tag used in the comments form.
-    triple_iterator: Iterator that yields (tag, old, new) triples.
-    colwidth: column width (not optional)
-    debug: Optional debugging flag (default False).
-    mark_tabs: Optional flag to show tabs visually (default True).
-
-  Yields:
-    Tuples (tag, row) where tag is an indication of the row type and
-    row is an HTML fragment representing one or more <td> elements.
-  """
-  diff_params = intra_region_diff.GetDiffParams(dbg=debug)
-  ndigits = 1 + max(len(str(old_max)), len(str(new_max)))
-  indent = 1 + ndigits
-  old_offset = new_offset = 0
-  row_count = 0
-
-  # Render a row with a message if a side is empty or both sides are equal.
-  if old_patch == new_patch and (old_max == 0 or new_max == 0):
-    if old_max == 0:
-      msg_old = '(Empty)'
-    else:
-      msg_old = ''
-    if new_max == 0:
-      msg_new = '(Empty)'
-    else:
-      msg_new = ''
-    yield '', ('<tr><td class="info">%s</td>'
-               '<td class="info">%s</td></tr>' % (msg_old, msg_new))
-  # TODO(sop)
-  #elif old_patch == new_patch:
-  #  old_patch.patch_hash == new_patch.patch_hash
-  #  yield '', ('<tr><td class="info" colspan="2">'
-  #             '(Both sides are equal)</td></tr>')
-
-  for tag, old, new in triple_iterator:
-    if tag.startswith('error'):
-      yield 'error', '<tr><td><h3>%s</h3></td></tr>\n' % cgi.escape(tag)
-      return
-    old1 = old_offset
-    old_offset = old2 = old1 + len(old)
-    new1 = new_offset
-    new_offset = new2 = new1 + len(new)
-    old_buff = []
-    new_buff = []
-    frag_list = []
-    do_ir_diff = tag == 'replace' and intra_region_diff.CanDoIRDiff(old, new)
-
-    for i in xrange(max(len(old), len(new))):
-      row_count += 1
-      old_lineno = old1 + i + 1
-      new_lineno = new1 + i + 1
-      old_valid = old1+i < old2
-      new_valid = new1+i < new2
-
-      # Start rendering the first row
-      frags = []
-      if i == 0 and tag != 'equal':
-        # Mark the first row of each non-equal chunk as a 'hook'.
-        frags.append('<tr name="hook"')
-      else:
-        frags.append('<tr')
-      frags.append(' id="pair-%d">' % row_count)
-
-      old_intra_diff = ''
-      new_intra_diff = ''
-      if old_valid:
-        old_intra_diff = old[i]
-      if new_valid:
-        new_intra_diff = new[i]
-
-      frag_list.append(frags)
-      if do_ir_diff:
-        # Don't render yet. Keep saving state necessary to render the whole
-        # region until we have encountered all the lines in the region.
-        old_buff.append([old_valid, old_lineno, old_intra_diff])
-        new_buff.append([new_valid, new_lineno, new_intra_diff])
-      else:
-        # We render line by line as usual if do_ir_diff is false
-        old_intra_diff = intra_region_diff.Fold(
-          old_intra_diff, colwidth + indent, indent, indent,
-          mark_tabs=mark_tabs)
-        new_intra_diff = intra_region_diff.Fold(
-          new_intra_diff, colwidth + indent, indent, indent,
-          mark_tabs=mark_tabs)
-        old_buff_out = [[old_valid, old_lineno,
-                         (old_intra_diff, True, None)]]
-        new_buff_out = [[new_valid, new_lineno,
-                         (new_intra_diff, True, None)]]
-        for tg, frag in _RenderDiffInternal(old_buff_out, new_buff_out,
-                                            ndigits, tag, frag_list,
-                                            do_ir_diff,
-                                            old_dict, new_dict,
-                                            old_patch, new_patch,
-                                            old_snapshot, new_snapshot,
-                                            colwidth, debug):
-          yield tg, frag
-        frag_list = []
-
-    if do_ir_diff:
-      # So this was a replace block which means that the whole region still
-      # needs to be rendered.
-      old_lines = [b[2] for b in old_buff]
-      new_lines = [b[2] for b in new_buff]
-      ret = intra_region_diff.IntraRegionDiff(old_lines, new_lines,
-                                              diff_params)
-      old_chunks, new_chunks, ratio = ret
-      old_tag = 'old'
-      new_tag = 'new'
-
-      old_diff_out = intra_region_diff.RenderIntraRegionDiff(
-        old_lines, old_chunks, old_tag, ratio,
-        limit=colwidth, indent=indent,
-        dbg=debug)
-      new_diff_out = intra_region_diff.RenderIntraRegionDiff(
-        new_lines, new_chunks, new_tag, ratio,
-        limit=colwidth, indent=indent,
-        dbg=debug)
-      for (i, b) in enumerate(old_buff):
-        b[2] = old_diff_out[i]
-      for (i, b) in enumerate(new_buff):
-        b[2] = new_diff_out[i]
-
-      for tg, frag in _RenderDiffInternal(old_buff, new_buff,
-                                          ndigits, tag, frag_list,
-                                          do_ir_diff,
-                                          old_dict, new_dict,
-                                          old_patch, new_patch,
-                                          old_snapshot, new_snapshot,
-                                          colwidth, debug):
-        yield tg, frag
-      old_buff = []
-      new_buff = []
-
-
-def _CleanupTableRows(rows):
-  """Cleanup rows returned by _TableRowGenerator.
-
-  Args:
-    rows: Sequence of (tag, text) tuples.
-
-  Yields:
-    Rows marked as 'equal' are possibly contracted using _ShortenBuffer().
-    Stops on rows marked as 'error'.
-  """
-  buffer = []
-  for tag, text in rows:
-    if tag == 'equal':
-      buffer.append(text)
-      continue
-    else:
-      for t in _ShortenBuffer(buffer):
-        yield t
-      buffer = []
-    yield text
-    if tag == 'error':
-      yield None
-      break
-  if buffer:
-    for t in _ShortenBuffer(buffer):
-      yield t
-
-
-def _RenderDiffInternal(old_buff, new_buff, ndigits, tag, frag_list,
-                        do_ir_diff, old_dict, new_dict,
-                        old_patch, new_patch,
-                        old_snapshot, new_snapshot,
-                        colwidth, debug):
-  """Helper for _TableRowGenerator()."""
-  obegin = (intra_region_diff.BEGIN_TAG %
-            intra_region_diff.COLOR_SCHEME['old']['match'])
-  nbegin = (intra_region_diff.BEGIN_TAG %
-            intra_region_diff.COLOR_SCHEME['new']['match'])
-  oend = intra_region_diff.END_TAG
-  nend = oend
-  user = users.get_current_user()
-
-  for i in xrange(len(old_buff)):
-    tg = tag
-    old_valid, old_lineno, old_out = old_buff[i]
-    new_valid, new_lineno, new_out = new_buff[i]
-    old_intra_diff, old_has_newline, old_debug_info = old_out
-    new_intra_diff, new_has_newline, new_debug_info = new_out
-
-    frags = frag_list[i]
-    # Render left text column
-    frags.append(_RenderDiffColumn(old_patch, old_valid, tag, ndigits,
-                                   old_lineno, obegin, oend, old_intra_diff,
-                                   do_ir_diff, old_has_newline, 'old'))
-
-    # Render right text column
-    frags.append(_RenderDiffColumn(new_patch, new_valid, tag, ndigits,
-                                   new_lineno, nbegin, nend, new_intra_diff,
-                                   do_ir_diff, new_has_newline, 'new'))
-
-    # End rendering the first row
-    frags.append('</tr>\n')
-
-    if debug:
-      frags.append('<tr>')
-      if old_debug_info:
-        frags.append('<td class="debug-info">%s</td>' %
-                     old_debug_info.replace('\n', '<br>'))
-      else:
-        frags.append('<td></td>')
-      if new_debug_info:
-        frags.append('<td class="debug-info">%s</td>' %
-                     new_debug_info.replace('\n', '<br>'))
-      else:
-        frags.append('<td></td>')
-      frags.append('</tr>\n')
-
-    if old_patch or new_patch:
-      # Start rendering the second row
-      if ((old_valid and old_lineno in old_dict) or
-          (new_valid and new_lineno in new_dict)):
-        tg += '_comment'
-        frags.append('<tr class="inline-comments" name="hook">')
-      else:
-        frags.append('<tr class="inline-comments">')
-
-      # Render left inline comments
-      frags.append(_RenderInlineComments(old_valid, old_lineno, old_dict,
-                                         user, old_patch, old_snapshot, 'old'))
-
-      # Render right inline comments
-      frags.append(_RenderInlineComments(new_valid, new_lineno, new_dict,
-                                         user, new_patch, new_snapshot, 'new'))
-
-      # End rendering the second row
-      frags.append('</tr>\n')
-
-    # Yield the combined fragments
-    yield tg, ''.join(frags)
-
-
-def _RenderDiffColumn(patch, line_valid, tag, ndigits, lineno, begin, end,
-                      intra_diff, do_ir_diff, has_newline, prefix):
-  """Helper function for _RenderDiffInternal().
-
-  Returns:
-    A rendered column.
-  """
-  if line_valid:
-    cls_attr = '%s%s' % (prefix, tag)
-    if tag == 'equal':
-      lno = '%*d' % (ndigits, lineno)
-    else:
-      lno = _MarkupNumber(ndigits, lineno, 'u')
-    if tag == 'replace':
-      col_content = ('%s%s %s%s' % (begin, lno, end, intra_diff))
-      # If IR diff has been turned off or there is no matching new line at
-      # the end then switch to dark background CSS style.
-      if not do_ir_diff or not has_newline:
-        cls_attr = cls_attr + '1'
-    else:
-      col_content = '%s %s' % (lno, intra_diff)
-    return '<td class="%s" id="%scode%d">%s</td>' % (cls_attr, prefix,
-                                                     lineno, col_content)
-  else:
-    return '<td class="%sblank"></td>' % prefix
-
-
-def _RenderInlineComments(line_valid, lineno, data, user,
-                          patch, snapshot, prefix):
-  """Helper function for _RenderDiffInternal().
-
-  Returns:
-    Rendered comments.
-  """
-  comments = []
-  if line_valid:
-    comments.append('<td id="%s-line-%s">' % (prefix, lineno))
-    if lineno in data:
-      comments.append(
-        _ExpandTemplate('inline_comment.html',
-                        inline_draft_url='/inline_draft',
-                        user=user,
-                        patch=patch,
-                        patchset=patch.patchset,
-                        change=patch.patchset.change,
-                        snapshot=snapshot,
-                        side='a' if prefix == 'old' else 'b',
-                        comments=data[lineno],
-                        lineno=lineno,
-                        ))
-    comments.append('</td>')
-  else:
-    comments.append('<td></td>')
-  return ''.join(comments)
-
-
-def RenderUnifiedTableRows(request, parsed_lines):
-  """Render the HTML table rows for a unified diff for a patch.
-
-  Args:
-    request: Django Request object.
-    parsed_lines: List of tuples for each line that contain the line number,
-      if they exist, for the old and new file.
-
-  Returns:
-    A list of html table rows.
-  """
-  old_dict, new_dict = _GetComments(request)
-
-  rows = []
-  for old_line_no, new_line_no, line_text in parsed_lines:
-    row1_id = row2_id = ''
-    # When a line is unchanged (i.e. both old_line_no and new_line_no aren't 0)
-    # pick the old column line numbers when adding a comment.
-    if old_line_no:
-      row1_id = 'id="oldcode%d"' % old_line_no
-      row2_id = 'id="old-line-%d"' % old_line_no
-    elif new_line_no:
-      row1_id = 'id="newcode%d"' % new_line_no
-      row2_id = 'id="new-line-%d"' % new_line_no
-    rows.append('<tr><td class="udiff" %s>%s</td></tr>' %
-                (row1_id, RenderLineText(line_text)))
-
-    frags = []
-    if old_line_no in old_dict or new_line_no in new_dict:
-      frags.append('<tr class="inline-comments" name="hook">')
-      if old_line_no in old_dict:
-        dct = old_dict
-        line_no = old_line_no
-        snapshot = 'old'
-      else:
-        dct = new_dict
-        line_no = new_line_no
-        snapshot = 'new'
-      frags.append(_RenderInlineComments(True, line_no, dct, request.user,
-                   request.patch, snapshot, snapshot))
-    else:
-      frags.append('<tr class="inline-comments">')
-      frags.append('<td ' + row2_id +'></td>')
-    frags.append('</tr>')
-    rows.append(''.join(frags))
-  return rows
-
-def RenderLineText(line_text):
-  r = intra_region_diff.TAB_TAG + '\t'
-  return cgi.escape(line_text).replace('\t', r)
-
-def _ComputeLineCounts(old_lines, chunks):
-  """Compute the length of the old and new sides of a diff.
-
-  Args:
-    old_lines: List of lines representing the original file.
-    chunks: List of chunks as returned by patching.ParsePatchToChunks().
-
-  Returns:
-    A tuple (old_len, new_len) representing len(old_lines) and
-    len(new_lines), where new_lines is the list representing the
-    result of applying the patch chunks to old_lines, however, without
-    actually computing new_lines.
-  """
-  old_len = len(old_lines)
-  new_len = old_len
-  if chunks:
-    (old_a, old_b), (new_a, new_b), old_lines, new_lines = chunks[-1]
-    new_len += new_b - old_b
-  return old_len, new_len
-
-
-def _MarkupNumber(ndigits, number, tag):
-  """Format a number in HTML in a given width with extra markup.
-
-  Args:
-    ndigits: the total width available for formatting
-    number: the number to be formatted
-    tag: HTML tag name, e.g. 'u'
-
-  Returns:
-    An HTML string that displays as ndigits wide, with the
-    number right-aligned and surrounded by an HTML tag; for example,
-    _MarkupNumber(42, 4, 'u') returns '  <u>42</u>'.
-  """
-  formatted_number = str(number)
-  space_prefix = ' ' * (ndigits - len(formatted_number))
-  return '%s<%s>%s</%s>' % (space_prefix, tag, formatted_number, tag)
-
-
-def _ExpandTemplate(name, **params):
-  """Wrapper around django.template.loader.render_to_string().
-
-  For convenience, this takes keyword arguments instead of a dict.
-  """
-  return loader.render_to_string(name, params)
diff --git a/webapp/codereview/fields.py b/webapp/codereview/fields.py
deleted file mode 100644
index d7eebb1..0000000
--- a/webapp/codereview/fields.py
+++ /dev/null
@@ -1,383 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Custom fields and widgets for Gerrit.
-
-This requires Django 0.97.pre.
-"""
-
-
-### Imports ###
-
-import string
-import logging
-
-import django.forms.widgets
-import django.forms.fields
-from django import forms
-from django.utils import encoding
-from django.utils import safestring
-from django.forms import util
-from django.utils import html
-from django.utils import simplejson
-from google.appengine.ext import db
-
-import models
-
-def person_to_dict(v):
-  entry = {}
-  if isinstance(v, models.Account):
-    entry["type"] = "user"
-    entry["key"] = "user/" + v.email
-    entry["email"] = v.email
-    entry["real_name"] = v.real_name
-    entry["sort_key"] = "2/" + unicode(v.user)
-  elif isinstance(v, models.AccountGroup):
-    entry["type"] = "group"
-    entry["key"] = "group/" + str(v.key())
-    entry["name"] = v.name
-    entry["sort_key"] = "1/" + unicode(v.name)
-  else:
-    raise AssertionError("bad value: " + str(v) + " type: " + str(type(v)))
-  return entry
-
-def people_to_dicts(value, sorted):
-  data = []
-  for v in value:
-    if isinstance(v, list):
-      data.extend(people_to_dicts(v, False))
-    elif v:
-      data.append(person_to_dict(v))
-  if sorted:
-    data.sort(lambda a,b: cmp(a["sort_key"], b["sort_key"]))
-  return data
-
-
-### User/Group Field ###
-
-class UserGroupWidget(django.forms.widgets.Widget):
-  """The widget that is used with UserGroupField."""
-  def __init__(self, allow_users=True, allow_groups=True, sorted=True,
-                attrs=None):
-    self.attrs = {'cols': '40', 'rows': '10'}
-    self.allow_users = allow_users
-    self.allow_groups = allow_groups
-    self.read_only = None
-    self.sorted = sorted
-    if attrs:
-      self.attrs.update(attrs)
-
-  def render(self, name, value, attrs=None):
-    if value is None:
-      value = []
-    read_only = self.read_only
-    if read_only is None:
-      read_only = []
-    return safestring.mark_safe(
-        u"""
-        <div id="%(name)s_mom"></div>
-        <script>
-          UserGroupField_insertField(document.getElementById('%(name)s_mom'),
-              '%(name)s', %(allow_users)s, %(allow_groups)s, %(initial)s,
-              %(read_only)s);
-        </script>
-        """ % { "name":name,
-                "initial":self._render_initial_js(value),
-                "read_only":self._render_initial_js(read_only),
-                "allow_users": ("true" if self.allow_users else "false"),
-                "allow_groups": ("true" if self.allow_groups else "false"),
-              })
-
-  def _render_initial_js(self, value):
-    data = people_to_dicts(value, self.sorted)
-    return "[%s]" % ','.join(map(simplejson.dumps, data))
-
-  def value_from_datadict(self, data, files, name):
-    return data.getlist(name + "_keys")
-
-
-class UserGroupField(django.forms.fields.Field):
-  """A Field that picks a list of users and groups."""
-
-  def __init__(self, *args, **kwargs):
-    self.allow_users = kwargs.pop("allow_users", True)
-    self.allow_groups = kwargs.pop("allow_groups", True)
-    self.sorted = kwargs.pop("sorted", True)
-    self.widget = UserGroupWidget(self.allow_users, self.allow_groups,
-        self.sorted)
-    super(UserGroupField, self).__init__(*args, **kwargs)
-
-  def clean(self, data, initial=None):
-    def get_correct_model(key):
-      (type,id) = key.split("/", 1)
-      if id:
-        try:
-          if type == "user":
-            return models.Account.get_account_for_email(id)
-          elif type == "group":
-            return models.AccountGroup.get(id)
-        except db.BadKeyError, v:
-          pass
-      raise forms.ValidationError("invalid key")
-    keys = data
-    result = [get_correct_model(key) for key in keys]
-    super(UserGroupField, self).clean(initial or result)
-    return result
-
-  @classmethod
-  def get_users(cls, cleaned):
-    """Returns the users, given the cleaned data from the form.
-
-    e.g.
-    model_obj.usrs = fields.UserGroupField.get_users(form.cleaned_data['field'])
-    """
-    return [x.user for x in cleaned if isinstance(x, models.Account)]
-
-  @classmethod
-  def get_groups(cls, cleaned):
-    """Returns the groups, given the cleaned data from the form.
-
-    e.g.
-    groups = fields.UserGroupField.get_users(form.cleaned_data['field'])
-    """
-    return [x for x in cleaned if isinstance(x, models.AccountGroup)]
-
-  @classmethod
-  def get_group_keys(cls, cleaned):
-    """Returns keys for the groups, given the cleaned data from the form.
-
-    e.g.
-    groups = fields.UserGroupField.get_users(form.cleaned_data['field'])
-    """
-    return [x.key() for x in cleaned if isinstance(x, models.AccountGroup)]
-
-  @classmethod
-  def get_user_and_group_keys(cls, cleaned):
-    """Returns the users and the groups for the cleaned data from the form.
-
-    e.g.
-    (model_obj.users,model_obj.groups
-        ) = fields.UserGroupField.get_user_and_group_keys(
-        form.cleaned_data['field'])
-    """
-    return (UserGroupField.get_users(cleaned),
-            UserGroupField.get_group_keys(cleaned))
-
-  @classmethod
-  def field_value_for_keys(cls, users=[], groups=[]):
-    """Return the value suitable for this field from a list keys.
-
-    e.g.
-    form_initial_values['field'] = fields.UserGroupField.field_value_for_keys(
-              users, group_keys)
-    """
-    return ([models.AccountGroup.get(k) for k in groups]
-          + [models.Account.get_account_for_user(u) for u in users])
-  
-
-### Approvers Field ###
-
-class ApproversWidget(django.forms.widgets.Widget):
-  """The widget for ApproversField"""
-
-  def __init__(self, allow_users=True, allow_groups=True, attrs=None,
-        approvers=None, verifiers=None, submitters=None):
-    self.attrs = {'cols': '40', 'rows': '10'}
-    if attrs:
-      self.attrs.update(attrs)
-    self.approvers = approvers or UserGroupWidget();
-    self.verifiers = verifiers or UserGroupWidget();
-    self.submitters = submitters or UserGroupWidget();
-
-  def render(self, name, value, attrs=None):
-    if value is None:
-      value = []
-    styles = self.attrs.get("styles", {})
-    return safestring.mark_safe(
-        u"""
-        <div id="%(name)s_mom"></div>
-        <script>
-          ApproversField_insertField('%(name)s_mom', '%(name)s', %(initial)s,
-              %(styles)s);
-        </script>
-        """ % {
-          "name": name,
-          "initial": self._render_initial_js(name, value),
-          "styles": simplejson.dumps(styles),
-        })
-
-
-  def _render_initial_js(self, name, value):
-    data = []
-    index = 0
-    for v in value:
-      # BEGIN DEBUGGING
-      key = "initial_%d" % index
-      files = v["files"]
-      bad_files = v.get("bad_files", [])
-      approvers = v["approvers"]
-      verifiers = v["verifiers"]
-      submitters = v["submitters"]
-      # END DEBUGGING
-      entry = {}
-      entry["key"] = "initial_%d" % index
-      entry["files"] = encoding.force_unicode("\n".join(files))
-      entry["bad_files"] = map(encoding.force_unicode, bad_files)
-      entry["approvers"] = people_to_dicts(approvers, True)
-      entry["verifiers"] = people_to_dicts(verifiers, True)
-      entry["submitters"] = people_to_dicts(submitters, True)
-      data.append(entry)
-      index = index + 1
-    rows = []
-    for entry in data:
-      rows.append(simplejson.dumps(entry))
-    return "[%s]" % ','.join(rows)
-    
-
-  def value_from_datadict(self, data, files, name):
-    result = []
-    keys = data.getlist(name + "_keys")
-    for key in keys:
-      field_key = "%s_%s" % (name, key)
-      files = filter(string.strip, data.get(field_key + "_files").splitlines())
-      bad_files = []
-      for f in files:
-        if not models.ApprovalRight.validate_file(f):
-          err = True
-          bad_files.append(f)
-      approvers = self.approvers.value_from_datadict(data, files,
-          field_key + "_approvers")
-      verifiers = self.verifiers.value_from_datadict(data, files,
-          field_key + "_verifiers")
-      submitters = self.submitters.value_from_datadict(data, files,
-          field_key + "_submitters")
-      result.append({
-              "key": key,
-              "files": files,
-              "bad_files": bad_files,
-              "approvers": approvers,
-              "verifiers": verifiers,
-              "submitters": submitters,
-          })
-    return result
-
-
-class ApproversField(django.forms.fields.Field):
-  """A Field to pick which users/groups can edit which field"""
-  approvers = UserGroupField();
-  verifiers = UserGroupField();
-  submitters = UserGroupField();
-  widget = ApproversWidget(
-      approvers=approvers.widget,
-      verifiers=verifiers.widget,
-      submitters=submitters.widget,
-      attrs={"styles": {
-        "approval": "approval"
-      }})
-
-  def __init__(self, *args, **kwargs):
-    super(ApproversField, self).__init__(*args, **kwargs)
-
-  def clean(self, data, initial=None):
-    result = []
-    err = False
-    for d in data:
-      files = d["files"]
-      if len(d["bad_files"]) > 0:
-        err = True
-      approvers = self.approvers.clean(d["approvers"])
-      verifiers = self.verifiers.clean(d["verifiers"])
-      submitters = self.submitters.clean(d["submitters"])
-      result.append({
-          "files": files,
-          "approvers": approvers,
-          "verifiers": verifiers,
-          "submitters": submitters,
-          })
-    super(ApproversField, self).clean(initial or result)
-    if err:
-        raise forms.ValidationError("invalid files")
-    return result
-
-### Project field ###
-
-class ProjectSelectWidget(django.forms.widgets.Widget):
-  """A widget that lets a user pick a set of projects."""
-  def __init__(self, attrs=None):
-    super(ProjectSelectWidget, self).__init__(attrs)
-    if attrs:
-      self.attrs.update(attrs)
-
-  def render(self, name, value, attrs=None):
-    if value is None:
-      value = []
-    project_list = [{'name': p.name, 'key': str(p.key())}
-                    for p in models.Project.get_all_projects()]
-    return safestring.mark_safe(
-        u"""
-        <div id="%(name)s_mom"></div>
-        <script>
-          ProjectField_insertField(document.getElementById('%(name)s_mom'),
-              '%(name)s', %(project_list)s, %(initial)s);
-        </script>
-        """ % { "name": name,
-                "project_list": self._render_js_list(project_list),
-                "initial": self._render_js_list([str(v) for v in value]),
-              })
-
-  def _render_js_list(self, value):
-    return "[%s]" % ','.join(map(simplejson.dumps, value))
-
-  def value_from_datadict(self, data, files, name):
-    return set([v.strip()
-                for v in data.getlist(name)
-                if len(v.strip()) > 0
-                   and v.strip() not in ('--', '--==', 'null')])
-
-class ProjectSelectField(django.forms.fields.Field):
-  """A Field that lets a user pick a set of projects."""
-
-  def __init__(self, *args, **kwargs):
-    self.widget = ProjectSelectWidget()
-    super(ProjectSelectField, self).__init__(*args, **kwargs)
-
-  def clean(self, data, initial=None):
-    objects = models.Project.get(data)
-    result = [o.key() for o in objects if o]
-    super(ProjectSelectField, self).clean(initial or result)
-    return result
-
-### Read only text widget ###
-
-class ReadOnlyTextWidget(django.forms.widgets.Widget):
-  """Just some text"""
-  def __init__(self, attrs=None):
-    self.attrs = {}
-    if attrs:
-      self.attrs.update(attrs)
-
-  def render(self, name, value, attrs=None):
-    if value is None:
-      value = ''
-    return safestring.mark_safe(
-        "%(v)s<input type='hidden' name='%(n)s' value='%(v)s' />" % {
-        'n': name,
-        'v': html.escape(value),
-      })
-
-  def value_from_datadict(self, data, files, name):
-    return data[name]
-
-
-
diff --git a/webapp/codereview/git_models.py b/webapp/codereview/git_models.py
deleted file mode 100644
index c209b00..0000000
--- a/webapp/codereview/git_models.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Git specific data model (schema) for Gerrit."""
-
-# Python imports
-import hashlib
-import logging
-import re
-
-# AppEngine imports
-from google.appengine.ext import db
-from google.appengine.api import users
-
-# Gerrit imports
-from models import gql
-import models
-import memcache
-
-### Exceptions ###
-
-class InvalidBundleId(Exception):
-  """Bundle does not exist in data store."""
-
-class InvalidBundleState(Exception):
-  """Bundle has different state than expected."""
-
-
-### Bundles ###
-
-class ReceivedBundleSegment(models.BackedUpModel):
-  """Binary segment of a submitted bundle."""
-
-  # parent == ReceivedBundle
-  segment_id = db.IntegerProperty(required=True)  # == key
-  bundle_data = db.BlobProperty()
-
-
-class ReceivedBundle(models.BackedUpModel):
-  """A Git bundle submitted for review."""
-
-  _NewIsEmpty = memcache.Key("ReceivedBundle.NewIsEmpty")
-
-  STATE_UPLOADING = "UPLOADING"
-  STATE_NEW = "NEW"
-  STATE_UNPACKING = "UNPACKING"
-  STATE_UNPACKED = "UNPACKED"
-  STATE_INVALID = "INVALID"
-  STATE_SUSPENDED = "SUSPENDED"
-
-  state = db.StringProperty(required=True, default=STATE_UPLOADING,
-                            choices=(STATE_UPLOADING,
-                                     STATE_NEW,
-                                     STATE_UNPACKING,
-                                     STATE_UNPACKED,
-                                     STATE_INVALID,
-                                     STATE_SUSPENDED))
-  invalid_details = db.TextProperty()
-
-  # Where does this bundle merge to?
-  dest_project = db.ReferenceProperty(models.Project, required=True)
-  dest_branch = db.ReferenceProperty(models.Branch, required=True)
-  replaces = db.StringListProperty()
-
-  # Who submitted this bundle, and when.
-  owner = db.UserProperty(required=True)
-  created = db.DateTimeProperty(required=True, auto_now_add=True)
-  modified = db.DateTimeProperty(required=True, auto_now=True)
-
-  # Reviewers, for when this is turned into a Change
-  reviewers = db.ListProperty(users.User)
-  cc = db.ListProperty(db.Email)
-
-  # How much bundle is there?
-  n_segments = db.IntegerProperty(required=True, default=0)
-  contained_objects = db.StringListProperty()
-
-  @classmethod
-  def lock_next_new(cls):
-    if ReceivedBundle._NewIsEmpty.get() == 1:
-      return None
-
-    try:
-      rb = cls._lock_next_new_imp()
-    except db.Timeout:
-      return None
-    except db.TransactionFailedError:
-      return None
-
-    if rb is None:
-      ReceivedBundle._NewIsEmpty.set(1)
-    return rb
-
-  def ready(self):
-      ReceivedBundle._NewIsEmpty.clear()
-
-  @classmethod
-  def _lock_next_new_imp(cls):
-    for attempt in xrange(5):
-      ro_rb = gql(cls, "WHERE state = :1 ORDER BY created",
-                  ReceivedBundle.STATE_NEW).get()
-      if ro_rb is None:
-        return None
-
-      def trans(key):
-        rb = db.get(key)
-        if rb.state == ReceivedBundle.STATE_NEW:
-          rb.state = ReceivedBundle.STATE_UNPACKING
-          rb.put()
-          return True
-        return False
-      if db.run_in_transaction(trans, ro_rb.key()):
-        return ro_rb
-    return None
-
-  @classmethod
-  def update_state(cls, keystr, old_state, new_state, err_msg):
-    key = db.Key(keystr)
-    if key.kind() != cls.__name__:
-        raise InvalidBundleId, keystr
-    def trans():
-      rb = db.get(key)
-      if rb is None:
-        raise InvalidBundleId, keystr
-      if rb.state != old_state:
-        raise InvalidBundleState, "%s != %s" % (rb.state, old_state)
-      rb.state = new_state
-      rb.invalid_details = err_msg
-      rb.put()
-    db.run_in_transaction(trans)
-
-  def set_segment(self, segment_id, data):
-    key = 's%d' % segment_id
-    ReceivedBundleSegment.get_or_insert(
-      key,
-      segment_id = segment_id,
-      bundle_data = db.Blob(data),
-      parent = self)
-
-  def get_segment(self, segment_id):
-    key = 's%d' % segment_id
-    return ReceivedBundleSegment.get_by_key_name(key, parent = self)
diff --git a/webapp/codereview/internal/__init__.py b/webapp/codereview/internal/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/codereview/internal/__init__.py
+++ /dev/null
diff --git a/webapp/codereview/internal/admin_service.py b/webapp/codereview/internal/admin_service.py
deleted file mode 100644
index a331663..0000000
--- a/webapp/codereview/internal/admin_service.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import datetime
-import logging
-
-from google.appengine.ext import db
-
-from codereview import models
-from codereview.models import gql
-
-from admin_pb2 import AdminService
-from sync_project_pb2 import *
-from util import u, InternalAPI
-
-class AdminServiceImp(AdminService, InternalAPI):
-  def SyncProject(self, rpc_controller, req, done):
-    rsp = SyncProjectResponse()
-
-    proj = models.Project.get_project_for_name(req.project_name)
-    if proj is None:
-      proj = models.Project(name = req.project_name)
-      proj.put()
-
-    really_exists = set()
-    for bs in req.branch:
-      branch = models.Branch.get_or_insert_branch(proj, bs.branch_name)
-      really_exists.add(branch.name)
-
-    to_delete = []
-    for b in list(gql(models.Branch, 'WHERE project = :1', proj)):
-      if b.name not in really_exists:
-        to_delete += gql(models.BuildAttempt, 'WHERE branch = :1', b)
-
-    if to_delete:
-      db.delete(to_delete)
-
-    done(rsp)
diff --git a/webapp/codereview/internal/build_service.py b/webapp/codereview/internal/build_service.py
deleted file mode 100644
index 9f8bb0c..0000000
--- a/webapp/codereview/internal/build_service.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import datetime
-import logging
-
-from google.appengine.ext import db
-
-from codereview import models
-from codereview.models import gql
-
-from build_pb2 import BuildService
-from submit_build_pb2 import *
-from post_build_result_pb2 import *
-from prune_builds_pb2 import *
-from util import InternalAPI, automatic_retry
-
-MAX_PRUNE = 100
-
-class BuildServiceImp(BuildService, InternalAPI):
-  @automatic_retry
-  def SubmitBuild(self, rpc_controller, req, done):
-    rsp = SubmitBuildResponse()
-
-    branch = db.get(db.Key(req.branch_key))
-    new_changes = [db.Key(c) for c in req.new_change]
-
-    build = models.BuildAttempt(
-              branch = branch,
-              revision_id = req.revision_id,
-              new_changes = new_changes)
-    build.put()
-
-    rsp.build_id = build.key().id()
-    done(rsp)
-
-  @automatic_retry
-  def PostBuildResult(self, rpc_controller, req, done):
-    rsp = PostBuildResultResponse()
-
-    if req.build_status == PostBuildResultRequest.SUCCESS:
-      ok = True
-    elif req.build_status == PostBuildResultRequest.BUILD_FAILED:
-      ok = False
-    else:
-      raise InvalidValueError, req.build_status
-
-    build = models.BuildAttempt.get_by_id(req.build_id)
-    if not build.finished:
-      build.finished = True
-      build.success = ok
-      build.put()
-
-    branch = build.branch
-    project = branch.project
-
-    rsp.dest_project_name = str(project.name)
-    rsp.dest_project_key = str(project.key())
-
-    rsp.dest_branch_name = str(branch.name)
-    rsp.dest_branch_key = str(branch.key())
-
-    rsp.revision_id = str(build.revision_id)
-    for patchset_key in build.new_changes:
-      rsp.new_change.append(str(patchset_key))
-
-    done(rsp)
-
-  @automatic_retry
-  def PruneBuilds(self, rpc_controller, req, done):
-    rsp = PruneBuildsResponse()
-
-    build_list = []
-
-    for m in [_AgedSuccess,
-              _AgedFailed,
-              ]:
-      build_list.extend(m())
-      if len(build_list) >= MAX_PRUNE:
-        break
-
-    if build_list:
-      db.delete(build_list)
-      rsp.status_code = PruneBuildsResponse.BUILDS_PRUNED
-    else:
-      rsp.status_code = PruneBuildsResponse.QUEUE_EMPTY
-    done(rsp)
-
-def _AgedSuccess():
-  aged = datetime.datetime.now() - datetime.timedelta(days=2)
-  return gql(models.BuildAttempt,
-             'WHERE success = :1 AND started <= :2',
-             True, aged).fetch(MAX_PRUNE)
-
-def _AgedFailed():
-  aged = datetime.datetime.now() - datetime.timedelta(days=7)
-  return gql(models.BuildAttempt,
-             'WHERE success = :1 AND started <= :2',
-             False, aged).fetch(MAX_PRUNE)
diff --git a/webapp/codereview/internal/bundle_store_service.py b/webapp/codereview/internal/bundle_store_service.py
deleted file mode 100644
index 8affb1c..0000000
--- a/webapp/codereview/internal/bundle_store_service.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import datetime
-import logging
-
-from google.appengine.ext import db
-
-from codereview.models import gql
-from codereview.git_models import *
-
-from bundle_store_pb2 import BundleStoreService
-from next_received_bundle_pb2 import *
-from update_received_bundle_pb2 import *
-from prune_bundles_pb2 import *
-from util import InternalAPI, u, commit_to_revision, automatic_retry
-
-MAX_PRUNE = 10
-MAX_SEGS_PER_PRUNE = 10
-
-class BundleStoreServiceImp(BundleStoreService, InternalAPI):
-  @automatic_retry
-  def NextReceivedBundle(self, rpc_controller, req, done):
-    rsp = NextReceivedBundleResponse()
-
-    rb = ReceivedBundle.lock_next_new()
-    if rb:
-      rsp.status_code = NextReceivedBundleResponse.BUNDLE_AVAILABLE
-      rsp.bundle_key = str(rb.key())
-      rsp.dest_project = str(rb.dest_project.name)
-      rsp.dest_project_key = str(rb.dest_project.key())
-      rsp.dest_branch_key = str(rb.dest_branch.key())
-      rsp.owner = str(rb.owner.email())
-      rsp.n_segments = rb.n_segments
-
-      for line in rb.replaces:
-        id, commit = line.split(' ')
-        r = rsp.replace.add()
-        r.change_id = int(id)
-        r.object_id = commit
-
-      seg = rb.get_segment(1)
-      if seg:
-        rsp.bundle_data = seg.bundle_data
-    else:
-      rsp.status_code = NextReceivedBundleResponse.QUEUE_EMPTY
-    done(rsp)
-
-  @automatic_retry
-  def BundleSegment(self, rpc_controller, req, done):
-    rsp = BundleSegmentResponse()
-
-    rb = db.get(db.Key(req.bundle_key))
-    if not rb:
-      rsp.status_code = BundleSegmentResponse.UNKNOWN_BUNDLE
-      done(rsp)
-      return
-
-    seg = rb.get_segment(req.segment_id)
-    if seg:
-      rsp.status_code = BundleSegmentResponse.DATA
-      rsp.bundle_data = seg.bundle_data
-    else:
-      rsp.status_code = BundleSegmentResponse.UNKNOWN_SEGMENT
-    done(rsp)
-
-  @automatic_retry
-  def UpdateReceivedBundle(self, rpc_controller, req, done):
-    rsp = UpdateReceivedBundleResponse()
-
-    old_state = ReceivedBundle.STATE_UNPACKING
-    sc = req.status_code
-    if UpdateReceivedBundleRequest.UNPACKED_OK == sc:
-      new_state = ReceivedBundle.STATE_UNPACKED
-      err_msg = None
-    elif UpdateReceivedBundleRequest.SUSPEND_BUNDLE == sc:
-      new_state = ReceivedBundle.STATE_SUSPENDED
-      err_msg = req.error_details
-    else:
-      new_state = ReceivedBundle.STATE_INVALID
-      err_msg = req.error_details
-
-    try:
-      ReceivedBundle.update_state(req.bundle_key, old_state, new_state, err_msg)
-      rsp.status_code = UpdateReceivedBundleResponse.UPDATED
-    except InvalidBundleId, err:
-      logging.warn("Invalid bundle id %s: %s" % (req.bundle_key, err))
-      rsp.status_code = UpdateReceivedBundleResponse.INVALID_BUNDLE
-    except InvalidBundleState, err:
-      logging.warn("Invalid bundle state %s: %s" % (req.bundle_key, err))
-      rsp.status_code = UpdateReceivedBundleResponse.INVALID_STATE
-    done(rsp)
-
-  @automatic_retry
-  def PruneBundles(self, rpc_controller, req, done):
-    rsp = PruneBundlesResponse()
-
-    rb_list = []
-    to_rm = []
-
-    for m in [_AgedUploading,
-              _AgedInvalid,
-              _AgedSuspended,
-              _AgedUnpacking,
-              _AgedUnpacked,
-              ]:
-      rb_list.extend(m())
-      if len(rb_list) >= MAX_PRUNE:
-        break
-
-    for rb in rb_list:
-      segs = gql(ReceivedBundleSegment,
-                'WHERE ANCESTOR IS :1',
-                rb).fetch(MAX_SEGS_PER_PRUNE)
-      if len(segs) < MAX_SEGS_PER_PRUNE:
-        to_rm.append(rb)
-      to_rm.extend(segs)
-
-    if to_rm:
-      db.delete(to_rm)
-      rsp.status_code = PruneBundlesResponse.BUNDLES_PRUNED
-    else:
-      rsp.status_code = PruneBundlesResponse.QUEUE_EMPTY
-    done(rsp)
-
-def _AgedUploading():
-  aged = datetime.datetime.now() - datetime.timedelta(days=7)
-  return gql(ReceivedBundle,
-             'WHERE state = :1 AND created <= :2',
-             ReceivedBundle.STATE_UPLOADING, aged).fetch(MAX_PRUNE)
-
-def _AgedInvalid():
-  aged = datetime.datetime.now() - datetime.timedelta(days=2)
-  return gql(ReceivedBundle,
-             'WHERE state = :1 AND created <= :2',
-             ReceivedBundle.STATE_INVALID, aged).fetch(MAX_PRUNE)
-
-def _AgedSuspended():
-  aged = datetime.datetime.now() - datetime.timedelta(days=7)
-  return gql(ReceivedBundle,
-             'WHERE state = :1 AND created <= :2',
-             ReceivedBundle.STATE_SUSPENDED, aged).fetch(MAX_PRUNE)
-
-def _AgedUnpacking():
-  aged = datetime.datetime.now() - datetime.timedelta(days=7)
-  return gql(ReceivedBundle,
-             'WHERE state = :1 AND created <= :2',
-             ReceivedBundle.STATE_UNPACKING, aged).fetch(MAX_PRUNE)
-
-def _AgedUnpacked():
-  aged = datetime.datetime.now() - datetime.timedelta(hours=1)
-  return gql(ReceivedBundle,
-             'WHERE state = :1 AND created <= :2',
-             ReceivedBundle.STATE_UNPACKED, aged).fetch(MAX_PRUNE)
diff --git a/webapp/codereview/internal/change_service.py b/webapp/codereview/internal/change_service.py
deleted file mode 100644
index 18ffb42..0000000
--- a/webapp/codereview/internal/change_service.py
+++ /dev/null
@@ -1,265 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-
-from google.appengine.api import users
-from google.appengine.ext import db
-
-from codereview import git_models
-from codereview import library
-from codereview import models
-
-from change_pb2 import ChangeService
-from add_patchset_pb2 import *
-from complete_patchset_pb2 import *
-from upload_patchset_file_pb2 import *
-from submit_change_pb2 import *
-from util import *
-
-class ChangeServiceImp(ChangeService, InternalAPI):
-
-  @automatic_retry
-  def SubmitChange(self, rpc_controller, req, done):
-    rsp = SubmitChangeResponse()
-
-    user = users.User(req.owner)
-    branch = db.get(db.Key(req.dest_branch_key))
-    if not branch:
-      rsp.status_code = SubmitChangeResponse.UNKNOWN_BRANCH
-      done(rsp)
-
-    rev = commit_to_revision(branch.project, req.commit)
-    if rev.patchset:
-      rsp.status_code = SubmitChangeResponse.PATCHSET_EXISTS
-      done(rsp)
-
-    subject = u(req.commit.subject)[0:100]
-
-    reviewers = []
-    cc = []
-    if req.bundle_key:
-      rb = git_models.ReceivedBundle.get(req.bundle_key)
-      if rb:
-        reviewers = [x for x in rb.reviewers if x != user]
-        cc = [x for x in rb.cc if x != user]
-
-    def trans():
-      change = models.Change(
-                 subject = subject,
-                 description = u(req.commit.message),
-                 owner = user,
-                 dest_project = branch.project,
-                 dest_branch = branch,
-                 n_patchsets = 1)
-      if cc:
-        change.cc = cc;
-      change.put()
-      if reviewers:
-        (added_review_status, deleted_review_status, new_review_status) = \
-            library.update_reviewers(change, [], reviewers)
-        for rs in added_review_status:
-          rs.put()
-
-      patchset = models.PatchSet(
-                   change = change,
-                   owner = user,
-                   parent = change,
-                   revision = rev,
-                   id = 1)
-      patchset.put()
-      return (change, patchset)
-    change, patchset = db.run_in_transaction(trans)
-
-    library.send_new_change_emails(change, change.owner, reviewers, cc)
-
-    if rev.link_patchset(patchset):
-      rsp.status_code = SubmitChangeResponse.CREATED
-      rsp.change_id = change.key().id()
-      rsp.patchset_id = patchset.id
-      rsp.patchset_key = str(patchset.key())
-    else:
-      db.delete([change, patchset])
-      rsp.status_code = SubmitChangeResponse.PATCHSET_EXISTS
-    done(rsp)
-
-  @automatic_retry
-  def AddPatchSet(self, rpc_controller, req, done):
-    rsp = AddPatchSetResponse()
-
-    user = users.User(req.owner)
-    branch = db.get(db.Key(req.dest_branch_key))
-    if not branch:
-      rsp.status_code = AddPatchSetResponse.UNKNOWN_BRANCH
-      done(rsp)
-
-    rev = commit_to_revision(branch.project, req.commit)
-    if rev.patchset:
-      rsp.status_code = AddPatchSetResponse.PATCHSET_EXISTS
-      done(rsp)
-
-    subject = u(req.commit.subject)[0:100]
-
-    def trans():
-      change = models.Change.get_by_id(req.change_id)
-      if not change:
-        return None
-
-      change.subject = subject
-      change.description = u(req.commit.message)
-      change.n_patchsets += 1
-      id = change.n_patchsets
-      change.put()
-
-      patchset = models.PatchSet(
-                   change = change,
-                   owner = user,
-                   parent = change,
-                   revision = rev,
-                   id = id)
-      patchset.put()
-      return patchset
-    patchset = db.run_in_transaction(trans)
-    if not patchset:
-      rsp.status_code = AddPatchSetResponse.UNKNOWN_CHANGE
-      done(rsp)
-
-    if rev.link_patchset(patchset):
-      rsp.status_code = AddPatchSetResponse.CREATED
-      rsp.patchset_id = patchset.id
-      rsp.patchset_key = str(patchset.key())
-    else:
-      db.delete(patchset)
-      rsp.status_code = AddPatchSetResponse.PATCHSET_EXISTS
-    done(rsp)
-
-  @automatic_retry
-  def UploadPatchsetFile(self, rpc_controller, req, done):
-    rsp = UploadPatchsetFileResponse()
-
-    patchset = db.get(db.Key(req.patchset_key))
-    if not patchset:
-      rsp.status_code = UploadPatchsetFileResponse.UNKNOWN_PATCHSET
-      done(rsp)
-      return
-
-    if patchset.complete or patchset.change.closed:
-      rsp.status_code = UploadPatchsetFileResponse.CLOSED
-      done(rsp)
-      return
-
-    if UploadPatchsetFileRequest.ADD == req.status:
-      status = 'A'
-    elif UploadPatchsetFileRequest.MODIFY == req.status:
-      status = 'M'
-    elif UploadPatchsetFileRequest.DELETE == req.status:
-      status = 'D'
-    else:
-      status = '?'
-
-    try:
-      if req.base_id:
-        old_data = models.DeltaContent.create_content(
-                     id = req.base_id,
-                     text_z = req.base_z)
-        new_data = models.DeltaContent.create_content(
-                     id = req.final_id,
-                     text_z = req.patch_z,
-                     base = old_data)
-        if new_data.text_z == req.patch_z:
-          diff_data = new_data
-        else:
-          diff_data = models.DeltaContent.create_patch(
-                        id = req.patch_id,
-                        text_z = req.patch_z)
-      else:
-        old_data = None
-        new_data = None
-        diff_data = models.DeltaContent.create_patch(
-                      id = req.patch_id,
-                      text_z = req.patch_z)
-    except models.DeltaPatchingException:
-      logging.error("Patch error on change %s, patch set %s, file %s"
-        % (patchset.change.key().id(),
-           str(patchset.id),
-           u(req.file_name))
-      )
-      rsp.status_code = UploadPatchsetFileResponse.PATCHING_ERROR
-      done(rsp)
-      return
-
-    file_name = u(req.file_name)
-    other_versions = []
-    other_patches = []
-
-    if patchset.id > 1:
-      for ps in models.gql(models.PatchSet,
-                           'WHERE change = :1'
-                           ' ORDER BY id',
-                           patchset.change).fetch(1000):
-        if ps.id == patchset.id:
-          continue
-
-        prior = models.Patch.get_patch_by_filename(ps, file_name)
-        if prior and not prior.patch_equals(diff_data):
-          other_versions.append('%d %d %s'
-                                % (ps.key().id(), ps.id, prior.id))
-          other_patches.append(prior)
-
-    patch = models.Patch.get_or_insert_patch(
-              patchset = patchset,
-              filename = file_name,
-              status = status,
-              multi_way_diff = req.multi_way_diff,
-              n_comments = 0,
-              old_data = old_data,
-              new_data = new_data,
-              diff_data = diff_data,
-              other_versions = other_versions)
-
-    my_ovstr = '%d %d %s' % (patchset.key().id(),
-                             patchset.id,
-                             patch.id)
-    def trans():
-      for prior in other_patches:
-        p = db.get(prior.key())
-        p.other_versions.append(my_ovstr)
-        p.put()
-    db.run_in_transaction(trans)
-
-    if old_data:
-      models.CachedDeltaContent.get(old_data.key())
-      models.CachedDeltaContent.get(new_data.key())
-      if diff_data != new_data:
-        models.CachedDeltaContent.get(diff_data.key())
-    else:
-      models.CachedDeltaContent.get(diff_data.key())
-
-    rsp.status_code = UploadPatchsetFileResponse.CREATED
-    done(rsp)
-
-  @automatic_retry
-  def CompletePatchset(serlf, rpc_controller, req, done):
-    rsp = CompletePatchsetResponse()
-
-    patchset = db.get(db.Key(req.patchset_key))
-    if not patchset.complete:
-      patchset.complete = True
-      patchset.put()
-
-      if len(req.compressed_filenames) > 0:
-        models.PatchSetFilenames.store_compressed(
-          patchset,
-          req.compressed_filenames)
-    done(rsp)
diff --git a/webapp/codereview/internal/merge_service.py b/webapp/codereview/internal/merge_service.py
deleted file mode 100644
index fba9f04..0000000
--- a/webapp/codereview/internal/merge_service.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-
-from google.appengine.ext import db
-
-from codereview import models
-from codereview.models import gql
-
-from merge_pb2 import MergeService
-from pending_merge_pb2 import *
-from post_merge_result_pb2 import *
-from post_branch_update_pb2 import *
-from util import InternalAPI, automatic_retry
-
-from codereview import email
-
-def _send_once(change, field):
-  """Mark the change's boolean field to True exactly once.
-
-     Used below to ensure we only attempt to email once
-     about something per submission attempt, even if the
-     queues get screwed up and a change goes through more
-     than once.
-  """
-  def trans(key):
-    c = db.get(key)
-    if getattr(c, field):
-      return False
-    else:
-      setattr(c, field, True)
-      c.put()
-      return True
-  return db.run_in_transaction(trans, change.key())
-
-
-def _send_clean_merge(http_request, change):
-  if _send_once(change, 'emailed_clean_merge'):
-    additional_to = []
-    settings = models.Settings.get_settings()
-    if settings.merge_log_email:
-      additional_to.append(settings.merge_log_email)
-
-    msg = email.send_change_message(http_request,
-                                    change,
-                                    "mails/clean_merge.txt",
-                                    None,
-                                    None,
-                                    additional_to=additional_to)
-    if msg:
-      msg.put()
-  
-def _send_missing_dependency(http_request, change):
-  if _send_once(change, 'emailed_missing_dependency'):
-    msg = email.send_change_message(http_request,
-                                    change,
-                                    "mails/missing_dependency.txt",
-                                    None,
-                                    None)
-    if msg:
-      msg.put()
-
-def _send_path_conflict(http_request, change):
-  if _send_once(change, 'emailed_path_conflict'):
-    msg = email.send_change_message(http_request,
-                                    change,
-                                    "mails/path_conflict.txt",
-                                    None,
-                                    None)
-    if msg:
-      msg.put()
-
-
-class InvalidBranchStatusError(Exception):
-  """The branch cannot be updated in this way at this time."""
-
-class MergeServiceImp(MergeService, InternalAPI):
-  @automatic_retry
-  def NextPendingMerge(self, rpc_controller, req, done):
-
-    patchsets = []
-    while not patchsets:
-      branch = gql(models.Branch,
-                  "WHERE status = 'NEEDS_MERGE'"
-                  " ORDER BY merge_submitted").get()
-      if branch is None:
-        break
-      patchsets = branch.begin_merge()
-
-    rsp = PendingMergeResponse()
-    if patchsets:
-      first = patchsets[0].change
-      rsp.status_code = PendingMergeResponse.MERGE_READY
-      rsp.dest_project_name = str(first.dest_project.name)
-      rsp.dest_project_key = str(first.dest_project.key())
-      rsp.dest_branch_name = str(first.dest_branch.name)
-      rsp.dest_branch_key = str(first.dest_branch.key())
-      for ps in patchsets:
-        pmi = rsp.change.add()
-        pmi.patchset_key = str(ps.key())
-        pmi.revision_id = str(ps.revision.id)
-    else:
-      rsp.status_code = PendingMergeResponse.QUEUE_EMPTY
-    done(rsp)
-
-  @automatic_retry
-  def PostMergeResult(self, rpc_controller, req, done):
-    rsp = PostMergeResultResponse()
-
-    success = []
-    fail = []
-    defer = []
-
-    for ri in req.change:
-      sc = ri.status_code
-      ps = db.get(db.Key(ri.patchset_key))
-
-      if ps.change.merged:
-        success.append(ps)
-        continue
-
-      def chg_trans(key):
-        change = db.get(key)
-        if change.merge_patchset.key() != ps.key():
-          return None
-
-        if sc == MergeResultItem.CLEAN_MERGE:
-          pass
-
-        elif sc == MergeResultItem.ALREADY_MERGED:
-          change.merged = True
-          change.closed = True
-          change.put()
-
-        elif sc == MergeResultItem.MISSING_DEPENDENCY:
-          pass
-
-        elif sc == MergeResultItem.PATH_CONFLICT:
-          change.unsubmit_merge()
-          change.put()
-
-        return change
-
-      change = db.run_in_transaction(chg_trans, ps.change.key())
-      if change:
-        if sc == MergeResultItem.CLEAN_MERGE:
-          _send_clean_merge(self.http_request, change)
-
-        elif sc == MergeResultItem.ALREADY_MERGED:
-          success.append(ps)
-
-        elif sc == MergeResultItem.MISSING_DEPENDENCY:
-          _send_missing_dependency(self.http_request, change)
-          defer.append(ps)
-
-        elif sc == MergeResultItem.PATH_CONFLICT:
-          _send_path_conflict(self.http_request, change)
-          fail.append(ps)
-      else:
-        fail.append(ps)
-
-    branch = db.get(db.Key(req.dest_branch_key))
-    branch.finish_merge(success, fail, defer)
-
-    done(rsp)
-
-  @automatic_retry
-  def PostBranchUpdate(self, rpc_controller, req, done):
-    rsp = PostBranchUpdateResponse()
-
-    branch = db.get(db.Key(req.branch_key))
-    merged = [db.get(db.Key(c_key)) for c_key in req.new_change]
-
-    branch.merged(merged)
-
-    for ps in merged:
-      def trans(key):
-        change = db.get(key)
-        if change.merge_patchset.key() == ps.key():
-          change.merged = True
-          change.closed = True
-          change.put()
-      db.run_in_transaction(trans, ps.change.key())
-
-    done(rsp)
diff --git a/webapp/codereview/internal/util.py b/webapp/codereview/internal/util.py
deleted file mode 100644
index 32fe986..0000000
--- a/webapp/codereview/internal/util.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import datetime
-
-from google.appengine.ext import db
-from codereview import models
-from codereview.need_retry_pb2 import RetryRequestLaterResponse
-
-class InternalAPI(object):
-  """
-    Marker superclass for service implementations which should be
-    restricted to only role accounts executing batch processing.
-  """
-  def __init__(self):
-    pass
-
-def u(str):
-  """Decode the UTF-8 byte sequence into a unicode object."""
-  if isinstance(str,unicode):
-    return str
-  return str.decode('utf_8')
-
-def commit_to_revision(proj, commit):
-  """Converts a GitCommit into a RevisionId data store object.
-  """
-  p_a = commit.author
-  p_c = commit.committer
-
-  return models.RevisionId.get_or_insert_revision(
-          project = proj,
-          id = commit.id,
-          ancestors = [p for p in commit.parent_id],
-          message = db.Text(u(commit.message)),
-
-          author_name = u(p_a.name),
-          author_email = db.Email(u(p_a.email)),
-          author_when = datetime.datetime.utcfromtimestamp(p_a.when),
-          author_tz = p_a.tz,
-
-          committer_name = u(p_c.name),
-          committer_email = db.Email(u(p_c.email)),
-          committer_when = datetime.datetime.utcfromtimestamp(p_c.when),
-          committer_tz = p_a.tz,
-          )
-
-def automatic_retry(func):
-  """Decorator that catches data store errors and sends a retry response."""
-  def retry_wrapper(self, rpc_controller, req, done):
-    try:
-      func(self, rpc_controller, req, done)
-
-    except db.InternalError:
-      rsp = RetryRequestLaterResponse()
-      done(rsp)
-
-    except db.Timeout:
-      rsp = RetryRequestLaterResponse()
-      done(rsp)
-
-    except db.TransactionFailedError:
-      rsp = RetryRequestLaterResponse()
-      done(rsp)
-
-  return retry_wrapper
-
diff --git a/webapp/codereview/intra_region_diff.py b/webapp/codereview/intra_region_diff.py
deleted file mode 100644
index c908fbe..0000000
--- a/webapp/codereview/intra_region_diff.py
+++ /dev/null
@@ -1,699 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Intra-region diff utilities.
-
-Intra-region diff highlights the blocks of code which have been changed or
-deleted within a region. So instead of highlighting the whole region marked as
-changed, the user can see what exactly was changed within that region.
-
-Terminology:
-  'region' is a list of consecutive code lines.
-  'word' is the unit of intra-region diff. Its definition is arbitrary based on
-   what we think as to be a good unit of difference between two regions.
-  'block' is a small section of code within a region. It can span multiple
-  lines. There can be multiple non overlapping blocks within a region. A block
-  can potentially span the whole region.
-
-The blocks have two representations. One is of the format (offset1, offset2,
-size) which is returned by the SequenceMatcher to indicate a match of
-length 'size' starting at offset1 in the first/old line and starting at offset2
-in the second/new line. We convert this representation to a pair of tuples i.e.
-(offset1, size) and (offset2, size) for rendering each side of the diff
-separately. This latter representation is also more efficient for doing
-compaction of adjacent blocks which reduces the size of the HTML markup. See
-CompactBlocks for more details.
-
-SequenceMatcher always returns one special matching block at the end with
-contents (len(line1), len(line2), 0). We retain this special block as it
-simplifies for loops in rendering the last non-matching block. All functions
-which deal with the sequence of blocks assume presence of the special block at
-the end of the sequence and retain it.
-"""
-
-import cgi
-import difflib
-import re
-
-# Tag to begin a diff chunk.
-BEGIN_TAG = "<span class=\"%s\">"
-# Tag to end a diff block.
-END_TAG = "</span>"
-# Tag used for visual tab indication
-TAB_TAG = '<span class="visualtab" title="Visual tab.">&raquo;</span>'
-
-# Color scheme to govern the display properties of diff blocks and matching
-# blocks. Each value e.g. 'oldlight' corresponds to a CSS style.
-COLOR_SCHEME = {
-  'old': {
-          'match':      'oldlight',
-          'diff':       'olddark',
-          'bckgrnd':    'oldlight',
-         },
-  'new': {
-          'match':      'newlight',
-          'diff':       'newdark',
-          'bckgrnd':    'newlight',
-         },
-  'oldmove': {
-          'match':      'movelight',
-          'diff':       'oldmovedark',
-          'bckgrnd':    'movelight'
-  },
-  'newmove': {
-          'match':      'newlight',
-          'diff':       'newdark',
-          'bckgrnd':    'newlight'
-  },
-}
-# Regular expressions to tokenize lines. Default is 'b'.
-EXPRS = {
-         'a': r'(\w+|[^\w\s]+|\s+)',
-         'b': r'([A-Za-z0-9]+|[^A-Za-z0-9])',
-         'c': r'([A-Za-z0-9_]+|[^A-Za-z0-9_])',
-        }
-# Maximum total characters in old and new lines for doing intra-region diffs.
-# Intra-region diff for larger regions is hard to comprehend and wastes CPU
-# time.
-MAX_TOTAL_LEN = 10000
-
-
-def ExpandTabs(text, tabsize=8, tab_marker=None):
-  """Expand tab characters in a string into spaces with an optional marker.
-
-  Args:
-    text: a string containing tab characters.
-    tabsize: the number of spaces that a tab represents
-    tab_marker: a character; if not None, we replace the first character
-                of each tab expansion with this.
-  """
-  tabpos = text.find("\t")
-  while tabpos >= 0:
-    fillwidth = tabsize - (tabpos % tabsize)
-    if fillwidth == 0:
-      fillwidth = tabsize
-    if tab_marker:
-      fill = tab_marker + " " * (fillwidth - 1)
-    else:
-      fill = " " * fillwidth
-    # We avoid str.replace in case tab_marker is \t
-    text = text[:tabpos] + fill + text[tabpos+1:]
-    tabpos = text.find("\t", tabpos + 1)
-  return text
-
-
-def Fold(text, limit=85, indent=5, offset=0, tabsize=8, mark_tabs=False):
-  """Break a long string into multiple lines.
-
-  Lines longer than 'limit' are broken up into pieces of at most
-  'limit' characters; continuation lines start with 'indent' spaces.
-
-  'offset' is used to indicate if 'text' itself doesn't align with
-  the beginning of line e.g. we are trying to Fold a line when we have
-  already printed 'offset' number of characters to the output.
-
-  This also translates tabs into 'tabsize' spaces. If 'mark_tabs' is true,
-  then we indicate the first character of each expanded tab visually.
-
-  Input and output are assumed to be in UTF-8; the computation is done
-  in Unicode.  (Still not good enough if zero-width characters are
-  present.) If the input is not valid UTF-8, then the encoding is
-  passed through, potentially breaking up multi-byte characters.
-  We pass the line through cgi.escape before returning it.
-
-  A trailing newline is always stripped from the input first.
-  """
-  assert tabsize > 0, tabsize
-  if text.endswith("\n"):
-    text = text[:-1]
-  try:
-    text = unicode(text, "utf-8")
-  except:
-    pass
-  if "\t" in text:
-    # If mark_tabs is true, we retain one \t character as a marker during
-    # expansion so that we later replace it with an HTML snippet.
-    tab_marker = mark_tabs and "\t" or None
-    rest = text[indent-offset:]
-    text = text[:indent-offset] + ExpandTabs(rest, tabsize, tab_marker)
-  # Perform wrapping.
-  if len(text) > limit - offset:
-    parts = []
-    prefix = ""
-    i = 0
-    j = limit - offset
-    while i < len(text):
-      parts.append(prefix + text[i:j])
-      i = j
-      j += limit - indent
-      prefix = " " * indent
-    text = "\n".join(parts)
-  # Colorize tab markers (after calling escape)
-  text = cgi.escape(text)
-  text = text.replace("\t", TAB_TAG)
-  if isinstance(text, unicode):
-    return text.encode("utf-8", "replace")
-  return text
-
-
-def CompactBlocks(blocks):
-  """Compacts adjacent code blocks.
-
-  In many cases 2 adjacent blocks can be merged into one. This allows
-  to do some further processing on those blocks.
-
-  Args:
-    blocks: [(offset1, size), ...]
-
-  Returns:
-    A list with the same structure as the input with adjacent blocks
-    merged.  However, the last block (which is always assumed to have
-    a zero size) is never merged.  For example, the input
-    [(0, 2), (2, 8), (10, 5), (15, 0)]
-    will produce the output [(0, 15), (15, 0)].
-  """
-  if len(blocks) == 1:
-    return blocks
-  result = [blocks[0]]
-  for block in blocks[1:-1]:
-    last_start, last_len = result[-1]
-    curr_start, curr_len = block
-    if last_start + last_len == curr_start:
-      result[-1] = last_start, last_len + curr_len
-    else:
-      result.append(block)
-  result.append(blocks[-1])
-  return result
-
-
-def FilterBlocks(blocks, filter_func):
-  """Gets rid of any blocks if filter_func evaluates false for them.
-
-  Args:
-    blocks: [(offset1, offset2, size), ...]; must have at least 1 entry
-    filter_func: a boolean function taking a single argument of the form
-                 (offset1, offset2, size)
-
-  Returns:
-    A list with the same structure with entries for which filter_func()
-    returns false removed.  However, the last block is always included.
-  """
-  # We retain the 'special' block at the end.
-  res = [b for b in blocks[:-1] if filter_func(b)]
-  res.append(blocks[-1])
-  return res
-
-
-def GetDiffParams(expr='b', min_match_ratio=0.6, min_match_size=2, dbg=False):
-  """Returns a tuple of various parameters which affect intra region diffs.
-
-  Args:
-    expr: regular expression id to use to identify 'words' in the intra region
-          diff
-    min_match_ratio: minimum similarity between regions to qualify for intra
-                     region diff
-    min_match_size: the smallest matching block size to use. Blocks smaller
-                    than this are ignored.
-    dbg: to turn on generation of debugging information for the diff
-
-  Returns:
-    4 tuple (expr, min_match_ratio, min_match_size, dbg) that can be used to
-    customize diff. It can be passed to functions like WordDiff and
-    IntraLineDiff.
-  """
-  assert expr in EXPRS
-  assert min_match_size in xrange(1,5)
-  assert min_match_ratio > 0.0 and min_match_ratio < 1.0
-  return (expr, min_match_ratio, min_match_size, dbg)
-
-
-def CanDoIRDiff(old_lines, new_lines):
-  """Tells if it would be worth computing the intra region diff.
-
-  Calculating IR diff is costly and is usually helpful only for small regions.
-  We use a heuristic that if the total number of characters is more than a
-  certain threshold then we assume it is not worth computing the IR diff.
-
-  Args:
-    old_lines: an array of strings containing old text
-    new_lines: an array of strings containing new text
-
-  Returns:
-    True if we think it is worth computing IR diff for the region defined
-    by old_lines and new_lines, False otherwise.
-
-  TODO: Let GetDiffParams handle MAX_TOTAL_LEN param also.
-  """
-  total_chars = (sum(len(line) for line in old_lines) +
-                 sum(len(line) for line in new_lines))
-  return total_chars <= MAX_TOTAL_LEN
-
-
-def WordDiff(line1, line2, diff_params):
-  """Returns blocks with positions indiciating word level diffs.
-
-  Args:
-    line1: string representing the left part of the diff
-    line2: string representing the right part of the diff
-    diff_params: return value of GetDiffParams
-
-  Returns:
-    A tuple (blocks, ratio) where:
-      blocks: [(offset1, offset2, size), ...] such that
-              line1[offset1:offset1+size] == line2[offset2:offset2+size]
-              and the last block is always (len(line1), len(line2), 0)
-      ratio: a float giving the diff ratio computed by SequenceMatcher.
-  """
-  match_expr, min_match_ratio, min_match_size, dbg = diff_params
-  exp = EXPRS[match_expr]
-  # We want to split at proper character boundaries in UTF8 text.
-  try:
-    line1_u = unicode(line1, "utf8")
-  except:
-    line1_u = line1
-  try:
-    line2_u = unicode(line2, "utf8")
-  except:
-    line2_u = line2
-  def _ToUTF8(s):
-    if isinstance(s, unicode):
-      return s.encode("utf8")
-    return s
-  a = map(_ToUTF8, re.findall(exp, line1_u, re.U))
-  b = map(_ToUTF8, re.findall(exp, line2_u, re.U))
-  s = difflib.SequenceMatcher(None, a, b)
-  matching_blocks = s.get_matching_blocks()
-  ratio = s.ratio()
-  # Don't show intra region diffs if both lines are too different and there is
-  # more than one block of difference. If there is only one change then we
-  # still show the intra region diff regardless of how different the blocks
-  # are.
-  # Note: We compare len(matching_blocks) with 3 because one block of change
-  # results in 2 matching blocks. We add the one special block and we get 3
-  # matching blocks per one block of change.
-  if ratio < min_match_ratio and len(matching_blocks) > 3:
-    return ([(0, 0, 0)], ratio)
-  # For now convert to character level blocks because we already have
-  # the code to deal with folding across lines for character blocks.
-  # Create arrays lena an lenb which have cumulative word lengths
-  # corresponding to word positions in a and b
-  lena = []
-  last = 0
-  for w in a:
-    lena.append(last)
-    last += len(w)
-  lenb = []
-  last = 0
-  for w in b:
-    lenb.append(last)
-    last += len(w)
-  lena.append(len(line1))
-  lenb.append(len(line2))
-  # Convert to character blocks
-  blocks = []
-  for s1, s2, blen in matching_blocks[:-1]:
-    apos = lena[s1]
-    bpos = lenb[s2]
-    block_len = lena[s1+blen] - apos
-    blocks.append((apos, bpos, block_len))
-  # Recreate the special block.
-  blocks.append((len(line1), len(line2), 0))
-  # Filter any matching blocks which are smaller than the desired threshold.
-  # We don't remove matching blocks with only a newline character as doing so
-  # results in showing the matching newline character as non matching which
-  # doesn't look good.
-  blocks = FilterBlocks(blocks, lambda b: (b[2] >= min_match_size or
-                                           line1[b[0]:b[0]+b[2]] == '\n'))
-  return (blocks, ratio)
-
-
-def IntraLineDiff(line1, line2, diff_params, diff_func=WordDiff):
-  """Computes intraline diff blocks.
-
-  Args:
-    line1: string representing the left part of the diff
-    line2: string representing the right part of the diff
-    diff_params: return value of GetDiffParams
-    diff_func: a function whose signature matches that of WordDiff() above
-
-  Returns:
-    A tuple of (blocks1, blocks2) corresponding to line1 and line2.
-    Each element of the tuple is an array of (start_pos, length)
-    tuples denoting a diff block.
-  """
-  blocks, ratio = diff_func(line1, line2, diff_params)
-  blocks1 = [(start1, length) for (start1, start2, length) in blocks]
-  blocks2 = [(start2, length) for (start1, start2, length) in blocks]
-
-  return (blocks1, blocks2, ratio)
-
-
-def DumpDiff(blocks, line1, line2):
-  """Helper function to debug diff related problems.
-
-  Args:
-    blocks: [(offset1, offset2, size), ...]
-    line1: string representing the left part of the diff
-    line2: string representing the right part of the diff
-  """
-  for offset1, offset2, size in blocks:
-    print offset1, offset2, size
-    print offset1, size, ":  ", line1[offset1:offset1+size]
-    print offset2, size, ":  ", line2[offset2:offset2+size]
-
-
-def RenderIntraLineDiff(blocks, line, tag, dbg_info=None, limit=80, indent=5,
-                        tabsize=8, mark_tabs=False):
-  """Renders the diff blocks returned by IntraLineDiff function.
-
-  Args:
-    blocks: [(start_pos,  size), ...]
-    line: line of code on which the blocks are to be rendered.
-    tag: 'new' or 'old' to control the color scheme.
-    dbg_info: a string that holds debugging informaion header. Debug
-              information is rendered only if dbg_info is not None.
-    limit: folding limit to be passed to the Fold function.
-    indent: indentation size to be passed to the Fold function.
-    tabsize: the number of spaces that a tab represents
-    mark_tabs: if True, mark the first character of each expanded tab visually
-
-  Returns:
-    A tuple of two elements. First element is the rendered version of
-    the input 'line'. Second element tells if the line has a matching
-    newline character.
-  """
-  res = ""
-  prev_start, prev_len = 0, 0
-  has_newline = False
-  debug_info = dbg_info
-  if dbg_info:
-    debug_info += "\nBlock Count: %d\nBlocks: " % (len(blocks) - 1)
-  for curr_start, curr_len in blocks:
-    if dbg_info and curr_len > 0:
-      debug_info += Fold("\n(%d, %d):|%s|" %
-                         (curr_start, curr_len,
-                          line[curr_start:curr_start+curr_len]),
-                         limit, indent, tabsize, mark_tabs)
-    res += FoldBlock(line, prev_start + prev_len, curr_start, limit, indent,
-                     tag, 'diff', tabsize, mark_tabs)
-    res += FoldBlock(line, curr_start, curr_start + curr_len, limit, indent,
-                     tag, 'match', tabsize, mark_tabs)
-    # TODO: This test should be out of loop rather than inside. Once we
-    # filter out some junk from blocks (e.g. some empty blocks) we should do
-    # this test only on the last matching block.
-    if line[curr_start:curr_start+curr_len].endswith('\n'):
-      has_newline = True
-    prev_start, prev_len = curr_start, curr_len
-  return (res, has_newline, debug_info)
-
-
-def FoldBlock(src, start, end, limit, indent, tag, btype, tabsize=8,
-              mark_tabs=False):
-  """Folds and renders a block.
-
-  Args:
-    src: line of code
-    start: starting position of the block within 'src'.
-    end: ending position of the block within 'src'.
-    limit: folding limit
-    indent: indentation to use for folding.
-    tag: 'new' or 'old' to control the color scheme.
-    btype: block type i.e. 'match' or 'diff' to control the color schme.
-    tabsize: the number of spaces that a tab represents
-    mark_tabs: if True, mark the first character of each expanded tab visually
-
-  Returns:
-    A string represeting the rendered block.
-  """
-  text = src[start:end]
-  # We ignore newlines because we do newline management ourselves.
-  # Any other new lines with at the end will be stripped off by the Fold
-  # method.
-  if start >= end or text == '\n':
-    return ""
-  fbegin, lend, nl_plus_indent = GetTags(tag, btype, indent)
-  # 'bol' is beginning of line
-  offset_from_bol = start % limit
-  res = ""
-  # If this is the first block of the line and this is not the first line then
-  # insert newline + indent. This special case is not dealt with in the for
-  # loop below.
-  if offset_from_bol == 0 and not start == 0:
-    res = nl_plus_indent
-  text = Fold(text, limit, 0, offset_from_bol, tabsize, mark_tabs)
-  folded_lines = text.split("\n")
-  for (j, l) in enumerate(folded_lines):
-    if l:
-      res += (fbegin + l + lend)
-    # Add new line plus indent except for the last line.
-    if j < len(folded_lines) - 1:
-      res += nl_plus_indent
-  return res
-
-
-def GetTags(tag, btype, indent):
-  """Returns various tags for rendering diff blocks.
-
-  Args:
-    tag: a key from COLOR_SCHEME
-    btype: 'match' or 'diff'
-    indent: indentation to use
-  Returns
-    A 3 tuple (begin_tag, end_tag, formatted_indent_block)
-  """
-  assert tag in COLOR_SCHEME
-  assert btype in ['match', 'diff']
-  fbegin = BEGIN_TAG % COLOR_SCHEME[tag][btype]
-  bbegin = BEGIN_TAG % COLOR_SCHEME[tag]['bckgrnd']
-  lend = END_TAG
-  nl_plus_indent = '\n'
-  if indent > 0:
-    nl_plus_indent += bbegin + cgi.escape(" "*indent) + lend
-  return fbegin, lend, nl_plus_indent
-
-
-def ConvertToSingleLine(lines):
-  """Transforms a sequence of strings into a single line.
-
-  Returns the state that can be used to reconstruct the original lines with
-  the newline separators placed at the original place.
-
-  Args:
-    lines: sequence of strings
-
-  Returns:
-    Returns (single_line, state) tuple. 'state' shouldn't be modified by the
-    caller. It is only used to pass to other functions which will do certain
-    operations on this state.
-
-    'state' is an array containing a dictionary for each item in lines. Each
-    dictionary has two elements 'pos' and 'blocks'. 'pos' is the end position
-    of each line in the final converted string. 'blocks' is an array of blocks
-    for each line of code. These blocks are added using MarkBlock function.
-  """
-  state = []
-  total_length = 0
-  for l in lines:
-    total_length += len(l)
-    # TODO: Use a tuple instead.
-    state.append({     'pos': total_length, # the line split point
-                    'blocks': []            # blocks which belong to this line
-                 })
-  result = "".join(lines)
-  assert len(state) == len(lines)
-  return (result, state)
-
-
-def MarkBlock(state, begin, end):
-  """Marks a block on a region such that it doesn't cross line boundaries.
-
-  It is an operation that can be performed on the single line which was
-  returned by the ConvertToSingleLine function. This operation marks arbitrary
-  block [begin,end) on the text. It also ensures that if [begin,end) crosses
-  line boundaries in the original region then it splits the section up in 2 or
-  more blocks such that no block crosses the boundaries.
-
-  Args:
-    state: the state returned by ConvertToSingleLine function. The state
-           contained is modified by this function.
-    begin: Beginning of the block.
-    end: End of the block (exclusive).
-
-  Returns:
-    None.
-  """
-  # TODO: Make sure already existing blocks don't overlap
-  if begin == end:
-    return
-  last_pos = 0
-  for entry in state:
-    pos = entry['pos']
-    if begin >= last_pos and begin < pos:
-      if end < pos:
-        # block doesn't cross any line boundary
-        entry['blocks'].append((begin, end))
-      else:
-        # block crosses the line boundary
-        entry['blocks'].append((begin, pos))
-        MarkBlock(state, pos, end)
-      break
-    last_pos = pos
-
-
-def GetBlocks(state):
-  """Returns all the blocks corresponding to the lines in the region.
-
-  Args:
-    state: the state returned by ConvertToSingleLine().
-
-  Returns:
-    An array of [(start_pos, length), ..] with an entry for each line in the
-    region.
-  """
-  result = []
-  last_pos = 0
-  for entry in state:
-    pos = entry['pos']
-    # Calculate block start points from the beginning of individual lines.
-    blocks = [(s[0]-last_pos, s[1]-s[0]) for s in entry['blocks']]
-    # Add one end marker block.
-    blocks.append((pos-last_pos, 0))
-    result.append(blocks)
-    last_pos = pos
-  return result
-
-
-def IntraRegionDiff(old_lines, new_lines, diff_params):
-  """Computes intra region diff.
-
-  Args:
-    old_lines: array of strings
-    new_lines: array of strings
-    diff_params: return value of GetDiffParams
-
-  Returns:
-    A tuple (old_blocks, new_blocks) containing matching blocks for old and new
-    lines.
-  """
-  old_line, old_state = ConvertToSingleLine(old_lines)
-  new_line, new_state = ConvertToSingleLine(new_lines)
-  old_blocks, new_blocks, ratio = IntraLineDiff(old_line, new_line, diff_params)
-  for begin, length in old_blocks:
-    MarkBlock(old_state, begin, begin+length)
-  old_blocks = GetBlocks(old_state)
-
-  for begin, length in new_blocks:
-    MarkBlock(new_state, begin, begin+length)
-  new_blocks = GetBlocks(new_state)
-
-  return (old_blocks, new_blocks, ratio)
-
-
-def NormalizeBlocks(blocks, line):
-  """Normalizes block representation of an intra line diff.
-
-  One diff can have multiple representations. Some times the diff returned by
-  the difflib for similar text sections is different even within same region.
-  For example if 2 already indented lines were indented with one additional
-  space character, the difflib may return the non matching space character to
-  be any of the already existing spaces. So one line may show non matching
-  space character as the first space character and the second line may show it
-  to be the last space character. This is sometimes confusing. This is the
-  side effect of the new regular expression we are using in WordDiff for
-  identifying indvidual words. This regular expression ('b') treats a sequence
-  of punctuation and whitespace characters as individual characters. It has
-  some visual advantages for showing a character level punctuation change as
-  one character change rather than a group of character change.
-
-  Making the normalization too generic can have performance implications. So
-  this implementation of normalize blocks intends to handle only one case.
-  Let's say S represents the space character and () marks a matching block.
-  Then the normalize operation will do following:
-
-     SSSS(SS)(ABCD) => SSSS(SS)(ABCD)
-     (SS)SSSS(ABCD) => SSSS(SS)(ABCD)
-     (SSSS)SS(ABCD) => SS(SSSS)(ABCD)
-
-     and so on..
-
-  Args:
-    blocks: An array of (offset, len) tuples defined on 'line'. These blocks
-            mark the matching areas. Anything between these matching blocks is
-            considered non-matching.
-    line: The text string on which the blocks are defined.
-
-  Returns:
-    An array of (offset, len) tuples representing the same diff but in
-    normalized form.
-  """
-  result = []
-  prev_start, prev_len = blocks[0]
-  for curr_start, curr_len in blocks[1:]:
-    # Note: nm_ is a prefix for non matching and m_ is a prefix for matching.
-    m_len, nm_len  = prev_len, curr_start - (prev_start+prev_len)
-    # This if condition checks if matching and non matching parts are greater
-    # than zero length and are comprised of spaces ONLY. The last condition
-    # deals with most of the observed cases of strange diffs.
-    # Note: curr_start - prev_start == m_l + nm_l
-    #       So line[prev_start:curr_start] == matching_part + non_matching_part.
-    text = line[prev_start:curr_start]
-    if m_len > 0 and nm_len > 0 and text == ' ' * len(text):
-      # Move the matching block towards the end i.e. normalize.
-      result.append((prev_start + nm_len, m_len))
-    else:
-      # Keep the existing matching block.
-      result.append((prev_start, prev_len))
-    prev_start, prev_len = curr_start, curr_len
-  result.append(blocks[-1])
-  assert len(result) == len(blocks)
-  return result
-
-
-def RenderIntraRegionDiff(lines, diff_blocks, tag, ratio, limit=80, indent=5,
-                          tabsize=8, mark_tabs=False, dbg=False):
-  """Renders intra region diff for one side.
-
-  Args:
-    lines: list of strings representing source code in the region
-    diff_blocks: blocks that were returned for this region by IntraRegionDiff()
-    tag: 'new' or 'old'
-    ratio: similarity ratio returned by the diff computing function
-    limit: folding limit
-    indent: indentation size
-    tabsize: the number of spaces that a tab represents
-    mark_tabs: if True, mark the first character of each expanded tab visually
-    dbg: indicates if debug information should be rendered
-
-  Returns:
-    A list of strings representing the rendered version of each item in input
-    'lines'.
-  """
-  result = []
-  dbg_info = None
-  if dbg:
-    dbg_info = 'Ratio: %.1f' % ratio
-  for line, blocks in zip(lines, diff_blocks):
-    blocks = NormalizeBlocks(blocks, line)
-    blocks = CompactBlocks(blocks)
-    diff = RenderIntraLineDiff(blocks,
-                               line,
-                               tag,
-                               dbg_info=dbg_info,
-                               limit=limit,
-                               indent=indent,
-                               tabsize=tabsize,
-                               mark_tabs=mark_tabs)
-    result.append(diff)
-  assert len(result) == len(lines)
-  return result
diff --git a/webapp/codereview/library.py b/webapp/codereview/library.py
deleted file mode 100644
index 2408efc..0000000
--- a/webapp/codereview/library.py
+++ /dev/null
@@ -1,323 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Django template library for Gerrit."""
-
-import cgi
-import logging
-
-from google.appengine.api import mail
-from google.appengine.api import users
-from google.appengine.ext import db
-
-import django.template
-import django.utils.safestring
-from django.utils.safestring import mark_safe
-from django.utils.timesince import timesince
-from django.template import defaultfilters
-
-from memcache import CachedDict
-
-import email
-import models
-import view_util
-
-register = django.template.Library()
-
-class _CachedUser(object):
-  """Important data about an Account, pickled into memcache for
-     faster access when rendering pages to clients.
-  """
-  email = None
-  real_name = None
-  exists = False
-
-def _store_users(emails):
-  def _cache(pair):
-    email, account = pair
-    r = _CachedUser()
-    if account:
-      r.email = account.email
-      r.real_name = account.real_name
-      r.exists = account.real_name_entered
-    else:
-      r.email = email
-      r.real_name = email
-      if '@' in r.real_name:
-        r.real_name = r.real_name.split('@', 1)[0]
-    if r.real_name is None:
-      r.real_name = 'Unknown Person (%s)' % r.email
-    return r
-  all = zip(emails, models.Account.get_accounts_for_emails(emails))
-  return map(_cache, all)
-_user_cache = CachedDict(prefix = 'CachedUser:',
-                         compute_multi = _store_users,
-                         timeout = 300)
-
-def _to_email(u):
-  if isinstance(u, users.User):
-    return u.email()
-  return u
-
-def prefetch_names(emails):
-  _user_cache.prefetch(map(_to_email, emails))
-
-
-@register.filter
-def real_name(email, arg=None):
-  """Render an email address or a User object as a real_name.
-
-  If the input is a user object that equals the current user,
-  'me' is returned, unless the filter argument is non-empty.
-  Example:
-    {{foo|real_name}} may render 'me';
-    {{foo|real_name:"x"}} will never render 'me'.
-  """
-  return real_names([email], arg)
-
-@register.filter
-def real_names(email_list, arg=None):
-  """Render a list of email addresses or User objects as real_names.
-
-  Each list item is first formatter via the real_name() filter above,
-  and then the resulting strings are separated by commas.
-  The filter argument is the same as for real_name() above.
-  """
-  if arg:
-    user = None
-  else:
-    user = users.get_current_user()
-
-  email_list = map(_to_email, email_list)
-  all = _user_cache.get_multi(email_list)
-
-  names = []
-  for email in email_list:
-    if user and user.email() == email:
-      names.append('me')
-    else:
-      names.append(all[email].real_name)
-  return ', '.join(names)
-
-
-@register.filter
-def show_user(email, arg=None):
-  """Render a link to the user's dashboard, with text being
-     the real_name.
-  """
-  return show_users([email], arg)
-
-@register.filter
-def show_users(email_list, arg=None):
-  """Render list of links to each user's dashboard, with text
-     being the real_name.
-  """
-  if arg:
-    user = None
-  else:
-    user = users.get_current_user()
-
-  email_list = map(_to_email, email_list)
-  all = _user_cache.get_multi(email_list)
-
-  names = []
-  for email in email_list:
-    if user and user.email() == email:
-      names.append('me')
-    else:
-      u = all[email]
-      if u.exists:
-        names.append(
-          '<a href="/user/%(link)s"'
-          ' onMouseOver="M_showUserInfoPopup(this)">'
-          '%(name)s</a>'
-          % {'link': cgi.escape(u.email.replace('@',',,')),
-             'name': cgi.escape(u.real_name)}
-        )
-      else:
-        names.append(cgi.escape(u.real_name))
-  return mark_safe(', '.join(names))
-
-
-def _init_lgtm_text():
-  r = {}
-  for key, value in models.LGTM_CHOICES:
-    r[key] = value
-  return r
-_lgtm_text = _init_lgtm_text()
-
-@register.filter
-def review_status_text(status, arg=None):
-  try:
-    return _lgtm_text[status]
-  except KeyError:
-    return ''
-
-
-_lgtm_icon = {
-  'lgtm':    mark_safe('<img src="/static/check.png" />'),
-  'yes':     mark_safe('<font color="#08a400">+1</font>'),
-  'abstain': '',
-  'no':      mark_safe('<font color="#d10000"><b>-1</b></font>'),
-  'reject':  mark_safe('<img src="/static/x.png" />'),
-}
-
-@register.filter
-def review_status_icons(status, arg=None):
-  try:
-    return _lgtm_icon[status]
-  except KeyError:
-    return ''
-
-
-@register.filter
-def form_xsrf(url, arg=None):
-  x = view_util.xsrf_for(url)
-  return mark_safe('<input type="hidden" name="xsrf" value="%s" />' % x)
-
-@register.filter
-def bare_xsrf(url, arg=None):
-  return mark_safe(view_util.xsrf_for(url))
-
-_abbrev_units = {
-  'year': 'y',     'years': 'y',
-  'month': 'mo',   'months': 'm',
-  'week': 'w',     'weeks': 'w',
-  'day': 'd',      'days': 'd',
-  'hour': 'h',     'hours': 'h',
-  'minute': 'min', 'minutes': 'mins',
-}
-
-@register.filter
-def abbrevtimesince(d, arg=None):
-  r = []
-  for p in timesince(d).split(', '):
-    cnt, unit = p.split(' ', 2)
-    try:
-      r.append('%s %s' % (cnt, _abbrev_units[unit]))
-    except KeyError:
-      r.append(p)
-  return ', '.join(r)
-
-
-def change_url(change):
-  base = models.Settings.get_settings().canonical_url
-  return "%s/%s" % (base, change.key().id())
-
-@register.filter
-def closed_label(change, arg=None):
-  if change.closed:
-    if change.merged:
-      return '(Merged)'
-    else:
-      return '(Abandoned)'
-  else:
-    return ''
-
-@register.filter
-def patchset_browse_url(patchset, arg=None):
-  pattern = models.Settings.get_settings().source_browser_url
-  return pattern % {
-            'id': patchset.revision_hash(),
-            'project': patchset.change.dest_project.name,
-            }
-
-@register.filter
-def file_leaf(filename, arg=None):
-  parts = filename.rsplit('/', 1)
-  return parts[-1]
-
-def _find_review_status_for_user(review_statuses, user):
-  for rs in review_statuses:
-    if rs.user == user:
-      return rs
-  return None
-
-def update_reviewers(change, old_review_status, new_users):
-  """Update the reviewers for a change
-
-  ****
-  Should be called in a transaction.  You need to call put()
-  for each of the ReviewStatus objects in added_review_status and
-  delete() for each of the ReviewStatus objects in deleted_review_status.
-  ****
-
-  Returns:
-    A tuple of ReviewStatus objects of:
-      0 - the new ones that were added
-      1 - the ones that were deleted
-      2 - the new set of review status objects
-  """
-  new_review_status = []
-  added_review_status = []
-  deleted_review_status = []
-  for u in new_users:
-    rs = _find_review_status_for_user(old_review_status, u)
-    if not rs:
-      rs = models.ReviewStatus.insert_status(change, u)
-      rs.lgtm = 'abstain'
-      rs.verified = False
-      added_review_status.append(rs)
-    new_review_status.append(rs)
-  for rs in old_review_status:
-    if rs not in new_review_status:
-      deleted_review_status.append(rs)
-  change.set_reviewers([db.Email(rs.user.email()) for rs
-                        in new_review_status])
-
-  return (added_review_status, deleted_review_status, new_review_status)
-
-def send_new_change_emails(change, sender_user, to_users, cc_emails,
-                            additional_message = ""):
-  if to_users or cc_emails:
-    sender_account = models.Account.get_account_for_user(sender_user)
-    sender_string = email.get_default_sender()
-    to_strings = email.make_to_strings(set(to_users + [sender_user]))
-    cc_strings = email.make_to_strings(cc_emails)
-    subject = email.make_change_subject(change)
-    message_body = make_please_review_message(change, sender_account) + '\n' \
-          + additional_message
-
-    email_message = mail.EmailMessage(sender=sender_string,
-                   subject=subject,
-                   body=message_body)
-    if to_strings:
-      email_message.to = to_strings
-    if cc_strings:
-      email_message.cc = cc_strings
-    email_message.send()
-
-def make_please_review_message(change, account):
-  description = defaultfilters.wordwrap(change.description, 70)
-  description = '  ' + description.replace('\n', '\n  ')
-  sentence = defaultfilters.wordwrap(
-      "%(account)s has asked that you review this change." % {
-        'account': account.get_email_formatted(),
-      }, 70)
-  return """Hi,
-
-%(sentence)s
-
-    %(url)s
-
-Thanks.
-
-The commit message for this change is:
-%(description)s
-""" % { 'url': change_url(change),
-        'sentence': sentence,
-        'description': description,
-      }
-
-
diff --git a/webapp/codereview/memcache.py b/webapp/codereview/memcache.py
deleted file mode 100644
index ce792ed..0000000
--- a/webapp/codereview/memcache.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Utility support for dealing with memcache."""
-
-from google.appengine.api import memcache
-from google.appengine.runtime import DeadlineExceededError
-
-import cStringIO
-import pickle
-import zlib
-
-
-class Key(object):
-  def __init__(self, key, timeout=None, compress=False, incore=False):
-    if compress:
-      key += '(z)'
-    self._key = key
-    self._timeout = timeout
-    self._compress = compress
-    self._incore = incore
-    self._value = None
-
-  def get(self, compute=None):
-    if self._incore and self._value is not None:
-      return self._value
-
-    try:
-      r = memcache.get(self._key)
-      if r and self._compress:
-        r = pickle.load(cStringIO.StringIO(zlib.decompress(r)))
-    except DeadlineExceededError:
-      r = None
-
-    if r is None and compute is not None:
-      r = compute()
-      if r is not None:
-        self.set(r)
-    elif self._incore:
-      self._value = r
-    return r
-
-  def clear(self):
-    try:
-      self._value = None
-      memcache.delete(self._key)
-    except DeadlineExceededError:
-      pass
-
-  def set(self, value):
-    if self._incore:
-      self._value = value
-
-    try:
-      if self._compress:
-        buf = cStringIO.StringIO()
-        pickle.dump(value, buf, -1)
-        value = zlib.compress(buf.getvalue())
-
-      if self._timeout is None:
-        memcache.set(self._key, value)
-      else:
-        memcache.set(self._key, value, self._timeout)
-    except DeadlineExceededError:
-      pass
-
-
-class CachedDict(object):
-  """A cache of zero or more memcache keys.  The dictionary of
-     acquired keys is also cached locally in this process, but
-     can be forcibly cleared by clear_local.
-  """
-  def __init__(self,
-               prefix,
-               timeout = None,
-               compute_one = None,
-               compute_multi = None):
-    self._prefix = prefix
-    self._timeout = timeout
-    self._cache = {}
-    self._prefetch = set()
-
-    if compute_multi:
-      self._compute = compute_multi
-    elif compute_one:
-      self._compute = lambda x: map(compute_one, x)
-    else:
-      raise ValueError, 'compute_one or compute_multi required'
-
-  def prefetch(self, keys):
-    for item_key in keys:
-      if item_key not in self._cache:
-        self._prefetch.add(item_key)
-
-  def get_multi(self, keys):
-    result = {}
-
-    not_local = []
-    for item_key in keys:
-      try:
-        result[item_key] = self._cache[item_key]
-      except KeyError:
-        not_local.append(item_key)
-
-    if not_local:
-      to_get = []
-      to_get.extend(not_local)
-      to_get.extend(self._prefetch)
-      self._prefetch = set()
-
-      try:
-        cached = memcache.get_multi(to_get, self._prefix)
-      except DeadlineExceededError:
-        cached = {}
-
-      to_compute = []
-      for item_key in to_get:
-        try:
-          r = cached[item_key]
-        except KeyError:
-          to_compute.append(item_key)
-          continue
-        self._cache[item_key] = r
-        result[item_key] = r
-
-      if to_compute:
-        to_cache = {}
-        for item_key, r in zip(to_compute, self._compute(to_compute)):
-          if r is not None:
-            to_cache[item_key] = r
-          self._cache[item_key] = r
-          result[item_key] = r
-
-        if to_cache:
-          try:
-            if self._timeout is None:
-              memcache.set_multi(to_cache,
-                                 key_prefix = self._prefix)
-            else:
-              memcache.set_multi(to_cache,
-                                 time = self._timeout,
-                                 key_prefix = self._prefix)
-          except DeadlineExceededError:
-            pass
-    return result
-
-  def get(self, key):
-    return self.get_multi([key])[key]
-
-  def clear_local(self):
-    self._cache = {}
-    self._prefetch = set()
diff --git a/webapp/codereview/middleware.py b/webapp/codereview/middleware.py
deleted file mode 100644
index 8ec08e5..0000000
--- a/webapp/codereview/middleware.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Custom middleware.  Some of this may be generally useful."""
-
-import logging
-import time
-
-from google.appengine.api import users
-from django.utils.http import http_date
-
-import models
-import view_util
-import library
-
-class NoCacheMiddleware(object):
-  """Set the cache-control and expires headers."""
-
-  def process_response(self, request, response):
-    response['Cache-Control'] = 'no-cache'
-    response['Expires'] = http_date(time.time() - 1)
-    return response
-
-
-class ClearXsrfKeyMiddleware(object):
-  """Sets the xsrf_key to None so it can later be read."""
-
-  def process_request(self, request):
-    view_util._xsrf_key = None
-    view_util._xsrf_now = None
-    view_util._xsrf_cache = {}
-    models.Settings._LocalCache = None
-    library._user_cache.clear_local()
-
-
-class AddUserToRequestMiddleware(object):
-  """Add a user object and a user_is_admin flag to each request."""
-
-  def process_request(self, request):
-    request.user = users.get_current_user()
-    if request.user:
-      request.is_gae_admin = users.is_current_user_admin()
-
-      request.account \
-        = models.Account.get_account_for_user(request.user)
-
-      request.user_is_admin \
-        = request.is_gae_admin or request.account.is_admin
-
-      models.OwnedProjects.clear_local()
-      request.projects_owned_by_user \
-        = models.OwnedProjects.get(request.user.email())
-
-      request.show_admin_tab \
-        = (request.user_is_admin \
-        or len(request.projects_owned_by_user) > 0)
-
-    else:
-      request.is_gae_admin = False
-      request.user_is_admin = False
-      request.projects_owned_by_user = set()
-      request.show_admin_tab = False
-      request.account = None
-    models.Account.current_user_account = request.account
diff --git a/webapp/codereview/models.py b/webapp/codereview/models.py
deleted file mode 100644
index af26245..0000000
--- a/webapp/codereview/models.py
+++ /dev/null
@@ -1,1509 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""App Engine data model (schema) definition for Gerrit."""
-
-# Python imports
-import base64
-import datetime
-try:
-  import hashlib
-except ImportError:
-  pass
-import logging
-import random
-import re
-import zlib
-
-# AppEngine imports
-from google.appengine.ext import db
-from google.appengine.api import users
-
-# Local imports
-from memcache import Key as MemCacheKey
-from memcache import CachedDict
-import patching
-
-
-CUR_SCHEMA_VERSION = 1
-DEFAULT_CONTEXT = 10
-CONTEXT_CHOICES = (3, 10, 25, 50, 75, 100)
-FETCH_MAX = 1000
-MAX_DELTA_DEPTH = 10
-
-LGTM_CHOICES = (
-    ('lgtm', 'Looks good to me, approved.'),
-    ('yes', 'Looks good to me, but someone else must approve.'),
-    ('abstain', 'No score.'),
-    ('no', 'I would prefer that you didn\'t submit this.'),
-    ('reject', 'Do not submit.'),
-  )
-LIMITED_LGTM_CHOICES = [choice for choice in LGTM_CHOICES
-        if choice[0] != 'lgtm' and choice[0] != 'reject']
-
-### GQL query cache ###
-
-
-_query_cache = {}
-
-class BackedUpModel(db.Model):
-  """Base class for our models that keeps a property used for backup."""
-
-  last_backed_up = db.IntegerProperty(default=0)
-
-  def __init__(self, *args, **kwargs):
-    db.Model.__init__(self, *args, **kwargs)
-
-def gql(cls, clause, *args, **kwds):
-  """Return a query object, from the cache if possible.
-
-  Args:
-    cls: a BackedUpModel subclass.
-    clause: a query clause, e.g. 'WHERE draft = TRUE'.
-    *args, **kwds: positional and keyword arguments to be bound to the query.
-
-  Returns:
-    A db.GqlQuery instance corresponding to the query with *args and
-    **kwds bound to the query.
-  """
-  query_string = 'SELECT * FROM %s %s' % (cls.kind(), clause)
-  query = _query_cache.get(query_string)
-  if query is None:
-    _query_cache[query_string] = query = db.GqlQuery(query_string)
-  query.bind(*args, **kwds)
-  return query
-
-
-### Exceptions ###
-
-class InvalidLgtmException(Exception):
-  """User is not alloewd to LGTM this change."""
-
-class InvalidVerifierException(Exception):
-  """User is not alloewd to verify this change."""
-
-class InvalidSubmitMergeException(Exception):
-  """The change cannot me scheduled for merge."""
-
-class DeltaPatchingException(Exception):
-  """Applying a patch yield the wrong hash."""
-
-
-### Settings ###
-
-def _genkey(n=26):
-  k = ''.join(map(chr, (random.randrange(256) for i in xrange(n))))
-  return base64.b64encode(k)
-
-class Settings(BackedUpModel):
-  """Global settings for the application instance."""
-
-  analytics = db.StringProperty()
-  internal_api_key = db.StringProperty()
-  xsrf_key = db.StringProperty()
-  from_email = db.StringProperty()
-  canonical_url = db.StringProperty(default='')
-  source_browser_url = db.StringProperty(default='')
-  merge_log_email = db.StringProperty()
-  schema_version = db.IntegerProperty(default=0)
-
-  _Key = MemCacheKey('Settings_Singleton')
-  _LocalCache = None
-
-  @classmethod
-  def get_settings(cls):
-    """Get the Settings singleton.
-
-    If possible, get it from memcache.  If it's not there, it tries to do a 
-    normal get().  Only if that fails does it call get_or_insert, because of
-    possible contention errors due to get_or_insert's transaction.
-    """
-    if Settings._LocalCache is None:
-      def read():
-        result = cls.get_by_key_name('settings')
-        if result:
-          return result
-        else:
-          return cls.get_or_insert('settings',
-                                    internal_api_key=_genkey(26),
-                                    xsrf_key=_genkey(26),
-                                    schema_version = CUR_SCHEMA_VERSION)
-      Settings._LocalCache = Settings._Key.get(read)
-    return Settings._LocalCache
-
-  def put(self):
-    BackedUpModel.put(self)
-    self._Key.clear()
-    Settings._LocalCache = None
-
-
-### Approval rights ###
-
-def _flatten_users_and_groups(users, groups):
-  """Returns a set of the users and the groups provided"""
-  result = set()
-  for user in users:
-    result.add(user)
-  if groups:
-    for group in db.get(groups):
-      for user in group.members:
-        result.add(user)
-  return result
-
-
-class ApprovalRight(BackedUpModel):
-  """The tuple of a set of path patterns and a set of users who can approve
-  changes for those paths."""
-  files = db.StringListProperty()
-  approvers_users = db.ListProperty(users.User)
-  approvers_groups = db.ListProperty(db.Key)
-  verifiers_users = db.ListProperty(users.User)
-  verifiers_groups = db.ListProperty(db.Key)
-  submitters_users = db.ListProperty(users.User)
-  submitters_groups = db.ListProperty(db.Key)
-  required = db.BooleanProperty()
-
-  def approvers(self):
-    """Returns a set of the users who are approvers."""
-    return _flatten_users_and_groups(self.approvers_users,
-        self.approvers_groups)
-
-  def verifiers(self):
-    """Returns a set of the users who are verifiers."""
-    return _flatten_users_and_groups(self.verifiers_users,
-        self.verifiers_groups)
-
-  def submitters(self):
-    """Returns a set of the users who are submitters."""
-    return _flatten_users_and_groups(self.submitters_users,
-        self.submitters_groups)
-
-  @classmethod
-  def validate_file(cls, file):
-    """Returns whether this is a valid file path.
-    
-    The rules:
-      - The length must be > 0
-      - The file path must start with a '/'
-      - The file path must contain either 0 or 1 '...'
-      - If it contains one '...', it must either be last or directly
-        after the first '/'
-        
-        These last two limitations could be removed someday but are
-        good enough for now.
-    """
-    if len(file) == 0:
-      return False
-    if file[0] != '/':
-      return False
-    (before, during, after) = file.partition("...")
-    if during == "" and after == "":
-      return True
-    if before != "/":
-      return False
-    if after.find("...") != -1:
-      return False
-    return True
-
-### Projects ###
-
-class Project(BackedUpModel):
-  """An open source project.
-
-  Projects have owners who can set approvers and stuff.
-  """
-
-  name = db.StringProperty(required=True)
-  comment = db.StringProperty(required=False)
-  owners_users = db.ListProperty(users.User)
-  owners_groups = db.ListProperty(db.Key)
-  code_reviews = db.ListProperty(db.Key)
-
-  @classmethod
-  def get_all_projects(cls):
-    """Return all projects"""
-    all = cls.all()
-    all.order('name')
-    return list(all)
-
-  @classmethod
-  def get_project_for_name(cls, name):
-    return cls.gql('WHERE name=:name', name=name).get()
-
-  def remove(self):
-    """delete this project"""
-    db.delete(ApprovalRight.get(self.code_reviews))
-    self.delete()
-
-  def set_code_reviews(self, approval_right_keys):
-    for key in self.code_reviews:
-      val = ApprovalRight.get(key)
-      if val:
-        db.delete(val)
-    self.code_reviews = approval_right_keys
-
-  def get_code_reviews(self):
-    return [ApprovalRight.get(key) for key in self.code_reviews]
-
-  def leads(self):
-    """Returns a set of the users who are leads."""
-    return _flatten_users_and_groups(self.owners_users,
-                                     self.owners_groups)
-
-  def is_user_lead(self, user):
-    if user in self.owners_users:
-      return True
-    for group in AccountGroup.get(self.owners_groups):
-      if group and user in group.members:
-        return True
-    return False
-
-def _get_owned_projects(email):
-  u = users.User(email)
-  projects = set(gql(Project,
-                     'WHERE owners_users = :1',
-                     u).fetch(1000))
-
-  groups = gql(AccountGroup, 'WHERE members = :1', u).fetch(1000)
-  if groups:
-    projects.update(gql(Project,
-                        'WHERE owners_groups IN :1',
-                        [g.key() for g in groups]).fetch(1000))
-  return [p.key() for p in projects]
-
-OwnedProjects = CachedDict(prefix = 'OwnedProject:',
-                           compute_one = _get_owned_projects)
-
-class Branch(BackedUpModel):
-  """A branch in a specific Project."""
-
-  project = db.ReferenceProperty(Project, required=True)
-  name = db.StringProperty(required=True) # == key
-
-  status = db.StringProperty(choices=('NEEDS_MERGE',
-                                      'MERGING',
-                                      'BUILDING'))
-  merge_submitted = db.DateTimeProperty()
-  to_merge = db.ListProperty(db.Key) # PatchSets
-  merging = db.ListProperty(db.Key) # PatchSets
-  waiting = db.ListProperty(db.Key) # PatchSets
-
-  @classmethod
-  def get_or_insert_branch(cls, project, name):
-    key = 'p.%s %s' % (project.key().id(), name)
-    return cls.get_or_insert(key, project=project, name=name)
-
-  @classmethod
-  def get_branch_for_name(cls, project, name):
-    key = 'p.%s %s' % (project.key().id(), name)
-    return cls.get_by_key_name(key)
-
-  @property
-  def short_name(self):
-    if self.name.startswith("refs/heads/"):
-      return self.name[len("refs/heads/"):]
-    return self.name
-
-  def merge_patchset(self, patchset):
-    """Add a patchset to the end of the branch's merge queue
-
-    This method runs in an independent transaction.
-    """
-    ps_key = patchset.key()
-    def trans(key):
-      b = db.get(key)
-      if not ps_key in b.to_merge:
-        b.to_merge.append(ps_key)
-        if b.status is None:
-          b.status = 'NEEDS_MERGE'
-          b.merge_submitted = datetime.datetime.now()
-        b.put()
-    db.run_in_transaction(trans, self.key())
-
-  def begin_merge(self):
-    """Lock this branch and start merging patchsets.
-
-    This method runs in an independent transaction.
-    """
-    def trans(key):
-      b = db.get(key)
-      if b.status == 'NEEDS_MERGE':
-        b.status = 'MERGING'
-        b.merging.extend(b.waiting)
-        b.merging.extend(b.to_merge)
-        b.waiting = []
-        b.to_merge = []
-        b.put()
-        return b.merging
-      return []
-    keys = db.run_in_transaction(trans, self.key())
-    objs = db.get(keys)
-
-    good = []
-    torm = []
-    for k, ps in zip(keys, objs):
-      if ps and not ps.change.closed:
-        good.append(ps)
-      else:
-        torm.append(k)
-
-    if torm:
-      def clear_branch(key):
-        b = db.get(key)
-
-        for ps_key in torm:
-          if ps_key in b.merging:
-            b.merging.remove(ps_key)
-
-        if not good and b.status in ('MERGING', 'BUILDING'):
-          if b.to_merge:
-            b.status = 'NEEDS_MERGE'
-          else:
-            b.status = None
-
-        b.put()
-      db.run_in_transaction(clear_branch, self.key())
-    return good
-
-  def finish_merge(self, success, fail, defer):
-    """Update our patchset lists with the results of a merge.
-
-    This method runs in an independent transaction.
-    """
-    def trans(key):
-      b = db.get(key)
-
-      rm = []
-      rm.extend(success)
-      rm.extend(fail)
-      for ps in rm:
-        ps_key = ps.key()
-
-        if ps_key in b.to_merge:
-          b.to_merge.remove(ps_key)
-        if ps_key in b.merging:
-          b.merging.remove(ps_key)
-        if ps_key in b.waiting:
-          b.waiting.remove(ps_key)
-
-      for ps in defer:
-        ps_key = ps.key()
-
-        if ps_key in b.to_merge:
-          b.to_merge.remove(ps_key)
-        if ps_key in b.merging:
-          b.merging.remove(ps_key)
-        if ps_key not in b.waiting:
-          b.waiting.append(ps_key)
-
-      b.put()
-    db.run_in_transaction(trans, self.key())
-
-  def merged(self, merged):
-    """Updates the branch to include pending PatchSets.
-
-    This method runs in an independent transaction.
-    """
-    def trans(key):
-      b = db.get(key)
-
-      for ps in merged:
-        ps_key = ps.key()
-
-        if ps_key in b.to_merge:
-          b.to_merge.remove(ps_key)
-        if ps_key in b.merging:
-          b.merging.remove(ps_key)
-        if ps_key in b.waiting:
-          b.waiting.remove(ps_key)
-
-      if b.status in ('MERGING', 'BUILDING'):
-        if b.to_merge:
-          b.status = 'NEEDS_MERGE'
-        else:
-          b.status = None
-      b.put()
-    db.run_in_transaction(trans, self.key())
-
-
-### Revisions ###
-
-class RevisionId(BackedUpModel):
-  """A specific revision of a project."""
-
-  project = db.ReferenceProperty(Project, required=True)
-  id = db.StringProperty(required=True) # == key
-
-  author_name = db.StringProperty()
-  author_email = db.EmailProperty()
-  author_when = db.DateTimeProperty()
-  author_tz = db.IntegerProperty()
-
-  committer_name = db.StringProperty()
-  committer_email = db.EmailProperty()
-  committer_when = db.DateTimeProperty()
-  committer_tz = db.IntegerProperty()
-
-  ancestors = db.StringListProperty() # other RevisionId.id
-  message = db.TextProperty()
-
-  patchset_key = db.StringProperty()
-  def _get_patchset(self):
-    try:
-      return self._patchset_obj
-    except AttributeError:
-      k_str = self.patchset_key
-      if k_str:
-        self._patchset_obj = db.get(db.Key(k_str))
-      else:
-        self._patchset_obj = None
-    return self._patchset_obj
-
-  def _set_patchset(self, p):
-    if p is None:
-      self.patchset_key = None
-      self._patchset_obj = None
-    else:
-      self.patchset_key = str(p.key())
-      self._patchset_obj = p
-  patchset = property(_get_patchset, _set_patchset)
-
-  @classmethod
-  def get_or_insert_revision(cls, project, id, **kw):
-    key = 'p.%s %s' % (project.key().id(), id)
-    return cls.get_or_insert(key, project=project, id=id, **kw)
-
-  @classmethod
-  def get_revision(cls, project, id):
-    key = 'p.%s %s' % (project.key().id(), id)
-    return cls.get_by_key_name(key)
-
-  @classmethod
-  def get_for_patchset(cls, patchset):
-    """Get all revisions linked to a patchset.
-    """
-    return gql(cls, 'WHERE patchset_key = :1', str(patchset.key()))
-
-  def add_ancestor(self, other_id):
-    """Adds the other revision as an ancestor for this one.
-
-    If the other rev is already in the list, does nothing.
-    """
-    if not other_id in self.ancestors:
-      self.ancestors.append(other_id)
-
-  def remove_ancestor(self, other_id):
-    """Removes an ancestor previously stored.
-
-    If the other rev is not already in the list, does nothing.
-    """
-    if other_id in self.ancestors:
-      self.ancestors.remove(other_id)
-
-  def get_ancestors(self):
-    """Fully fetches all ancestors from the data store.
-    """
-    p_id = self.project.key().id()
-    names = ['p.%s %s' % (p_id, i) for i in self.ancestors]
-    return [r for r in RevisionId.get_by_key_name(names) if r]
-
-  def get_children(self):
-    """Obtain the revisions that depend upon this one.
-    """
-    return gql(RevisionId,
-               'WHERE project = :1 AND ancestors = :2',
-               self.project, self.id)
-
-  def link_patchset(self, new_patchset):
-    """Uniquely connect one patchset to this revision.
-
-    Returns True if the passed patchset is the single patchset;
-    False if another patchset has already been linked onto it.
-    """
-    def trans(self_key):
-      c = db.get(self_key)
-      if c.patchset is None:
-        c.patchset = new_patchset
-        c.put()
-        return True
-      return False
-    return db.run_in_transaction(trans, self.key())
-
-
-class BuildAttempt(BackedUpModel):
-  """A specific build attempt."""
-
-  branch = db.ReferenceProperty(Branch, required=True)
-  revision_id = db.StringProperty(required=True)
-  new_changes = db.ListProperty(db.Key) # PatchSet
-
-  started = db.DateTimeProperty(auto_now_add=True)
-  finished = db.BooleanProperty(default=False)
-  success = db.BooleanProperty()
-
-
-### Changes, PatchSets, Patches, DeltaContents, Comments, Messages ###
-
-class Change(BackedUpModel):
-  """The major top-level entity.
-
-  It has one or more PatchSets as its descendants.
-  """
-
-  subject = db.StringProperty(required=True)
-  description = db.TextProperty()
-  owner = db.UserProperty(required=True)
-  created = db.DateTimeProperty(auto_now_add=True)
-  modified = db.DateTimeProperty(auto_now=True)
-  reviewers = db.ListProperty(db.Email)
-  claimed = db.BooleanProperty(default=False)
-  cc = db.ListProperty(db.Email)
-  closed = db.BooleanProperty(default=False)
-  n_comments = db.IntegerProperty(default=0)
-  n_patchsets = db.IntegerProperty(default=0)
-
-  dest_project = db.ReferenceProperty(Project, required=True)
-  dest_branch = db.ReferenceProperty(Branch, required=True)
-
-  merge_submitted = db.DateTimeProperty()
-  merged = db.BooleanProperty(default=False)
-
-  emailed_clean_merge = db.BooleanProperty(default=False)
-  emailed_missing_dependency = db.BooleanProperty(default=False)
-  emailed_path_conflict = db.BooleanProperty(default=False)
-
-  merge_patchset_key = db.StringProperty()
-  def _get_merge_patchset(self):
-    try:
-      return self._merge_patchset_obj
-    except AttributeError:
-      k_str = self.merge_patchset_key
-      if k_str:
-        self._merge_patchset_obj = db.get(db.Key(k_str))
-      else:
-        self._merge_patchset_obj = None
-    return self._merge_patchset_obj
-
-  def _set_merge_patchset(self, p):
-    if p is None:
-      self.merge_patchset_key = None
-      self._merge_patchset_obj = None
-    else:
-      self.merge_patchset_key = str(p.key())
-      self._merge_patchset_obj = p
-  merge_patchset = property(_get_merge_patchset, _set_merge_patchset)
-
-  _is_starred = None
-
-  @property
-  def is_starred(self):
-    """Whether the current user has this change starred."""
-    if self._is_starred is not None:
-      return self._is_starred
-    account = Account.current_user_account
-    self._is_starred = account is not None and self.key().id() in account.stars
-    return self._is_starred
-
-  def update_comment_count(self, n):
-    """Increment the n_comments property by n.
-    """
-    self.n_comments += n
-
-  @property
-  def num_comments(self):
-    """The number of non-draft comments for this change.
-
-    This is almost an alias for self.n_comments, except that if
-    n_comments is None, it is computed through a query, and stored,
-    using n_comments as a cache.
-    """
-    return self.n_comments
-
-  _num_drafts = None
-
-  @property
-  def num_drafts(self):
-    """The number of draft comments on this change for the current user.
-
-    The value is expensive to compute, so it is cached.
-    """
-    if self._num_drafts is None:
-      account = Account.current_user_account
-      if account is None:
-        self._num_drafts = 0
-      else:
-        query = gql(Comment,
-            'WHERE ANCESTOR IS :1 AND author = :2 AND draft = TRUE',
-            self, account.user)
-        self._num_drafts = query.count()
-    return self._num_drafts
-
-  def new_patchset(self, **kw):
-    """Construct a new patchset for this change.
-    """
-    def trans(change_key):
-      change = db.get(change_key)
-      change.n_patchsets += 1
-      id = change.n_patchsets
-      change.put()
-
-      patchset = PatchSet(change=change, parent=change, id=id, **kw)
-      patchset.put()
-      return patchset
-    return db.run_in_transaction(trans, self.key())
-
-  def set_review_status(self, user):
-    """Gets or inserts the ReviewStatus object for the suppiled user."""
-    return ReviewStatus.get_or_insert_status(self, user)
-
-  def get_review_status(self, user=None):
-    """Return the lgtm status for the given user if supplied.  All for this 
-    change otherwise."""
-    if user:
-      # The owner must be checked separately because she automatically
-      # approves / verifies her own change and there is no ReviewStatus
-      # for that one.
-      if user == self.owner:
-        return []
-      return ReviewStatus.get_status_for_user(self, user)
-    else:
-      return ReviewStatus.all_for_change(self)
-
-  @classmethod
-  def get_reviewer_status(cls, reviews):
-    """Return a tuple of who has commented on the changes.
-
-    The owner of the change is automatically added to the list
-
-    Args:
-      reviews  a list of ReviewStatus objects are returned from
-               get_review_status().
-
-    Returns:
-      A map of the LGTM_CHOICES keys to users, plus the mapping
-          verified_by --> the uesrs who verified it
-    """
-    result = {}
-    for (k,v) in LGTM_CHOICES:
-      result[k] = [r.user for r in reviews if r.lgtm == k]
-    result["verified_by"] = [r.user for r in reviews if r.verified]
-    return result
-
-  @property
-  def is_submitted(self):
-    """Return true if the change has been submitted for merge.
-    """
-    return self.merge_submitted is not None
-
-  def submit_merge(self, patchset):
-    """Schedule a specific patchset of the change to be merged.
-    """
-    branch = self.dest_branch
-    if not branch:
-      raise InvalidSubmitMergeException, 'No branch defined'
-
-    if self.merged:
-      raise InvalidSubmitMergeException, 'Already merged'
-
-    if self.is_submitted:
-      raise InvalidSubmitMergeException, \
-        "Already merging patch set %s" % self.merge_patchset.id
-
-    branch.merge_patchset(patchset)
-    self.merge_submitted = datetime.datetime.now()
-    self.merge_patchset = patchset
-    self.emailed_clean_merge = False
-    self.emailed_missing_dependency = False
-    self.emailed_path_conflict = False
-
-  def unsubmit_merge(self):
-    """Unschedule a merge of this change.
-    """
-    if self.merged:
-      raise InvalidSubmitMergeException, 'Already merged'
-
-    self.merge_submitted = None
-    self.merge_patchset = None
-
-  def set_reviewers(self, reviewers):
-    self.reviewers = reviewers
-    self.claimed = len(reviewers) != 0
-
-  _user_can_edit = None
-  def user_can_edit(self):
-    """Can the current account edit this change?
-    """
-    if self._user_can_edit is None:
-      a = Account.current_user_account
-      if not a:
-        e = False
-      elif a.is_admin:
-        e = True
-      elif self.owner == a.user:
-        e = True
-      elif self.dest_project.is_user_lead(a.user):
-        e = True
-      else:
-        e = False
-      self._user_can_edit = e
-    return self._user_can_edit
-
-  def remove_reviewer(self, user):
-    """Removes a user from the list of reviewers, and removes the ReviewStatus
-    object."""
-    def trans():
-      email = user.email()
-      reviewers = [e for e in self.reviewers if e != email]
-      self.set_reviewers(reviewers)
-      rs = ReviewStatus.get_status_for_user(self, user)
-      if rs:
-        rs.delete()
-      self.put()
-    db.run_in_transaction(trans)
-
-
-
-class PatchSetFilenames(BackedUpModel):
-  """A list of the file names in a PatchSet.
-
-  This is a descendant of a PatchSet.
-  """
-
-  compressed_filenames = db.BlobProperty()
-
-  @classmethod
-  def _mc(cls, patchset):
-    return MemCacheKey("PatchSet %s filenames" % patchset.key())
-
-  @classmethod
-  def store_compressed(cls, patchset, bin):
-    cls(key_name = 'filenames',
-        compressed_filenames = db.Blob(bin),
-        parent = patchset).put()
-    cls._mc(patchset).set(cls._split(bin))
-
-  @classmethod
-  def get_list(cls, patchset):
-    def read():
-      c = cls.get_by_key_name('filenames', parent = patchset)
-      if c:
-        return cls._split(c.compressed_filenames)
-      names = patchset._all_filenames()
-      bin = zlib.compress("\0".join(names).encode('utf_8'), 9)
-      cls(key_name = 'filenames',
-          compressed_filenames = db.Blob(bin),
-          parent = patchset).put()
-      return names
-    return cls._mc(patchset).get(read)
-
-  @classmethod
-  def _split(cls, bin):
-    tmp = zlib.decompress(bin).split("\0")
-    return [s.decode('utf_8') for s in tmp]
-
-
-class PatchSet(BackedUpModel):
-  """A set of patchset uploaded together.
-
-  This is a descendant of an Change and has Patches as descendants.
-  """
-
-  id = db.IntegerProperty(required=True)
-  change = db.ReferenceProperty(Change, required=True) # == parent
-  message = db.StringProperty()
-  owner = db.UserProperty(required=True)
-  created = db.DateTimeProperty(auto_now_add=True)
-  modified = db.DateTimeProperty(auto_now=True)
-  revision = db.ReferenceProperty(RevisionId, required=True)
-  complete = db.BooleanProperty(default=False)
-
-  _filenames = None
-
-  @property
-  def filenames(self):
-    if self._filenames is None:
-      self._filenames = PatchSetFilenames.get_list(self)
-    return self._filenames
-
-  def _all_filenames(self):
-    last = ''
-    names = []
-    while True:
-      list = gql(Patch,
-                 'WHERE patchset = :1 AND filename > :2'
-                 ' ORDER BY filename',
-                 self, last).fetch(500)
-      if not list:
-        break
-      for p in list:
-        names.append(p.filename)
-      last = list[-1].filename
-    return names
-
-  def revision_hash(self):
-    return self.revision.id
-
-
-class Message(BackedUpModel):
-  """A copy of a message sent out in email.
-
-  This is a descendant of an Change.
-  """
-
-  change = db.ReferenceProperty(Change, required=True)  # == parent
-  subject = db.StringProperty()
-  sender = db.EmailProperty()
-  recipients = db.ListProperty(db.Email)
-  date = db.DateTimeProperty(auto_now_add=True)
-  text = db.TextProperty()
-
-
-class CachedDeltaContent(object):
-  """A fully inflated DeltaContent stored in memcache.
-  """
-  def __init__(self, dc):
-    self.data_lines = dc.data_lines
-    self.patch_lines = dc.patch_lines
-    self.is_patch = dc.is_patch
-    self.is_data = dc.is_data
-
-  @property
-  def data_text(self):
-    if self.data_lines is None:
-      return None
-    return ''.join(self.data_lines)
-
-  @property
-  def patch_text(self):
-    if self.patch_lines is None:
-      return None
-    return ''.join(self.patch_lines)
-
-  @classmethod
-  def get(cls, key):
-    def load():
-      dc = db.get(key)
-      if dc:
-        return cls(dc)
-      return None
-    return MemCacheKey('DeltaContent:%s' % key.name(),
-                       compress = True).get(load)
-
-
-def _apply_patch(old_lines, patch_name, dif_lines):
-  new_lines = []
-  chunks = patching.ParsePatchToChunks(dif_lines, patch_name)
-  for tag, old, new in patching.PatchChunks(old_lines, chunks):
-    new_lines.extend(new)
-  return ''.join(new_lines)
-
-def _blob_hash(data):
-  m = hashlib.sha1()
-  m.update("blob %d\0" % len(data))
-  m.update(data)
-  return m.hexdigest()
-
-
-class DeltaContent(BackedUpModel):
-  """Any content, such as for the old or new image of a Patch,
-     or the patch data itself.
-
-     These are stored as top-level entities.
-
-     Key:
-        Git blob SHA-1 of inflate(text)
-      -or-
-        Randomly generated name if this is a patch
-  """
-
-  text_z = db.BlobProperty(required=True)
-  depth = db.IntegerProperty(default=0, required=True)
-  base = db.SelfReferenceProperty()
-
-  _data_lines = None
-  _data_text = None
-  _patch_text = None
-  _patch_lines = None
-
-  @classmethod
-  def create_patch(cls, id, text_z):
-    key_name = 'patch:%s' % id
-    return cls.get_or_insert(key_name,
-                             text_z = db.Blob(text_z),
-                             depth = 0,
-                             base = None)
-
-  @classmethod
-  def create_content(cls, id, text_z, base = None):
-    """Create (or lookup and return an existing) content instance.
-
-       Arguments:
-        id:
-          Git blob SHA-1 hash of the fully inflated content.
-        text_z:
-          If base is None this is the deflated content whose hash
-          is id.
-
-          If base is supplied this is a patch which when applied to
-          base yields the content whose hash is id.
-        base:
-          The base content if text_z is a patch.
-    """
-    key_name = 'content:%s' % id
-    r = cls.get_by_key_name(key_name)
-    if r:
-      return r
-
-    if base is None:
-      return cls.get_or_insert(key_name,
-                               text_z = db.Blob(text_z),
-                               depth = 0,
-                               base = None)
-
-    my_text = _apply_patch(base.data_lines,
-                           id,
-                           zlib.decompress(text_z).splitlines(True))
-    cmp_id = _blob_hash(my_text)
-    if id != cmp_id:
-      raise DeltaPatchingException()
-
-    if base.depth < MAX_DELTA_DEPTH:
-      return cls.get_or_insert(key_name,
-                               text_z = db.Blob(text_z),
-                               depth = base.depth + 1,
-                               base = base)
-    return cls.get_or_insert(key_name,
-                             text_z = db.Blob(zlib.compress(my_text)),
-                             depth = 0,
-                             base = None)
-
-  @property
-  def is_patch(self):
-    return self._base or self.key().name().startswith('patch:')
-
-  @property
-  def is_data(self):
-    return self.key().name().startswith('content:')
-
-  @property
-  def data_text(self):
-    if self._data_text is None:
-      if self._base:
-        base = CachedDeltaContent.get(self._base)
-        raw = _apply_patch(base.data_lines,
-                           self.key().name(),
-                           self.patch_lines)
-      else:
-        raw = zlib.decompress(self.text_z)
-      self._data_text = raw
-    return self._data_text
-
-  @property
-  def data_lines(self):
-    if self._data_lines is None:
-      self._data_lines = self.data_text.splitlines(True)
-    return self._data_lines
-
-  @property
-  def patch_text(self):
-    if not self.is_patch:
-      return None
-    if self._patch_text is None:
-      self._patch_text = zlib.decompress(self.text_z)
-    return self._patch_text
-
-  @property
-  def patch_lines(self):
-    if not self.is_patch:
-      return None
-    if self._patch_lines is None:
-      self._patch_lines = self.patch_text.splitlines(True)
-    return self._patch_lines
-
-
-class PatchOtherVersion(object):
-  """A reference to a prior version of a patch
-  """
-  def __init__(self, patchset_id, patchset_name, patch_id):
-    self.patchset_id = patchset_id
-    self.patchset_name = patchset_name
-    self.patch_id = patch_id
-
-class Patch(BackedUpModel):
-  """A single patch, i.e. a set of changes to a single file.
-
-  This is a descendant of a PatchSet.
-  """
-
-  patchset = db.ReferenceProperty(PatchSet, required=True)  # == parent
-  filename = db.StringProperty(required=True)
-  status = db.StringProperty(required=True)  # 'A', 'M', 'D'
-  multi_way_diff = db.BooleanProperty(default=False)
-  n_comments = db.IntegerProperty()
-
-  old_data = db.ReferenceProperty(DeltaContent, collection_name='olddata_set')
-  new_data = db.ReferenceProperty(DeltaContent, collection_name='newdata_set')
-  diff_data = db.ReferenceProperty(DeltaContent, collection_name='diffdata_set')
-
-  # Note: Each entry is a triple:
-  #   "${patchset.key().id} ${patchset.id} ${patch.id}"
-  #
-  other_versions = db.StringListProperty()
-
-  @classmethod
-  def get_or_insert_patch(cls, patchset, filename, **kw):
-    """Get or insert the patch for a specific file path.
-
-    This method runs in an independent transaction.
-    """
-    m = hashlib.sha1()
-    m.update(filename)
-    key = 'z%s' % m.hexdigest()
-    return cls.get_or_insert(key,
-                             parent = patchset,
-                             patchset = patchset,
-                             filename = filename,
-                             **kw)
-
-  @classmethod
-  def get_patch_by_filename(cls, parent, filename):
-    m = hashlib.sha1()
-    m.update(filename)
-    key = 'z%s' % m.hexdigest()
-    return cls.get_by_key_name(key, parent=parent);
-
-  @classmethod
-  def get_patch(cls, parent, id_str):
-    if id_str.startswith('z'):
-      return cls.get_by_key_name(id_str, parent=parent);
-    else:
-      return cls.get_by_id(int(id_str), parent=parent);
-
-  @property
-  def id(self):
-    return str(self.key().id_or_name())
-
-  @property
-  def num_comments(self):
-    """The number of non-draft comments for this patch.
-    """
-    return self.n_comments
-
-  def update_comment_count(self, n):
-    """Increment the n_comments property by n.
-    """
-    self.n_comments += n
-
-  _num_drafts = None
-
-  @property
-  def num_drafts(self):
-    """The number of draft comments on this patch for the current user.
-
-    The value is expensive to compute, so it is cached.
-    """
-    if self._num_drafts is None:
-      user = Account.current_user_account
-      if user is None:
-        self._num_drafts = 0
-      else:
-        query = gql(Comment,
-                    'WHERE patch = :1 AND draft = TRUE AND author = :2',
-                    self, user.user)
-        self._num_drafts = query.count()
-    return self._num_drafts
-
-  @property
-  def other_patch_versions(self):
-    return [PatchOtherVersion(*t)
-            for t
-            in [line.split(' ', 3)
-                for line
-                in self.other_versions]]
-
-  def _data(self, name):
-    prop = '_%s_CachedDeltaContent' % name
-    try:
-      c = getattr(self, prop)
-    except AttributeError:
-      # XXX Using internal knowledge about db package:
-      # Key for ReferenceProperty 'foo' is '_foo'.
-
-      data_key = getattr(self, '_%s_data' % name, None)
-      if data_key:
-        c = CachedDeltaContent.get(data_key)
-        if data_key in ('diff', 'new') \
-           and self._diff_data == self._new_data:
-          self._diff_CachedDeltaContent = c
-          self._new_CachedDeltaContent = c
-        else:
-          setattr(self, prop, c)
-      else:
-        c = None
-        setattr(self, prop, c)
-    return c
-
-  def patch_equals(self, other_delta):
-    """Does this patch use the given DeltaContent as its patch body?
-    """
-    return self._diff_data == other_delta.key()
-
-  @property
-  def patch_text(self):
-    """Get the patch converting old_text to new_text.
-    """
-    return self._data('diff').patch_text
-
-  @property
-  def patch_lines(self):
-    """The patch_text split into lines, retaining line endings.
-    """
-    return self._data('diff').patch_lines
-
-  @property
-  def old_text(self):
-    """Original version of the file text.
-    """
-    d = self._data('old')
-    if d:
-      return d.data_text
-    return ''
-
-  @property
-  def old_lines(self):
-    """The old_text split into lines, retaining line endings.
-    """
-    d = self._data('old')
-    if d:
-      return d.data_lines
-    return []
-
-  @property
-  def new_text(self):
-    """Get self.new_content
-    """
-    d = self._data('new')
-    if d:
-      return d.data_text
-    return ''
-
-  @property
-  def new_lines(self):
-    """The new_text split into lines, retaining line endings.
-    """
-    d = self._data('new')
-    if d:
-      return d.data_lines
-    return []
-
-
-class Comment(BackedUpModel):
-  """A Comment for a specific line of a specific file.
-
-  This is a descendant of a Patch.
-  """
-
-  patch = db.ReferenceProperty(Patch)  # == parent
-  message_id = db.StringProperty()  # == key_name
-  author = db.UserProperty()
-  date = db.DateTimeProperty(auto_now=True)
-  lineno = db.IntegerProperty()
-  text = db.TextProperty()
-  left = db.BooleanProperty()
-  draft = db.BooleanProperty(required=True, default=True)
-
-  def complete(self, patch):
-    """Set the shorttext and buckets attributes."""
-    # TODO(guido): Turn these into caching proprties instead.
-    # TODO(guido): Properly parse the text into quoted and unquoted buckets.
-    self.shorttext = self.text.lstrip()[:50].rstrip()
-    self.buckets = [Bucket(text=self.text)]
-
-
-class Bucket(BackedUpModel):
-  """A 'Bucket' of text.
-
-  A comment may consist of multiple text buckets, some of which may be
-  collapsed by default (when they represent quoted text).
-
-  NOTE: This entity is never written to the database.  See Comment.complete().
-  """
-  # TODO(guido): Flesh this out.
-
-  text = db.TextProperty()
-
-
-class ReviewStatus(BackedUpModel):
-  """The information for whether a user has LGTMed or verified a change."""
-  change = db.ReferenceProperty(Change, required=True)  # == parent
-  user = db.UserProperty(required=True)
-  lgtm = db.StringProperty()
-  verified = db.BooleanProperty()
-
-  @classmethod
-  def get_or_insert_status(cls, change, user):
-    key = '<%s>' % user.email
-    return ReviewStatus.get_or_insert(key,
-                             change=change,
-                             user=user,
-                             parent=change)
-
-  @classmethod
-  def insert_status(cls, change, user):
-    key = '<%s>' % user.email
-    return ReviewStatus(key_name=key, change=change, user=user, parent=change)
-
-  @classmethod
-  def get_status_for_user(cls, change, user):
-    key = '<%s>' % user.email
-    return cls.get_by_key_name(key, parent=change)
-
-  @classmethod
-  def all_for_change(cls, change):
-    return gql(ReviewStatus,
-               'WHERE ANCESTOR IS :1',
-               change).fetch(FETCH_MAX)
-
-
-### Contributor License Agreements ###
-
-class IndividualCLA:
-  NONE = 0
-
-
-### Accounts ###
-
-
-class Account(BackedUpModel):
-  """Maps a user or email address to a user-selected real_name, and more.
-
-  Nicknames do not have to be unique.
-
-  The default real_name is generated from the email address by
-  stripping the first '@' sign and everything after it.  The email
-  should not be empty nor should it start with '@' (AssertionError
-  error is raised if either of these happens).
-
-  Holds a list of ids of starred changes.  The expectation
-  that you won't have more than a dozen or so starred changes (a few
-  hundred in extreme cases) and the memory used up by a list of
-  integers of that size is very modest, so this is an efficient
-  solution.  (If someone found a use case for having thousands of
-  starred changes we'd have to think of a different approach.)
-
-  Returns whether a user is authorized to do lgtm or verify.
-  For now, these authorization check methods do not test which repository
-  the change is in.  This will change.
-  """
-
-  user = db.UserProperty(required=True)
-  email = db.EmailProperty(required=True)  # key == <email>
-  preferred_email = db.EmailProperty()
-
-  created = db.DateTimeProperty(auto_now_add=True)
-  modified = db.DateTimeProperty(auto_now=True)
-
-  is_admin = db.BooleanProperty(default=False)
-  welcomed = db.BooleanProperty(default=False)
-  real_name_entered = db.BooleanProperty(default=False)
-  real_name = db.StringProperty()
-  mailing_address = db.TextProperty()
-  mailing_address_country = db.StringProperty()
-  phone_number = db.StringProperty()
-  fax_number = db.StringProperty()
-
-  cla_verified = db.BooleanProperty(default=False)
-  cla_verified_by = db.UserProperty()
-  cla_verified_timestamp = db.DateTimeProperty() # the first time it's set
-  individual_cla_version = db.IntegerProperty(default=IndividualCLA.NONE)
-  individual_cla_timestamp = db.DateTimeProperty()
-  cla_comments = db.TextProperty()
-
-  default_context = db.IntegerProperty(default=DEFAULT_CONTEXT,
-                                       choices=CONTEXT_CHOICES)
-  stars = db.ListProperty(int)  # Change ids of all starred changes
-  unclaimed_changes_projects = db.ListProperty(db.Key)
-
-  # Current user's Account.  Updated by middleware.AddUserToRequestMiddleware.
-  current_user_account = None
-
-  def get_email(self):
-    "Gets the email that this person wants us to use -- separate from login."
-    if self.preferred_email:
-      return self.preferred_email
-    else:
-      return self.email
-
-  def get_email_formatted(self):
-    return '"%s" <%s>' % (self.real_name, self.get_email())
-
-  @classmethod
-  def get_account_for_user(cls, user):
-    """Get the Account for a user, creating a default one if needed."""
-    email = user.email()
-    assert email
-    key = '<%s>' % email
-    # Since usually the account already exists, first try getting it
-    # without the transaction implied by get_or_insert().
-    account = cls.get_by_key_name(key)
-    if account is not None:
-      return account
-    real_name = user.nickname()
-    if '@' in real_name:
-      real_name = real_name.split('@', 1)[0]
-    assert real_name
-    return cls.get_or_insert(key, user=user, email=email, real_name=real_name)
-
-  @classmethod
-  def get_account_for_email(cls, email):
-    """Get the Account for an email address, or return None."""
-    assert email
-    key = '<%s>' % email
-    return cls.get_by_key_name(key)
-
-  @classmethod
-  def get_accounts_for_emails(cls, emails):
-    """Get the Accounts for all email address.
-    """
-    return cls.get_by_key_name(map(lambda x: '<%s>' % x, emails))
-
-  @classmethod
-  def get_real_name_for_email(cls, email):
-    """Get the real_name for an email address, possibly a default."""
-    account = cls.get_account_for_email(email)
-    if account is not None and account.real_name:
-      return account.real_name
-    real_name = email
-    if '@' in real_name:
-      real_name = real_name.split('@', 1)[0]
-    assert real_name
-    return real_name
-
-  @classmethod
-  def get_accounts_for_real_name(cls, real_name):
-    """Get the list of Accounts that have this real_name."""
-    assert real_name
-    assert '@' not in real_name
-    return list(gql(cls, 'WHERE real_name = :1', real_name))
-
-  @classmethod
-  def get_email_for_real_name(cls, real_name):
-    """Turn a real_name into an email address.
-
-    If the real_name is not unique or does not exist, this returns None.
-    """
-    accounts = cls.get_accounts_for_real_name(real_name)
-    if len(accounts) != 1:
-      return None
-    return accounts[0].email
-
-  _draft_key = None
-
-  @property
-  def drafts(self):
-    """A list of change ids that have drafts by this user.
-
-    This is cached in memcache.
-    """
-    if self._draft_key is None:
-      self._draft_key = MemCacheKey(
-          key = 'user_drafts:%s' % self.email,
-          incore = True,
-          timeout = 3600)
-
-    def query_store():
-      # We're looking for the Change key id.
-      # The ancestry of comments goes:
-      # Change -> PatchSet -> Patch -> Comment.
-      #
-      change_ids = set(comment.key().parent().parent().parent().id()
-                       for comment
-                       in gql(Comment,
-                              'WHERE author = :1'
-                              ' AND draft = TRUE',
-                              self.user))
-      return list(change_ids)
-    return self._draft_key.get(query_store)
-
-  def update_drafts(self, change, have_drafts=None):
-    """Update the user's draft status for this change.
-
-    Args:
-      change: an Change instance.
-      have_drafts: optional bool forcing the draft status.  By default,
-          change.num_drafts is inspected (which may query the datastore).
-
-    The Account is written to the datastore if necessary.
-    """
-    my_drafts = self.drafts
-    id = change.key().id()
-    if have_drafts is None:
-      have_drafts = bool(change.num_drafts)  # this may do a query
-
-    if have_drafts:
-      if id not in my_drafts:
-        my_drafts.append(id)
-        self._draft_key.set(my_drafts)
-    else:
-      if id in my_drafts:
-        my_drafts.remove(id)
-        self._draft_key.set(my_drafts)
-
-
-### Group ###
-
-AUTO_GROUPS = ['admin']
-
-class AccountGroup(BackedUpModel):
-  """A set of users.  Permissions are assigned to groups.
-  
-  There are some groups that can't be deleted -- like admin and all
-  """
-  
-  name = db.StringProperty(required=True)
-  comment = db.TextProperty(required=False)
-  members = db.ListProperty(users.User)
-
-  @classmethod
-  def get_all_groups(cls):
-    """Return all groups"""
-    all = cls.all()
-    all.order('name')
-    return list(all)
-
-  @property
-  def is_auto_group(self):
-    """These groups can't be deleted."""
-    return self.name in AUTO_GROUPS
-
-  @classmethod
-  def create_groups(cls):
-    for group_name in AUTO_GROUPS:
-      def trans():
-        g = cls(name = group_name,
-                comment = 'Auto created %s group' % group_name)
-        g.put()
-      if not cls.get_group_for_name(group_name):
-        db.run_in_transaction(trans)
-
-  @classmethod
-  def get_group_for_name(cls, name):
-    return cls.gql('WHERE name=:name', name=name).get()
-
-  def remove(self):
-    """delete this group"""
-    def trans(group):
-      group.delete()
-      # this will do the ON DELETE CASCADE once the users are in there
-    db.run_in_transaction(trans, self)
diff --git a/webapp/codereview/patching.py b/webapp/codereview/patching.py
deleted file mode 100644
index 82ca6cf..0000000
--- a/webapp/codereview/patching.py
+++ /dev/null
@@ -1,263 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Utility to read and apply a unified diff without forking patch(1).
-
-For a discussion of the unified diff format, see my blog on Artima:
-http://www.artima.com/weblogs/viewpost.jsp?thread=164293
-"""
-
-import difflib
-import logging
-import re
-import sys
-
-
-_CHUNK_RE = re.compile(r"""
-  @@
-  \s+
-  -
-  (?: (\d+) (?: , (\d+) )?)
-  \s+
-  \+
-  (?: (\d+) (?: , (\d+) )?)
-  \s+
-  @@
-""", re.VERBOSE)
-_MULTI_WAY_CHUNK_RE = re.compile(r"""
-  @@@@*
-  \s+
-  -
-  (?: (\d+) (?: , (\d+) )?)
-  \s+
-  [^@]*
-  \s+
-  \+
-  (?: (\d+) (?: , (\d+) )?)
-  \s+
-  @@@@*
-""", re.VERBOSE)
-
-
-def PatchLines(old_lines, patch_lines, name="<patch>"):
-  """Patches the old_lines with patches read from patch_lines.
-
-  This only reads unified diffs.  The header lines are ignored.
-  Yields (tag, old, new) tuples where old and new are lists of lines.
-  The tag can either start with "error" or be a tag from difflib: "equal",
-  "insert", "delete", "replace".  After "error" is yielded, no more
-  tuples are yielded.  It is possible that consecutive "equal" tuples
-  are yielded.
-  """
-  chunks = ParsePatchToChunks(patch_lines, name)
-  if chunks is None:
-    return iter([("error: ParsePatchToChunks failed", [], [])])
-  return PatchChunks(old_lines, chunks)
-
-
-def PatchChunks(old_lines, chunks):
-  """Patche old_lines with chunks.
-
-  Yields (tag, old, new) tuples where old and new are lists of lines.
-  The tag can either start with "error" or be a tag from difflib: "equal",
-  "insert", "delete", "replace".  After "error" is yielded, no more
-  tuples are yielded.  It is possible that consecutive "equal" tuples
-  are yielded.
-  """
-  if not chunks:
-    # The patch is a no-op
-    yield ("equal", old_lines, old_lines)
-    return
-
-  old_pos = 0
-  for (old_i, old_j), (new_i, new_j), old_chunk, new_chunk in chunks:
-    eq = old_lines[old_pos:old_i]
-    if eq:
-      yield "equal", eq, eq
-    old_pos = old_i
-    # Check that the patch matches the target file
-    if old_lines[old_i:old_j] != old_chunk:
-      logging.error("mismatch:%s.%s.", old_lines[old_i:old_j], old_chunk)
-      yield ("error: old chunk mismatch", old_lines[old_i:old_j], old_chunk)
-      return
-    # TODO(guido): ParsePatch knows the diff details, but throws the info away
-    sm = difflib.SequenceMatcher(None, old_chunk, new_chunk)
-    for tag, i1, i2, j1, j2 in sm.get_opcodes():
-      yield tag, old_chunk[i1:i2], new_chunk[j1:j2]
-    old_pos = old_j
-
-  # Copy the final matching chunk if any.
-  eq = old_lines[old_pos:]
-  if eq:
-    yield ("equal", eq, eq)
-
-
-_NO_NEWLINE_MESSAGE = "\\ No newline at end of file"
-
-
-def ParsePatchToChunks(lines, name="<patch>"):
-  """Parses a patch from a list of lines.
-
-  Return a list of chunks, where each chunk is a tuple:
-
-    old_range, new_range, old_lines, new_lines
-
-  Returns a list of chunks (possibly empty); or None if there's a problem.
-  """
-  lineno = 0
-  raw_chunk = []
-  chunks = []
-  old_range = new_range = None
-  old_last = new_last = 0
-  in_prelude = True
-  for line in lines:
-    lineno += 1
-    if in_prelude:
-      # Skip leading lines until after we've seen one starting with '+++'
-      if line.startswith("+++"):
-        in_prelude = False
-      continue
-    match = _CHUNK_RE.match(line)
-    if match:
-      if raw_chunk:
-        # Process the lines in the previous chunk
-        old_chunk = []
-        new_chunk = []
-        for tag, rest in raw_chunk:
-          if tag in (" ", "-"):
-            old_chunk.append(rest)
-          if tag in (" ", "+"):
-            new_chunk.append(rest)
-        # Check consistency
-        old_i, old_j = old_range
-        new_i, new_j = new_range
-        if len(old_chunk) != old_j - old_i or len(new_chunk) != new_j - new_i:
-          logging.warn("%s:%s: previous chunk has incorrect length",
-                       name, lineno)
-          return None
-        chunks.append((old_range, new_range, old_chunk, new_chunk))
-        raw_chunk = []
-      # Parse the @@ header
-      old_ln, old_n, new_ln, new_n = match.groups()
-      old_ln, old_n, new_ln, new_n = map(long,
-                                         (old_ln, old_n or 1,
-                                          new_ln, new_n or 1))
-      # Convert the numbers to list indices we can use
-      if old_n == 0:
-        old_i = old_ln
-      else:
-        old_i = old_ln - 1
-      old_j = old_i + old_n
-      old_range = old_i, old_j
-      if new_n == 0:
-        new_i = new_ln
-      else:
-        new_i = new_ln - 1
-      new_j =new_i + new_n
-      new_range = new_i, new_j
-      # Check header consistency with previous header
-      if old_i < old_last or new_i < new_last:
-        logging.warn("%s:%s: chunk header out of order: %r",
-                     name, lineno, line)
-        return None
-      if old_i - old_last != new_i - new_last:
-        logging.warn("%s:%s: inconsistent chunk header: %r",
-                     name, lineno, line)
-        return None
-      old_last = old_j
-      new_last = new_j
-    else:
-      tag, rest = line[0], line[1:]
-      if tag in (" ", "-", "+"):
-        raw_chunk.append((tag, rest))
-      elif line.startswith(_NO_NEWLINE_MESSAGE):
-        # TODO(guido): need to check that no more lines follow for this file
-        if raw_chunk:
-          last_tag, last_rest = raw_chunk[-1]
-          if last_rest.endswith("\n"):
-            raw_chunk[-1] = (last_tag, last_rest[:-1])
-      else:
-        # Only log if it's a non-blank line.  Blank lines we see a lot.
-        if line and line.strip():
-          logging.warn("%s:%d: indecypherable input: %r", name, lineno, line)
-        if chunks or raw_chunk:
-          break  # Trailing garbage isn't so bad
-        return None
-  if raw_chunk:
-    # Process the lines in the last chunk
-    old_chunk = []
-    new_chunk = []
-    for tag, rest in raw_chunk:
-      if tag in (" ", "-"):
-        old_chunk.append(rest)
-      if tag in (" ", "+"):
-        new_chunk.append(rest)
-    # Check consistency
-    old_i, old_j = old_range
-    new_i, new_j = new_range
-    if len(old_chunk) != old_j - old_i or len(new_chunk) != new_j - new_i:
-      print >>sys.stderr, ("%s:%s: last chunk has incorrect length" %
-                           (name, lineno))
-      return None
-    chunks.append((old_range, new_range, old_chunk, new_chunk))
-    raw_chunk = []
-  return chunks
-
-
-# TODO: can we share some of this code with ParsePatchToChunks?
-def ParsePatchToLines(lines, multi_way_diff=False):
-  """Parses a patch from a list of lines.
-
-  Returns None on error, otherwise a list of 3-tuples:
-    (old_line_no, new_line_no, line)
-
-    A line number can be 0 if it doesn't exist in the old/new file.
-  """
-  if multi_way_diff:
-    hdr_pat = _MULTI_WAY_CHUNK_RE
-  else:
-    hdr_pat = _CHUNK_RE
-
-  result = []
-  in_prelude = True
-  for line in lines:
-    if in_prelude:
-      result.append((0, 0, line))
-      # Skip leading lines until after we've seen one starting with '+++'
-      if line.startswith("+++"):
-        in_prelude = False
-    elif line.startswith("@"):
-      result.append((0, 0, line))
-      match = hdr_pat.match(line)
-      if not match:
-        logging.warn("ParsePatchToLines match failed on %s", line)
-        return None
-      old_ln = int(match.groups()[0])
-      new_ln = int(match.groups()[2])
-    else:
-      if line[0] == "-":
-        result.append((old_ln, 0, line))
-        old_ln += 1
-      elif line[0] == "+":
-        result.append((0, new_ln, line))
-        new_ln += 1
-      elif line[0] == " ":
-        result.append((old_ln, new_ln, line))
-        old_ln += 1
-        new_ln += 1
-      elif line.startswith(_NO_NEWLINE_MESSAGE):
-        continue
-      else:  # Something else, could be property changes etc.
-        result.append((0, 0, line))
-  return result
diff --git a/webapp/codereview/people.py b/webapp/codereview/people.py
deleted file mode 100644
index bb1c4de..0000000
--- a/webapp/codereview/people.py
+++ /dev/null
@@ -1,354 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Info about the users
-
-This requires Django 0.97.pre.
-"""
-
-import datetime
-import logging
-
-from google.appengine.api import memcache
-
-from django import forms
-from django import http
-from django.utils import simplejson
-
-import models
-import views
-import fields
-from view_util import *
-
-def respond_json(obj):
-  data = simplejson.dumps(obj)
-  return http.HttpResponse(data,
-      mimetype="text/javascript; charset=utf-8")
-
-def get_user_info(request):
-  """check if the requested user exists
-  
-  Parameters:
-    id: the user's email address or the group name
-    allow_users: whether users are allowed, true by default
-    allow_groups: whether groups are allowed, true by default
-
-  Result:
-  If user/group not found:
-    null
-  If user found: map of
-    type: "user"
-    key: a unique key for this user
-    email: their email address
-    real_name: the user's real name
-  If group found: map of
-    type: "group"
-    key: a unique key for this group
-    name: the name of the group
-
-  If users or groups are not allowed, then null will be returned
-  even if there does happen to be a user or group with that name
-  """
-  id = request.REQUEST.get("id", None)
-  if not id:
-    return http.HttpResponseServerError("id not provided")
-  allow_users = request.REQUEST.get("allow_users", "true")
-  allow_groups = request.REQUEST.get("allow_groups", "true")
-  if allow_users != "false":
-    account = models.Account.get_account_for_email(id)
-    if account:
-      return respond_json({
-          'allow_users': allow_users,
-          'allow_groups': allow_groups,
-          'type': 'user',
-          'key': "user/" + account.email,
-          'email': account.email,
-          'real_name': account.real_name,
-          })
-  if allow_groups != "false":
-    group = models.AccountGroup.get_group_for_name(id)
-    if group:
-      return respond_json({
-          'allow_users': allow_users,
-          'allow_groups': allow_groups,
-          'type': 'group',
-          'key': "group/" + str(group.key()),
-          'name': group.name,
-          })
-  return respond_json(None)
-
-@user_required
-def user_info(request):
-  """/user_info/..."""
-  op = request.REQUEST.get("op", None)
-  if op == "get_user_info":
-    return get_user_info(request);
-  return http.HttpResponseServerError("op=" + str(op))
-
-@admin_required
-def admin_users(request):
-  """/admin/users - list of all users"""
-  return respond(request, 'admin_users.html', {})
-
-@admin_required
-def admin_unverified_clas(request):
-  """/admin/unverified_clas - list of users who need CLAs"""
-  max = 100
-  first_email = request.GET.get('first', '')
-  unverified_users = models.gql(models.Account,
-                                'WHERE welcomed = True'
-                                ' AND cla_verified = False'
-                                ' AND email >= :1'
-                                ' ORDER BY email',
-                                first_email).fetch(max + 1)
-  if len(unverified_users) > max:
-    next_email = unverified_users[-1].email
-    unverified_users = unverified_users[:-1]
-  else:
-    next_email = None
-  return respond(request, 'admin_unverified_clas.html', {
-                 'unverified_users': unverified_users,
-                 'next_email': next_email,
-                 'next_size': max,
-                 })
-
-def _get_groups_for_account(account):
-  return models.gql(models.AccountGroup,
-                    'WHERE members = :1',
-                    account.user).fetch(models.FETCH_MAX)
-
-def _set_groups_for_account(account, groups):
-  u = account.user
-  existing = _get_groups_for_account(account)
-  changed = False
-
-  # remove from the ones that don't have it any more
-  group_keys = [g.key() for g in groups]
-  for g in existing:
-    if g.name == 'admin' and account.is_admin:
-      account.is_admin = False
-      account.put()
-    if g.key() not in group_keys:
-      g.members.remove(u)
-      g.put()
-      changed = True
-
-  # add to the ones that didn't have it before
-  existing_keys = [g.key() for g in existing]
-  for g in groups:
-    if g.key() not in existing_keys:
-      g.members.append(u)
-      g.put()
-      changed = True
-    if g.name == 'admin' and not account.is_admin:
-      account.is_admin = True
-      account.put()
-
-  if changed:
-    memcache.flush_all()
-  
-class AdminUserForm(BaseForm):
-  _template = 'admin_user.html'
-
-  dest = forms.fields.CharField(widget=forms.widgets.HiddenInput)
-
-  # user info
-  real_name = forms.CharField(max_length=60)
-  preferred_email = forms.EmailField(required=False)
-  mailing_address = forms.CharField(required=False,
-                          max_length=150,
-                          widget=forms.Textarea(attrs={'rows': 4, 'cols': 60}))
-  mailing_address_country = forms.CharField(max_length=30, required=False)
-  phone_number = forms.CharField(max_length=30, required=False)
-  fax_number = forms.CharField(max_length=30, required=False)
-
-  # groups
-  groups = fields.UserGroupField(allow_users=False, allow_groups=True)
-
-  # cla
-  cla_verified = forms.fields.BooleanField(required=False)
-  cla_comments = forms.CharField(required=False,
-                          max_length=300,
-                          widget=forms.Textarea(attrs={'rows': 6, 'cols': 60}))
-
-  @classmethod
-  def _init(cls, state):
-    account = state['account']
-    dest = state['dest']
-    return {
-        'initial': {
-            'dest': dest,
-            'real_name': account.real_name,
-            'preferred_email': account.preferred_email,
-            'mailing_address': account.mailing_address,
-            'mailing_address_country': account.mailing_address_country,
-            'phone_number': account.phone_number,
-            'fax_number': account.fax_number,
-            'groups': _get_groups_for_account(account),
-            'cla_verified': account.cla_verified,
-            'cla_verified_by': account.cla_verified_by,
-            'cla_verified_timestamp': account.cla_verified_timestamp,
-            'individual_cla_version': account.individual_cla_version,
-            'individual_cla_timestamp': account.individual_cla_timestamp,
-            'cla_comments': account.cla_comments,
-          },
-        }
-
-  def _save(self, cd, state):
-    account = state['account']
-    account.real_name = cd['real_name'].strip()
-    if cd['preferred_email']:
-      account.preferred_email = cd['preferred_email']
-    account.mailing_address = cd['mailing_address']
-    account.mailing_address_country = cd['mailing_address_country']
-    account.phone_number = cd['phone_number']
-    account.fax_number = cd['fax_number']
-    if account.cla_verified != cd['cla_verified']:
-      account.cla_verified = cd['cla_verified']
-      account.cla_verified_by = models.Account.current_user_account.user
-    if cd['cla_verified'] and account.cla_verified_timestamp is None:
-      account.cla_verified_timestamp = datetime.datetime.utcnow()
-    account.cla_comments = cd['cla_comments']
-    account.put()
-    _set_groups_for_account(account, 
-                            fields.UserGroupField.get_groups(cd['groups']))
-    if self.is_valid():
-      return HttpResponseRedirect(cd['dest'])
-
-
-@admin_required
-def admin_user(request, email):
-  """/admin/user/email@address.com - edit this user"""
-  account = models.Account.get_account_for_email(email)
-  if not account:
-    return http.HttpResponseNotFound("No such user")
-  referrer = request.META.get('HTTP_REFERER', '/admin/users')
-  state = {
-      'account': account,
-      'dest': referrer,
-    }
-  return process_form(request, AdminUserForm, state, None, {'email':email})
-  
-@admin_required
-def admin_groups(request):
-  """/admin/groups - list of all groups"""
-  groups = models.AccountGroup.get_all_groups()
-  if not groups:
-    models.AccountGroup.create_groups()
-    groups = models.AccountGroup.get_all_groups()
-  return respond(request, 'admin_groups.html', {'groups': groups})
-
-class AdminGroupForm(BaseForm):
-  _template = 'admin_group.html'
-
-  name = forms.CharField(max_length=30)
-  comment = forms.CharField(required=False,
-                            max_length=10000,
-                            widget=forms.Textarea(attrs={'cols': 60}))
-  members = fields.UserGroupField(allow_users=True, allow_groups=False)
-
-  @classmethod
-  def _init(cls, group):
-     who = group.members
-     who = fields.UserGroupField.field_value_for_keys(users = who)
-     return {'initial': {'name': group.name,
-             'comment': group.comment,
-             'members': who
-            }}
-
-  def _save(self, cd, group):
-    new_name = cd['name'].strip()
-    if group.is_auto_group and group.name != new_name:
-      self.errors['name'] = ['Name can not be changed']
-
-    # TODO(joeo): Big race condition here.
-    #
-    in_use = models.AccountGroup.get_group_for_name(new_name)
-    if in_use and group.key() != in_use.key():
-      self.errors['name'] = ['Name is already in use']
-
-    if self.is_valid():
-      new_members = fields.UserGroupField.get_users(cd['members'])
-      old_members = group.members
-
-      if group.name == 'admin':
-        for u in old_members:
-          if u not in new_members:
-            a = models.Account.get_account_for_user(u)
-            if a.is_admin:
-              a.is_admin = False
-              a.put()
-
-      group.name = new_name
-      group.comment = cd['comment']
-      group.members = new_members
-      group.put()
-
-      if group.name == 'admin':
-        for u in new_members:
-          a = models.Account.get_account_for_user(u)
-          if not a.is_admin:
-            a.is_admin = True
-            a.put()
-      memcache.flush_all()
-
-
-@admin_required
-def admin_group(request, name):
-  """/admin/group/group - edit this group"""
-  group = models.AccountGroup.get_group_for_name(name)
-  def done():
-    return HttpResponseRedirect('/admin/groups')
-  return process_form(request, AdminGroupForm, group, done,
-                      {'group': group,
-                       'del_url': '/admin/group_delete/%s' % group.name,
-                      })
-  
-class AdminNewGroupForm(AdminGroupForm):
-  @classmethod
-  def _init(cls, group):
-     return {'initial': {'name': '', 'comment': ''}}
-
-  def _save(self, cd, group):
-    new_name = cd['name'].strip()
-
-    # TODO(joeo): Big race condition here.
-    #
-    if models.AccountGroup.get_group_for_name(new_name):
-      self.errors['name'] = ['Name is already in use']
-
-    if self.is_valid():
-      who = fields.UserGroupField.get_users(cd['members'])
-      group = models.AccountGroup(name = new_name,
-                                  comment = cd['comment'],
-                                  members = who)
-      group.put()
-
-@admin_required
-def admin_group_new(request):
-  """/admin/group/GROUP - add a new group"""
-  def done():
-    return HttpResponseRedirect('/admin/groups')
-  return process_form(request, AdminNewGroupForm, [], done)
-
-@gae_admin_required
-@xsrf_required
-def admin_group_delete(request, name):
-  """/admin/group_delete/GROUP - add a new group"""
-  group = models.AccountGroup.get_group_for_name(name)
-  assert group
-  group.remove()
-  return HttpResponseRedirect('/admin/groups')
-
-
diff --git a/webapp/codereview/project.py b/webapp/codereview/project.py
deleted file mode 100644
index 8e5af25..0000000
--- a/webapp/codereview/project.py
+++ /dev/null
@@ -1,486 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Project related views and functions.
-
-This requires Django 0.97.pre.
-"""
-
-
-# Python imports
-import os
-import cgi
-import random
-import re
-import logging
-import binascii
-import datetime
-import urllib
-import md5
-from xml.etree import ElementTree
-from cStringIO import StringIO
-
-# AppEngine imports
-from google.appengine.api import mail
-from google.appengine.api import memcache
-from google.appengine.api import users
-from google.appengine.api import urlfetch
-from google.appengine.ext import db
-from google.appengine.ext.db import djangoforms
-
-# Django imports
-# TODO(guido): Don't import classes/functions directly.
-from django import http
-from django import forms
-from django.http import HttpResponse, HttpResponseRedirect
-from django.http import HttpResponseForbidden, HttpResponseNotFound
-from django.shortcuts import render_to_response
-from django.utils import simplejson
-from django.forms import formsets
-
-# Local imports
-import models
-import engine
-import library
-import patching
-import fields
-import views
-from view_util import *
-
-## Project CRUD ##
-
-def _assert_project_and_owner(request, project):
-  """If the current user is:
-     - not an admin
-     - not an owner of this project
-     raise a 404.
-  """
-  if not project \
-  or not (request.user_is_admin \
-          or project.key() in request.projects_owned_by_user):
-    raise http.Http404()
-
-@project_owner_or_admin_required
-def project_list(request):
-  """/admin/projects - list of all projects"""
-  if request.user_is_admin:
-    projects = models.Project.get_all_projects()
-  else:
-    projects = db.get(request.projects_owned_by_user)
-    if not projects:
-      raise http.Http404()
-  return respond(request, 'admin_projects.html', {'projects': projects})
-
-def _keys_for(values):
-  return [x.key() for x in values]
-
-def _users_to_accounts(users):
-  return map(models.Account.get_account_for_user, users)
-
-def _combine_users_and_groups(users, groupKeys):
-  return models.AccountGroup.get(groupKeys) + _users_to_accounts(users)
-
-def _field_to_approval_right(cleaned):
-  result = models.ApprovalRight()
-  result.files = cleaned["files"]
-  (result.approvers_users,result.approvers_groups
-      ) = fields.UserGroupField.get_user_and_group_keys(cleaned["approvers"])
-  (result.verifiers_users,result.verifiers_groups
-      ) = fields.UserGroupField.get_user_and_group_keys(cleaned["verifiers"])
-  (result.submitters_users,result.submitters_groups
-      ) = fields.UserGroupField.get_user_and_group_keys(cleaned["submitters"])
-  result.put()
-  return result
-
-def _approval_right_to_field(key):
-  val = models.ApprovalRight.get(key)
-  if not val:
-    raise KeyError("no ApprovalRight for key: " + str(key))
-  return {
-      'files': val.files,
-      'approvers': _combine_users_and_groups(val.approvers_users,
-                      val.approvers_groups),
-      'verifiers': _combine_users_and_groups(val.verifiers_users,
-                      val.verifiers_groups),
-      'submitters': _combine_users_and_groups(val.submitters_users,
-                      val.submitters_groups),
-    }
-
-class AdminProjectForm(BaseForm):
-  _template = 'admin_project.html'
-
-  name = forms.CharField()
-  comment = forms.CharField(required=False,
-                            max_length=10000,
-                            widget=forms.Textarea(attrs={'cols': 60}))
-  owners = fields.UserGroupField(label='Project Lead(s)')
-  code_reviews = fields.ApproversField()
-
-  @classmethod
-  def _init(cls, project):
-     owners = fields.UserGroupField.field_value_for_keys(
-                project.owners_users,
-                project.owners_groups),
-     return {'initial': {'name': project.name,
-             'comment': project.comment,
-             'owners': owners,
-             'code_reviews': map(_approval_right_to_field,
-                                 project.code_reviews),
-            }}
-
-  def _save(self, cd, project):
-    new_name = cd['name'].strip()
-
-    # TODO(joeo): Big race condition here.
-    #
-    in_use = models.Project.get_project_for_name(new_name)
-    if in_use and project.key() != in_use.key():
-      self.errors['name'] = ['Name is already in use']
-
-    if self.is_valid():
-      project.name = new_name
-      project.comment = cd['comment']
-      project.owners_users, project.owners_groups = \
-        fields.UserGroupField.get_user_and_group_keys(cd['owners'])
-      project.set_code_reviews(_keys_for(map(_field_to_approval_right,
-                                         cd['code_reviews'])))
-      project.put()
-      memcache.flush_all()
-
-def project_edit(request, name):
-  """/admin/project/project - edit this project"""
-  project = models.Project.get_project_for_name(name)
-  _assert_project_and_owner(request, project)
-  def done():
-    return HttpResponseRedirect('/admin/projects')
-  return process_form(request, AdminProjectForm, project, done,
-                      {'project':project,
-                       'del_url': '/admin/project_delete/%s' % project.name,
-                      })
-
-class AdminNewProjectForm(AdminProjectForm):
-  @classmethod
-  def _init(cls, state):
-    return {'initial': {'name': '', 'comment': ''}}
-
-  def _save(self, cd, state):
-    name = cd['name'].strip()
-
-    # TODO(joeo): Big race condition here.
-    #
-    if models.Project.get_project_for_name(name):
-      self.errors['name'] = ['Name is already in use']
-
-    if self.is_valid():
-      owners_users = fields.UserGroupField.get_users(cd['owners'])
-      owners_groups = fields.UserGroupField.get_group_keys(cd['owners'])
-
-      project = models.Project(name = name,
-                               comment = cd['comment'],
-                               owners_users = owners_users,
-                               owners_groups = owners_groups)
-      project.set_code_reviews(_keys_for(map(_field_to_approval_right,
-                               cd['code_reviews'])))
-      project.put()
-
-@admin_required
-def project_new(request):
-  """/admin/project/GROUP - add a new project"""
-  def done():
-    return HttpResponseRedirect('/admin/projects')
-  return process_form(request, AdminNewProjectForm, [], done)
-
-@gae_admin_required
-@xsrf_required
-def project_delete(request, name):
-  """/admin/project_delete/GROUP - add a new project"""
-  project = models.Project.get_project_for_name(name)
-  assert project
-  project.remove()
-  return HttpResponseRedirect('/admin/projects')
-
-
-def _matches_file_pattern(pattern, files):
-  """Returns whether the list of files matches the pattern"""
-  for filename in files:
-    if regex.match(filename):
-      return True
-  return False
-
-def _is_leaf_pattern(pattern):
-  """Returns whether the pattern ends with ..."""
-  return not pattern.endswith("...")
-
-def _split_rules_for_review(project):
-  """Gets the approval file pattern rules for a project
-
-  Returns:
-    A tuple of:
-      0 - A list of tuples of:
-        0 - leaf pattern rules (rules of the form /.../xxx)
-        1 - the ApprovalRight object
-      1 - A list of tuples of:
-        0 - directory pattern rules (rules of the form /xxx/...)
-        1 - the ApprovalRight object
-  """
-  leaf_rules = []
-  dir_rules = []
-
-  for approval_right in project.get_code_reviews():
-    for pattern in approval_right.files:
-      if _is_leaf_pattern(pattern):
-        leaf_rules.append((pattern, approval_right))
-      else:
-        dir_rules.append((pattern, approval_right))
-
-  return (leaf_rules, dir_rules)
-
-def _file_pattern_to_regex(pattern):
-  if pattern.startswith('/'):
-    pattern = pattern[1:]
-  return re.compile('^%s$' % pattern.replace("...", ".*?"))
-
-def _convert_pattern_to_regex(rules):
-  return [(_file_pattern_to_regex(pattern),pattern,approval_right)
-      for (pattern,approval_right) in rules]
-
-def _flatten_rule_users(rules):
-  flattened = {}
-  def _flatten_approval_right(approval_right):
-    if not flattened.has_key(approval_right):
-      flattened[approval_right] = {
-          'required': approval_right.required,
-          'approvers': set([u.email() for u in approval_right.approvers()]),
-          'verifiers': set([u.email() for u in approval_right.verifiers()]),
-          'submitters': set([u.email() for u in approval_right.submitters()]),
-        }
-    return flattened[approval_right]
-  return [(regex,pattern,_flatten_approval_right(approval_right))
-      for (regex,pattern,approval_right) in rules]
-
-def _split_files_for_review(project, files):
-  """Return a mapping of files to the set of users that can approve or verify
-  that file.
-
-  Returns:
-    A tuple of booleans, corresponding to (can_approve, can_verify).
-  """
-  result = {}
-
-  (leaf_rules, dir_rules) = _split_rules_for_review(project)
-
-  leaf_rules = _convert_pattern_to_regex(leaf_rules)
-  dir_rules = _convert_pattern_to_regex(dir_rules)
-
-  leaf_rules = _flatten_rule_users(leaf_rules)
-  dir_rules = _flatten_rule_users(dir_rules)
-
-  for file in files:
-    approvers = []
-    verifiers = []
-    submitters = []
-
-    # check leaf rules -- we want all of those that match
-    for (regex,pattern,flat_approval_right) in leaf_rules:
-      if _is_leaf_pattern(pattern):
-        if regex.match(file):
-          user_set = flat_approval_right['approvers']
-          if not user_set in approvers:
-            approvers.append(user_set)
-
-          user_set = flat_approval_right['verifiers']
-          if not user_set in verifiers:
-            verifiers.append(user_set)
-
-          user_set = flat_approval_right['submitters']
-          if not user_set in submitters:
-            submitters.append(user_set)
-
-    # check dir rules -- we want all of those that match
-    dir_rule_approvers = set()
-    dir_rule_verifiers = set()
-    dir_rule_submitters = set()
-
-    for (regex,pattern,flat_approval_right) in reversed(dir_rules):
-      if not _is_leaf_pattern(pattern):
-        if regex.match(file):
-          dir_rule_approvers |= flat_approval_right['approvers']
-          dir_rule_verifiers |= flat_approval_right['verifiers']
-          dir_rule_submitters |= flat_approval_right['submitters']
-          if flat_approval_right['required']:
-            break
-
-    if not dir_rule_approvers in approvers:
-      approvers.append(dir_rule_approvers)
-    if not dir_rule_verifiers in verifiers:
-      verifiers.append(dir_rule_verifiers)
-    if not dir_rule_submitters in submitters:
-      submitters.append(dir_rule_submitters)
-
-    # save the result
-    result[file] = {
-          'approvers': approvers,
-          'verifiers': verifiers,
-          'submitters': submitters,
-        }
-
-  return result
-
-def _check_users(possible, actual):
-  """Return whether for each set in possible there is one entry from actual """
-  for user_set in possible:
-    inter = user_set.intersection(actual)
-    if len(user_set.intersection(actual)) == 0:
-      return False
-  return True
-
-def _match_users(possible, actual):
-  """Return the users who have actually approved/verified a change"""
-  matched = set()
-  for user_set in possible:
-    inter = user_set.intersection(actual)
-    matched |= inter
-  return matched
-
-def ready_to_submit(branch, owner, reviewer_status, files, current_user):
-  """Returns whether the supplied change is ready to submit.
-
-  These are the rules for whether a change is considered ready to submit:
-
-  1. If the project, repository or branch has code reviews turned off, then
-     the change is ok.
-  2. If all of the following are true, the change is ok:
-    a. Either:
-        i. Someone who is authorized to lgtm each file has done so.
-        ii. For each file where the owner is the only approver in the list,
-            there is at least one other person that has given a positive 
-            score.
-    b. No one who is authorized to say no has done so.
-
-  If 'owner' can lgtm or verify a change, she is added to the respective list.
-  """
-
-  project = branch.project
-  approved_cnt = 0
-  verified_cnt = 0
-  denied_cnt = 0
-  submit_cnt = 0
-  owner_auto_lgtm = False
-  owner_auto_verify = False
-
-  real_approvers = set()
-  real_deniers = set()
-  real_verifiers = set()
-  lgtm_emails = set([u.email() for u in reviewer_status['lgtm']])
-  reject_emails = set([u.email() for u in reviewer_status['reject']])
-  verified_by_emails = set([u.email() for u in reviewer_status['verified_by']])
-  owner_email = owner.email()
-  user_can_submit = False
-
-  files_to_approve = _split_files_for_review(project, files)
-  if files_to_approve:
-    for (file,user_sets) in files_to_approve.iteritems():
-      # check the real approvals - the owner is checked in this list
-      if _check_users(user_sets['approvers'], lgtm_emails):
-        approved_cnt += 1
-      if _check_users(user_sets['approvers'], reject_emails):
-        denied_cnt += 1
-      if _check_users(user_sets['verifiers'], verified_by_emails):
-        verified_cnt += 1
-      if current_user \
-         and _check_users(user_sets['submitters'],
-                          [current_user.email()]):
-        submit_cnt += 1
-
-      # check the owner auto-approve
-      if _check_users(user_sets['approvers'], [owner_email]):
-        owner_auto_lgtm = True
-      if _check_users(user_sets['verifiers'], [owner_email]):
-        owner_auto_verify = True
-
-      real_approvers.update(_match_users(user_sets['approvers'], lgtm_emails))
-      real_deniers.update(_match_users(user_sets['approvers'], reject_emails)) 
-      real_verifiers.update(
-                    _match_users(user_sets['verifiers'], verified_by_emails)) 
-
-
-    require_review = False
-    approved = ((approved_cnt == len(files_to_approve))
-                or (owner_auto_lgtm
-                    and ((not require_review)
-                          or (len(reviewer_status['yes']) > 0
-                               or len(reviewer_status['lgtm']) > 0))))
-    verified = verified_cnt == len(files_to_approve) or owner_auto_verify
-    denied = denied_cnt > 0
-    user_can_submit = submit_cnt == len(files_to_approve)
-  else:
-    approved = False
-    verified = False
-    denied = False
-
-  return {
-      'can_submit': user_can_submit \
-                    and approved \
-                    and verified \
-                    and (not denied),
-      'approved': approved,
-      'denied': denied,
-      'verified': verified,
-      'owner_auto_lgtm': owner_auto_lgtm,
-      'owner_auto_verify': owner_auto_verify,
-      'real_approvers': real_approvers,
-      'real_deniers': real_deniers,
-      'real_verifiers': real_verifiers,
-    }
-
-def user_can_approve(user, change):
-  """Returns whether the user can approve or verify this change.
-
-  Args:
-    user:   The user to test (a User object)
-    branch: The branch that this change is in (a Branch object)
-    files:  A list of files in question
-
-  Returns:
-    A map of 'approve' and 'verify' to booleans of whether the user
-    can approve or verify at least one of these files.
-  """
-  # pick the files
-  patchsets = list(change.patchset_set.order('id'))
-  if not patchsets:
-    return (False, False)
-  files = patchsets[-1].filenames
-
-  branch = change.dest_branch
-  project = branch.project
-
-  files_to_approve = _split_files_for_review(project, files)
-  if not files_to_approve:
-    return (False, False)
-
-  email = user.email()
-  can_approve = False
-  can_verify = False
-  for (file,user_sets) in files_to_approve.iteritems(): 
-    for user_set in user_sets["approvers"]:
-      if email in user_set:
-        can_approve = True
-    for user_set in user_sets["verifiers"]:
-      if email in user_set:
-        can_verify = True
-    if can_approve and can_verify:
-      # short circuit
-      return (True, True)
-
-  return (can_approve, can_verify)
diff --git a/webapp/codereview/proto_client.py b/webapp/codereview/proto_client.py
deleted file mode 100755
index b58cf6a..0000000
--- a/webapp/codereview/proto_client.py
+++ /dev/null
@@ -1,380 +0,0 @@
-# Copyright 2007, 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import base64
-import cookielib
-import getpass
-import logging
-import md5
-import os
-import random
-import socket
-import sys
-import time
-import urllib
-import urllib2
-import urlparse
-
-from froofle.protobuf.service import RpcChannel
-from froofle.protobuf.service import RpcController
-from need_retry_pb2 import RetryRequestLaterResponse;
-
-_cookie_jars = {}
-
-def _open_jar(path):
-  auth = False
-
-  if path is None:
-    c = cookielib.CookieJar()
-  else:
-    c = _cookie_jars.get(path)
-    if c is None:
-      c = cookielib.MozillaCookieJar(path)
-
-      if os.path.exists(path):
-        try:
-          c.load()
-          auth = True
-        except (cookielib.LoadError, IOError):
-          pass
-
-        if auth:
-          print >>sys.stderr, \
-                'Loaded authentication cookies from %s' \
-                % path
-      else:
-        os.close(os.open(path, os.O_CREAT, 0600))
-      os.chmod(path, 0600)
-      _cookie_jars[path] = c
-    else:
-      auth = True
-  return c, auth
-
-
-class ClientLoginError(urllib2.HTTPError):
-  """Raised to indicate an error authenticating with ClientLogin."""
-
-  def __init__(self, url, code, msg, headers, args):
-    urllib2.HTTPError.__init__(self, url, code, msg, headers, None)
-    self.args = args
-    self.reason = args["Error"]
-
-
-class Proxy(object):
-  class _ResultHolder(object):
-    def __call__(self, result):
-      self._result = result
-
-  class _RemoteController(RpcController):
-    def Reset(self):
-      pass
-  
-    def Failed(self):
-      pass
-  
-    def ErrorText(self):
-      pass
-  
-    def StartCancel(self):
-      pass
-  
-    def SetFailed(self, reason):
-      raise RuntimeError, reason
-  
-    def IsCancelled(self):
-      pass
-  
-    def NotifyOnCancel(self, callback):
-      pass
-  
-  def __init__(self, stub):
-    self._stub = stub
-
-  def __getattr__(self, key):
-    method = getattr(self._stub, key)
-
-    def call(request):
-      done = self._ResultHolder()
-      method(self._RemoteController(), request, done)
-      return done._result
-
-    return call
-
-
-class HttpRpc(RpcChannel):
-  """Simple protobuf over HTTP POST implementation."""
-
-  def __init__(self, host, auth_function,
-               host_override=None,
-               extra_headers={},
-               cookie_file=None):
-    """Creates a new HttpRpc.
-
-    Args:
-      host: The host to send requests to.
-      auth_function: A function that takes no arguments and returns an
-        (email, password) tuple when called. Will be called if authentication
-        is required.
-      host_override: The host header to send to the server (defaults to host).
-      extra_headers: A dict of extra headers to append to every request.
-      cookie_file: If not None, name of the file in ~/ to save the
-        cookie jar into.  Applications are encouraged to set this to
-        '.$appname_cookies' or some otherwise unique name.
-    """
-    self.host = host.lower()
-    self.host_override = host_override
-    self.auth_function = auth_function
-    self.authenticated = False
-    self.extra_headers = extra_headers
-    self.xsrf_token = None
-    if cookie_file is None:
-      self.cookie_file = None
-    else:
-      self.cookie_file = os.path.expanduser("~/%s" % cookie_file)
-    self.opener = self._GetOpener()
-    if self.host_override:
-      logging.info("Server: %s; Host: %s", self.host, self.host_override)
-    else:
-      logging.info("Server: %s", self.host)
-
-  def CallMethod(self, method, controller, request, response_type, done):
-    pat = "application/x-google-protobuf; name=%s"
-
-    url = "/proto/%s/%s" % (method.containing_service.name, method.name)
-    reqbin = request.SerializeToString()
-    reqtyp = pat % request.DESCRIPTOR.full_name
-    reqmd5 = base64.b64encode(md5.new(reqbin).digest())
-
-    start = time.time()
-    while True:
-      t, b = self._Send(url, reqbin, reqtyp, reqmd5)
-      if t == (pat % RetryRequestLaterResponse.DESCRIPTOR.full_name):
-        if time.time() >= (start + 1800):
-          controller.SetFailed("timeout")
-          return
-        s = random.uniform(0.250, 2.000)
-        print "Busy, retrying in %.3f seconds ..." % s
-        time.sleep(s)
-        continue
-
-      if t == (pat % response_type.DESCRIPTOR.full_name):
-        response = response_type()
-        response.ParseFromString(b)
-        done(response)
-      else:
-        controller.SetFailed("Unexpected %s response" % t)
-      break
-
-  def _CreateRequest(self, url, data=None):
-    """Creates a new urllib request."""
-    logging.debug("Creating request for: '%s' with payload:\n%s", url, data)
-    req = urllib2.Request(url, data=data)
-    if self.host_override:
-      req.add_header("Host", self.host_override)
-    for key, value in self.extra_headers.iteritems():
-      req.add_header(key, value)
-    return req
-
-  def _GetAuthToken(self, email, password):
-    """Uses ClientLogin to authenticate the user, returning an auth token.
-
-    Args:
-      email:    The user's email address
-      password: The user's password
-
-    Raises:
-      ClientLoginError: If there was an error authenticating with ClientLogin.
-      HTTPError: If there was some other form of HTTP error.
-
-    Returns:
-      The authentication token returned by ClientLogin.
-    """
-    account_type = 'GOOGLE'
-    if self.host.endswith('.google.com'):
-      account_type = 'HOSTED'
-
-    req = self._CreateRequest(
-        url="https://www.google.com/accounts/ClientLogin",
-        data=urllib.urlencode({
-            "Email": email,
-            "Passwd": password,
-            "service": "ah",
-            "source": "gerrit-codereview-client",
-            "accountType": account_type,
-        })
-    )
-    try:
-      response = self.opener.open(req)
-      response_body = response.read()
-      response_dict = dict(x.split("=")
-                           for x in response_body.split("\n") if x)
-      return response_dict["Auth"]
-    except urllib2.HTTPError, e:
-      if e.code == 403:
-        body = e.read()
-        response_dict = dict(x.split("=", 1) for x in body.split("\n") if x)
-        raise ClientLoginError(req.get_full_url(), e.code, e.msg,
-                               e.headers, response_dict)
-      else:
-        raise
-
-  def _GetAuthCookie(self, auth_token):
-    """Fetches authentication cookies for an authentication token.
-
-    Args:
-      auth_token: The authentication token returned by ClientLogin.
-
-    Raises:
-      HTTPError: If there was an error fetching the authentication cookies.
-    """
-    # This is a dummy value to allow us to identify when we're successful.
-    continue_location = "http://localhost/"
-    args = {"continue": continue_location, "auth": auth_token}
-    req = self._CreateRequest("http://%s/_ah/login?%s" %
-                              (self.host, urllib.urlencode(args)))
-    try:
-      response = self.opener.open(req)
-    except urllib2.HTTPError, e:
-      response = e
-    if (response.code != 302 or
-        response.info()["location"] != continue_location):
-      raise urllib2.HTTPError(req.get_full_url(), response.code, response.msg,
-                              response.headers, response.fp)
-
-  def _GetXsrfToken(self):
-    """Fetches /proto/_token for use in X-XSRF-Token HTTP header.
-
-    Raises:
-      HTTPError: If there was an error fetching a new token.
-    """
-    tries = 0
-    while True:
-      url = "http://%s/proto/_token" % self.host
-      req = self._CreateRequest(url)
-      try:
-        response = self.opener.open(req)
-        self.xsrf_token = response.read()
-        return
-      except urllib2.HTTPError, e:
-        if tries > 3:
-          raise
-        elif e.code == 401:
-          self._Authenticate()
-        else:
-          raise
-
-  def _Authenticate(self):
-    """Authenticates the user.
-
-    The authentication process works as follows:
-     1) We get a username and password from the user
-     2) We use ClientLogin to obtain an AUTH token for the user
-        (see http://code.google.com/apis/accounts/AuthForInstalledApps.html).
-     3) We pass the auth token to /_ah/login on the server to obtain an
-        authentication cookie. If login was successful, it tries to redirect
-        us to the URL we provided.
-
-    If we attempt to access the upload API without first obtaining an
-    authentication cookie, it returns a 401 response and directs us to
-    authenticate ourselves with ClientLogin.
-    """
-    attempts = 0
-    while True:
-      attempts += 1
-      try:
-        cred = self.auth_function()
-        auth_token = self._GetAuthToken(cred[0], cred[1])
-      except ClientLoginError:
-        if attempts < 3:
-          continue
-        raise
-      self._GetAuthCookie(auth_token)
-      self.authenticated = True
-      if self.cookie_file is not None:
-        print >>sys.stderr, \
-              'Saving authentication cookies to %s' \
-              % self.cookie_file
-        self.cookie_jar.save()
-      return
-
-  def _Send(self, request_path, payload, content_type, content_md5):
-    """Sends an RPC and returns the response.
-
-    Args:
-      request_path: The path to send the request to, eg /api/appversion/create.
-      payload: The body of the request, or None to send an empty request.
-      content_type: The Content-Type header to use.
-      content_md5: The Content-MD5 header to use.
-
-    Returns:
-      The content type, as a string.
-      The response body, as a string.
-    """
-    if not self.authenticated:
-      self._Authenticate()
-    if not self.xsrf_token:
-      self._GetXsrfToken()
-
-    old_timeout = socket.getdefaulttimeout()
-    socket.setdefaulttimeout(None)
-    try:
-      tries = 0
-      while True:
-        tries += 1
-        url = "http://%s%s" % (self.host, request_path)
-        req = self._CreateRequest(url=url, data=payload)
-        req.add_header("Content-Type", content_type)
-        req.add_header("Content-MD5", content_md5)
-        req.add_header("X-XSRF-Token", self.xsrf_token)
-        try:
-          f = self.opener.open(req)
-          hdr = f.info()
-          type = hdr.getheader('Content-Type',
-                               'application/octet-stream')
-          response = f.read()
-          f.close()
-          return type, response
-        except urllib2.HTTPError, e:
-          if tries > 3:
-            raise
-          elif e.code == 401:
-            self._Authenticate()
-          elif e.code == 403:
-            if not hasattr(e, 'read'):
-              e.read = lambda self: ''
-            raise RuntimeError, '403\nxsrf: %s\n%s' \
-                  % (self.xsrf_token, e.read())
-          else:
-            raise
-    finally:
-      socket.setdefaulttimeout(old_timeout)
-
-  def _GetOpener(self):
-    """Returns an OpenerDirector that supports cookies and ignores redirects.
-
-    Returns:
-      A urllib2.OpenerDirector object.
-    """
-    opener = urllib2.OpenerDirector()
-    opener.add_handler(urllib2.ProxyHandler())
-    opener.add_handler(urllib2.UnknownHandler())
-    opener.add_handler(urllib2.HTTPHandler())
-    opener.add_handler(urllib2.HTTPDefaultErrorHandler())
-    opener.add_handler(urllib2.HTTPSHandler())
-    opener.add_handler(urllib2.HTTPErrorProcessor())
-
-    self.cookie_jar, \
-    self.authenticated = _open_jar(self.cookie_file)
-    opener.add_handler(urllib2.HTTPCookieProcessor(self.cookie_jar))
-    return opener
diff --git a/webapp/codereview/proto_server.py b/webapp/codereview/proto_server.py
deleted file mode 100644
index 3fdaecf..0000000
--- a/webapp/codereview/proto_server.py
+++ /dev/null
@@ -1,213 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import base64
-import hashlib
-import hmac
-import logging
-import time
-import zlib
-
-from google.appengine.api import users
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import util
-
-from django.http import HttpResponse
-from froofle.protobuf.service import RpcController
-
-from codereview.models import Account, Settings
-from codereview.internal.util import InternalAPI
-from codereview.view_util import xsrf_for, is_xsrf_ok
-
-from codereview.backup_service import BackupServiceImp
-from codereview.review_service import ReviewServiceImp
-from codereview.internal.admin_service import AdminServiceImp
-from codereview.internal.build_service import BuildServiceImp
-from codereview.internal.bundle_store_service import BundleStoreServiceImp
-from codereview.internal.change_service import ChangeServiceImp
-from codereview.internal.merge_service import MergeServiceImp
-
-MAX_TIME_WINDOW = 5 * 60 # seconds
-XSRF_PATH = '/proto/'
-services = {}
-
-def register_service(s_impl):
-  services[s_impl.GetDescriptor().name] = s_impl
-
-register_service(BackupServiceImp())
-register_service(ReviewServiceImp())
-register_service(AdminServiceImp())
-register_service(BuildServiceImp())
-register_service(BundleStoreServiceImp())
-register_service(ChangeServiceImp())
-register_service(MergeServiceImp())
-
-class _LocalController(RpcController):
-  def __init__(self, s_impl):
-    self._failed = None
-    self._service = s_impl
-
-  def Reset(self):
-    pass
-
-  def Failed(self):
-    pass
-
-  def ErrorText(self):
-    pass
-
-  def StartCancel(self):
-    pass
-
-  def SetFailed(self, reason):
-    logging.error("Failed on %s: %s" % (
-      self._service.__class__.__name__,
-      reason))
-    self._failed = reason
-
-  def IsCancelled(self):
-    pass
-
-  def NotifyOnCancel(self, callback):
-    pass
-
-  def HasFailed(self):
-    return self._failed is not None
-
-def token(req):
-  user = users.get_current_user()
-  if not user:
-    return HttpResponse(status=401, content="User must be logged in.")
-  return HttpResponse(content = xsrf_for(XSRF_PATH),
-                      content_type = 'application/octet-stream')
-
-def serve(req, service_name, action_name):
-  try:
-    type_str = req.META['CONTENT_TYPE']
-  except KeyError:
-    return HttpResponse(status=415, content="Invalid request body type")
-
-  type = type_str.split('; ')
-  type_dict = {}
-  type_dict['name'] = None
-  type_dict['compress'] = None
-  for t in type[1:]:
-    name, val = t.split('=', 1)
-    type_dict[name] = val
-  if type[0] != "application/x-google-protobuf":
-    return HttpResponse(status=415, content="Invalid request body type")
-
-  try: s_impl = services[service_name]
-  except KeyError:
-    return HttpResponse(status=404, content="Service not recognized.")
-
-  method = s_impl.GetDescriptor().FindMethodByName(action_name)
-  if not method:
-    return HttpResponse(status=404, content="Method not recognized.")
-
-  request = s_impl.GetRequestClass(method)()
-  request_name = request.DESCRIPTOR.full_name
-  if type_dict['name'] != request_name:
-    return HttpResponse(status=415,
-                        content="Expected a %s" % request_name)
-
-  raw_body = req.raw_post_data
-  msg_bin = raw_body
-
-  if 'HTTP_CONTENT_MD5' in req.META:
-    expmd5 = req.META['HTTP_CONTENT_MD5']
-
-    actmd5 = hashlib.md5()
-    actmd5.update(raw_body)
-    actmd5 = base64.b64encode(actmd5.digest())
-
-    if actmd5 != expmd5:
-      return HttpResponse(status=412,
-                          content="Content-MD5 incorrect")
-
-  compression = type_dict['compress']
-  if compression == 'deflate':
-    msg_bin = zlib.decompress(msg_bin)
-  elif compression:
-    return HttpResponse(status=415,
-                        content="Unsupported compression %s" % compression)
-
-  if isinstance(s_impl, InternalAPI):
-    key = Settings.get_settings().internal_api_key
-    key = base64.b64decode(key)
-
-    try:
-      date = int(req.META['HTTP_X_DATE_UTC'])
-    except KeyError:
-      return HttpResponse(status=403,
-                          content="X-Date-UTC header is required.")
-
-    try:
-      exp_sig = req.META['HTTP_AUTHORIZATION']
-    except KeyError:
-      return HttpResponse(status=403,
-                          content="Authorization header is required.")
-
-    if not exp_sig.startswith("proto :"):
-      return HttpResponse(status=403,
-                          content="Malformed authorization header.")
-    exp_sig = exp_sig[len("proto :"):]
-
-    now = time.time()
-    if abs(date - now) > MAX_TIME_WINDOW:
-      return HttpResponse(status=403,
-                          content="Request is too early or too late.")
-
-    m = hmac.new(key, digestmod=hashlib.sha1)
-    m.update('POST %s\n' % req.path)
-    m.update('X-Date-UTC: %s\n' % date)
-    m.update('Content-Type: %s\n' % type_str)
-    m.update('\n')
-    m.update(raw_body)
-    if base64.b64encode(m.digest()) != exp_sig:
-      return HttpResponse(status=403,
-                          content="Invalid request signature.")
-  else:
-    user = users.get_current_user()
-    if not user:
-      return HttpResponse(status=401, content="User must be logged in.")
-
-    try:
-      xsrf = req.META['HTTP_X_XSRF_TOKEN']
-    except KeyError:
-      return HttpResponse(status=403,
-                          content="X-XSRF-Token header required.")
-    if not is_xsrf_ok(req, path=XSRF_PATH, xsrf=xsrf):
-      return HttpResponse(status=403,
-                          content="X-XSRF-Token invalid.")
-
-  request.ParseFromString(msg_bin)
-  controller = _LocalController(s_impl)
-
-  class result_caddy:
-    _r = HttpResponse(status=500)
-    def __call__(self, r):
-      if r is not None:
-        r_bin = r.SerializeToString()
-        r_name = r.DESCRIPTOR.full_name
-        r_type = "application/x-google-protobuf; name=%s" % r_name
-        self._r = HttpResponse(content_type = r_type, content = r_bin)
-  done = result_caddy()
-
-  s_impl.http_request = req
-
-  s_impl.CallMethod(method, controller, request, done)
-  if controller.HasFailed():
-    return HttpResponse(status=500)
-  return done._r
diff --git a/webapp/codereview/review_service.py b/webapp/codereview/review_service.py
deleted file mode 100644
index 0c02220..0000000
--- a/webapp/codereview/review_service.py
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-
-from google.appengine.api import users
-from google.appengine.ext import db
-
-from django import forms
-
-from models import gql, Project, Branch, Account, Change
-import git_models
-
-from review_pb2 import *
-from upload_bundle_pb2 import *
-from internal.util import automatic_retry
-
-class ReviewServiceImp(ReviewService):
-  """
-    Implements the review_service API for developer clients.
-  """
-
-  @automatic_retry
-  def UploadBundle(self, rpc_controller, req, done):
-    """
-      Receives an uploaded Git style bundle and queues it for processing.
-    """
-    rsp = UploadBundleResponse()
-
-    # can't get here if there isn't a current user
-    current_user = users.get_current_user()
-    
-    if not Account.get_account_for_user(current_user).cla_verified:
-      rsp.status_code = UploadBundleResponse.UNAUTHORIZED_USER
-      done(rsp)
-      return
-
-    # Validate that we have an Account for everyone in reviewers
-    invalid_reviewers = []
-    reviewers = Account.get_accounts_for_emails([x for x in req.reviewers])
-    for i in range(0, len(reviewers)):
-      if not reviewers[i]:
-        invalid_reviewers.append(req.reviewers[i])
-
-    # Validate all of the email addresses
-    invalid_cc = []
-    for e in req.cc:
-      if not forms.fields.email_re.search(e):
-        invalid_cc.append(e)
-
-    # Return failure if any of that was bad
-    if invalid_reviewers or invalid_cc:
-      rsp.status_code = UploadBundleResponse.UNKNOWN_EMAIL
-      for e in invalid_reviewers:
-        rsp.invalid_reviewers.append(e)
-      for e in invalid_cc:
-        rsp.invalid_cc.append(e)
-      done(rsp)
-      return
-
-    reviewers = [x.user for x in reviewers]
-    cc = [db.Email(x) for x in req.cc]
-
-    if not req.dest_project:
-      rsp.status_code = UploadBundleResponse.UNKNOWN_PROJECT
-      done(rsp)
-      return
-
-    proj = req.dest_project
-    if proj.endswith(".git"):
-      proj = proj[0 : len(proj) - 4]
-
-    proj = Project.get_project_for_name(proj)
-    if not proj:
-      rsp.status_code = UploadBundleResponse.UNKNOWN_PROJECT
-      done(rsp)
-      return
-
-    if not req.dest_branch:
-      rsp.status_code = UploadBundleResponse.UNKNOWN_BRANCH
-      done(rsp)
-
-    brch = Branch.get_branch_for_name(proj, req.dest_branch)
-    if not brch:
-      rsp.status_code = UploadBundleResponse.UNKNOWN_BRANCH
-      done(rsp)
-      return
-
-    replaces = list()
-    ids_to_check = list()
-    for p in req.replace:
-      id = int(p.change_id)
-      ids_to_check.append(id)
-      replaces.append('%d %s' % (id, p.object_id))
-
-    if ids_to_check:
-      for id, c in zip(ids_to_check, Change.get_by_id(ids_to_check)):
-        if not c:
-          rsp.status_code = UploadBundleResponse.UNKNOWN_CHANGE
-          done(rsp)
-          return
-        if c.closed:
-          rsp.status_code = UploadBundleResponse.CHANGE_CLOSED
-          done(rsp)
-          return
-
-    rb = git_models.ReceivedBundle(
-      dest_project = proj,
-      dest_branch = brch,
-      owner = current_user,
-      state = git_models.ReceivedBundle.STATE_UPLOADING,
-      reviewers = reviewers,
-      cc = cc,
-      contained_objects = list(req.contained_object),
-      replaces = replaces)
-    rb.put()
-
-    rsp.bundle_id = str(rb.key().id())
-    self._store_segment(req, rsp, rb, 1)
-    done(rsp)
-
-  @automatic_retry
-  def ContinueBundle(self, rpc_controller, req, done):
-    rsp = UploadBundleResponse()
-    rsp.bundle_id = req.bundle_id
-
-    rb = git_models.ReceivedBundle.get_by_id(int(req.bundle_id))
-    if rb is None:
-      rsp.status_code = UploadBundleResponse.UNKNOWN_BUNDLE
-      done(rsp)
-      return
-
-    if rb.owner != users.get_current_user():
-      rsp.status_code = UploadBundleResponse.NOT_BUNDLE_OWNER
-      done(rsp)
-      return
-
-    self._store_segment(req, rsp, rb, req.segment_id)
-    done(rsp)
-
-  def _store_segment(self, req, rsp, rb, segment_id):
-    rb.set_segment(segment_id, req.bundle_data)
-    def trans():
-      b = db.get(rb.key())
-      if b.state != git_models.ReceivedBundle.STATE_UPLOADING:
-        return False
-
-      if b.n_segments < segment_id:
-        b.n_segments = segment_id
-      if not req.partial_upload:
-        b.state = git_models.ReceivedBundle.STATE_NEW
-      b.put()
-      return True
-
-    if db.run_in_transaction(trans):
-      if req.partial_upload:
-        rsp.status_code = UploadBundleResponse.CONTINUE
-      else:
-        rb.ready()
-        rsp.status_code = UploadBundleResponse.RECEIVED
-    else:
-      rsp.status_code = UploadBundleResponse.BUNDLE_CLOSED
-
diff --git a/webapp/codereview/settings.py b/webapp/codereview/settings.py
deleted file mode 100644
index 65961e6..0000000
--- a/webapp/codereview/settings.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Views for the settings section of Gerrit.
-
-This requires Django 0.97.pre.
-"""
-
-import datetime
-import logging
-import urllib
-
-from django import forms
-from django import http
-
-import fields
-import models
-import views
-from view_util import *
-
-
-### Users settings page -- /settings ###
-
-def validate_real_name(real_name):
-  """Returns None if real_name is fine and an error message otherwise."""
-  if not real_name:
-    return 'Name cannot be empty.'
-  elif real_name == 'me':
-    return 'Of course, you are what you are.  But \'me\' is for everyone.'
-  elif '"' in real_name:
-    return 'Name cannot contain the quotation mark (") character'
-  else:
-    return None
-
-
-class SettingsForm(BaseForm):
-  _template = 'settings.html'
-
-  context = forms.IntegerField(widget = forms.Select(
-                               choices = [(x, "%d lines" % x) \
-                                          for x \
-                                          in models.CONTEXT_CHOICES]
-                               ),
-                               label = 'Context')
-  unclaimed_changes_projects = fields.ProjectSelectField()
-
-  @classmethod
-  def _init(cls, account):
-    return {'initial': {
-              'context': account.default_context,
-              'unclaimed_changes_projects': account.unclaimed_changes_projects,
-              }
-            }
-
-  def _save(self, cd, account):
-    account.default_context = cd.get("context")
-    account.unclaimed_changes_projects = cd.get("unclaimed_changes_projects")
-    account.put()
-
-@login_required
-def settings(request):
-  account = models.Account.current_user_account
-  def done():
-    return http.HttpResponseRedirect('/mine')
-  return process_form(request, SettingsForm, account, done)
-
-
-### Welcome page -- /settings/welcome ###
-
-class WelcomeForm1(BaseForm):
-  _template = 'settings_welcome_1.html'
-
-  dest = forms.fields.CharField(widget=forms.widgets.HiddenInput)
-  real_name = forms.fields.CharField()
-
-  @classmethod
-  def _init(cls, state):
-    account = state['account']
-    if account.real_name_entered:
-      real_name = account.real_name
-    else:
-      real_name = ""
-    return {'initial': {
-              'real_name': real_name,
-              'dest': state['dest'],
-            }
-          }
-
-  def _save(self, cd, state):
-    account = state['account']
-    account.real_name = cd['real_name']
-    account.real_name_entered = True
-    account.put()
-
-    return _init_form(WelcomeForm2, cd)
-
-class WelcomeForm2(BaseForm):
-  _template = 'settings_welcome_2.html'
-
-  cla = forms.fields.CharField(widget=forms.widgets.RadioSelect(choices=(
-                            'none', 'individual', 'corporate')))
-  dest = forms.fields.CharField(widget=forms.widgets.HiddenInput)
-
-  @classmethod
-  def _init(cls, state):
-    return {'initial': {
-              'dest': state['dest'],
-              'cla': 'none',
-            }
-          }
-
-  def _pre_verify(self, get, post):
-    if not post.get('continue'):
-      return _init_form(WelcomeForm1, post)
-
-  def _save(self, cd, state):
-    cla = cd['cla']
-    if cla == 'none':
-      account = state['account']
-      account.welcomed = True
-      account.put()
-      return _init_form(WelcomeForm4, cd)
-    elif cla == 'individual':
-      return _init_form(WelcomeForm3Individual, cd)
-    elif cla == 'corporate':
-      return _init_form(WelcomeForm3Corporate, cd)
-
-
-class WelcomeForm3Individual(BaseForm):
-  _template = 'settings_welcome_3_individual.html'
-
-  dest = forms.fields.CharField(widget=forms.widgets.HiddenInput)
-
-  i_agree = forms.fields.CharField()
-
-  mailing_address = forms.CharField(required=True,
-                          max_length=150,
-                          widget=forms.Textarea(attrs={'rows': 4, 'cols': 60}))
-  mailing_address_country = forms.CharField(max_length=30, required=True)
-  phone_number = forms.CharField(max_length=30, required=True)
-  fax_number = forms.CharField(max_length=30, required=False)
-
-  @classmethod
-  def _init(cls, state):
-    return {'initial': {
-              'dest': state['dest'],
-            }
-          }
-
-  def _pre_verify(self, get, post):
-    if not post.get('continue'):
-      return _init_form(WelcomeForm2, post)
-
-  def _save(self, cd, state):
-    if cd['i_agree'].lower() != 'i agree':
-      self.errors['i_agree'] = 'You must agree to this license.'
-      return
-    account = state['account']
-    # NOTE: just using 1 for now, future versions can come later
-    account.individual_cla_version = 1
-    account.cla_verified = True
-    account.mailing_address = cd['mailing_address']
-    account.mailing_address_country = cd['mailing_address_country']
-    account.phone_number = cd['phone_number']
-    account.fax_number = cd['fax_number']
-    account.individual_cla_timestamp = datetime.datetime.utcnow()
-    account.welcomed = True
-    account.put()
-
-    return _init_form(WelcomeForm4, cd)
-
-class WelcomeForm3Corporate(BaseForm):
-  _template = 'settings_welcome_3_corporate.html'
-
-  dest = forms.fields.CharField(widget=forms.widgets.HiddenInput)
-
-  @classmethod
-  def _init(cls, state):
-    return {'initial': {
-              'dest': state['dest'],
-            }
-          }
-
-  def _pre_verify(self, get, post):
-    if not post.get('continue'):
-      return _init_form(WelcomeForm2, post)
-
-  def _save(self, cd, state):
-    account = state['account']
-    account.welcomed = True
-    account.put()
-  
-    return _init_form(WelcomeForm4, cd)
-
-class WelcomeForm4(BaseForm):
-  _template = 'settings_welcome_4.html'
-
-  dest = forms.fields.CharField(widget=forms.widgets.HiddenInput)
-
-  @classmethod
-  def _init(cls, state):
-    return {'initial': {
-              'dest': state['dest'],
-            }
-          }
-
-  def _save(self, cd, state):
-    return http.HttpResponseRedirect(cd['dest'])
-
-
-
-_SETTINGS_STEPS = {
-  '1':      WelcomeForm1,
-  '2':      WelcomeForm2,
-  '3ind':   WelcomeForm3Individual,
-  '3corp':  WelcomeForm3Corporate,
-  '4':      WelcomeForm4,
-}
-
-def _init_form(cls, post):
-  state = {
-      'dest': post['dest'],
-      'account': models.Account.current_user_account,
-    }
-  kwargs = cls._init(state)
-  # ok to pull this from post b/c it'll be
-  # validated later when they submit
-  kwargs['initial']['xsrf'] = post['xsrf']
-  return cls(**kwargs)
-
-@login_required
-def settings_welcome(request):
-  if request.method == 'GET':
-    state = {
-      'dest': request.GET.get('dest', '/'),
-      'account': models.Account.current_user_account,
-    }
-    return process_form(request, WelcomeForm1, state, None)
-  else:
-    try:
-      step = str(request.POST['step'])
-      form_cls = _SETTINGS_STEPS[step]
-    except KeyError:
-      raise http.Http404 
-    state = {
-      'dest': request.POST['dest'],
-      'account': models.Account.current_user_account,
-    }
-    params = {
-      'post_url': '/settings/welcome?dest=%s' % urllib.quote(state['dest']),
-    }
-    return process_form(request, form_cls, state, None)
-
diff --git a/webapp/codereview/urls.py b/webapp/codereview/urls.py
deleted file mode 100644
index 3a69838..0000000
--- a/webapp/codereview/urls.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""URL mappings for Gerrit."""
-
-# NOTE: Must import *, since Django looks for things here, e.g. handler500.
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns(
-    'codereview',
-    (r'^dev_init$', 'dev_init.dev_init'),
-    (r'^proto/_token$', 'proto_server.token'),
-    (r'^proto/([^/]*)/([^/]*)$', 'proto_server.serve'),
-    (r'^$', 'views.index'),
-    (r'^hello$', 'views.hello'),
-    (r'^all$', 'views.all_changes'),
-    (r'^open$', 'views.open_changes'),
-    (r'^mine$', 'views.mine'),
-    (r'^all_unclaimed$', 'views.all_unclaimed'),
-    (r'^unclaimed$', 'views.unclaimed'),
-    (r'^starred$', 'views.starred'),
-    (r'^r/([0-9a-f]{4,40})$', 'views.revision_redirect'),
-    (r'^(\d+)$', 'views.show'),
-    (r'^(\d+)/show$', 'views.show'),
-    (r'^(\d+)/reviewers$', 'views.reviewers'),
-    (r'^(\d+)/remove_me$', 'views.remove_me'),
-    (r'^(\d+)/delete$', 'views.delete'),
-    (r'^(\d+)/publish$', 'views.publish'),
-    (r'^(\d+)/merge/(\d+)$', 'views.merge'),
-    (r'^(\d+)/ajax_patchset/(\d+)$', 'views.ajax_patchset'),
-    (r'^download/bundle(\d+)_(\d+)$', 'views.download_bundle'),
-    (r'^(\d+)/patch/(\d+)/(\d+|z[0-9a-f]{40})$', 'views.patch'),
-    (r'^(\d+)/diff/(\d+)/(\d+|z[0-9a-f]{40})$', 'views.diff'),
-    (r'^(\d+)/diff2/(\d+):(\d+)/(\d+|z[0-9a-f]{40})$', 'views.diff2'),
-    (r'^(\d+)/diff_skipped_lines/(\d+)/(\d+|z[0-9a-f]{40})/(\d+)/(\d+)/([tb])$',
-     'views.diff_skipped_lines'),
-    (r'^(\d+)/diff2_skipped_lines/(\d+):(\d+)/(\d+|z[0-9a-f]{40})/(\d+)/(\d+)/([tb])$',
-     'views.diff2_skipped_lines'),
-    (r'^star$', 'views.star'),
-    (r'^unstar$', 'views.unstar'),
-    (r'^user_info$', 'people.user_info'),
-    (r'^user/(.+)$', 'views.show_user'),
-    (r'^inline_draft$', 'views.inline_draft'),
-    (r'^settings$', 'settings.settings'),
-    (r'^settings/welcome$', 'settings.settings_welcome'),
-    (r'^user_popup/(.+)$', 'views.user_popup'),
-    (r'^admin$', 'views.admin'),
-    (r'^admin/settings$', 'views.admin_settings'),
-    (r'^admin/settings/analytics$', 'views.admin_settings_analytics'),
-    (r'^admin/settings/from_email$', 'views.admin_settings_from_email'),
-    (r'^admin/settings/from_email_test$', 'views.admin_settings_from_email_test'),
-    (r'^admin/settings/merge_log_email$', 'views.admin_settings_merge_log_email'),
-    (r'^admin/settings/canonical_url$', 'views.admin_settings_canonical_url'),
-    (r'^admin/settings/source_browser_url$',
-                'views.admin_settings_source_browser_url'),
-    (r'^admin/users$', 'people.admin_users'),
-    (r'^admin/unverified_clas$', 'people.admin_unverified_clas'),
-    (r'^admin/user/(.+)$', 'people.admin_user'),
-    (r'^admin/groups$', 'people.admin_groups'),
-    (r'^admin/group_new$', 'people.admin_group_new'),
-    (r'^admin/group/(.+)$', 'people.admin_group'),
-    (r'^admin/group_delete/(.+)$', 'people.admin_group_delete'),
-    (r'^admin/projects$', 'project.project_list'),
-    (r'^admin/project_new$', 'project.project_new'),
-    (r'^admin/project/(.+)$', 'project.project_edit'),
-    (r'^admin/project_delete/(.+)$', 'project.project_delete'),
-    (r'^admin/datastore_delete$', 'views.admin_datastore_delete'),
-    (r'^admin/datastore_upgrade$', 'views.admin_datastore_upgrade'),
-    )
diff --git a/webapp/codereview/view_util.py b/webapp/codereview/view_util.py
deleted file mode 100644
index ea73809..0000000
--- a/webapp/codereview/view_util.py
+++ /dev/null
@@ -1,476 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import base64
-import hashlib
-import hmac
-import logging
-import os
-import time
-import urllib
-
-from google.appengine.api import users
-from google.appengine.ext import db
-from google.appengine.runtime import DeadlineExceededError
-
-import django
-from django.template import loader as template_loader
-from django.http import HttpResponse, \
-                        HttpResponseRedirect, \
-                        HttpResponseForbidden, \
-                        HttpResponseNotFound
-from django.forms import ValidationError
-
-# Add our own template library.
-_library_name = __name__.rsplit('.', 1)[0] + '.library'
-if not django.template.libraries.get(_library_name, None):
-  django.template.add_to_builtins(_library_name)
-del _library_name
-
-import models
-
-IS_DEV = os.environ['SERVER_SOFTWARE'].startswith('Dev')
-MAX_XSRF_WINDOW = 4 * 60 * 60  # seconds
-
-### Decorators for request handlers ###
-
-def login_required(func):
-  """Decorator that redirects to the login page if you're not logged in."""
-  def login_wrapper(request, *args, **kwds):
-    if request.user is None:
-      return HttpResponseRedirect(
-          users.create_login_url(request.get_full_path()))
-    if not request.account.welcomed and request.path != '/settings/welcome':
-      return HttpResponseRedirect(
-          '/settings/welcome?dest=%s' % urllib.quote(request.get_full_path()))
-    return func(request, *args, **kwds)
-  return login_wrapper
-
-
-def user_required(func):
-  """Decorator that returns a 500 you're not logged in.
-  
-  Good for urls that are only meant for form submission, you should probably
-  pair this with @xsrf_required."""
-  def login_wrapper(request, *args, **kwds):
-    if request.user is None:
-      return http.HttpResponseServerError("error 500: user not logged in")
-    return func(request, *args, **kwds)
-  return login_wrapper
-
-
-def gae_admin_required(func):
-  def admin_wrapper(request, *args, **kwds):
-    """Decorator that insists that you are a GAE admin/developer.
-    """
-    if request.user is None:
-      path = request.get_full_path()
-      return HttpResponseRedirect(users.create_login_url(path))
-    if not request.is_gae_admin:
-      return HttpResponseNotFound('Page not found')
-    return func(request, *args, **kwds)
-  return admin_wrapper
-
-
-def admin_required(func):
-  def admin_wrapper(request, *args, **kwds):
-    """Decorator that insists that you're logged in as administratior."""
-    if request.user is None:
-      return HttpResponseRedirect(
-          users.create_login_url(request.get_full_path()))
-    if not request.user_is_admin:
-      return HttpResponseNotFound('Page not found')
-    return func(request, *args, **kwds)
-  return admin_wrapper
-
-
-def project_owner_or_admin_required(func):
-  def admin_wrapper(request, *args, **kwds):
-    """Decorator that insists that you're logged in as administratior."""
-    if request.user is None:
-      return HttpResponseRedirect(
-          users.create_login_url(request.get_full_path()))
-    if not (request.user_is_admin or request.projects_owned_by_user):
-      return HttpResponseNotFound('Page not found')
-    return func(request, *args, **kwds)
-  return admin_wrapper
-
-
-def devenv_required(func):
-  def devenv_wrapper(request, *args, **kwds):
-    """Decorator that insists that you're on the development server."""
-    if not IS_DEV:
-      return HttpResponseNotFound('Page not found')
-    return func(request, *args, **kwds)
-  return devenv_wrapper
-
-
-def change_required(func):
-  """Decorator that processes the change_id handler argument."""
-  def change_wrapper(request, change_id, *args, **kwds):
-    try:
-      change = models.Change.get_by_id(int(change_id))
-    except db.BadKeyError:
-      return HttpResponseNotFound('No change exists with that id (%s)' %
-                                  change_id)
-    if change is None:
-      return HttpResponseNotFound('No change exists with that id (%s)' %
-                                  change_id)
-    request.change = change
-    return func(request, *args, **kwds)
-  return change_wrapper
-
-
-def posted_change_required(func):
-  """Decorator that processes POST['change_id']
-  """
-  def change_wrapper(request, *args, **kwds):
-    try:
-      change_id = request.POST['change_id']
-    except KeyError:
-      return HttpResponseNotFound('No change supplied.')
-    change = models.Change.get_by_id(int(change_id))
-    if change is None:
-      return HttpResponseNotFound('No change exists with that id (%s)' %
-                                  change_id)
-    request.change = change
-    return func(request, *args, **kwds)
-  return change_wrapper
-
-
-def user_key_required(func):
-  """Decorator that processes the user handler argument."""
-  def user_key_wrapper(request, user_key, *args, **kwds):
-    user_key = urllib.unquote(user_key)
-    if '@' in user_key:
-      request.user_to_show = users.User(user_key)
-    elif ',,' in user_key:
-      request.user_to_show = users.User(user_key.replace(',,','@'))
-    else:
-      accounts = models.Account.get_accounts_for_real_name(user_key)
-      if not accounts:
-        logging.info("account not found for real_name %s" % user_key)
-        return HttpResponseNotFound('No user found with that key (%s)' %
-                                    user_key)
-      request.user_to_show = accounts[0].user
-    return func(request, *args, **kwds)
-  return user_key_wrapper
-
-
-def change_owner_required(func):
-  """Decorator that processes the change_id argument and insists you own it."""
-  @change_required
-  @login_required
-  def change_owner_wrapper(request, *args, **kwds):
-    if not request.change.user_can_edit():
-      return HttpResponseForbidden('You do not own this change')
-    return func(request, *args, **kwds)
-  return change_owner_wrapper
-
-
-def patchset_required(func):
-  """Decorator that processes the patchset_id argument."""
-  @change_required
-  def patchset_wrapper(request, patchset_id, *args, **kwds):
-    patchset = models.PatchSet.get_by_id(int(patchset_id), parent=request.change)
-    if patchset is None:
-      return HttpResponseNotFound('No patch set exists with that id (%s)' %
-                                  patchset_id)
-    patchset.change = request.change
-    request.patchset = patchset
-    return func(request, *args, **kwds)
-  return patchset_wrapper
-
-
-def patch_required(func):
-  """Decorator that processes the patch_id argument."""
-  @patchset_required
-  def patch_wrapper(request, patch_id, *args, **kwds):
-    patch = models.Patch.get_patch(request.patchset, patch_id)
-    if patch is None:
-      return HttpResponseNotFound('No patch exists with that id (%s %s)' %
-                                  (request.patchset.key().id(), patch_id))
-    patch.patchset = request.patchset
-    request.patch = patch
-    return func(request, *args, **kwds)
-  return patch_wrapper
-
-
-### Render Django template ###
-
-def _parse_template(name):
-  return template_loader.get_template(name)
-
-def _lookup_template(name):
-  try:
-    t = _template_cache[name]
-  except KeyError:
-    t = _parse_template(name)
-    _template_cache[name] = t
-  return t
-_template_cache = {}
-
-if IS_DEV:
-  _get_template = _parse_template
-else:
-  _get_template = _lookup_template
-
-def respond(request, template, params=None, status=200):
-  """Render a response, passing standard stuff to the response.
-
-  Args:
-    request: The request object.
-    template: The template name; '.html' is appended automatically.
-    params: A dict giving the template parameters; modified in-place.
-
-  Returns:
-    A Django HttpResponse
-  """
-  try:
-    if params is None:
-      params = {}
-
-    params['request'] = request
-    params['user'] = request.user
-    params['is_gae_admin'] = request.is_gae_admin
-    params['is_dev'] = IS_DEV
-    params['analytics'] = models.Settings.get_settings().analytics
-    my_path = request.get_full_path()
-
-    if request.user is None:
-      params['sign_in'] = users.create_login_url(my_path)
-    else:
-      params['sign_out'] = users.create_logout_url(my_path)
-      params['star_url'] = '/star'
-      params['unstar_url'] = '/unstar'
-      params['inline_draft_url'] = '/inline_draft'
-
-    if not template.endswith('.html'):
-      template += '.html'
-    type = 'text/html; charset=UTF-8'
-
-    ctx = django.template.Context(params)
-    body = _get_template(template).render(ctx)
-    return HttpResponse(content = body,
-                        status = status,
-                        content_type= type)
-  except DeadlineExceededError:
-    logging.exception('DeadlineExceededError')
-    return HttpResponse(status=500, content='DeadlineExceededError')
-  except MemoryError:
-    logging.exception('MemoryError')
-    return HttpResponse(status=500, content='MemoryError')
-  except AssertionError:
-    logging.exception('AssertionError')
-    return HttpResponse(status=500, content='AssertionError')
-
-
-### Form Handling ###
-
-_xsrf_key = None
-_xsrf_now = None
-_xsrf_cache = {}
-
-def _now():
-  global _xsrf_now
-
-  if _xsrf_now is None:
-    _xsrf_now = time.time()
-  return _xsrf_now
-
-def _xsrf_sign(path, when):
-  global _xsrf_key
-
-  if _xsrf_key is None:
-    _xsrf_key = models.Settings.get_settings().xsrf_key
-    _xsrf_key = base64.b64decode(_xsrf_key)
-
-  user = users.get_current_user()
-  if user:
-    user_name = user.email()
-  else:
-    user_name = '-'
-
-  tok = [user_name, path, str(when)]
-  xsrf = hmac.new(_xsrf_key, digestmod=hashlib.sha1)
-  xsrf.update(':'.join(tok))
-  return base64.b64encode(str(when) + ':' + xsrf.digest())
-
-def _xsrf_check(path, xsrf):
-  if not xsrf:
-    return False
-  try:
-    when = int(base64.b64decode(xsrf).split(':', 2)[0])
-  except TypeError:
-    return False
-  except ValueError:
-    return False
-  except UnicodeEncodeError:
-    return False
-  if abs(_now() - when) > MAX_XSRF_WINDOW:
-    return False
-  return xsrf == _xsrf_sign(path, when)
-
-
-class BaseForm(django.forms.Form):
-  """A Django form which provides automatic XSRF protection,
-     assuming it is parsed/displayed by process_form()
-  """
-
-  # Name of the template the form renders itself as.
-  #
-  # Must be replaced by the subclass.
-  #
-  _template = None
-
-  xsrf = django.forms.CharField(required = False,
-                                widget = django.forms.HiddenInput)
-
-  @classmethod
-  def _init(cls, state):
-    """Obtain the initial values for the fields of the form.
-
-       Args:
-         state:  state object supplied by the caller of process_form
-       Returns:
-         dict of form constructor keywords; at minimum the key
-         'initial' must be a dict
-    """
-    return {'initial': {}}
-
-  def _post_init(self, state):
-    """Called on the form, after it has been constructed, both in the
-       initial request, and in the post-back.
-
-       Args:
-         state:  state object supplied by the caller of process_form
-       Returns:
-         nothing
-    """
-    pass
-
-  def _pre_verify(self, get, post):
-    """Gives the form a crack at the raw post data before verification.
-
-       If this method returns an HttpResponse object, that will be
-       returned, and _save will not be called.
-    """
-    return None
-
-  def _save(self, cd, state):
-    """Processes the form data, typically saving it to the db.
-
-       Adding an error to self.errors['fieldname'] will cause
-       the form to be redisplayed, in case the save routine finds
-       problems with the submitted data and wants the user to try
-       and correct them.
-
-       Args:
-         cd:  dict of cleaned field values (same as self.cleaned_data)
-         state:  state object supplied by the caller of process_form
-    """
-    raise NotImplementedError()
-
-
-def process_form(request, form_cls, state, done, params=None):
-  """Display (or parse and process) an HTML form.
-
-     Args:
-       request:   Django request object
-       form_cls:  class object for a subclass of BaseForm
-
-       state:     any application state object, to be passed into
-                  the _init and _save methods of BaseForm
-
-       done:      a callable invoked after _save is successful;
-                  its return value is the result of this function
-
-       params:    dictional of additional parameters to pass into
-                  the Django template
-     Returns:
-       an HttpResponse (or the result of done() if _save was called)
-  """
-  if params is None:
-    params = {}
-
-  def _handle_result(result):
-    if isinstance(result, HttpResponse):
-      return result
-    elif isinstance(result, BaseForm):
-      params['form'] = result
-      return respond(request, result._template, params)
-    
-  if request.method == 'POST':
-    form = form_cls(request.POST)
-    form._post_init(state)
-
-    if _xsrf_check(request.get_full_path(), request.POST.get('xsrf')):
-      result = form._pre_verify(request.GET, request.POST)
-      if result:
-        return _handle_result(result)
-      if form.is_valid():
-        # for form.cleaned_data to exist
-        result = form._save(form.cleaned_data, state)
-        if result:
-          return _handle_result(result)
-        if form.is_valid():
-          return done()
-    else:
-      if form.is_valid():  # this check forces cleaned_data
-        i = dict(form.cleaned_data)
-        i['xsrf'] = xsrf_for(request.get_full_path())
-        form = form_cls(initial=i)
-        form._errors = {}
-        form._errors['xsrf'] = ['Form token timed out.  Try again.']
-  else:
-    kwargs = form_cls._init(state)
-    kwargs['initial']['xsrf'] = xsrf_for(request.get_full_path())
-    form = form_cls(**kwargs)
-    form._post_init(state)
-
-  params['form'] = form
-  return respond(request, form._template, params)
-
-
-def xsrf_for(path):
-  try:
-    return _xsrf_cache[path]
-  except KeyError:
-    pass
-  r = _xsrf_sign(path, int(_now()))
-  _xsrf_cache[path] = r
-  return r
-
-def is_xsrf_ok(request, path=None, xsrf=None):
-  if path is None:
-    path = request.get_full_path()
-  if xsrf is None:
-    xsrf = request.POST.get('xsrf')
-  return _xsrf_check(path, xsrf)
-
-def xsrf_required(func):
-  """Decorator that requires invocation by HTTP POST only,
-     and the form must have an 'xsrf' field with a valid
-     xsrf key (see xsrf_for() to make such keys).
-
-     Implies @login_required
-  """
-  def post_wrapper(request, *args, **kwds):
-    if request.method != 'POST':
-      return HttpResponse("POST request required.", status=405)
-    if not is_xsrf_ok(request):
-      return HttpResponse("Invalid xsrf signature."
-                          " Reload the prior page.", status=405)
-    return func(request, *args, **kwds)
-  return login_required(post_wrapper)
diff --git a/webapp/codereview/views.py b/webapp/codereview/views.py
deleted file mode 100644
index 9f05ce5..0000000
--- a/webapp/codereview/views.py
+++ /dev/null
@@ -1,1831 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Views for Gerrit.
-
-This requires Django 0.97.pre.
-"""
-
-
-### Imports ###
-
-
-# Python imports
-import os
-import cgi
-import random
-import re
-import logging
-import binascii
-import datetime
-import hashlib
-import zlib
-from xml.etree import ElementTree
-from cStringIO import StringIO
-
-# AppEngine imports
-from google.appengine.api import mail
-from google.appengine.api import users
-from google.appengine.ext import db
-from google.appengine.ext.db import djangoforms
-
-# Django imports
-# TODO(guido): Don't import classes/functions directly.
-from django import forms
-from django import http
-from django.http import HttpResponse, HttpResponseRedirect
-from django.http import HttpResponseForbidden, HttpResponseNotFound
-from django.shortcuts import render_to_response
-import django.template
-from django.utils import simplejson
-from django.forms import formsets
-
-# Local imports
-import changetable
-from memcache import Key as MemCacheKey
-import models
-import email
-import engine
-import library
-import patching
-import fields
-import project
-import git_models
-from view_util import *
-
-
-### Constants ###
-
-MAX_ROWS = 1000
-
-CHANGE_TABLE_FIELDS = (changetable.FIELD_ID,
-          changetable.FIELD_SUBJECT,
-          changetable.FIELD_OWNER,
-          changetable.FIELD_REVIEWERS,
-          changetable.FIELD_PROJECT,
-#            changetable.FIELD_BRANCH,
-          changetable.FIELD_MODIFIED,
-         )
-
-CHANGE_TABLE_FIELDS_NO_PROJECT = (changetable.FIELD_ID,
-          changetable.FIELD_SUBJECT,
-          changetable.FIELD_OWNER,
-          changetable.FIELD_REVIEWERS,
-#            changetable.FIELD_BRANCH,
-          changetable.FIELD_MODIFIED,
-         )
-
-### Helper functions ###
-
-
-def _random_bytes(n):
-  """Helper returning a string of random bytes of given length."""
-  return ''.join(map(chr, (random.randrange(256) for i in xrange(n))))
-
-
-### Request handlers ###
-
-
-def index(request):
-  """/ - Show a list of patches."""
-  if request.user is None:
-    return open_changes(request)
-  else:
-    return mine(request)
-
-def hello(request):
-  """/hello"""
-  return HttpResponseRedirect('/settings/welcome?dest=/')
-  #return respond(request, 'hello.html', {})
-
-
-def all_changes(request):
-    """Show all changes"""
-    return _list_changes(request, 'SELECT * FROM Change'
-                      ' ORDER BY modified DESC', 'All Changes')
-
-
-def open_changes(request):
-    """Show open changes"""
-    return _list_changes(request, 'SELECT * FROM Change'
-                      ' WHERE closed = FALSE' 
-                      ' ORDER BY modified DESC', 'Open Changes')
-
-DEFAULT_LIMIT = 10
-
-def _list_changes(request,query,title):
-  """Show a list of changes specified by the query.
-     DEFAULT_LIMIT changes are displayed per page unless
-     the limit parameter is passed."""
-  offset = request.GET.get('offset')
-  if offset:
-    try:
-      offset = int(offset)
-    except:
-      offset = 0
-    else:
-      offset = max(0, offset)
-  else:
-    offset = 0
-  limit = request.GET.get('limit')
-  if limit:
-    try:
-      limit = int(limit)
-    except:
-      limit = DEFAULT_LIMIT
-    else:
-      limit = max(1, min(limit, 100))
-  else:
-    limit = DEFAULT_LIMIT
-  query = db.GqlQuery(query)
-  # Fetch one more to see if there should be a 'next' link
-  changes = query.fetch(limit+1, offset)
-  more = bool(changes[limit:])
-  if more:
-    del changes[limit:]
-  if more:
-    next = '?offset=%d&limit=%d' % (offset+limit, limit)
-  else:
-    next = ''
-  if offset > 0:
-    prev = '?offset=%d&limit=%d' % (max(0, offset-limit), limit)
-  else:
-    prev = ''
-  newest = ''
-  if offset > limit:
-    newest = '?limit=%d' % limit
-
-  _optimize_draft_counts(changes)
-  _prefetch_names(changes)
-
-  table = changetable.ChangeTable(request.user, CHANGE_TABLE_FIELDS)
-  table.add_section(None, changes)
-
-  return respond(request, 'list_changes.html', {
-                    'changes': table.render(),
-                    'title': title,
-                    'limit': limit,
-                    'newest': newest,
-                    'prev': prev,
-                    'next': next,
-                    'first': offset+1,
-                    'last': len(changes) > 1 and offset+len(changes) or None
-                  })
-
-
-def _optimize_draft_counts(changes):
-  """Force _num_drafts to zero for changes that are known to have no drafts.
-
-  Args:
-    changes: list of model.Change instances.
-
-  This inspects the drafts attribute of the current user's Account
-  instance, and forces the draft count to zero of those changes in the
-  list that aren't mentioned there.
-
-  If there is no current user, all draft counts are forced to 0.
-  """
-  account = models.Account.current_user_account
-  if account is None:
-    change_ids = None
-  else:
-    change_ids = account.drafts
-  for change in changes:
-    if change_ids is None or change.key().id() not in change_ids:
-      change._num_drafts = 0
-
-def _prefetch_names(changes):
-  for c in changes:
-    library.prefetch_names([c.owner])
-    library.prefetch_names(c.reviewers)
-    library.prefetch_names(c.cc)
-
-
-@login_required
-def mine(request):
-  """/mine - Show a list of changes created by the current user."""
-  request.user_to_show = request.user
-  return _show_user(request)
-
-def all_unclaimed(request):
-  flat_changes = models.gql(models.Change,
-                          ' WHERE closed = FALSE'
-                          '   AND claimed = FALSE'
-                          ' ORDER BY dest_project DESC,'
-                          '   modified DESC').fetch(1000)
-  changes = changetable.ChangeTable(request.user,
-      CHANGE_TABLE_FIELDS_NO_PROJECT)
-  c_list = []
-  last_project_key = None
-
-  for c in flat_changes:
-    k = c.dest_project.key()
-    if k != last_project_key:
-      if c_list:
-        _optimize_draft_counts(c_list)
-        _prefetch_names(c_list)
-        changes.add_section(c_list[0].dest_project.name, c_list)
-      last_project_key = k
-      c_list = []
-    c_list.append(c)
-
-  if c_list:
-    _optimize_draft_counts(c_list)
-    _prefetch_names(c_list)
-    changes.add_section(c_list[0].dest_project.name, c_list)
-  vars = {
-      'changes': changes.render(),
-    }
-
-  return respond(request, 'unclaimed.html', vars)
-
-@login_required
-def unclaimed(request):
-  """/unclaimed - Show changes with no reviewer listed for
-     user's selected projects.
-  """
-  changes = changetable.ChangeTable(request.user,
-      CHANGE_TABLE_FIELDS_NO_PROJECT)
-
-  for project in db.get(request.account.unclaimed_changes_projects):
-    if project is None:
-      continue
-    c = models.gql(models.Change,
-                          ' WHERE closed = FALSE'
-                          '   AND claimed = FALSE'
-                          '   AND dest_project = :dest_project'
-                          ' ORDER BY modified DESC',
-                          dest_project=project.key()).fetch(1000)
-    if len(c) > 0:
-      _optimize_draft_counts(c)
-      _prefetch_names(c)
-      changes.add_section(project.name, c)
-
-  vars = {
-      'changes': changes.render(),
-    }
-
-  return respond(request, 'unclaimed.html', vars)
-
-
-@login_required
-def starred(request):
-  """/starred - Show a list of changes starred by the current user."""
-  stars = models.Account.current_user_account.stars
-  table = changetable.ChangeTable(request.user, CHANGE_TABLE_FIELDS)
-  if stars:
-    changes = [change for change in models.Change.get_by_id(stars)
-                    if change is not None]
-    _optimize_draft_counts(changes)
-    _prefetch_names(changes)
-    table.add_section(None, changes)
-  return respond(request, 'starred.html', {'changes': table.render()})
-
-
-@user_key_required
-def show_user(request):
-  """/user - Show the user's dashboard"""
-  return _show_user(request)
-
-def _respond_paged(request, template, new_pfx, old_pfx, vars):
-  return respond(request, template, {
-                 new_pfx + '_list': vars[old_pfx + '_list'],
-                 new_pfx + '_opos': vars[old_pfx + '_opos'],
-                 new_pfx + '_oend': vars[old_pfx + '_oend'],
-                 new_pfx + '_prev': vars[old_pfx + '_prev'],
-                 new_pfx + '_next': vars[old_pfx + '_next']
-                 })
-
-def _paginate(prefix, n, offset, q):
-  list = q.fetch(n + 1, offset - 1)
-  have = len(list)
-
-  if have == n + 1:
-    list = list[0:-1]
-    have = n
-    next = offset + n
-    if next >= 1000:
-      next = None
-  else:
-    next = None
-
-  if offset == 0:
-    prev = None
-  else:
-    prev = offset - n
-    if prev < 0:
-      prev = 0
-
-  if next:
-    last = next - 1
-  else:
-    last = offset + have - 1
-
-  for i in list:
-    i.paginate_row_type = prefix
-
-  return {prefix + '_list': list,
-          prefix + '_opos': offset,
-          prefix + '_oend': last,
-          prefix + '_prev': prev,
-          prefix + '_next': next}
-
-
-def _user_mine(user):
-  r = models.gql(models.Change,
-      'WHERE closed = FALSE AND owner = :1'
-      ' ORDER BY modified DESC',
-      user).fetch(1000)
-  _optimize_draft_counts(r)
-  _prefetch_names(r)
-  return r
-
-def _user_review(user):
-  r = models.gql(models.Change,
-      'WHERE closed = FALSE AND reviewers = :1'
-      ' ORDER BY modified DESC',
-      user.email()).fetch(1000)
-  _optimize_draft_counts(r)
-  _prefetch_names(r)
-  return r
-
-def _user_closed(user):
-  r = models.gql(models.Change,
-      'WHERE closed = TRUE AND owner = :1 AND modified > :2'
-      ' ORDER BY modified DESC',
-      user,
-      datetime.datetime.now() - datetime.timedelta(days=7)
-      ).fetch(15)
-  _optimize_draft_counts(r)
-  _prefetch_names(r)
-  return r
-
-def _show_user(request):
-  user = request.user_to_show
-  real_name = library.real_name(user)
-
-  mine = _user_mine(user)
-  review = _user_review(user)
-  closed = _user_closed(user)
-
-  changes = changetable.ChangeTable(request.user, CHANGE_TABLE_FIELDS)
-
-  changes.add_section('Changes uploaded by %s' % real_name, mine)
-  changes.add_section('Changes reviewable by %s' % real_name, review)
-  changes.add_section('Recently closed changes', closed)
-  
-  vars = {
-      'email': user.email(),
-      'changes': changes.render(),
-    }
-
-  return respond(request, 'user.html', vars)
-
-
-def _get_emails(form, label):
-  """Helper to return the list of reviewers, or None for error."""
-  emails = []
-  raw_emails = form.cleaned_data.get(label)
-  if raw_emails:
-    for email in raw_emails.split(','):
-      email = email.strip().lower()
-      if email and email not in emails:
-        try:
-          email = db.Email(email)
-          if email.count('@') != 1:
-            raise db.BadValueError('Invalid email address: %s' % email)
-          head, tail = email.split('@')
-          if '.' not in tail:
-            raise db.BadValueError('Invalid email address: %s' % email)
-        except db.BadValueError, err:
-          form.errors[label] = [unicode(err)]
-          continue
-        emails.append(email)
-  return emails
-
-def _prepare_show_patchset(user, patchset):
-  if user:
-    drafts = list(models.gql(models.Comment,
-             'WHERE ANCESTOR IS :1'
-             ' AND draft = TRUE'
-             ' AND author = :2',
-             patchset, user))
-  else:
-    drafts = []
-
-  max_rows = 250
-  if len(patchset.filenames) < max_rows:
-    files = models.gql(models.Patch,
-                       'WHERE patchset = :1 ORDER BY filename',
-                        patchset).fetch(max_rows)
-    patchset.n_comments = 0
-    patchset.n_drafts = len(drafts)
-    patchset.patches = files
-
-    if drafts:
-      p_bykey = dict()
-      for p in patchset.patches:
-        p_bykey[p.key()] = p
-        p._num_drafts = 0
-        patchset.n_comments += p.num_comments
-
-      for d in drafts:
-        if d.parent_key() in p_bykey:
-          p = p_bykey[d.parent_key()]
-          p._num_drafts += 1
-    else:
-      for p in patchset.patches:
-          p._num_drafts = 0
-  else:
-    patchset.freaking_huge = True
-    patchset.patches = []
-
-
-def _restrict_lgtm(lgtm, can_approve):
-  if not can_approve:
-    if lgtm == 'lgtm':
-      return 'yes'
-    elif lgtm == 'reject':
-      return 'no'
-  return lgtm
-    
-
-def _restrict_verified(verified, can_verify):
-  if can_verify:
-    return verified
-  else:
-    return False
-
-def _map_status(rs, real_approvers,
-                    real_deniers,
-                    real_verifiers,
-                    known_owners,
-                    known_approvers,
-                    known_verifiers):
-  email = rs.user.email()
-  lgtm = _restrict_lgtm(rs.lgtm,
-      (email in real_approvers) or (email in real_deniers))
-  verified = _restrict_verified(rs.verified, email in real_verifiers)
-
-  if email in known_owners:
-    user_type = 'Project Lead'
-  elif email in known_approvers:
-    user_type = 'Approver'
-  elif email in known_verifiers:
-    user_type = 'Verifier'
-  else:
-    user_type = 'Contributor'
-
-  return {
-      'user': rs.user,
-      'user_type' : user_type,
-      'lgtm': lgtm,
-      'verified': verified,
-    }
-
-@change_required
-def show(request, form=None):
-  """/<change> - Show a change."""
-  change = request.change
-
-  messages = list(change.message_set.order('date'))
-  patchsets = list(change.patchset_set.order('id'))
-  if not patchsets:
-    return HttpResponse('No patchset available.')
-
-  last_patchset = patchsets[-1]
-  _prepare_show_patchset(request.user, last_patchset)
-
-  if last_patchset.patches:
-    first_patch = last_patchset.patches[0]
-  else:
-    first_patch = None
-
-  dependencies_table = changetable.ChangeTable(request.user,
-      CHANGE_TABLE_FIELDS_NO_PROJECT)
-  depends_on = [ r.patchset.change
-                 for r in last_patchset.revision.get_ancestors()
-                 if r.patchset ]
-  dependencies_table.add_section("Depends On", depends_on)
-  needed_by  = [ r.patchset.change
-                 for r in last_patchset.revision.get_children()
-                 if r.patchset ]
-  dependencies_table.add_section("Needed By", needed_by)
-
-  # approvals
-  review_status = change.get_review_status()
-  reviewer_status = models.Change.get_reviewer_status(review_status)
-  ready_to_submit = project.ready_to_submit(
-      change.dest_branch,
-      change.owner,
-      reviewer_status,
-      last_patchset.filenames,
-      request.user)
-
-  # if the owner can lgtm or verify, show her too
-  author_status = {
-      'lgtm': 'lgtm' if ready_to_submit['owner_auto_lgtm'] else 'abstain',
-      'verified': ready_to_submit['owner_auto_verify']
-    }
-
-  show_dependencies = len(needed_by) > 0
-  for c in depends_on:
-    if not c.closed:
-      show_dependencies = True
-  if change.closed:
-    show_dependencies = False
-
-  can_submit = ready_to_submit['can_submit']
-  if not last_patchset.complete:
-    can_submit = False
-
-  project_owners = set([u.email() for u in change.dest_project.leads()])
-  project_approvers = set()
-  project_verifiers = set()
-
-  for ar in change.dest_project.get_code_reviews():
-    for u in ar.approvers():
-      project_approvers.add(u.email())
-    for u in ar.verifiers():
-      project_verifiers.add(u.email())
-
-  real_approvers = ready_to_submit['real_approvers']
-  real_deniers = ready_to_submit['real_deniers']
-  real_verifiers = ready_to_submit['real_verifiers']
-
-  real_review_status = [
-      _map_status(rs,
-                  real_approvers,
-                  real_deniers,
-                  real_verifiers,
-                  project_owners,
-                  project_approvers,
-                  project_verifiers)
-      for rs in review_status]
-  reviewers = [rs.user.email() for rs in review_status]
-
-  show_submit_button = (not change.is_submitted) and can_submit
-
-  show_edit_reviewers_button = (request.user
-          and (request.user_is_admin or request.user.email() in project_owners))
-  show_add_reviewers_button = request.user and not show_edit_reviewers_button
-  reviewers_url = '/%s/reviewers' % change.key().id()
-  show_remove_self_button = request.user and request.user.email() in reviewers
-  remove_self_url = '/%s/remove_me' % change.key().id()
-  show_delete_button = change.user_can_edit()
-  delete_url = '/%s/delete' % change.key().id()
-  show_more_options = (show_remove_self_button or show_delete_button
-                       or show_edit_reviewers_button
-                       or show_add_reviewers_button)
-
-  _prefetch_names([change])
-  _prefetch_names(depends_on)
-  _prefetch_names(needed_by)
-  library.prefetch_names(map(lambda s: s.user, review_status))
-
-  return respond(request, 'change.html', {
-                  'change': change,
-                  'ready_to_submit': can_submit,
-                  'show_submit_button': show_submit_button,
-                  'is_approved': ready_to_submit['approved'],
-                  'is_rejected': ready_to_submit['denied'],
-                  'is_verified': ready_to_submit['verified'],
-                  'author_status': author_status,
-                  'review_status': real_review_status,
-                  'dependencies_table': dependencies_table.render(),
-                  'show_dependencies': show_dependencies,
-                  'patchsets': patchsets,
-                  'messages': messages,
-                  'last_patchset': last_patchset,
-                  'first_patch': first_patch,
-                  'reply_url': '/%s/publish' % change.key().id(),
-                  'merge_url': '/%s/merge/%s' % (change.key().id(),
-                                                 last_patchset.key().id()),
-                  'show_remove_self_button': show_remove_self_button,
-                  'remove_self_url': remove_self_url,
-                  'show_edit_reviewers_button': show_edit_reviewers_button,
-                  'show_add_reviewers_button': show_add_reviewers_button,
-                  'reviewers_url': reviewers_url,
-                  'show_delete_button': show_delete_button,
-                  'delete_url': delete_url,
-                  'show_more_options': show_more_options,
-                })
-
-
-@patchset_required
-def ajax_patchset(request):
-  """/<change>/ajax_patchset/<ps> - Format one patchset."""
-  change = request.change
-  patchset = request.patchset
-
-  _prepare_show_patchset(request.user, patchset)
-  return respond(request, 'patchset.html',
-                 {'change' : request.change,
-                  'patchset' : request.patchset
-                 })
-
-
-def revision_redirect(request, hash):
-  """/r/<hash> - Redirect to a Change for this git revision, if we can."""
-  hash = hash.lower()
-  if len(hash) < 40:
-    q = models.gql(models.RevisionId,
-                   "WHERE id > :1 AND id < :2",
-                   hash, hash.ljust(40, 'z'))
-  else:
-    q = models.gql(models.RevisionId, "WHERE id=:1", hash)
-  revs = q.fetch(2)
-  count = len(revs)
-
-  if count == 1:
-    rev_id = revs[0]
-    if rev_id.patchset:
-      return HttpResponseRedirect('/%s' % rev_id.patchset.change.key().id())
-    else:
-      return respond(request, 'change_revision_unknown.html', { 'hash': hash })
-
-  if count > 0:
-    return http.HttpResponseServerError("error 500: multiple matches for hash")
-
-  if len(hash) < 40:
-    q = models.gql(git_models.ReceivedBundle,
-                   "WHERE contained_objects > :1"
-                   "  AND contained_objects < :2",
-                   hash, hash.ljust(40, 'z'))
-  else:
-    q = models.gql(git_models.ReceivedBundle,
-                   "WHERE contained_objects=:1",
-                   hash)
-  rb = q.get()
-  if rb:
-    return respond(request, 'change_revision_uploading.html',
-                   { 'hash': hash })
-  else:
-    return respond(request, 'change_revision_unknown.html',
-                   { 'hash': hash },
-                   status = 404)
-
-@user_required
-@change_required
-@xsrf_required
-def remove_me(request):
-  change = request.change
-  change.remove_reviewer(request.user)
-  return HttpResponseRedirect('/%s' % change.key().id())
-
-class ReviewersForm(BaseForm):
-  _template = 'reviewers.html'
-
-  reviewers = fields.UserGroupField(allow_users=True, allow_groups=False,
-                                      sorted=False)
-  message = forms.CharField(required=False,
-                            max_length=10000,
-                            widget=forms.Textarea(attrs={'cols': 60}))
-  send_mail = forms.BooleanField(required=False)
-
-  @classmethod
-  def _get_reviewers(cls, change):
-    rev = [users.User(email) for email in change.reviewers]
-    reviewers = fields.UserGroupField.field_value_for_keys(users=rev)
-    return reviewers
-
-  @classmethod
-  def _init(cls, state):
-    (request,user,change,can_edit) = state
-    if can_edit:
-      reviewers = ReviewersForm._get_reviewers(change)
-    else:
-      reviewers = []
-    return {
-            'initial': {
-              'send_mail': True,
-              'reviewers': reviewers,
-            },
-          }
-
-  def _post_init(self, state):
-    (request,user,change,can_edit) = state
-    read_only = [models.Account.get_account_for_user(change.owner)]
-    if not can_edit:
-      read_only = read_only +  ReviewersForm._get_reviewers(change)
-    self.fields['reviewers'].widget.read_only = read_only
-
-  def _save(self, cd, state):
-    (request,user,change,can_edit) = state
-
-    users = fields.UserGroupField.get_users(cd['reviewers'])
-    old_review_status = change.get_review_status()
-
-    def trans():
-      if can_edit:
-        new_users = set(users)
-      else:
-        new_users = set([rs.user for rs in old_review_status] + users)
-
-      (added_review_status, deleted_review_status, new_review_status) = \
-          library.update_reviewers(change, old_review_status, new_users)
-
-      for rs in added_review_status:
-        rs.put()
-      for rs in deleted_review_status:
-        rs.delete()
-      change.put()
-
-      return (added_review_status, deleted_review_status, new_review_status)
-
-    (added_review_status,deleted_review_status,new_review_status) = \
-        db.run_in_transaction(trans)
-
-    if cd['send_mail']:
-      to_users = [rs.user for rs in added_review_status if rs.user != user]
-      library.send_new_change_emails(change, user, to_users, [],
-          cd['message'] + '\n')
-
-@login_required
-@change_required
-def reviewers(request):
-  user = request.user
-  change = request.change
-  def done():
-    return HttpResponseRedirect('/%s' % change.key().id())
-  project_owners = set([u.email() for u in change.dest_project.leads()])
-  can_edit = user and (request.user_is_admin or user.email() in project_owners)
-  fixed_message = library.make_please_review_message(change,
-      models.Account.current_user_account)
-  return process_form(request, ReviewersForm, (request,user,change,can_edit),
-      done, {
-        'change': change,
-        'can_edit': can_edit,
-        'fixed_message': fixed_message,
-      })
-
-
-@change_owner_required
-@xsrf_required
-def delete(request):
-  """/<change>/delete - Delete a change.  There is no way back."""
-  change = request.change
-
-  for ps in models.PatchSet.gql('WHERE ANCESTOR IS :1', change):
-    for rev in models.RevisionId.get_for_patchset(ps):
-      rev.patchset = None
-      rev.put()
-
-  tbd = []
-  for cls in [models.Patch,
-              models.PatchSet,
-              models.PatchSetFilenames,
-              models.Comment,
-              models.Message,
-              models.ReviewStatus]:
-    tbd += cls.gql('WHERE ANCESTOR IS :1', change).fetch(50)
-    if len(tbd) > 100:
-      db.delete(tbd)
-      return respond(request, 'delete_loop.html',
-                     {'change': change,
-                      'del_url': '/%s/delete' % id})
-
-  tbd += [change]
-  db.delete(tbd)
-  return HttpResponseRedirect('/mine')
-
-
-@xsrf_required
-@patchset_required
-def merge(request):
-  """/<change>/merge/<patchset> - Submit a change for merge."""
-  change = request.change
-  patchset = request.patchset
-  patchset.patches = list(patchset.patch_set.order('filename'))
-
-  reviewer_status = models.Change.get_reviewer_status(
-      change.get_review_status())
-  ready_to_submit = project.ready_to_submit(
-      change.dest_branch,
-      change.owner,
-      reviewer_status,
-      patchset.filenames,
-      request.user)
-
-  if not ready_to_submit['can_submit']:
-    # Again, the button shouldn't have been there in this case.
-    # Just send 'em back to the change page.
-    return HttpResponseRedirect('/%d' % change.key().id())
-
-  try:
-    change.submit_merge(patchset)
-    change.put()
-  except models.InvalidSubmitMergeException, why:
-    return HttpResponseForbidden(str(why))
-  return HttpResponseRedirect('/mine')
-
-
-@patch_required
-def patch(request):
-  """/<change>/patch/<patchset>/<patch> - View a raw patch."""
-  return patch_helper(request)
-
-
-def patch_helper(request, nav_type='patch'):
-  """Returns a unified diff.
-
-  Args:
-    request: Django Request object.
-    nav_type: the navigation used in the url (i.e. patch/diff/diff2).  Normally
-      the user looks at either unified or side-by-side diffs at one time, going
-      through all the files in the same mode.  However, if side-by-side is not
-      available for some files, we temporarly switch them to unified view, then
-      switch them back when we can.  This way they don't miss any files.
-
-  Returns:
-    Whatever respond() returns.
-  """
-  _add_next_prev(request.patchset, request.patch)
-  request.patch.nav_type = nav_type
-  parsed_lines = patching.ParsePatchToLines(request.patch.patch_lines,
-                                            request.patch.multi_way_diff)
-  if parsed_lines is None:
-    return HttpResponseNotFound('Can\'t parse the patch')
-  rows = engine.RenderUnifiedTableRows(request, parsed_lines)
-  return respond(request, 'patch.html',
-                 {'patch': request.patch,
-                  'patchset': request.patchset,
-                  'rows': rows,
-                  'change': request.change})
-
-
-def _get_context_for_user(request):
-  """Returns the context setting for a user.
-
-  The value is validated against models.CONTEXT_CHOICES.
-  If an invalid value is found, the value is overwritten with
-  models.DEFAULT_CONTEXT.
-  """
-  if request.user:
-    account = models.Account.current_user_account
-    default_context = account.default_context
-  else:
-    default_context = models.DEFAULT_CONTEXT
-  try:
-    context = int(request.GET.get("context", default_context))
-  except ValueError:
-    context = default_context
-  if context not in models.CONTEXT_CHOICES:
-    context = models.DEFAULT_CONTEXT
-  return context
-
-
-@patch_required
-def diff(request):
-  """/<change>/diff/<patchset>/<patch> - View a patch as a side-by-side diff"""
-  patchset = request.patchset
-  patch = request.patch
-
-  context = _get_context_for_user(request)
-  rows = _get_diff_table_rows(request, patch, context)
-  if isinstance(rows, HttpResponse):
-    return rows
-
-  _add_next_prev(patchset, patch)
-  return respond(request, 'diff.html',
-                 {'change': request.change, 'patchset': patchset,
-                  'patch': patch, 'rows': rows,
-                  'context': context, 'context_values': models.CONTEXT_CHOICES})
-
-
-def _get_diff_table_rows(request, patch, context):
-  """Helper function that returns rendered rows for a patch"""
-  chunks = patching.ParsePatchToChunks(patch.patch_lines,
-                                       patch.filename)
-  if chunks is None:
-    # If the patch has nothing in it, try using the
-    # unified diff patch view instead as then we can
-    # at least see the patch in the UI.
-    #
-    return HttpResponseRedirect('/%d/patch/%d/%s' % (
-             patch.patchset.change.key().id(),
-             patch.patchset.key().id(),
-             patch.id))
-
-  return list(engine.RenderDiffTableRows(request, patch.old_lines,
-                                         chunks, patch,
-                                         context=context))
-
-
-@patch_required
-def diff_skipped_lines(request, id_before, id_after, where):
-  """/<change>/diff/<patchset>/<patch> - Returns a fragment of skipped lines"""
-  patchset = request.patchset
-  patch = request.patch
-
-  # TODO: allow context = None?
-  rows = _get_diff_table_rows(request, patch, 10000)
-  if isinstance(rows, HttpResponse):
-    return rows
-  return _get_skipped_lines_response(rows, id_before, id_after, where)
-
-
-def _get_skipped_lines_response(rows, id_before, id_after, where):
-  """Helper function that creates a Response object for skipped lines"""
-  response_rows = []
-  id_before = int(id_before)
-  id_after = int(id_after)
-
-  if where == "b":
-    rows.reverse()
-
-  for row in rows:
-    m = re.match('^<tr( name="hook")? id="pair-(?P<rowcount>\d+)">', row)
-    if m:
-      curr_id = int(m.groupdict().get("rowcount"))
-      if curr_id < id_before or curr_id > id_after:
-        continue
-      if where  == "b" and curr_id <= id_after:
-        response_rows.append(row)
-      elif where == "t" and curr_id >= id_before:
-        response_rows.append(row)
-      if len(response_rows) >= 10:
-        break
-
-  # Create a usable structure for the JS part
-  response = []
-  content = '<div>%s</div>' % "".join(response_rows)
-  content = content.replace('&raquo;', '&amp;raquo;')
-  dom = ElementTree.parse(StringIO(content))
-  for node in dom.getroot().getchildren():
-    content = "\n".join([ElementTree.tostring(x) for x in node.getchildren()])
-    content = content.replace('&amp;raquo;', '&raquo;')
-    response.append([node.items(), content])
-  return HttpResponse(simplejson.dumps(response))
-
-
-def _get_diff2_data(request, ps_left_id, ps_right_id, patch_id, context):
-  """Helper function that returns objects for diff2 views"""
-  ps_left = models.PatchSet.get_by_id(int(ps_left_id), parent=request.change)
-  if ps_left is None:
-    return HttpResponseNotFound('No patch set exists with that id (%s)' %
-                                ps_left_id)
-  ps_left.change = request.change
-  ps_right = models.PatchSet.get_by_id(int(ps_right_id), parent=request.change)
-  if ps_right is None:
-    return HttpResponseNotFound('No patch set exists with that id (%s)' %
-                                ps_right_id)
-  ps_right.change = request.change
-  patch_right = models.Patch.get_patch(ps_right, patch_id)
-  if patch_right is None:
-    return HttpResponseNotFound('No patch exists with that id (%s/%s)' %
-                                (ps_right_id, patch_id))
-  patch_right.patchset = ps_right
-  # Now find the corresponding patch in ps_left
-  patch_left = models.Patch.gql('WHERE patchset = :1 AND filename = :2',
-                                ps_left, patch_right.filename).get()
-  if patch_left is None:
-    return HttpResponseNotFound(
-        "Patch set %s doesn't have a patch with filename %s" %
-        (ps_left_id, patch_right.filename))
-
-  rows = engine.RenderDiff2TableRows(request,
-                                     patch_left.new_lines, patch_left,
-                                     patch_right.new_lines, patch_right,
-                                     context=context)
-  rows = list(rows)
-  if rows and rows[-1] is None:
-    del rows[-1]
-
-  return dict(patch_left=patch_left, ps_left=ps_left,
-              patch_right=patch_right, ps_right=ps_right,
-              rows=rows)
-
-
-@change_required
-def diff2(request, ps_left_id, ps_right_id, patch_id):
-  """/<change>/diff2/... - View the delta between two different patch sets."""
-  context = _get_context_for_user(request)
-  data = _get_diff2_data(request, ps_left_id, ps_right_id, patch_id, context)
-  if isinstance(data, HttpResponseNotFound):
-    return data
-
-  _add_next_prev(data["ps_right"], data["patch_right"])
-  return respond(request, 'diff2.html',
-                 {'change': request.change,
-                  'ps_left': data["ps_left"],
-                  'patch_left': data["patch_left"],
-                  'ps_right': data["ps_right"],
-                  'patch_right': data["patch_right"],
-                  'rows': data["rows"],
-                  'patch_id': patch_id,
-                  'context': context,
-                  'context_values': models.CONTEXT_CHOICES,
-                  })
-
-
-@change_required
-def diff2_skipped_lines(request, ps_left_id, ps_right_id, patch_id,
-                        id_before, id_after, where):
-  """/<change>/diff2/... - Returns a fragment of skipped lines"""
-  data = _get_diff2_data(request, ps_left_id, ps_right_id, patch_id, 10000)
-  if isinstance(data, HttpResponseNotFound):
-    return data
-  return _get_skipped_lines_response(data["rows"], id_before, id_after, where)
-
-
-def _add_next_prev(patchset, patch):
-  """Helper to add .next and .prev attributes to a patch object."""
-  patch.prev = patch.next = None
-  patches = list(models.Patch.gql("WHERE patchset = :1 ORDER BY filename",
-                                  patchset))
-  patchset.patches = patches  # Required to render the jump to select.
-  last = None
-  for p in patches:
-    if last is not None:
-      if p.filename == patch.filename:
-        patch.prev = last
-      elif last.filename == patch.filename:
-        patch.next = p
-        break
-    last = p
-
-
-def inline_draft(request):
-  """/inline_draft - Ajax handler to submit an in-line draft comment.
-
-  This wraps _inline_draft(); all exceptions are logged and cause an
-  abbreviated response indicating something went wrong.
-  """
-  if request.method != 'POST':
-    return HttpResponse("POST request required.", status=405)
-  try:
-    return _inline_draft(request)
-  except Exception, err:
-    s = ''
-    for k,v in request.POST.iteritems():
-      s += '\n%s=%s' % (k, v)
-    return HttpResponse('<font color="red">'
-                        'Please report error "%s".'
-                        '</font>'
-                        % err.__class__.__name__)
-
-
-def _inline_draft(request):
-  """Helper to submit an in-line draft comment.
-  """
-  # Don't use @login_required; JS doesn't understand redirects.
-  if not request.user:
-    return HttpResponse('<font color="red">Not logged in</font>')
-
-  if not is_xsrf_ok(request):
-    return HttpResponse('<font color="red">'
-                        'Stale xsrf signature.<br />'
-                        'Please reload the page and try again.'
-                        '</font>')
-
-  snapshot = request.POST.get('snapshot')
-  assert snapshot in ('old', 'new'), repr(snapshot)
-  left = (snapshot == 'old')
-  side = request.POST.get('side')
-  assert side in ('a', 'b'), repr(side)  # Display left (a) or right (b)
-  change_id = int(request.POST['change'])
-  change = models.Change.get_by_id(change_id)
-  assert change  # XXX
-  patchset_id = request.POST.get('patchset') or request.POST[side == 'a' and 'ps_left' or 'ps_right']
-  patchset = models.PatchSet.get_by_id(int(patchset_id), parent=change)
-  assert patchset  # XXX
-  patch_id = request.POST.get('patch') or request.POST[side == 'a' and 'patch_left' or 'patch_right']
-  patch = models.Patch.get_patch(patchset, patch_id)
-  assert patch  # XXX
-  text = request.POST.get('text')
-  lineno = int(request.POST['lineno'])
-  message_id = request.POST.get('message_id')
-  comment = None
-  if message_id:
-    comment = models.Comment.get_by_key_name(message_id, parent=patch)
-    if comment is None or not comment.draft or comment.author != request.user:
-      comment = None
-      message_id = None
-  if not message_id:
-    # Prefix with 'z' to avoid key names starting with digits.
-    message_id = 'z' + binascii.hexlify(_random_bytes(16))
-
-  if not text.rstrip():
-    if comment is not None:
-      assert comment.draft and comment.author == request.user
-      comment.delete()  # Deletion
-      comment = None
-      # Re-query the comment count.
-      models.Account.current_user_account.update_drafts(change)
-  else:
-    if comment is None:
-      comment = models.Comment(
-                  patch=patch,
-                  key_name=message_id,
-                  parent=patch)
-    comment.lineno = lineno
-    comment.left = left
-    comment.author = request.user
-    comment.text = db.Text(text)
-    comment.message_id = message_id
-    comment.put()
-    # The actual count doesn't matter, just that there's at least one.
-    models.Account.current_user_account.update_drafts(change, 1)
-
-  query = models.Comment.gql(
-      'WHERE patch = :patch AND lineno = :lineno AND left = :left '
-      'ORDER BY date',
-      patch=patch, lineno=lineno, left=left)
-  comments = list(c for c in query if not c.draft or c.author == request.user)
-  if comment is not None and comment.author is None:
-    # Show anonymous draft even though we don't save it
-    comments.append(comment)
-  if not comments:
-    return HttpResponse(' ')
-  for c in comments:
-    c.complete(patch)
-  return render_to_response('inline_comment.html',
-                            {'inline_draft_url': '/inline_draft',
-                             'user': request.user,
-                             'patch': patch,
-                             'patchset': patchset,
-                             'change': change,
-                             'comments': comments,
-                             'lineno': lineno,
-                             'snapshot': snapshot,
-                             'side': side})
-
-
-class PublishCommentsForm(BaseForm):
-  _template = 'publish.html'
-
-  reviewers = forms.CharField(required=False,
-                              max_length=1000,
-                              widget=fields.ReadOnlyTextWidget())
-  cc = forms.CharField(required=False,
-                       max_length=1000,
-                       label = 'CC',
-                       widget=forms.TextInput(attrs={'size': 60}))
-  send_mail = forms.BooleanField(required=False)
-  message = forms.CharField(required=False,
-                            max_length=10000,
-                            widget=forms.Textarea(attrs={'cols': 60}))
-
-  lgtm = forms.CharField(required=False, label='Code review')
-  verified = forms.BooleanField(required=False,
-                                label='Verified')
-  abandoned = forms.BooleanField(required=False,
-                                label='Abandoned')
-
-
-
-  def __init__(self, *args, **kwargs):
-    is_initial = kwargs.pop('is_initial', False)
-    self.user_can_approve = kwargs.pop('user_can_approve', False)
-    self.user_can_verify = kwargs.pop('user_can_verify', False)
-    self.user_is_owner = kwargs.pop('user_is_owner', False)
-    self.user_can_abandon = kwargs.pop('user_can_abandon', False)
-
-    BaseForm.__init__(self, *args, **kwargs)
-
-    if is_initial:
-      # only show the available lgtm options
-      lgtm_field = self.fields.get("lgtm")
-      if lgtm_field:
-        if self.user_can_approve:
-          lgtm_field.widget = forms.RadioSelect(choices=models.LGTM_CHOICES)
-        else:
-          lgtm_field.widget = forms.RadioSelect(
-                 choices=models.LIMITED_LGTM_CHOICES)
-      # only show verified if the user can do it
-      if not self.user_can_verify:
-        del self.fields['verified']
-
-      # disable the abandon button if the user can't change it
-      if not self.user_can_abandon:
-        del self.fields['abandoned']
-      self.is_abandoned = kwargs['initial'].get('is_abandoned', False)
-
-  @classmethod
-  def _init(cls, state):
-    request, change = state
-    user = request.user
-
-    cc = list(change.cc)
-
-    (user_can_approve,user_can_verify) = project.user_can_approve(
-          request.user, change)
-
-    # Pick the proper review / verify status
-    review = change.get_review_status(user)
-    if review:
-      lgtm = _restrict_lgtm(review.lgtm, user_can_approve)
-      verified = review.verified
-    else:
-      lgtm = 'abstain'
-      verified = False
-
-    user_can_abandon = change.user_can_edit() and not change.merged
-    is_abandoned = change.closed and not change.merged
-
-    reviewers = ', '.join(change.reviewers)
-
-    return {'initial': {
-              'cc': ', '.join(cc),
-              'send_mail': True,
-              'lgtm': lgtm,
-              'verified': verified,
-              'abandoned': is_abandoned,
-              'reviewers': reviewers,
-              },
-            'user_can_approve': user_can_approve,
-            'user_can_verify': user_can_verify,
-            'user_is_owner': user == change.owner,
-            'user_can_abandon': user_can_abandon,
-            'is_initial': True,
-          }
-
-  def _save(self, cd, state):
-    request, change = state
-    user = request.user
-
-    tbd, comments = _get_draft_comments(request, change)
-    cc = _get_emails(self, 'cc')
-    (self.user_can_approve,self.user_can_verify) = project.user_can_approve(
-          request.user, change)
-    lgtm = _restrict_lgtm(cd.get('lgtm', 'abstain'), self.user_can_approve)
-    verified = _restrict_verified(cd.get('verified', False),
-          self.user_can_verify)
-
-    if change.user_can_edit():
-      if not change.merged:
-        change.closed = cd['abandoned']
-
-    if user != change.owner:
-      # Owners shouldn't have their own review status as it
-      # is implied that 'lgtm' and verified by them.
-      review_status = _update_review_status(change,
-                                            user,
-                                            lgtm,
-                                            verified)
-      tbd.append(review_status)
-
-    change.cc = cc
-    change.update_comment_count(len(comments))
-
-    msg = _make_comment_message(request, change, lgtm, verified,
-                        cd['message'],
-                        comments,
-                        cd['send_mail'])
-    if msg:
-      tbd.append(msg)
-    tbd.append(change)
-
-    while tbd:
-      db.put(tbd[:50])
-      tbd = tbd[50:]
-    models.Account.current_user_account.update_drafts(change, 0)
-
-@change_required
-@login_required
-def publish(request):
-  
-  """ /<change>/publish - Publish draft comments and send mail."""
-  change = request.change
-
-  tbd, comments = _get_draft_comments(request, change, True)
-  preview = _get_draft_details(request, comments)
-
-  def done():
-    return HttpResponseRedirect('/%s' % change.key().id())
-  return process_form(request, PublishCommentsForm, (request, change), done,
-                      {'change': change,
-                       'preview' : preview})
-
-
-def _update_review_status(change, user, lgtm, verified):
-  """Creates / updates the ReviewStatus for a user, returns that object."""
-  review = change.set_review_status(user)
-  review.lgtm = lgtm
-  review.verified = verified
-  return review
-
-
-
-def _encode_safely(s):
-  """Helper to turn a unicode string into 8-bit bytes."""
-  if isinstance(s, unicode):
-    s = s.encode('utf-8')
-  return s
-
-
-def _get_draft_comments(request, change, preview=False):
-  """Helper to return objects to put() and a list of draft comments.
-
-  If preview is True, the list of objects to put() is empty to avoid changes
-  to the datastore.
-
-  Args:
-    request: Django Request object.
-    change: Change instance.
-    preview: Preview flag (default: False).
-
-  Returns:
-    2-tuple (put_objects, comments).
-  """
-  comments = []
-  tbd = []
-  dps = dict()
-
-  # XXX Should request all drafts for this change once, now we can.
-  for patchset in change.patchset_set.order('id'):
-    ps_comments = list(models.Comment.gql(
-        'WHERE ANCESTOR IS :1 AND author = :2 AND draft = TRUE',
-        patchset, request.user))
-    if ps_comments:
-      patches = dict((p.key(), p) for p in patchset.patch_set)
-      for p in patches.itervalues():
-        p.patchset = patchset
-      for c in ps_comments:
-        c.draft = False
-        # XXX Using internal knowledge about db package: the key for
-        # reference property foo is stored as _foo.
-        pkey = getattr(c, '_patch', None)
-        if pkey in patches:
-          patch = patches[pkey]
-          c.patch = patch
-        if pkey not in dps:
-          dps[pkey] = c.patch
-        c.patch.update_comment_count(1)
-      if not preview:
-        tbd += ps_comments
-      ps_comments.sort(key=lambda c: (c.patch.filename, not c.left,
-                                      c.lineno, c.date))
-      comments += ps_comments
-  if not preview:
-    tbd += dps.values()
-  return tbd, comments
-
-FILE_LINE = '======================================================================'
-COMMENT_LINE = '------------------------------'
-
-def _get_draft_details(request, comments):
-  """Helper to display comments with context in the email message."""
-  last_key = None
-  output = []
-  linecache = {}  # Maps (c.patch.filename, c.left) to list of lines
-  for c in comments:
-    if (c.patch.filename, c.left) != last_key:
-      if not last_key is None:
-        output.append('%s\n' % FILE_LINE)
-      url = request.build_absolute_uri('/%d/diff/%d/%s' %
-                                       (request.change.key().id(),
-                                        c.patch.patchset.key().id(),
-                                        c.patch.id))
-      output.append('\n%s\n%s\nFile %s:' % (FILE_LINE, url, c.patch.filename))
-      last_key = (c.patch.filename, c.left)
-      patch = c.patch
-      if c.left:
-        linecache[last_key] = patch.old_lines
-      else:
-        linecache[last_key] = patch.new_lines
-    file_lines = linecache.get(last_key, ())
-    context = ''
-    if 1 <= c.lineno <= len(file_lines):
-      context = file_lines[c.lineno - 1].strip()
-    url = request.build_absolute_uri('/%d/diff/%d/%s#%scode%d' %
-                                     (request.change.key().id(),
-                                      c.patch.patchset.key().id(),
-                                      c.patch.id,
-                                      c.left and "old" or "new",
-                                      c.lineno))
-    output.append('%s\nLine %d: %s\n%s'  % (COMMENT_LINE, c.lineno,
-                                                context, c.text.rstrip()))
-  if not last_key is None:
-    output.append('%s\n' % FILE_LINE)
-  return '\n'.join(output)
-
-def _make_comment_message(request, change, lgtm, verified, message,
-                  comments=None, send_mail=False):
-  """Helper to create a Message instance and optionally send an email."""
-
-  prefix = ''
-  if len(lgtm):
-    prefix = prefix + [y for (x,y) in models.LGTM_CHOICES
-                       if x == lgtm][0] + '\n'
-  if verified:
-    prefix = prefix + 'Verified.\n'
-  if prefix:
-    prefix = prefix + '\n'
-
-  message = message.replace('\r\n', '\n')
-  message = prefix + message
-
-  if comments:
-    details = _get_draft_details(request, comments)
-  else:
-    details = ''
-
-  template_args = {
-      'message': message,
-      'details': details,
-    }
-
-  return email.send_change_message(
-                              request, change,
-                              'mails/comment.txt', template_args, request.user,
-                              send_mail, 'mails/comment-email.txt')
-
-
-@xsrf_required
-@posted_change_required
-def star(request):
-  account = models.Account.current_user_account
-  if account.stars is None:
-    account.stars = []
-  id = request.change.key().id()
-  if id not in account.stars:
-    account.stars.append(id)
-    account.put()
-  return respond(request, 'change_star.html', {'change': request.change})
-
-
-@xsrf_required
-@posted_change_required
-def unstar(request):
-  account = models.Account.current_user_account
-  if account.stars is None:
-    account.stars = []
-  id = request.change.key().id()
-  if id in account.stars:
-    account.stars[:] = [i for i in account.stars if i != id]
-    account.put()
-  return respond(request, 'change_star.html', {'change': request.change})
-
-
-@gae_admin_required
-def download_bundle(request, bundle_id, segment_id):
-  """/download/bundle(\d+)_(\d+) - get a bundle segment"""
-  rb = git_models.ReceivedBundle.get_by_id(int(bundle_id))
-  if not rb:
-    return HttpResponseNotFound('No bundle exists with that id (%s)' % bundle_id)
-  seg = rb.get_segment(int(segment_id))
-  if not seg:
-    return HttpResponseNotFound('No segment %s in bundle %s' % (segment_id,bundle_id))
-  return HttpResponse(seg.bundle_data,
-                      content_type='application/x-git-bundle-segment')
-
-
-### Administration ###
-
-@project_owner_or_admin_required
-def admin(request):
-  """/admin - user & other settings"""
-  return respond(request, 'admin.html', {})
-
-@gae_admin_required
-def admin_settings(request):
-  settings = models.Settings.get_settings()
-  return respond(request, 'admin_settings.html', {
-            'settings': settings,
-            'CUR_SCHEMA_VERSION': models.CUR_SCHEMA_VERSION,
-            'from_email_test_xsrf': xsrf_for('/admin/settings/from_email_test')
-          })
-
-class AdminSettingsAnalyticsForm(BaseForm):
-  _template = 'admin_settings_analytics.html'
-
-  analytics = forms.CharField(required=False, max_length=20,
-                              widget=forms.TextInput(attrs={'size': 20}))
-
-  @classmethod
-  def _init(cls, state):
-    settings = models.Settings.get_settings()
-    return {'initial': {
-                'analytics': settings.analytics,
-              }
-            }
-
-  def _save(self, cd, change):
-    settings = models.Settings.get_settings()
-    settings.analytics = cd['analytics']
-    settings.put()
-
-@gae_admin_required
-def admin_settings_analytics(request):
-  def done():
-    return HttpResponseRedirect('/admin/settings')
-  return process_form(request, AdminSettingsAnalyticsForm, None, done)
-
-class AdminSettingsFromEmailForm(BaseForm):
-  _template = 'admin_settings_from_email.html'
-
-  from_email = forms.CharField(required=False,
-                              max_length=60,
-                              widget=forms.TextInput(attrs={'size': 60}))
-
-  @classmethod
-  def _init(cls, state):
-    settings = models.Settings.get_settings()
-    return {'initial': {
-                'from_email': settings.from_email,
-              }
-            }
-
-  def _save(self, cd, change):
-    settings = models.Settings.get_settings()
-    settings.from_email = cd['from_email']
-    settings.put()
-
-@gae_admin_required
-def admin_settings_from_email(request):
-  def done():
-    return HttpResponseRedirect('/admin/settings')
-  return process_form(request, AdminSettingsFromEmailForm, None, done)
-
-class AdminSettingsMergeLogEmailForm(BaseForm):
-  _template = 'admin_settings_merge_log_email.html'
-
-  merge_log_email = forms.CharField(required=False,
-                                    max_length=60,
-                                    widget=forms.TextInput(attrs={'size': 60}))
-
-  @classmethod
-  def _init(cls, state):
-    settings = models.Settings.get_settings()
-    return {'initial': {
-                'merge_log_email': settings.merge_log_email,
-              }
-            }
-
-  def _save(self, cd, change):
-    settings = models.Settings.get_settings()
-    settings.merge_log_email = cd['merge_log_email']
-    settings.put()
-
-@gae_admin_required
-def admin_settings_merge_log_email(request):
-  def done():
-    return HttpResponseRedirect('/admin/settings')
-  return process_form(request,
-                      AdminSettingsMergeLogEmailForm,
-                      None,
-                      done)
-
-class AdminSettingsCanonicalUrlForm(BaseForm):
-  _template = 'admin_settings_canonical_url.html'
-
-  url = forms.CharField(required=True)
-
-  @classmethod
-  def _init(cls, state):
-    settings = models.Settings.get_settings()
-    return {'initial': {
-                'url': settings.canonical_url,
-              }
-            }
-
-  def _save(self, cd, change):
-    settings = models.Settings.get_settings()
-    settings.canonical_url = cd['url']
-    settings.put()
-
-@gae_admin_required
-def admin_settings_canonical_url(request):
-  def done():
-    return HttpResponseRedirect('/admin/settings')
-  return process_form(request, AdminSettingsCanonicalUrlForm, None, done)
-
-
-class AdminSettingsSourceBrowserUrlForm(BaseForm):
-  _template = 'admin_settings_source_browser_url.html'
-
-  url = forms.CharField(required=True,
-                        widget=forms.TextInput(attrs={'size': 60}))
-
-  @classmethod
-  def _init(cls, state):
-    settings = models.Settings.get_settings()
-    return {'initial': {
-                'url': settings.source_browser_url,
-              }
-            }
-
-  def _save(self, cd, change):
-    settings = models.Settings.get_settings()
-    settings.source_browser_url = cd['url']
-    settings.put()
-
-@gae_admin_required
-def admin_settings_source_browser_url(request):
-  def done():
-    return HttpResponseRedirect('/admin/settings')
-  return process_form(request, AdminSettingsSourceBrowserUrlForm, None, done)
-
-
-@gae_admin_required
-def admin_settings_from_email_test(request):
-  if request.method == 'POST':
-    if is_xsrf_ok(request, xsrf=request.POST.get('xsrf')):
-      address = email.get_default_sender()
-      try:
-        mail.check_email_valid(address, 'blah')
-        email.send(None, [models.Account.current_user_account], 'test',
-                              'mails/from_email_test.txt', None)
-        status = 'email sent'
-      except mail.InvalidEmailError:
-        status = 'invalid email address'
-      return respond(request, 'admin_settings_from_email_test.html', {
-                  'status': status,
-                  'address': address
-                })
-  return HttpResponse('<font color="red">Ich don\'t think so!</font>')
-
-
-
-### User Profiles ###
-
-def validate_real_name(real_name):
-  """Returns None if real_name is fine and an error message otherwise."""
-  if not real_name:
-    return 'Name cannot be empty.'
-  elif real_name == 'me':
-    return 'Of course, you are what you are.  But \'me\' is for everyone.'
-  else:
-    return None
-
-
-@user_key_required
-def user_popup(request):
-  """/user_popup - Pop up to show the user info."""
-  try:
-    user = request.user_to_show
-    def gen():
-      account = models.Account.get_account_for_user(user)
-      return render_to_response('user_popup.html', {'account': account})
-    return MemCacheKey('user_popup:' + user.email(), 300).get(gen)
-  except Exception, err:
-    return HttpResponse(
-      '<font color="red">Error: %s; please report!</font>'
-      % err.__class__.__name__)
-
-
-class AdminDataStoreDeleteForm(BaseForm):
-  _template = 'admin_datastore_delete.html'
-
-  really = forms.CharField(required=True)
-
-  def _save(self, cd, request):
-    if cd['really'] != 'DELETE EVERYTHING':
-      return self
-
-    max_cnt = 50
-    rm = []
-    specials = []
-    for cls in [models.ApprovalRight,
-                models.Project,
-                models.Branch,
-                models.RevisionId,
-                models.BuildAttempt,
-                models.Change,
-                models.PatchSetFilenames,
-                models.PatchSet,
-                models.Message,
-                models.DeltaContent,
-                models.Patch,
-                models.Comment,
-                models.Bucket,
-                models.ReviewStatus,
-                models.Account,
-                models.AccountGroup,
-                git_models.ReceivedBundleSegment,
-                git_models.ReceivedBundle,
-               ]:
-      all = cls.all().fetch(max_cnt)
-      if cls == models.Account:
-        for a in all:
-          if a.key() == request.account.key():
-            specials.append(a)
-          else:
-            rm.append(a)
-      elif cls == models.AccountGroup:
-        for a in all:
-          if a.is_auto_group:
-            specials.append(a)
-          else:
-            rm.append(a)
-      else:
-        rm.extend(all)
-      if len(rm) >= max_cnt:
-        break
-
-    if rm:
-      # Delete this block of data and continue via
-      # a JavaScript reload in the browser.
-      #
-      db.delete(rm)
-      return self
-
-    # We are done with the bulk of the content, but we need
-    # to clean up a few special objects.
-    #
-    library._user_cache.clear()
-    models.Settings._Key.clear()
-
-    specials.extend(models.Settings.all().fetch(100))
-    db.delete(specials)
-    return None
-
-@gae_admin_required
-def admin_datastore_delete(request):
-  def done():
-    return HttpResponseRedirect('/')
-  return process_form(request, AdminDataStoreDeleteForm, request, done)
-
-
-class AdminDataStoreUpgradeForm(BaseForm):
-  _template = 'admin_datastore_upgrade.html'
-
-  really = forms.CharField(required=True)
-  stage = forms.IntegerField(widget=forms.HiddenInput(), initial=1)
-
-  def _save(self, cd, request):
-    if cd['really'] != 'UPGRADE':
-      return self
-
-    stage = cd['stage']
-    s = models.Settings.get_settings()
-    name = '_upgrade%d_stage%d' % (s.schema_version, stage)
-    try:
-      f = getattr(self, name)
-    except AttributeError:
-      return http.HttpResponseServerError("no %s" % name)
-
-    if not f():
-      # This stage function needs to run again.
-      #
-      return self
-
-    name = '_upgrade%d_stage%d' % (s.schema_version, stage + 1)
-    if getattr(self, name, None):
-      # There is another stage function in this version.
-      #
-      new_cd = dict(cd)
-      new_cd['stage'] = stage + 1
-      return self.__class__(initial=new_cd)
-
-    # The current schema version is completely upgraded.
-    #
-    s.schema_version += 1
-    s.put()
-
-    name = '_upgrade%d_stage%d' % (s.schema_version, 1)
-    if getattr(self, name, None):
-      # There is another upgrade to execute.
-      #
-      new_cd = dict(cd)
-      new_cd['stage'] = 1
-      return self.__class__(initial=new_cd)
-
-    # There are no further upgrades to process.
-    #
-    return None
-
-  def _upgrade0_stage1(self):
-    all = models.gql(models.ApprovalRight,
-                     'WHERE last_backed_up = :1',
-                     0).fetch(25)
-    if not all:
-      return True
-
-    sb = models.AccountGroup.get_group_for_name('submitters')
-    for ar in all:
-      ar.last_backed_up = 1
-      ar.submitters_groups.append(sb.key())
-      ar.put()
-    return False
-
-  def _upgrade0_stage2(self):
-    all = models.gql(models.ApprovalRight,
-                     'WHERE last_backed_up = :1',
-                     1).fetch(25)
-    if not all:
-      return True
-
-    for ar in all:
-      ar.last_backed_up = 0
-      ar.put()
-    return False
-
-@gae_admin_required
-def admin_datastore_upgrade(request):
-  def done():
-    return HttpResponseRedirect('/')
-  return process_form(request, AdminDataStoreUpgradeForm, request, done)
diff --git a/webapp/django/__init__.py b/webapp/django/__init__.py
deleted file mode 100644
index d0f42e5..0000000
--- a/webapp/django/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-VERSION = (1, 0, 'beta_1')
-
-def get_version():
-    "Returns the version as a human-format string."
-    v = '.'.join([str(i) for i in VERSION[:-1]])
-    if VERSION[-1]:
-        from django.utils.version import get_svn_revision
-        v = '%s-%s-%s' % (v, VERSION[-1], get_svn_revision())
-    return v
diff --git a/webapp/django/bin/__init__.py b/webapp/django/bin/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/bin/__init__.py
+++ /dev/null
diff --git a/webapp/django/bin/compile-messages.py b/webapp/django/bin/compile-messages.py
deleted file mode 100755
index 0deaf6a..0000000
--- a/webapp/django/bin/compile-messages.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-if __name__ == "__main__":
-    import sys
-    name = sys.argv[0]
-    args = ' '.join(sys.argv[1:])
-    print >> sys.stderr, "%s has been moved into django-admin.py" % name
-    print >> sys.stderr, 'Please run "django-admin.py compilemessages %s" instead.'% args
-    print >> sys.stderr
-    sys.exit(1)
-
diff --git a/webapp/django/bin/daily_cleanup.py b/webapp/django/bin/daily_cleanup.py
deleted file mode 100644
index c9f4cb9..0000000
--- a/webapp/django/bin/daily_cleanup.py
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Daily cleanup job.
-
-Can be run as a cronjob to clean out old data from the database (only expired
-sessions at the moment).
-"""
-
-from django.core import management
-
-if __name__ == "__main__":
-    management.call_command('cleanup')
diff --git a/webapp/django/bin/django-admin.py b/webapp/django/bin/django-admin.py
deleted file mode 100755
index f518cdc..0000000
--- a/webapp/django/bin/django-admin.py
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-from django.core import management
-
-if __name__ == "__main__":
-    management.execute_from_command_line()
diff --git a/webapp/django/bin/make-messages.py b/webapp/django/bin/make-messages.py
deleted file mode 100755
index 1c84416..0000000
--- a/webapp/django/bin/make-messages.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-if __name__ == "__main__":
-    import sys
-    name = sys.argv[0]
-    args = ' '.join(sys.argv[1:])
-    print >> sys.stderr, "%s has been moved into django-admin.py" % name
-    print >> sys.stderr, 'Please run "django-admin.py makemessages %s" instead.'% args
-    print >> sys.stderr
-    sys.exit(1)
-
diff --git a/webapp/django/bin/profiling/__init__.py b/webapp/django/bin/profiling/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/bin/profiling/__init__.py
+++ /dev/null
diff --git a/webapp/django/bin/profiling/gather_profile_stats.py b/webapp/django/bin/profiling/gather_profile_stats.py
deleted file mode 100644
index 0fd2b7f..0000000
--- a/webapp/django/bin/profiling/gather_profile_stats.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-
-"""
-gather_profile_stats.py /path/to/dir/of/profiles
-
-Note that the aggregated profiles must be read with pstats.Stats, not
-hotshot.stats (the formats are incompatible)
-"""
-
-from hotshot import stats
-import pstats
-import sys, os
-
-def gather_stats(p):
-    profiles = {}
-    for f in os.listdir(p):
-        if f.endswith('.agg.prof'):
-            path = f[:-9]
-            prof = pstats.Stats(os.path.join(p, f))
-        elif f.endswith('.prof'):
-            bits = f.split('.')
-            path = ".".join(bits[:-3])
-            prof = stats.load(os.path.join(p, f))
-        else:
-            continue
-        print "Processing %s" % f
-        if path in profiles:
-            profiles[path].add(prof)
-        else:
-            profiles[path] = prof
-        os.unlink(os.path.join(p, f))
-    for (path, prof) in profiles.items():
-        prof.dump_stats(os.path.join(p, "%s.agg.prof" % path))
-    
-if __name__ == '__main__':
-    gather_stats(sys.argv[1])
diff --git a/webapp/django/bin/unique-messages.py b/webapp/django/bin/unique-messages.py
deleted file mode 100755
index c601a9e..0000000
--- a/webapp/django/bin/unique-messages.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-
-def unique_messages():
-    basedir = None
-
-    if os.path.isdir(os.path.join('conf', 'locale')):
-        basedir = os.path.abspath(os.path.join('conf', 'locale'))
-    elif os.path.isdir('locale'):
-        basedir = os.path.abspath('locale')
-    else:
-        print "this script should be run from the django svn tree or your project or app tree"
-        sys.exit(1)
-
-    for (dirpath, dirnames, filenames) in os.walk(basedir):
-        for f in filenames:
-            if f.endswith('.po'):
-                sys.stderr.write('processing file %s in %s\n' % (f, dirpath))
-                pf = os.path.splitext(os.path.join(dirpath, f))[0]
-                cmd = 'msguniq "%s.po"' % pf
-                stdout = os.popen(cmd)
-                msg = stdout.read()
-                open('%s.po' % pf, 'w').write(msg)
-
-if __name__ == "__main__":
-    unique_messages()
diff --git a/webapp/django/conf/__init__.py b/webapp/django/conf/__init__.py
deleted file mode 100644
index fc69bed..0000000
--- a/webapp/django/conf/__init__.py
+++ /dev/null
@@ -1,153 +0,0 @@
-"""
-Settings and configuration for Django.
-
-Values will be read from the module specified by the DJANGO_SETTINGS_MODULE environment
-variable, and then from django.conf.global_settings; see the global settings file for
-a list of all possible variables.
-"""
-
-import os
-import time     # Needed for Windows
-from django.conf import global_settings
-
-ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
-
-class LazySettings(object):
-    """
-    A lazy proxy for either global Django settings or a custom settings object.
-    The user can manually configure settings prior to using them. Otherwise,
-    Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.
-    """
-    def __init__(self):
-        # _target must be either None or something that supports attribute
-        # access (getattr, hasattr, etc).
-        self._target = None
-
-    def __getattr__(self, name):
-        if self._target is None:
-            self._import_settings()
-        if name == '__members__':
-            # Used to implement dir(obj), for example.
-            return self._target.get_all_members()
-        return getattr(self._target, name)
-
-    def __setattr__(self, name, value):
-        if name == '_target':
-            # Assign directly to self.__dict__, because otherwise we'd call
-            # __setattr__(), which would be an infinite loop.
-            self.__dict__['_target'] = value
-        else:
-            if self._target is None:
-                self._import_settings()
-            setattr(self._target, name, value)
-
-    def _import_settings(self):
-        """
-        Load the settings module pointed to by the environment variable. This
-        is used the first time we need any settings at all, if the user has not
-        previously configured the settings manually.
-        """
-        try:
-            settings_module = os.environ[ENVIRONMENT_VARIABLE]
-            if not settings_module: # If it's set but is an empty string.
-                raise KeyError
-        except KeyError:
-            # NOTE: This is arguably an EnvironmentError, but that causes
-            # problems with Python's interactive help.
-            raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
-
-        self._target = Settings(settings_module)
-
-    def configure(self, default_settings=global_settings, **options):
-        """
-        Called to manually configure the settings. The 'default_settings'
-        parameter sets where to retrieve any unspecified values from (its
-        argument must support attribute access (__getattr__)).
-        """
-        if self._target != None:
-            raise RuntimeError, 'Settings already configured.'
-        holder = UserSettingsHolder(default_settings)
-        for name, value in options.items():
-            setattr(holder, name, value)
-        self._target = holder
-
-    def configured(self):
-        """
-        Returns True if the settings have already been configured.
-        """
-        return bool(self._target)
-    configured = property(configured)
-
-class Settings(object):
-    def __init__(self, settings_module):
-        # update this dict from global settings (but only for ALL_CAPS settings)
-        for setting in dir(global_settings):
-            if setting == setting.upper():
-                setattr(self, setting, getattr(global_settings, setting))
-
-        # store the settings module in case someone later cares
-        self.SETTINGS_MODULE = settings_module
-
-        try:
-            mod = __import__(self.SETTINGS_MODULE, {}, {}, [''])
-        except ImportError, e:
-            raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
-
-        # Settings that should be converted into tuples if they're mistakenly entered
-        # as strings.
-        tuple_settings = ("INSTALLED_APPS", "TEMPLATE_DIRS")
-
-        for setting in dir(mod):
-            if setting == setting.upper():
-                setting_value = getattr(mod, setting)
-                if setting in tuple_settings and type(setting_value) == str:
-                    setting_value = (setting_value,) # In case the user forgot the comma.
-                setattr(self, setting, setting_value)
-
-        # Expand entries in INSTALLED_APPS like "django.contrib.*" to a list
-        # of all those apps.
-        new_installed_apps = []
-        for app in self.INSTALLED_APPS:
-            if app.endswith('.*'):
-                appdir = os.path.dirname(__import__(app[:-2], {}, {}, ['']).__file__)
-                app_subdirs = os.listdir(appdir)
-                app_subdirs.sort()
-                for d in app_subdirs:
-                    if d.isalpha() and os.path.isdir(os.path.join(appdir, d)):
-                        new_installed_apps.append('%s.%s' % (app[:-2], d))
-            else:
-                new_installed_apps.append(app)
-        self.INSTALLED_APPS = new_installed_apps
-
-        if hasattr(time, 'tzset'):
-            # Move the time zone info into os.environ. See ticket #2315 for why
-            # we don't do this unconditionally (breaks Windows).
-            os.environ['TZ'] = self.TIME_ZONE
-            time.tzset()
-
-    def get_all_members(self):
-        return dir(self)
-
-class UserSettingsHolder(object):
-    """
-    Holder for user configured settings.
-    """
-    # SETTINGS_MODULE doesn't make much sense in the manually configured
-    # (standalone) case.
-    SETTINGS_MODULE = None
-
-    def __init__(self, default_settings):
-        """
-        Requests for configuration variables not in this class are satisfied
-        from the module specified in default_settings (if possible).
-        """
-        self.default_settings = default_settings
-
-    def __getattr__(self, name):
-        return getattr(self.default_settings, name)
-
-    def get_all_members(self):
-        return dir(self) + dir(self.default_settings)
-
-settings = LazySettings()
-
diff --git a/webapp/django/conf/app_template/__init__.py b/webapp/django/conf/app_template/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/conf/app_template/__init__.py
+++ /dev/null
diff --git a/webapp/django/conf/app_template/models.py b/webapp/django/conf/app_template/models.py
deleted file mode 100644
index 71a8362..0000000
--- a/webapp/django/conf/app_template/models.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.db import models
-
-# Create your models here.
diff --git a/webapp/django/conf/app_template/views.py b/webapp/django/conf/app_template/views.py
deleted file mode 100644
index 60f00ef..0000000
--- a/webapp/django/conf/app_template/views.py
+++ /dev/null
@@ -1 +0,0 @@
-# Create your views here.
diff --git a/webapp/django/conf/global_settings.py b/webapp/django/conf/global_settings.py
deleted file mode 100644
index 2c48571..0000000
--- a/webapp/django/conf/global_settings.py
+++ /dev/null
@@ -1,397 +0,0 @@
-# Default Django settings. Override these with settings in the module
-# pointed-to by the DJANGO_SETTINGS_MODULE environment variable.
-
-# This is defined here as a do-nothing function because we can't import
-# django.utils.translation -- that module depends on the settings.
-gettext_noop = lambda s: s
-
-####################
-# CORE             #
-####################
-
-DEBUG = False
-TEMPLATE_DEBUG = False
-
-# Whether the framework should propagate raw exceptions rather than catching
-# them. This is useful under some testing siutations and should never be used
-# on a live site.
-DEBUG_PROPAGATE_EXCEPTIONS = False
-
-# Whether to use the "Etag" header. This saves bandwidth but slows down performance.
-USE_ETAGS = False
-
-# People who get code error notifications.
-# In the format (('Full Name', 'email@domain.com'), ('Full Name', 'anotheremail@domain.com'))
-ADMINS = ()
-
-# Tuple of IP addresses, as strings, that:
-#   * See debug comments, when DEBUG is true
-#   * Receive x-headers
-INTERNAL_IPS = ()
-
-# Local time zone for this installation. All choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name (although not all
-# systems may support all possibilities).
-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'
-
-# Languages we provide translations for, out of the box. The language name
-# should be the utf-8 encoded local name for the language.
-LANGUAGES = (
-    ('ar', gettext_noop('Arabic')),
-    ('bn', gettext_noop('Bengali')),
-    ('bg', gettext_noop('Bulgarian')),
-    ('ca', gettext_noop('Catalan')),
-    ('cs', gettext_noop('Czech')),
-    ('cy', gettext_noop('Welsh')),
-    ('da', gettext_noop('Danish')),
-    ('de', gettext_noop('German')),
-    ('el', gettext_noop('Greek')),
-    ('en', gettext_noop('English')),
-    ('es', gettext_noop('Spanish')),
-    ('et', gettext_noop('Estonian')), 
-    ('es-ar', gettext_noop('Argentinean Spanish')),
-    ('eu', gettext_noop('Basque')),
-    ('fa', gettext_noop('Persian')),
-    ('fi', gettext_noop('Finnish')),
-    ('fr', gettext_noop('French')),
-    ('ga', gettext_noop('Irish')),
-    ('gl', gettext_noop('Galician')),
-    ('hu', gettext_noop('Hungarian')),
-    ('he', gettext_noop('Hebrew')),
-    ('hr', gettext_noop('Croatian')),
-    ('is', gettext_noop('Icelandic')),
-    ('it', gettext_noop('Italian')),
-    ('ja', gettext_noop('Japanese')),
-    ('ka', gettext_noop('Georgian')),
-    ('ko', gettext_noop('Korean')),
-    ('km', gettext_noop('Khmer')),
-    ('kn', gettext_noop('Kannada')),
-    ('lv', gettext_noop('Latvian')),
-    ('lt', gettext_noop('Lithuanian')),
-    ('mk', gettext_noop('Macedonian')),
-    ('nl', gettext_noop('Dutch')),
-    ('no', gettext_noop('Norwegian')),
-    ('pl', gettext_noop('Polish')),
-    ('pt', gettext_noop('Portugese')),
-    ('pt-br', gettext_noop('Brazilian Portuguese')),
-    ('ro', gettext_noop('Romanian')),
-    ('ru', gettext_noop('Russian')),
-    ('sk', gettext_noop('Slovak')),
-    ('sl', gettext_noop('Slovenian')),
-    ('sr', gettext_noop('Serbian')),
-    ('sv', gettext_noop('Swedish')),
-    ('ta', gettext_noop('Tamil')),
-    ('te', gettext_noop('Telugu')),
-    ('tr', gettext_noop('Turkish')),
-    ('uk', gettext_noop('Ukrainian')),
-    ('zh-cn', gettext_noop('Simplified Chinese')),
-    ('zh-tw', gettext_noop('Traditional Chinese')),
-)
-
-# Languages using BiDi (right-to-left) layout
-LANGUAGES_BIDI = ("he", "ar", "fa")
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-LOCALE_PATHS = ()
-LANGUAGE_COOKIE_NAME = 'django_language'
-
-# Not-necessarily-technical managers of the site. They get broken link
-# notifications and other various e-mails.
-MANAGERS = ADMINS
-
-# Default content type and charset to use for all HttpResponse objects, if a
-# MIME type isn't manually specified. These are used to construct the
-# Content-Type header.
-DEFAULT_CONTENT_TYPE = 'text/html'
-DEFAULT_CHARSET = 'utf-8'
-
-# Encoding of files read from disk (template and initial SQL files).
-FILE_CHARSET = 'utf-8'
-
-# E-mail address that error messages come from.
-SERVER_EMAIL = 'root@localhost'
-
-# Whether to send broken-link e-mails.
-SEND_BROKEN_LINK_EMAILS = False
-
-# Database connection info.
-DATABASE_ENGINE = ''           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
-DATABASE_NAME = ''             # Or path to database file if using sqlite3.
-DATABASE_USER = ''             # Not used with sqlite3.
-DATABASE_PASSWORD = ''         # Not used with sqlite3.
-DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
-DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
-DATABASE_OPTIONS = {}          # Set to empty dictionary for default.
-
-# Host for sending e-mail.
-EMAIL_HOST = 'localhost'
-
-# Port for sending e-mail.
-EMAIL_PORT = 25
-
-# Optional SMTP authentication information for EMAIL_HOST.
-EMAIL_HOST_USER = ''
-EMAIL_HOST_PASSWORD = ''
-EMAIL_USE_TLS = False
-
-# List of strings representing installed apps.
-INSTALLED_APPS = ()
-
-# List of locations of the template source files, in search order.
-TEMPLATE_DIRS = ()
-
-# List of callables that know how to import templates from various sources.
-# See the comments in django/core/template/loader.py for interface
-# documentation.
-TEMPLATE_LOADERS = (
-    'django.template.loaders.filesystem.load_template_source',
-    'django.template.loaders.app_directories.load_template_source',
-#     'django.template.loaders.eggs.load_template_source',
-)
-
-# List of processors used by RequestContext to populate the context.
-# Each one should be a callable that takes the request object as its
-# only parameter and returns a dictionary to add to the context.
-TEMPLATE_CONTEXT_PROCESSORS = (
-    'django.core.context_processors.auth',
-    'django.core.context_processors.debug',
-    'django.core.context_processors.i18n',
-    'django.core.context_processors.media',
-#    'django.core.context_processors.request',
-)
-
-# Output to use in template system for invalid (e.g. misspelled) variables.
-TEMPLATE_STRING_IF_INVALID = ''
-
-# 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 = '/media/'
-
-# Default e-mail address to use for various automated correspondence from
-# the site managers.
-DEFAULT_FROM_EMAIL = 'webmaster@localhost'
-
-# Subject-line prefix for email messages send with django.core.mail.mail_admins
-# or ...mail_managers.  Make sure to include the trailing space.
-EMAIL_SUBJECT_PREFIX = '[Django] '
-
-# Whether to append trailing slashes to URLs.
-APPEND_SLASH = True
-
-# Whether to prepend the "www." subdomain to URLs that don't have it.
-PREPEND_WWW = False
-
-# Override the server-derived value of SCRIPT_NAME
-FORCE_SCRIPT_NAME = None
-
-# List of compiled regular expression objects representing User-Agent strings
-# that are not allowed to visit any page, systemwide. Use this for bad
-# robots/crawlers. Here are a few examples:
-#     import re
-#     DISALLOWED_USER_AGENTS = (
-#         re.compile(r'^NaverBot.*'),
-#         re.compile(r'^EmailSiphon.*'),
-#         re.compile(r'^SiteSucker.*'),
-#         re.compile(r'^sohu-search')
-#     )
-DISALLOWED_USER_AGENTS = ()
-
-ABSOLUTE_URL_OVERRIDES = {}
-
-# Tuple of strings representing allowed prefixes for the {% ssi %} tag.
-# Example: ('/home/html', '/var/www')
-ALLOWED_INCLUDE_ROOTS = ()
-
-# If this is a admin settings module, this should be a list of
-# settings modules (in the format 'foo.bar.baz') for which this admin
-# is an admin.
-ADMIN_FOR = ()
-
-# 404s that may be ignored.
-IGNORABLE_404_STARTS = ('/cgi-bin/', '/_vti_bin', '/_vti_inf')
-IGNORABLE_404_ENDS = ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php')
-
-# A secret key for this particular Django installation. Used in secret-key
-# hashing algorithms. Set this in your settings, or Django will complain
-# loudly.
-SECRET_KEY = ''
-
-# Path to the "jing" executable -- needed to validate XMLFields
-JING_PATH = "/usr/bin/jing"
-
-# Default file storage mechanism that holds media.
-DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
-
-# Absolute path to the directory that holds media.
-# Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = ''
-
-# URL that handles the media served from MEDIA_ROOT.
-# Example: "http://media.lawrence.com"
-MEDIA_URL = ''
-
-# List of upload handler classes to be applied in order.
-FILE_UPLOAD_HANDLERS = (
-    'django.core.files.uploadhandler.MemoryFileUploadHandler',
-    'django.core.files.uploadhandler.TemporaryFileUploadHandler',
-)
-
-# Maximum size, in bytes, of a request before it will be streamed to the
-# file system instead of into memory.
-FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # i.e. 2.5 MB
-
-# Directory in which upload streamed files will be temporarily saved. A value of
-# `None` will make Django use the operating system's default temporary directory
-# (i.e. "/tmp" on *nix systems).
-FILE_UPLOAD_TEMP_DIR = None
-
-# Default formatting for date objects. See all available format strings here:
-# http://www.djangoproject.com/documentation/templates/#now
-DATE_FORMAT = 'N j, Y'
-
-# Default formatting for datetime objects. See all available format strings here:
-# http://www.djangoproject.com/documentation/templates/#now
-DATETIME_FORMAT = 'N j, Y, P'
-
-# Default formatting for time objects. See all available format strings here:
-# http://www.djangoproject.com/documentation/templates/#now
-TIME_FORMAT = 'P'
-
-# Default formatting for date objects when only the year and month are relevant.
-# See all available format strings here:
-# http://www.djangoproject.com/documentation/templates/#now
-YEAR_MONTH_FORMAT = 'F Y'
-
-# Default formatting for date objects when only the month and day are relevant.
-# See all available format strings here:
-# http://www.djangoproject.com/documentation/templates/#now
-MONTH_DAY_FORMAT = 'F j'
-
-# Do you want to manage transactions manually?
-# Hint: you really don't!
-TRANSACTIONS_MANAGED = False
-
-# The User-Agent string to use when checking for URL validity through the
-# isExistingURL validator.
-from django import get_version
-URL_VALIDATOR_USER_AGENT = "Django/%s (http://www.djangoproject.com)" % get_version()
-
-# The tablespaces to use for each model when not specified otherwise.
-DEFAULT_TABLESPACE = ''
-DEFAULT_INDEX_TABLESPACE = ''
-
-##############
-# MIDDLEWARE #
-##############
-
-# List of middleware classes to use.  Order is important; in the request phase,
-# this middleware classes will be applied in the order given, and in the
-# response phase the middleware will be applied in reverse order.
-MIDDLEWARE_CLASSES = (
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-#     'django.middleware.http.ConditionalGetMiddleware',
-#     'django.middleware.gzip.GZipMiddleware',
-    'django.middleware.common.CommonMiddleware',
-)
-
-############
-# SESSIONS #
-############
-
-SESSION_COOKIE_NAME = 'sessionid'                       # Cookie name. This can be whatever you want.
-SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2               # Age of cookie, in seconds (default: 2 weeks).
-SESSION_COOKIE_DOMAIN = None                            # A string like ".lawrence.com", or None for standard domain cookie.
-SESSION_COOKIE_SECURE = False                           # Whether the session cookie should be secure (https:// only).
-SESSION_COOKIE_PATH = '/'                               # The path of the session cookie.
-SESSION_SAVE_EVERY_REQUEST = False                      # Whether to save the session data on every request.
-SESSION_EXPIRE_AT_BROWSER_CLOSE = False                 # Whether a user's session cookie expires when the Web browser is closed.
-SESSION_ENGINE = 'django.contrib.sessions.backends.db'  # The module to store session data
-SESSION_FILE_PATH = None                                # Directory to store session files if using the file session module. If None, the backend will use a sensible default.
-
-#########
-# CACHE #
-#########
-
-# The cache backend to use.  See the docstring in django.core.cache for the
-# possible values.
-CACHE_BACKEND = 'locmem://'
-CACHE_MIDDLEWARE_KEY_PREFIX = ''
-CACHE_MIDDLEWARE_SECONDS = 600
-
-####################
-# COMMENTS         #
-####################
-
-COMMENTS_ALLOW_PROFANITIES = False
-
-# The profanities that will trigger a validation error in the
-# 'hasNoProfanities' validator. All of these should be in lowercase.
-PROFANITIES_LIST = ('asshat', 'asshead', 'asshole', 'cunt', 'fuck', 'gook', 'nigger', 'shit')
-
-# The group ID that designates which users are banned.
-# Set to None if you're not using it.
-COMMENTS_BANNED_USERS_GROUP = None
-
-# The group ID that designates which users can moderate comments.
-# Set to None if you're not using it.
-COMMENTS_MODERATORS_GROUP = None
-
-# The group ID that designates the users whose comments should be e-mailed to MANAGERS.
-# Set to None if you're not using it.
-COMMENTS_SKETCHY_USERS_GROUP = None
-
-# The system will e-mail MANAGERS the first COMMENTS_FIRST_FEW comments by each
-# user. Set this to 0 if you want to disable it.
-COMMENTS_FIRST_FEW = 0
-
-# A tuple of IP addresses that have been banned from participating in various
-# Django-powered features.
-BANNED_IPS = ()
-
-##################
-# AUTHENTICATION #
-##################
-
-AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
-
-LOGIN_URL = '/accounts/login/'
-
-LOGOUT_URL = '/accounts/logout/'
-
-LOGIN_REDIRECT_URL = '/accounts/profile/'
-
-# The number of days a password reset link is valid for
-PASSWORD_RESET_TIMEOUT_DAYS = 3
-
-###########
-# TESTING #
-###########
-
-# The name of the method to use to invoke the test suite
-TEST_RUNNER = 'django.test.simple.run_tests'
-
-# The name of the database to use for testing purposes.
-# If None, a name of 'test_' + DATABASE_NAME will be assumed
-TEST_DATABASE_NAME = None
-
-# Strings used to set the character set and collation order for the test
-# database. These values are passed literally to the server, so they are
-# backend-dependent. If None, no special settings are sent (system defaults are
-# used).
-TEST_DATABASE_CHARSET = None
-TEST_DATABASE_COLLATION = None
-
-############
-# FIXTURES #
-############
-
-# The list of directories to search for fixtures
-FIXTURE_DIRS = ()
diff --git a/webapp/django/conf/locale/ar/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index c52a2ab..0000000
--- a/webapp/django/conf/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ar/LC_MESSAGES/django.po b/webapp/django/conf/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index 5bbe749..0000000
--- a/webapp/django/conf/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1989 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the django package.
-# Ahmad Alhashemi <trans@ahmadh.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-07-03 19:22+0300\n"
-"PO-Revision-Date: 2006-07-06 23:46+0300\n"
-"Last-Translator: Ahmad Alhashemi <ahmad@ahmadh.com>\n"
-"Language-Team: Ahmad Alhashemi <trans@ahmadh.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n == 1? 0 : (n == 2? 1 : (n <= 10? 2 : 3)));\n"
-"X-Poedit-Language: Arabic\n"
-"X-Poedit-Country: KUWAIT\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: .\conf\global_settings.py:37
-msgid "Bengali"
-msgstr "بنغالي"
-
-#: .\conf\global_settings.py:38
-msgid "Czech"
-msgstr "تشيكي"
-
-#: .\conf\global_settings.py:39
-msgid "Welsh"
-msgstr "ويلزي"
-
-#: .\conf\global_settings.py:40
-msgid "Danish"
-msgstr "دنماركي"
-
-#: .\conf\global_settings.py:41
-msgid "German"
-msgstr "ألماني"
-
-#: .\conf\global_settings.py:42
-msgid "Greek"
-msgstr "اغريقي"
-
-#: .\conf\global_settings.py:43
-msgid "English"
-msgstr "انجليزي"
-
-#: .\conf\global_settings.py:44
-msgid "Spanish"
-msgstr "اسباني"
-
-#: .\conf\global_settings.py:45
-msgid "Argentinean Spanish"
-msgstr "اسباني أرجنتيني"
-
-#: .\conf\global_settings.py:46
-msgid "French"
-msgstr "فرنسي"
-
-#: .\conf\global_settings.py:47
-msgid "Galician"
-msgstr "جاليسي"
-
-#: .\conf\global_settings.py:48
-msgid "Hungarian"
-msgstr "هنغاري"
-
-#: .\conf\global_settings.py:49
-msgid "Hebrew"
-msgstr "عبري"
-
-#: .\conf\global_settings.py:50
-msgid "Icelandic"
-msgstr "آيسلندي"
-
-#: .\conf\global_settings.py:51
-msgid "Italian"
-msgstr "ايطالي"
-
-#: .\conf\global_settings.py:52
-msgid "Japanese"
-msgstr "ياباني"
-
-#: .\conf\global_settings.py:53
-msgid "Dutch"
-msgstr "هولندي"
-
-#: .\conf\global_settings.py:54
-msgid "Norwegian"
-msgstr "نرويجي"
-
-#: .\conf\global_settings.py:55
-msgid "Brazilian"
-msgstr "برازيلي"
-
-#: .\conf\global_settings.py:56
-msgid "Romanian"
-msgstr "روماني"
-
-#: .\conf\global_settings.py:57
-msgid "Russian"
-msgstr "روسي"
-
-#: .\conf\global_settings.py:58
-msgid "Slovak"
-msgstr "سلوفاك"
-
-#: .\conf\global_settings.py:59
-msgid "Slovenian"
-msgstr "سلوفاتي"
-
-#: .\conf\global_settings.py:60
-msgid "Serbian"
-msgstr "صربي"
-
-#: .\conf\global_settings.py:61
-msgid "Swedish"
-msgstr "سويدي"
-
-#: .\conf\global_settings.py:62
-msgid "Ukrainian"
-msgstr "أكراني"
-
-#: .\conf\global_settings.py:63
-msgid "Simplified Chinese"
-msgstr "صيني مبسط"
-
-#: .\conf\global_settings.py:64
-msgid "Traditional Chinese"
-msgstr "صيني تقليدي"
-
-#: .\contrib\admin\filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>بواسطة %s:</h3>\n"
-"<ul>\n"
-
-#: .\contrib\admin\filterspecs.py:70
-#: .\contrib\admin\filterspecs.py:88
-#: .\contrib\admin\filterspecs.py:143
-#: .\contrib\admin\filterspecs.py:169
-msgid "All"
-msgstr "كافة"
-
-#: .\contrib\admin\filterspecs.py:109
-msgid "Any date"
-msgstr "أي تاريخ"
-
-#: .\contrib\admin\filterspecs.py:110
-msgid "Today"
-msgstr "اليوم"
-
-#: .\contrib\admin\filterspecs.py:113
-msgid "Past 7 days"
-msgstr "الأيام 7 الماضية"
-
-#: .\contrib\admin\filterspecs.py:115
-msgid "This month"
-msgstr "هذا الشهر"
-
-#: .\contrib\admin\filterspecs.py:117
-msgid "This year"
-msgstr "هذه السنة"
-
-#: .\contrib\admin\filterspecs.py:143
-msgid "Yes"
-msgstr "نعم"
-
-#: .\contrib\admin\filterspecs.py:143
-msgid "No"
-msgstr "لا"
-
-#: .\contrib\admin\filterspecs.py:150
-msgid "Unknown"
-msgstr "غير معروف"
-
-#: .\contrib\admin\models.py:16
-msgid "action time"
-msgstr "وقت العملية"
-
-#: .\contrib\admin\models.py:19
-msgid "object id"
-msgstr "معرف العنصر"
-
-#: .\contrib\admin\models.py:20
-msgid "object repr"
-msgstr "ممثل العنصر"
-
-#: .\contrib\admin\models.py:21
-msgid "action flag"
-msgstr "علامة العملية"
-
-#: .\contrib\admin\models.py:22
-msgid "change message"
-msgstr "تغيير الرسالة"
-
-#: .\contrib\admin\models.py:25
-msgid "log entry"
-msgstr "مدخل السجل"
-
-#: .\contrib\admin\models.py:26
-msgid "log entries"
-msgstr "مدخلات السجل"
-
-#: .\contrib\admin\templates\admin\404.html.py:4
-#: .\contrib\admin\templates\admin\404.html.py:8
-msgid "Page not found"
-msgstr "تعذر العثور على الصفحة"
-
-#: .\contrib\admin\templates\admin\404.html.py:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "نحن آسفون، لكننا لم نعثر على الصفحة المطلوبة."
-
-#: .\contrib\admin\templates\admin\500.html.py:4
-#: .\contrib\admin\templates\admin\base.html.py:29
-#: .\contrib\admin\templates\admin\change_form.html.py:13
-#: .\contrib\admin\templates\admin\change_list.html.py:6
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:6
-#: .\contrib\admin\templates\admin\invalid_setup.html.py:4
-#: .\contrib\admin\templates\admin\object_history.html.py:5
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3
-#: .\contrib\admin\templates\registration\logged_out.html.py:4
-#: .\contrib\admin\templates\registration\password_change_done.html.py:4
-#: .\contrib\admin\templates\registration\password_change_form.html.py:4
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:4
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:4
-msgid "Home"
-msgstr "الرئيسية"
-
-#: .\contrib\admin\templates\admin\500.html.py:4
-msgid "Server error"
-msgstr "خطأ في المزود"
-
-#: .\contrib\admin\templates\admin\500.html.py:6
-msgid "Server error (500)"
-msgstr "خطأ في المزود (500)"
-
-#: .\contrib\admin\templates\admin\500.html.py:9
-msgid "Server Error <em>(500)</em>"
-msgstr "خطأ في المزود <em>(500)</em>"
-
-#: .\contrib\admin\templates\admin\500.html.py:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "حدث خطأ، وقم تم الابلاغ عنه إلى مدراء الموقع عبر البريد الإلكترونيوسيتم حل المشكلة قريبا إن شاء الله، شكرا لك على صبرك."
-
-#: .\contrib\admin\templates\admin\base.html.py:24
-msgid "Welcome,"
-msgstr "أهلا، "
-
-#: .\contrib\admin\templates\admin\base.html.py:24
-#: .\contrib\admin\templates\admin\change_form.html.py:10
-#: .\contrib\admin\templates\admin\change_list.html.py:5
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:3
-#: .\contrib\admin\templates\admin\object_history.html.py:3
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3
-#: .\contrib\admin\templates\registration\password_change_done.html.py:3
-#: .\contrib\admin\templates\registration\password_change_form.html.py:3
-msgid "Documentation"
-msgstr "التعليمات"
-
-#: .\contrib\admin\templates\admin\base.html.py:24
-#: .\contrib\admin\templates\admin\change_form.html.py:10
-#: .\contrib\admin\templates\admin\change_list.html.py:5
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:3
-#: .\contrib\admin\templates\admin\object_history.html.py:3
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4
-#: .\contrib\admin\templates\admin_doc\index.html.py:4
-#: .\contrib\admin\templates\admin_doc\missing_docutils.html.py:4
-#: .\contrib\admin\templates\admin_doc\model_detail.html.py:3
-#: .\contrib\admin\templates\admin_doc\model_index.html.py:5
-#: .\contrib\admin\templates\admin_doc\template_detail.html.py:4
-#: .\contrib\admin\templates\admin_doc\template_filter_index.html.py:5
-#: .\contrib\admin\templates\admin_doc\template_tag_index.html.py:5
-#: .\contrib\admin\templates\admin_doc\view_detail.html.py:4
-#: .\contrib\admin\templates\admin_doc\view_index.html.py:5
-#: .\contrib\admin\templates\registration\password_change_done.html.py:3
-#: .\contrib\admin\templates\registration\password_change_form.html.py:3
-msgid "Change password"
-msgstr "تغيير كلمة المرور"
-
-#: .\contrib\admin\templates\admin\base.html.py:24
-#: .\contrib\admin\templates\admin\change_form.html.py:10
-#: .\contrib\admin\templates\admin\change_list.html.py:5
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:3
-#: .\contrib\admin\templates\admin\object_history.html.py:3
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4
-#: .\contrib\admin\templates\admin_doc\index.html.py:4
-#: .\contrib\admin\templates\admin_doc\missing_docutils.html.py:4
-#: .\contrib\admin\templates\admin_doc\model_detail.html.py:3
-#: .\contrib\admin\templates\admin_doc\model_index.html.py:5
-#: .\contrib\admin\templates\admin_doc\template_detail.html.py:4
-#: .\contrib\admin\templates\admin_doc\template_filter_index.html.py:5
-#: .\contrib\admin\templates\admin_doc\template_tag_index.html.py:5
-#: .\contrib\admin\templates\admin_doc\view_detail.html.py:4
-#: .\contrib\admin\templates\admin_doc\view_index.html.py:5
-#: .\contrib\admin\templates\registration\password_change_done.html.py:3
-#: .\contrib\admin\templates\registration\password_change_form.html.py:3
-#: .\contrib\comments\templates\comments\form.html.py:8
-msgid "Log out"
-msgstr "خروج"
-
-#: .\contrib\admin\templates\admin\base_site.html.py:4
-msgid "Django site admin"
-msgstr "إدارة موقع جاننغو"
-
-#: .\contrib\admin\templates\admin\base_site.html.py:7
-msgid "Django administration"
-msgstr "إدارة جانغو"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:15
-#: .\contrib\admin\templates\admin\index.html.py:28
-msgid "Add"
-msgstr "إضافة"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:20
-#: .\contrib\admin\templates\admin\object_history.html.py:5
-msgid "History"
-msgstr "تاريخ"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:21
-msgid "View on site"
-msgstr "عرض على الموقع"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "الرجاء اصلاح الخطأ التالي."
-msgstr[1] "الرجاء اصلاح الخطئين التاليين."
-msgstr[2] "الرجاء اصلاح الأخطاء التالية."
-msgstr[3] "الرجاء اصلاح الأخطاء التالية."
-
-#: .\contrib\admin\templates\admin\change_form.html.py:48
-msgid "Ordering"
-msgstr "الترتيب"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:51
-msgid "Order:"
-msgstr "الترتيب"
-
-#: .\contrib\admin\templates\admin\change_list.html.py:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "اضافة %(name)s"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:9
-#: .\contrib\admin\templates\admin\submit_line.html.py:3
-msgid "Delete"
-msgstr "حذف"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "حذف %(object_name)s '%(object)s' سيؤدي إلى حذف العناصر المتعلقة به، لكن هذا الحساب لا يملك الصلاحية لحذف أنواع العناصر التالية:"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:"
-msgstr "هل أنت متأكد من أنك تريد حذف %(object_name)s \"%(object)s\"? كافة العناصر التالية المتعلقة به سيتم حذفها:"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:26
-msgid "Yes, I'm sure"
-msgstr "نعم، أنا متأكد"
-
-#: .\contrib\admin\templates\admin\filter.html.py:2
-#, python-format
-msgid " By %(title)s "
-msgstr " بواسطة %(title)s "
-
-#: .\contrib\admin\templates\admin\filters.html.py:4
-msgid "Filter"
-msgstr "مرشح"
-
-#: .\contrib\admin\templates\admin\index.html.py:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "النماذج المتوفرة في برنامج %(name)s."
-
-#: .\contrib\admin\templates\admin\index.html.py:34
-msgid "Change"
-msgstr "تغيير"
-
-#: .\contrib\admin\templates\admin\index.html.py:44
-msgid "You don't have permission to edit anything."
-msgstr "ليست لديك الصلاحية لتعديل أي شيء."
-
-#: .\contrib\admin\templates\admin\index.html.py:52
-msgid "Recent Actions"
-msgstr "العمليات الأخيرة"
-
-#: .\contrib\admin\templates\admin\index.html.py:53
-msgid "My Actions"
-msgstr "عملياتي"
-
-#: .\contrib\admin\templates\admin\index.html.py:57
-msgid "None available"
-msgstr "لا يوجد"
-
-#: .\contrib\admin\templates\admin\invalid_setup.html.py:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "هنالك أمر خاطئ في تركيب قاعدة بياناتك، تأكد من أنه تم انشاء جداول قاعدة البيانات الملائمة، وتأكد من أن قاعدة البيانات قابلة للقراءة من قبل المستخدم الملائم."
-
-#: .\contrib\admin\templates\admin\login.html.py:17
-#: .\contrib\comments\templates\comments\form.html.py:6
-#: .\contrib\comments\templates\comments\form.html.py:8
-msgid "Username:"
-msgstr "اسم المستخدم:"
-
-#: .\contrib\admin\templates\admin\login.html.py:20
-#: .\contrib\comments\templates\comments\form.html.py:6
-msgid "Password:"
-msgstr "كلمة المرور:"
-
-#: .\contrib\admin\templates\admin\login.html.py:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-
-#: .\contrib\admin\templates\admin\login.html.py:25
-#: .\contrib\admin\views\decorators.py:24
-msgid "Log in"
-msgstr "دخول"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:18
-msgid "Date/time"
-msgstr "التاريخ/الوقت"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:19
-msgid "User"
-msgstr "المستخدم"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:20
-msgid "Action"
-msgstr "العملية"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr ""
-
-#: .\contrib\admin\templates\admin\object_history.html.py:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "هذا العنصر لا يملك تاريخ تغييرات، على الأغلب أن هذا العنصر لم يتم انشاءه عبر نظام الإدارة هذا."
-
-#: .\contrib\admin\templates\admin\pagination.html.py:10
-msgid "Show all"
-msgstr "عرض الكل"
-
-#: .\contrib\admin\templates\admin\search_form.html.py:8
-msgid "Go"
-msgstr "انطلق"
-
-#: .\contrib\admin\templates\admin\search_form.html.py:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "نتيحة واحدة"
-msgstr[1] "نتيجتان"
-msgstr[2] "%(counter)s نتائج"
-msgstr[3] "%(counter)s نتيحة"
-
-#: .\contrib\admin\templates\admin\search_form.html.py:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "المجموع %(full_result_count)s"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:4
-msgid "Save as new"
-msgstr "حفظ كجديد"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:5
-msgid "Save and add another"
-msgstr "حفظ وإضافة آخر"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:6
-msgid "Save and continue editing"
-msgstr "حفظ واستمرار التعديل"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:7
-msgid "Save"
-msgstr "حفظ"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3
-msgid "Bookmarklets"
-msgstr "أوامر المفضلة"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:5
-msgid "Documentation bookmarklets"
-msgstr "أوامر مفضلة التعليمات"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">لتركيب أوامر المفضلة، قم بسحب الوصلة إلى\n"
-"شريط أدات المفضلات في متصفحك، أو قم بالضغط عليها بالزر الأيمن وأضفها إلى مفضلاتك.\n"
-"سيمكنك الآن أن اختيار أوامر المفضلة من أي صفحة في الموقع، لاحظ بأن بعض\n"
-"أوامر المفضلة هذه معدة لتعمل على أجهزة كمبيوتر تعتبر على أنها \"داخلية\"\n"
-"(تحدث إلى مسؤول النظم إذا لم تكن متأكدا ما إذا كان كمبيوتر يعتبر \"داخليا\").</p>\n"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:19
-msgid "Documentation for this page"
-msgstr "التعليمات لهذه الصفحة"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:20
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "ينتقل بك من أي صفحة إلى تعليمات العرض الذي أنشأ هذه الصفحة."
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:22
-msgid "Show object ID"
-msgstr "عرض معرف الكائن"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:23
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "عرض نوع البيانات والمعرف الفريد للصفحات التي تمثل كائنا واحدا."
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:25
-msgid "Edit this object (current window)"
-msgstr "تعديل هذا الكائن (النافذة الحالية)"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ينتقل بك إلى صفحة الإدارة للصفحات التي تمثل كائنا واحدا."
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:28
-msgid "Edit this object (new window)"
-msgstr "تعديل هذا العنصر (نافذة جديدة)"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "كما سبق، لكن يفتح صفحة الإدارة في نافذة جديدة."
-
-#: .\contrib\admin\templates\registration\logged_out.html.py:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "شكرا لك على قضائك بعض الوقت مع الموقع اليوم."
-
-#: .\contrib\admin\templates\registration\logged_out.html.py:10
-msgid "Log in again"
-msgstr "دخول مرة أخرى"
-
-#: .\contrib\admin\templates\registration\password_change_done.html.py:4
-#: .\contrib\admin\templates\registration\password_change_form.html.py:4
-#: .\contrib\admin\templates\registration\password_change_form.html.py:6
-#: .\contrib\admin\templates\registration\password_change_form.html.py:10
-msgid "Password change"
-msgstr "تغيير كلمة المرور"
-
-#: .\contrib\admin\templates\registration\password_change_done.html.py:6
-#: .\contrib\admin\templates\registration\password_change_done.html.py:10
-msgid "Password change successful"
-msgstr "تم تغيير كلمة المرور بنجاح"
-
-#: .\contrib\admin\templates\registration\password_change_done.html.py:12
-msgid "Your password was changed."
-msgstr "لقد تغيرت كلمة مرورك."
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "الرجاء ادخال كلمة مرورك القديمة، زيادة في الأمان، ثم ادخل كلمة مرورك الجديدة مرتين لنكون متأكدين من أنك كتبتها بصورة صحيحة."
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:17
-msgid "Old password:"
-msgstr "كلمة المرور القديمة:"
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:19
-msgid "New password:"
-msgstr "كلمة المرور الجديدة:"
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:21
-msgid "Confirm password:"
-msgstr "تأكيد كلمة المرور:"
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:23
-msgid "Change my password"
-msgstr "تغيير كلمة المرور الخاصة بي"
-
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:4
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:4
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:6
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:10
-msgid "Password reset"
-msgstr "اعادة ضبط كلمة المرور"
-
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:6
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:10
-msgid "Password reset successful"
-msgstr "تمت عملية اعادة ضبط كلمة المرور بنجاح"
-
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "لقد قمنا بارسال كلمة مرور جديدة إلى عنوان البريد الإلكتروني الذي أدخلتها، ستصلك قريبا إن شاء الله."
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "لقد وصلتك رسالة البريد الإلكتروني هذه لأنك طلبت إعادة ضبط كلمة المرور."
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "لحسابك المستخدم الخاص بك في %(site_name)s"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "كلمة مرورك الجديدة هي: %(new_password)s"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "يمكنك تغيير كلمة المرور هذه بالذهاب إلى هذه الصفحة:"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:11
-msgid "Your username, in case you've forgotten:"
-msgstr "اسم المستخدم الخاص بك، في حال كنت قد نسيته:"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:13
-msgid "Thanks for using our site!"
-msgstr "شكرا لاستخدامك لموقعنا!"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "فريق %(site_name)s"
-
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "نسيت كلمة المرور الخاصة بك؟ قم بادخال عنوان بريدك الإلكتروني بالأسفل وسنقوم باعادة ضبط كلمة المرور الخاصة بك وارسال كلمة المرور الجديدة إليك عبر البريد الإلكتروني."
-
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:16
-msgid "E-mail address:"
-msgstr "عنوان البريد الإلكتروني:"
-
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:16
-msgid "Reset my password"
-msgstr "اعادة ضبط كلمة المرور"
-
-#: .\contrib\admin\templates\widget\date_time.html.py:3
-msgid "Date:"
-msgstr "التاريخ:"
-
-#: .\contrib\admin\templates\widget\date_time.html.py:4
-msgid "Time:"
-msgstr "الوقت:"
-
-#: .\contrib\admin\templates\widget\file.html.py:2
-msgid "Currently:"
-msgstr "حاليا:"
-
-#: .\contrib\admin\templates\widget\file.html.py:3
-msgid "Change:"
-msgstr "تغيير:"
-
-#: .\contrib\admin\templatetags\admin_list.py:230
-msgid "All dates"
-msgstr "كافة التواريخ"
-
-#: .\contrib\admin\views\decorators.py:10
-#: .\contrib\auth\forms.py:37
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "الرجاء ادخال اسم مستخدم وكلمة مرور صحيحين، الرجاء الانتباه إلى أن كلا الحقلين حساس لحالة الأحرف من حيث كونها كبيرة أو صغيرة."
-
-#: .\contrib\admin\views\decorators.py:62
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "الرجاء الدخول مرة أخرى لأن جلستك انتهت، لا تقلق: البيانات التي قمت بارسالها حفظت."
-
-#: .\contrib\admin\views\decorators.py:69
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "يبدو بأن متصفحك غير معد لقبول الكوكيز، قم بتفعيل الكوكيز من فضلك ثم تحديث هذه الصفحة والمحاولة مرة أخرى."
-
-#: .\contrib\admin\views\decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "اسم المستخدم يجب أن لا يحتوي على علامة '@'."
-
-#: .\contrib\admin\views\decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "بريدك الإلكتروني ليس اسم المستخدم الخاص بك، جرب استخدام '%s' بدلا من ذلك."
-
-#: .\contrib\admin\views\doc.py:291
-#: .\contrib\admin\views\doc.py:301
-#: .\contrib\admin\views\doc.py:303
-#: .\contrib\admin\views\doc.py:309
-#: .\contrib\admin\views\doc.py:310
-#: .\contrib\admin\views\doc.py:312
-msgid "Integer"
-msgstr "عدد صحيح"
-
-#: .\contrib\admin\views\doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "ثنائي (إما صح أو خطأ)"
-
-#: .\contrib\admin\views\doc.py:293
-#: .\contrib\admin\views\doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "سلسلة نصية (تصل إلى %(maxlength)s)"
-
-#: .\contrib\admin\views\doc.py:294
-msgid "Comma-separated integers"
-msgstr "أرقام صحيحة مفصولة بفواصل comma"
-
-#: .\contrib\admin\views\doc.py:295
-msgid "Date (without time)"
-msgstr "التاريخ (بدون الوقت)"
-
-#: .\contrib\admin\views\doc.py:296
-msgid "Date (with time)"
-msgstr "التاريخ (مع الوقت)"
-
-#: .\contrib\admin\views\doc.py:297
-msgid "E-mail address"
-msgstr "عنوان البريد الإلكتروني"
-
-#: .\contrib\admin\views\doc.py:298
-#: .\contrib\admin\views\doc.py:299
-#: .\contrib\admin\views\doc.py:302
-msgid "File path"
-msgstr "مسار الملف"
-
-#: .\contrib\admin\views\doc.py:300
-msgid "Decimal number"
-msgstr "رقم عشري"
-
-#: .\contrib\admin\views\doc.py:304
-#: .\contrib\comments\models.py:85
-msgid "IP address"
-msgstr "عنوان IP"
-
-#: .\contrib\admin\views\doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "ثنائي (إما صح أو خطأ أو لاشيء)"
-
-#: .\contrib\admin\views\doc.py:307
-msgid "Relation to parent model"
-msgstr "العلاقة بالنموذج الأب"
-
-#: .\contrib\admin\views\doc.py:308
-msgid "Phone number"
-msgstr "رقم هاتف"
-
-#: .\contrib\admin\views\doc.py:313
-msgid "Text"
-msgstr "نص"
-
-#: .\contrib\admin\views\doc.py:314
-msgid "Time"
-msgstr "وقت"
-
-#: .\contrib\admin\views\doc.py:315
-#: .\contrib\flatpages\models.py:7
-msgid "URL"
-msgstr "وصلة"
-
-#: .\contrib\admin\views\doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "ولاية أمريكية (حرفان كبيران)"
-
-#: .\contrib\admin\views\doc.py:317
-msgid "XML text"
-msgstr "نص XML"
-
-#: .\contrib\admin\views\main.py:226
-msgid "Site administration"
-msgstr "إدارة الموقع"
-
-#: .\contrib\admin\views\main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "تم اضافة %(name)s \"%(obj)s\" بنجاح."
-
-#: .\contrib\admin\views\main.py:264
-#: .\contrib\admin\views\main.py:348
-msgid "You may edit it again below."
-msgstr "يمكنك تعديله مجددا في الأسفل."
-
-#: .\contrib\admin\views\main.py:272
-#: .\contrib\admin\views\main.py:357
-#, python-format
-msgid "You may add another %s below."
-msgstr "يمكنك إضافة %s آخر بالأسفل."
-
-#: .\contrib\admin\views\main.py:290
-#, python-format
-msgid "Add %s"
-msgstr "اضافة %s"
-
-#: .\contrib\admin\views\main.py:336
-#, python-format
-msgid "Added %s."
-msgstr "اضاف %s."
-
-#: .\contrib\admin\views\main.py:336
-#: .\contrib\admin\views\main.py:338
-#: .\contrib\admin\views\main.py:340
-msgid "and"
-msgstr "و"
-
-#: .\contrib\admin\views\main.py:338
-#, python-format
-msgid "Changed %s."
-msgstr "غير %s."
-
-#: .\contrib\admin\views\main.py:340
-#, python-format
-msgid "Deleted %s."
-msgstr "حذف %s."
-
-#: .\contrib\admin\views\main.py:343
-msgid "No fields changed."
-msgstr "لم يتم تغيير أية حقول."
-
-#: .\contrib\admin\views\main.py:346
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "تم تغيير %(name)s \"%(obj)s\" بنجاح."
-
-#: .\contrib\admin\views\main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "تم اضافة %(name)s \"%(obj)s\" بنجاح، يمكنك تعديله مرة أخرى بالأسفل."
-
-#: .\contrib\admin\views\main.py:392
-#, python-format
-msgid "Change %s"
-msgstr "تغيير %s"
-
-#: .\contrib\admin\views\main.py:474
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "%(fieldname)s واحد أو أكثر في %(name)s: %(obj)s"
-
-#: .\contrib\admin\views\main.py:479
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "%(fieldname)s واحد أو أكثر في %(name)s:"
-
-#: .\contrib\admin\views\main.py:512
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "تم حذف %(name)s \"%(obj)s\" بنجاح."
-
-#: .\contrib\admin\views\main.py:515
-msgid "Are you sure?"
-msgstr "هل أنت متأكد؟"
-
-#: .\contrib\admin\views\main.py:537
-#, python-format
-msgid "Change history: %s"
-msgstr "تاريخ التغيير: %s"
-
-#: .\contrib\admin\views\main.py:571
-#, python-format
-msgid "Select %s"
-msgstr "اختر %s"
-
-#: .\contrib\admin\views\main.py:571
-#, python-format
-msgid "Select %s to change"
-msgstr "اختر %s لتغييره"
-
-#: .\contrib\admin\views\main.py:747
-msgid "Database error"
-msgstr "خطـأ في قاعدة البيانات"
-
-#: .\contrib\auth\forms.py:30
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "يبدو بأن الكوكيز غير مفعله في متصفحك، الكوكيز مطلوبة للتمكن من الدخول."
-
-#: .\contrib\auth\forms.py:39
-msgid "This account is inactive."
-msgstr "هذا الحساب غير فعال."
-
-#: .\contrib\auth\models.py:37
-#: .\contrib\auth\models.py:56
-msgid "name"
-msgstr "الاسم"
-
-#: .\contrib\auth\models.py:39
-msgid "codename"
-msgstr "الاسم الرمزي"
-
-#: .\contrib\auth\models.py:41
-msgid "permission"
-msgstr "الصلاحية"
-
-#: .\contrib\auth\models.py:42
-#: .\contrib\auth\models.py:57
-msgid "permissions"
-msgstr "الصلاحيات"
-
-#: .\contrib\auth\models.py:59
-msgid "group"
-msgstr "المجموعة"
-
-#: .\contrib\auth\models.py:60
-#: .\contrib\auth\models.py:99
-msgid "groups"
-msgstr "المجموعات"
-
-#: .\contrib\auth\models.py:89
-msgid "username"
-msgstr "اسم المستخدم"
-
-#: .\contrib\auth\models.py:89
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "مطلوب. 30 خانة أو أقل. خانات حرف رقمية فقط (أحرف، أرقام والشرطة السفلية)."
-
-#: .\contrib\auth\models.py:90
-msgid "first name"
-msgstr "الاسم الأول"
-
-#: .\contrib\auth\models.py:91
-msgid "last name"
-msgstr "الاسم الأخير"
-
-#: .\contrib\auth\models.py:92
-msgid "e-mail address"
-msgstr "عنوان البريد الإلكتروني"
-
-#: .\contrib\auth\models.py:93
-msgid "password"
-msgstr "كلمة المرور"
-
-#: .\contrib\auth\models.py:93
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "استخدم '[algo]$[salt]$[hexdigest]'"
-
-#: .\contrib\auth\models.py:94
-msgid "staff status"
-msgstr "حالة الطاقم"
-
-#: .\contrib\auth\models.py:94
-msgid "Designates whether the user can log into this admin site."
-msgstr "يحدد ما إذا كان المستخدم يستطيع الدخول إلى موقع الإدارة هذا."
-
-#: .\contrib\auth\models.py:95
-msgid "active"
-msgstr "فعال"
-
-#: .\contrib\auth\models.py:95
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "يحدد ما إذا كان المستخدم يستطيع الدخول إلى لوحة تحكم جانغو، قم بتحديد هذا الخيار بدلا من حذف حسابات المستخدمين."
-
-#: .\contrib\auth\models.py:96
-msgid "superuser status"
-msgstr "حالة المستخدم بالقوى الخارقة"
-
-#: .\contrib\auth\models.py:96
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "حدد بأن هذا المستخدم يمتلك كافة الصلاحيات دون الحاجة لتحديدها له تصريحا."
-
-#: .\contrib\auth\models.py:97
-msgid "last login"
-msgstr "آخر عملية دخول"
-
-#: .\contrib\auth\models.py:98
-msgid "date joined"
-msgstr "تاريخ الانضمام"
-
-#: .\contrib\auth\models.py:100
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "بالإضافة إلى الصلاحيات المحددة للمستخدم يدويا، فإن المستخدم يحصل أيضا على كافة صلاحيات المجموعة التي ينتمي إليها."
-
-#: .\contrib\auth\models.py:101
-msgid "user permissions"
-msgstr "صلاحيات المستخدم"
-
-#: .\contrib\auth\models.py:104
-msgid "user"
-msgstr "المستخدم"
-
-#: .\contrib\auth\models.py:105
-msgid "users"
-msgstr "المستخدمين"
-
-#: .\contrib\auth\models.py:110
-msgid "Personal info"
-msgstr "المعلومات الشخصية"
-
-#: .\contrib\auth\models.py:111
-msgid "Permissions"
-msgstr "الصلاحيات"
-
-#: .\contrib\auth\models.py:112
-msgid "Important dates"
-msgstr "تواريخ مهمة"
-
-#: .\contrib\auth\models.py:113
-msgid "Groups"
-msgstr "المجموعات"
-
-#: .\contrib\auth\models.py:250
-msgid "message"
-msgstr "رسالة"
-
-#: .\contrib\auth\views.py:40
-msgid "Logged out"
-msgstr "خروج"
-
-#: .\contrib\comments\models.py:67
-#: .\contrib\comments\models.py:166
-msgid "object ID"
-msgstr "معرف العنصر"
-
-#: .\contrib\comments\models.py:68
-msgid "headline"
-msgstr "عنوان"
-
-#: .\contrib\comments\models.py:69
-#: .\contrib\comments\models.py:90
-#: .\contrib\comments\models.py:167
-msgid "comment"
-msgstr "تعليق"
-
-#: .\contrib\comments\models.py:70
-msgid "rating #1"
-msgstr "تقييم #1"
-
-#: .\contrib\comments\models.py:71
-msgid "rating #2"
-msgstr "تقييم #2"
-
-#: .\contrib\comments\models.py:72
-msgid "rating #3"
-msgstr "تقييم #3"
-
-#: .\contrib\comments\models.py:73
-msgid "rating #4"
-msgstr "تقييم #4"
-
-#: .\contrib\comments\models.py:74
-msgid "rating #5"
-msgstr "تقييم #5"
-
-#: .\contrib\comments\models.py:75
-msgid "rating #6"
-msgstr "تقييم #8"
-
-#: .\contrib\comments\models.py:76
-msgid "rating #7"
-msgstr "تقييم #7"
-
-#: .\contrib\comments\models.py:77
-msgid "rating #8"
-msgstr "تقييم #8"
-
-#: .\contrib\comments\models.py:82
-msgid "is valid rating"
-msgstr "تقييم صالح"
-
-#: .\contrib\comments\models.py:83
-#: .\contrib\comments\models.py:169
-msgid "date/time submitted"
-msgstr "تم ارسال التاريخ/الوقت"
-
-#: .\contrib\comments\models.py:84
-#: .\contrib\comments\models.py:170
-msgid "is public"
-msgstr "عام"
-
-#: .\contrib\comments\models.py:86
-msgid "is removed"
-msgstr "محذوف"
-
-#: .\contrib\comments\models.py:86
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "قم بتحديد هذا المربع إذا كان التعليق غير لائق، سيتم عرض الرسالة \"تم حذف هذا التعليق\" بدلا منه."
-
-#: .\contrib\comments\models.py:91
-msgid "comments"
-msgstr "تعليقات"
-
-#: .\contrib\comments\models.py:131
-#: .\contrib\comments\models.py:207
-msgid "Content object"
-msgstr "عنصر محتوى"
-
-#: .\contrib\comments\models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"أرسلت بواسطة %(user)s في %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: .\contrib\comments\models.py:168
-msgid "person's name"
-msgstr "اسم الشخص"
-
-#: .\contrib\comments\models.py:171
-msgid "ip address"
-msgstr "عنوان ip"
-
-#: .\contrib\comments\models.py:173
-msgid "approved by staff"
-msgstr "موافق عليه من قبل الطاقم"
-
-#: .\contrib\comments\models.py:176
-msgid "free comment"
-msgstr "تعليق حر"
-
-#: .\contrib\comments\models.py:177
-msgid "free comments"
-msgstr "تعليقات حرة"
-
-#: .\contrib\comments\models.py:233
-msgid "score"
-msgstr "الدرجة"
-
-#: .\contrib\comments\models.py:234
-msgid "score date"
-msgstr "تاريخ الدرجة"
-
-#: .\contrib\comments\models.py:237
-msgid "karma score"
-msgstr "درجة الكارما"
-
-#: .\contrib\comments\models.py:238
-msgid "karma scores"
-msgstr "درجات الكارما"
-
-#: .\contrib\comments\models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "تقييم %(score)d بواسطة %(user)s"
-
-#: .\contrib\comments\models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"هذا التعليق تم تعليمه بواسطة %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: .\contrib\comments\models.py:265
-msgid "flag date"
-msgstr "تاريخ التعليم"
-
-#: .\contrib\comments\models.py:268
-msgid "user flag"
-msgstr "علامة مستخدم"
-
-#: .\contrib\comments\models.py:269
-msgid "user flags"
-msgstr "علامات المستخدم"
-
-#: .\contrib\comments\models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "علامة بواسطة %r"
-
-#: .\contrib\comments\models.py:278
-msgid "deletion date"
-msgstr "تاريخ الحذف"
-
-#: .\contrib\comments\models.py:280
-msgid "moderator deletion"
-msgstr "حذف المراقب"
-
-#: .\contrib\comments\models.py:281
-msgid "moderator deletions"
-msgstr "حذوفات المراقب"
-
-#: .\contrib\comments\models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "حذف المراقب بواسطة %r"
-
-#: .\contrib\comments\templates\comments\form.html.py:6
-msgid "Forgotten your password?"
-msgstr "نسيت كلمة المرور؟"
-
-#: .\contrib\comments\templates\comments\form.html.py:12
-msgid "Ratings"
-msgstr "التقييمات"
-
-#: .\contrib\comments\templates\comments\form.html.py:12
-#: .\contrib\comments\templates\comments\form.html.py:23
-msgid "Required"
-msgstr "مطلوب"
-
-#: .\contrib\comments\templates\comments\form.html.py:12
-#: .\contrib\comments\templates\comments\form.html.py:23
-msgid "Optional"
-msgstr "اختياري"
-
-#: .\contrib\comments\templates\comments\form.html.py:23
-msgid "Post a photo"
-msgstr "ارسال صورة"
-
-#: .\contrib\comments\templates\comments\form.html.py:28
-#: .\contrib\comments\templates\comments\freeform.html.py:5
-msgid "Comment:"
-msgstr "تعليق:"
-
-#: .\contrib\comments\templates\comments\form.html.py:34
-#: .\contrib\comments\templates\comments\freeform.html.py:9
-msgid "Preview comment"
-msgstr "استعراض التعليق"
-
-#: .\contrib\comments\templates\comments\freeform.html.py:4
-msgid "Your name:"
-msgstr "اسمك:"
-
-#: .\contrib\comments\views\comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "هذا التقييم مطلوب لأنك قمت بادخال تقييم واحد على الأقل."
-
-#: .\contrib\comments\views\comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"هذا التعليق كتب بواسطة شخص لديه أقل من تعليق واحد:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"هذا التعليق كتب بواسطة شخص لديه أقل من تعليقان:\n"
-"\n"
-"%(text)s"
-msgstr[2] ""
-"هذا التعليق كتب بواسطة شخص لديه أقل من %(count)s تعليقات:\n"
-"\n"
-"%(text)s"
-msgstr[3] ""
-"هذا التعليق كتب بواسطة شخص لديه أقل من %(count)s تعليق:\n"
-"\n"
-"%(text)s"
-
-#: .\contrib\comments\views\comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"هذا التعليق كتب بواسطة عضو سطحي:\n"
-"\n"
-"%(text)s"
-
-#: .\contrib\comments\views\comments.py:188
-#: .\contrib\comments\views\comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "يسمح باستخدام POST فقط"
-
-#: .\contrib\comments\views\comments.py:192
-#: .\contrib\comments\views\comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "لم يتم ارسال واحد أو أكثر من الحقول المطلوبة."
-
-#: .\contrib\comments\views\comments.py:196
-#: .\contrib\comments\views\comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "شخص ما قام بالتلاعب بنموذج التعليق (انتهاك أمني)"
-
-#: .\contrib\comments\views\comments.py:206
-#: .\contrib\comments\views\comments.py:292
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "نموذج التعليق احتوى 'هدف' غير صحيح -- معرف الكائن كان غير صحيحا"
-
-#: .\contrib\comments\views\comments.py:257
-#: .\contrib\comments\views\comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "نموذج التعليق لم يحدد أيا من 'استعراض' أو 'ارسال'"
-
-#: .\contrib\comments\views\karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "لا يمكن للمستخدمين المجهولين التصويت"
-
-#: .\contrib\comments\views\karma.py:23
-msgid "Invalid comment ID"
-msgstr "معرف التعليق غير صحيح"
-
-#: .\contrib\comments\views\karma.py:25
-msgid "No voting for yourself"
-msgstr "لا يمكنك التصويت لنفسك"
-
-#: .\contrib\contenttypes\models.py:20
-msgid "python model class name"
-msgstr "اسم صنف النموذج في python"
-
-#: .\contrib\contenttypes\models.py:23
-msgid "content type"
-msgstr "نوع البيانات"
-
-#: .\contrib\contenttypes\models.py:24
-msgid "content types"
-msgstr "أنواع البيانات"
-
-#: .\contrib\flatpages\models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "مثال: '/about/contact/'. تأكد من وضع شرطات في البداية والنهاية."
-
-#: .\contrib\flatpages\models.py:9
-msgid "title"
-msgstr "العنوان"
-
-#: .\contrib\flatpages\models.py:10
-msgid "content"
-msgstr "المحتوى"
-
-#: .\contrib\flatpages\models.py:11
-msgid "enable comments"
-msgstr "السماح بالتعليقات"
-
-#: .\contrib\flatpages\models.py:12
-msgid "template name"
-msgstr "اسم القالب"
-
-#: .\contrib\flatpages\models.py:13
-msgid "Example: 'flatpages/contact_page'. If this isn't provided, the system will use 'flatpages/default'."
-msgstr "مثال: 'flatpages/contact_page'. إذا لم يتم تحديده فإن النظام سيقوم باستخدام 'flatpages/default'."
-
-#: .\contrib\flatpages\models.py:14
-msgid "registration required"
-msgstr "التسجيل مطلوب"
-
-#: .\contrib\flatpages\models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "إذا كان هذا الخيار محددا، فإن المستخدمين الداخلين فقط سيتمكنون من مشاهدة الصفحة."
-
-#: .\contrib\flatpages\models.py:18
-msgid "flat page"
-msgstr "صفحة مسطحة"
-
-#: .\contrib\flatpages\models.py:19
-msgid "flat pages"
-msgstr "صفحات مسطحة"
-
-#: .\contrib\redirects\models.py:7
-msgid "redirect from"
-msgstr "نموذج إعادة توجيه"
-
-#: .\contrib\redirects\models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "يجب أن يكون هذا مسارا مطلقا وبدون اسم النطاق. مثال: '/events/search/'."
-
-#: .\contrib\redirects\models.py:9
-msgid "redirect to"
-msgstr "إعادة توجيه إلى"
-
-#: .\contrib\redirects\models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "يجب أن يكون هذا مسارا مطلقا (كما في الذي فوقه) عنوانا كاملا يبدأ بالمقطع 'http://'."
-
-#: .\contrib\redirects\models.py:13
-msgid "redirect"
-msgstr "إعادة توجيه"
-
-#: .\contrib\redirects\models.py:14
-msgid "redirects"
-msgstr "إعادات توجيه"
-
-#: .\contrib\sessions\models.py:41
-msgid "session key"
-msgstr "مفتاح الجلسة"
-
-#: .\contrib\sessions\models.py:42
-msgid "session data"
-msgstr "بيانات الجلسة"
-
-#: .\contrib\sessions\models.py:43
-msgid "expire date"
-msgstr "تاريخ الانتهاء"
-
-#: .\contrib\sessions\models.py:47
-msgid "session"
-msgstr "جلسة"
-
-#: .\contrib\sessions\models.py:48
-msgid "sessions"
-msgstr "جلسات"
-
-#: .\contrib\sites\models.py:10
-msgid "domain name"
-msgstr "اسم النطاق"
-
-#: .\contrib\sites\models.py:11
-msgid "display name"
-msgstr "اسم العرض"
-
-#: .\contrib\sites\models.py:15
-msgid "site"
-msgstr "موقع"
-
-#: .\contrib\sites\models.py:16
-msgid "sites"
-msgstr "مواقع"
-
-#: .\core\validators.py:63
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "هذه القيمة يجب أن تحتوي فقط على الأحرف والأرقام والشرطة السفلية."
-
-#: .\core\validators.py:67
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "هذه القيمة يجب أن تحتوي فقط على الأحرف والأرقام والشرطات السفلية والشرطة العادية والشرطات المائلة."
-
-#: .\core\validators.py:75
-msgid "Uppercase letters are not allowed here."
-msgstr "الحروف الكبيرة غير مسموح بها هنا."
-
-#: .\core\validators.py:79
-msgid "Lowercase letters are not allowed here."
-msgstr "الحروف الصغيرة غير مسموح بها هنا."
-
-#: .\core\validators.py:86
-msgid "Enter only digits separated by commas."
-msgstr "أدخل أرقاما فقط مفصول بينها بفواصل comma."
-
-#: .\core\validators.py:98
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "أدخل عناوين بريد إلكتروني صالحة مفصول بينها بفواصل comma."
-
-#: .\core\validators.py:102
-msgid "Please enter a valid IP address."
-msgstr "أدخل عنوان IP صالح من فضلك."
-
-#: .\core\validators.py:106
-msgid "Empty values are not allowed here."
-msgstr "القيم الفارغة غير مسموح بها هنا."
-
-#: .\core\validators.py:110
-msgid "Non-numeric characters aren't allowed here."
-msgstr "الخانات غير الرقمية غير مسموح بها هنا."
-
-#: .\core\validators.py:114
-msgid "This value can't be comprised solely of digits."
-msgstr "لا يمكن أن تكون القيمة مكونة من الأرقام فقط."
-
-#: .\core\validators.py:119
-msgid "Enter a whole number."
-msgstr "أدخل رقما صحيحا."
-
-#: .\core\validators.py:123
-msgid "Only alphabetical characters are allowed here."
-msgstr "فقط الخانات الحرفية مسموح بها هنا."
-
-#: .\core\validators.py:127
-#: .\db\models\fields\__init__.py:412
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "أدخل تاريخا صحيحا بتنسيق YYYY-MM-DD."
-
-#: .\core\validators.py:131
-msgid "Enter a valid time in HH:MM format."
-msgstr "أدخل وقتا صحيحا بتنسيق HH:MM."
-
-#: .\core\validators.py:135
-#: .\db\models\fields\__init__.py:474
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "أدخل تاريخ/وقت صحيحين بتنسيق YYYY-MM-DD HH:MM."
-
-#: .\core\validators.py:139
-msgid "Enter a valid e-mail address."
-msgstr "أدخل عنوان بريد إلكتروني صحيح."
-
-#: .\core\validators.py:151
-#: .\core\validators.py:379
-#: .\forms\__init__.py:659
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "لم يتم ارسال ملف، الرجاء التأكد من نوع ترميز (encoding type) النموذج."
-
-#: .\core\validators.py:155
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "قم برفع صورة صالحة، الملف الذي قمت برفعه إما أنه ليس ملفا لصورة أو أنه ملف معطوب."
-
-#: .\core\validators.py:162
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "العنوان %s لا يحتوي على صورة صالحة."
-
-#: .\core\validators.py:166
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "رقم الهاتف يجب أن يكون بتنسيق XXX-XXX-XXXX. \"%s\" غير صالح."
-
-#: .\core\validators.py:174
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "هذا العنوان %s لا يشير إلى مقطع فيديو QuickTime صالح."
-
-#: .\core\validators.py:178
-msgid "A valid URL is required."
-msgstr "يجب ادخال عنوان صالح."
-
-#: .\core\validators.py:192
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"مطلوب شفرة HTML صالحة، الأخطاء على وجه التحديد هي:\n"
-"%s"
-
-#: .\core\validators.py:199
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML مهيئة بصورة سيئة: %s"
-
-#: .\core\validators.py:209
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "وصلة غير صالحة: %s"
-
-#: .\core\validators.py:213
-#: .\core\validators.py:215
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "الوصلة %s غير صحيحة."
-
-#: .\core\validators.py:221
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "أدخل اختصار ولاية أمريكية صحيحا."
-
-#: .\core\validators.py:236
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "انته إلى ما تقول! الكلمة %s غير مسموح بها هنا."
-msgstr[1] "انتبه إلى ما تقول! الكلمتان %s غير مسموح بهما هنا."
-msgstr[2] "انتبه إلى ما تقول! الكلمات %s غير مسموح بها هنا."
-msgstr[3] "انتبه إلى ما تقول! الكلمات %s غير مسموح بها هنا."
-
-#: .\core\validators.py:243
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "هذا الحقل يجب أن يطابق الحقل '%s'."
-
-#: .\core\validators.py:262
-msgid "Please enter something for at least one field."
-msgstr "الرجاء ادخال شيء ما في حقل واحد على الأقل."
-
-#: .\core\validators.py:271
-#: .\core\validators.py:282
-msgid "Please enter both fields or leave them both empty."
-msgstr "الرجاء ادخال كلا الحقلين أن ترك كلاهما فارغا."
-
-#: .\core\validators.py:289
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "هذا الحقل يجب أن يعطي إذا كان %(field)s %(value)s"
-
-#: .\core\validators.py:301
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "هذا الحقل يجب أن يعطى إذا لم يكن %(field)s %(value)s"
-
-#: .\core\validators.py:320
-msgid "Duplicate values are not allowed."
-msgstr "القيم المكررة غير مسموح بها."
-
-#: .\core\validators.py:343
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "يجب أن تكون القيام من مضاعفات %s."
-
-#: .\core\validators.py:354
-msgid "Please enter a valid decimal number."
-msgstr "الرجاء ادخال رقم عشري صالح."
-
-#: .\core\validators.py:356
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "رجاء أدخل رقم عشري صالح مكون من خانة واحدة على الأكثر."
-msgstr[1] "رجاء أدخل رقم عشري صالح مكون من خانتين على الأكثر."
-msgstr[2] "رجاء أدخل رقم عشري صالح مكون من %s خانات على الأكثر."
-msgstr[3] "رجاء أدخل رقم عشري صالح مكون من %s خانة على الأكثر."
-
-#: .\core\validators.py:359
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "رجاء أدخل رقم عشري صالح يكون الجزء الصحيح منه مكونا من خانة واحدة على الأكثر."
-msgstr[1] "رجاء أدخل رقم عشري صالح يكون الجزء الصحيح منه مكونا من خانتين على الأكثر."
-msgstr[2] "رجاء أدخل رقم عشري صالح يكون الجزء الصحيح منه مكونا من %s خانات على الأكثر."
-msgstr[3] "رجاء أدخل رقم عشري صالح يكون الجزء الصحيح منه مكونا من %s خانة على الأكثر."
-
-#: .\core\validators.py:362
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "الرجاء ادخال رقم عشري صالح تكون فيه خانة عشرية واحدة على الأكثر."
-msgstr[1] "الرجاء ادخال رقم عشري صالح تكون فيه خانتان عشريتان على الأكثر."
-msgstr[2] "الرجاء ادخال رقم عشري صالح تكون فيه %s خانات عشرية على الأكثر."
-msgstr[3] "الرجاء ادخال رقم عشري صالح تكون فيه %s خانة عشرية على الأكثر."
-
-#: .\core\validators.py:372
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "تأكد من أن حجم الملف الذي قمت برفعه لا يقل عن  %s بايت."
-
-#: .\core\validators.py:373
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "تأكد من أن الملف الذي قمت برفعه لا يزيد عن %s بايت."
-
-#: .\core\validators.py:390
-msgid "The format for this field is wrong."
-msgstr "تنسيق هذا الحقل خاطئ."
-
-#: .\core\validators.py:405
-msgid "This field is invalid."
-msgstr "هذا الحقل غير صحيح."
-
-#: .\core\validators.py:441
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "تعذر جلب أي شيء من %s."
-
-#: .\core\validators.py:444
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "الوصلة %(url)s أعادت ترويسة Content-Type الخاطئة '%(contenttype)s'."
-
-#: .\core\validators.py:477
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "الرجاء اغلاق الوسم %(tag)s في سطر %(line)s. (يبدأ السطر هكذا \"%(start)s\".)"
-
-#: .\core\validators.py:481
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "بعض النص الذي يبدأ في سطر %(line)s غير مسموح به في هذا السياق. (يبدأ السطر هكذا \"%(start)s\".)"
-
-#: .\core\validators.py:486
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" في السطر %(line)s هي سمة غير صالحة. (يبدأ السطر هكذا \"%(start)s\".)"
-
-#: .\core\validators.py:491
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" في السطر %(line)s وسم غير صالح. (يبدأ السطر هكذا \"%(start)s\".)"
-
-#: .\core\validators.py:495
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "هنالك وسم في السطر %(line)s تنقصه سمة واحدة أو أكثر. (يبدأ السطر هكذا \"%(start)s\".)"
-
-#: .\core\validators.py:500
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "السمة \"%(attr)s\" في السطر %(line)s تمتلك قيمة غير صالحة. (يبدأ السطر هكذا \"%(start)s\".)"
-
-#: .\db\models\manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s مع هذا %(type)s موجودة بالفعل لأجل %(field)s."
-
-#: .\db\models\fields\related.py:51
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "الرجاء ادخال %s صالح."
-
-#: .\db\models\fields\related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr "افصل بين المعرفات بفواصل comma."
-
-#: .\db\models\fields\related.py:620
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "اضغط زر التحكم \"Control\", أو \"Command\" على أجهزة Mac لاختيار أكثر من واحد."
-
-#: .\db\models\fields\related.py:664
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "الرجاء ادخال معرفات %(self)s صالحة، القيمة %(value)r غير صالحة."
-msgstr[1] "الرجاء ادخال معرفات %(self)s صالحة، القيمتان %(value)r غير صالحة."
-msgstr[2] "الرجاء ادخال معرفات %(self)s صالحة، القيم %(value)r غير صالحة."
-msgstr[3] "الرجاء ادخال معرفات %(self)s صالحة، القيم %(value)r غير صالحة."
-
-#: .\db\models\fields\__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s بالحقل %(fieldname)s موجود بالفعل."
-
-#: .\db\models\fields\__init__.py:114
-#: .\db\models\fields\__init__.py:265
-#: .\db\models\fields\__init__.py:548
-#: .\db\models\fields\__init__.py:559
-#: .\forms\__init__.py:346
-msgid "This field is required."
-msgstr "هذا الحقل مطلوب."
-
-#: .\db\models\fields\__init__.py:337
-msgid "This value must be an integer."
-msgstr "هذه القيمة يجب أن تكون رقما صحيحا."
-
-#: .\db\models\fields\__init__.py:369
-msgid "This value must be either True or False."
-msgstr "هذه القيمة يجب أن تكون إما صح أو خطأ."
-
-#: .\db\models\fields\__init__.py:385
-msgid "This field cannot be null."
-msgstr "لا يمكن أن تكون قيمة هذا الحقل لا شيء."
-
-#: .\db\models\fields\__init__.py:568
-msgid "Enter a valid filename."
-msgstr "أدخل اسم ملف صالح."
-
-#: .\forms\__init__.py:381
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "تأكد من أن النص الذي أدخلته أقل من خانة واحدة."
-msgstr[1] "تأكد من أن النص الذي أدخلته أقل من خانتين."
-msgstr[2] "تأكد من أن النص الذي أدخلته أقل من %s خانات."
-msgstr[3] "تأكد من أن النص الذي أدخلته أقل من %s خانة."
-
-#: .\forms\__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr "الأسطر الجديدة غير مسموح هتا."
-
-#: .\forms\__init__.py:485
-#: .\forms\__init__.py:558
-#: .\forms\__init__.py:597
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "حدد خيارا صحيحا; '%(data)s' ليست ضمن %(choices)s."
-
-#: .\forms\__init__.py:661
-msgid "The submitted file is empty."
-msgstr "الملف الذي قمت بارساله فارغ."
-
-#: .\forms\__init__.py:717
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "أدخل رقما صحيحا بين -32,768 و 32,767."
-
-#: .\forms\__init__.py:727
-msgid "Enter a positive number."
-msgstr "أدخل رقما موجبا."
-
-#: .\forms\__init__.py:737
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "أدخل رقما صحيحا بين 0 و 32,767."
-
-#: .\template\defaultfilters.py:401
-msgid "yes,no,maybe"
-msgstr "نعم،لا،ربما"
-
-#: .\utils\dates.py:6
-msgid "Monday"
-msgstr "الاثنين"
-
-#: .\utils\dates.py:6
-msgid "Tuesday"
-msgstr "الثلاثاء"
-
-#: .\utils\dates.py:6
-msgid "Wednesday"
-msgstr "الأربعاء"
-
-#: .\utils\dates.py:6
-msgid "Thursday"
-msgstr "الخميس"
-
-#: .\utils\dates.py:6
-msgid "Friday"
-msgstr "الجمعة"
-
-#: .\utils\dates.py:7
-msgid "Saturday"
-msgstr "السبت"
-
-#: .\utils\dates.py:7
-msgid "Sunday"
-msgstr "الأحد"
-
-#: .\utils\dates.py:14
-msgid "January"
-msgstr "يناير"
-
-#: .\utils\dates.py:14
-msgid "February"
-msgstr "فبراير"
-
-#: .\utils\dates.py:14
-#: .\utils\dates.py:27
-msgid "March"
-msgstr "مارس"
-
-#: .\utils\dates.py:14
-#: .\utils\dates.py:27
-msgid "April"
-msgstr "ابريل"
-
-#: .\utils\dates.py:14
-#: .\utils\dates.py:27
-msgid "May"
-msgstr "مايو"
-
-#: .\utils\dates.py:14
-#: .\utils\dates.py:27
-msgid "June"
-msgstr "يونيو"
-
-#: .\utils\dates.py:15
-#: .\utils\dates.py:27
-msgid "July"
-msgstr "يوليو"
-
-#: .\utils\dates.py:15
-msgid "August"
-msgstr "أغسطس"
-
-#: .\utils\dates.py:15
-msgid "September"
-msgstr "سبتمبر"
-
-#: .\utils\dates.py:15
-msgid "October"
-msgstr "أكتوبر"
-
-#: .\utils\dates.py:15
-msgid "November"
-msgstr "نوفمبر"
-
-#: .\utils\dates.py:16
-msgid "December"
-msgstr "ديسمبر"
-
-#: .\utils\dates.py:19
-msgid "jan"
-msgstr ""
-
-#: .\utils\dates.py:19
-msgid "feb"
-msgstr ""
-
-#: .\utils\dates.py:19
-msgid "mar"
-msgstr ""
-
-#: .\utils\dates.py:19
-msgid "apr"
-msgstr ""
-
-#: .\utils\dates.py:19
-msgid "may"
-msgstr ""
-
-#: .\utils\dates.py:19
-msgid "jun"
-msgstr ""
-
-#: .\utils\dates.py:20
-msgid "jul"
-msgstr ""
-
-#: .\utils\dates.py:20
-msgid "aug"
-msgstr ""
-
-#: .\utils\dates.py:20
-msgid "sep"
-msgstr ""
-
-#: .\utils\dates.py:20
-msgid "oct"
-msgstr ""
-
-#: .\utils\dates.py:20
-msgid "nov"
-msgstr ""
-
-#: .\utils\dates.py:20
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "يناير"
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "فبراير"
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "أغسطس"
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "سبتمبر"
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "أكتوبر"
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "نوفمبر"
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "ديسمبر"
-
-#: .\utils\timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "سنة"
-msgstr[1] "سنتان"
-msgstr[2] "سنوات"
-msgstr[3] "سنة"
-
-#: .\utils\timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "شهر"
-msgstr[1] "شهران"
-msgstr[2] "شهور"
-msgstr[3] "شهر"
-
-#: .\utils\timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "أسبوع"
-msgstr[1] "أسبوعان"
-msgstr[2] "أسابيع"
-msgstr[3] "أسبوع"
-
-#: .\utils\timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "يوم"
-msgstr[1] "يومان"
-msgstr[2] "أيام"
-msgstr[3] "يوم"
-
-#: .\utils\timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "ساعة"
-msgstr[1] "ساعتان"
-msgstr[2] "ساعات"
-msgstr[3] "ساعة"
-
-#: .\utils\timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "دقيقة"
-msgstr[1] "دقيقتان"
-msgstr[2] "دقائق"
-msgstr[3] "دقيقة"
-
-#: .\utils\translation.py:363
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: .\utils\translation.py:364
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: .\utils\translation.py:365
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: .\utils\translation.py:381
-msgid "YEAR_MONTH_FORMAT"
-msgstr ""
-
-#: .\utils\translation.py:382
-msgid "MONTH_DAY_FORMAT"
-msgstr ""
-
diff --git a/webapp/django/conf/locale/ar/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ar/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 9e50b91..0000000
--- a/webapp/django/conf/locale/ar/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ar/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ar/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d08ffcf..0000000
--- a/webapp/django/conf/locale/ar/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,110 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2006-07-06 23:50+0300\n"
-"Last-Translator: Ahmad Alhashemi <ahmad@ahmadh.com>\n"
-"Language-Team: Ahmad Alhashemi <trans@ahmadh.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Arabic\n"
-"X-Poedit-Country: Kuwait\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s متوفرة"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "اختيار الكل"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "إضافة"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "حذف"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s اختيرت"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "حدد خيارك أو خياراتك واضغط"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "مسح الكل"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid "January February March April May June July August September October November December"
-msgstr "يناير فبراير مارس إبريل مايو يونيو يوليو أغسطس سبتمبر أكتوبر نوفمبر ديسمبر"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "الأحد الأثنين الثلاثاء الأربعاء الخميس الجمعة السبت"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "أ أ ث أ خ ج س"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "الآن"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "الساعة"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "اختر وقتا ما"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "منتصف الليل"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 ص."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "الظهر"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "الغاء"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "اليوم"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "التقويم"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "يوم أمس"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "الغد"
-
diff --git a/webapp/django/conf/locale/bg/LC_MESSAGES/django.mo b/webapp/django/conf/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index c1993c6..0000000
--- a/webapp/django/conf/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/bg/LC_MESSAGES/django.po b/webapp/django/conf/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index eae6c2b..0000000
--- a/webapp/django/conf/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,5326 +0,0 @@
-# translation of django.po to Bulgarian
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-25 12:38+0200\n"
-"PO-Revision-Date: 2008-03-12 13:01+0200\n"
-"Last-Translator: Vladislav <vladislav.mitov@gmail.com>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: conf/global_settings.py:39
-#: django/conf/global_settings.py:39
-msgid "Arabic"
-msgstr "арабски"
-
-#: conf/global_settings.py:40
-#: django/conf/global_settings.py:40
-msgid "Bengali"
-msgstr "бенгалски"
-
-#: conf/global_settings.py:41
-#: django/conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "български"
-
-#: conf/global_settings.py:42
-#: django/conf/global_settings.py:42
-msgid "Catalan"
-msgstr "каталонски"
-
-#: conf/global_settings.py:43
-#: django/conf/global_settings.py:43
-msgid "Czech"
-msgstr "чешки"
-
-#: conf/global_settings.py:44
-#: django/conf/global_settings.py:44
-msgid "Welsh"
-msgstr "уелски"
-
-#: conf/global_settings.py:45
-#: django/conf/global_settings.py:45
-msgid "Danish"
-msgstr "датски"
-
-#: conf/global_settings.py:46
-#: django/conf/global_settings.py:46
-msgid "German"
-msgstr "немски"
-
-#: conf/global_settings.py:47
-#: django/conf/global_settings.py:47
-msgid "Greek"
-msgstr "гръцки"
-
-#: conf/global_settings.py:48
-#: django/conf/global_settings.py:48
-msgid "English"
-msgstr "английски"
-
-#: conf/global_settings.py:49
-#: django/conf/global_settings.py:49
-msgid "Spanish"
-msgstr "испански"
-
-#: conf/global_settings.py:50
-#: django/conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "аржентински испански"
-
-#: conf/global_settings.py:51
-#: django/conf/global_settings.py:51
-msgid "Basque"
-msgstr "Баски"
-
-#: conf/global_settings.py:52
-#: django/conf/global_settings.py:52
-msgid "Persian"
-msgstr "персийски"
-
-#: conf/global_settings.py:53
-#: django/conf/global_settings.py:53
-msgid "Finnish"
-msgstr "финландски"
-
-#: conf/global_settings.py:54
-#: django/conf/global_settings.py:54
-msgid "French"
-msgstr "френски"
-
-#: conf/global_settings.py:55
-#: django/conf/global_settings.py:55
-msgid "Irish"
-msgstr "ирландски"
-
-#: conf/global_settings.py:56
-#: django/conf/global_settings.py:56
-msgid "Galician"
-msgstr "галицейски"
-
-#: conf/global_settings.py:57
-#: django/conf/global_settings.py:57
-msgid "Hungarian"
-msgstr "унгарски"
-
-#: conf/global_settings.py:58
-#: django/conf/global_settings.py:58
-msgid "Hebrew"
-msgstr "еврит"
-
-#: conf/global_settings.py:59
-#: django/conf/global_settings.py:59
-msgid "Croatian"
-msgstr "хърватски"
-
-#: conf/global_settings.py:60
-#: django/conf/global_settings.py:60
-msgid "Icelandic"
-msgstr "исландски"
-
-#: conf/global_settings.py:61
-#: django/conf/global_settings.py:61
-msgid "Italian"
-msgstr "италиански"
-
-#: conf/global_settings.py:62
-#: django/conf/global_settings.py:62
-msgid "Japanese"
-msgstr "японски"
-
-#: conf/global_settings.py:63
-#: django/conf/global_settings.py:63
-msgid "Georgian"
-msgstr "грузински"
-
-#: conf/global_settings.py:64
-#: django/conf/global_settings.py:64
-msgid "Korean"
-msgstr "корейски"
-
-#: conf/global_settings.py:65
-#: django/conf/global_settings.py:65
-msgid "Khmer"
-msgstr "Кхмерски"
-
-#: conf/global_settings.py:66
-#: django/conf/global_settings.py:66
-msgid "Kannada"
-msgstr "каннада (индийски)"
-
-#: conf/global_settings.py:67
-#: django/conf/global_settings.py:67
-msgid "Latvian"
-msgstr "латвийски"
-
-#: conf/global_settings.py:68
-#: django/conf/global_settings.py:68
-msgid "Macedonian"
-msgstr "македонски"
-
-#: conf/global_settings.py:69
-#: django/conf/global_settings.py:69
-msgid "Dutch"
-msgstr "холандски"
-
-#: conf/global_settings.py:70
-#: django/conf/global_settings.py:70
-msgid "Norwegian"
-msgstr "норвежки"
-
-#: conf/global_settings.py:71
-#: django/conf/global_settings.py:71
-msgid "Polish"
-msgstr "полски"
-
-#: conf/global_settings.py:72
-#: django/conf/global_settings.py:72
-msgid "Portugese"
-msgstr "португалски"
-
-#: conf/global_settings.py:73
-#: django/conf/global_settings.py:73
-msgid "Brazilian"
-msgstr "бразилски"
-
-#: conf/global_settings.py:74
-#: django/conf/global_settings.py:74
-msgid "Romanian"
-msgstr "ромънски"
-
-#: conf/global_settings.py:75
-#: django/conf/global_settings.py:75
-msgid "Russian"
-msgstr "руски"
-
-#: conf/global_settings.py:76
-#: django/conf/global_settings.py:76
-msgid "Slovak"
-msgstr "словашки"
-
-#: conf/global_settings.py:77
-#: django/conf/global_settings.py:77
-msgid "Slovenian"
-msgstr "словенски"
-
-#: conf/global_settings.py:78
-#: django/conf/global_settings.py:78
-msgid "Serbian"
-msgstr "сръбски"
-
-#: conf/global_settings.py:79
-#: django/conf/global_settings.py:79
-msgid "Swedish"
-msgstr "шведски"
-
-#: conf/global_settings.py:80
-#: django/conf/global_settings.py:80
-msgid "Tamil"
-msgstr "тамил (индийски)"
-
-#: conf/global_settings.py:81
-#: django/conf/global_settings.py:81
-msgid "Telugu"
-msgstr "телугу (индийски)"
-
-#: conf/global_settings.py:82
-#: django/conf/global_settings.py:82
-msgid "Turkish"
-msgstr "турски"
-
-#: conf/global_settings.py:83
-#: django/conf/global_settings.py:83
-msgid "Ukrainian"
-msgstr "украински"
-
-#: conf/global_settings.py:84
-#: django/conf/global_settings.py:84
-msgid "Simplified Chinese"
-msgstr "китайски"
-
-#: conf/global_settings.py:85
-#: django/conf/global_settings.py:85
-msgid "Traditional Chinese"
-msgstr "традиционен китайски"
-
-#: contrib/admin/filterspecs.py:44
-#: django/contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>По %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74
-#: contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147
-#: contrib/admin/filterspecs.py:173
-#: django/contrib/admin/filterspecs.py:74
-#: django/contrib/admin/filterspecs.py:92
-#: django/contrib/admin/filterspecs.py:147
-#: django/contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Всички"
-
-#: contrib/admin/filterspecs.py:113
-#: django/contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Коя-да-е дата"
-
-#: contrib/admin/filterspecs.py:114
-#: django/contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Днес"
-
-#: contrib/admin/filterspecs.py:117
-#: django/contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Последните 7 дни"
-
-#: contrib/admin/filterspecs.py:119
-#: django/contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Този месец"
-
-#: contrib/admin/filterspecs.py:121
-#: django/contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Тази година"
-
-#: contrib/admin/filterspecs.py:147
-#: django/contrib/admin/filterspecs.py:147
-#: django/newforms/widgets.py:231
-#: django/oldforms/__init__.py:592
-#: newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Да"
-
-#: contrib/admin/filterspecs.py:147
-#: django/contrib/admin/filterspecs.py:147
-#: django/newforms/widgets.py:231
-#: django/oldforms/__init__.py:592
-#: newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Не"
-
-#: contrib/admin/filterspecs.py:154
-#: django/contrib/admin/filterspecs.py:154
-#: django/newforms/widgets.py:231
-#: django/oldforms/__init__.py:592
-#: newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Неизвестно"
-
-#: contrib/admin/models.py:18
-#: django/contrib/admin/models.py:18
-msgid "action time"
-msgstr "време на действие"
-
-#: contrib/admin/models.py:21
-#: django/contrib/admin/models.py:21
-msgid "object id"
-msgstr "id на обекта"
-
-#: contrib/admin/models.py:22
-#: django/contrib/admin/models.py:22
-msgid "object repr"
-msgstr "repr на обекта"
-
-#: contrib/admin/models.py:23
-#: django/contrib/admin/models.py:23
-msgid "action flag"
-msgstr "флаг за действие"
-
-#: contrib/admin/models.py:24
-#: django/contrib/admin/models.py:24
-msgid "change message"
-msgstr "смени съобщение"
-
-#: contrib/admin/models.py:27
-#: django/contrib/admin/models.py:27
-msgid "log entry"
-msgstr "записка"
-
-#: contrib/admin/models.py:28
-#: django/contrib/admin/models.py:28
-msgid "log entries"
-msgstr "записки"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-#: django/contrib/admin/templates/admin/404.html:4
-#: django/contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Няма такава страница"
-
-#: contrib/admin/templates/admin/404.html:10
-#: django/contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Сори, ама тая страничка липсва.  "
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: django/contrib/admin/templates/admin/500.html:4
-#: django/contrib/admin/templates/admin/base.html:37
-#: django/contrib/admin/templates/admin/change_form.html:12
-#: django/contrib/admin/templates/admin/change_list.html:5
-#: django/contrib/admin/templates/admin/delete_confirmation.html:5
-#: django/contrib/admin/templates/admin/invalid_setup.html:4
-#: django/contrib/admin/templates/admin/object_history.html:4
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:11
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: django/contrib/admin/templates/registration/logged_out.html:4
-#: django/contrib/admin/templates/registration/password_change_done.html:3
-#: django/contrib/admin/templates/registration/password_change_form.html:3
-#: django/contrib/admin/templates/registration/password_reset_done.html:4
-#: django/contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Начало"
-
-#: contrib/admin/templates/admin/500.html:4
-#: django/contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Сървърна грешка"
-
-#: contrib/admin/templates/admin/500.html:6
-#: django/contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Сървърна грешка (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-#: django/contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Server Error <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-#: django/contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Малък проблем.  Администраторът на сайта е уведомен за случилото се.  Благодарим за проявеното разбиране.  "
-
-#: contrib/admin/templates/admin/base.html:26
-#: django/contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Добре дошли,"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: django/contrib/admin/templates/admin/base.html:28
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Документация"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-#: django/contrib/admin/templates/admin/base.html:29
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:14
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Промени парола"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-#: django/contrib/admin/templates/admin/base.html:30
-#: django/contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Изход"
-
-#: contrib/admin/templates/admin/base_site.html:4
-#: django/contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Административен панел"
-
-#: contrib/admin/templates/admin/base_site.html:7
-#: django/contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Административен панел"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-#: django/contrib/admin/templates/admin/change_form.html:14
-#: django/contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Добави"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-#: django/contrib/admin/templates/admin/change_form.html:20
-#: django/contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "История"
-
-#: contrib/admin/templates/admin/change_form.html:21
-#: django/contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Разгледай в сайта"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-#: django/contrib/admin/templates/admin/change_form.html:31
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgstr "Коригирайте долу допуснатата грешка.  "
-
-#: contrib/admin/templates/admin/change_form.html:49
-#: django/contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Подреждане"
-
-#: contrib/admin/templates/admin/change_form.html:52
-#: django/contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Подредба:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#: django/contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Добави %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-#: django/contrib/admin/templates/admin/delete_confirmation.html:8
-#: django/contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Изтрий"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#: django/contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Изтриването на обекта %(object_name)s '%(escaped_object)s' не може да бъде извършено без да се изтрият и някой свързани обекти, върху които обаче нямате права: "
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#: django/contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Наистина ли искате да затрием обектите %(object_name)s \"%(escaped_object)s\"? Следните свързани елементи също ще бъдат изтрити:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-#: django/contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Абсолютно"
-
-#: contrib/admin/templates/admin/filter.html:2
-#: django/contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " По %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-#: django/contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Филтър"
-
-#: contrib/admin/templates/admin/index.html:17
-#: django/contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Модели в приложението %(name)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#: django/contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-#: django/contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Промени"
-
-#: contrib/admin/templates/admin/index.html:44
-#: django/contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Нямате права да редактирате каквото и да е."
-
-#: contrib/admin/templates/admin/index.html:52
-#: django/contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Пресни действия"
-
-#: contrib/admin/templates/admin/index.html:53
-#: django/contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Моите действия"
-
-#: contrib/admin/templates/admin/index.html:57
-#: django/contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Няма налични"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-#: django/contrib/admin/templates/admin/invalid_setup.html:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Има някакъв проблем с базата данни.  Проверете дали необходимите таблици са създадени и дали съответния потребител има необходимите права за достъп.  "
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: django/contrib/admin/templates/admin/login.html:17
-#: django/contrib/comments/templates/comments/form.html:6
-#: django/contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Потребител:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-#: django/contrib/admin/templates/admin/login.html:20
-#: django/contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Парола:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
-#: django/contrib/admin/templates/admin/login.html:25
-#: django/contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Вход"
-
-#: contrib/admin/templates/admin/object_history.html:17
-#: django/contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Дата/час"
-
-#: contrib/admin/templates/admin/object_history.html:18
-#: django/contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Потребител"
-
-#: contrib/admin/templates/admin/object_history.html:19
-#: django/contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Действие"
-
-#: contrib/admin/templates/admin/object_history.html:25
-#: django/contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j N, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:35
-#: django/contrib/admin/templates/admin/object_history.html:35
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Този обект няма исторя на промените.  Вероятно не е добавен чрез административния панел.  "
-
-#: contrib/admin/templates/admin/pagination.html:10
-#: django/contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Покажи всички"
-
-#: contrib/admin/templates/admin/search_form.html:8
-#: django/contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Давай"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#: django/contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgstr "1 резултат"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#: django/contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s общо"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-#: django/contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Запис като нов"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-#: django/contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Запис и нов"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-#: django/contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Запис и продължение"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-#: django/contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Запис"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-#: django/contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Първо, въведете потребител и парола.  След това ще можете да редактирате повече детайли.  "
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-#: django/contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Потребител"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: django/contrib/admin/templates/admin/auth/user/add_form.html:18
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Парола"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-#: django/contrib/admin/templates/admin/auth/user/add_form.html:23
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Парола (пак)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: django/contrib/admin/templates/admin/auth/user/add_form.html:24
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Въведете същата парола още веднъж за проверка.  "
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#: django/contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Въведете нова парола за потребител <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklet-и"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklet-и за документация"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">За да инсталирате bookmarklet-и, задърпайте линка в bookmarks\n"
-"toolbar-а, или щракнете с десния бутон и добавете линка в отметките. Сега можете да\n"
-"изберете bookmarklet-а от която и да е страница.  Някой от тези\n"
-"bookmarklet-и могат да се разглеждат само от компютър, който е маркиран \n"
-"като \"вътрешен\" (приказвайте с администратора ако не сте сигурни дали\n"
-"компютърът ви е \"вътрешен\").</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Документация за тази страница"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Препраща от която и да е страница към документацията за изгледа, който я е генерирал.  "
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "ID на обекта"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Показва типът на съдържанието и ID-то на страници, които представляват единичен обект.  "
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Редактирай този обект (в този прозорец)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Отива в админската страница за страници, които представляват единичен обект.  "
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Редактирай този обект (в нов прозорец)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-#: django/contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Като горното, но отваря администраторската страница в нов прозорец."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-#: django/contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Благодарим Ви, че използвахте този сайт днес.  "
-
-#: contrib/admin/templates/registration/logged_out.html:10
-#: django/contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Влез пак"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-#: django/contrib/admin/templates/registration/password_change_done.html:3
-#: django/contrib/admin/templates/registration/password_change_form.html:3
-#: django/contrib/admin/templates/registration/password_change_form.html:5
-#: django/contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Промяна на парола"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-#: django/contrib/admin/templates/registration/password_change_done.html:5
-#: django/contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Паролата е сменена успешно"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-#: django/contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "Паролата ви е сменена."
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-#: django/contrib/admin/templates/registration/password_change_form.html:11
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Въведете си старата парола (за сигурност), след което въведете желаната нова парола два пъти за да не стават грешки.  "
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-#: django/contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Стара парола:"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-#: django/contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Нова парола:"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-#: django/contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Потвърдете паролата:"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-#: django/contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Промяна на парола"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: django/contrib/admin/templates/registration/password_reset_done.html:4
-#: django/contrib/admin/templates/registration/password_reset_form.html:4
-#: django/contrib/admin/templates/registration/password_reset_form.html:6
-#: django/contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Нова парола"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-#: django/contrib/admin/templates/registration/password_reset_done.html:6
-#: django/contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Паролата е успешно обновена"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-#: django/contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Пратихме ви нова парола на адреса, който указахте.  Скоро трябва да пристигне.  "
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-#: django/contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Получавате този e-mail, защото сте поръчали да Ви бъде издадена нова парола "
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#: django/contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "за Вашия потребителски акаунт в %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#: django/contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Новата Ви парола е: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-#: django/contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Тази парола може да си я смените като щракнете тук:  "
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-#: django/contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Вашето потребителско име (ако не го помните): "
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#: django/contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Много се радваме, че използвате сайта ни!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#: django/contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Готините хора от %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-#: django/contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "Забравена парола?  Няма проблеми.  Въведете си e-mail адреса по-долу и ще ви изпратим нова!"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-#: django/contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail адрес:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-#: django/contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Нова парола"
-
-#: contrib/admin/templates/widget/date_time.html:3
-#: django/contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Дата:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-#: django/contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Час:"
-
-#: contrib/admin/templates/widget/file.html:2
-#: django/contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Сега:"
-
-#: contrib/admin/templates/widget/file.html:3
-#: django/contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Промяна:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-#: django/contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Всички дати"
-
-#: contrib/admin/views/auth.py:20
-#: contrib/admin/views/main.py:267
-#: django/contrib/admin/views/auth.py:20
-#: django/contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Обектът %(name)s \"%(obj)s\" бе успешно добавен.  "
-
-#: contrib/admin/views/auth.py:25
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-#: django/contrib/admin/views/auth.py:25
-#: django/contrib/admin/views/main.py:271
-#: django/contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Може да го редактирате пак по-долу.  "
-
-#: contrib/admin/views/auth.py:31
-#: django/contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Добави потребител"
-
-#: contrib/admin/views/auth.py:58
-#: django/contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Паролата бе успешно сменена.  "
-
-#: contrib/admin/views/auth.py:65
-#: django/contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Смени парола: %s"
-
-#: contrib/admin/views/decorators.py:11
-#: contrib/auth/forms.py:60
-#: django/contrib/admin/views/decorators.py:17
-#: django/contrib/auth/forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Въведете правилно потребителско име и парола.  И двете полета правят разлика между малки и големи букви!"
-
-#: contrib/admin/views/decorators.py:63
-#: django/contrib/admin/views/decorators.py:69
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Влезте пак, понеже сесията ви изтече.  Не се притеснявайте -- данните ви са записани.  "
-
-#: contrib/admin/views/decorators.py:70
-#: django/contrib/admin/views/decorators.py:76
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Браузерът ви май не е настроен да приема cookies.  Пуснете ги и заредете страницата на ново.  "
-
-#: contrib/admin/views/decorators.py:84
-#: django/contrib/admin/views/decorators.py:90
-msgid "Usernames cannot contain the '@' character."
-msgstr "Потребителските имена не могат да съдържат символа '@'."
-
-#: contrib/admin/views/decorators.py:86
-#: django/contrib/admin/views/decorators.py:92
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "E-mail адресът ти не ти е потребителско име.  Пробвай '%s'."
-
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-#: django/contrib/admin/views/doc.py:48
-#: django/contrib/admin/views/doc.py:50
-#: django/contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "таг:"
-
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-#: django/contrib/admin/views/doc.py:79
-#: django/contrib/admin/views/doc.py:81
-#: django/contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "филтър:"
-
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-#: django/contrib/admin/views/doc.py:137
-#: django/contrib/admin/views/doc.py:139
-#: django/contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "изглед:"
-
-#: contrib/admin/views/doc.py:166
-#: django/contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "Приложението %r липсва"
-
-#: contrib/admin/views/doc.py:173
-#: django/contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Моделът %(name)r го няма в приложение %(label)r"
-
-#: contrib/admin/views/doc.py:185
-#: django/contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "свързаният обект `%(label)s.%(type)s` "
-
-#: contrib/admin/views/doc.py:185
-#: contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221
-#: contrib/admin/views/doc.py:226
-#: django/contrib/admin/views/doc.py:185
-#: django/contrib/admin/views/doc.py:207
-#: django/contrib/admin/views/doc.py:221
-#: django/contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "модел:"
-
-#: contrib/admin/views/doc.py:216
-#: django/contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "свързани `%(label)s.%(name)s` обекти"
-
-#: contrib/admin/views/doc.py:221
-#: django/contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "всички %s"
-
-#: contrib/admin/views/doc.py:226
-#: django/contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "брой %s"
-
-#: contrib/admin/views/doc.py:231
-#: django/contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Полета на %s обекти"
-
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306
-#: contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313
-#: contrib/admin/views/doc.py:315
-#: django/contrib/admin/views/doc.py:293
-#: django/contrib/admin/views/doc.py:304
-#: django/contrib/admin/views/doc.py:306
-#: django/contrib/admin/views/doc.py:312
-#: django/contrib/admin/views/doc.py:313
-#: django/contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Цяло число"
-
-#: contrib/admin/views/doc.py:294
-#: django/contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True или False)"
-
-#: contrib/admin/views/doc.py:295
-#: contrib/admin/views/doc.py:314
-#: django/contrib/admin/views/doc.py:295
-#: django/contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Символен низ (до %(max_length)s символа)"
-
-#: contrib/admin/views/doc.py:296
-#: django/contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Цели числа, разделени с запетая"
-
-#: contrib/admin/views/doc.py:297
-#: django/contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Дата (без час)"
-
-#: contrib/admin/views/doc.py:298
-#: django/contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Дата (и час)"
-
-#: contrib/admin/views/doc.py:299
-#: django/contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Десетична дроб"
-
-#: contrib/admin/views/doc.py:300
-#: django/contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "E-mail адрес"
-
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-#: django/contrib/admin/views/doc.py:301
-#: django/contrib/admin/views/doc.py:302
-#: django/contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Път към файл"
-
-#: contrib/admin/views/doc.py:303
-#: django/contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Число с плаваща запетая"
-
-#: contrib/admin/views/doc.py:307
-#: contrib/comments/models.py:89
-#: django/contrib/admin/views/doc.py:307
-#: django/contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP адрес"
-
-#: contrib/admin/views/doc.py:309
-#: django/contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Възможните стойности са True, False или None)"
-
-#: contrib/admin/views/doc.py:310
-#: django/contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Връзка с родителския обект"
-
-#: contrib/admin/views/doc.py:311
-#: django/contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Телефонен номер"
-
-#: contrib/admin/views/doc.py:316
-#: django/contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Текст"
-
-#: contrib/admin/views/doc.py:317
-#: django/contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Час"
-
-#: contrib/admin/views/doc.py:318
-#: contrib/flatpages/models.py:7
-#: django/contrib/admin/views/doc.py:318
-#: django/contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:319
-#: django/contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "американски щат (две главни букви)"
-
-#: contrib/admin/views/doc.py:320
-#: django/contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "XML текст"
-
-#: contrib/admin/views/doc.py:346
-#: django/contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не прилича на обект от тип urlpattern"
-
-#: contrib/admin/views/main.py:233
-#: django/contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Администрация на сайта"
-
-#: contrib/admin/views/main.py:280
-#: contrib/admin/views/main.py:365
-#: django/contrib/admin/views/main.py:280
-#: django/contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Може да добавите още един обект %s по-долу.  "
-
-#: contrib/admin/views/main.py:298
-#: django/contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Добави %s"
-
-#: contrib/admin/views/main.py:344
-#: django/contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Добавен %s."
-
-#: contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348
-#: core/validators.py:283
-#: db/models/manipulators.py:309
-#: django/contrib/admin/views/main.py:344
-#: django/contrib/admin/views/main.py:346
-#: django/contrib/admin/views/main.py:348
-#: django/core/validators.py:283
-#: django/db/models/manipulators.py:309
-msgid "and"
-msgstr "и"
-
-#: contrib/admin/views/main.py:346
-#: django/contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Променен %s."
-
-#: contrib/admin/views/main.py:348
-#: django/contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Изтрит %s."
-
-#: contrib/admin/views/main.py:351
-#: django/contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Няма променени полета."
-
-#: contrib/admin/views/main.py:354
-#: django/contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Обектът %(name)s \"%(obj)s\" бе успешно актуализиран.  "
-
-#: contrib/admin/views/main.py:362
-#: django/contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "Обектът %(name)s \"%(obj)s\" бе успешно добавен.  Може да го редактирате по-долу.  "
-
-#: contrib/admin/views/main.py:400
-#: django/contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Промени %s"
-
-#: contrib/admin/views/main.py:487
-#: django/contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Едно или повече %(fieldname)s в %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#: django/contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Едно или повече %(fieldname)s в %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#: django/contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Обектът %(name)s \"%(obj)s\" бе успешно изтрит.  "
-
-#: contrib/admin/views/main.py:527
-#: django/contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Сериозно?"
-
-#: contrib/admin/views/main.py:549
-#: django/contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "История на промените: %s"
-
-#: contrib/admin/views/main.py:583
-#: django/contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Изберете %s"
-
-#: contrib/admin/views/main.py:583
-#: django/contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Изберете %s за промяна"
-
-#: contrib/admin/views/main.py:784
-#: django/contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Грешка с базата данни"
-
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
-#: django/contrib/auth/forms.py:17
-#: django/contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Двете полета за паролата не съвпадат.  "
-
-#: contrib/auth/forms.py:25
-#: django/contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Потребител с това потребителско име вече съществува.  "
-
-#: contrib/auth/forms.py:53
-#: django/contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Браузерът, който използвате не поддържа cookies, а те са необходими за да можете да се логнете.  "
-
-#: contrib/auth/forms.py:62
-#: django/contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Този акаунт е деактивиран."
-
-#: contrib/auth/forms.py:84
-#: django/contrib/auth/forms.py:84
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "С този email адрес няма обвързан потребителски акаунт.  Сигурни ли сте, че сте се регистрирали?"
-
-#: contrib/auth/forms.py:107
-#: django/contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Паролата се сменя на %s"
-
-#: contrib/auth/forms.py:117
-#: django/contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Двете полета за нова парола не съвпадат.  "
-
-#: contrib/auth/forms.py:124
-#: django/contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Въвели сте погрешна стара парола.  Въведете я пак.  "
-
-#: contrib/auth/models.py:73
-#: contrib/auth/models.py:93
-#: django/contrib/auth/models.py:73
-#: django/contrib/auth/models.py:93
-msgid "name"
-msgstr "име"
-
-#: contrib/auth/models.py:75
-#: django/contrib/auth/models.py:75
-msgid "codename"
-msgstr "код"
-
-#: contrib/auth/models.py:78
-#: django/contrib/auth/models.py:78
-msgid "permission"
-msgstr "право"
-
-#: contrib/auth/models.py:79
-#: contrib/auth/models.py:94
-#: django/contrib/auth/models.py:79
-#: django/contrib/auth/models.py:94
-msgid "permissions"
-msgstr "права"
-
-#: contrib/auth/models.py:97
-#: django/contrib/auth/models.py:97
-msgid "group"
-msgstr "група"
-
-#: contrib/auth/models.py:98
-#: contrib/auth/models.py:141
-#: django/contrib/auth/models.py:98
-#: django/contrib/auth/models.py:141
-msgid "groups"
-msgstr "групи"
-
-#: contrib/auth/models.py:131
-#: django/contrib/auth/models.py:131
-msgid "username"
-msgstr "потребител"
-
-#: contrib/auth/models.py:131
-#: django/contrib/auth/models.py:131
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Въведете не-повече от 30 символа (само букви, цифри, и подчертавка)"
-
-#: contrib/auth/models.py:132
-#: django/contrib/auth/models.py:132
-msgid "first name"
-msgstr "собствено име"
-
-#: contrib/auth/models.py:133
-#: django/contrib/auth/models.py:133
-msgid "last name"
-msgstr "фамилно име"
-
-#: contrib/auth/models.py:134
-#: django/contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr "e-mail адрес"
-
-#: contrib/auth/models.py:135
-#: django/contrib/auth/models.py:135
-msgid "password"
-msgstr "парола"
-
-#: contrib/auth/models.py:135
-#: django/contrib/auth/models.py:135
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Въведете '[algo]$[salt]$[hexdigest]' или използвайте <a href=\"password/\">формата за смяна на парола</a>."
-
-#: contrib/auth/models.py:136
-#: django/contrib/auth/models.py:136
-msgid "staff status"
-msgstr "персонал"
-
-#: contrib/auth/models.py:136
-#: django/contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "Указва дали този потребител има достъп до административния панел."
-
-#: contrib/auth/models.py:137
-#: django/contrib/auth/models.py:137
-msgid "active"
-msgstr "активен"
-
-#: contrib/auth/models.py:137
-#: django/contrib/auth/models.py:137
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Указва дали този потребител може да влезе в административния панел .  Премахнете тази маркировка вместо да изтривате акаунти.  "
-
-#: contrib/auth/models.py:138
-#: django/contrib/auth/models.py:138
-msgid "superuser status"
-msgstr "статут на супер-потребител"
-
-#: contrib/auth/models.py:138
-#: django/contrib/auth/models.py:138
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Указва, че този потребител има всички права (без да има нужда да се указват изрично)."
-
-#: contrib/auth/models.py:139
-#: django/contrib/auth/models.py:139
-msgid "last login"
-msgstr "последен логин"
-
-#: contrib/auth/models.py:140
-#: django/contrib/auth/models.py:140
-msgid "date joined"
-msgstr "дата на регистриране"
-
-#: contrib/auth/models.py:142
-#: django/contrib/auth/models.py:142
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Освен ръчно указаните права, този потребител също ще получи правата на всяка група, към която принадлежи.  "
-
-#: contrib/auth/models.py:143
-#: django/contrib/auth/models.py:143
-msgid "user permissions"
-msgstr "потребителски права"
-
-#: contrib/auth/models.py:147
-#: django/contrib/auth/models.py:147
-msgid "user"
-msgstr "потребител"
-
-#: contrib/auth/models.py:148
-#: django/contrib/auth/models.py:148
-msgid "users"
-msgstr "потребители"
-
-#: contrib/auth/models.py:154
-#: django/contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Лична информация"
-
-#: contrib/auth/models.py:155
-#: django/contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Права"
-
-#: contrib/auth/models.py:156
-#: django/contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Важни дати"
-
-#: contrib/auth/models.py:157
-#: django/contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Групи"
-
-#: contrib/auth/models.py:316
-#: django/contrib/auth/models.py:316
-msgid "message"
-msgstr "съобщение"
-
-#: contrib/auth/views.py:47
-#: django/contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Извън системата"
-
-#: contrib/comments/models.py:71
-#: contrib/comments/models.py:176
-#: django/contrib/comments/models.py:71
-#: django/contrib/comments/models.py:176
-msgid "object ID"
-msgstr "ID на обекта"
-
-#: contrib/comments/models.py:72
-#: django/contrib/comments/models.py:72
-msgid "headline"
-msgstr "заглавие"
-
-#: contrib/comments/models.py:73
-#: contrib/comments/models.py:95
-#: contrib/comments/models.py:177
-#: django/contrib/comments/models.py:73
-#: django/contrib/comments/models.py:95
-#: django/contrib/comments/models.py:177
-msgid "comment"
-msgstr "коментар"
-
-#: contrib/comments/models.py:74
-#: django/contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "рейтинг #1"
-
-#: contrib/comments/models.py:75
-#: django/contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "рейтинг #2"
-
-#: contrib/comments/models.py:76
-#: django/contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "рейтинг #3"
-
-#: contrib/comments/models.py:77
-#: django/contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "рейтинг #4"
-
-#: contrib/comments/models.py:78
-#: django/contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "рейтинг #5"
-
-#: contrib/comments/models.py:79
-#: django/contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "рейтинг #6"
-
-#: contrib/comments/models.py:80
-#: django/contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "рейтинг #7"
-
-#: contrib/comments/models.py:81
-#: django/contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "рейтинг #8"
-
-#: contrib/comments/models.py:86
-#: django/contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "е валиден рейтинг"
-
-#: contrib/comments/models.py:87
-#: contrib/comments/models.py:179
-#: django/contrib/comments/models.py:87
-#: django/contrib/comments/models.py:179
-msgid "date/time submitted"
-msgstr "дата и час на подаване"
-
-#: contrib/comments/models.py:88
-#: contrib/comments/models.py:180
-#: django/contrib/comments/models.py:88
-#: django/contrib/comments/models.py:180
-msgid "is public"
-msgstr "е публичен"
-
-#: contrib/comments/models.py:90
-#: django/contrib/comments/models.py:90
-msgid "is removed"
-msgstr "е премахнат"
-
-#: contrib/comments/models.py:90
-#: django/contrib/comments/models.py:90
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Щтракнете тази кутийка ако коментарът е неподходящ.  Вместо съдържанието на коментара, ще се покаже надписът \"Този коментар бе премахнат.\""
-
-#: contrib/comments/models.py:96
-#: django/contrib/comments/models.py:96
-msgid "comments"
-msgstr "коментари"
-
-#: contrib/comments/models.py:140
-#: contrib/comments/models.py:222
-#: django/contrib/comments/models.py:140
-#: django/contrib/comments/models.py:222
-msgid "Content object"
-msgstr "Content обект"
-
-#: contrib/comments/models.py:168
-#: django/contrib/comments/models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Пуснат от %(user)s на %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:178
-#: django/contrib/comments/models.py:178
-msgid "person's name"
-msgstr "име на човека"
-
-#: contrib/comments/models.py:181
-#: django/contrib/comments/models.py:181
-msgid "ip address"
-msgstr "ip адрес"
-
-#: contrib/comments/models.py:183
-#: django/contrib/comments/models.py:183
-msgid "approved by staff"
-msgstr "одобрен от персонала"
-
-#: contrib/comments/models.py:187
-#: django/contrib/comments/models.py:187
-msgid "free comment"
-msgstr "свободен коментар"
-
-#: contrib/comments/models.py:188
-#: django/contrib/comments/models.py:188
-msgid "free comments"
-msgstr "свободни коментари"
-
-#: contrib/comments/models.py:250
-#: django/contrib/comments/models.py:250
-msgid "score"
-msgstr "точки"
-
-#: contrib/comments/models.py:251
-#: django/contrib/comments/models.py:251
-msgid "score date"
-msgstr "дата на точкуване"
-
-#: contrib/comments/models.py:255
-#: django/contrib/comments/models.py:255
-msgid "karma score"
-msgstr "кармична точка"
-
-#: contrib/comments/models.py:256
-#: django/contrib/comments/models.py:256
-msgid "karma scores"
-msgstr "кармични точки"
-
-#: contrib/comments/models.py:260
-#: django/contrib/comments/models.py:260
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d рейтинг от %(user)s"
-
-#: contrib/comments/models.py:277
-#: django/contrib/comments/models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Този коментар бе флагнат от %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:285
-#: django/contrib/comments/models.py:285
-msgid "flag date"
-msgstr "дата на флагване"
-
-#: contrib/comments/models.py:289
-#: django/contrib/comments/models.py:289
-msgid "user flag"
-msgstr "потребителски флаг"
-
-#: contrib/comments/models.py:290
-#: django/contrib/comments/models.py:290
-msgid "user flags"
-msgstr "потребителски флагове"
-
-#: contrib/comments/models.py:294
-#: django/contrib/comments/models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "Флаг от %r"
-
-#: contrib/comments/models.py:300
-#: django/contrib/comments/models.py:300
-msgid "deletion date"
-msgstr "дата на изтриване"
-
-#: contrib/comments/models.py:303
-#: django/contrib/comments/models.py:303
-msgid "moderator deletion"
-msgstr "изтриване от модератор"
-
-#: contrib/comments/models.py:304
-#: django/contrib/comments/models.py:304
-msgid "moderator deletions"
-msgstr "изтривания от модератор"
-
-#: contrib/comments/models.py:308
-#: django/contrib/comments/models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Изтриване от модератор %r"
-
-#: contrib/comments/templates/comments/form.html:8
-#: django/contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Забравена парола?"
-
-#: contrib/comments/templates/comments/form.html:12
-#: django/contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Рейтинги"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-#: django/contrib/comments/templates/comments/form.html:12
-#: django/contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Задължително"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-#: django/contrib/comments/templates/comments/form.html:12
-#: django/contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Не-задължително"
-
-#: contrib/comments/templates/comments/form.html:23
-#: django/contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Качете снимка"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-#: django/contrib/comments/templates/comments/form.html:28
-#: django/contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Коментар:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-#: django/contrib/comments/templates/comments/form.html:35
-#: django/contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Преглед на коментара"
-
-#: contrib/comments/templates/comments/freeform.html:4
-#: django/contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Вашето име:"
-
-#: contrib/comments/views/comments.py:28
-#: django/contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Този рейтинг е задължителен, понеже сте въвели поне един друг рейтинг.  "
-
-#: contrib/comments/views/comments.py:112
-#: django/contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)sThis comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Този коментар е от потребител, който има по-малко от %(count)s коментар:\n"
-"\n"
-"%(text)sТози коментар е от потребител, който има по-малко от %(count)s коментара:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#: django/contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Този коментар е от съмнителен потребител:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-#: django/contrib/comments/views/comments.py:190
-#: django/contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Само POST заявките са позволени"
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-#: django/contrib/comments/views/comments.py:194
-#: django/contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Едно или повече от задължителните полета липсва"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-#: django/contrib/comments/views/comments.py:198
-#: django/contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Някой е променял формата за коментари (нарушение на сигурността)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-#: django/contrib/comments/views/comments.py:208
-#: django/contrib/comments/views/comments.py:295
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Формата за коментарите има невалиден параметър 'target'  -- ID-то на обекта е невалидно"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-#: django/contrib/comments/views/comments.py:259
-#: django/contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Формата за коментарите не предоставя нито преглед нито постване.  "
-
-#: contrib/comments/views/karma.py:21
-#: django/contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Анонимните потребители не могат да гласуват"
-
-#: contrib/comments/views/karma.py:25
-#: django/contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Невалидно ID на коментар"
-
-#: contrib/comments/views/karma.py:27
-#: django/contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Не можете да гласувате за себе си"
-
-#: contrib/contenttypes/models.py:37
-#: django/contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr "има на класа на модела в Python"
-
-#: contrib/contenttypes/models.py:40
-#: django/contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "тип на съдържанието"
-
-#: contrib/contenttypes/models.py:41
-#: django/contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "типове съдържание"
-
-#: contrib/flatpages/models.py:8
-#: django/contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Пример: '/about/contact/'.  Началната и крайната наклонена чертичка са задължителни.  "
-
-#: contrib/flatpages/models.py:9
-#: django/contrib/flatpages/models.py:9
-msgid "title"
-msgstr "заглавие"
-
-#: contrib/flatpages/models.py:10
-#: django/contrib/flatpages/models.py:10
-msgid "content"
-msgstr "съдържание"
-
-#: contrib/flatpages/models.py:11
-#: django/contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "позволяване на коментари"
-
-#: contrib/flatpages/models.py:12
-#: django/contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "име на шаблон"
-
-#: contrib/flatpages/models.py:13
-#: django/contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Пример: 'flatpages/contact_page.html'.  Ако това не е указано, системата ще използва 'flatpages/default.html'.  "
-
-#: contrib/flatpages/models.py:14
-#: django/contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "изисква се регистрация"
-
-#: contrib/flatpages/models.py:14
-#: django/contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ако това е чекнато, само логнати потребители ще могат да виждат страницата.  "
-
-#: contrib/flatpages/models.py:18
-#: django/contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "информативна страница"
-
-#: contrib/flatpages/models.py:19
-#: django/contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "информативни страници"
-
-#: contrib/humanize/templatetags/humanize.py:19
-#: django/contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "и"
-
-#: contrib/humanize/templatetags/humanize.py:19
-#: django/contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "ви"
-
-#: contrib/humanize/templatetags/humanize.py:19
-#: django/contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "ри"
-
-#: contrib/humanize/templatetags/humanize.py:19
-#: django/contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "ти"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#: django/contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgstr "%(value).1f милион"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#: django/contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgstr "%(value).1f милиард"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#: django/contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgstr "%(value).1f трилион"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "един"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "два"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "три"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "четири"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "пет"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "шест"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "седем"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "осем"
-
-#: contrib/humanize/templatetags/humanize.py:73
-#: django/contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "девет"
-
-#: contrib/humanize/templatetags/humanize.py:93
-#: django/contrib/humanize/templatetags/humanize.py:93
-#: tests/regressiontests/humanize/tests.py:65
-msgid "today"
-msgstr "днес"
-
-#: contrib/humanize/templatetags/humanize.py:95
-#: django/contrib/humanize/templatetags/humanize.py:95
-#: tests/regressiontests/humanize/tests.py:65
-msgid "tomorrow"
-msgstr "Утре"
-
-#: contrib/humanize/templatetags/humanize.py:97
-#: django/contrib/humanize/templatetags/humanize.py:97
-#: tests/regressiontests/humanize/tests.py:65
-msgid "yesterday"
-msgstr "вчера"
-
-#: contrib/localflavor/ar/forms.py:27
-#: django/contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Въведете пощенския код във формат NNNN или ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49
-#: contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135
-#: contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-#: django/contrib/localflavor/ar/forms.py:49
-#: django/contrib/localflavor/br/forms.py:96
-#: django/contrib/localflavor/br/forms.py:135
-#: django/contrib/localflavor/pe/forms.py:23
-#: django/contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Това поле изисква число."
-
-#: contrib/localflavor/ar/forms.py:50
-#: django/contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Това поле изисква 7 или 8 цифри."
-
-#: contrib/localflavor/ar/forms.py:79
-#: django/contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Въведете валиден номер на германска лична карта в формат XX-XXXXXXXX-X или XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-#: django/contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Невалиден CUIT."
-
-#: contrib/localflavor/au/forms.py:16
-#: django/contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Въведете 4 цифрен пощенски код"
-
-#: contrib/localflavor/br/forms.py:21
-#: django/contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Въведете пощенски код в формат XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-#: django/contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Телефонните номера трябва да бъдат в формат XX-XXXX-XXXX.  "
-
-#: contrib/localflavor/br/forms.py:58
-#: django/contrib/localflavor/br/forms.py:58
-msgid "Select a valid brazilian state. That state is not one of the available states."
-msgstr "Изберете валиден бразилски щат.  Този, не е един отвалидните щати."
-
-#: contrib/localflavor/br/forms.py:94
-#: django/contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Невалиден CPF номер"
-
-#: contrib/localflavor/br/forms.py:95
-#: django/contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Това поле изисква поне 11 цифри или 14 символа."
-
-#: contrib/localflavor/br/forms.py:134
-#: django/contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Невалиден CNPJ номер"
-
-#: contrib/localflavor/br/forms.py:136
-#: django/contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Това поле изисква поне 14 цифри."
-
-#: contrib/localflavor/ca/forms.py:17
-#: django/contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Въведете пощенски код в формат XXX XXХ."
-
-#: contrib/localflavor/ca/forms.py:88
-#: django/contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Въведете валиден номер на канадската социална осигуровка в формата XXX-XX-XXXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-#: django/contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Ааргау"
-
-#: contrib/localflavor/ch/ch_states.py:6
-#: django/contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-#: django/contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-#: django/contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-#: django/contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-#: django/contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-#: django/contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-#: django/contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Женева"
-
-#: contrib/localflavor/ch/ch_states.py:13
-#: django/contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-#: django/contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-#: django/contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-#: django/contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-#: django/contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-#: django/contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-#: django/contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-#: django/contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-#: django/contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-#: django/contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-#: django/contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-#: django/contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-#: django/contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-#: django/contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-#: django/contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-#: django/contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-#: django/contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-#: django/contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-#: django/contrib/localflavor/ch/forms.py:16
-#: django/contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Въведете пощенски код в формат XXXX."
-
-#: contrib/localflavor/ch/forms.py:64
-#: django/contrib/localflavor/ch/forms.py:64
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Въведете валиден швейцарски индентификационен номер в X1234567<0 или 1234567890 формат"
-
-#: contrib/localflavor/cl/forms.py:29
-#: django/contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Въведете валиден чилийски RUT."
-
-#: contrib/localflavor/cl/forms.py:30
-#: django/contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Въведете валиден чилийски RUT. Форпатът представлява ХХ ХХХ ХХХ-Х."
-
-#: contrib/localflavor/cl/forms.py:31
-#: django/contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Чилийският RUT не е валиден."
-
-#: contrib/localflavor/de/de_states.py:5
-#: django/contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-#: django/contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Бавария"
-
-#: contrib/localflavor/de/de_states.py:7
-#: django/contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Берлин"
-
-#: contrib/localflavor/de/de_states.py:8
-#: django/contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Бранденбург"
-
-#: contrib/localflavor/de/de_states.py:9
-#: django/contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Бремен"
-
-#: contrib/localflavor/de/de_states.py:10
-#: django/contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Хамбург"
-
-#: contrib/localflavor/de/de_states.py:11
-#: django/contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Хесен "
-
-#: contrib/localflavor/de/de_states.py:12
-#: django/contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-#: django/contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Долна Саксония "
-
-#: contrib/localflavor/de/de_states.py:14
-#: django/contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "North Rhine-Westphalia"
-
-#: contrib/localflavor/de/de_states.py:15
-#: django/contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-#: django/contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-#: django/contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Саксония"
-
-#: contrib/localflavor/de/de_states.py:18
-#: django/contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Саксония-Анхалт"
-
-#: contrib/localflavor/de/de_states.py:19
-#: django/contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-#: django/contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14
-#: contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-#: django/contrib/localflavor/de/forms.py:14
-#: django/contrib/localflavor/fi/forms.py:12
-#: django/contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Въведете пощенски код в формат XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-#: django/contrib/localflavor/de/forms.py:41
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr "Въведете валиден номер на германска лична карта в формат  XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-#: django/contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-#: django/contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-#: django/contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-#: django/contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-#: django/contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-#: django/contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-#: django/contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-#: django/contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Барселона"
-
-#: contrib/localflavor/es/es_provinces.py:13
-#: django/contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-#: django/contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-#: django/contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-#: django/contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-#: django/contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-#: django/contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Кордоба"
-
-#: contrib/localflavor/es/es_provinces.py:19
-#: django/contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-#: django/contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-#: django/contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-#: django/contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Гранада"
-
-#: contrib/localflavor/es/es_provinces.py:23
-#: django/contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-#: django/contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-#: django/contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-#: django/contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-#: django/contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-#: django/contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-#: django/contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-#: django/contrib/localflavor/es/es_provinces.py:30
-#: django/contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-#: django/contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-#: django/contrib/localflavor/es/es_provinces.py:32
-#: django/contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Мадрид"
-
-#: contrib/localflavor/es/es_provinces.py:33
-#: django/contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Малага"
-
-#: contrib/localflavor/es/es_provinces.py:34
-#: django/contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Мурсия "
-
-#: contrib/localflavor/es/es_provinces.py:35
-#: django/contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Навара"
-
-#: contrib/localflavor/es/es_provinces.py:36
-#: django/contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-#: django/contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-#: django/contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-#: django/contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-#: django/contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-#: django/contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-#: django/contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-#: django/contrib/localflavor/es/es_provinces.py:43
-#: django/contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-#: django/contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-#: django/contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-#: django/contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-#: django/contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-#: django/contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-#: django/contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-#: django/contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Валенсия"
-
-#: contrib/localflavor/es/es_provinces.py:51
-#: django/contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-#: django/contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-#: django/contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-#: django/contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Сарагоса"
-
-#: contrib/localflavor/es/es_provinces.py:55
-#: django/contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-#: django/contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-#: django/contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-#: django/contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Арагон"
-
-#: contrib/localflavor/es/es_regions.py:7
-#: django/contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-#: django/contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Балеарските острови"
-
-#: contrib/localflavor/es/es_regions.py:9
-#: django/contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-#: django/contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Канарските острови"
-
-#: contrib/localflavor/es/es_regions.py:12
-#: django/contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-#: django/contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-#: django/contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Каталония"
-
-#: contrib/localflavor/es/es_regions.py:15
-#: django/contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-#: django/contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-#: django/contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-#: django/contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-#: django/contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-#: django/contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Въведете валиден пощенски код в интервала 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-#: django/contrib/localflavor/es/forms.py:39
-msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
-msgstr "Въведевалиден телефонен номер в един от форматите 6XXXXXXXX, 8XXXXXXXX или 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-#: django/contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Въведете валиден НИФ, НИЕ, или ЦИФ."
-
-#: contrib/localflavor/es/forms.py:67
-#: django/contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Въведете валиден НИГ или НИЕ."
-
-#: contrib/localflavor/es/forms.py:68
-#: django/contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Невалидна чексума за НИФ"
-
-#: contrib/localflavor/es/forms.py:69
-#: django/contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Невалидна чексума за НИЕ"
-
-#: contrib/localflavor/es/forms.py:70
-#: django/contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Невалидна чексума за ЦИФ"
-
-#: contrib/localflavor/es/forms.py:142
-#: django/contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Въведете валиден номер на банковата ви сметка във формат XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-#: django/contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Невалидна чексума за номер на банковата сметка"
-
-#: contrib/localflavor/fi/forms.py:28
-#: django/contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Въведете валиден финландски номер на социалната осигуровка."
-
-#: contrib/localflavor/in_/forms.py:14
-#: django/contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Въведете пощенски код в формат XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-#: django/contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Въведете валиден исландски номер. Форматът представлява XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-#: django/contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Исландския номер за индентификация е невлиден"
-
-#: contrib/localflavor/it/forms.py:14
-#: django/contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Въведете валиден пощенски код."
-
-#: contrib/localflavor/it/forms.py:43
-#: django/contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Въведете валиден номер на социалната ви осигуровка."
-
-#: contrib/localflavor/it/forms.py:68
-#: django/contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Въведете валиден VAT номер."
-
-#: contrib/localflavor/jp/forms.py:17
-#: django/contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Въведете пощенски код в формат XXXXXXX или XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-#: django/contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Хокайдо"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-#: django/contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Амори"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-#: django/contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-#: django/contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-#: django/contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Акита"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-#: django/contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Ямагата"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-#: django/contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Фукушима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-#: django/contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ибараки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-#: django/contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-#: django/contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-#: django/contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Сайтама"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-#: django/contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Чиба"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-#: django/contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Токио"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-#: django/contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Канагава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-#: django/contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Яманаши"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-#: django/contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Нагано"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-#: django/contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-#: django/contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-#: django/contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ишикава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-#: django/contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-#: django/contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-#: django/contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-#: django/contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-#: django/contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-#: django/contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Шига"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-#: django/contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Киато"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-#: django/contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Осака"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-#: django/contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-#: django/contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Нара"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-#: django/contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-#: django/contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-#: django/contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-#: django/contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Окаяма"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-#: django/contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Хирошима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-#: django/contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Ямагучи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-#: django/contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Токушима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-#: django/contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-#: django/contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-#: django/contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Кочи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-#: django/contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Фукуока"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-#: django/contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Сага"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-#: django/contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Нагазаки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-#: django/contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Кумамото"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-#: django/contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-#: django/contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Миазаки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-#: django/contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-#: django/contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Окинава"
-
-#: contrib/localflavor/mx/mx_states.py:12
-#: django/contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-#: django/contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-#: django/contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-#: django/contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-#: django/contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Чихуахуа"
-
-#: contrib/localflavor/mx/mx_states.py:17
-#: django/contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-#: django/contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-#: django/contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-#: django/contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-#: django/contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-#: django/contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-#: django/contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-#: django/contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Хидалго"
-
-#: contrib/localflavor/mx/mx_states.py:25
-#: django/contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-#: django/contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-#: django/contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-#: django/contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-#: django/contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-#: django/contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-#: django/contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-#: django/contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-#: django/contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-#: django/contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-#: django/contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-#: django/contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-#: django/contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-#: django/contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Табаско"
-
-#: contrib/localflavor/mx/mx_states.py:39
-#: django/contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-#: django/contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-#: django/contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-#: django/contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-#: django/contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-#: django/contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Въведете валиден пощенски код."
-
-#: contrib/localflavor/nl/forms.py:52
-#: django/contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Въведете валиден телефонен номер"
-
-#: contrib/localflavor/nl/forms.py:78
-#: django/contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Въведете валиден SoFi номер"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-#: django/contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-#: django/contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-#: django/contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-#: django/contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-#: django/contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-#: django/contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-#: django/contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-#: django/contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-#: django/contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-#: django/contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-#: django/contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-#: django/contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-#: django/contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Въведете валиден норвежки номер на социалната осигуровка."
-
-#: contrib/localflavor/pe/forms.py:24
-#: django/contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Това поле изисква 8 цифри."
-
-#: contrib/localflavor/pe/forms.py:52
-#: django/contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Това поле изисква 11 цифри."
-
-#: contrib/localflavor/pl/forms.py:39
-#: django/contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "Националният индентификационен номер се състои от 11 цифри"
-
-#: contrib/localflavor/pl/forms.py:40
-#: django/contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Грешна чексума за Националния индентификационен номер"
-
-#: contrib/localflavor/pl/forms.py:72
-#: django/contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Въведете данъчен номер (НИП) във формат XXX-XXX-XX-XX или XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-#: django/contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Грешна чексума за данъчен номер (НИП)"
-
-#: contrib/localflavor/pl/forms.py:112
-#: django/contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "Националният Бизнес Регистрационен номер (REGON) се състои от 7 или 9 цифри."
-
-#: contrib/localflavor/pl/forms.py:113
-#: django/contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Грешна чексума за Националния Бизнес Регистрационен Номер (REGON)"
-
-#: contrib/localflavor/pl/forms.py:156
-#: django/contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Въведете пощенски код в формат XX-ХXXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-#: django/contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-#: django/contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-#: django/contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-#: django/contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-#: django/contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-#: django/contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-#: django/contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-#: django/contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-#: django/contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-#: django/contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-#: django/contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-#: django/contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-#: django/contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-#: django/contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-#: django/contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-#: django/contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-#: django/contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Въведете пощенски код в формат XXXXX или XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-#: django/contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Банска Бистрица"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-#: django/contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Банска Стиавница"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-#: django/contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-#: django/contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-#: django/contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-#: django/contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-#: django/contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-#: django/contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-#: django/contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-#: django/contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-#: django/contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-#: django/contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-#: django/contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-#: django/contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-#: django/contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-#: django/contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-#: django/contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-#: django/contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-#: django/contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-#: django/contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-#: django/contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-#: django/contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-#: django/contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-#: django/contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-#: django/contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-#: django/contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-#: django/contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-#: django/contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-#: django/contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-#: django/contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-#: django/contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-#: django/contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-#: django/contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-#: django/contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-#: django/contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-#: django/contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-#: django/contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-#: django/contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-#: django/contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-#: django/contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-#: django/contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-#: django/contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-#: django/contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-#: django/contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-#: django/contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-#: django/contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-#: django/contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-#: django/contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-#: django/contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-#: django/contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-#: django/contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-#: django/contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-#: django/contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-#: django/contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-#: django/contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-#: django/contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-#: django/contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-#: django/contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-#: django/contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-#: django/contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-#: django/contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-#: django/contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-#: django/contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-#: django/contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-#: django/contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-#: django/contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-#: django/contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-#: django/contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-#: django/contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-#: django/contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-#: django/contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-#: django/contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-#: django/contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-#: django/contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-#: django/contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-#: django/contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-#: django/contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-#: django/contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-#: django/contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-#: django/contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-#: django/contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-#: django/contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-#: django/contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-#: django/contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-#: django/contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-#: django/contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-#: django/contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-#: django/contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Въведете валиден пощенски код."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-#: django/contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Бедфордшър"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-#: django/contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-#: django/contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-#: django/contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-#: django/contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-#: django/contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-#: django/contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-#: django/contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-#: django/contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-#: django/contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "Источен Съсек "
-
-#: contrib/localflavor/uk/uk_regions.py:22
-#: django/contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Есекс"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-#: django/contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-#: django/contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Велик Лондон"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-#: django/contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Велик Манчестер "
-
-#: contrib/localflavor/uk/uk_regions.py:26
-#: django/contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-#: django/contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-#: django/contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Кент"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-#: django/contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-#: django/contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-#: django/contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-#: django/contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-#: django/contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-#: django/contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-#: django/contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-#: django/contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-#: django/contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-#: django/contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-#: django/contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-#: django/contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-#: django/contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "Южен Йорксър"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-#: django/contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-#: django/contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-#: django/contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-#: django/contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-#: django/contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-#: django/contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-#: django/contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-#: django/contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-#: django/contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-#: django/contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-#: django/contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-#: django/contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-#: django/contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-#: django/contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-#: django/contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-#: django/contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-#: django/contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-#: django/contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-#: django/contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-#: django/contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-#: django/contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-#: django/contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-#: django/contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-#: django/contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-#: django/contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-#: django/contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-#: django/contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-#: django/contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-#: django/contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-#: django/contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-#: django/contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-#: django/contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-#: django/contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-#: django/contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-#: django/contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-#: django/contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-#: django/contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Англия"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-#: django/contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-#: django/contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-#: django/contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Уелс"
-
-#: contrib/localflavor/us/forms.py:16
-#: django/contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Въведете zip код в формат XXXXX или XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-#: django/contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Въведете валиден номер на социалната осигуровка в формат XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-#: django/contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Въведете валиден южно-африкански номер за индентификация"
-
-#: contrib/localflavor/za/forms.py:54
-#: django/contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Въведете валиден пощенски код за Южна Африка"
-
-#: contrib/localflavor/za/za_provinces.py:4
-#: django/contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-#: django/contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-#: django/contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-#: django/contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-#: django/contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-#: django/contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-#: django/contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-#: django/contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-#: django/contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-#: django/contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "препратка от"
-
-#: contrib/redirects/models.py:8
-#: django/contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Това трябва да бъде абсолютен път, без името на домейна.  Пример: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-#: django/contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "препратка към"
-
-#: contrib/redirects/models.py:10
-#: django/contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Това може да бъде или абсолютен път (като горното) или пълен URL, започващ с 'http://'."
-
-#: contrib/redirects/models.py:13
-#: django/contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "препратка"
-
-#: contrib/redirects/models.py:14
-#: django/contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "препратки"
-
-#: contrib/sessions/models.py:41
-#: django/contrib/sessions/models.py:41
-msgid "session key"
-msgstr "ключ на сесията"
-
-#: contrib/sessions/models.py:42
-#: django/contrib/sessions/models.py:42
-msgid "session data"
-msgstr "данни от сесията"
-
-#: contrib/sessions/models.py:43
-#: django/contrib/sessions/models.py:43
-msgid "expire date"
-msgstr "дата на валидност"
-
-#: contrib/sessions/models.py:48
-#: django/contrib/sessions/models.py:48
-msgid "session"
-msgstr "сесия"
-
-#: contrib/sessions/models.py:49
-#: django/contrib/sessions/models.py:49
-msgid "sessions"
-msgstr "сесии"
-
-#: contrib/sites/models.py:32
-#: django/contrib/sites/models.py:32
-msgid "domain name"
-msgstr "име на домейна"
-
-#: contrib/sites/models.py:33
-#: django/contrib/sites/models.py:33
-msgid "display name"
-msgstr "наименование"
-
-#: contrib/sites/models.py:37
-#: django/contrib/sites/models.py:37
-msgid "site"
-msgstr "сайт"
-
-#: contrib/sites/models.py:38
-#: django/contrib/sites/models.py:38
-msgid "sites"
-msgstr "сайтове"
-
-#: core/validators.py:72
-#: django/core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Тази стойност може да съдържа само букви, цифри и подчертавки.  "
-
-#: core/validators.py:76
-#: django/core/validators.py:76
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Тази стойност може да съдържа само букви, цифри, подчертавки, тиренца и наклонени чертички.  "
-
-#: core/validators.py:80
-#: django/core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Тази стойност трябва да съдържа само букви, цифри, подчертавки или тиренца.  "
-
-#: core/validators.py:84
-#: django/core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Тук не се допускат главни букви.  "
-
-#: core/validators.py:88
-#: django/core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Тук не се допускат малки букви.  "
-
-#: core/validators.py:95
-#: django/core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Въведете само цифри, разделени със запетая.  "
-
-#: core/validators.py:107
-#: django/core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Въведете валидни e-mail адреси разделени със запетая.  "
-
-#: core/validators.py:111
-#: django/core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Въведете валиден IP адрес.  "
-
-#: core/validators.py:115
-#: django/core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Тук не се допускат празни стойности.  "
-
-#: core/validators.py:119
-#: django/core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Тук не се допускат символи, които не са цифри.  "
-
-#: core/validators.py:123
-#: django/core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Тази стойност не може да бъде само цифри.  "
-
-#: core/validators.py:128
-#: django/core/validators.py:128
-#: django/newforms/fields.py:151
-#: newforms/fields.py:151
-msgid "Enter a whole number."
-msgstr "Въведете цяло число.  "
-
-#: core/validators.py:132
-#: django/core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Само букви и цифри се допускат тук.  "
-
-#: core/validators.py:147
-#: django/core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Годината трябва да бъде от 1900 нагоре."
-
-#: core/validators.py:151
-#: django/core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Невалидна дата: %s"
-
-#: core/validators.py:156
-#: db/models/fields/__init__.py:522
-#: django/core/validators.py:156
-#: django/db/models/fields/__init__.py:522
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Въведете валидна дата в формат ГГГГ-ММ-ДД."
-
-#: core/validators.py:161
-#: django/core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Въведете валиден час във формат ЧЧ:ММ.  "
-
-#: core/validators.py:165
-#: db/models/fields/__init__.py:599
-#: django/core/validators.py:165
-#: django/db/models/fields/__init__.py:599
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Въведете валидна дата и час в формат ГГГГ-ММ-ДД ЧЧ:ММ."
-
-#: core/validators.py:170
-#: django/core/validators.py:170
-#: django/newforms/fields.py:402
-#: newforms/fields.py:402
-msgid "Enter a valid e-mail address."
-msgstr "Въведете валиден e-mail адрес.  "
-
-#: core/validators.py:182
-#: core/validators.py:474
-#: django/core/validators.py:182
-#: django/core/validators.py:474
-#: django/newforms/fields.py:432
-#: django/oldforms/__init__.py:687
-#: newforms/fields.py:432
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Не е получен файл.  Проверете типът кодиране на формата.  "
-
-#: core/validators.py:193
-#: django/core/validators.py:193
-#: django/newforms/fields.py:458
-#: newforms/fields.py:458
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Качете валидна картинка.  Файлът, който сте качили или не е картинка или е развалена.  "
-
-#: core/validators.py:200
-#: django/core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s не сочи към валидна картинка.  "
-
-#: core/validators.py:204
-#: django/core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Телефонните номера трябва да бъдат във формат XXX-XXX-XXXX. \"%s\" не е валиден.  "
-
-#: core/validators.py:212
-#: django/core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s не сочи към валиден QuickTime видео клип."
-
-#: core/validators.py:216
-#: django/core/validators.py:216
-msgid "A valid URL is required."
-msgstr "Изисква се валиден URL."
-
-#: core/validators.py:230
-#: django/core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Изисква се валиден HTML. Конкретните грешки са:\n"
-"%s"
-
-#: core/validators.py:237
-#: django/core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Неправилно форматиран XML: %s"
-
-#: core/validators.py:254
-#: django/core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Невалиден URL: %s"
-
-#: core/validators.py:259
-#: core/validators.py:261
-#: django/core/validators.py:259
-#: django/core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Този URL %s е счупен линк.  "
-
-#: core/validators.py:267
-#: django/core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Въведете валидно съкращение на американски щат.  "
-
-#: core/validators.py:281
-#: django/core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgstr "Ей-шш! Думичката %s не е позволена тук.  "
-
-#: core/validators.py:288
-#: django/core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Това поле трябва да съвпада с полето '%s' ."
-
-#: core/validators.py:307
-#: django/core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Въведете нещичко поне за едното поле.  "
-
-#: core/validators.py:316
-#: core/validators.py:327
-#: django/core/validators.py:316
-#: django/core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Или въведете и двете полета или ги оставете празни."
-
-#: core/validators.py:335
-#: django/core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Това поле трябва да е зададено ако %(field)s е %(value)s"
-
-#: core/validators.py:348
-#: django/core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Това поле трябва да е зададено ако %(field)s не е %(value)s"
-
-#: core/validators.py:367
-#: django/core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Не са позволени стойности, които се повтарят.  "
-
-#: core/validators.py:382
-#: django/core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Тази стойност трябва да бъде между %(lower)s и %(upper)s."
-
-#: core/validators.py:384
-#: django/core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Тази стойност трябва да бъде поне %s.  "
-
-#: core/validators.py:386
-#: django/core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Тази стойност не трябва да надвишава %s."
-
-#: core/validators.py:427
-#: django/core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Тази стойност трябва да е точна степен на %s."
-
-#: core/validators.py:437
-#: django/core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Въведете валидна десетична дроб.  "
-
-#: core/validators.py:444
-#: django/core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit.Please enter a valid decimal number with at most %s total digits."
-msgstr "Въведете валидна десетична дроб с не-повече от %s цифра. Въведете валидна десетична дроб с не-повече от %s цифра."
-
-#: core/validators.py:447
-#: django/core/validators.py:447
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit.Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr "Въведете валидна десетична дроб, цялата част на която да не надхвърля %s цифра.Въведете валидна десетична дроб, цялата част на която да не надхвърля %s цифри.  "
-
-#: core/validators.py:450
-#: django/core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place.Please enter a valid decimal number with at most %s decimal places."
-msgstr "Въведете валидна десетична дроб с не-повече от %s цифра след десетичната точка.Въведете валидна десетична дроб с не-повече от %s цифри след десетичната точка.  "
-
-#: core/validators.py:458
-#: django/core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Въведете валидно число с плаваща зашетая."
-
-#: core/validators.py:467
-#: django/core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Файлът, който сте качили трябва да бъде поне %s байта."
-
-#: core/validators.py:468
-#: django/core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Размерът на файла, който сте качили не трябва да надхвърля %s байта.  "
-
-#: core/validators.py:485
-#: django/core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "Форматът на това поле е грешен."
-
-#: core/validators.py:500
-#: django/core/validators.py:500
-msgid "This field is invalid."
-msgstr "Това поле не е валидно"
-
-#: core/validators.py:536
-#: django/core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Не получихме нищо от %s."
-
-#: core/validators.py:539
-#: django/core/validators.py:539
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s върна невалиден Content-Type хедър '%(contenttype)s'."
-
-#: core/validators.py:572
-#: django/core/validators.py:572
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Затворете тага %(tag)s , който е отворен на ред %(line)s. (Редът започва с \"%(start)s\".)"
-
-#: core/validators.py:576
-#: django/core/validators.py:576
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Некъв текст на ред %(line)s не е позволен в този контекст. (Редът започва с \"%(start)s\".)"
-
-#: core/validators.py:581
-#: django/core/validators.py:581
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" на ред %(line)s е невалиден атрибут. (Редът започва с \"%(start)s\".)"
-
-#: core/validators.py:586
-#: django/core/validators.py:586
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" на ред %(line)s е невалиден таг. (Редът започва с \"%(start)s\".)"
-
-#: core/validators.py:590
-#: django/core/validators.py:590
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "На някой от таговете на ред %(line)s му липсват един или повече задължителни атрибута. (Редът започва с \"%(start)s\".)"
-
-#: core/validators.py:595
-#: django/core/validators.py:595
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "Атрибутът \"%(attr)s\" на ред %(line)s има невалидна стойност. (Редът започва с \"%(start)s\".)"
-
-#: db/models/manipulators.py:308
-#: django/db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s с този %(type)s вече съществува за зададеното %(field)s.s"
-
-#: db/models/fields/__init__.py:52
-#: django/db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s с този %(fieldname)s вече съществува."
-
-#: db/models/fields/__init__.py:161
-#: db/models/fields/__init__.py:322
-#: db/models/fields/__init__.py:754
-#: db/models/fields/__init__.py:765
-#: django/db/models/fields/__init__.py:161
-#: django/db/models/fields/__init__.py:322
-#: django/db/models/fields/__init__.py:754
-#: django/db/models/fields/__init__.py:765
-#: django/newforms/fields.py:45
-#: django/oldforms/__init__.py:374
-#: newforms/fields.py:45
-#: oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Това поле е задължително."
-
-#: db/models/fields/__init__.py:422
-#: django/db/models/fields/__init__.py:422
-msgid "This value must be an integer."
-msgstr "Тази стойност трябва да бъде цяло число"
-
-#: db/models/fields/__init__.py:461
-#: django/db/models/fields/__init__.py:461
-msgid "This value must be either True or False."
-msgstr "Тази стойност трябва да бъде True или False."
-
-#: db/models/fields/__init__.py:485
-#: django/db/models/fields/__init__.py:485
-msgid "This field cannot be null."
-msgstr "Това поле не може да има празна стойност."
-
-#: db/models/fields/__init__.py:663
-#: django/db/models/fields/__init__.py:663
-msgid "This value must be a decimal number."
-msgstr "Тази стойност трябва да бъде число с плаваща запетая."
-
-#: db/models/fields/__init__.py:774
-#: django/db/models/fields/__init__.py:774
-msgid "Enter a valid filename."
-msgstr "Въведете валидно име на файл."
-
-#: db/models/fields/__init__.py:945
-#: django/db/models/fields/__init__.py:945
-msgid "This value must be either None, True or False."
-msgstr "Тази стойност трябва да бъде None, True, или False."
-
-#: db/models/fields/related.py:55
-#: django/db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Въведете валиден %s."
-
-#: db/models/fields/related.py:658
-#: django/db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr "Множество ID-та се разделят с запетайки"
-
-#: db/models/fields/related.py:660
-#: django/db/models/fields/related.py:660
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Задръжте натиснат клавиша \"Control\" (или \"Command\" на Mac-а) за да направите повече от един избор.  "
-
-#: db/models/fields/related.py:707
-#: django/db/models/fields/related.py:707
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid.Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr "Въведете валидни %(self)s ID-та. Стойността %(value)r не е валидна."
-
-#: django/newforms/fields.py:46
-#: newforms/fields.py:46
-msgid "Enter a valid value."
-msgstr "Въведете валидна стойност.  "
-
-#: django/newforms/fields.py:123
-#: newforms/fields.py:123
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Уверете се, че стойността съдържа максимално %(max)d символа (в момента %(length)d)."
-
-#: django/newforms/fields.py:124
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Уверете се, че тази стойност съдържа поне %(min)d символа (в момента %(length)d)."
-
-#: django/newforms/fields.py:152
-#: django/newforms/fields.py:181
-#: django/newforms/fields.py:210
-#: newforms/fields.py:152
-#: newforms/fields.py:181
-#: newforms/fields.py:210
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Тази стойност трябва да е по-малка или равна на %s.  "
-
-#: django/newforms/fields.py:153
-#: django/newforms/fields.py:182
-#: django/newforms/fields.py:211
-#: newforms/fields.py:153
-#: newforms/fields.py:182
-#: newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Тази стойност трябва да е по-голяма или равна на %s."
-
-#: django/newforms/fields.py:180
-#: django/newforms/fields.py:209
-#: newforms/fields.py:180
-#: newforms/fields.py:209
-msgid "Enter a number."
-msgstr "Въведечисло."
-
-#: django/newforms/fields.py:212
-#: newforms/fields.py:212
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Уверете си че не сте въвели повече от %s цифри."
-
-#: django/newforms/fields.py:213
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Уверете се, че няма повече от %s знака след запетаята."
-
-#: django/newforms/fields.py:214
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Уверете се, че няма повече от %s цифри преди десетичната запетая."
-
-#: django/newforms/fields.py:262
-#: django/newforms/fields.py:723
-#: newforms/fields.py:262
-#: newforms/fields.py:723
-msgid "Enter a valid date."
-msgstr "Въведете валидна дата.  "
-
-#: django/newforms/fields.py:295
-#: django/newforms/fields.py:724
-#: newforms/fields.py:295
-#: newforms/fields.py:724
-msgid "Enter a valid time."
-msgstr "Въведете валиден час."
-
-#: django/newforms/fields.py:334
-#: newforms/fields.py:334
-msgid "Enter a valid date/time."
-msgstr "Въведете валидна дата / час.  "
-
-#: django/newforms/fields.py:433
-#: newforms/fields.py:433
-msgid "No file was submitted."
-msgstr "Няма изпратен фаил."
-
-#: django/newforms/fields.py:434
-#: django/oldforms/__init__.py:689
-#: newforms/fields.py:434
-#: oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Каченият файл е празен.  "
-
-#: django/newforms/fields.py:496
-#: newforms/fields.py:496
-msgid "Enter a valid URL."
-msgstr "Въведете валиден URL.  "
-
-#: django/newforms/fields.py:497
-#: newforms/fields.py:497
-msgid "This URL appears to be a broken link."
-msgstr "Този URL май е счупен линк.  "
-
-#: django/newforms/fields.py:559
-#: django/newforms/models.py:300
-#: newforms/fields.py:559
-#: newforms/models.py:300
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Направете валиден избор.  Този не е един от възможните избори.  "
-
-#: django/newforms/fields.py:598
-#: newforms/fields.py:598
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Направете валиден избор. %(value)s не е един от възможните избори."
-
-#: django/newforms/fields.py:599
-#: django/newforms/fields.py:661
-#: django/newforms/models.py:360
-#: newforms/fields.py:599
-#: newforms/fields.py:661
-#: newforms/models.py:360
-msgid "Enter a list of values."
-msgstr "Въведете списък от стойности"
-
-#: django/newforms/fields.py:752
-#: newforms/fields.py:752
-msgid "Enter a valid IPv4 address."
-msgstr "Въведете валиден IPv4 адрес."
-
-#: django/newforms/models.py:361
-#: newforms/models.py:361
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Направете валиден избор.  %s не е един от възможните избори.  "
-
-#: django/oldforms/__init__.py:409
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgstr "Въведеният текст не трябва да надвишава %s символа."
-
-#: django/oldforms/__init__.py:414
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Тук не се допускат нови редове."
-
-#: django/oldforms/__init__.py:512
-#: django/oldforms/__init__.py:586
-#: django/oldforms/__init__.py:625
-#: oldforms/__init__.py:512
-#: oldforms/__init__.py:586
-#: oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Направете валиден избор; '%(data)s' не е сред %(choices)s."
-
-#: django/oldforms/__init__.py:745
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Въведете цяло число между -32768 и 32767."
-
-#: django/oldforms/__init__.py:755
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Въведете положително число.  "
-
-#: django/oldforms/__init__.py:765
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Въведете цяло число между 0 и 32767."
-
-#: django/template/defaultfilters.py:695
-#: template/defaultfilters.py:691
-msgid "yes,no,maybe"
-msgstr "да,не,може-би"
-
-#: django/template/defaultfilters.py:726
-#: template/defaultfilters.py:722
-#, python-format
-msgid "%(size)d byte"
-msgstr "%(size)d байт"
-
-#: django/template/defaultfilters.py:728
-#: template/defaultfilters.py:724
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f КБ"
-
-#: django/template/defaultfilters.py:730
-#: template/defaultfilters.py:726
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f МБ"
-
-#: django/template/defaultfilters.py:731
-#: template/defaultfilters.py:727
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f ГБ"
-
-#: django/utils/dateformat.py:41
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: django/utils/dateformat.py:42
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: django/utils/dateformat.py:47
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: django/utils/dateformat.py:48
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: django/utils/dateformat.py:97
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "полунощ"
-
-#: django/utils/dateformat.py:99
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "обяд"
-
-#: django/utils/dates.py:6
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "понеделник"
-
-#: django/utils/dates.py:6
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "вторник"
-
-#: django/utils/dates.py:6
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "сряда"
-
-#: django/utils/dates.py:6
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "четвъртък"
-
-#: django/utils/dates.py:6
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "петък"
-
-#: django/utils/dates.py:7
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "събота"
-
-#: django/utils/dates.py:7
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "неделя"
-
-#: django/utils/dates.py:10
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Пон"
-
-#: django/utils/dates.py:10
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Вто"
-
-#: django/utils/dates.py:10
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Сря"
-
-#: django/utils/dates.py:10
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Чет"
-
-#: django/utils/dates.py:10
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Пет"
-
-#: django/utils/dates.py:11
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Съб"
-
-#: django/utils/dates.py:11
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Нед"
-
-#: django/utils/dates.py:18
-#: utils/dates.py:18
-msgid "January"
-msgstr "Януари"
-
-#: django/utils/dates.py:18
-#: utils/dates.py:18
-msgid "February"
-msgstr "Февруари"
-
-#: django/utils/dates.py:18
-#: django/utils/dates.py:31
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "March"
-msgstr "Март"
-
-#: django/utils/dates.py:18
-#: django/utils/dates.py:31
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "April"
-msgstr "Април"
-
-#: django/utils/dates.py:18
-#: django/utils/dates.py:31
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "May"
-msgstr "Май"
-
-#: django/utils/dates.py:18
-#: django/utils/dates.py:31
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "June"
-msgstr "Юни"
-
-#: django/utils/dates.py:19
-#: django/utils/dates.py:31
-#: utils/dates.py:19
-#: utils/dates.py:31
-msgid "July"
-msgstr "Юли"
-
-#: django/utils/dates.py:19
-#: utils/dates.py:19
-msgid "August"
-msgstr "Август"
-
-#: django/utils/dates.py:19
-#: utils/dates.py:19
-msgid "September"
-msgstr "Септември"
-
-#: django/utils/dates.py:19
-#: utils/dates.py:19
-msgid "October"
-msgstr "Октомври"
-
-#: django/utils/dates.py:19
-#: utils/dates.py:19
-msgid "November"
-msgstr "Ноември"
-
-#: django/utils/dates.py:20
-#: utils/dates.py:20
-msgid "December"
-msgstr "Декември"
-
-#: django/utils/dates.py:23
-#: utils/dates.py:23
-msgid "jan"
-msgstr "яну"
-
-#: django/utils/dates.py:23
-#: utils/dates.py:23
-msgid "feb"
-msgstr "фев"
-
-#: django/utils/dates.py:23
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар"
-
-#: django/utils/dates.py:23
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр"
-
-#: django/utils/dates.py:23
-#: utils/dates.py:23
-msgid "may"
-msgstr "май"
-
-#: django/utils/dates.py:23
-#: utils/dates.py:23
-msgid "jun"
-msgstr "юни"
-
-#: django/utils/dates.py:24
-#: utils/dates.py:24
-msgid "jul"
-msgstr "юли"
-
-#: django/utils/dates.py:24
-#: utils/dates.py:24
-msgid "aug"
-msgstr "авг"
-
-#: django/utils/dates.py:24
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сеп"
-
-#: django/utils/dates.py:24
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт"
-
-#: django/utils/dates.py:24
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ное"
-
-#: django/utils/dates.py:24
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дек"
-
-#: django/utils/dates.py:31
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Яну."
-
-#: django/utils/dates.py:31
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Фев."
-
-#: django/utils/dates.py:32
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Авг."
-
-#: django/utils/dates.py:32
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Септ."
-
-#: django/utils/dates.py:32
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Окт."
-
-#: django/utils/dates.py:32
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Ное."
-
-#: django/utils/dates.py:32
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Дек."
-
-#: django/utils/text.py:127
-#: utils/text.py:127
-msgid "or"
-msgstr "или"
-
-#: django/utils/timesince.py:21
-#: utils/timesince.py:21
-msgid "year"
-msgstr "година"
-
-#: django/utils/timesince.py:22
-#: utils/timesince.py:22
-msgid "month"
-msgstr "месец"
-
-#: django/utils/timesince.py:23
-#: utils/timesince.py:23
-msgid "week"
-msgstr "седмица"
-
-#: django/utils/timesince.py:24
-#: utils/timesince.py:24
-msgid "day"
-msgstr "ден"
-
-#: django/utils/timesince.py:25
-#: utils/timesince.py:25
-msgid "hour"
-msgstr "час"
-
-#: django/utils/timesince.py:26
-#: utils/timesince.py:26
-msgid "minute"
-msgstr "минута"
-
-#: django/utils/timesince.py:46
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "минути"
-
-#: django/utils/timesince.py:51
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: django/utils/timesince.py:57
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: django/utils/translation/trans_real.py:404
-#: utils/translation/trans_real.py:404
-msgid "DATE_FORMAT"
-msgstr "j N, Y"
-
-#: django/utils/translation/trans_real.py:405
-#: utils/translation/trans_real.py:405
-msgid "DATETIME_FORMAT"
-msgstr "j N, Y, P"
-
-#: django/utils/translation/trans_real.py:406
-#: utils/translation/trans_real.py:406
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: django/utils/translation/trans_real.py:422
-#: utils/translation/trans_real.py:422
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: django/utils/translation/trans_real.py:423
-#: utils/translation/trans_real.py:423
-msgid "MONTH_DAY_FORMAT"
-msgstr "j F"
-
-#: django/views/generic/create_update.py:43
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Обектът %(verbose_name)s бе успешно създаден.  "
-
-#: django/views/generic/create_update.py:117
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Обектът %(verbose_name)s бе успешно актуализиран."
-
-#: django/views/generic/create_update.py:184
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Обектът %(verbose_name)s бе затрит."
-
-#: tests/regressiontests/i18n/models.py:5
-msgid "Anything"
-msgstr "Нещо"
-
-#: tests/regressiontests/views/tests/i18n.py:26
-msgid "this is to be translated"
-msgstr "това трябва да се преведе"
-
-#~ msgid ""
-#~ "Enter a postcode. A space is required between the two postcode parts."
-#~ msgstr ""
-#~ "Въведете пощенски код.  Между двете части на пощенския код трябва да има "
-#~ "разстояние.  "
-
diff --git a/webapp/django/conf/locale/bg/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/bg/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index dba4555..0000000
--- a/webapp/django/conf/locale/bg/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/bg/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/bg/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 9f5f197..0000000
--- a/webapp/django/conf/locale/bg/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,106 +0,0 @@
-# translation of djangojs.po to Bulgarian
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2007-05-12 17:51+0300\n"
-"Last-Translator: Jordan Dimov <s3x3y1@gmail.com>\n"
-"Language-Team: Bulgarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Налични %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Избери всички"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Добави"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Премахни"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Избрахме %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Направете своя избор и щракнете "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Изчисти всички"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Януари Февруари Март Април Май Юни Юли Август Септември Октомври Ноември Декември"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Неделя Понеделник Вторник Сряда Четвъртък Петък Събота"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "Н П В С Ч П С"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Сега"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Часовник"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Избери време"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Полунощ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "По обяд"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Отказ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Днес"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Календар"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Вчера"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Утре"
-
diff --git a/webapp/django/conf/locale/bn/LC_MESSAGES/django.mo b/webapp/django/conf/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index b4fdb8e..0000000
--- a/webapp/django/conf/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/bn/LC_MESSAGES/django.po b/webapp/django/conf/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 0a23ba7..0000000
--- a/webapp/django/conf/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1993 +0,0 @@
-# django.po -- Bengali (bn) translation of Django core
-# Copyright (C) 2005 Django Authors
-# This file is distributed under the same license as the Django package.
-# Baishampayan Ghose <b.ghose@gnu.org.in>, 2005.
-# 
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:12+0200\n"
-"PO-Revision-Date: 2005-11-12 20:05+0530\n"
-"Last-Translator: Baishampayan Ghose <b.ghose@gnu.org.in>\n"
-"Language-Team: Ankur Bangla <core@bengalinux.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-#, fuzzy
-msgid "object ID"
-msgstr "বস্তু আই.ডি."
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr ""
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-#, fuzzy
-msgid "comment"
-msgstr "অভ্যন্তরস্থ বস্তু"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr ""
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr ""
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr ""
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr ""
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr ""
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr ""
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr ""
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr ""
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr ""
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr ""
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr ""
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
-#, fuzzy
-msgid "IP address"
-msgstr "ই-মেল ঠিকানা"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr ""
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: contrib/comments/models.py:91
-#, fuzzy
-msgid "comments"
-msgstr "অভ্যন্তরস্থ বস্তু"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-#, fuzzy
-msgid "Content object"
-msgstr "অভ্যন্তরস্থ বস্তু ধরন"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: contrib/comments/models.py:168
-#, fuzzy
-msgid "person's name"
-msgstr "প্রথম নাম"
-
-#: contrib/comments/models.py:171
-#, fuzzy
-msgid "ip address"
-msgstr "ই-মেল ঠিকানা"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr ""
-
-#: contrib/comments/models.py:176
-#, fuzzy
-msgid "free comment"
-msgstr "মন্তব্য সক্রিয় করুন"
-
-#: contrib/comments/models.py:177
-#, fuzzy
-msgid "free comments"
-msgstr "মন্তব্য সক্রিয় করুন"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr ""
-
-#: contrib/comments/models.py:234
-#, fuzzy
-msgid "score date"
-msgstr "শেষ তারিখ"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr ""
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr ""
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr ""
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/models.py:265
-#, fuzzy
-msgid "flag date"
-msgstr "চ্যাপ্টা পাতা"
-
-#: contrib/comments/models.py:268
-#, fuzzy
-msgid "user flag"
-msgstr "ব্যবহারকারী"
-
-#: contrib/comments/models.py:269
-#, fuzzy
-msgid "user flags"
-msgstr "ব্যবহারকারী"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr ""
-
-#: contrib/comments/models.py:278
-#, fuzzy
-msgid "deletion date"
-msgstr "অধিবেশন তথ্য"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr ""
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr ""
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr ""
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr ""
-
-#: contrib/comments/views/karma.py:23
-#, fuzzy
-msgid "Invalid comment ID"
-msgstr "মন্তব্য সক্রিয় করুন"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr ""
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr ""
-
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr ""
-
-#: contrib/comments/views/comments.py:197
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "ব্যবহারকারীর নাম:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "পাসওয়ার্ড:"
-
-#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
-msgid "Forgotten your password?"
-msgstr "আমার পাসওয়ার্ড পরিবর্তন করুন"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "বাইরে যান"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
-msgid "Comment:"
-msgstr "মন্তব্য সক্রিয় করুন"
-
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
-msgid "Preview comment"
-msgstr "মন্তব্য সক্রিয় করুন"
-
-#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
-msgid "Your name:"
-msgstr "ব্যবহারকারীর নাম"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-msgid "All"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:110
-#, fuzzy
-msgid "Today"
-msgstr "সোমবার"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:143
-#, fuzzy
-msgid "No"
-msgstr "নভে."
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr ""
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "কাজের সময়"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "বস্তু আই.ডি."
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "বস্তু repr"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "কাজের ফ্ল্যাগ"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "বার্তা পরিবর্তন"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "কার্যবিবরণী এন্ট্রি"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "কার্যবিবরণী এন্ট্রি সমুহ"
-
-#: contrib/admin/templatetags/admin_list.py:228
-msgid "All dates"
-msgstr ""
-
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:23
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "প্রবেশ করুন"
-
-#: contrib/admin/views/decorators.py:61
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:68
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:82
-msgid "Usernames cannot contain the '@' character."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:84
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-
-#: contrib/admin/views/main.py:226
-#, fuzzy
-msgid "Site administration"
-msgstr "জ্যাঙ্গো পরিচালনা"
-
-#: contrib/admin/views/main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
-msgid "You may edit it again below."
-msgstr ""
-
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
-#, python-format
-msgid "You may add another %s below."
-msgstr ""
-
-#: contrib/admin/views/main.py:290
-#, fuzzy, python-format
-msgid "Add %s"
-msgstr "যোগ করুন"
-
-#: contrib/admin/views/main.py:336
-#, python-format
-msgid "Added %s."
-msgstr ""
-
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr ""
-
-#: contrib/admin/views/main.py:338
-#, fuzzy, python-format
-msgid "Changed %s."
-msgstr "পরিবর্তন"
-
-#: contrib/admin/views/main.py:340
-#, python-format
-msgid "Deleted %s."
-msgstr ""
-
-#: contrib/admin/views/main.py:343
-msgid "No fields changed."
-msgstr ""
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: contrib/admin/views/main.py:392
-#, fuzzy, python-format
-msgid "Change %s"
-msgstr "পরিবর্তন"
-
-#: contrib/admin/views/main.py:470
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-
-#: contrib/admin/views/main.py:475
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
-
-#: contrib/admin/views/main.py:508
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:511
-msgid "Are you sure?"
-msgstr ""
-
-#: contrib/admin/views/main.py:533
-#, fuzzy, python-format
-msgid "Change history: %s"
-msgstr "পাসওয়ার্ড পরিবর্তন করুন"
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s"
-msgstr ""
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s to change"
-msgstr ""
-
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
-msgid "Integer"
-msgstr ""
-
-#: contrib/admin/views/doc.py:278
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:280
-msgid "Comma-separated integers"
-msgstr ""
-
-#: contrib/admin/views/doc.py:281
-#, fuzzy
-msgid "Date (without time)"
-msgstr "কাজের সময়"
-
-#: contrib/admin/views/doc.py:282
-#, fuzzy
-msgid "Date (with time)"
-msgstr "তারিখ/সময়"
-
-#: contrib/admin/views/doc.py:283
-#, fuzzy
-msgid "E-mail address"
-msgstr "ই-মেল ঠিকানা:"
-
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
-msgid "File path"
-msgstr ""
-
-#: contrib/admin/views/doc.py:285
-#, fuzzy
-msgid "Decimal number"
-msgstr "ডিসেম্বর"
-
-#: contrib/admin/views/doc.py:291
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:292
-msgid "Relation to parent model"
-msgstr ""
-
-#: contrib/admin/views/doc.py:293
-#, fuzzy
-msgid "Phone number"
-msgstr "একটি গোটা সংখ্যা ঢোকান।"
-
-#: contrib/admin/views/doc.py:298
-msgid "Text"
-msgstr ""
-
-#: contrib/admin/views/doc.py:299
-msgid "Time"
-msgstr ""
-
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "ইউ.আর.এল"
-
-#: contrib/admin/views/doc.py:301
-msgid "U.S. state (two uppercase letters)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:302
-msgid "XML text"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "পাসওয়ার্ড পরিবর্তন করুন"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "বাড়ি"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "ইতিহাস"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "তারিখ/সময়"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "ব্যবহারকারী"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "কাজ"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"এই বস্তুটি একটি পরিবর্তন ইতিহাস নেই। এইটি এই অ্যাডমিন স্থান দ্বারা সম্ভবত যোগ করা "
-"হয় নি।"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "জ্যাঙ্গো স্থান অ্যাডমিন"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "জ্যাঙ্গো পরিচালনা"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "সার্ভার ত্রুটি"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "সার্ভার ত্রুটি (৫০০)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "সার্ভার ত্রুটি<em>(৫০০)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"একটি ত্রুটি আছে। এইটি স্থান পরিচালককে ই-মেল দ্বারা প্রতিবেদন করা হয়েছে এবং খুব "
-"তাড়াতাড়ি মেরামত করা হবে। আপনার ধৈর্য্যের জন্য ধন্যবাদ।"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "পাতা খুঁজে পাওয়া গেল না"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "আমরা দুঃখিত, কিন্তু আবেদনকৃত পাতা খুঁজে পাওয়া গেল না।"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "যোগ করুন"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "পরিবর্তন"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "আপনার কোন কিছু সম্পাদনা করতে অনুমতি নেই।"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "সাম্প্রতিক কাজ"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "আমার কাজ"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "কিছুই পাওয়া যাচ্ছে না"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, fuzzy, python-format
-msgid "Add %(name)s"
-msgstr "যোগ করুন"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "আপনি কি <a href=\"/password_reset/\">আপনার পাসওয়ার্ড ভুলে গেছেন</a>?"
-
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "স্বাগত,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr ""
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(object)s' would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"%(object_name)s '%(object)s' মুছে ফেললে তা সম্পর্কিত বস্তুও মুছে ফেলা হবে কিন্তু "
-"আপনার অ্যাকাউন্টে বস্তুর নিম্নলিখিত ধরন মুছে ফেলার অনুমতি নেই:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
-"the following related items will be deleted:"
-msgstr ""
-"%(object_name)s\" %(object)s\" মুছে ফেলতে আপনি কি নিশ্চিত? নিম্নলিখিত সম্পর্কিত "
-"বস্তুর সব মুছে ফেলা হবে:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "হ্যাঁ, আমি নিশ্চিত"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr ""
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:7
-#, fuzzy
-msgid "Save"
-msgstr "সক্রিয়"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "পাসওয়ার্ড পরিবর্তন"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "পাসওয়ার্ড পরিবর্তন সফল"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "আপনার পাসওয়ার্ড পরিবর্তন করা হয়েছিল।"
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "পাসওয়ার্ড রিসেট"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"আপনি কি আপনার পাসওয়ার্ড ভুলে গেছেন? আপনার ই-মেল ঠিকানা নিচে দিন এবং আমরা আপনার "
-"পাসওয়ার্ড রিসেট করে এবং আপনাকে নতুন এক পাসওয়ার্ড ই-মেল করে দেব।"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "ই-মেল ঠিকানা:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "আমার পাসওয়ার্ড রিসেট করুন"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "এই ওয়েব স্থানে আপনার কিছু সময় খরচ করার জন্য ধন্যবাদ।"
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "আবার প্রবেশ করুন"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "পাসওয়ার্ড রিসেট সফল"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"আমরা আপনাকে একটি নতুন পাসওয়ার্ড আপনার দেওয়া ই-মেল ঠিকানায় পাঠিয়ে দিয়েছি। আপনার "
-"তা খুব তাড়াতাড়ি পাওয়া উচিত।"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"দয়া করে আপনার পুরনো পাসওয়ার্ড ঢোকান, নিরাপত্তার জন্য, এবংএর জন্য তারপর আপনার নতুন "
-"পাসওয়ার্ড দুবার ঢোকান যাতে আমরা সঠিকভাবেতে তার বৈধতা পরীক্ষণ করতে পারি।"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "পুরনো পাসওয়ার্ড:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "নতুন পাসওয়ার্ড:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "পাসওয়ার্ড দৃঢ়তরভাবে প্রতিপন্ন করুন:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "আমার পাসওয়ার্ড পরিবর্তন করুন"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "আপনি এই ই-মেলটি পাচ্ছেন কারণ আপনি একটি পাসওয়ার্ড রিসেট অনুরোধ করেছেন"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "%(site_name)s আপনার ব্যবহারকারী অ্যাকাউন্টের জন্য"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "আপনার নতুন পাসওয়ার্ড: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "এই পাতাটিতে গিয়ে এই পাসওয়ার্ডটি পরিবর্তন করতে মুক্ত অনুভব করুন:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "আপনার ব্যবহারকারীর নাম, যদি আপনি ভুলে গিয়ে থাকেন:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "আমাদের স্থান ব্যবহার করার জন্য ধন্যবাদ!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s দল"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-#, fuzzy
-msgid "Show object ID"
-msgstr "বস্তু আই.ডি."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr ""
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:3
-#, fuzzy
-msgid "Change:"
-msgstr "পরিবর্তন"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "রিডাইরেক্ট করা"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"এইটি একটি পরম পাথ হওয়া উচিত, ক্ষেত্র নাম বাদ দিয়ে। উদাহরণ: '/events/search / '।"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "রিডাইরেক্ট কর"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"এইটি হয় একটি পরম পাথ হতে পারে  (যেমন উপরে) অথবা 'http:// এর সঙ্গে শুরু হওয়া "
-"একটি পূর্ণ ইউ.আর.এল ।"
-
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "রিডাইরেক্ট"
-
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "রিডাইরেক্ট করে"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"উদাহরণ: '/about/contact / '। প্রধান এবং অনুসরণ করা স্ল্যাশ যেন নিশ্চিত ভাবে থাকে।"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "শিরোনাম"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "অভ্যন্তরস্থ বস্তু"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "মন্তব্য সক্রিয় করুন"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "ছাঁদ নাম"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-"উদাহরণ: 'flatfiles/contact_page '। যদি এইটি দেওয়া না থাকে তাহলে সিস্টেম "
-"'flatfiles/default ব্যবহার করবে।"
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "নিবন্ধন প্রয়োজনীয়"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"যদি এইটি টিক্ করা থাকে তাহলে শুধুমাত্র প্রবেশ করা ব্যবহারকারী পাতা দেখতে সক্ষম হবে।"
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "চ্যাপ্টা পাতা"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "চ্যাপ্টা পাতাগুলো"
-
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "নাম"
-
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr "ছদ্বনাম"
-
-#: contrib/auth/models.py:17
-#, fuzzy
-msgid "permission"
-msgstr "অনুমতি"
-
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
-msgid "permissions"
-msgstr "অনুমতি"
-
-#: contrib/auth/models.py:29
-#, fuzzy
-msgid "group"
-msgstr "গ্রুপ"
-
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
-msgid "groups"
-msgstr "দল"
-
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "ব্যবহারকারীর নাম"
-
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "প্রথম নাম"
-
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "শেষ নাম"
-
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "ই-মেল ঠিকানা"
-
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "পাসওয়ার্ড"
-
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr ""
-
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr " অবস্থা"
-
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "নিশ্চয় করে যে ব্যবহারকারী এই অ্যাডমিন স্থানে প্রবেশ করতে পারে কিনা।"
-
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "সক্রিয়"
-
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "সুপারইউজার অবস্থা"
-
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "শেষ প্রবেশ"
-
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "যোগাদান করার তারিখ "
-
-#: contrib/auth/models.py:66
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"নিজ হাতে বরাদ্দকৃতে অনুমতি ছাড়া এই ব্যবহারকারীটি যে সব গ্রুপে আছে তার অনুমতিও পাবে।"
-
-#: contrib/auth/models.py:67
-#, fuzzy
-msgid "user permissions"
-msgstr "অনুমতি"
-
-#: contrib/auth/models.py:70
-#, fuzzy
-msgid "user"
-msgstr "ব্যবহারকারী"
-
-#: contrib/auth/models.py:71
-#, fuzzy
-msgid "users"
-msgstr "ব্যবহারকারী"
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "ব্যক্তিগত তথ্য"
-
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "অনুমতি"
-
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "গুরুত্বপূর্ণ তারিখ"
-
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "দল"
-
-#: contrib/auth/models.py:219
-#, fuzzy
-msgid "message"
-msgstr "বার্তা"
-
-#: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-
-#: contrib/contenttypes/models.py:25
-#, fuzzy
-msgid "python model class name"
-msgstr "পাইথন মডিউলের নাম"
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "অভ্যন্তরস্থ বস্তু ধরন"
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "অভ্যন্তরস্থ বস্তু ধরন"
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "অধিবেশন চাবি"
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "অধিবেশন তথ্য"
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr "শেষ তারিখ"
-
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "অধিবেশন"
-
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "সেশন"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "ক্ষেত্র নাম"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "প্রদর্শিত নাম"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "স্থান"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "স্থান"
-
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "সোমবার"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "মঙ্গলবার"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "বুধবার"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "বৃহস্পতিবার"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "শুক্রবার"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "শনিবার"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "রবিবার"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "জানুয়ারী"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "ফেব্রুয়ারী"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "মার্চ"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "এপ্রিল"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "মে"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "জুন"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "জুলাই"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "অগাস্ট"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "সেপ্টেম্বর"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "অক্টোবর"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "নভেম্বর"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "ডিসেম্বর"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:19
-#, fuzzy
-msgid "may"
-msgstr "মে"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "জানু."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "ফেব্রু"
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "অগা."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "সেপ্টে."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "অক্টো."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "নভে."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "ডিসে."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:15
-#, fuzzy
-msgid "day"
-msgid_plural "days"
-msgstr[0] "মে"
-msgstr[1] "মে"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:17
-#, fuzzy
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "স্থান"
-msgstr[1] "স্থান"
-
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "বাংলা"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "চেক"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "ওয়েল্শ"
-
-#: conf/global_settings.py:40
-#, fuzzy
-msgid "Danish"
-msgstr "স্প্যানিশ"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "জার্মান"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "ইংরেজী"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "স্প্যানিশ"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "ফরাসী"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "গ্যালিসিয়"
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr ""
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "ইতালিয়"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "নরওয়েজিয়"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "ব্রাজিলীয়"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "রোমানীয়"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "রুশ"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "স্লোভাক"
-
-#: conf/global_settings.py:58
-#, fuzzy
-msgid "Slovenian"
-msgstr "স্লোভাক"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "সার্বিয়ান"
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr ""
-
-#: conf/global_settings.py:61
-#, fuzzy
-msgid "Ukrainian"
-msgstr "ব্রাজিলীয়"
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "সরলীকৃত চীনা"
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr ""
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "এই মানটি শুধু মাত্র অক্ষর, অংক, এবং আন্ডারস্কোর (_) হতে পারবে।"
-
-#: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "এই মানটি শুধু মাত্র অক্ষর, অংক, আন্ডারস্কোর (_) এবং স্ল্যাশ হতে পারবে।"
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "বড় হাতের অক্ষর এখানে ঢোকাতে পারবেন না।"
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "ছোটহাতের অক্ষর এখানে ঢোকাতে পারবেন না।"
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "কমা দ্বারা আলাদা করে শুধু মাত্র অংক ঢোকান।"
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "কমা দ্বারা আলাদা করে বৈধ ই-মেল ঠিকানা ঢোকান।"
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "দয়া করে একটি বৈধ IP ঠিকানা ঢোকান।"
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "ফাঁকা মান এখানে ঢোকাতে পারবেন না।"
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr "অংক বিহীন অক্ষর এখানে ঢোকাতে পারবেন না।"
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr "এই মানটি শুধু মাত্র অংকের দ্বারা গঠিত  হতে পারে না।"
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "একটি গোটা সংখ্যা ঢোকান।"
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "এখানে শুধু মাত্র অক্ষর ঢোকাতে পারবেন ।"
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "YYYY-MM-DD ফরম্যাটে একটি বৈধ তারিখ ঢোকান।"
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "HH:MM ফরম্যাটে একটি বৈধ সময় ঢোকান।"
-
-#: core/validators.py:132 db/models/fields/__init__.py:468
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "YYYY-MM-DD.HH:MM ফরম্যাটে একটি বৈধ তারিখ/সময় ঢোকান।"
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "একটি বৈধ ই-মেল ঠিকানা ঢোকান।"
-
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"একটি বৈধ চিত্র আপলোড করুন। যে ফাইল আপনি আপলোড করলেন তা হয় একটি চিত্র নয় অথবা "
-"একটি খারাপ চিত্র।"
-
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "%s ইউ.আর.এল-এ একটি বৈধ চিত্র নেই।"
-
-#: core/validators.py:159
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "ফোন নম্বর XXX-XXX-XXXX ফরম্যাটে অবশ্যই হতে হবে। \"%s\" অবৈধ।"
-
-#: core/validators.py:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "%s ইউ.আর.এল-এ একটি বৈধ QuickTime ভিডিও পাওয়া গেল না।"
-
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr "একটি বৈধ ইউ.আর.এল জরুরি।"
-
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"বৈধ এইচটিএমএল প্রয়োজনীয়। ত্রুটিগুল হল:\n"
-"%s"
-
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "খারাপভাবে গঠিত এক্সএমএল: %s"
-
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "অবৈধ ইউ.আর.এল: %s"
-
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "ইউ.আর.এল %s একটি ভাঙা সংযোগ।"
-
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "একটি বৈধ U S. রাজ্য abbreviation ঢোকান।"
-
-#: core/validators.py:229
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "মুখ সামলে! %s এখানে ব্যাবহার করতে পারবেন না।"
-msgstr[1] "মুখ সামলে! %s এখানে ব্যাবহার করতে পারবেন না।"
-
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "এই ক্ষেত্রটি '%s' ক্ষেত্রের সঙ্গে অবশ্যই মিলতে হবে।"
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr "দয়া করে অন্তত এক ক্ষেত্রেতে কিছু জিনিষ ঢোকান।"
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr "দয়া করে উভয় ক্ষেত্রে ঢোকান অথবা তাদেরকে উভয় ফাঁকা ছেড়ে চলে যান।"
-
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "এই ক্ষেত্রেটি অবশ্যই দেওয়া হবে যদি %(field)s %(value)s হয়"
-
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "এই ক্ষেত্রেটি অবশ্যই দেওয়া হবে যদি %(field)s %(value)s না হয়"
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr "নকল মান অনুমতি দেওয়া হল না।"
-
-#: core/validators.py:336
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "এই মানটি %sএর একটি গুন অবশ্যই হতে হবে।"
-
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr "দয়া করে একটি বৈধ দশমিক সংখ্যা ঢোকান।"
-
-#: core/validators.py:349
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "দয়া করে একটি বৈধ দশমিক সংখ্যা ঢোকান যার অক্ষরের সংখ্যা %s থেকে কম হবে।"
-msgstr[1] "দয়া করে একটি বৈধ দশমিক সংখ্যা ঢোকান যার অক্ষরের সংখ্যা %s থেকে কম হবে।"
-
-#: core/validators.py:352
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "দয়া করে একটি বৈধ দশমিক সংখ্যা ঢোকান যার দশমিক স্থান %s থেকে কম হবে।"
-msgstr[1] "দয়া করে একটি বৈধ দশমিক সংখ্যা ঢোকান যার দশমিক স্থান %s থেকে কম হবে।"
-
-#: core/validators.py:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "আাপনার আপলোড করা ফাইল যেন অন্তত %s বাইট বড় হয় তা নিশ্চিত করুন।"
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "আাপনার আপলোড করা ফাইল যেন %s বাইটের থেকে বড় না হয় তা নিশ্চিত করুন।"
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr "এই ক্ষেত্রের জন্য ফরম্যাটটি ভূল।"
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr "এই ক্ষেত্রেটি অবৈধ।"
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "%s থেকে কোন কিছু গ্রহন করতে পারলাম না।"
-
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"ইউ.আর.এল %(url)s অবৈধ Content-Type শিরোনাম নিয়ে '%(contenttype)s ফিরে আসল।"
-
-#: core/validators.py:462
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"দয়া করে লাইন %(line)s থেকে খোলা %(tag)s বন্ধ করুন। (\"%(start)s\"এর সঙ্গে লাইন "
-"আরম্ভ।)"
-
-#: core/validators.py:466
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"লাইন %(line)s এই প্রসঙ্গে কিছু শব্দ লেখার অনুমতি দেওয়া গেল না। (\"%(start)s\"এর "
-"সঙ্গে লাইন আরম্ভ।)"
-
-#: core/validators.py:471
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"লাইন %(line)s\"%(attr)s\"একটি অবৈধ বৈশিষ্ট্য। (\"%(start)s\"এর সঙ্গে লাইন আরম্ভ।)"
-
-#: core/validators.py:476
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-" %(line)s লাইনে \"<%(tag)s>\" একটি অবৈধ ট্যাগ। (\"%(start)s\"এর সঙ্গে লাইন "
-"আরম্ভ।)"
-
-#: core/validators.py:480
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"লাইন %(line)s একটি ট্যাগে এক অথবা আরও বেশি প্রয়োজনীয় বিশিষ্ট্যাবলী নেই। (\"%"
-"(start)s\"এর সঙ্গে লাইন আরম্ভ।)"
-
-#: core/validators.py:485
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"\"%(attr)s\"বৈশিষ্ট্যয় লাইন %(line)s একটি অবৈধ মান আছে । (\"%(start)s\"এর সঙ্গে "
-"লাইন আরম্ভ।)"
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
-#: forms/__init__.py:346
-#, fuzzy
-msgid "This field is required."
-msgstr "এই ক্ষেত্রেটি অবৈধ।"
-
-#: db/models/fields/__init__.py:337
-#, fuzzy
-msgid "This value must be an integer."
-msgstr "এই মানটি %sএর একটি গুন অবশ্যই হতে হবে।"
-
-#: db/models/fields/__init__.py:369
-#, fuzzy
-msgid "This value must be either True or False."
-msgstr "এই মানটি %sএর একটি গুন অবশ্যই হতে হবে।"
-
-#: db/models/fields/__init__.py:385
-#, fuzzy
-msgid "This field cannot be null."
-msgstr "এই ক্ষেত্রেটি অবৈধ।"
-
-#: db/models/fields/__init__.py:562
-#, fuzzy
-msgid "Enter a valid filename."
-msgstr "একটি বৈধ ই-মেল ঠিকানা ঢোকান।"
-
-#: db/models/fields/related.py:43
-#, fuzzy, python-format
-msgid "Please enter a valid %s."
-msgstr "দয়া করে একটি বৈধ IP ঠিকানা ঢোকান।"
-
-#: db/models/fields/related.py:579
-#, fuzzy
-msgid "Separate multiple IDs with commas."
-msgstr "একাধিক আই.ডি.কমার দ্বারা আলাদা করুন।"
-
-#: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"একের চেয়ে বেশি নির্বাচন করতে \"Control\" অথবা ম্যাক-এ \"Command\" চেপে ধরে "
-"রাখুন।"
-
-#: db/models/fields/related.py:625
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/__init__.py:380
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/__init__.py:385
-#, fuzzy
-msgid "Line breaks are not allowed here."
-msgstr "ছোটহাতের অক্ষর এখানে ঢোকাতে পারবেন না।"
-
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr ""
-
-#: forms/__init__.py:699
-#, fuzzy
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "একটি গোটা সংখ্যা ঢোকান।"
-
-#: forms/__init__.py:708
-#, fuzzy
-msgid "Enter a positive number."
-msgstr "একটি গোটা সংখ্যা ঢোকান।"
-
-#: forms/__init__.py:717
-#, fuzzy
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "একটি গোটা সংখ্যা ঢোকান।"
-
-#: template/defaultfilters.py:379
-msgid "yes,no,maybe"
-msgstr ""
-
-#, fuzzy
-#~ msgid "Comments"
-#~ msgstr "মন্তব্য সক্রিয় করুন"
-
-#~ msgid "label"
-#~ msgstr "লেবেল"
-
-#~ msgid "package"
-#~ msgstr "প্যাকেজ"
-
-#~ msgid "packages"
-#~ msgstr "প্যাকেজ"
-
-#, fuzzy
-#~ msgid "count"
-#~ msgstr "অভ্যন্তরস্থ বস্তু"
diff --git a/webapp/django/conf/locale/bn/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/bn/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index fae1fdc..0000000
--- a/webapp/django/conf/locale/bn/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/bn/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/bn/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 120d08d..0000000
--- a/webapp/django/conf/locale/bn/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 17:36+1000\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr ""
diff --git a/webapp/django/conf/locale/ca/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 1775e0a..0000000
--- a/webapp/django/conf/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ca/LC_MESSAGES/django.po b/webapp/django/conf/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 783fd99..0000000
--- a/webapp/django/conf/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4426 +0,0 @@
-# translation of django.po to
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-20 12:36+0200\n"
-"PO-Revision-Date: 2008-06-20 12:48+0200\n"
-"Last-Translator: Django Catalan Group <django-cat@googlegroups.com>\n"
-"Language-Team: Catalan <ca@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "aràbic"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengalí"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "búlgar"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "català"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "txec"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "galès"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "danès"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "alemany"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "grec"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "anglès"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "espanyol"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "estonià"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "castellà argentí"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "euskera"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "persa"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "finlandès"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "francès"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "irlandès"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "gallec"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "húngar"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "hebreu"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "croat"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islandès"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "italià"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "japonès"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "georgià"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "coreà"
-
-#: conf/global_settings.py:71
-msgid "khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "canès"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "letó"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "lituà"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "macedoni"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "holandès"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "norueg"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "polac"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portuguès"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "portuguès de brasil"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "rumanès"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "rús"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "eslovac"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "esloveni"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "serbi"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "suec"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tàmil"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "turc"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ucranià"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "xinès simplificat"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "xinès tradicional"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Per %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Tots"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Qualsevol data"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Avui"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Últims 7 dies"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Aquest mes"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Aquest any"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Si"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "No"
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Desconegut"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "moment de l'acció"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "id del objecte"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "'repr' de l'objecte"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "marca de l'acció"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "missatge del canvi"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "entrada del registre"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "entrades del registre"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "No s'ha pogut trobar la pàgina"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ho sentim, però no s'ha pogut trobar la pàgina sol·licitada"
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Inici"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Error del servidor <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ha ocorregut un error. S'ha informat als administradors del lloc per correu "
-"electrònic y hauria d'arreglar-se en breu. Gràcies per la vostra paciència."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Benvingut/da,"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentació"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Canviar contrasenya"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Finalitzar sessió"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Lloc administratiu de Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administració de Django"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Afegir"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "Històric"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Veure al lloc"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Si us plau, corregiu l'error mostrat a baix."
-msgstr[1] "Si us plau, corregiu els errors mostrats a baix."
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Ordre"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Ordre:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Afegir %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Eliminar"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació "
-"d'objectes relacionats, però el vostre compte no te permissos per a esborrar "
-"els tipus d'objecte següents:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Esteu segurs de voler esborrar els/les %(object_name)s \"%(escaped_object)s"
-"\"? S'esborraran els següents elements relacionats:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Si, estic segur"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Per %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtre"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Models disponibles a l'aplicació %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Modificar"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "No teniu permís per editar res."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Accions recents"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Les meves accions"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Cap disponible"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Alguna cosa està malament en la instal·lació de la vostra base de dades. "
-"Assegureu-vos de que s'han creat les taules, i de que la base de dades és "
-"llegible per l'usuari apropiat."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Usuari:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Contrasenya:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Iniciar sessió"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Usuari"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Acció"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "F j, Y, H:i "
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Aquest objecte no té historial de canvis. Probablement no va ser afegit "
-"utilitzant aquest lloc administratiu."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar tots"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Cercar"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 resultat"
-msgstr[1] "%(counter)s resultats"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s en total"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Desar com a nou"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Desar i afegir-ne un de nou"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Desar i continuar editant"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Desar"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primer, entreu un usuari i una contrasenya. Després podreu editar més "
-"opcions de l'usuari."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Usuari"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Contrasenya"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Contrasenya (de nou)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Introduïu una contrasenya per l'usuari <strong>%(username)s</strong>"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "'Bookmarklets'"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "'Bookmarklets' de documentació"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Per a instal·lar 'bookmarklets', arrosegueu l'enllaç a la "
-"seva barra de\n"
-"marcadors, o feu click amb el botó dret en l'enllaç i afegeixi'l als "
-"marcadors.\n"
-"Ara podeu escollir el 'bookmarklet' des de qualsevol pàgina del lloc.\n"
-"Observeu que alguns d'aquests 'bookmarklets' precisen que estigui veient\n"
-"el lloc des de un ordinador senyalat com a \"intern\" (parleu\n"
-"amb el vostre administrador de sistemes si no esteu segurs de la condició "
-"del vostre).</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Documentació d'aquesta pàgina"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Us porta des de qualsevol pàgina de la documentació a la vista que la genera."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Mostra el ID de l'objecte"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Mostra el 'content-type' (tipus de contingut) i el ID inequívoc de les "
-"pàgines que representen un únic objecte."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Editar aquest objecte (finestra actual)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"El porta a la pàgina d'administració de pàgines que representen un únic "
-"objecte."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Editar aquest objecte (nova finestra)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Com abans, però obre la pàgina d'administració en una nova finestra."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gràcies per destinar el vostre temps en el web durant el dia d'avui."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Iniciar sessió de nou"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Canvi de contrasenya"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Contrasenya canviada amb èxit"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "La seva contrasenya ha estat canviada."
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Si us plau, introduïu la vostra contrasenya antiga, per seguretat, i tot "
-"seguit introduïu la vostra contrasenya nova dues vegades per verificar que "
-"l'heu escrit correctament."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Contrasenya antiga:"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Contrasenya nova:"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Confirmar contrasenya:"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Canviar la meva clau:"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Restablir contrasenya"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Restabliment de contrasenya exitós"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Us hem enviat una contrasenya nova a l'adreça de correu electrònic que ens "
-"heu indicat. L'haurieu de rebre en breu."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Esteu rebent aquest missatge degut a que veu solicitar un restabliment de "
-"contrasenya."
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "del vostre compte d'usuari a %(site_name)s."
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "La vostra nova contrasenya és: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Sentiu-vos lliures de canviar-la en aquesta pàgina:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "El vostre nom d'usuari, en cas d'haver-lo oblidat:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Gràcies per fer us del nostre lloc!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "L'equip de %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Heu oblidat la vostra contrasenya? Introduïu la vostra adreça de correu "
-"electrònic i en crearem una de nova que us enviarem per correu."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Adreça de correu electrònic:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Restablir la meva contrasenya"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Actualment:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Totes les dates"
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "El/la %(name)s \"%(obj)s\".ha estat afegit/da amb èxit."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Podeu editar-lo de nou a baix."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Afegir usuari"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Contrasenya cambiada amb èxit"
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Canviar contrasenya: %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Si us plau, introduïu un nom d'usuari i contrasenya vàlids. Tingueu en "
-"compte que tots dos camps son sensibles a majúscules i minúscules."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Si us plau, identifiqueu-vos de nou doncs la vostra sessió ha expirat. No us "
-"preocupeu, el seu enviament està emmagatzemat."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Sembla ser que el vostre navegador no està configurat per acceptar "
-"'cookies' (galetes). Si us plau, habiliteu les 'cookies', recarregueu "
-"aquesta pàgina i proveu-ho de nou. "
-
-#: contrib/admin/views/decorators.py:89
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"La vostra adreça de correu no és el vostre nom d'usuari. Provi '%s' en tot "
-"cas."
-
-#: contrib/admin/views/decorators.py:93
-msgid "Usernames cannot contain the '@' character."
-msgstr "Els noms d'usuari no poden contenir el caracter '@'."
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "filtre:"
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "vista:"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "No s'ha pogut trobar l'aplicació %r"
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "El model %(name)r no s'ha trobat en l'aplicació %(label)r"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "l'objecte relacionat `%(label)s.%(type)s`"
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "objectes relacionats `%(label)s.%(name)s`"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "tots %s"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "nombre de %s"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Camps en objectes %s"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Enter"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Booleà (Verdader o Fals)"
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadena (de fins a %(max_length)s)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Enters separats per comes"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Data (sense hora)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Data (amb hora)"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "Adreça de correu electrònic"
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Ruta del fitxer"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Número amb punt de coma flotant"
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "Adreça IP"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleà (Verdader, Fals o 'None' (cap))"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Relació amb el model pare"
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Número de telèfon"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Text"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Hora"
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "Estat dels E.U.A. (dues lletres majúscules)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "Text XML"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no sembla ser un objecte 'urlpattern'"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Lloc administratiu"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Podeu afegir un altre %s a baix."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Afegir %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Afegit %s."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "i"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Modificat %s."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Eliminat %s."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Cap camp canviat."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "S'ha modificat amb èxit el/la %(name)s \"%(obj)s."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"S'ha afegit exitosament el/la %(name)s \"%(obj)s\". Pot editar-lo de nou "
-"abaix."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Un o més %(fieldname)s en %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Un o més %(fieldname)s en %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "El/la %(name)s \"%(obj)s\" ha estat eliminat amb èxit."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Esteu segurs?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Modificar històric: %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Seleccioneu %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccioneu %s per modificar"
-
-#: contrib/admin/views/main.py:765
-msgid "Database error"
-msgstr "Error de base de dades"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Els dos camps de contrasenya no coincideixen."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Ja existeix un usuari amb aquest nom."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"El seu navegador no sembla tenir les 'cookies' (galetes) activades. Aquestes "
-"són necessàries per iniciar la sessió."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Aquest compte està inactiu"
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Aquesta adreça de correu no té associada cap compte d'usuari. Esteu segurs "
-"de que s'ha registrat?"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Restablir contrasenya en %s"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Els dos camps de nova contrasenya no coincideixen."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"La seva antiga contrasenya no és correcte. Si el plau, introduïu-la de nou."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "nom"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "nom en clau"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "permís"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "permisos"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "grup"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:148
-msgid "groups"
-msgstr "grups"
-
-#: contrib/auth/models.py:138
-msgid "username"
-msgstr "nom d'usuari"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Obligatori. 30 o menys caràcters. Només caràcters alfanumèrics (lletres, "
-"dígits i el guió baix)."
-
-#: contrib/auth/models.py:139
-msgid "first name"
-msgstr "nom propi"
-
-#: contrib/auth/models.py:140
-msgid "last name"
-msgstr "cognoms"
-
-#: contrib/auth/models.py:141
-msgid "e-mail address"
-msgstr "adreça de correu electrònic"
-
-#: contrib/auth/models.py:142
-msgid "password"
-msgstr "contrasenya"
-
-#: contrib/auth/models.py:142
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Utilitzeu '[algo]$[salt]$[hexdigest]' o el <a href=\"password/\">formulari "
-"de canvi de contrasenya</a>."
-
-#: contrib/auth/models.py:143
-msgid "staff status"
-msgstr "membre del personal"
-
-#: contrib/auth/models.py:143
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si l'usuari pot entrar en el lloc administratiu."
-
-#: contrib/auth/models.py:144
-msgid "active"
-msgstr "actiu"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Designa si aquest usuari ha de ser tractat com a actiu. Deseleccioneu-ho "
-"enlloc d'esborrar comptes d'usuari."
-
-#: contrib/auth/models.py:145
-msgid "superuser status"
-msgstr "estat de superusuari"
-
-#: contrib/auth/models.py:145
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Designa que aquest usuari té tots els permissos sense assignar-los "
-"explícitament."
-
-#: contrib/auth/models.py:146
-msgid "last login"
-msgstr "últim inici de sessió"
-
-#: contrib/auth/models.py:147
-msgid "date joined"
-msgstr "data de creació"
-
-#: contrib/auth/models.py:149
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Junt amb els permissos asignats manualment, aquest usuari tindrà, també, els "
-"permissos dels grups dels que sigui membre."
-
-#: contrib/auth/models.py:150
-msgid "user permissions"
-msgstr "permissos de l'usuari"
-
-#: contrib/auth/models.py:154
-msgid "user"
-msgstr "usuari"
-
-#: contrib/auth/models.py:155
-msgid "users"
-msgstr "usuaris"
-
-#: contrib/auth/models.py:161
-msgid "Personal info"
-msgstr "Informació personal"
-
-#: contrib/auth/models.py:162
-msgid "Permissions"
-msgstr "permisos"
-
-#: contrib/auth/models.py:163
-msgid "Important dates"
-msgstr "Dates importants"
-
-#: contrib/auth/models.py:164
-msgid "Groups"
-msgstr "Grups"
-
-#: contrib/auth/models.py:323
-msgid "message"
-msgstr "missatge"
-
-#: contrib/auth/views.py:48
-msgid "Logged out"
-msgstr "Sessió finalitzada"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
-msgid "object ID"
-msgstr "ID de l'objecte"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "encapçalament"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
-msgid "comment"
-msgstr "comentari"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "qualificació #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "qualificació #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "qualificació #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "qualificació #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "qualificació #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "qualificació #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "qualificació #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "qualificació #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "és qualificació vàlida"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
-msgid "date/time submitted"
-msgstr "data/hora d'enviament"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
-msgid "is public"
-msgstr "és públic"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "està eliminat"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marqueu aquesta caixa si el comentari no és apropiat. En lloc seu es "
-"mostrarà \"Aquest comentari ha estat eliminat\" "
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "comentaris"
-
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
-msgid "Content object"
-msgstr "Objecte Contingut"
-
-#: contrib/comments/models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviat per %(user)s el %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:178
-msgid "person's name"
-msgstr "nom de la persona"
-
-#: contrib/comments/models.py:181
-msgid "ip address"
-msgstr "adreça ip"
-
-#: contrib/comments/models.py:183
-msgid "approved by staff"
-msgstr "aprovat pels membres del personal"
-
-#: contrib/comments/models.py:187
-msgid "free comment"
-msgstr "comentari lliure"
-
-#: contrib/comments/models.py:188
-msgid "free comments"
-msgstr "comentaris lliures"
-
-#: contrib/comments/models.py:250
-msgid "score"
-msgstr "puntuació"
-
-#: contrib/comments/models.py:251
-msgid "score date"
-msgstr "data de la puntuació"
-
-#: contrib/comments/models.py:255
-msgid "karma score"
-msgstr "puntuació de karma"
-
-#: contrib/comments/models.py:256
-msgid "karma scores"
-msgstr "punts de karma"
-
-#: contrib/comments/models.py:260
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d punt/s per %(user)s"
-
-#: contrib/comments/models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Aquest comentari va ser marcat per %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:285
-msgid "flag date"
-msgstr "data de la marca"
-
-#: contrib/comments/models.py:289
-msgid "user flag"
-msgstr "marca d'usuari"
-
-#: contrib/comments/models.py:290
-msgid "user flags"
-msgstr "marques d'usuari"
-
-#: contrib/comments/models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "Marca de %r"
-
-#: contrib/comments/models.py:300
-msgid "deletion date"
-msgstr "data d'eliminació"
-
-#: contrib/comments/models.py:303
-msgid "moderator deletion"
-msgstr "eliminació del moderador"
-
-#: contrib/comments/models.py:304
-msgid "moderator deletions"
-msgstr "eliminacions del moderador"
-
-#: contrib/comments/models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "eliminació del moderador per %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Contrasenya oblidada?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Qualificacions"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obligatori"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Enviar una fotografia"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Comentari:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Previsualitzar comentari"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "El seu nom:"
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Es precisa aquesta puntuació perquè n'heu introduït almenys una altra."
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Aquest comentari va ser enviat per un usuari que ha enviat menys de %(count)"
-"s comentari:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Aquest comentari va ser enviat per un usuari que ha enviat menys de %(count)"
-"s comentaris:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Aquest comentari va ser publicat per un usuari incomplet\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Només s'admet POST"
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Un o més dels camps obligatoris no ha estat enviat"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Algú ha manipulat el formulari de comentaris (violació de seguretat)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"El formulari de comentaris tenia un paràmetre 'target' invàlid -- el ID del "
-"objecte era invàlid"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-"El formulari del comentari no ha proveït ni 'previsualitzar' ni 'enviar'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Els usuaris anònims no poden votar"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "ID del comentari invàlid"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "No podeu votar-vos a vosaltres mateixos"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "nom de la classe del model en python"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tipus de contingut"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "tipus de continguts"
-
-#: contrib/flatpages/models.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exemple: '/about/contact/'. Assegureu-vos de posar les barres al principi i "
-"al final."
-
-#: contrib/flatpages/models.py:10
-msgid "title"
-msgstr "títol"
-
-#: contrib/flatpages/models.py:11
-msgid "content"
-msgstr "contingut"
-
-#: contrib/flatpages/models.py:12
-msgid "enable comments"
-msgstr "habilitar comentaris"
-
-#: contrib/flatpages/models.py:13
-msgid "template name"
-msgstr "nom de la plantilla"
-
-#: contrib/flatpages/models.py:14
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemple: 'flatpages/contact_page.html'. Si no es proporciona, el sistema "
-"utilitzarà 'flatpages/default.htmlt'."
-
-#: contrib/flatpages/models.py:15
-msgid "registration required"
-msgstr "cal estar registrat"
-
-#: contrib/flatpages/models.py:15
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si està marcat, només els usuaris registrats podran veure la pàgina."
-
-#: contrib/flatpages/models.py:20
-msgid "flat page"
-msgstr "pàgina estàtica"
-
-#: contrib/flatpages/models.py:21
-msgid "flat pages"
-msgstr "pàgines estàtiques"
-
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Opcions avançades"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "rt"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "r"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "n"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "r"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milió"
-msgstr[1] "%(value).1f  milions"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f bilió"
-msgstr[1] "%(value).1f bilions"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilió"
-msgstr[1] "%(value).1f trilions"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "un"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "dos"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tres"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "quatre"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "cinc"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "sis"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "set"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "vuit"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "nou"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "avui"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "demà"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "ahir"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Introduïu un codi postal en el format NNNN o ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Aquest camp precisa només números."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Aquest camp precisa 7 o 8 dígits."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-"Introduïu un número CUIT vàlid en el format XX-XXXXXXXX-X o XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Invàlid CUIT."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Introduïu un codi postal de 4 dígits."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Introduïu un codi zip en el format XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "El número de telèfon ha de estar en el format XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Seleccioneu un estat brasiler vàlid. Aquest estat no és un dels estats "
-"disponibles."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Número CPF invàlid."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Aquest camp precisa com a màxim 11 dígits o 14 caracters."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Número CNPJ invàlid."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Aquest camp precisa almenys 14 dígits."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Introduïu un codi postal en el format XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Introduïu un número vàlid de la Assegurança Social de Canadà en el format "
-"XXX-XXX-XXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Argau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Inner-Rhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausser-Rhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Ciutat"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Camp"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berna"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Friburg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Ginebra"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerna"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zuric"
-
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Introduïu un codi zip en el format XXXX."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Introduïu un número d'identificació o de passaport Suïssos en els formats "
-"1234567890 o X1234567<0."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Introduïu un RUT Xilè vàlid."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Introduïu un RUT Xilè vàlid. El format és XX.XXX.XXX-X"
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "El RUT Xilè no és vàlid."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Baviera"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlín"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Pomerània Occidental"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Baixa Saxònia"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Renània del Nord-Westfàlia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Renània-Palatinat"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxònia"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxònia-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Slesvig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Turíngia"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Introduïu un codi zip en el format XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Introduïu un número de tarjeta d'identificació alemany vàlid en el format "
-"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Àlaba"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Àvila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Illes Balears"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Càceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadis"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castelló"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Còrdova"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "La Corunya"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Conca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipúscoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Osca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Lleó"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Màlaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Múrcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Astúries"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palència"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantàbria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segòvia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Sòria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Terol"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "València"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Biscaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Saragossa"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusia"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragó"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principat d'Astúries"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Illes Balears"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Euskadi"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Canàries"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castella-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castella i Lleó"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalunya"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galícia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Regió de Múrcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Comunitat Foral de Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Comunitat Valenciana"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Introduïu un codi postal en rang i format 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Introduïu un número de telèfon vàlid en un dels formats 6XXXXXXXX, 8XXXXXXXX "
-"o 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Si us plau, introduïu un NIF, NIE o CIF vàlid."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Si us plau, introduïu un NIF o NIE vàlid."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Validació invàlida del NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Validació invàlida del NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Validació invàlida del CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Introduïu un número de compte bancari vàlid en el format XXXX-XXXX-XX-"
-"XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Validació invàlida del número de compte bancari."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Introduïu un número vàlid de la seguretat social finlandesa."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Introduïu un codi zip en el format XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Introduïu un número de identificació d'Islàndia. El format és XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "El número de identificació d'Islàndia no és vàlid."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Introduïu un codi zip vàlid."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Introduïu un número valid de la Seguretat Social."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Introduïu un número de IVA (VAT) vàlid."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Introduïu un codi postal en el format XXXXXXX o XX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baixa California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baixa California Sud"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Districte Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estat de Mèxic"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Introduïu un codi postal vàlid."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Introduïu un número de telèfon vàlid."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Introduïu un número SoFi vàlid."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Introduïu un número de la seguretat social Noruega vàlid."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Aquest camp precisa 8 dígits."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Aquest camp precisa 11 dígits."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "El número d'identidicació nacional està compost de 11 digits."
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Validació invàlida del número d'identificació nacional."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Introduïu un número NIP en el format XXX-XXX-XX-XX o XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Validació invàlida del número tributari (NIP)."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"El número nacional de registre de negocis (REGON) consisteix en 7 o 9 dígits."
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Validació invàlida del número nacional de registre de negocis."
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Introduïu un codi postal en el format XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Lower Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Lesser Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpatia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Greater Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "West Pomerania"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Introduïu un codi postal en el format XXXXX or XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Regió de Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Regió de Bratislava"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Regió de Kosice"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Regió de Nitra"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Regió de Presov"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Regió de Trencin"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Regió de Trnava"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Regió de Zilina"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Introdueix un codi postal vàlid."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Greater London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "Comptat de Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "Glamorgan Sud"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "Glamorgan Oest"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Escòcia central"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Anglaterra"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Irlanda del Nord"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Escòcia"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Gal·les"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Introduïu un codi zip en el format XXXXX o XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-"Introduïu un número vàlid de la Seguretat Social dels E.U.A. en el format "
-"XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Introduïu un número d'Identitat Sud Africà valid"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Introduïu un codi postal Sud Africà vàlid."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Cap Oriental"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Estat lliure"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Cap Nord"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "Cap Oest"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Cap Occidental"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redreçar des de"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Aquesta ruta hauria de ser el camí absolut, excloent-ne el nom del domini. "
-"Exemple '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redreçar a"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Això pot ser bé una ruta absoluta (com a dalt) o una URL completa que "
-"comenci per http:// ."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redreçament"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redreçaments"
-
-#: contrib/sessions/models.py:41
-msgid "session key"
-msgstr "clau de la sessió"
-
-#: contrib/sessions/models.py:42
-msgid "session data"
-msgstr "dades de la sessió"
-
-#: contrib/sessions/models.py:43
-msgid "expire date"
-msgstr "data de caducitat"
-
-#: contrib/sessions/models.py:48
-msgid "session"
-msgstr "sessió"
-
-#: contrib/sessions/models.py:49
-msgid "sessions"
-msgstr "sessions"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "nom del domini"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "nom per mostrar"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr "lloc"
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr "llocs"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Aquest valor ha de contenir només lletres, números i guions baixos."
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Aquest valor ha de contenir només lletres, números, guions baixos, guions i "
-"barres (/)."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Aquest valor ha de contenir només lletres, números, guions o guions baixos"
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "No es permeten majúscules aquí."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "No es permeten minúscules aquí."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Introduïu només dígits separats per comes."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Introduïu adreces de correu electrònic vàlides separades per comes."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Si el plau, introduïu una adreça IP vàlida."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "No s'admeten valor buits."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "No s'admeten caràcters no numèrics."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Aquest valor no pot contenir només dígits."
-
-#: core/validators.py:128 newforms/fields.py:152
-msgid "Enter a whole number."
-msgstr "Introduïu un número sencer."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Només s'admeten caracters alfabètics aquí."
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "L'any ha de ser posterior al 1900"
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Data invàlida: %s"
-
-#: core/validators.py:156 db/models/fields/__init__.py:548
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Introduïu una data vàlida en el forma AAAA-MM-DD."
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Introduïu una hora vàlida en el format HH:MM."
-
-#: core/validators.py:165 db/models/fields/__init__.py:625
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Introduïu un data/hora vàlida en format YYYY-MM-DD HH:MM."
-
-#: core/validators.py:170 newforms/fields.py:403
-msgid "Enter a valid e-mail address."
-msgstr "Introduïu una adreça de correu vàlida."
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No s'ha enviat cap fitxer. Comprovi el tipus de codificació del formulari."
-
-#: core/validators.py:193 newforms/fields.py:459
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Envieu una imatge vàlida. El fitxer que heu enviat no era una imatge o "
-"estava corrupte."
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "La URL %s no apunta a una imatge vàlida."
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Els números de telèfon han de guardar-se en el format XXX-XXX-XXXX. \"%s\" "
-"no és vàlid."
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "La URL %s no apunta a un video QuickTime vàlid."
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr "Es precisa una URL vàlida."
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Es precisa HTML vàlid. Els errors específics són:\n"
-"%s"
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML incorrectament format: %s"
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL invàlida: %s"
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "La URL %s és un enllaç trencat."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introdueixi una abreviatura vàlida d'estat dels E.U.A.."
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Vigileu amb el vostre llenguatge! Aquí no s'admet la paraula: %s."
-msgstr[1] ""
-"Vigileu amb el vostre llenguatge! Aquí no s'admeten les paraules: %s."
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Aquest camp ha de concordar amb el camp '%s'."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Si us plau, introduïu alguna cosa almenys en un camp."
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Si us plau, ompliu els dos camps o deixeu-los tots dos en blanc."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "S'ha de proporcionar aquest camp si %(field)s és %(value)s"
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "S'ha de proporcionar aquest camp si %(field)s no és %(value)s"
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "No s'admeten valors duplicats."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Aquest valor ha d'estar comprès entre %(lower)s i %(upper)s."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Aquest valor ha de ser com a mínim %s."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Aquest valor ha de ser com a màxim %s."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Aquest valor ha de ser una potència de %s."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Si us plau, introduïu un número decimal vàlid."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"Si us plau, introduïu un número decimal vàlid de com a màxim %s digit."
-msgstr[1] ""
-"Si us plau, introduïu un número decimal vàlid de com a màxim %s digits."
-
-#: core/validators.py:447
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Si us plau, introduïu un número decimal vàlid que la seva part sencera sigui "
-"de com a màxim %s digit."
-msgstr[1] ""
-"Si us plau, introduïu un número decimal vàlid que la seva part sencera sigui "
-"de com a màxim %s digits."
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Si us plau, introduïu un número decimal vàlid de com a màxim %s posició "
-"decimal."
-msgstr[1] ""
-"Si us plau, introduïu un número decimal vàlid de com a màxim %s posicions "
-"decimals."
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Si us plau, introduïu un número amb punt de coma flotant vàlid."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-"Assegureu-vos de que el fitxer que heu enviat té, com a mínim, %s bytes."
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-"Assegureu-vos de que el fitxer que heu enviat té, com a màxim %s bytes."
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "El format per aquest camp és incorrecte."
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "El camp no és vàlid."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "No s'ha pogut obtenir res de %s."
-
-#: core/validators.py:539
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"La URL %(url)s ha va tornar la capcelera Content-Type '%(contenttype)s', que "
-"no és vàlida."
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Si us plau, tanqueu l'etiqueta %(tag)s des de la línia %(line)s. (La línia "
-"comença amb \"%(start)s\".)"
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Part del text que comença en la línia %(line)s no està permès en aquest "
-"context. (La línia comença per \"%(start)s\".)"
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"El \"%(attr)s\" de la línia %(line)s no és un atribut vàlid. (La línia "
-"comença per \"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"La \"<%(tag)s>\" de la línia %(line)s no és una etiqueta vàlida. (La línia "
-"comença per \"%(start)s\".)"
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Una etiqueta de la línia %(line)s li falta un o més atributs requerits.(La "
-"línia comença per \"%(start)s\".)"
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"L'atribut \"%(attr)s\" de la línia %(line)s té un valor que no és vàlid. (La "
-"línia comença per \"%(start)s\".)"
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "Ja existeix un %(object)s del tipus %(type)s amb aquest %(field)s."
-
-#: db/models/fields/__init__.py:51
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Ja existeix %(optname)s amb aquest %(fieldname)s."
-
-#: db/models/fields/__init__.py:176 db/models/fields/__init__.py:348
-#: db/models/fields/__init__.py:780 db/models/fields/__init__.py:791
-#: newforms/fields.py:46 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Aquest camp és obligatori."
-
-#: db/models/fields/__init__.py:448
-msgid "This value must be an integer."
-msgstr "Aquest valor ha de ser un enter."
-
-#: db/models/fields/__init__.py:487
-msgid "This value must be either True or False."
-msgstr "Aquest valor ha de ser True (Veritat) o False (Fals)"
-
-#: db/models/fields/__init__.py:511
-msgid "This field cannot be null."
-msgstr "Aquest camp no pot ser nul."
-
-#: db/models/fields/__init__.py:689
-msgid "This value must be a decimal number."
-msgstr "Aquest valor ha de ser un número decimal."
-
-#: db/models/fields/__init__.py:800
-msgid "Enter a valid filename."
-msgstr "Introduïu un nom de fitxer vàlid."
-
-#: db/models/fields/__init__.py:981
-msgid "This value must be either None, True or False."
-msgstr "Aquest valor ha de ser None (Cap), True (Veritat) o False (Fals)"
-
-#: db/models/fields/related.py:94
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Si us plau, introduïu un %s vàlid."
-
-#: db/models/fields/related.py:746
-msgid "Separate multiple IDs with commas."
-msgstr "Separi múltiples IDs amb comes."
-
-#: db/models/fields/related.py:748
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Premeu la tecla \"Control\" -o \"Command\" en un Mac- per seleccionar més "
-"d'un valor."
-
-#: db/models/fields/related.py:795
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Si us plau, introduïu els IDs de %(self)s vàlids. El valor %(value)r és "
-"invàlid."
-msgstr[1] ""
-"Si us plau, introduïu IDs de %(self)s vàlids. Els valors %(value)r són "
-"invàlids."
-
-#: newforms/fields.py:47
-msgid "Enter a valid value."
-msgstr "Introduïu un valor vàlid."
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Assegureu-vos de que el valor té com a màxim %(max)d caràcters (en té %"
-"(length)d)."
-
-#: newforms/fields.py:125
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Assegureu-vos de que el valor té com a mínim %(min)d caràcters (en té %"
-"(length)d)."
-
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Aquest valor ha de ser menor o igual a %s."
-
-#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Assegureu-vos de que aquest valor sigui superior o igual a %s."
-
-#: newforms/fields.py:181 newforms/fields.py:210
-msgid "Enter a number."
-msgstr "Introduïu un número."
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Assegureu-vos de que no hi ha més de %s dígits en total."
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Assegureu-vos de que no hi ha més de %s decimals."
-
-#: newforms/fields.py:215
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Assegureu-vos de que no hi ha més de %s dígits decimals."
-
-#: newforms/fields.py:263 newforms/fields.py:750
-msgid "Enter a valid date."
-msgstr "Introduïu una data vàlida."
-
-#: newforms/fields.py:296 newforms/fields.py:751
-msgid "Enter a valid time."
-msgstr "Introduïu una hora vàlida."
-
-#: newforms/fields.py:335
-msgid "Enter a valid date/time."
-msgstr "Introduïu una data/hora vàlides."
-
-#: newforms/fields.py:434
-msgid "No file was submitted."
-msgstr "No s'ha enviat cap fitxer."
-
-#: newforms/fields.py:435 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "El fitxer enviat està buit."
-
-#: newforms/fields.py:497
-msgid "Enter a valid URL."
-msgstr "Introduïu una URL vàlida."
-
-#: newforms/fields.py:498
-msgid "This URL appears to be a broken link."
-msgstr "Aquesta URL sembla ser un enllaç trencat."
-
-#: newforms/fields.py:559 newforms/models.py:305
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Escolli una opció vàlida; Aquesta opció no és una de les opcions disponibles."
-
-#: newforms/fields.py:598
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Esculliu una opció vàlida. %(value)s no és una de les opcions vàlides."
-
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:372
-msgid "Enter a list of values."
-msgstr "Introduïu una llista de valors."
-
-#: newforms/fields.py:779
-msgid "Enter a valid IPv4 address."
-msgstr "Introduïu una adreça IPv4 vàlida."
-
-#: newforms/models.py:373
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Escolliu una opció vàlida; %s' no és una de les opcions vàlides."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Assegureu-vos de que el seu text té menys de %s caràcter."
-msgstr[1] "Assegureu-vos de que el seu text té menys de %s caràcters."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "No es permeten salts de línia."
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Escolliu una opció vàlida; %(data)s' no està dintre de %(choices)s."
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduïu un enter entre -32,768 i 32,767."
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Introduïu un número positiu."
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduïu un número entre 0 i 32,767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "si,no,potser"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "mitja nit"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "mig dia"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Dilluns"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dimarts"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Dimecres"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Dijous"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Divendres"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Dissabte"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Diumenge"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Dl"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Dm"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Dmx"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Dj"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Dv"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Ds"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dg"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "gener"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febrer"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "març"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "abril"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "maig"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "juny"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "juliol"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "agost"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "setembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "octubre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "desembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "gen"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "gen."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "ago."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "set."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "oct."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "des."
-
-#: utils/text.py:127
-msgid "or"
-msgstr "o"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "any"
-msgstr[1] "anys"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mes"
-msgstr[1] "mesos"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "setmana"
-msgstr[1] "setmanes"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dia"
-msgstr[1] "dies"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "hores"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minut"
-msgstr[1] "minuts"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuts"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:403
-msgid "DATE_FORMAT"
-msgstr "F j, Y"
-
-#: utils/translation/trans_real.py:404
-msgid "DATETIME_FORMAT"
-msgstr "F j, Y, H:i"
-
-#: utils/translation/trans_real.py:405
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:421
-msgid "YEAR_MONTH_FORMAT"
-msgstr "j de/d' F del Y"
-
-#: utils/translation/trans_real.py:422
-msgid "MONTH_DAY_FORMAT"
-msgstr "j de/d' F del Y"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "El/la %(verbose_name)s s'ha creat amb èxit."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "El/la %(verbose_name)s s'ha actualtzat amb èxit."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "El %(verbose_name)s s'ha eliminat."
-
-#~ msgid "Brazilian"
-#~ msgstr "Brasileny"
-
-#~ msgid "Gaeilge"
-#~ msgstr "Gaeilge"
-
-#~ msgid ""
-#~ "Enter a postcode. A space is required between the two postcode parts."
-#~ msgstr ""
-#~ "Introdueixi un codi postal. És necessari un espai entre les dues parts "
-#~ "del codi postal."
diff --git a/webapp/django/conf/locale/ca/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ca/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 0df69ae..0000000
--- a/webapp/django/conf/locale/ca/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ca/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ca/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 67c50c6..0000000
--- a/webapp/django/conf/locale/ca/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,115 +0,0 @@
-# translation of djangojs.po to catalan
-# This file is distributed under the same license as the Django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-15 01:00+0200\n"
-"PO-Revision-Date: 2008-03-25 18:54+0100\n"
-"Last-Translator: Django Catalan Group <django-cat@googlegroups.com>\n"
-"Language-Team: Catalan <ca@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: VIM 7.1\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s Disponibles"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Seleccionar tots"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Afegir"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Eliminar"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s Escollits"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Faci les seves seleccions i faci click a"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Deseleccionar tots"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid "January February March April May June July August September October November December"
-msgstr "Gener Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre Desembre"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Diumenge Dilluns Dimarts Dimecres Dijous Divendres Dissabte"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "Dg Dl Dt Dc Dj Dv Ds"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Ara"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Rellotje"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Esculli una hora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Mitja nit"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Migdia"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Cancel·lar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Avui"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Calendari"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Ahir"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Demà"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Mostrar"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Ocultar"
-
diff --git a/webapp/django/conf/locale/cs/LC_MESSAGES/django.mo b/webapp/django/conf/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 733ed04..0000000
--- a/webapp/django/conf/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/cs/LC_MESSAGES/django.po b/webapp/django/conf/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 56ad1fc..0000000
--- a/webapp/django/conf/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4541 +0,0 @@
-# Translation of django.po to Czech
-# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the DJANGO package.
-# Radek Svarz <translate@svarz.cz>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-20 12:51+0200\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n>1 && n<5 ? 1 : 2;\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "arabsky"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengálsky"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "bulharsky"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "katalánsky"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "česky"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "welšsky"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "dánsky"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "německy"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "řecky"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "anglicky"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "španělsky"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "estonsky"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "argentinskou španělštinou"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "baskicky"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "persky"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "finsky"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "francouzsky"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "irsky"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "galicijsky"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "maďarsky"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "hebrejsky"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "chorvatsky"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islandsky"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "italsky"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "japonsky"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "gruzijsky"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "korejsky"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "khmersky"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "kannadsky"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "litevsky"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "lotyšsky"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "makedonsky"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "holandsky"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "norsky"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "polsky"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portugalsky"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "brazilskou portugalštinou"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "rumunsky"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "rusky"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "slovensky"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "slovinsky"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "srbsky"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "švédsky"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tamilsky"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telužsky"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "turecky"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ukrajinsky"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "jednoduchou čínštinou"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "tradiční čínštinou"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>%s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Vše"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Libovolné datum"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Dnes"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Posledních 7 dní"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Tento měsíc"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Tento rok"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Ano"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Ne"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Neznámé"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "čas akce"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "object id"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "object repr"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "příznak akce"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "zpráva změny"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "log záznam"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "log záznamy"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "Žádný"
-
-#: contrib/admin/options.py:326
-#, python-format
-msgid "Changed %s."
-msgstr "Záznam %s změněn."
-
-#: contrib/admin/options.py:326 contrib/admin/options.py:336
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "a"
-
-#: contrib/admin/options.py:331
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Přidán záznam \"%(object)s\" typu \"%(name)s\"."
-
-#: contrib/admin/options.py:335
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Změněn \"%(list)s\" pro záznam \"%(object)s\" typu \"%(name)s\"."
-
-#: contrib/admin/options.py:340
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Smazán záznam \"%(object)s\" typu \"%(name)s\"."
-
-#: contrib/admin/options.py:344
-msgid "No fields changed."
-msgstr "Nebyly změněny žádná pole."
-
-#: contrib/admin/options.py:405 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně přidán."
-
-#: contrib/admin/options.py:409 contrib/admin/options.py:442
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "V úpravách můžete pokračovat níže."
-
-#: contrib/admin/options.py:419 contrib/admin/options.py:452
-#, python-format
-msgid "You may add another %s below."
-msgstr "Další záznam typu \"%s\" můžete přidat níže."
-
-#: contrib/admin/options.py:440
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně změněn."
-
-#: contrib/admin/options.py:448
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně přidán. Níže můžete v "
-"úpravách pokračovat."
-
-#: contrib/admin/options.py:514
-#, python-format
-msgid "Add %s"
-msgstr "%s: přidat"
-
-#: contrib/admin/options.py:591
-#, python-format
-msgid "Change %s"
-msgstr "%s: změnit"
-
-#: contrib/admin/options.py:622
-msgid "Database error"
-msgstr "Databázová chyba"
-
-#: contrib/admin/options.py:671
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Záznam \"%(obj)s\" typu \"%(name)s\" byl úspěšně smazán."
-
-#: contrib/admin/options.py:678
-msgid "Are you sure?"
-msgstr "Jste si jist(á)?"
-
-#: contrib/admin/options.py:705
-#, python-format
-msgid "Change history: %s"
-msgstr "Historie změn: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Prosíme, vložte správné uživatelské jméno a heslo. Poznámka - u obou položek "
-"se rozlišuje velikost písmen."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Prosíme, znovu se přihlašte, Vaše sezení vypršelo. Nemusíte se obávat, Vaše "
-"podání je uloženo."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Vypadá to, že Váš prohlížeč není nastaven, aby akceptoval cookies. Prosíme, "
-"zapněte cookies, obnovte tuto stránku a zkuste znovu."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Uživatelská jména nemohou obsahovat znak \"@\"."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Vaše e-mailová adresa není Vaše uživatelské jméno. Zkuste místo toho \"%s\"."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Django správa"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Přihlášení"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-"Položka \"%(fieldname)s\" pro tento záznam typu \"%(name)s\": \"%(obj)s\""
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Položka \"%(fieldname)s\" pro tento záznam typu \"%(name)s\":"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Čas:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Momentálně:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Změna:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Stránka nenalezena"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Je nám líto, ale vyžádaná stránka nebyla nalezena."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Domů"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Chyba serveru"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Chyba serveru (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Chyba serveru <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Nastala chyba. Byla oznámena administrátorovi serveru pomocí e-mailu a měla "
-"by být brzy odstraněna. Děkujeme za trpělivost."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Vítejte, uživateli"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentace"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Změnit heslo"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Odhlásit se"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django správa webu"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django správa"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Přidat"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Historie"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Pohled na stránku"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Prosíme, odstraňte chybu uvedenou níže."
-msgstr[1] "Prosíme, odstraňte chyby uvedené níže."
-msgstr[2] "Prosíme, odstraňte chyby uvedené níže."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s: přidat"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtr"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Smazat"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Smazání záznamu \"%(escaped_object)s\" typu \"%(object_name)s\" by vyústilo "
-"ve vymazání souvisejících objektů, ale Váš účet nemá oprávnění pro mazání "
-"následujících typů objektů:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Jste si jist(á), že chcete smazat záznam \"%(escaped_object)s\" typu \"%"
-"(object_name)s\"? Všechny následující související položky budou smazány:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Ano, jsem si jist(á)"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Dle: %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Dostupné modely v aplikaci %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Změnit"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Nemáte oprávnění nic měnit."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Poslední akce"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mé akce"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Nic"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Něco není v pořádku s Vaší instalací databáze. Ujistěte se, že byly "
-"vytvořeny odpovídající tabulky databáze a že databáze je přístupná pro čtení "
-"daným databázovým uživatelem."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Uživatelské jméno:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Heslo:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Datum/čas"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Uživatel"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Akce"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes "
-"administrátorské rozhraní."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Zobrazit všechny"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Provést"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 výsledek"
-msgstr[1] "%(counter)s výsledky"
-msgstr[2] "%(counter)s výsledků"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s celkem"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Uložit jako nový záznam"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Uložit a přidat další záznam"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Uložit a pokračovat v úpravách"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Uložit"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Nejdříve vložte uživatelské jméno a heslo. Poté budete moci upravovat více "
-"uživatelských nastavení."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Uživatelské jméno"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Heslo"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Heslo (znovu)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Pro ověření vložte stejné heslo znovu."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Vložte nové heslo pro uživatele <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Děkujeme Vám za Váš strávený čas na našich webových stránkách."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Přihlašte se znovu"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Změna hesla"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Změna hesla byla úspěšná"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Vaše heslo bylo změněno."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Prosíme, vložte svoje staré heslo a poté vložte dvakrát nové heslo. Tak "
-"můžeme ověřit, že jste ho napsal(a) správně."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Staré heslo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Nové heslo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Potvrdit heslo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Změnit heslo"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Obnovení hesla"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Heslo obnoveno"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Vaše heslo bylo nastaveno. Nyní se můžete přihlásit."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Obnovení hesla potvrzeno"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Vložte nové heslo"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Vložte dvakrát nové heslo. Tak můžeme ověřit, že jste ho napsal(a) správně."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Obnovení hesla nebylo úspěšné"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Odkaz pro obnovení hesla nebyl platný, možná již byl použit. Prosíme, "
-"požádejte o obnovení hesla znovu."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Obnovení hesla bylo úspěšné"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Poslali jsme Vám e-mailem pokyny pro nastavení vašeho hesla na adresu, "
-"kterou jste zadal(a). Měl(a) byste je dostat během okamžiku."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Dostal(a) jste tento e-mail, protože jste požádal(a) o obnovení hesla"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "pro Váš uživatelský účet na %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Prosíme, jděte na následující stránku a vyberte nové heslo:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše uživatelské jméno, pro případ, že jste zapomněl(a):"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Děkujeme za používání našeho webu!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Tým %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vám e-mailem "
-"zašleme pokyny pro nastavení nového."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mailová adresa:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Obnovit heslo"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Všechna data"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "%s: vybrat"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "%s: vybrat pro změnu"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "web"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "šablona"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filtr:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "pohled (view):"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikace %r nenalezena"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r v aplikaci %(app_label)r nenalezen"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "související objekt `%(app_label)s.%(data_type)s`"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "související objekty `%(app_label)s.%(object_name)s`"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "Vše: %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "Počet: %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Pole na objektech  %s"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Celé číslo"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (buď Ano (True), nebo Ne (False))"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Text (maximálně %(max_length)s znaků)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Celá čísla oddělená čárkou"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Datum (bez času)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Datum (s časem)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Desetinné číslo"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-mailová adresa"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Cesta k souboru"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Desetinné číslo"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP adresa"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (buď Ano (True), Ne (False), nebo Nic (None))"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "V relaci k rodičovskému modelu"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefonní číslo"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Text"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Čas"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stát US (2 velké znaky)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML text"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s pravděpodobně není objekt urlpattern"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklety"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentační bookmarklety"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Pro nainstalování bookmarkletů, přetáhněte odkaz na Vaše "
-"záložky (oblíbené),\n"
-"nebo klikněte pravým tlačítkem na odkaz a přidejte ho k Vašim záložkám "
-"(oblíbeným). Nyní můžete\n"
-"zvolit bookmarklet z libovolné stránky. Poznámka: Některé tyto\n"
-"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je "
-"nastaven jako\n"
-"\"\"interní\" (promluvte si s Vaším administrátorem, jestli si nejste "
-"jisti,\n"
-"zda je Váš počítač \"interní\").</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentace pro tuto stránku"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Z libovolné stránky otevře dokumentaci pro pohled, který vygeneroval tuto "
-"stránku."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Ukázat id objektu"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Ukáže content-type a unikátní ID pro stránky, které reprezentují jeden "
-"objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Upravit tento objekt (ve stávajícím okně)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Přepne do admin stránky pro stránky, které reprezentují jeden objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Upravit tento objekt (ve novém okně)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Jako výše, ale otevře admin stránky v novém okně."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Osobní informace"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Oprávnění"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Důležitá data"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Skupiny"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Uživatel: přidat"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Změna hesla byla úspěšná"
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Heslo pro uživatele %s: změnit"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Požadováno. 30 znaků nebo méně. Pouze alfanumerické znaky (znaky, čísla a "
-"podtržítka)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Potvrzení hesla"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Uživatel s tímto jménem již existuje."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "Hesla se neshodují."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Tento účet není aktivní."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Váš prohlížeč pravděpodobně nemá zapnuté cookies. Cookies jsou potřeba pro "
-"zalogování."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-mail"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"K této e-mailové adrese není přiřazen žádný uživatelský účet. Jste si jist"
-"(a), že jste se zaregistroval(a)?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Obnovení hesla na %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Nové heslo"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Potvrzení nového hesla"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Staré heslo"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaše staré heslo nebylo vloženo správně. Prosíme, zkuste to znovu."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "jméno"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "codename"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "oprávnění"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "oprávnění"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "skupina"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "skupiny"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "uživatelské jméno"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "křestní jméno"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "příjmení"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "e-mailová adresa"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "heslo"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Použijte formát \"[algo]$[salt]$[hexdigest]\" nebo <a href=\"password/"
-"\">formulář pro změnu hesla</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "administrativní přístup "
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Rozhodne, zda se uživatel může přihlásit do správy webu."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "aktivní"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Rozhodne, zda může být uživatel považován za aktivního. Nastavte toto místo "
-"mazání účtů."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "stav superuživatel"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Stanoví, že uživatel má veškerá oprávnění bez jejich explicitního přiřazení."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "poslední přihlášení"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "datum registrace"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro "
-"každou skupinu, ve které je."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "uživatelská oprávnění"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "uživatel"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "uživatelé"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "zpráva"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Odhlášeno"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "ID objektu"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "titulek"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "komentář"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "hodnocení #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "hodnocení #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "hodnocení #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "hodnocení #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "hodnocení #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "hodnocení #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "hodnocení #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "hodnocení #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "je platné hodnocení"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "datum/čas byl zaslán"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "je veřejné"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "je odstraněno"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Zaškrtněte tento box, pokud komentář není vhodný. Místo něj bude zobrazena "
-"zpráva \"Tento komentář byl smazán\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "komentáře"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "objekt obsahu"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Zadané %(user)s dne %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "jméno osoby"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "IP adresa"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "scháleno správci"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "volný komentář"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "volné komentáře"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "hodnocení"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "expirace hodnocení"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "karma bod"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "karma body"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d hodnoceno od %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Tento komentář byl označkován uživatelem %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "datum označení"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "uživatelské označení"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "uživatelská označení"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Označeno %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "datum smazání"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "vymazáno moderátorem"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "vymazané moderátorem"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Vymazáno moderátorem od %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Zapomenuté heslo?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Hodnocení"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Povinné"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Volitelné"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Zařadit fotografii"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentář:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Náhled komentáře"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Vaše jméno:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Toto hodnocení je povinné, protože jste zadal(a) alespoň jedno jiné "
-"hodnocení."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %"
-"(count)s komentář:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %"
-"(count)s komentáře:\n"
-"\n"
-"%(text)s"
-msgstr[2] ""
-"Tento komentář byl odevzdán uživatelem, který(á) odevzdal(a) méně než %"
-"(count)s komentářů:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Tento komentář byl odevzdán povrchním uživatelem:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Je povolená pouze metoda POST"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Jedno nebo více povinných polí nebylo vyplněné"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Někdo falšoval formulář komentáře (bezpečnostní narušení)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Formulář komentáře měl neplatný parametr \"target\" -- ID objektu nebylo "
-"platné"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Formulář komentáře neobsahoval buď \"preview\" nebo \"post\""
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonymní uživatelé nemohou hlasovat"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Neplatné ID komentáře"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Nelze hlasovat pro sebe"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "jméno modelu v Pythonu"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "typ obsahu"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "typy obsahu"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Příklad: \"/o/kontakt/\". Ujistěte se, že máte počáteční a konečná lomítka."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka, pomlčky nebo "
-"lomítka."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Pokročilá nastavení"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titulek"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "obsah"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "povolit komentáře"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "jméno šablony"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Příklad: \"flatpages/kontaktni_stranka.html\". Pokud toto není zadáno, "
-"systém použije \"flatpages/default.html\"."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "nutná registrace"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto "
-"stránku."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "statická stránka"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "statické stránky"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Hodnota geometrie nedodána."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Neplatná hodnota geometrie."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Neplatný typ geometrie."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr ""
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr ""
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drenthe"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "přesměrovat z"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Toto by měla být absolutní cesta, bez domény. Příklad: \"/udalosti/hledat/\"."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "přesměrovat na"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na "
-"\"http://\"."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "přesměrování"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "přesměrování"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "klíč sezení"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "data sezení"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "datum expirace"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sezení"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sezení"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "jméno domény"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "zobrazené jméno"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "weby"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo čárky."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Velká písmena zde nejsou povolená."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Malá písmena zde nejsou povolená."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Vložte pouze cifry oddělené čárkami."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Vložte platné e-mailové adresy oddělené čárkami."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Prosíme, zadejte platnou IP adresu."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Zde nejsou povolené prázdné hodnoty."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Znaky, které nejsou čísla, zde nejsou povoleny."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Tato hodnota nemůže být složená pouze z cifer."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Vložte celé číslo."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Zde jsou povoleny pouze alfanumerické znaky."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Neplatné datum: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Vložte platné datum ve formátu RRRR-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Vložte platný čas ve formátu HH:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Vložte platné datum a čas ve formátu RRRR-MM-DD HH:MM."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "Vložte platnou e-mailovou adresu."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Soubor nebyl odeslán. Zkontrolujte \"encoding type\" formuláře."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Nahrajte na server platný obrázek. Poslaný soubor nebyl obrázkem nebo byl "
-"poškozen."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s neodkazuje na platný obrázek."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefonní čísla musí být ve formátu XXX-XXX-XXXX. \"%s\" není platné."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s neodkazuje na platné video ve formátu QuickTime."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Je vyžadováno platné URL."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Je vyžadováno platné HTML. Konkrétní chyby jsou:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Špatně formované XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Neplatné URL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Odkaz na URL %s nefunguje."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Vložte platnou zkratku U.S. státu."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Mluvte slušně! Slovo %s zde není přípustné."
-msgstr[1] "Mluvte slušně! Slova %s zde nejsou přípustná."
-msgstr[2] "Mluvte slušně! Slova %s zde nejsou přípustná."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Toto pole se musí shodovat s polem \"%s\"."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Prosíme, vložte něco alespoň pro jedno pole."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Toto pole musí být vyplněno, když %(field)s má %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Toto pole musí být vyplněno, když %(field)s nemá %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Duplikátní hodnoty nejsou povolené."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Tato hodnota musí být mezi %(lower)s and %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Tato hodnota musí alespoň %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Tato hodnota nesmí být více než %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Tato hodnota musí být mocninou %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Prosíme, vložte platné číslo."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou celkem."
-msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem."
-msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou."
-msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi."
-msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem."
-msgstr[1] ""
-"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou "
-"celkem."
-msgstr[2] ""
-"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou "
-"celkem."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Prosíme, vložte platné reálné číslo."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Ujistěte se, že poslaný soubor má nejméně %s bytů."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Ujistěte se, že  soubor má nejvíce %s bytů."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Formát pro toto pole je špatný."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Toto pole není platné."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nelze získat nic z %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL %(url)s vrátilo neplatnou hlavičku Content-Type \"%(contenttype)s\"."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s "
-"\"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. "
-"(Řádka začíná s \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%"
-"(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%"
-"(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. "
-"(Řádka začíná s \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s "
-"\"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"%(object)s s takto vyplněným polem \"%(type)s\" již existuje pro dané pole "
-"\"%(field)s\"."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s s takto vyplněným polem \"%(fieldname)s\" již existuje."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Toto pole je povinné."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "Tato hodnota musí být celé číslo."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "Tato hodnota musí být buď Ano (True), nebo Ne (False)."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "Toto pole nemůže být prázdné (null)."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Vložte platné datum a čas ve formátu RRRR-MM-DD HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "Tato hodnota musí být celé číslo."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "Tato hodnota musí být buď Nic (None), Ano (True) nebo Ne (False)."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Vložte platný čas ve formátu HH:MM[:ss[.uuuuuu]]"
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Vložte platný název souboru."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Prosíme, zadejte %s správně."
-
-#: db/models/fields/related.py:782
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Podržte  \"Control\" (nebo \"Command\" na Macu) pro vybrání více jak jedné "
-"položky."
-
-#: db/models/fields/related.py:862
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Prosíme, vložte platná %(self)s ID. Hodnota %(value)r není platná."
-msgstr[1] ""
-"Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné."
-msgstr[2] ""
-"Prosíme, vložte platná %(self)s ID. Hodnoty %(value)r nejsou platné."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Vložte platnou hodnotu."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Tato hodnota musí mít nejvíce %(max)d znaků (nyní jich má %(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Tato hodnota musí mít nejméně %(min)d znaků (nyní jich má %(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Tato hodnota musí být menší nebo rovná %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Tato hodnota musí být větší nebo rovná %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Vložte číslo."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Tato hodnota nesmí mít celkem více než %s cifer."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Tato hodnota nesmí mít za desetinou čárkou více než %s cifer."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Tato hodnota nesmí mít před desetinnou čárkou více než %s cifer."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "Vložte platné datum."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "Vložte platný čas."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "Vložte platný datum a čas."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "Žádný soubor nebyl poslán."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Poslaný soubor je prázdný."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "Vložte platnou URL."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "Tento odkaz nefunguje."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Vyberte platnou možnost. Volba %(value)s není dostupná."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Vložte seznam hodnot."
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "Vložte platnou IPv4 adresu."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Vyberte platnou možnost. Tato není dostupná."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Vyberte platnou možnost. Volba %s není dostupná."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Ujistěte se, že Váš text má méně než %s znak."
-msgstr[1] "Ujistěte se, že Váš text má méně než %s znaky."
-msgstr[2] "Ujistěte se, že Váš text má méně než %s znaků."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Zalomení řádky zde není povoleno."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Vyberte platnou volbu. \"%(data)s\" není mezi %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Vložte celé číslo mezi -32768 a 32767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Vložte celé kladné číslo."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Vložte celé číslo mezi 0 a 32767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "ano, ne, možná"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d byty"
-msgstr[2] "%(size)d bytů"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "odp."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "dop."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "odp."
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "dop."
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "půlnoc"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "poledne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "pondělí"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "úterý"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "středa"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "čtvrtek"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "pátek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "neděle"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "po"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "út"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "st"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "čt"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pá"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "so"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ne"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "leden"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "únor"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "březen"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "duben"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "květen"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "červen"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "červenec"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "srpen"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "září"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "říjen"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "listopad"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "prosinec"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "led"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "úno"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "bře"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "dub"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "kvě"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "čen"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "čec"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "srp"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "zář"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "říj"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "lis"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "pro"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "led."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "ún."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "srp."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "zář."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "říj."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "list."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "pros."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "nebo"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "rok"
-msgstr[1] "roky"
-msgstr[2] "let"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "měsíc"
-msgstr[1] "měsíce"
-msgstr[2] "měsíců"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "týden"
-msgstr[1] "týdny"
-msgstr[2] "týdnů"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "den"
-msgstr[1] "dny"
-msgstr[2] "dnů"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hodina"
-msgstr[1] "hodiny"
-msgstr[2] "hodin"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuta"
-msgstr[1] "minuty"
-msgstr[2] "minut"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuty"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j. n. Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j. n. Y, H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j. F"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Záznam typu \"%(verbose_name)s\" byl úspěšně vytvořen."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Záznam typu \"%(verbose_name)s\" byl úspěšně změněn."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Záznam typu \"%(verbose_name)s\" byl smazán."
diff --git a/webapp/django/conf/locale/cs/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/cs/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 1a72a92..0000000
--- a/webapp/django/conf/locale/cs/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/cs/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/cs/LC_MESSAGES/djangojs.po
deleted file mode 100644
index adcc0a0..0000000
--- a/webapp/django/conf/locale/cs/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# Translation of djangojs.po to Czech
-# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the DJANGO package.
-# Radek Svarz <translate@svarz.cz>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-20 12:52+0200\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n>1 && n<5 ? 1 : 2;\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Dostupná %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Vybrat vše"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Přidat"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Odebrat"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Vybraná %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Vyberte si a klikněte "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Vymazat vše"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Leden Únor Březen Duben Květen Červen Červenec Srpen Září Říjen Listopad "
-"Prosinec"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "N P U S C P S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Neděle Pondělí Úterý Středa Čtvrtek Pátek Sobota"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Ukázat"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Skrýt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Nyní"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Hodiny"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Vyberte čas"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Půlnoc"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 ráno"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Poledne"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Storno"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Dnes"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalendář"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Včera"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Zítra"
diff --git a/webapp/django/conf/locale/cy/LC_MESSAGES/django.mo b/webapp/django/conf/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 6c92b2b..0000000
--- a/webapp/django/conf/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/cy/LC_MESSAGES/django.po b/webapp/django/conf/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index ab07be6..0000000
--- a/webapp/django/conf/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1990 +0,0 @@
-# Translation of Django to Welsh.
-# Copyright (C) 2005 Django.
-# This file is distributed under the same license as the Django package.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:12+0200\n"
-"PO-Revision-Date: 2005-11-05 HO:MI+ZONE\n"
-"Last-Translator: Jason Davies <jason@jasondavies.com>\n"
-"Language-Team: Cymraeg <cy@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID gwrthrych"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "pennawd"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "sylw"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "cyfraddiad #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "cyfraddiad #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "cyfraddiad #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "cyfraddiad #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "cyfraddiad #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "cyfraddiad #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "cyfraddiad #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "cyfraddiad #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "yn gyfraddiad dilys"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "dyddiad/amser wedi ymostwng"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "yn gyhoeddus"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
-msgid "IP address"
-msgstr "cyfeiriad IP"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "wedi diddymu"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: contrib/comments/models.py:91
-#, fuzzy
-msgid "comments"
-msgstr "sylw"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Gwrthrych cynnwys"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postiwyd gan %(user)s ar %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "enw'r person"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "cyfeiriad ip"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr ""
-
-#: contrib/comments/models.py:176
-#, fuzzy
-msgid "free comment"
-msgstr "Sylw rhydd"
-
-#: contrib/comments/models.py:177
-#, fuzzy
-msgid "free comments"
-msgstr "Sylwadau rhydd"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "sgôr"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "dyddiad sgôr"
-
-#: contrib/comments/models.py:237
-#, fuzzy
-msgid "karma score"
-msgstr "Sgôr Carma"
-
-#: contrib/comments/models.py:238
-#, fuzzy
-msgid "karma scores"
-msgstr "Sgorau Carma"
-
-#: contrib/comments/models.py:242
-#, python-format
-#, fuzzy
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "fflagio dyddiad"
-
-#: contrib/comments/models.py:268
-#, fuzzy
-msgid "user flag"
-msgstr "Fflag defnyddiwr"
-
-#: contrib/comments/models.py:269
-#, fuzzy
-msgid "user flags"
-msgstr "Fflagiau defnyddwyr"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Fflagio hefo %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "dyddiad dilead"
-
-#: contrib/comments/models.py:280
-#, fuzzy
-msgid "moderator deletion"
-msgstr "Dilead cymedrolwr"
-
-#: contrib/comments/models.py:281
-#, fuzzy
-msgid "moderator deletions"
-msgstr "Dileadau cymedrolwr"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Dilead cymedrolwr gan %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Ni gellir defnyddwyr dienw pleidleisio"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "ID sylw annilys"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Dim pleidleisio ar gyfer eich hun"
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Caniateir POSTiau yn unig"
-
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr ""
-
-#: contrib/comments/views/comments.py:197
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Enw defnyddiwr:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Cyfrinair:"
-
-#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
-msgid "Forgotten your password?"
-msgstr "Newidio fy nghyfrinair"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Allgofnodi"
-
-#: contrib/comments/templates/comments/form.html:12
-#, fuzzy
-msgid "Ratings"
-msgstr "cyfraddiad #1"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
-msgid "Comment:"
-msgstr "Sylw"
-
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
-msgid "Preview comment"
-msgstr "Sylw rhydd"
-
-#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
-msgid "Your name:"
-msgstr "enw defnyddiwr"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-msgid "All"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Unrhyw dyddiad"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Heddiw"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "7 diwrnod gorffennol"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Mis yma"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Blwyddyn yma"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Ie"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Na"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr ""
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "amser gweithred"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id gwrthrych"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "repr gwrthrych"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "fflag gweithred"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "neges newid"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "cofnod"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "cofnodion"
-
-#: contrib/admin/templatetags/admin_list.py:228
-msgid "All dates"
-msgstr "Dyddiadau i gyd"
-
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:23
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Mewngofnodi"
-
-#: contrib/admin/views/decorators.py:61
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:68
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:82
-msgid "Usernames cannot contain the '@' character."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:84
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-
-#: contrib/admin/views/main.py:226
-msgid "Site administration"
-msgstr "Gweinyddiad safle"
-
-#: contrib/admin/views/main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
-msgid "You may edit it again below."
-msgstr ""
-
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
-#, python-format
-msgid "You may add another %s below."
-msgstr ""
-
-#: contrib/admin/views/main.py:290
-#, python-format
-msgid "Add %s"
-msgstr "Ychwanegu %s"
-
-#: contrib/admin/views/main.py:336
-#, python-format
-msgid "Added %s."
-msgstr "Ychwanegwyd %s."
-
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "ac"
-
-#: contrib/admin/views/main.py:338
-#, python-format
-msgid "Changed %s."
-msgstr "Newidiwyd %s."
-
-#: contrib/admin/views/main.py:340
-#, python-format
-msgid "Deleted %s."
-msgstr "Dileuwyd %s."
-
-#: contrib/admin/views/main.py:343
-msgid "No fields changed."
-msgstr ""
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: contrib/admin/views/main.py:392
-#, python-format
-msgid "Change %s"
-msgstr "Newidio %s"
-
-#: contrib/admin/views/main.py:470
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-
-#: contrib/admin/views/main.py:475
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
-
-#: contrib/admin/views/main.py:508
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:511
-msgid "Are you sure?"
-msgstr "Ydych yn sicr?"
-
-#: contrib/admin/views/main.py:533
-#, python-format
-msgid "Change history: %s"
-msgstr "Hanes newid: %s"
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s"
-msgstr "Dewis %s"
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s to change"
-msgstr "Dewis %s i newid"
-
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
-msgid "Integer"
-msgstr ""
-
-#: contrib/admin/views/doc.py:278
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:280
-msgid "Comma-separated integers"
-msgstr ""
-
-#: contrib/admin/views/doc.py:281
-msgid "Date (without time)"
-msgstr "Dyddiad (heb amser)"
-
-#: contrib/admin/views/doc.py:282
-msgid "Date (with time)"
-msgstr "Dyddiad (gyda amser)"
-
-#: contrib/admin/views/doc.py:283
-msgid "E-mail address"
-msgstr "Cyfeiriad e-bost"
-
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
-msgid "File path"
-msgstr "Llwybr ffeil"
-
-#: contrib/admin/views/doc.py:285
-msgid "Decimal number"
-msgstr "Rhif degol"
-
-#: contrib/admin/views/doc.py:291
-msgid "Boolean (Either True, False or None)"
-msgstr "Boole (Naill ai True, False neu None)"
-
-#: contrib/admin/views/doc.py:292
-msgid "Relation to parent model"
-msgstr "Perthynas i model rhiant"
-
-#: contrib/admin/views/doc.py:293
-msgid "Phone number"
-msgstr "Rhif ffôn"
-
-#: contrib/admin/views/doc.py:298
-msgid "Text"
-msgstr "Testun"
-
-#: contrib/admin/views/doc.py:299
-msgid "Time"
-msgstr "Amser"
-
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:301
-msgid "U.S. state (two uppercase letters)"
-msgstr "Talaith U.D. (dwy briflythyren)"
-
-#: contrib/admin/views/doc.py:302
-msgid "XML text"
-msgstr "Testun XML"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dogfennaeth"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Newid cyfrinair"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Adref"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "Hanes"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Dyddiad/amser"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Defnyddiwr"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Gweithred"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Does dim hanes newid gan y gwrthrych yma. Mae'n debyg ni ychwanegwyd drwy'r "
-"safle gweinydd yma."
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Gweinyddiad safle Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Gweinyddiad Django"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Gwall gweinyddwr"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Gwall gweinyddwr (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Gwall Gweinyddwr <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Mae gwall wedi digwydd. Adroddwyd i weinyddwyr y safle drwy e-bost ac ddylai "
-"cael ei drwsio cyn bo hir."
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Tudalen heb ei ddarganfod"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Mae'n ddrwg gennym, ond nid darganfwyd y dudalen a dymunwyd"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Ychwanegu"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Newidio"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Does genych ddim hawl i olygu unrhywbeth."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Gweithredau Diweddar"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Fy Ngweithredau"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Dim ar gael"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Ychwanegu %(name)s"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "Ydych wedi <a href=\"/password_reset/\">anghofio eich cyfrinair</a>?"
-
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "Croeso,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Dileu"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(object)s' would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Bydda dileu'r %(object_name)s '%(object)s' yn ddilyn i dileu'r wrthrychau "
-"perthynol, ond ni chaniateir eich cyfrif ddileu'r mathau o wrthrych canlynol:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
-"the following related items will be deleted:"
-msgstr ""
-"Ydych yn sicr chi eiso ddileu'r %(object_name)s \"%(object)s\"? Bydd y cwbl "
-"o'r eitemau perthynol canlynol yn cae eu ddileu:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Yndw, rwy'n sicr"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr " Gan %(title)s"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Ewch"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Gweld ar safle"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Trefnu"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Trefn:"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Cadw fel newydd"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Cadw ac ychwanegu un arall"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Cadw ac parhau i olygu"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Cadw"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Newid cyfrinair"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Newid cyfrinair yn lwyddianus"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Newidwyd eich cyfrinair."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Ailosod cyfrinair"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Wedi anghofio eich cyfrinair? Rhowch eich cyfeiriad e-bost isod, ac "
-"ailosodan eich cyfrinair ac e-bostio'r un newydd i chi."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Cyfeiriad e-bost:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Ailosodi fy nghyfrinair"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Diolch am dreulio amser ansawdd gyda'r safle we heddiw 'ma."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ailmewngofnodi"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Ailosod cyfrinair yn lwyddianus"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr "Wedi e-bostio cyfrinair newydd i'r gyfeiriad e-bost "
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Rhowch eich cyfrinair hen, er mwyn gwarchodaeth, yna rhowch eich cyfrinair "
-"newydd dwywaith er mwyn i ni wirio y teipiwyd yn gywir."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Cyfrinair hen:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Cyfrinair newydd:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Cadarnhewch cyfrinair:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Newidio fy nghyfrinair"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Chi'n derbyn yr e-bost yma achos ddymunwyd ailosod cyfrinair"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "er mwyn eich cyfrif defnyddiwr ar %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Eich cyfrinair newydd yw: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Mae croeso i chi newid y gyfrinair hon wrth fynd i'r dudalen yma:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Eich enw defnyddiwr, rhag ofn chi wedi anghofio:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Diolch am ddefnyddio ein safle!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Y tîm %(site_name)s"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Dalennau gofnod"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dogfennaeth dalennau gofnod"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Dogfennaeth er mwyn y dudalen yma"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Dangos ID gwrthrych"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Yn dangos y fath-cynnwys a'r ID unigryw ar gyfer tudalennau sy'n "
-"cynrychioligwrthrych sengl."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Golygu'r gwrthrych yma (ffenestr cyfoes)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Yn neidio i'r dudalen weinyddiad ar gyfer tudalennau sy'n cynrychioli "
-"gwrthrych sengl."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Golygu'r gwrthrych yma (ffenestr newydd)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Fel uwchben, ond yn agor y dudalen weinyddiad mewn ffenestr newydd."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Dyddiad:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Amser:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:3
-#, fuzzy
-msgid "Change:"
-msgstr "Newidio"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "ailgyfeirio o"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ddylai hon bod yn lwybr hollol, heb y parth-enw. Er enghraifft: '/"
-"digwyddiadau/chwilio/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "ailgyfeirio i"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Gellir fod naill ai llwybr hollol (fel uwch) neu URL hollol yn ddechrau â "
-"'http://'."
-
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr "ailgyfeiriad"
-
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr "ailgyfeiriadau"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Er enghraifft: '/amdan/cyswllt/'. Sicrhewch gennych slaesau arweiniol ac "
-"trywyddiol."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "teitl"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "cynnwys"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "galluogi sylwadau"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "enw'r templed"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-"Er enghraifft: 'flatpages/tudalen_cyswllt'. Os nid darparwyd, ddefnyddia'r "
-"system 'flatpages/default'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "cofrestriad gofynnol"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Os wedi dewis, dim ond defnyddwyr a mewngofnodwyd bydd yn gallu gweld y "
-"tudalen."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "tudalen fflat"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "tudalennau fflat"
-
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "enw"
-
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr "enw arwyddol"
-
-#: contrib/auth/models.py:17
-#, fuzzy
-msgid "permission"
-msgstr "Hawl"
-
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
-msgid "permissions"
-msgstr "Hawliau"
-
-#: contrib/auth/models.py:29
-#, fuzzy
-msgid "group"
-msgstr "Grŵp"
-
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
-msgid "groups"
-msgstr "Grwpiau"
-
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "enw defnyddiwr"
-
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "enw cyntaf"
-
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "enw olaf"
-
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "cyfeiriad e-bost"
-
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "cyfrinair"
-
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Defnyddiwch '[algo]$[salt]$[hexdigest]'"
-
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr "statws staff"
-
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "Dylunio ai'r defnyddiwr yn gally mewngofnodi i'r safle weinyddiad yma."
-
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "gweithredol"
-
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "statws defnyddiwr swper"
-
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "mewngofnod olaf"
-
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "Dyddiad"
-
-#: contrib/auth/models.py:66
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Yn ogystal â'r hawliau trosglwyddwyd dros law, byddai'r defnyddiwr yma hefyd "
-"yn cael y cwbl hawliau a addefwyd i pob grŵp mae o/hi mewn."
-
-#: contrib/auth/models.py:67
-#, fuzzy
-msgid "user permissions"
-msgstr "Hawliau"
-
-#: contrib/auth/models.py:70
-#, fuzzy
-msgid "user"
-msgstr "Defnyddiwr"
-
-#: contrib/auth/models.py:71
-#, fuzzy
-msgid "users"
-msgstr "Defnyddwyr"
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "Gwybodaeth personol"
-
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Hawliau"
-
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Dyddiadau pwysig"
-
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Grwpiau"
-
-#: contrib/auth/models.py:219
-#, fuzzy
-msgid "message"
-msgstr "Neges"
-
-#: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-
-#: contrib/contenttypes/models.py:25
-#, fuzzy
-msgid "python model class name"
-msgstr "enw modwl python"
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr "math cynnwys"
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr "mathau cynnwys"
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr "goriad sesiwn"
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr "data sesiwn"
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr "dyddiad darfod"
-
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "sesiwn"
-
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "sesiynau"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "parth-enw"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "enw arddangos"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "safle"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "safleoedd"
-
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Dydd Llun"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dydd Mawrth"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Dydd Mercher"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Dydd Iau"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Dydd Gwener"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Dydd Sadwrn"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Dydd Sul"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Ionawr"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Chwefror"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Mawrth"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "Ebrill"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Mehefin"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Gorffenaf"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Awst"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Medi"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Hydref"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Tachwedd"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Rhagfyr"
-
-#: utils/dates.py:19
-#, fuzzy
-msgid "jan"
-msgstr "ac"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:19
-#, fuzzy
-msgid "may"
-msgstr "diwrnod"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Ion."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Chwe."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Awst"
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Medi"
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Hyd."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Tach."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Rhag."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "blwyddyn"
-msgstr[1] "blynyddoedd"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mis"
-msgstr[1] "misoedd"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "diwrnod"
-msgstr[1] "diwrnodau"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "awr"
-msgstr[1] "oriau"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "munud"
-msgstr[1] "munudau"
-
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Bengaleg"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "Tsieceg"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "Cymraeg"
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "Daneg"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "Almaeneg"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Saesneg"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Spaeneg"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "Ffrangeg"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr "Galisieg"
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Islandeg"
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Eidaleg"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Norwyeg"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Brasileg"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "Romaneg"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Rwsieg"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "Slofaceg"
-
-#: conf/global_settings.py:58
-#, fuzzy
-msgid "Slovenian"
-msgstr "Slofaceg"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Serbeg"
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Swedeg"
-
-#: conf/global_settings.py:61
-#, fuzzy
-msgid "Ukrainian"
-msgstr "Brasileg"
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Tsieinëeg Symledig"
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr ""
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Rhaid i'r werth yma cynnwys lythrennau, rhifau ac tanlinellau yn unig."
-
-#: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Rhaid i'r werth yma cynnwys lythrennau, rhifau, tanlinellau ac slaesau yn "
-"unig."
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "Ni chaniateir priflythrennau yma."
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "Ni chaniateir lythrennau bach yma."
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "Rhowch digidau gwahanu gyda atalnodau yn unig."
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Rhowch cyfeiriad e-bost dilys gwahanu gyda atalnodau."
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "Rhowch cyfeiriad IP dilys, os gwelwch yn dda."
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "Ni chaniateir gwerthau gwag yma."
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Ni chaniateir nodau anrhifol yma."
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr "Ni gellir y werth yma"
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "Rhowch rhif cyfan."
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "Caniateir nodau gwyddorol un unig yma."
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Rhowch dyddiad dilys mewn fformat YYYY-MM-DD."
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "Rhowch amser ddilys mewn fformat HH:MM."
-
-#: core/validators.py:132 db/models/fields/__init__.py:468
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Rhowch dyddiad/amser ddilys mewn fformat YYYY-MM-DD HH:MM."
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "Rhowch cyfeiriad e-bost ddilys."
-
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Llwythwch delwedd dilys. Doedd y delwedd a llwythwyd dim yn ddelwedd dilys, "
-"neu roedd o'n ddelwedd llwgr."
-
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Dydy'r URL %s dim yn pwyntio at delwedd dilys."
-
-#: core/validators.py:159
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Rhaid rifau ffon bod mewn fformat XXX-XXX-XXXX. Mae \"%s\" yn annilys."
-
-#: core/validators.py:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Dydy'r URL %s dim yn pwyntio at fideo Quicktime dilys."
-
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr "Mae URL dilys yn ofynnol."
-
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Mae HTML dilys yn ofynnol. Gwallau penodol yw:\n"
-"%s"
-
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML wedi ffurfio'n wael: %s"
-
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL annilys: %s"
-
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Mae'r URL %s yn gyswllt toredig."
-
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Rhowch talfyriad dalaith U.S. dilys."
-
-#: core/validators.py:229
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Gwyliwch eich ceg! Ni chaniateir y gair %s yma."
-msgstr[1] "Gwyliwch eich ceg! Ni chaniateir y geiriau %s yma."
-
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Rhaid i'r faes yma cydweddu'r faes '%s'."
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr "Rhowch rhywbeth am un maes o leiaf, os gwelwch yn dda."
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr "Llenwch y ddwy faes, neu gadewch nhw'n wag, os gwelwch yn dda."
-
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Rhaid roi'r faes yma os mae %(field)s yn %(value)s"
-
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Rhaid roi'r faes yma os mae %(field)s dim yn %(value)s"
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr "Ni chaniateir gwerthau ddyblyg."
-
-#: core/validators.py:336
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Rhaid i'r gwerth yma fod yn bŵer o %s."
-
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr "Rhowch rhif degol dilys, os gwelwch yn dda."
-
-#: core/validators.py:349
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Rhowch rhif degol dilys gyda cyfanswm %s digidau o fwyaf."
-msgstr[1] "Rhowch rhif degol dilys gyda cyfanswm %s digid o fwyaf."
-
-#: core/validators.py:352
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Rhowch rif degol dilydd gyda o fwyaf %s lle degol, os gwelwch yn dda."
-msgstr[1] ""
-"Rhowch rif degol dilydd gyda o fwyaf %s lleoedd degol, os gwelwch yn dda."
-
-#: core/validators.py:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Sicrhewch bod yr ffeil a llwythwyd yn o leiaf %s beit."
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Sicrhewch bod yr ffeil a llwythwyd yn %s beit o fwyaf."
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr "Mae'r fformat i'r faes yma yn anghywir."
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr "Mae'r faes yma yn annilydd."
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Ni gellir adalw unrhywbeth o %s."
-
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"Dychwelodd yr URL %(url)s y pennawd Content-Type annilys '%(contenttype)s'."
-
-#: core/validators.py:462
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Caewch y tag anghaedig %(tag)s o linell %(line)s. (Linell yn ddechrau â \"%"
-"(start)s\".)"
-
-#: core/validators.py:466
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Ni chaniateir rhai o'r destun ar linell %(line)s yn y gyd-destun yna. "
-"(Linell yn ddechrau â \"%(start)s\".)"
-
-#: core/validators.py:471
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"Mae \"%(attr)s\" ar lein %(line)s yn priodoledd annilydd. (Linell yn "
-"ddechrau â \"%(start)s\".)"
-
-#: core/validators.py:476
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"Mae \"<%(tag)s>\" ar lein %(line)s yn tag annilydd. (Linell yn ddechrau â \"%"
-"(start)s\".)"
-
-#: core/validators.py:480
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Mae tag ar lein %(line)s yn eisiau un new fwy priodoleddau gofynnol. (Linell "
-"yn ddechrau â \"%(start)s\".)"
-
-#: core/validators.py:485
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Mae gan y priodoledd \"%(attr)s\" ar lein %(line)s gwerth annilydd. (Linell "
-"yn ddechrau â \"%(start)s\".)"
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "Mae angen y faes yma."
-
-#: db/models/fields/__init__.py:337
-#, fuzzy
-msgid "This value must be an integer."
-msgstr "Rhaid i'r gwerth yma fod yn bŵer o %s."
-
-#: db/models/fields/__init__.py:369
-#, fuzzy
-msgid "This value must be either True or False."
-msgstr "Rhaid i'r gwerth yma fod yn bŵer o %s."
-
-#: db/models/fields/__init__.py:385
-#, fuzzy
-msgid "This field cannot be null."
-msgstr "Mae'r faes yma yn annilydd."
-
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr "Rhowch enw ffeil dilys."
-
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Rhowch %s dilys, os gwelwch yn dda."
-
-#: db/models/fields/related.py:579
-#, fuzzy
-msgid "Separate multiple IDs with commas."
-msgstr " Gwahanwch mwy nag un ID gyda atalnodau."
-
-#: db/models/fields/related.py:581
-#, fuzzy
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Gafaelwch lawr \"Control\", neu \"Command\" ar Fac, i ddewis mwy nag un."
-
-#: db/models/fields/related.py:625
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/__init__.py:380
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr "Ni chaniateir toriadau llinell yma."
-
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Dewisiwch dewis dilys; dydy '%(data)s' dim mewn %(choices)s."
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr "Mae'r ffeil yn wag."
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Rhowch rhif cyfan rhwng -32,768 a 32,767."
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr "Rhowch rhif positif."
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Rhowch rhif cyfan rhwng 0 a 32,767."
-
-#: template/defaultfilters.py:379
-msgid "yes,no,maybe"
-msgstr "ie,na,efallai"
-
-#~ msgid "Comment"
-#~ msgstr "Sylw"
-
-#~ msgid "Comments"
-#~ msgstr "Sylwadau"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "Llinyn (i fyny at 50)"
-
-#~ msgid "label"
-#~ msgstr "label"
-
-#~ msgid "package"
-#~ msgstr "pecyn"
-
-#~ msgid "packages"
-#~ msgstr "pecynau"
-
-#, fuzzy
-#~ msgid "count"
-#~ msgstr "cynnwys"
diff --git a/webapp/django/conf/locale/cy/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/cy/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index c35e11b..0000000
--- a/webapp/django/conf/locale/cy/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/cy/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/cy/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 1da646b..0000000
--- a/webapp/django/conf/locale/cy/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,111 +0,0 @@
-# Translation of Django admin JS to Welsh.
-# Copyright (C) 2005 Django project
-# This file is distributed under the same license as the Django package.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2005-12-04 16:53+0000\n"
-"Last-Translator: Jason Davies <jason@jasondavies.com>\n"
-"Language-Team: Cymraeg <cy@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-#, fuzzy
-msgid "Choose all"
-msgstr "Dewis amser"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Ionawr Chwefror Mawrth Ebrill Mai Mehefin Gorffennaf Medi Hydref Tachwedd "
-"Rhagfyr"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S Ll M M I G S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Nawr"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Cloc"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Dewis amser"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Hanner nos"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 y.b."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Hanner dydd"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Diddymu"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Heddiw"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Calendr"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Ddoe"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Yfory"
diff --git a/webapp/django/conf/locale/da/LC_MESSAGES/django.mo b/webapp/django/conf/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index bc3469d..0000000
--- a/webapp/django/conf/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/da/LC_MESSAGES/django.po b/webapp/django/conf/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 2faa419..0000000
--- a/webapp/django/conf/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4498 +0,0 @@
-# Translation of django.po to Danish
-# This file is distributed under the same license as the Django package.
-# 
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django 1.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-11 20:13+0200\n"
-"PO-Revision-Date: 2008-08-11 20:41+0200\n"
-"Last-Translator: Finn Gruwier Larsen<finn@gruwier.dk>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Arabisk"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Bengalsk"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Bulgarsk"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "Catalansk"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Tjekkisk"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Walisisk"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Dansk"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Tysk"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Græsk"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Engelsk"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Spansk"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "Estisk"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Argentisk spansk"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "Baskisk"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "Persisk"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "Finsk"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "Fransk"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "Irsk"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "Galicisk"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "Ungarsk"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "Hebræisk"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "Kroatisk"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "Islandsk"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "Italiensk"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "Japansk"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "Georgisk"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "Koreansk"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "Lettisk"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "Litauisk"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "Makedonsk"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "Hollandsk"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "Norsk"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "Polsk"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "Portugisisk"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "Brasiliansk portugisisk"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "Rumænsk"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "Russisk"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "Slovakisk"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "Slovensk"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "Serbisk"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "Svensk"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "Tyrkisk"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "Ukrainsk"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "Forenklet kinesisk"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "Traditionelt kinesisk"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Efter %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Alle"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Når som helst"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Idag"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "De sidste 7 dage"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Denne måned"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Dette år"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Ja"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Nej"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Ukendt"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "handlingstid"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "objekt-ID"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "objekt repr"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "handlingsflag"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "ændringsmeddelelse"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "logmeddelelse"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "logmeddelelser"
-
-#: contrib/admin/options.py:143 contrib/admin/options.py:202
-msgid "None"
-msgstr "Ingen"
-
-#: contrib/admin/options.py:407
-#, python-format
-msgid "Changed %s."
-msgstr "Ændrede %s."
-
-#: contrib/admin/options.py:407 contrib/admin/options.py:417
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "og"
-
-#: contrib/admin/options.py:412
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Tilføjede %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:416
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Ændrede %(list)s for %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:421
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Slettede %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:425
-msgid "No fields changed."
-msgstr "Ingen felter ændret."
-
-#: contrib/admin/options.py:486 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" blev tilføjet i databasen."
-
-#: contrib/admin/options.py:490 contrib/admin/options.py:523
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Du kan redigere det igen herunder."
-
-#: contrib/admin/options.py:500 contrib/admin/options.py:533
-#, python-format
-msgid "You may add another %s below."
-msgstr "Du kan tilføje endnu en %s herunder."
-
-#: contrib/admin/options.py:521
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" blev ændret."
-
-#: contrib/admin/options.py:529
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" blev tilføjet. Du kan redigere det igen herunder."
-
-#: contrib/admin/options.py:596
-#, python-format
-msgid "Add %s"
-msgstr "Tilføj %s"
-
-#: contrib/admin/options.py:673
-#, python-format
-msgid "Change %s"
-msgstr "Ret %s"
-
-#: contrib/admin/options.py:704
-msgid "Database error"
-msgstr "databasefejl"
-
-#: contrib/admin/options.py:753
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" blev slettet."
-
-#: contrib/admin/options.py:760
-msgid "Are you sure?"
-msgstr "Er du sikker?"
-
-#: contrib/admin/options.py:787
-#, python-format
-msgid "Change history: %s"
-msgstr "Ændringshistorik: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Indtast venligst et korrekt brugernavn og adgangskode. Bemærk, at begge "
-"felter er versalfølsomme."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Log venligst ind igen, da din session er udløbet. Der er ingen grund til "
-"bekymring - informationen du indsendte er blevet gemt."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Det ser ud til din browser ikke er indstillet til at acceptere cookies. Slå "
-"venligst cookies til, genindlæs denne side og prøv igen."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Brugernavne kan ikke indeholde tegnet '@'."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Din e-mail-adresse er ikke dit brugernavn. Prøv '%s' i stedet."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Website-administration"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Log ind"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Et eller flere %(fieldname)s i %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Et eller flere %(fieldname)s i %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Dato:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Tid:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Nuværende:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Ret:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Siden blev ikke fundet"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Vi beklager, men den ønskede side kunne ikke findes"
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Hjem"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverfejl"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverfejl (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfejl <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Der opstod en fejl. Fejlen er rapporteret til website-administratoren via e-"
-"mail, og vil blive rettet hurtigst muligt. Tak for din tålmodighed."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Velkommen,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Skift adgangskode"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Log ud"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django website-administration"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administration"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Tilføj"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Historik"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Se på website"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgstr "Ret venligst fejlen herunder."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Tilføj %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtrer"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Slet"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Hvis du sletter %(object_name)s '%(escaped_object)s', vil du også slette "
-" relaterede objekter, men din konto har ikke rettigheder til at slette "
-"følgende objekttyper:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Er du sikker på du vil slette %(object_name)s \"%(escaped_object)s\"? "
-"Alle de følgende relaterede objekter vil blive slettet:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Ja, jeg er sikker"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Efter %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeller til rådighed i %(name)s-applikationen."
-
-#: contrib/admin/templates/admin/index.html:19
-#, fuzzy, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Ret"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Du har ikke rettigheder til at foretage ændringer."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Seneste handlinger"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mine handlinger"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Ingen tilgængelige"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Der er noget galt med databaseinstallationen. Kontroller om "
-"databasetabellerne er blevet oprettet og at databasen er læsbar for den"
-"pågældende bruger."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Brugernavn:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Adgangskode:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Dato/tid"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Bruger"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Funktion"
-
-#: contrib/admin/templates/admin/object_history.html:24
-#, fuzzy
-msgid "DATE_WITH_TIME_FULL"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dette objekt har ingen ændringshistorik. Det blev formentlig ikke tilføjet "
-"via dette administrations-site"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Vis alle"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Kør"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgstr "1 resultat"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s i alt"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Gem som ny"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Gem og tilføj endnu en"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Gem og fortsæt med at redigere"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Gem"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "Indtast først et brugernavn og en adgangskode. Derefter får du yderligere "
-"redigeringsmuligheder."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Brugernavn"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Adgangskode:"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Adgangskode (igen)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Indtast den samme adgangskode som ovenfor for verifikation."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Indtast en ny adgangskode for brugeren <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tak for den kvalitetstid du brugte på websitet idag."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Log ind igen"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Skift adgangskode"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Adgangskoden blev ændret"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Din adgangskode blev ændret."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Indtast venligst din gamle adgangskode for en sikkerheds skyld og indtast "
-"så din nye adgangskode to gange, så vi kan være sikre på, at den er "
-"indtastet korrekt."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Gammel adgangskode:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Ny adgangskode:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Bekræft ny adgangskode:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Skift min adgangskode"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Nulstil adgangskode"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Adgangskoden blev nulstillet"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Din adgangskode er blevet sat. Du kan logge ind med den nu."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Bekræftelse for nulstilling af adgangskode"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Indtast ny adgangskode"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Indtast venligst din nye adgangskode to gange, så vi kan være sikre på, "
-"at den er indtastet korrekt."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Adgangskoden blev ikke nulstillet"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr "Linket for nulstilling af adgangskoden er ugyldigt, måske fordi det "
-"allerede har været brugt. Anmod venligst påny om nulstilling af adgangskoden."
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Adgangskoden blev nulstillet"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Vi har sendt en instruktion til din e-mail-adresse. Du skulle modtage den "
-"om ganske kort tid."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Du modtager denne e-mail, fordi du har bedt om at få nulstillet din "
-"adgangskode"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "til din brugerkonto ved %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Gå venligst til denne side og vælg en ny adgangskode:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "For det tilfælde at du skulle have glemt dit brugernavn er det:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Tak fordi du brugte vores website!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Med venlig hilsen %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Har du glemt din adgangskode? Indtast din e-mail-adresse herunder, så sender "
-"vi dig en instruktion vedrørende ny adgangskode."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail-adresse:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Nulstil min adgangskode"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Alle datoer"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Vælg %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Vælg %s, der skal ændres"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "website"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "skabelon"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filter:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Applikationen %r blev ikke fundet"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modellen %(model_name)r ikke fundet i applikationen %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "det relaterede `%(app_label)s.%(data_type)s`-objekt"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "relaterede `%(app_label)s.%(object_name)s`-objekter"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "alle %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "antal af %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Felter på %s-objekter"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Heltal"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (enten True eller False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Streng (op til %(max_length)s)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Kommaadskilte heltal"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Dato (uden tid)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Dato (med tid)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Decimaltal"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-mail-adresse"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Sti"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Flydende-komma-tal"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolsk (True, False eller None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relation til forældermodel"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefonnummer"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Tid"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stat (i USA, to store bogstaver)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML-tekst"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ser ikke ud til at være et urlpattern-objekt"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentations-bookmarklets"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">For at installere bookmarklets, træk linket til din "
-"bogmærkelinje\n"
-" eller højreklik på linket og tilføj det til dine bogmærker. Du kan nu\n"
-"markere bookmarkletten fra enhver side på websitet. Bemærk, at nogle af "
-"disse \n"
-"bookmarkletter kræver, at du ser på websitet fra en computer der opfattes \n"
-"som \"intern\" (tal med din systemadministrator, hvis du ikke er sikker på "
-"om\n"
-"din computer er \"intern\").</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentation for denne side"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Bringer dig fra en hvilken som helst side til dokumentationen for det view, "
-"der genererer den pågældende side."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Vis objekt-ID"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Viser indholdstypen og det unikke ID for sider, der repræsenterer et enkelt objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Rediger dette objekt (i det aktuelle vindue)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Springer til administrationssiden for sider, der repræsenterer et enkelt "
-"objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Rediger dette objekt (i nyt vindue)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Som ovenfor, men åbner administrationssiden i et nyt vindue."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Personlig information"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Rettigheder"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Vigtige datoer"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Grupper"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Tilføj bruger"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Adgangskoden blev ændret."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Skift adgangskode: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "Påkrævet. Højst 30 tegn, kun alfanumeriske tegn "
-"(bogstaver og tal samt understreg)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Dette felt må kun indeholde bogstaver og cifre samt understreg."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Bekræftelse af adgangskode"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "En bruger med dette brugernavn findes allerede."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "De to adgangskoder var ikke identiske."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Denne konto er inaktiv."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Din browser ser ud til ikke at have cookies aktiveret. Cookies er påkrævet "
-"for at kunne logge ind."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-mail"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "Den e-mail-adresse er ikke tilknyttet en konto. Er du sikker på at "
-"du har registreret dig?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Adgangskode nulstillet på %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Ny adgangskode"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Bekræftelse af ny adgangskode"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Gammel adgangskode"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Din gamle adgangskode blev ikke indtastet korrekt. Indtast den venligst igen."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "navn"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "kodenavn"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "rettighed"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "rettigheder"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "gruppe"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "grupper"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "brugernavn"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "fornavn"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "efternavn"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "e-mail-adresse"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "adgangskode"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Brug '[algo]$[salt]$[hexdigest]' eller brug <a href=\"password/\">formularen "
-"til skift af adgangskode</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "admin-status"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Bestemmer om brugeren kan logge ind på dette administrationswebsite."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "aktiv"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr "Bestemmer om brugeren skal behandles som aktiv. Fravælg dette "
-"frem for at slette en konto."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "superbrugerstatus"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Bestemmer at denne bruger har alle rettigheder uden at tildele dem "
-"eksplicit."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "sidst logget ind"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "dato for registrering"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Udover de rettigheder, der manuelt er tildelt brugeren, vil denne også få "
-"alle rettigheder, der er tildelt hver gruppe, brugeren er medlem af."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "Rettigheder"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "bruger"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "brugere"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "meddelelse"
-
-#: contrib/auth/views.py:51
-msgid "Logged out"
-msgstr "Logget ud"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "objekt-ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "overskrift"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "kommentar"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "bedømmelse: 1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "bedømmelse: 2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "bedømmelse: 3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "bedømmelse: 4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "bedømmelse: 5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "bedømmelse: 6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "bedømmelse: 7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "bedømmelse: 8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "er en gyldig bedømmelse"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "dato/tidspunkt for oprettelse"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "er offentlig"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "er fjernet"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Afkryds denne boks, hvis kommentaren er upassende. Beskeden \"Denne kommentar "
-"er blevet fjernet\" vil blive vist i stedet."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "kommentarer"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Indholdsobjekt"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Indsendt af %(user)s den %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "personens navn"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "IP-adresse"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "godkendt af personale"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "fri kommentar"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "frie kommentarer"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "score"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "scoringsdato"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "karma score"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "karma score"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d bedømmelse efter %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Denne kommentar blev mærket af %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "mærkningsdato"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "brugermærke"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "brugermærker"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Mærket af %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "sletningsdato"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "moderatorsletning"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "moderatorsletninger"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Moderatorsletning af %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Har du glemt din adgangskode?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Bedømmelser"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Påkrævet"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Valgfri"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Indsend et foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Kommentar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Forhåndsvis kommentar"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Dit navn:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Denne bedømmelse er påkrævet fordi du har indtastet mindst en anden bedømmelse."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Denne kommentar blev indsendt af en bruger, som har indsendt færre end %"
-"(count)s kommentar:\n"
-"\n"
-"%(text)s"
-"Denne kommentar blev indsendt af en bruger som har indsendt færre end %"
-"(count)s kommentarer:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Denne kommentar blev indsendt af en overfladisk bruger:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Kun POST er tilladt"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Et eller flere af de påkrævede felter blev ikke indsendt"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Nogen har misbrugt kommentarformularen (sikkerhedsovertrædelse)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Kommentarformularen havde en ugyldigt 'target'-parameter - objekt-ID'et "
-"var ugyldigt"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Kommentarformularen tilbød ikke hverken 'forhåndsvis' eller 'indsend'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonyme brugere kan ikke stemme"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Ugyldigt kommentar-ID"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Du kan ikke selv stemme"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "klassenavn i Python-model"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "indholdstype"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "indholdstyper"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Eksempel: '/om/kontakt/'. Vær opmærksom på, at der skal være skråstreg både "
-"først og sidst."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Dette felt må kun indeholde bogstaver, cifre, understreger, bindestreger og "
-"skråstreger."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Avancerede muligheder"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titel"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "indhold"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "tillad kommentarer"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "skabelonnavn"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Eksempel: 'flatpages/kontaktside'. Hvis dette ikke tilbydes, bruger "
-"systemet 'flatpages/default'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registrering påkrævet"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Hvis denne boks er markeret, vil kun brugere der er logget ind, kunne "
-"se siden."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "flad side"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "flade sider"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Ingen værdi givet for geometri."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Ugyldig geometriværdi."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Ugyldig gemometritype."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgstr "%(value).1f million"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgstr "%(value).1f milliard"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgstr "%(value).1f billion"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "en"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "to"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tre"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "fire"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "fem"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "seks"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "syv"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "otte"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "ni"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "i dag"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "i morgen"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "i går"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Indtast et postnummer i formatet NNNN eller ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr ""
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr ""
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Indtast et gyldigt filnavn."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "mar"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "nov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Slovakisk"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Fransk"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Indtast et gyldigt filnavn."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Walisisk"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr ""
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dette skal være en absolut sti uden domænenavnet. For eksempel: "
-"'/nyheder/soeg/'"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "omadresser til"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dette kan enten være en absolut sti (som ovenfor), eller en komplet URL "
-"startende med 'http://'"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "omadressering"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "omaddresseringer"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "sessionsnøgle"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "sessionsdata"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "udløbsdato"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "session"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sessioner"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "domænenavn"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "vist navn"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "websites"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Dette felt må kun indeholde bogstaver, cifre, understreger, streger eller "
-"skråstreger."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Store bogstaver er ikke tilladt her."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Små bogstaver er ikke tilladt her."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Indtast kun cifre adskilt af kommaer."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Indtast gyldige e-mail-adresser adskilt af kommaer."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Indtast venligst en gyldig IP-adresse."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Dette felt må ikke være tomt."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Ikke-numeriske tegn er ikke tilladt her."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Denne værdi kan ikke udelukkende bestå af cifre."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Indtast et heltal."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Her er kun bogstaver tilladt."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ugyldig dato: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:569
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Indtast en gyldig dato i formatet ÅÅÅÅ-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Indtast en gyldig tid i formatet TT:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Indtast dato og tidspunkt i formatet ÅÅÅÅ-MM-DD TT:MM."
-
-#: core/validators.py:166 forms/fields.py:412
-msgid "Enter a valid e-mail address."
-msgstr "Indtast en gyldig e-mail-adresse."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:430
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ingen fil blev indsendt. Kontroller kodningstypen i formularen."
-
-#: core/validators.py:189 forms/fields.py:461
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Indsend en billedfil. Filen, du indsendte, var enten ikke et billede eller en "
-"defekt billedfil."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL'en %s henviser ikke til en gyldig billedfil."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefonnumre skal være i formatet XXX-XXX-XXXX. \"%s\" er ugyldigt."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL'en %s henviser ikke til en gyldig QuickTime-video."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "En gyldig URL er påkrævet."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Gyldig HTML er påkrævet. Specifikke fejl:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Ugyldig XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Ugyldig URL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Denne URL %s henviser ikke til en gyldig side eller fil."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Indtast en gyldig amerikansk statsforkortelse."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgstr "Var din mund! Ordet %s er ikke tilladt her."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Dette felt skal matche feltet '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Indtast venligst noget i mindst ét felt"
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Udfyld venligst begge felter eller lad dem begge være tomme."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Dette felt skal udfyldes, hvis %(field)s er lig %(value)s."
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Dette felt skal udfyldes, hvis %(field)s er forskellig fra %(value)s."
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Identiske værdier er ikke tilladt."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Denne værdi skal være mellem %(lower)s og %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Denne værdi skal være en mindst %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Denne værdi må højst være %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Denne værdi skal være en potens af %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Indtast venligst et gyldigt decimaltal."
-
-#: core/validators.py:440
-#, fuzzy, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-"Please enter a valid decimal number with at most %s total digits."
-msgstr "Indtast venligst et gyldigt decimaltal med %s ciffer."
-"Indtast venligst et gyldigt decimaltal med maksimalt %s cifre i alt."
-
-#: core/validators.py:443
-#, fuzzy, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr "Indtast venligst et gyldigt decimaltal med en heltalsdel på %s ciffer."
-"Indtast venligst et gyldigt decimaltal med en heltalsdel på maksimalt %s cifre."
-#: core/validators.py:446
-#, fuzzy, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr "Indtast venligst et gyldigt decimaltal med %s cifre efter kommaet."
-"Indtast venligst et gyldigt decimaltal med maksimalt %s cifre efter kommaet."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Indtast venligst et gyldigt flydende-komma-tal."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Kontroller, at den fil, du uploader, er på mindst %s bytes."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Kontroller, at den fil, du uploader, er på maksimalt %s bytes."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Formatet i dette felt er forkert."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Dette felt er ugyldigt."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Kunne ikke finde noget i %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL'en %(url)s returnerede det ugyldige indholdstypehoved '%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Luk venligst det uafsluttede tag %(tag)s fra linje %(line)s. "
-"(Linjen starter med \"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Noget tekst, som starter på linje %(line)s, er ikke tilladt i den givne "
-"sammenhæng. (Linjen starter med \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" på linje %(line)s er ikke en gyldig attribut. (Linjen starter "
-"med \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" på linje %(line)s er et ugyldigt tag. (Linjen starter med \"%"
-"(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Et tag på linje %(line)s mangler en eller flere påkrævede attributter. "
-"(Linjen starter med \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Attributten \"%(attr)s\" på linje %(line)s har en ugyldig værdi. (Linjen "
-"starter med \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"%(object)s med denne %(type)s eksisterer allerede for den givne %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s med dette %(fieldname)s eksisterer allerede."
-
-#: db/models/fields/__init__.py:170 db/models/fields/__init__.py:343
-#: db/models/fields/files.py:168 db/models/fields/files.py:179
-#: forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Dette felt er påkrævet."
-
-#: db/models/fields/__init__.py:457
-msgid "This value must be an integer."
-msgstr "Denne værdi skal et heltal."
-
-#: db/models/fields/__init__.py:503
-msgid "This value must be either True or False."
-msgstr "Denne værdi skal være enten True eller False."
-
-#: db/models/fields/__init__.py:532
-msgid "This field cannot be null."
-msgstr "Dette felt kan ikke være null."
-
-#: db/models/fields/__init__.py:634 db/models/fields/__init__.py:651
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Indtast gyldig dato og tid i formatet ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:707
-msgid "This value must be a decimal number."
-msgstr "Denne værdi skal et decimaltal."
-
-#: db/models/fields/__init__.py:854
-msgid "This value must be either None, True or False."
-msgstr "Denne værdi skal være None, True eller False."
-
-#: db/models/fields/__init__.py:969 db/models/fields/__init__.py:982
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Indtast en gyldig tid i formatet TT:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Indtast et gyldigt filnavn."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Indtast venligst en gyldig %s."
-
-#: db/models/fields/related.py:759
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hold \"Ctrl\" (eller \"Æbletasten\" på Mac) nede for at vælge mere end en."
-
-#: db/models/fields/related.py:839
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr "Indtast venligst gyldige %(self)s-ID'er. Værdien %(value)r er ugyldig."
-"Indtast venligst gyldige %(self)s-ID'er. Værdierne %(value)r er ugyldige."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Indtast en gyldig værdi."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Denne værdi må maksimalt indeholde %(max)d tegn (den har %(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Denne værdi skal mindst indeholde %(min)d tegn (den indeholder %(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Denne værdi skal være mindre end eller lig %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Denne værdi skal være større end eller lig %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Indtast et tal."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Der må maksimalt være %s cifre i alt."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Der må højst være %s decimalpladser."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Der må maksimalt være %s cifre før decimaltegnet."
-
-#: forms/fields.py:272 forms/fields.py:793
-msgid "Enter a valid date."
-msgstr "Indtast en gyldig dato."
-
-#: forms/fields.py:305 forms/fields.py:794
-msgid "Enter a valid time."
-msgstr "Indtast en gyldig tid."
-
-#: forms/fields.py:344
-msgid "Enter a valid date/time."
-msgstr "Indtast gyldig dato/tid."
-
-#: forms/fields.py:431
-msgid "No file was submitted."
-msgstr "Ingen fil blev indsendt."
-
-#: forms/fields.py:432 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Den indsendte fil er tom."
-
-#: forms/fields.py:522
-msgid "Enter a valid URL."
-msgstr "Indtast en gyldig URL."
-
-#: forms/fields.py:523
-msgid "This URL appears to be a broken link."
-msgstr "Denne URL henviser ikke til en gyldig side eller fil."
-
-#: forms/fields.py:591 forms/fields.py:642
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Marker en gyldigt valgnulighed; '%(value)s' er ikke en af de "
-"tilgængelige valgmuligheder."
-
-#: forms/fields.py:643 forms/fields.py:704 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Indtast en liste af værdier."
-
-#: forms/fields.py:822
-msgid "Enter a valid IPv4 address."
-msgstr "Indtast en gyldig IPv4-adresse."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Marker en gyldig valgmulighed. Det valg, du har foretaget, er ikke "
-"blandt de tilgængelige valgmuligheder."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Marker et gyldigt valg. %s er ikke en af de tilgængelige "
-"valgmuligheder."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgstr "Sørg for din tekst er kortere end %s tegn."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Linjeskift er ikke tilladt her."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Markér et gyldigt valg; '%(data)s' er ikke i %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Indtast et heltal mellem -32,768 og 32,767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Indtast et positivt tal."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Indtast et heltal mellem 0 og 32,767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "ja,nej,måske"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgstr "%(size)d byte"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "midnat"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "middag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Mandag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Tirsdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Onsdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Torsdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Fredag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Lørdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Søndag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Man"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Tir"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ons"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Tor"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Lør"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Søn"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Marts"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "December"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sept"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "eller"
-
-#: utils/timesince.py:21
-msgid "year"
-msgstr "år"
-
-#: utils/timesince.py:22
-msgid "month"
-msgstr "måned"
-
-#: utils/timesince.py:23
-msgid "week"
-msgstr "uge"
-
-#: utils/timesince.py:24
-msgid "day"
-msgstr "dag"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgstr "time"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgstr "minut"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutter"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr ""
-
-#: utils/timesince.py:57
-#, fuzzy, python-format
-msgid ", %(number)d %(type)s"
-msgstr ""
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr ""
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s blev ændret."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s blev opdateret."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s blev slettet."
-
-#~ msgid "Added %s."
-#~ msgstr "Tilføjede %s."
-
-#~ msgid "Deleted %s."
-#~ msgstr "Slettede %s."
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "Har du <a href=\"/password_reset/\">glemt din adgangskode</a>?"
-
-#~ msgid "Ordering"
-#~ msgstr "Rækkefølge"
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "Din nye adgangskode er: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr "Du kan ændre din adgangskode ved at gå til denne side:"
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Brug '[algo]$[salt]$[hexdigest]'"
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "Adskil flere ID'er med kommaer."
diff --git a/webapp/django/conf/locale/da/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/da/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 389588a..0000000
--- a/webapp/django/conf/locale/da/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/da/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/da/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 9e33a07..0000000
--- a/webapp/django/conf/locale/da/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# Translation of djangojs.po to Danish
-# This file is distributed under the same license as the Django package.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-11 20:17+0200\n"
-"PO-Revision-Date: 2008-08-13 22:00+0200\n"
-"Last-Translator: Finn Gruwier Larsen<finn@gruwier.dk>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Tilgængelige %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Vælg alle"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Tilføj"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Fjern"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Valgte %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Foretag dit/dine valg og klik "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Fravælg alle"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar Marts April Maj Juni Juli August September Oktober November "
-"December"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M T O T F L"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Vis"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Skjul"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Nu"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Ur"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Vælg et tidspunkt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Midnat"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 morgen"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Middag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Annuller"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "I dag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalender"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "I går"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "I morgen"
diff --git a/webapp/django/conf/locale/de/LC_MESSAGES/django.mo b/webapp/django/conf/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 410154d..0000000
--- a/webapp/django/conf/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/de/LC_MESSAGES/django.po b/webapp/django/conf/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index c420c24..0000000
--- a/webapp/django/conf/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4590 +0,0 @@
-# Translation of django.po to German
-#
-# Copyright (C) 2005-2008,
-# This file is distributed under the same license as the django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-23 20:19+0200\n"
-"PO-Revision-Date: 2008-08-17 23:58+0100\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: German\n"
-"X-Poedit-Country: GERMANY\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Arabisch"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Bulgarisch"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "Katalanisch"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Tschechisch"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Walisisch"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Dänisch"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Deutsch"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Griechisch"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Englisch"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Spanisch"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "Estnisch"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Argentinisches Spanisch"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "Baskisch"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "Persisch"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "Finnisch"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "Französisch"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "Irisch"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "Galicisch"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "Ungarisch"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "Hebräisch"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "Kroatisch"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "Isländisch"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "Italienisch"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "Japanisch"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "Georgisch"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "Koreanisch"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "Lettisch"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "Litauisch"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "Mazedonisch"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "Holländisch"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "Norwegisch"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "Polnisch"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "Portugiesisch"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "Brasilianisches Portugiesisch"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "Rumänisch"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "Russisch"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "Slowakisch"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "Slowenisch"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "Serbisch"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "Schwedisch"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "Tamilisch"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "Telugisch"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "Türkisch"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "Ukrainisch"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "Vereinfachtes Chinesisch"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "Traditionelles Chinesisch"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Nach %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Alle"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Alle Daten"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Heute"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Letzte 7 Tage"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Diesen Monat"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Dieses Jahr"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:389
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Ja"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:389
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Nein"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:389
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "Zeitpunkt der Aktion"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "Objekt-ID"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "Objekt Darst."
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "Aktionskennzeichen"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "Änderungsmeldung"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "Logeintrag"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "Logeinträge"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "-"
-
-#: contrib/admin/options.py:329
-#, python-format
-msgid "Changed %s."
-msgstr "%s geändert."
-
-#: contrib/admin/options.py:329 contrib/admin/options.py:339
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "und"
-
-#: contrib/admin/options.py:334
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" hinzugefügt."
-
-#: contrib/admin/options.py:338
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s von %(name)s \"%(object)s\" geändert."
-
-#: contrib/admin/options.py:343
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" gelöscht."
-
-#: contrib/admin/options.py:347
-msgid "No fields changed."
-msgstr "Keine Felder geändert."
-
-#: contrib/admin/options.py:408 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt."
-
-#: contrib/admin/options.py:412 contrib/admin/options.py:445
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Das Element kann jetzt weiter bearbeitet werden."
-
-#: contrib/admin/options.py:422 contrib/admin/options.py:455
-#, python-format
-msgid "You may add another %s below."
-msgstr "Jetzt kann ein weiteres Element des Typs %s angelegt werden."
-
-#: contrib/admin/options.py:443
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert."
-
-#: contrib/admin/options.py:451
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt. Das Element kann jetzt "
-"geändert werden."
-
-#: contrib/admin/options.py:517
-#, python-format
-msgid "Add %s"
-msgstr "%s hinzufügen"
-
-#: contrib/admin/options.py:595
-#, python-format
-msgid "Change %s"
-msgstr "%s ändern"
-
-#: contrib/admin/options.py:627
-msgid "Database error"
-msgstr "Datenbankfehler"
-
-#: contrib/admin/options.py:677
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht."
-
-#: contrib/admin/options.py:684
-msgid "Are you sure?"
-msgstr "Sind Sie ganz sicher?"
-
-#: contrib/admin/options.py:712
-#, python-format
-msgid "Change history: %s"
-msgstr "Änderungsgeschichte: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Bitte einen gültigen Benutzernamen und ein Passwort eingeben. Beide Felder "
-"berücksichtigen die Groß-/Kleinschreibung."
-
-#: contrib/admin/sites.py:242 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Bitte neu anmelden, da die Session ausgelaufen ist. Keine Angst, die "
-"Beiträge wurden gesichert."
-
-#: contrib/admin/sites.py:249 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Ihr Browser scheint keine Cookies zu akzeptieren. Bitte aktivieren Sie diese "
-"und laden Sie die Seite neu."
-
-#: contrib/admin/sites.py:263 contrib/admin/sites.py:269
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Benutzernamen dürfen das Zeichen '@' nicht enthalten."
-
-#: contrib/admin/sites.py:266 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Die E-Mail-Adresse entspricht nicht Ihrem Benutzernamen. Bitte stattdessen '%"
-"s' versuchen."
-
-#: contrib/admin/sites.py:335
-msgid "Site administration"
-msgstr "Seitenverwaltung"
-
-#: contrib/admin/sites.py:357 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Anmelden"
-
-#: contrib/admin/sites.py:402
-#, python-format
-msgid "%s administration"
-msgstr "%s-Verwaltung"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Ein oder mehrere %(fieldname)s in %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ein oder mehrere %(fieldname)s in %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Zeit:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Derzeit:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Ändern:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Seite nicht gefunden"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/app_index.html:8
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Start"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverfehler"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverfehler (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfehler <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ein Fehler ist aufgetreten. Dieser Fehler wurde an die Serververwalter per E-"
-"Mail gemeldet und sollte in Kürze behoben sein. Vielen Dank für Ihr "
-"Verständnis."
-
-#: contrib/admin/templates/admin/app_index.html:10
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Willkommen,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Passwort ändern"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Abmelden"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django-Systemverwaltung"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-Verwaltung"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Hinzufügen"
-
-#: contrib/admin/templates/admin/change_form.html:27
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Geschichte"
-
-#: contrib/admin/templates/admin/change_form.html:28
-msgid "View on site"
-msgstr "Auf der Seite anzeigen"
-
-#: contrib/admin/templates/admin/change_form.html:38
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Bitte den aufgeführten Fehler korrigieren."
-msgstr[1] "Bitte die aufgeführten Fehler korrigieren."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s hinzufügen"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:10
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Löschen"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:16
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Die Löschung des %(object_name)s '%(escaped_object)s' hätte die Löschung von "
-"abhängigen Daten zur Folge, aber Sie haben nicht die nötigen Rechte um die "
-"folgenden abhängigen Daten zu löschen:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:23
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen "
-"wollen? Es werden zusätzlich die folgenden abhängigen Daten gelöscht:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:28
-msgid "Yes, I'm sure"
-msgstr "Ja, ich bin sicher"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Nach %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelle, die in der Anwendung %(name)s vorhanden sind."
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Ändern"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Sie haben keine Berechtigung, irgendetwas zu ändern."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Kürzliche Aktionen"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Meine Aktionen"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Keine vorhanden"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, dass "
-"die richtigen Datenbanktabellen angelegt wurden und die Datenbank vom "
-"verwendeten Datenbankbenutzer auch lesbar ist."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Benutzername:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Passwort:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Datum/Zeit"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Benutzer"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Aktion"
-
-#: contrib/admin/templates/admin/object_history.html:24
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht "
-"über diese Verwaltungsseiten angelegt."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Zeige alle"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Los"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "Ein Ergebnis"
-msgstr[1] "%(counter)s Ergebnisse"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s gesamt"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Als neu sichern"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Sichern und neu hinzufügen"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Sichern und weiter bearbeiten"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Sichern"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere "
-"Optionen für den Benutzer geändert werden."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Benutzername"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Passwort"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Passwort (wiederholen)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Bitte geben Sie ein neues Passwort für den Benutzer <strong>%(username)s</"
-"strong> ein."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Vielen Dank, dass Sie hier ein paar nette Minuten verbracht haben."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Erneut anmelden"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Passwort ändern"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Passwort erfolgreich geändert"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Ihr Passwort wurde geändert."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter "
-"dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das "
-"neue Kennwort ein."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Altes Passwort:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Neues Passwort:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Passwort wiederholen:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Mein Passwort ändern"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Passwort zurücksetzen"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Passwort zurücksetzen beendet"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Ihr Passwort wurde zurückgesetzt. Sie können sich nun anmelden."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Zurücksetzen des Passworts bestätigen"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Neues Passwort eingeben"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Bitte geben Sie Ihr neues Passwort zweimal ein, damit wir überprüfen können, "
-"ob es richtig eingetippt wurde."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Passwort wurde nicht erfolgreich zurückgesetzt"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Der Link zum Zurücksetzen Ihres Passworts ist ungültig, wahrscheinlich weil "
-"er schon einmal benutzt wurde. Bitte setzen Sie Ihr Passwort erneut zurück."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Passwort wurde erfolgreich zurückgesetzt"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Wir haben Ihnen eine E-Mail mit Anweisungen zum Zurücksetzen Ihres Passwort "
-"an die von Ihnen angegebene E-Mail-Adresse geschickt. Sie sollten diese in "
-"Kürze erhalten."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Sie erhalten diese E-Mail, weil Sie ein neues Passwort"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "für Ihren Benutzer bei %(site_name)s angefordert haben."
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Ihr Benutzername, falls Sie ihn vergessen haben:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Vielen Dank, dass Sie unsere Seiten benutzen!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Das Team von %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Passwort vergessen? Einfach Ihre E-Mail-Adresse eingeben und wir senden "
-"Ihnen Anweisungen zum Zurücksetzen Ihres Passworts."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-Mail-Adresse:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Mein Passwort zurücksetzen"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Alle Tage"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "%s auswählen"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "%s zur Änderung auswählen"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "Website"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "Template"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "Schlagwort:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "Filter:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "Ansicht:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Anwendung %r nicht gefunden"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modell %(model_name)r wurde nicht in Anwendung %(app_label)r gefunden"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "Das verknüpfte `%(app_label)s.%(data_type)s` Objekt"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "Modell:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "verknüpftes `%(app_label)s.%(object_name)s` Objekt"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "Alle %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "Anzahl von %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Felder am %s Objekt"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Ganzzahl"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Boolscher Wert (True oder False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Zeichenkette (bis zu %(max_length)s Zeichen)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Kommaseparierte Liste von Ganzzahlen"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Datum (ohne Uhrzeit)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Datum (mit Uhrzeit)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Dezimalzahl"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-Mail-Adresse"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Dateipfad"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Gleitkommazahl"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP-Adresse"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolscher Wert (True, False oder None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Beziehung zum Eltern-Modell"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefonnummer"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Text"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Zeit"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "Adresse (URL)"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S. Bundesstaat (zwei Großbuchstaben)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML-Text"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ist scheinbar kein urlpattern-Objekt"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentations-Bookmarklets"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Um Bookmarklets zu installieren, müssen diese Links in "
-"die\n"
-"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in "
-"die\n"
-"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder "
-"Seite\n"
-"aufgerufen werden. Einige Bookmarklets sind auf den Zugriff von 'internen'\n"
-"Rechnern beschränkt. Falls nicht klar ist, ob ein Rechner als 'intern'\n"
-"bewertet wird, bitte den Administrator fragen.</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentation für diese Seite"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Springt von jeder Seite zu der Dokumentation für den View, der diese Seite "
-"erzeugt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Objekt-ID anzeigen"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Zeigt den Content-Type und die eindeutige ID für Seiten, die ein einzelnes "
-"Objekt repräsentieren."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Dieses Objekt ändern (Aktives Fenster)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Springt zu der Administrationsseite für dieses Objekt, wenn diese Seite ein "
-"Objekt repräsentiert."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Dieses Objekt ändern (Neues Fenster)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Persönliche Infos"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Berechtigungen"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Wichtige Daten"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Gruppen"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Benutzer hinzufügen"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Passwort erfolgreich geändert."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Passwort ändern: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Erforderlich. 30 Zeichen oder weniger. Nur alphanumerische Zeichen "
-"(Buchstaben, Ziffern und Unterstriche) sind erlaubt."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Passwort bestätigen"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Dieser Benutzername ist bereits vergeben."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "Die beiden Passwörter sind nicht identisch."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Dieser Benutzer ist inaktiv."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Der Webbrowser scheint keine Cookies aktiviert zu haben. Cookies sind für "
-"die Anmeldung zwingend erforderlich."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-Mail-Adresse"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Zu dieser E-Mail-Adresse existiert kein Benutzer. Sicher, dass Sie sich mit "
-"dieser Adresse registriert haben?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Passwort auf %s zurücksetzen"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Neues Passwort"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Neues Passwort bestätigen"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Altes Passwort"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Das alte Passwort war falsch. Bitte neu eingeben."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "Name"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "Codename"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "Berechtigung"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "Berechtigungen"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "Gruppe"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "Gruppen"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "Benutzername"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "Vorname"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "Nachname"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "E-Mail-Adresse"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "Passwort"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Die Form '[algo]$[salt]$[hexdigest]' verwenden, oder das <a href=\"password/"
-"\">Passwort ändern Formular</a> benutzen."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "Redakteur-Status"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "Aktiv"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Legt fest, ob dieser Benutzer aktiv ist. Kann deaktiviert werden, anstatt "
-"Benutzer zu löschen."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "Administrator-Status"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln "
-"zuweisen zu müssen."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "Letzte Anmeldung"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "Mitglied seit"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Zusätzlich zu den manuell angelegten Rechten erhält dieser Benutzer auch "
-"alle Rechte, die seine zugewiesenen Gruppen haben."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "Berechtigungen"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "Benutzer"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "Benutzer"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "Mitteilung"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Abgemeldet"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "Objekt-ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "Überschrift"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "Kommentar"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "Bewertung #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "Bewertung #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "Bewertung #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "Bewertung #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "Bewertung #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "Bewertung #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "Bewertung #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "Bewertung #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "ist eine Bewertung"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "Datum/Zeit Erstellung"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "ist öffentlich"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "ist gelöscht"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen wird "
-"dann \"Dieser Kommentar wurde entfernt\" Meldung angezeigt."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "Kommentare"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Inhaltsobjekt"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Geschrieben von %(user)s am %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "Autorname"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "IP-Adresse"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "Bestätigt vom Betreiber"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "Freier Kommentar"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "Freie Kommentare"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "Bewertung"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "Bewertungsdatum"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "Karma Bewertung"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "Karma Bewertungen"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d Bewertung von %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Dieser Kommentar ist von %(user)s markiert:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "Kennzeichnungsdatum"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "Benutzerkennzeichnung"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "Benutzerkennzeichnungen"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Gekennzeichnet von %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "Löschdatum"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "Löschung vom Moderator"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "Löschungen vom Moderator"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Vom Moderator %r gelöscht"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Passwort vergessen?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Bewertungen"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Erforderlich"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Optional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Ein Bild veröffentlichen"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Kommentar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Kommentarvorschau"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Ihr Name:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Diese Abstimmung ist zwingend erforderlich, da Sie an mindestens einer "
-"weiteren Abstimmung teilnehmen."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s "
-"Kommentar:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Dieser Kommentar ist von einem Benutzer mit weniger als %(count)s "
-"Kommentaren:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Dieser Kommentar ist von einem nicht einschätzbaren Benutzer:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Nur POST ist erlaubt"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Eines oder mehrere der erforderlichen Felder fehlen"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Jemand hat mit dem Kommentarformular herumgespielt (Sicherheitsverletzung)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Das Kommentarformular hatte einen falschen 'target' Parameter -- die Objekt-"
-"ID ist ungültig."
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-"Das Kommentarformular wurde nicht mit 'preview' oder 'post' abgeschickt"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonyme Benutzer dürfen nicht abstimmen"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Ungültige Kommentar-ID"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Keine Abstimmung für dich selbst"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "Python Model-Klassenname"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "Inhaltstyp"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "Inhaltstypen"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Beispiel: '/about/contact/'. Wichtig: Am Anfang und Ende muss ein / stehen."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrägstriche "
-"enthalten."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Erweiterte Optionen"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "Titel"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "Inhalt"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "Kommentare aktivieren"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "Name der Vorlage"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gefüllt ist, "
-"wird 'flatpages/default.html' als Standard gewählt."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "Registrierung erforderlich"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Wenn hier ein Haken gesetzt ist, können nur angemeldete Benutzer diese Seite "
-"sehen."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "Webseite"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "Webseiten"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Kein geometrischer Wert gegeben."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Ungültiger geometrischer Wert."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Ungültiger geometrischer Typ."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f Million"
-msgstr[1] "%(value).1f Millionen"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f Milliarde"
-msgstr[1] "%(value).1f Milliarden"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f Billion"
-msgstr[1] "%(value).1f Billionen"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "ein"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "zwei"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "drei"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "vier"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "fünf"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "sechs"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "sieben"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "acht"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "neun"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "heute"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "morgen"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "gestern"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Bitte eine gültige Postleitzahl im Format NNNN oder ANNNNAAA eingeben."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Dieses Feld darf nur Ziffern enthalten."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Dieses Feld benötigt 7 oder 8 Ziffern."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-"Bitte eine gültige CUIT im Format XX-XXXXXXXX-X oder XXXXXXXXXXXX eingeben."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Ungültige CUIT."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Kärnten"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Niederösterreich"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Oberösterreich"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburg"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Steiermark"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tirol"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Wien"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Bitte eine gültige Postleitzahl im Format XXXX eingeben."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-"Bitte eine gültige österreichische Sozialversicherungsnummer im Format XXXX "
-"XXXXXX eingeben."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Bitte eine gültige vierstellige Postleitzahl eingeben."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Bitte eine gültige Postleitzahl im Format XXXXX-XXX eingeben."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefonnummern müssen das Format XX-XXXX-XXXX haben."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "Bitte einen gültigen brasilianischen Bundesstaat auswählen."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Ungültige CPF-Nummer."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Dieses Feld benötigt mindestens 11 Ziffern oder 14 Zeichen."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Ungültige CNPJ-Nummer."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Dieses Feld benötigt mindestens 14 Ziffern."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Bitte eine gültige Postleitzahl im Format XXX XXX eingeben."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Bitte eine gültige kanadische Sozialversicherungsnummer im Format XXX-XXX-"
-"XXX eingeben."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Bern"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Freiburg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Genf"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubünden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Luzern"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zürich"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Bitte eine gültige Schweizer Identifikations- oder Reisepassnummer im "
-"FormatX1234567<0 oder 1234567890 eingeben."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Bitte eine gültige chilenische RUT eingeben."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Bitte eine chilenische RUT im Format XX.XXX.XXX-X eingeben."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Diese chilenische RUT ist ungültig."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bayern"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Vorpommern"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Niedersachsen"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Nordrhein-Westfalen"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rheinland-Pfalz"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Sachsen"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Sachsen-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thüringen"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Bitte eine gültige Postleitzahl im Format XXXXX eingeben."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Bitte eine gültige deutsche Personalausweisnummer im Format XXXXXXXXXXX-"
-"XXXXXXX-XXXXXXX-X eingeben."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almería"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Ávila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Balearische Inseln"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Cáceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cádiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castello"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Córdoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruña"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "León"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Málaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturien"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Kantabrien"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusien"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragonien"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Fürstentum Asturien"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Balearische Inseln"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Baskenland"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Kanarische Inseln"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Kastilien-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Kastilien-León"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Katalonien"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicien"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Foralgemeinschaft Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Bitte eine gültige Postleitzahl im Format 01XXX bis 52XXX eingeben."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Bitte eine gültige Telefonnummer in einem der folgenden Formate eingeben "
-"6XXXXXXXX, 8XXXXXXXX oder 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Bitte eine gültige NIF, NIE oder CIF eingeben."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Bitte eine gültige NIF oder NIE eingeben."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Ungültige Prüfsumme für NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Ungültige Prüfsumme für NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Ungültige Prüfsumme für CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Bitte eine gültige Kontonummer im Format XXXX-XXXX-XX-XXXXXXXXXX eingeben."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Ungültige Prüfsumme für Kontonummer."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Bitte eine gültige finnische Sozialversicherungsnummer eingeben."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Bitte eine gültige Postleitzahl im Format XXXXXXX eingeben."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Bitte eine gültige isländische Identifikationsnummer im Format XXXXXX-XXXX "
-"eingeben."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Die isländische Identifikationsnummer ist nicht gültig."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Bitte eine gültige Postleitzahl eingeben."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Bitte eine gültige Sozialversicherungsnummer eingeben."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Bitte eine gültige Umsatzsteuernummer eingeben."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-"Bitte eine gültige Postleitzahl im Format XXXXXXX oder XXX-XXXX eingeben."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaidō"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokio"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyōto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Ōsaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyōgo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Ōita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estado de México"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Bitte eine gültige Postleitzahl eingeben."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Bitte eine gültige Telefonnummer eingeben."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Bitte eine gültige SoFi-Nummer eingeben."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drenthe"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Nordbrabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Nordholland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Südholland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Bitte eine gültige norwegische Sozialversicherungsnummer eingeben."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Dieses Feld benötigt 8 Zeichen."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Dieses Feld benötigt 11 Zeichen."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "Nationale Identifikationsnummer besteht aus 11 Ziffern."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Falsche Prüfsumme für die nationale Identifikationsnummer."
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Bitte eine Steuernummer (NIP) im Format XXX-XXX-XX-XX oder XX-XX-XXX-XXX "
-"eingeben."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Falsche Prüfsumme für die Steuernummer (NIP)."
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"Nationale Geschäftsregistrierungsnummer (REGON) besteht aus 7 oder 9 Zeichen."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-"Falsche Prüfsumme für die nationale Geschäftsregistrierungsnummer (REGON)."
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Bitte eine gültige Postleitzahl im Format XX-XXX eingeben."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Niederschlesien"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kujawien-Pommern"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Land Lebus"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Łódź"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Kleinpolen"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masowien"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Oppeln"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Karpatenvorland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pommern"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Schlesien"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Heiligkreuz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Ermland-Masuren"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Großpolen"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Vorpommern"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Bitte eine gültige CIF eingeben."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Bitte eine gültige CNP eingeben."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-"Bitte eine gültige IBAN im Format ROXX-XXXX-XXXX-XXXX-XXXX-XXXX eingeben."
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Telefonnummern müssen das Format XXXX-XXXXXX haben."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Bitte eine gültige Postleitzahl im Format XXXXXX eingeben"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Bitte eine gültige Postleitzahl im Format XXXXX oder XXX XX eingeben."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banská Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banská Štiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Bánovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytča"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Čadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolný Kubín"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajská Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenné"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kežmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucké Nové Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoča"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovský Mikuláš"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lučenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Námestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nové Mesto nad Váhom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nové Zámky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizánske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piešťany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltár"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Považská Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Prešov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Púchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revúca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Rožňava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ružomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spišská Nová Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stará Ľubovňa"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidník"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topoľčany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebišov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trenčín"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turčianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdošín"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Veľký Krtíš"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Topľou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Žarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Žiar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Žilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banská Bystrica Region"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Bratislavský kraj"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Kosice"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Prešov"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trenčín"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Žilina"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Bitte eine gültige Postleitzahl eingeben."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Greater London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "County Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Central Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "England"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Nordirland"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Schottland"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Wales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-"Bitte eine gültige Postleitzahl im Format XXXXX oder XXXXX-XXXX eingeben."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-"Bitte eine gültige US-amerikanische Sozialversicherungsnummer im Format XXX-"
-"XX-XXXX eingeben."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Bitte eine gültige südafrikanische Identifikationsnummer eingeben."
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Bitte eine gültige südafrikanische Postleitzahl eingeben."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Ostkap"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Freistaat"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Nordkap"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "Nordwest"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Westkap"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "Umleitung von"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/"
-"events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "Umleitung nach"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am "
-"Anfang stehen."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "Umleitung"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "Umleitungen"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "Sitzungs-ID"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "Sitzungsdaten"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "Verfallsdatum"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "Sitzung"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "Sitzungen"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "Domainname"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "Anzeigename"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "Websites"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Bindestriche "
-"enthalten."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Großbuchstaben sind hier nicht erlaubt."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Kleinbuchstaben sind hier nicht erlaubt."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Bitte mit Komma getrennte, gültige E-Mail-Adressen eingeben."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Bitte eine gültige IP-Adresse eingeben."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Dieses Feld darf nicht leer sein."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Bitte eine ganze Zahl eingeben."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Nur alphabetische Zeichen sind hier erlaubt."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ungültiges Datum: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Bitte ein gültiges Datum im Format JJJJ-MM-TT eingeben."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Bitte eine gültige Zeit im Format SS:MM eingeben."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-"Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM "
-"eingeben."
-
-#: core/validators.py:166 forms/fields.py:423
-msgid "Enter a valid e-mail address."
-msgstr "Bitte eine gültige E-Mail-Adresse eingeben."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:441
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Es wurde keine Datei übermittelt. Überprüfen Sie das Encoding des Formulars."
-
-#: core/validators.py:189 forms/fields.py:472
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Bitte ein Bild hochladen. Die hochgeladene Datei ist kein Bild, oder ist "
-"defekt."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Die URL %s zeigt nicht auf ein gültiges Bild."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonnummern müssen das Format XXX-XXX-XXXX haben. \"%s\" ist ungültig."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Die URL %s zeigt nicht auf ein gültiges QuickTime-Video."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Eine gültige URL ist erforderlich."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Bitte gültiges HTML eingeben. Fehler sind:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Ungültiges XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Ungültige URL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Die URL %s funktioniert nicht."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Bitte eine gültige Abkürzung für einen US-Staat eingeben."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!"
-msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht gern gesehen!"
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Dieses Feld muss zum Feld '%s' passen."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Bitte mindestens eines der Felder ausfüllen."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Bitte entweder beide Felder ausfüllen, oder beide leer lassen."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-"Dieses Feld muss gefüllt sein, wenn Feld %(field)s den Wert %(value)s hat."
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-"Dieses Feld muss gefüllt sein, wenn Feld %(field)s nicht %(value)s ist."
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Doppelte Werte sind hier nicht erlaubt."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Dieser Wert muss zwischen %(lower)s und %(upper)s sein."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Dieser Wert muss mindestens %s sein."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Dieser Wert darf maximal %s sein."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Dieser Wert muss eine Potenz von %s sein."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Bitte eine gültige Dezimalzahl eingeben."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffer eingeben."
-msgstr[1] "Bitte eine gültige Dezimalzahl mit maximal %s Ziffern eingeben."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffer "
-"eingeben."
-msgstr[1] ""
-"Bitte eine gültige Dezimalzahl mit einer Gesamtzahl von maximal %s Ziffern "
-"eingeben."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstelle eingeben."
-msgstr[1] ""
-"Bitte eine gültige Dezimalzahl mit maximal %s Dezimalstellen eingeben."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Bitte eine gültige Gleitkommazahl eingeben."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-"Bitte sicherstellen, dass die hochgeladene Datei mindestens %s Bytes groß "
-"ist."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-"Bitte sicherstellen, dass die hochgeladene Datei maximal %s Bytes groß ist."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Das Format für dieses Feld ist falsch."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Dieses Feld ist ungültig."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Konnte nichts von %s empfangen."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schließen. Die Zeile "
-"beginnt mit \"%(start)s\"."
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile "
-"beginnt mit \"%(start)s\"."
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"Das Attribute %(attr)s in Zeile %(line)s ist ungültig. Die Zeile beginnt mit "
-"\"%(start)s\"."
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"<%(tag)s> in Zeile %(line)s ist ungültig. Die Zeile beginnt mit \"%(start)s"
-"\"."
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die "
-"Zeile beginnt mit \"%(start)s\"."
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Das Attribut %(attr)s in Zeile %(line)s hat einen ungültigen Wert. Die Zeile "
-"beginnt mit \"%(start)s\"."
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"Ein '%(object)s' in dieser '%(type)s' existiert bereits für dieses '%(field)"
-"s'."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Ein '%(optname)s' mit diesem '%(fieldname)s' existiert bereits."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Dieses Feld ist zwingend erforderlich."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "Dieser Wert muss eine Ganzzahl sein."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "Dieser Wert muss wahr oder falsch sein."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "Dieses Feld darf nicht leer sein."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr ""
-"Bitte eine gültige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM[ss[."
-"uuuuuu]] eingeben."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "Dieser Wert muss eine Dezimalzahl sein."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "Dieser Wert muss None, True oder False sein."
-
-#: db/models/fields/__init__.py:895
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Bitte ein gültiges Kürzel, bestehend aus Buchstaben, Ziffern, "
-"Unterstrichen und Bindestrichen, eingeben."
-
-#: db/models/fields/__init__.py:944 db/models/fields/__init__.py:957
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Bitte eine gültige Zeit im Format HH:MM[:ss[.uuuuuu]] eingeben."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Bitte einen gültigen Dateinamen eingeben."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Bitte ein gültiges '%s' eingeben."
-
-#: db/models/fields/related.py:786
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command"
-"\", beim Klicken gedrückt halten."
-
-#: db/models/fields/related.py:866
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Bitte gültige IDs für %(self)s eingeben. Der Wert %(value)r ist ungültig."
-msgstr[1] ""
-"Bitte gültige IDs für %(self)s eingeben. Die Werte %(value)r sind ungültig."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Bitte einen gültigen Wert eingeben."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Bitte sicherstellen, dass der Text maximal %(max)d Zeichen hat. (Er hat %"
-"(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Bitte sicherstellen, dass der Text wenigstens %(min)d Zeichen hat. (Er hat %"
-"(length)d.)"
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Dieser Wert darf maximal %s sein."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Dieser Wert muss größer oder gleich %s sein."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Bitte eine Zahl eingeben."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Bitte geben Sie nicht mehr als insgesamt %s Ziffern ein."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Bitte geben Sie nicht mehr als %s Dezimalstellen ein."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Bitte geben Sie nicht mehr als %s Ziffern vor dem Komma ein."
-
-#: forms/fields.py:282 forms/fields.py:804
-msgid "Enter a valid date."
-msgstr "Bitte ein gültiges Datum eingeben."
-
-#: forms/fields.py:316 forms/fields.py:805
-msgid "Enter a valid time."
-msgstr "Bitte eine gültige Uhrzeit eingeben."
-
-#: forms/fields.py:355
-msgid "Enter a valid date/time."
-msgstr "Bitte ein gültiges Datum und Uhrzeit eingeben."
-
-#: forms/fields.py:442
-msgid "No file was submitted."
-msgstr "Es wurde keine Datei übertragen."
-
-#: forms/fields.py:443 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Die ausgewählte Datei ist leer."
-
-#: forms/fields.py:533
-msgid "Enter a valid URL."
-msgstr "Bitte eine gültige Adresse eingeben."
-
-#: forms/fields.py:534
-msgid "This URL appears to be a broken link."
-msgstr "Diese Adresse scheint nicht gültig zu sein."
-
-#: forms/fields.py:602 forms/fields.py:653
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Bitte eine gültige Auswahl treffen. %(value)s ist keine gültige Auswahl."
-
-#: forms/fields.py:654 forms/fields.py:715 forms/models.py:529
-msgid "Enter a list of values."
-msgstr "Bitte eine Liste mit Werten eingeben."
-
-#: forms/fields.py:833
-msgid "Enter a valid IPv4 address."
-msgstr "Bitte eine gültige IPv4-Adresse eingeben."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Bitte eine gültige Auswahl treffen."
-
-#: forms/models.py:530
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Bitte eine gültige Auswahl treffen. %s ist keine gültige Auswahl."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Bitte sicherstellen, dass der Text weniger als %s Zeichen hat."
-msgstr[1] "Bitte sicherstellen, dass der Text weniger als %s Zeichen hat."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Zeilenumbrüche sind hier nicht erlaubt."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-"Bitte eine gültige Auswahl treffen; '%(data)s' ist nicht in %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Bitte eine ganze Zahl zwischen -32.768 und 32.767 eingeben."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Bitte eine ganze, positive Zahl eingeben."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Bitte eine ganze Zahl zwischen 0 und 32.767 eingeben."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "Ja,Nein,Vielleicht"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d Byte"
-msgstr[1] "%(size)d Bytes"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "nachm."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "vorm."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "nachm."
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "vorm."
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "Mitternacht"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "Mittag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Montag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dienstag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Mittwoch"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Donnerstag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Freitag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Samstag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sonntag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Mo"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Di"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mi"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Do"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fr"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sa"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "So"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "März"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dezember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "Jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "Feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "Mär"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "Apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "Mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "Jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "Jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "Aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "Sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "Okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "Nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "Dez"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dez."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "oder"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "Jahr"
-msgstr[1] "Jahre"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "Monat"
-msgstr[1] "Monate"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "Woche"
-msgstr[1] "Wochen"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "Tag"
-msgstr[1] "Tage"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "Stunde"
-msgstr[1] "Stunden"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "Minute"
-msgstr[1] "Minuten"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "Minuten"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j. N Y"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j. F"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s wurde erfolgreich angelegt."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s wurde erfolgreich aktualisiert."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s wurde gelöscht."
diff --git a/webapp/django/conf/locale/de/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/de/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 453b5ef..0000000
--- a/webapp/django/conf/locale/de/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/de/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/de/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 7502d22..0000000
--- a/webapp/django/conf/locale/de/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,119 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-15 14:38+0200\n"
-"PO-Revision-Date: 2008-06-23 21:02+0100\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Verfügbare %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Alles auswählen"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Hinzufügen"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Entfernen"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Ausgewählte %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Auswahl treffen und Klick auf"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Alles abwählen"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar März April Mai Juni Juli August September Oktober November "
-"Dezember"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M D M D F S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Einblenden"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Ausblenden"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Jetzt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Uhr"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Uhrzeit"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Mitternacht"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 Uhr"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Mittag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Heute"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalender"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Gestern"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Morgen"
diff --git a/webapp/django/conf/locale/el/LC_MESSAGES/django.mo b/webapp/django/conf/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index cd60509..0000000
--- a/webapp/django/conf/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/el/LC_MESSAGES/django.po b/webapp/django/conf/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index d9793c8..0000000
--- a/webapp/django/conf/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2766 +0,0 @@
-# translation of django.po to el
-# Copyright (C) 2006 and beyond
-# This file is distributed under the same license as the DJANGO package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-04-05 01:32+1000\n"
-"PO-Revision-Date: 2007-09-03 04:19+0100\n"
-"Last-Translator: Dimitris Glezos <dimitris@glezos.com>\n"
-"Language-Team: el <fedora-trans-el@redhat.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-
-#: db/models/manipulators.py:307
-#, fuzzy, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "αντικείμενο με τύπος για πεδίο."
-
-#: db/models/manipulators.py:308 contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
-msgid "and"
-msgstr "και"
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Παρακαλούμε εισάγετε ένα έγκυρο %s."
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "Ξεχωρίστε πολλαπλά ΙD με κόμματα."
-
-#: db/models/fields/related.py:644
-#, fuzzy
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Αναμονή Έλεγχος ή Εντολή ενεργό a επιλογή περισσότερα ένα."
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Παρακαλούμε εισάγετε ένα έγκυρο %(self)s IDs. Η τιμή %(value)r δεν είναι "
-"έγκυρη."
-msgstr[1] ""
-"Παρακαλούμε εισάγετε ένα έγκυρο %(self)s IDs. Οι τιμές %(value)r δεν είναι "
-"έγκυρες."
-
-#: db/models/fields/__init__.py:42
-#, fuzzy, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "με."
-
-#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274
-#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621
-#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376
-#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178
-msgid "This field is required."
-msgstr "Αυτό το πεδίο είναι απαραίτητο."
-
-#: db/models/fields/__init__.py:367
-msgid "This value must be an integer."
-msgstr "Αυτή η τιμή πρέπει να είναι ένας ακέραιος."
-
-#: db/models/fields/__init__.py:402
-msgid "This value must be either True or False."
-msgstr "Αυτή η τιμή πρέπει να είναι Αληθές ή Ψευδές."
-
-#: db/models/fields/__init__.py:423
-msgid "This field cannot be null."
-msgstr "Αυτό το πεδίο δεν μπορεί να είναι κενό (null)."
-
-#: db/models/fields/__init__.py:457 core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Εισάγετε μία έγκυρη ημερομηνία στη μορφή ΧΧΧΧ-MM-ΗΗ."
-
-#: db/models/fields/__init__.py:526 core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Εισάγετε μία έγκυρη ημερομηνία/ώρα στη μορφή ΧΧΧΧ-MM-ΗΗ ΩΩ:ΛΛ."
-
-#: db/models/fields/__init__.py:630
-msgid "Enter a valid filename."
-msgstr "Εισάγετε ένα έγκυρο όνομα αρχείου."
-
-#: db/models/fields/__init__.py:751
-#, fuzzy
-msgid "This value must be either None, True or False."
-msgstr "Αυτή η τιμή πρέπει να είναι Αληθές ή Ψευδές."
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Αραβικά"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Μπενγκάλι"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "Καταλανικά"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "Τσέχικα"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "Ουαλικά"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "Δανέζικα"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "Γερμανικά"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "Ελληνικά"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "Αγγλικά"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "Ισπανικά"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "Ισπανικά Αργεντινής"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "Φινλανδικά"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "Γαλλικά"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "Ουγγρικά"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr "Εβραϊκά"
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "Ισλανδικά"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "Ιταλικά"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "Γιαπωνέζικα"
-
-#: conf/global_settings.py:58
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Macedonian"
-msgstr "Μακεδονικά"
-
-#: conf/global_settings.py:61
-msgid "Dutch"
-msgstr "Ολλανδικά"
-
-#: conf/global_settings.py:62
-msgid "Norwegian"
-msgstr "Νορβηγικά"
-
-#: conf/global_settings.py:63
-msgid "Polish"
-msgstr "Πολωνικά"
-
-#: conf/global_settings.py:64
-msgid "Portugese"
-msgstr "Πορτογαλικά"
-
-#: conf/global_settings.py:65
-msgid "Brazilian"
-msgstr "Βραζιλιάνικα"
-
-#: conf/global_settings.py:66
-msgid "Romanian"
-msgstr "Ρουμανικά"
-
-#: conf/global_settings.py:67
-msgid "Russian"
-msgstr "Ρωσικά"
-
-#: conf/global_settings.py:68
-msgid "Slovak"
-msgstr "Σλοβακικά"
-
-#: conf/global_settings.py:69
-msgid "Slovenian"
-msgstr "Σλοβενικά"
-
-#: conf/global_settings.py:70
-msgid "Serbian"
-msgstr "Σερβικά"
-
-#: conf/global_settings.py:71
-msgid "Swedish"
-msgstr "Σουηδικά"
-
-#: conf/global_settings.py:72
-msgid "Tamil"
-msgstr "Ταμιλικά"
-
-#: conf/global_settings.py:73
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:74
-msgid "Turkish"
-msgstr "Τουρκικά"
-
-#: conf/global_settings.py:75
-msgid "Ukrainian"
-msgstr "Ουκρανικά"
-
-#: conf/global_settings.py:76
-msgid "Simplified Chinese"
-msgstr "Απλοποιημένα Κινέζικα"
-
-#: conf/global_settings.py:77
-msgid "Traditional Chinese"
-msgstr "Παραδοσιακά Κινέζικα"
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "χρόνος"
-msgstr[1] "χρόνια"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "μήνας"
-msgstr[1] "μήνες"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "εβδομάδα"
-msgstr[1] "εβδομάδες"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "ημέρα"
-msgstr[1] "ημέρες"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "ώρα"
-msgstr[1] "ώρες"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "λεπτό"
-msgstr[1] "λεπτά"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Δευτέρα"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Τρίτη"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Τετάρτη"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Πέμπτη"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Παρασκευή"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Σάββατο"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Κυριακή"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Ιανουάριος"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Φεβρουάριος"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Μάρτιος"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "Απρίλιος"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Μάιος"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Ιούνιος"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Ιούλιος"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Αύγουστος"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Σεπτέμβριος"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Οκτώβριος"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Νοέμβριος"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Δεκέμβριος"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "Ιαν"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "Φεβ"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "Μάρ"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "Απρ"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "Μάι"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "Ιούν"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "Ιούλ"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "Αύγ"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "Σεπ"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "Οκτ"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "Νοέ"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "Δεκ"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Ιάν."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Φεβ."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Αύγ."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Σεπτ."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Οκτ."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Νοέ."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Δεκ."
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr "μμ."
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr "πμ."
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr "ΜΜ"
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr "ΠΜ"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "μεσάνυχτα"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "μεσημέρι"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "j N Y"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "j N Y, P"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr "j F"
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος μικρότερο από %s χαρακτήρα."
-msgstr[1] "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος μικρότερο από %s χαρακτήρες."
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "Δεν επιτρέπονται αλλαγές γραμμών εδώ."
-
-#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Επιλέξτε μια έγκυρη επιλογή; Το '%(data)s' δεν είναι στα %(choices)s."
-
-#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:150
-#: newforms/widgets.py:174
-msgid "Unknown"
-msgstr "Άγνωστο"
-
-#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143
-#: newforms/widgets.py:174
-msgid "Yes"
-msgstr "Ναι"
-
-#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143
-#: newforms/widgets.py:174
-msgid "No"
-msgstr "Όχι"
-
-#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "Το αρχείο που υποβλήθηκε είναι κενό."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Εισάγετε έναν ακέραιο αριθμό μεταξύ -32,768 και 32,767."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Εισάγετε ένα θετικό αριθμό."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Εισάγετε έναν ακέραιο αριθμό μεταξύ 0 και 32,767."
-
-#: contrib/localflavor/no/forms.py:15
-#, fuzzy
-msgid "Enter a zip code in the format XXXX."
-msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ."
-
-#: contrib/localflavor/no/forms.py:36
-#, fuzzy
-msgid "Enter a valid Norwegian social security number."
-msgstr "Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό."
-
-#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fr/forms.py:17
-#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16
-#, fuzzy
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ."
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-#, fuzzy
-msgid "Iwate"
-msgstr "Ημ/νία:"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-#, fuzzy
-msgid "Tokyo"
-msgstr "Σήμερα"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:18
-#, fuzzy
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ."
-
-#: contrib/localflavor/br/forms.py:30
-#, fuzzy
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Τηλέφωνο μέσα είναι."
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46
-#, fuzzy
-msgid "Enter a valid Finnish social security number."
-msgstr "Εισάγετε ένα έγκυρο όνομα αρχείου."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:63
-#, fuzzy
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format"
-msgstr "Γερμανικά"
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-#, fuzzy
-msgid "Berlin"
-msgstr "Βραζιλιάνικα"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-#, fuzzy
-msgid "Hamburg"
-msgstr "Αύγ"
-
-#: contrib/localflavor/de/de_states.py:11
-#, fuzzy
-msgid "Hessen"
-msgstr "μήνυμα"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/usa/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/usa/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "κλειδί συνεδρίας"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "δεδομένα συνεδρίας"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "ημερομηνία λήξης"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "συνεδρία"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "συνεδρίες"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Τα δύο πεδία συνθηματικών δεν ταιριάζουν."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Ένας χρήστης με αυτό το όνομα χρήστη υπάρχει ήδη."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Ο πλοηγητής σας δεν φαίνεται να έχει ενεργοποιημένα τα αρχεία cookie. Τα "
-"αρχεία cookie απαιτούνται για να συνδεθείτε."
-
-#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Παρακαλούμε εισάγετε ένα σωστό όνομα χρήστη και συνθηματικό. Να σημειωθεί "
-"ότι και τα δύο πεδία κάνουν διάκριση μεταξύ πεζών και κεφαλαίων."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Αυτός ο λογαριασμός είναι ανενεργός."
-
-#: contrib/auth/forms.py:85
-#, fuzzy
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "χρήστης?"
-
-#: contrib/auth/forms.py:117
-#, fuzzy
-msgid "The two 'new password' fields didn't match."
-msgstr "συνθηματικό."
-
-#: contrib/auth/forms.py:124
-#, fuzzy
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "συνθηματικό."
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "Έγινε αποσύνδεση"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
-msgstr "όνομα"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "κωδικό όνομα"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "δικαίωμα"
-
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
-msgstr "διακαιώματα"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "ομάδα"
-
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
-msgstr "ομάδες"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "όνομα χρήστη"
-
-#: contrib/auth/models.py:90
-#, fuzzy
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "Απαραίτητο."
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "όνομα"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "επώνυμο"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "ηλεκτρονική διεύθυνση"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "συνθηματικό"
-
-#: contrib/auth/models.py:94
-#, fuzzy
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr "<a href=\"password/\"> συνθηματικό</a>."
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "Κατάσταση προσωπικού"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr "Ορίζει αν ο χρήστης μπορεί να συνδεθεί στο χώρο διαχείρισης."
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "ενεργό"
-
-#: contrib/auth/models.py:96
-#, fuzzy
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr "Ορίζει αν ο χρήστης μπορεί να συνδεθεί στο χώρο διαχείρισης."
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "κατάσταση υπερχρήστη"
-
-#: contrib/auth/models.py:97
-#, fuzzy
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "χρήστης διακαιώματα."
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "τελευταία σύνδεση"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "ημερομηνία σύνδεσης"
-
-#: contrib/auth/models.py:101
-#, fuzzy
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "Μέσα διακαιώματα χειρωνακτικά χρήστης get όλα διακαιώματα ομάδα είναι μέσα."
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "δικαιώματα χρήστη"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "χρήστης"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "χρήστες"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "Προσωπικές πληροφορίες"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "Δικαιώματα"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "Σημαντικές ημερομηνίες"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "Ομάδες"
-
-#: contrib/auth/models.py:258
-msgid "message"
-msgstr "μήνυμα"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "η"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr "η"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr "η"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "η"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f εκατομμύριο"
-msgstr[1] "%(value).1f εκατομμύρια"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f δισεκατομμύριο"
-msgstr[1] "%(value).1f δισεκατομμύρια"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f τρισεκατομμύριο"
-msgstr[1] "%(value).1f τρισεκατομμύρια"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "ένα"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "δύο"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "τρία"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "τέσσερα"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "πέντε"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "έξι"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "εφτά"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "οκτώ"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "εννιά"
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "όνομα python model class"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "τύπος περιεχομένου"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "τύποι περιεχομένου"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "ανακατεύθυνση από"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι, με εξαίρεση το όνομα χώρου. "
-"Παράδειγμα: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "ανακατεύθυνση προς"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι (όπως παραπάνω), ή ένα πλήρες URL "
-"που αρχίζει με 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "ανακατεύθυνση"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "ανακατευθύνσεις"
-
-#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315
-msgid "URL"
-msgstr "URL"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Παράδειγμα: '/about/contact/'. Βεβαιωθείτε ότι περιέχει καθέτους στην αρχή "
-"και το τέλος."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "τίτλος"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "περιεχόμενο"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "ενεργοποίηση σχολίων"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "όνομα προτύπου"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Παράδειγμα: 'flatpages/contact_page.html'. Αν δεν εισαχθεί, το σύστημα θα "
-"χρησιμοποιήσει το 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "απαιτείται εγγραφή"
-
-#: contrib/flatpages/models.py:14
-#, fuzzy
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "είναι μέσα χρήστες σελίδα."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "απλή σελίδα"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "απλές σελίδες"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID αντικειμένου"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "Επικεφαλίδα"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "σχόλιο"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "βαθμολογία #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "βαθμολογία #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "βαθμολογία #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "βαθμολογία #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "βαθμολογία #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "βαθμολογία #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "βαθμολογία #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "βαθμολογία #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "είναι έγκυρη βαθμολογία"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "ημερομηνία/ώρα υποβολής"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "είναι δημόσιο"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "διεύθυνση IP"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "είναι διαγραμμένο"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Επιλέξτε αυτό το κουτί ελέγχου εάν το σχόλιο είναι ανάρμοστο. Ένα μήνυμα "
-"\"Αυτό το σχόλιο διαγράφηκε\" θα εμφανιστεί στη θέση του."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "σχόλια"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Αντικείμενο περιεχομένου"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Σχόλιο από %(user)s στις %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "όνομα ατόμου"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "διεύθυνση ip"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "εγκεκριμένο από το προσωπικό"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "ελεύθερο σχόλιο"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "ελεύθερα σχόλια"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "βαθμολογία"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "ημερομηνία βαθμολόγησης"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "σκορ κάρμα"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "σκορ κάρμα"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d βαθμολογία από %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Αυτό το σχόλιο σημειώθηκε από %(user)s\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "ημερομηνία σημείωσης"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "σημείωση χρήστη"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "σημειώσεις χρήστη"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Σημείωση από %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "ημερομηνία διαγραφής"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "διαγραφή συντονιστή"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "διαγραφές συντονιστή"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Διαγραφή συντονιστή από %r"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Όνομα χρήστη:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Log out"
-msgstr "Αποσύνδεση"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Συνθηματικό:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Ξεχάσατε το συνθηματικό σας;"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Βαθμολογίες"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Απαραίτητο"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Προαιρετικό"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Στείλτε μια φωτογραφία"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Σχόλιο:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Προεπισκόπηση σχολίου"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Το όνομα σας:"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Ανώνυμοι χρήστες δεν μπορούν να ψηφίσουν"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Μη έγκυρο ID σχολίου"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Δεν επιτρέπεται ψήφος για τον εαυτό σας"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr ""
-"Αυτή η βαθμολογία απαιτείται επειδή έχετε εισάγει τουλάχιστον μία ακόμη "
-"βαθμολογία."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Αυτό το σχόλιο έχει αναρτηθεί από ένα χρήστη με λιγότερα από %(count)s "
-"σχόλιο:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Αυτό το σχόλιο έχει αναρτηθεί από ένα χρήστη με λιγότερα από %(count)s "
-"σχόλια:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Αυτό το σχόλιο αναρτήθηκε από έναν sketchy χρήστη:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Επιτρέπονται μόνο POST υποβολές"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Ένα ή περισσότερα από τα απαιτούμενα πεδία δεν έχουν υποβληθεί"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Κάποιος έχει πειράξει τη φόρμα σχολιασμού (παραβίαση ασφάλειας)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-#, fuzzy
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr "σχόλιο αντικείμενο ID"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-#, fuzzy
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "σχόλιο t προεπισκόπηση ή"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "όνομα χώρου"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "εμφανιζόμενο όνομα"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "ιστότοπος"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "ιστότοποι"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Από %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Όλα"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Οποιαδήποτε ημερομηνία"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Σήμερα"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Τελευταίες 7 ημέρες"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Αυτόν το μήνα"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Αυτόν το χρόνο"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "ώρα ενέργειας"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id αντικειμένου"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "repr αντικειμένου"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "σημαία ενέργειας"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "αλλαγή μηνύματος"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "εγγραφή καταγραφής"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "εγγραφές καταγραφής"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "Όλες οι ημερομηνίες"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Αρχική"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Documentation"
-msgstr "Τεκμηρίωση"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Σελιδοδείκτες"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Change password"
-msgstr "Αλλαγή συνθηματικού"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Σελιδοδείκτες τεκμηρίωσης"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-#, fuzzy
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\"> δεσμός ή δεξιά δεσμός και αύξηση Τώρα υποφαινόμενο από "
-"κάθε σελίδα μέσα site Σημείωση από υποφαινόμενο site από a σύστημα "
-"υποφαινόμενο t είναι</p> n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Τεκμηρίωση για αυτήν τη σελίδα"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-#, fuzzy
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Άλματα υποφαινόμενο από κάθε σελίδα τεκμηρίωση για σελίδα."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Εμφάνιση ID αντικειμένου"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-#, fuzzy
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "Περιεχόμενο τύπος και μοναδικό ID για σελίδες a single αντικείμενο."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Επεξεργασία αυτού του αντικειμένου (τρέχον παράθυρο)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-#, fuzzy
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Άλματα σελίδα για σελίδες a single αντικείμενο."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Επεξεργασία αυτού του αντικειμένου (νέο παράθυρο)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-#, fuzzy
-msgid "As above, but opens the admin page in a new window."
-msgstr "σελίδα μέσα a νέο παράθυρο."
-
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-msgid "Delete"
-msgstr "Διαγραφή"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Αποθήκευση ως νέο"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Αποθήκευση και προσθήκη καινούριου"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Αποθήκευση και συνέχεια επεξεργασίας"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Αποθήκευση"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Σφάλμα εξυπηρετητή"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Σφάλμα εξυπηρετητή (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Σφάλμα εξυπηρετητή <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Υπήρξε ένα σφάλμα. Έχει αναφερθεί στους διαχειριστές του ιστότοπου μέσω ηλ. "
-"ταχυδρομείου και θα πρέπει να επιδιορθωθεί σύντομα. Ευχαριστούμε για την "
-"υπομονή σας."
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Ανά %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Φίλτρο"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-#, fuzzy
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr "χρήστης."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Μετάβαση"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 αποτέλεσμα"
-msgstr[1] "%(counter)s αποτελέσματα"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s συνολικά"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "Ιστορικό"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Ημερομηνία/ώρα"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Χρήστης"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Ενέργεια"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-#, fuzzy
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "αντικείμενο t a t site."
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, fuzzy, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr "Διαγραφή αντικείμενο μέσα λογαριασμός t δικαίωμα διαγραφή από:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, fuzzy, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr "υποφαινόμενο υποφαινόμενο διαγραφή αντικείμενο Όλα από διαγράφηκε:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Ναι, είμαι βέβαιος"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Εμφάνιση όλων"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Προσθήκη %(name)s"
-
-#: contrib/admin/templates/admin/change_form.html:15
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Προσθήκη"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Προβολή στην ιστοσελίδα"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Παρακαλούμε διορθώστε το παρακάτω λάθος."
-msgstr[1] "Παρακαλούμε διορθώστε τα παρακάτω λάθη."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Ταξινόμηση"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Ταξινόμηση:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Καλωσήρθατε,"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Η σελίδα δε βρέθηκε"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Λυπόμαστε, αλλά η σελίδα που ζητήθηκε δε μπόρεσε να βρεθεί."
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:24
-msgid "Log in"
-msgstr "Σύνδεση"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Διαθέσιμα μοντέλα στην εφαρμογή %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Επεξεργασία"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Δεν έχετε δικαίωμα να επεξεργαστείτε τίποτα."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Πρόσφατες ενέργειες"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Οι ενέργειες μου"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Κανένα διαθέσιμο"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Διαχειριστής ιστότοπου Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Διαχείριση Django"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-#, fuzzy
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "όνομα χρήστη συνθηματικό χρήστης."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Όνομα χρήστη"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-msgid "Password"
-msgstr "Συνθηματικό"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Password (again)"
-msgstr "Συνθηματικό (ξανά)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Εισάγετε το ίδιο συνθηματικό όπως παραπάνω, για λόγους επιβεβαίωσης."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-#, fuzzy
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "συνθηματικό χρήστης<strong> όνομα χρήστη</strong>."
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Τρέχουσα:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Αλλαγή:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Ημ/νία:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Ώρα:"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Ευχαριστούμε που διαθέσατε κάποιο ποιοτικό χρόνο στον ιστότοπο σήμερα."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Σύνδεση ξανά"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-#, fuzzy
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "συνθηματικό"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, fuzzy, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "για χρήστης λογαριασμός σε"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, fuzzy, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "νέο συνθηματικό είναι"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-#, fuzzy
-msgid "Feel free to change this password by going to this page:"
-msgstr "συνθηματικό από σελίδα:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-#, fuzzy
-msgid "Your username, in case you've forgotten:"
-msgstr "όνομα χρήστη μέσα υποφαινόμενο:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, fuzzy
-msgid "Thanks for using our site!"
-msgstr "Ευχαριστώ για site!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-#, fuzzy
-msgid "The %(site_name)s team"
-msgstr "ιστότοπος όνομα"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Επαναφορά συνθηματικού"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Επιτυχής επαναφορά συνθηματικού"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Ένα νέο συνθηματικό έχει αποσταλεί στην ηλεκτρονική διεύθυνση που έχετε "
-"επιλέξει. Θα πρέπει να το παραλάβετε πολύ σύντομα."
-
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:4
-msgid "Password change"
-msgstr "Αλλαγή συνθηματικού"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Παρακαλούμε εισάγετε το παλιό σας συνθηματικό, για λόγους ασφάλειας, και "
-"κατόπιν εισάγετε το νέο σας συνθηματικό δύο φορές ούτως ώστε να "
-"πιστοποιήσουμε ότι το πληκτρολογήσατε σωστά."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Παλιό συνθηματικό:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Νέο συνθηματικό:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Επιβεβαίωση συνθηματικού:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Αλλαγή του συνθηματικού μου"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Επιτυχής αλλαγή συνθηματικού"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Το συνθηματικό σας έχει αλλαχτεί."
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Έχετε ξεχάσει το συνθηματικό σας; Εισάγετε παρακάτω την ηλεκτρονική σας "
-"διεύθυνση, και θα επαναφέρουμε το συνθηματικό σας, αποστέλλοντας το "
-"καινούριο στην ηλ. σας διεύθυνση."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Ηλεκτρονική διεύθυνση:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Επαναφορά του συνθηματικού μου"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Διαχείριση του ιστότοπου"
-
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Το %(name)s \"%(obj)s\" αποθηκεύτηκε με επιτυχία."
-
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:24
-msgid "You may edit it again below."
-msgstr "Μπορείτε να το επεξεργαστείτε ξανά παρακάτω."
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Μπορείτε να προσθέσετε ακόμα ένα %s παρακάτω."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Προσθήκη %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Το %s προστέθηκε."
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Έγινε επεξεργασία του %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Το %s διεγράφη."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Κανένα πεδίο δεν άλλαξε."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Το %(name)s \"%(obj)s\" αλλάχτηκε με επιτυχία."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Το %(name)s \"%(obj)s\" αποθηκεύτηκε με επιτυχία. Μπορείτε να το "
-"επεξεργαστείτε πάλι παρακάτω."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Αλλαγή του %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Ένα ή περισσότερα %(fieldname)s στο %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ένα ή περισσότερα %(fieldname)s στο %(name)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Το %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Είστε σίγουροι;"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "Ιστορικό αλλαγών: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "Επιλέξτε %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "Επιλέξτε %s προς αλλαγή"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Σφάλμα βάσης δεδομένων"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Παρακαλούμε συνδεθείτε εκ νέου, γιατί η συνεδρία σας έχει λήξει. Μην "
-"ανησυχείτε: Η υποβολή σας έχει αποθηκευτεί."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Από ότι φαίνεται, ο πλοηγητής σας δεν έχει ρυθμιστεί να δέχεται cookies. "
-"Παρακαλούμε ενεργοποιείστε τα cookies, φορτώστε ξανά αυτήν τη σελίδα και "
-"δοκιμάστε ξανά."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Τα ονόματα χρηστών δεν επιτρέπεται να περιέχουν το χαρακτήρα '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Η ηλεκτρονική σας διεύθυνση δεν είναι το όνομα χρήστη σας. Δοκιμάστε '%s' "
-"στη θέση αυτού."
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "ετικέτα:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "φίλτρο:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "προβολή:"
-
-#: contrib/admin/views/doc.py:164
-#, fuzzy, python-format
-msgid "App %r not found"
-msgstr "Η σελίδα δε βρέθηκε"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-#, fuzzy
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "όνομα"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr ""
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "μοντέλο:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-#, fuzzy
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "όνομα"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "όλα %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr ""
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "Ακέραιος"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Είτε Αληθές ή Ψευδές)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Συμβολοσειρά (μέχρι %(maxlength)s χαρακτήρες)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Ακέραιοι χωρισμένοι με κόμματα"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Ημερομηνία (χωρίς την ώρα)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Ημερομηνία (με την ώρα)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "Ηλεκτρονική διεύθυνση"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "Τοποθεσία αρχείου"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Δεκαδικός αριθμός"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Αληθές, Ψευδές, ή τίποτα)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Σχέση με το γονικό μοντέλο"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Αριθμός τηλεφώνου"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Κείμενο"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "Ώρα"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "Πολιτεία ΗΠΑ. (δύο κεφαλαία γράμματα)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "Κείμενο XML"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "Το %s δε φαίνεται να είναι ένα αντικείμενο urlpattern"
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Προσθήκη χρήστη"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Το συνθηματικό αλλάχτηκε με επιτυχία."
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Αλλαγή συνθηματικού: %s"
-
-#: newforms/fields.py:103 newforms/fields.py:256
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος το πολύ %d χαρακτήρες."
-
-#: newforms/fields.py:105 newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "Βεβαιωθείτε ότι το κείμενο σας έχει μέγεθος τουλάχιστον %d χαρακτήρες."
-
-#: newforms/fields.py:128 core/validators.py:120
-msgid "Enter a whole number."
-msgstr "Εισάγετε έναν ακέραιο αριθμό."
-
-#: newforms/fields.py:130
-#, fuzzy, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "τιμή a από."
-
-#: newforms/fields.py:132
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr ""
-
-#: newforms/fields.py:165
-msgid "Enter a valid date."
-msgstr "Εισάγετε μια έγκυρη ημερομηνία."
-
-#: newforms/fields.py:192
-msgid "Enter a valid time."
-msgstr "Εισάγετε μια έγκυρη ώρα."
-
-#: newforms/fields.py:228
-msgid "Enter a valid date/time."
-msgstr "Εισάγετε μια έγκυρη ημερομηνία/ώρα."
-
-#: newforms/fields.py:242
-msgid "Enter a valid value."
-msgstr "Εισάγετε μια έγκυρη τιμή."
-
-#: newforms/fields.py:271 core/validators.py:162
-msgid "Enter a valid e-mail address."
-msgstr "Εισάγετε μια έγκυρη διεύθυνση ηλ. ταχυδρομείου."
-
-#: newforms/fields.py:289 newforms/fields.py:311
-msgid "Enter a valid URL."
-msgstr "Εισάγετε ένα έγκυρο URL."
-
-#: newforms/fields.py:313
-#, fuzzy
-msgid "This URL appears to be a broken link."
-msgstr "Το URL %s είναι χαλασμένος σύνδεσμος."
-
-#: newforms/fields.py:362 newforms/models.py:165
-#, fuzzy
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Επιλέξτε μια έγκυρη επιλογή; Το '%(data)s' δεν είναι στα %(choices)s."
-
-#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182
-#, fuzzy
-msgid "Enter a list of values."
-msgstr "Εισάγετε ένα έγκυρο όνομα αρχείου."
-
-#: newforms/fields.py:389 newforms/models.py:188
-#, fuzzy, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Επιλέξτε μια έγκυρη επιλογή; Το '%(data)s' δεν είναι στα %(choices)s."
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "ναι,όχι,ίσως"
-
-#: views/generic/create_update.py:43
-#, fuzzy, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Το %(name)s \"%(obj)s\" αλλάχτηκε με επιτυχία."
-
-#: views/generic/create_update.py:117
-#, fuzzy, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Το %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία."
-
-#: views/generic/create_update.py:184
-#, fuzzy, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Το %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία."
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Αυτή η τιμή πρέπει να περιέχει μόνο γράμματα, αριθμούς και υπογεγραμμένες."
-
-#: core/validators.py:68
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Αυτή η τιμή πρέπει να περιέχει μόνο γράμματα, αριθμούς, υπογεγραμμένες, "
-"παύλες ή καθέτους."
-
-#: core/validators.py:72
-#, fuzzy
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Αυτή η τιμή πρέπει να περιέχει μόνο γράμματα, αριθμούς, υπογεγραμμένες, "
-"παύλες ή καθέτους."
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "Τα κεφαλαία γράμματα δεν επιτρέπονται εδώ."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "Τα πεζά γράμματα δεν επιτρέπονται εδώ."
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "Εισάγετε μόνο ψηφία χωρισμένα με κόμματα."
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Εισάγετε έγκυρες ηλ. διευθύνσεις χωρισμένες με κόμματα."
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "Παρακαλούμε εισάγετε μια έγκυρη διεύθυνση IP."
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "Δεν επιτρέπονται κενές τιμές εδώ."
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Δεν επιτρέπονται μη-αριθμητικοί χαρακτήρες εδώ."
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "Αυτή η τιμή δεν μπορεί να αποτελείται μόνο από ψηφία."
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "Μόνο αλφαβητικοί χαρακτήρες επιτρέπονται εδώ."
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr ""
-
-#: core/validators.py:143
-#, fuzzy, python-format
-msgid "Invalid date: %s"
-msgstr "Μη έγκυρο URL: %s"
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-msgstr "Εισάγετε μία έγκυρη ώρα στη μορφή ΩΩ-ΛΛ."
-
-#: core/validators.py:178
-#, fuzzy
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "a εικόνα αρχείο υποφαινόμενο όχι εικόνα ή a εικόνα."
-
-#: core/validators.py:185
-#, fuzzy, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL όχι σημείο a εικόνα."
-
-#: core/validators.py:189
-#, fuzzy, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Τηλέφωνο μέσα είναι."
-
-#: core/validators.py:197
-#, fuzzy, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL όχι σημείο a."
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "Απαιτείται ένα έγκυρο URL."
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Απαιτείται έγκυρη HTML. Συγκεκριμένα σφάλματα είναι τα εξής:\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Κακώς δομημένη XML: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Μη έγκυρο URL: %s"
-
-#: core/validators.py:244 core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Το URL %s είναι χαλασμένος σύνδεσμος."
-
-#: core/validators.py:252
-#, fuzzy
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "a U συντομογραφία."
-
-#: core/validators.py:266
-#, fuzzy, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Παρακολούθηση είναι όχι."
-msgstr[1] "Παρακολούθηση είναι όχι."
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Αυτό το πεδίο πρέπει να ταιριάζει με το πεδίο '%s'."
-
-#: core/validators.py:292
-#, fuzzy
-msgid "Please enter something for at least one field."
-msgstr "για σε ένα πεδίο."
-
-#: core/validators.py:301 core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "Παρακαλούμε συμπληρώστε και τα δύο πεδία ή αφήστε τα και τα δύο άδεια."
-
-#: core/validators.py:320
-#, fuzzy, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "πεδίο πεδίο είναι τιμή"
-
-#: core/validators.py:333
-#, fuzzy, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "πεδίο πεδίο είναι όχι τιμή"
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "Δεν επιτρέπονται διπλές τιμές."
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Αυτή η τιμή πρέπει να είναι μεταξύ %(lower)s και %(upper)s."
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Αυτή η τιμή πρέπει να είναι τουλάχιστον %s."
-
-#: core/validators.py:371
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Αυτή η τιμή πρέπει να είναι το πολύ %s."
-
-#: core/validators.py:407
-#, fuzzy, python-format
-msgid "This value must be a power of %s."
-msgstr "τιμή a από."
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό."
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s ψηφίο "
-"συνολικά."
-msgstr[1] ""
-"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s ψηφία "
-"συνολικά."
-
-#: core/validators.py:425
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με ακέραιο μέρος το πολύ %s ψηφίο "
-"συνολικά."
-msgstr[1] ""
-"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με ακέραιο μέρος το πολύ %s ψηφία "
-"συνολικά."
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s δεκαδική θέση."
-msgstr[1] ""
-"Παρακαλούμε εισάγετε έναν έγκυρο δεκαδικό αριθμό με το πολύ %s δεκαδικές "
-"θέσεις."
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Βεβαιωθείτε ότι το αρχείο που στέλνετε έχει μέγεθος τουλάχιστον %s ψηφία."
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Βεβαιωθείτε ότι το αρχείο που στέλνετε έχει μέγεθος το πολύ μέχρι %s ψηφία."
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "Η μορφή αυτού του πεδίου είναι λανθασμένη."
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "Αυτό το πεδίο είναι μη έγκυρο."
-
-#: core/validators.py:507
-#, fuzzy, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "όχι Οτιδήποτε από."
-
-#: core/validators.py:510
-#, fuzzy, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL url Περιεχόμενο Τύπος."
-
-#: core/validators.py:543
-#, fuzzy, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr "close από Γραμμή με έναρξη"
-
-#: core/validators.py:547
-#, fuzzy, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr "κείμενο ενεργό είναι όχι μέσα Γραμμή με έναρξη"
-
-#: core/validators.py:552
-#, fuzzy, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr "ενεργό είναι χαρακτηριστικό Γραμμή με έναρξη"
-
-#: core/validators.py:557
-#, fuzzy, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr "ενεργό είναι Γραμμή με έναρξη"
-
-#: core/validators.py:561
-#, fuzzy, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr "ενεργό είναι αγνοείται ένα ή περισσότερα Γραμμή με έναρξη"
-
-#: core/validators.py:566
-#, fuzzy, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr "χαρακτηριστικό ενεργό τιμή Γραμμή με έναρξη"
-
diff --git a/webapp/django/conf/locale/el/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/el/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b689bf8..0000000
--- a/webapp/django/conf/locale/el/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/el/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/el/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 28c06e3..0000000
--- a/webapp/django/conf/locale/el/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,108 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2006 and beyond.
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Orestis Markou <orestis@orestis.gr>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Διαθέσιμο %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Επιλογή Όλων"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Προσθήκη"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Αφαίρεση"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Επιλεχθέντα %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Επιλέξτε και κάντε κλικ."
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Καθαρισμός όλων"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Ιανουάριος Φεβρουάριος Μάρτιος Απρίλιος Μάιος Ιούνιος Ιούλιος Αύγουστος Σεπτέμβριος Οκτώβριος Νοέμβριος "
-"Δεκέμβριος"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Κυριακή Δευτέρα Τρίτη Τετάρτη Πέμπτη Παρασκευή Σάββατο"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "Κ Δ Τ Τ Π Π Σ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Τώρα"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Ρολόι"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Διαλέξτε ώρα"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Μεσάνυχτα"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 π.μ."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Μεσημέρι"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Άκυρο"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Σήμερα"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Ημερολόγιο"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Χθες"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Αύριο"
diff --git a/webapp/django/conf/locale/en/LC_MESSAGES/django.mo b/webapp/django/conf/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 1367370..0000000
--- a/webapp/django/conf/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/en/LC_MESSAGES/django.po b/webapp/django/conf/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index c080c61..0000000
--- a/webapp/django/conf/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,3768 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-11-29 10:57-0600\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr ""
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr ""
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr ""
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr ""
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr ""
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr ""
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr ""
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr ""
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr ""
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr ""
-
-#: conf/global_settings.py:51
-msgid "Persian"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Finnish"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "French"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:57
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Icelandic"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Italian"
-msgstr ""
-
-#: conf/global_settings.py:61
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:62
-msgid "Korean"
-msgstr ""
-
-#: conf/global_settings.py:63
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:64
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:65
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:66
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:67
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Norwegian"
-msgstr ""
-
-#: conf/global_settings.py:69
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Portugese"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Brazilian"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Romanian"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Russian"
-msgstr ""
-
-#: conf/global_settings.py:74
-msgid "Slovak"
-msgstr ""
-
-#: conf/global_settings.py:75
-msgid "Slovenian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Serbian"
-msgstr ""
-
-#: conf/global_settings.py:77
-msgid "Swedish"
-msgstr ""
-
-#: conf/global_settings.py:78
-msgid "Tamil"
-msgstr ""
-
-#: conf/global_settings.py:79
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Turkish"
-msgstr ""
-
-#: conf/global_settings.py:81
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:82
-msgid "Simplified Chinese"
-msgstr ""
-
-#: conf/global_settings.py:83
-msgid "Traditional Chinese"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr ""
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr ""
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr ""
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr ""
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr ""
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr ""
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr ""
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr ""
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr ""
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr ""
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr ""
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr ""
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr ""
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr ""
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr ""
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr ""
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr ""
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr ""
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr ""
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr ""
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr ""
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr ""
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr ""
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr ""
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
-msgid "Log in"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr ""
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr ""
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr ""
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr ""
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr ""
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr ""
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr ""
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr ""
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:63
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:70
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:84
-msgid "Usernames cannot contain the '@' character."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:86
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr ""
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr ""
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr ""
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr ""
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr ""
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr ""
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr ""
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr ""
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr ""
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr ""
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr ""
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr ""
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr ""
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr ""
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr ""
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr ""
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:85
-msgid "IP address"
-msgstr ""
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr ""
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr ""
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr ""
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr ""
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr ""
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr ""
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr ""
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr ""
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr ""
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr ""
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr ""
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr ""
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr ""
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr ""
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr ""
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr ""
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr ""
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr ""
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr ""
-
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr ""
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr ""
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr ""
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr ""
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr ""
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr ""
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr ""
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr ""
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr ""
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr ""
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
-msgid "groups"
-msgstr ""
-
-#: contrib/auth/models.py:131
-msgid "username"
-msgstr ""
-
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-
-#: contrib/auth/models.py:132
-msgid "first name"
-msgstr ""
-
-#: contrib/auth/models.py:133
-msgid "last name"
-msgstr ""
-
-#: contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr ""
-
-#: contrib/auth/models.py:135
-msgid "password"
-msgstr ""
-
-#: contrib/auth/models.py:135
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-
-#: contrib/auth/models.py:136
-msgid "staff status"
-msgstr ""
-
-#: contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: contrib/auth/models.py:137
-msgid "active"
-msgstr ""
-
-#: contrib/auth/models.py:137
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: contrib/auth/models.py:138
-msgid "superuser status"
-msgstr ""
-
-#: contrib/auth/models.py:138
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: contrib/auth/models.py:139
-msgid "last login"
-msgstr ""
-
-#: contrib/auth/models.py:140
-msgid "date joined"
-msgstr ""
-
-#: contrib/auth/models.py:142
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-
-#: contrib/auth/models.py:143
-msgid "user permissions"
-msgstr ""
-
-#: contrib/auth/models.py:147
-msgid "user"
-msgstr ""
-
-#: contrib/auth/models.py:148
-msgid "users"
-msgstr ""
-
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr ""
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr ""
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr ""
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr ""
-
-#: contrib/auth/models.py:316
-msgid "message"
-msgstr ""
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr ""
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:169
-msgid "object ID"
-msgstr ""
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr ""
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:170
-msgid "comment"
-msgstr ""
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr ""
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr ""
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr ""
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr ""
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr ""
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr ""
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr ""
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr ""
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr ""
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:172
-msgid "date/time submitted"
-msgstr ""
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:173
-msgid "is public"
-msgstr ""
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr ""
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr ""
-
-#: contrib/comments/models.py:134 contrib/comments/models.py:213
-msgid "Content object"
-msgstr ""
-
-#: contrib/comments/models.py:162
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: contrib/comments/models.py:171
-msgid "person's name"
-msgstr ""
-
-#: contrib/comments/models.py:174
-msgid "ip address"
-msgstr ""
-
-#: contrib/comments/models.py:176
-msgid "approved by staff"
-msgstr ""
-
-#: contrib/comments/models.py:179
-msgid "free comment"
-msgstr ""
-
-#: contrib/comments/models.py:180
-msgid "free comments"
-msgstr ""
-
-#: contrib/comments/models.py:239
-msgid "score"
-msgstr ""
-
-#: contrib/comments/models.py:240
-msgid "score date"
-msgstr ""
-
-#: contrib/comments/models.py:243
-msgid "karma score"
-msgstr ""
-
-#: contrib/comments/models.py:244
-msgid "karma scores"
-msgstr ""
-
-#: contrib/comments/models.py:248
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr ""
-
-#: contrib/comments/models.py:264
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/models.py:271
-msgid "flag date"
-msgstr ""
-
-#: contrib/comments/models.py:274
-msgid "user flag"
-msgstr ""
-
-#: contrib/comments/models.py:275
-msgid "user flags"
-msgstr ""
-
-#: contrib/comments/models.py:279
-#, python-format
-msgid "Flag by %r"
-msgstr ""
-
-#: contrib/comments/models.py:284
-msgid "deletion date"
-msgstr ""
-
-#: contrib/comments/models.py:286
-msgid "moderator deletion"
-msgstr ""
-
-#: contrib/comments/models.py:287
-msgid "moderator deletions"
-msgstr ""
-
-#: contrib/comments/models.py:291
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr ""
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr ""
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr ""
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr ""
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr ""
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr ""
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr ""
-
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr ""
-
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr ""
-
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr ""
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr ""
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr ""
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr ""
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr ""
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr ""
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr ""
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "th"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "st"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "nd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "rd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:52
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:58
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "one"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "two"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "three"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "four"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "five"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "six"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "seven"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "eight"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "nine"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:94
-msgid "today"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:96
-msgid "tomorrow"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:98
-msgid "yesterday"
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:30 contrib/localflavor/ar/forms.py:38
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:61 contrib/localflavor/br/forms.py:103
-#: contrib/localflavor/pe/forms.py:34 contrib/localflavor/pe/forms.py:57
-msgid "This field requires only numbers."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:64
-msgid "This field requires 7 or 8 digits."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:75
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:88
-msgid "Invalid CUIT."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:23
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:35
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:68
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:105
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:115
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:137
-msgid "This field requires at least 14 digits"
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:147
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:19
-msgid "Enter a postal code in the format XXX XXX."
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:81
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14
-msgid "Enter a zip code in the format XXXX."
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:90
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:32
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:37
-msgid "Enter valid a Chilean RUT"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14
-#: contrib/localflavor/fr/forms.py:17
-msgid "Enter a zip code in the format XXXXX."
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:22
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:73 contrib/localflavor/es/forms.py:108
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:91
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:97
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:106
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:136
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:150
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:16
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:31
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:25
-msgid "Enter a valid postal code"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:53
-msgid "Enter a valid phone number"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:76
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:35
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:36
-msgid "This field requires 8 digits."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:59
-msgid "This field requires 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:41
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:47
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:78
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:107
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:148
-msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:32
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr ""
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr ""
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr ""
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr ""
-
-#: contrib/sessions/models.py:80
-msgid "session key"
-msgstr ""
-
-#: contrib/sessions/models.py:81
-msgid "session data"
-msgstr ""
-
-#: contrib/sessions/models.py:82
-msgid "expire date"
-msgstr ""
-
-#: contrib/sessions/models.py:87
-msgid "session"
-msgstr ""
-
-#: contrib/sessions/models.py:88
-msgid "sessions"
-msgstr ""
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr ""
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr ""
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr ""
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr ""
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr ""
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr ""
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr ""
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr ""
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr ""
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr ""
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr ""
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr ""
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr ""
-
-#: core/validators.py:128 newforms/fields.py:157
-msgid "Enter a whole number."
-msgstr ""
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr ""
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr ""
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr ""
-
-#: core/validators.py:156 db/models/fields/__init__.py:509
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr ""
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr ""
-
-#: core/validators.py:165 db/models/fields/__init__.py:583
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-
-#: core/validators.py:170 newforms/fields.py:408
-msgid "Enter a valid e-mail address."
-msgstr ""
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:438
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: core/validators.py:193 newforms/fields.py:462
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr ""
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr ""
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr ""
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr ""
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr ""
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr ""
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr ""
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr ""
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr ""
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr ""
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr ""
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr ""
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr ""
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr ""
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr ""
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr ""
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:447
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr ""
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr ""
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr ""
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr ""
-
-#: core/validators.py:539
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318
-#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746
-#: newforms/fields.py:45 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr ""
-
-#: db/models/fields/__init__.py:418
-msgid "This value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:454
-msgid "This value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:475
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:644
-msgid "This value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:755
-msgid "Enter a valid filename."
-msgstr ""
-
-#: db/models/fields/__init__.py:904
-msgid "This value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr ""
-
-#: db/models/fields/related.py:660
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: db/models/fields/related.py:707
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-msgstr[1] ""
-
-#: newforms/fields.py:46
-msgid "Enter a valid value."
-msgstr ""
-
-#: newforms/fields.py:129
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-
-#: newforms/fields.py:158 newforms/fields.py:187 newforms/fields.py:216
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr ""
-
-#: newforms/fields.py:159 newforms/fields.py:188 newforms/fields.py:217
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr ""
-
-#: newforms/fields.py:186 newforms/fields.py:215
-msgid "Enter a number."
-msgstr ""
-
-#: newforms/fields.py:218
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr ""
-
-#: newforms/fields.py:219
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr ""
-
-#: newforms/fields.py:220
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr ""
-
-#: newforms/fields.py:268 newforms/fields.py:724
-msgid "Enter a valid date."
-msgstr ""
-
-#: newforms/fields.py:301 newforms/fields.py:725
-msgid "Enter a valid time."
-msgstr ""
-
-#: newforms/fields.py:340
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: newforms/fields.py:439
-msgid "No file was submitted."
-msgstr ""
-
-#: newforms/fields.py:440 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr ""
-
-#: newforms/fields.py:498
-msgid "Enter a valid URL."
-msgstr ""
-
-#: newforms/fields.py:499
-msgid "This URL appears to be a broken link."
-msgstr ""
-
-#: newforms/fields.py:560 newforms/models.py:155
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: newforms/fields.py:599
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:215
-msgid "Enter a list of values."
-msgstr ""
-
-#: newforms/fields.py:753
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: newforms/models.py:216
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr ""
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr ""
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr ""
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr ""
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr ""
-
-#: template/defaultfilters.py:658
-msgid "yes,no,maybe"
-msgstr ""
-
-#: template/defaultfilters.py:689
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:691
-#, python-format
-msgid "%.1f KB"
-msgstr ""
-
-#: template/defaultfilters.py:693
-#, python-format
-msgid "%.1f MB"
-msgstr ""
-
-#: template/defaultfilters.py:694
-#, python-format
-msgid "%.1f GB"
-msgstr ""
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "December"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "may"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr ""
-
-#: utils/text.py:127
-msgid "or"
-msgstr ""
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr ""
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr ""
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ""
-
-#: utils/translation/trans_real.py:399
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation/trans_real.py:400
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
-
-#: utils/translation/trans_real.py:401
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:417
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:418
-msgid "MONTH_DAY_FORMAT"
-msgstr "F j"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr ""
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr ""
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr ""
diff --git a/webapp/django/conf/locale/en/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/en/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 80dd04a..0000000
--- a/webapp/django/conf/locale/en/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/en/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/en/LC_MESSAGES/djangojs.po
deleted file mode 100644
index bf48501..0000000
--- a/webapp/django/conf/locale/en/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,117 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-11-29 10:58-0600\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr ""
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr ""
diff --git a/webapp/django/conf/locale/es/LC_MESSAGES/django.mo b/webapp/django/conf/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 49f4fa3..0000000
--- a/webapp/django/conf/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/es/LC_MESSAGES/django.po b/webapp/django/conf/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 78e6b75..0000000
--- a/webapp/django/conf/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4322 +0,0 @@
-# Spanish translation for the django project
-# Copyright (C) 2008, The Django Project
-# This file is distributed under the same license as the django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-24 12:48+0200\n"
-"PO-Revision-Date: 2008-07-24 13:30+0100\n"
-"Last-Translator: Django Spanish Translation Team <django-cat@googlegroups.com>\n"
-"Language-Team: Django Spanish Translation Team <django-cat@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "árabe"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengalí"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "búlgaro"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "catalán"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "checo"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "galés"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "danés"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "alemán"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "griego"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "inglés"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "español"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "estonio"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "español de Argentina"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "vasco"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "persa"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "finés"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "francés"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "irlandés"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "gallego"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "húngaro"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "hebreo"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "croata"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islandés"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "japonés"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "georgiano"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "koreano"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "letón"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "lituano"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "macedonio"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "holandés"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "noruego"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "polaco"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portugués"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "portugués de Brasil"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "rumano"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "ruso"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "eslovaco"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "esloveno"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "serbio"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "sueco"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tamil"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ucraniano"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "chino simplificado"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "chino tradicional"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Por %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74
-#: contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147
-#: contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Todo"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Cualquier fecha"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Hoy"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Últimos 7 días"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Este mes"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Este año"
-
-#: contrib/admin/filterspecs.py:147
-#: forms/widgets.py:379
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Sí"
-
-#: contrib/admin/filterspecs.py:147
-#: forms/widgets.py:379
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "No"
-
-#: contrib/admin/filterspecs.py:154
-#: forms/widgets.py:379
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "hora de acción"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "id de objeto"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "repr de objeto"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "marca de acción"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "mensaje de cambio"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "entrada de registro"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "entradas de registro"
-
-#: contrib/admin/options.py:161
-#: contrib/admin/options.py:180
-msgid "None"
-msgstr "Ninguno"
-
-#: contrib/admin/options.py:347
-#: contrib/auth/admin.py:37
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:351
-#: contrib/admin/options.py:419
-#: contrib/auth/admin.py:42
-msgid "You may edit it again below."
-msgstr "Puede editarlo de nuevo abajo."
-
-#: contrib/admin/options.py:361
-#: contrib/admin/options.py:428
-#, python-format
-msgid "You may add another %s below."
-msgstr "Puede añadir otro %s abajo."
-
-#: contrib/admin/options.py:395
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado/a %s."
-
-#: contrib/admin/options.py:395
-#: contrib/admin/options.py:405
-#: core/validators.py:279
-#: db/models/manipulators.py:305
-msgid "and"
-msgstr "y"
-
-#: contrib/admin/options.py:400
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Añadido/a \"%(object)s\" %(name)s."
-
-#: contrib/admin/options.py:404
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Modificados %(list)s para \"%(object)s\" %(name)s."
-
-#: contrib/admin/options.py:409
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Eliminado/a \"%(object)s\" %(name)s."
-
-#: contrib/admin/options.py:414
-msgid "No fields changed."
-msgstr "No ha cambiado ningún campo."
-
-#: contrib/admin/options.py:417
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito el %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:425
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "Se añadió con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
-
-#: contrib/admin/options.py:506
-#, python-format
-msgid "Add %s"
-msgstr "Añadir %s"
-
-#: contrib/admin/options.py:568
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/options.py:598
-msgid "Database error"
-msgstr "Error en la base de datos"
-
-#: contrib/admin/options.py:647
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:653
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: contrib/admin/options.py:680
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de modificaciones: %s"
-
-#: contrib/admin/sites.py:18
-#: contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:70
-#: contrib/comments/views/comments.py:56
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Por favor, introduzca un nombre de usuario y contraseña correctos. Note que ambos campos son sensibles a mayúsculas/minúsculas."
-
-#: contrib/admin/sites.py:233
-#: contrib/admin/views/decorators.py:68
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Por favor, inicie sesión de nuevo, ya que su sesión ha caducado. No se preocupe: se ha guardado su envío."
-
-#: contrib/admin/sites.py:240
-#: contrib/admin/views/decorators.py:75
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Parece que su navegador no está configurado para aceptar cookies. Actívelas , recargue esta página, e inténtelo de nuevo."
-
-#: contrib/admin/sites.py:254
-#: contrib/admin/sites.py:260
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Los nombres de usuario no pueden contener el carácter '@'."
-
-#: contrib/admin/sites.py:257
-#: contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Su dirección de correo no es su nombre de usuario. Pruebe con '%s' en su lugar."
-
-#: contrib/admin/sites.py:325
-msgid "Site administration"
-msgstr "Sitio administrativo"
-
-#: contrib/admin/sites.py:347
-#: contrib/admin/templates/admin/login.html:27
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Iniciar sesión"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o más %(fieldname)s en %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Fecha:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Actualmente:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Página no encontrada"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Lo sentimos, pero no se encuentra la página solicitada."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Inicio"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Error de servidor <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Ha ocurrido un error. Se ha informado a los administradores del sitio mediante correo electrónico y debería arreglarse en breve. Gracias por su paciencia."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Bienvenido/a,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Documentation"
-msgstr "Documentación"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Cambiar contraseña"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Terminar sesión"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Sitio de administración de Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administración de Django"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Añadir"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Histórico"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Ver en el sitio"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Por favor, corrija el siguiente error."
-msgstr[1] "Por favor, corrija los siguientes errores."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Añadir %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtro"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Eliminar"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación de objetos relacionados, pero su cuenta no tiene permiso para borrar los siguientes tipos de objetos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s\"? Se borrarán los siguientes objetos relacionados:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Sí, estoy seguro"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelos disponibles en la aplicación %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Modificar"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "No tiene permiso para editar nada."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Acciones recientes"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mis acciones"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Ninguno disponible"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Algo va mal con la instalación de la base de datos. Asegúrese que las tablas necesarias han sido creadas, y que la base de datos puede ser leída por el usuario apropiado."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Usuario:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Contraseña:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Fecha/hora"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Usuario"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Acción"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j M Y P"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Este objeto no tiene histórico de cambios. Probablemente no fue añadido usando este sitio de administración."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todo"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Ir"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s total"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Grabar como nuevo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Grabar y añadir otro"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Grabar y continuar editando"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Grabar"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar el resto de opciones del usuario."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:12
-#: contrib/auth/forms.py:49
-msgid "Username"
-msgstr "Nombre de usuario"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:15
-#: contrib/auth/forms.py:50
-#: contrib/auth/forms.py:166
-msgid "Password"
-msgstr "Contraseña"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:167
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Introduzca la misma contraseña que arriba, para verificación."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Introduzca una nueva contraseña para el usuario <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentación"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus favoritos.\n"
-"Ahora puede escoger el bookmarklet desde cualquier página del sitio.\n"
-"Observe que algunos de estos bookmarklets precisan que esté viendo\n"
-"el sitio desde un ordenador señalado como \"interno\" (hable\n"
-"con su administrador de sistemas si no está seguro si el suyo lo es).</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Documentación para esta página"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Lleva desde cualquier página a la documentación de la vista que la genera."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Muestra el tipo de contenido e ID único de las páginas que representan un simple objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Lleva a la página de administración de páginas que representan un único objeto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Como antes, pero abre la página de administración en una nueva ventana."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gracias por el tiempo que ha dedicado hoy al sitio web."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Iniciar sesión de nuevo"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Cambio de contraseña"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Cambio de contraseña exitoso"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Su contraseña ha sido cambiada."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Por favor, introduzca su contraseña antigua, por seguridad, y después introduzca la nueva contraseña dos veces para verificar que la ha escrito correctamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Contraseña antigua:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Contraseña nueva:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Confirme contraseña:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Cambiar mi contraseña"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Restablecer contraseña"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Restablecimiento de contraseña exitoso"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Le hemos enviado una contraseña nueva a la dirección que ha suministrado. Debería recibirla en breve."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Está recibiendo este mensaje debido a que solicitó restablecer la contraseña"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "para su cuenta de usuario en %(site_name)s."
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Su nueva contraseña es: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Puede cambiarla accediendo a esta página:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "¡Gracias por usar nuestro sitio!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "El equipo de %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "¿Ha olvidado su contraseña? Introduzca su dirección de correo electrónico, y crearemos una nueva que le enviaremos por correo."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Dirección de correo electrónico:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Restablecer mi contraseña"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Todas las fechas"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Escoja %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Escoja %s a modificar"
-
-#: contrib/admindocs/views.py:53
-#: contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: contrib/admindocs/views.py:87
-#: contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filtro:"
-
-#: contrib/admindocs/views.py:153
-#: contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "vista:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicación %r no encontrada"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "El modelo %(model_name)r no se ha encontrado en la aplicación %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "el objeto relacionado `%(app_label)s.%(data_type)s`"
-
-#: contrib/admindocs/views.py:206
-#: contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242
-#: contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "modelo:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "los objetos relacionados `%(app_label)s.%(object_name)s`"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "todo %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campos en %s objetos"
-
-#: contrib/admindocs/views.py:317
-#: contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330
-#: contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337
-#: contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Entero"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
-
-#: contrib/admindocs/views.py:319
-#: contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadena (máximo %(max_length)s)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Enteros separados por comas"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Fecha (sin hora)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Fecha (con hora)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "Dirección de correo electrónico"
-
-#: contrib/admindocs/views.py:325
-#: contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Ruta de fichero"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Número en coma flotante"
-
-#: contrib/admindocs/views.py:331
-#: contrib/comments/models.py:89
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadero, Falso o Nulo)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relación con el modelo padre"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Número de teléfono"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Texto"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Hora"
-
-#: contrib/admindocs/views.py:342
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Estado de los EEUU (dos letras mayúsculas)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "Texto XML"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no parece ser un objeto urlpattern"
-
-#: contrib/auth/admin.py:17
-msgid "Personal info"
-msgstr "Información personal"
-
-#: contrib/auth/admin.py:18
-msgid "Permissions"
-msgstr "Permisos"
-
-#: contrib/auth/admin.py:19
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: contrib/auth/admin.py:20
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/admin.py:47
-msgid "Add user"
-msgstr "Añadir usuario"
-
-#: contrib/auth/forms.py:13
-#: contrib/auth/models.py:134
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Requerido. 30 caracteres o menos. Sólo caracteres alfanuméricos (letras, dígitos y guiones bajos)."
-
-#: contrib/auth/forms.py:14
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor debe contener sólo letras, números y guiones bajos."
-
-#: contrib/auth/forms.py:16
-msgid "Password confirmation"
-msgstr "Contraseña (confirmación)"
-
-#: contrib/auth/forms.py:28
-msgid "A user with that username already exists."
-msgstr "Ya existe un usuario con este nombre."
-
-#: contrib/auth/forms.py:34
-#: contrib/auth/forms.py:153
-#: contrib/auth/forms.py:178
-msgid "The two password fields didn't match."
-msgstr "Las dos contraseñas no coinciden."
-
-#: contrib/auth/forms.py:72
-#: contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Esta cuenta está inactiva."
-
-#: contrib/auth/forms.py:77
-#: contrib/comments/views/comments.py:49
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Su navegador no parece tener las cookies habilitadas. Las cookies se necesitan para poder ingresar."
-
-#: contrib/auth/forms.py:90
-msgid "E-mail"
-msgstr "Correo electrónico"
-
-#: contrib/auth/forms.py:99
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Esta dirección de correo electrónico no tiene una cuenta de usuario asociada. ¿Está seguro de que se ha registrado?"
-
-#: contrib/auth/forms.py:124
-#, python-format
-msgid "Password reset on %s"
-msgstr "Contraseña restablecida en %s"
-
-#: contrib/auth/forms.py:131
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: contrib/auth/forms.py:132
-msgid "New password"
-msgstr "Contraseña nueva"
-
-#: contrib/auth/forms.py:133
-msgid "New password confirmation"
-msgstr "Contraseña nueva (confirmación):"
-
-#: contrib/auth/forms.py:145
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Su contraseña antigua es incorrecta. Por favor, vuelva a introducirla correctamente."
-
-#: contrib/auth/models.py:73
-#: contrib/auth/models.py:93
-msgid "name"
-msgstr "nombre"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "nombre en código"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "permiso"
-
-#: contrib/auth/models.py:79
-#: contrib/auth/models.py:94
-msgid "permissions"
-msgstr "permisos"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "grupo"
-
-#: contrib/auth/models.py:98
-#: contrib/auth/models.py:144
-msgid "groups"
-msgstr "grupos"
-
-#: contrib/auth/models.py:134
-msgid "username"
-msgstr "nombre de usuario"
-
-#: contrib/auth/models.py:135
-msgid "first name"
-msgstr "nombre propio"
-
-#: contrib/auth/models.py:136
-msgid "last name"
-msgstr "apellidos"
-
-#: contrib/auth/models.py:137
-msgid "e-mail address"
-msgstr "dirección de correo electrónico"
-
-#: contrib/auth/models.py:138
-msgid "password"
-msgstr "contraseña"
-
-#: contrib/auth/models.py:138
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Use'[algo]$[sal]$[hash hexadecimal]' o use <a href=\"password/\">el formulario para cambiar la contraseña</a>."
-
-#: contrib/auth/models.py:139
-msgid "staff status"
-msgstr "es staff"
-
-#: contrib/auth/models.py:139
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si el usuario puede entrar en este sitio de administración."
-
-#: contrib/auth/models.py:140
-msgid "active"
-msgstr "activo"
-
-#: contrib/auth/models.py:140
-msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
-msgstr "Indica si el usuario puede ser tratado como activo. Desmarque esta opción en lugar de borrar la cuenta."
-
-#: contrib/auth/models.py:141
-msgid "superuser status"
-msgstr "es superusuario"
-
-#: contrib/auth/models.py:141
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Indica que este usuario tiene todos los permisos sin asignárselos explícitamente."
-
-#: contrib/auth/models.py:142
-msgid "last login"
-msgstr "último inicio de sesión"
-
-#: contrib/auth/models.py:143
-msgid "date joined"
-msgstr "fecha de alta"
-
-#: contrib/auth/models.py:145
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Además de los permisos asignados manualmente, este usuario también tendrá todos los permisos de los grupos en los que esté."
-
-#: contrib/auth/models.py:146
-msgid "user permissions"
-msgstr "permisos de usuario"
-
-#: contrib/auth/models.py:150
-msgid "user"
-msgstr "usuario"
-
-#: contrib/auth/models.py:151
-msgid "users"
-msgstr "usuarios"
-
-#: contrib/auth/models.py:306
-msgid "message"
-msgstr "mensaje"
-
-#: contrib/auth/views.py:49
-msgid "Logged out"
-msgstr "Sesión terminada"
-
-#: contrib/auth/views.py:116
-msgid "Password changed successfully."
-msgstr "La contraseña se ha cambiado con éxito."
-
-#: contrib/auth/views.py:122
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contraseña: %s"
-
-#: contrib/comments/models.py:71
-#: contrib/comments/models.py:164
-msgid "object ID"
-msgstr "ID de objeto"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "encabezado"
-
-#: contrib/comments/models.py:73
-#: contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "comentario"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "puntuación 1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "puntuación 2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "puntuación 3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "puntuación 4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "puntuación 5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "puntuación 6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "puntuación 7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "puntuación 8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "puntuación válida"
-
-#: contrib/comments/models.py:87
-#: contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "fecha/hora de envío"
-
-#: contrib/comments/models.py:88
-#: contrib/comments/models.py:168
-msgid "is public"
-msgstr "es público"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "está eliminado"
-
-#: contrib/comments/models.py:90
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Marque esta opción si el comentario es inapropiado. En su lugar se mostrará el mensaje \"Este comentario ha sido eliminado\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "comentarios"
-
-#: contrib/comments/models.py:128
-#: contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Objeto contenido"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s en %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "nombre de la persona"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "dirección ip"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "aprobado por el staff"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "comentario libre"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "comentarios libres"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "puntuación"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "fecha de la puntuación"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "punto karma"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "puntos karma"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "puntuado %(score)d por %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario fue marcado por %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "fecha de la marca"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "marca de usuario"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "marcas de usuario"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Marca de %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "fecha de eliminación"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "eliminación del moderador"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "eliminaciones del moderador"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Eliminación del moderador %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "¿Ha olvidado su contraseña?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Puntuaciones"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Requerido"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Publica una fotografía"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Comentario:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Previsualizar comentario"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Su nombre:"
-
-#: contrib/comments/views/comments.py:76
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Se precisa esta puntuación porque ha introducido al menos otra más."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Este comentario lo envió un usuario que ha enviado menos de %(count)s comentario:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Este comentario lo envió un usuario que ha enviado menos de %(count)s comentarios:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario ha sido colocado por un usuario poco preciso: \n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Sólo se admiten POSTs"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "No se proporcionó uno o más de los siguientes campos requeridos"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Alguien manipuló el formulario de comentarios (violación de seguridad)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "El formulario de comentarios tiene un parámetro 'target' no válido (el ID de objeto era inválido)"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "El formulario de comentario no proporcionó 'previsualizar' ni 'enviar'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Los usuarios anónimos no pueden votar"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "ID de comentario no válido"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "No puede votarse a sí mismo"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "nombre de la clase modelo de python"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: contrib/flatpages/admin.py:9
-msgid "Advanced options"
-msgstr "Opciones avanzadas"
-
-#: contrib/flatpages/models.py:9
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al final."
-
-#: contrib/flatpages/models.py:10
-msgid "title"
-msgstr "título"
-
-#: contrib/flatpages/models.py:11
-msgid "content"
-msgstr "contenido"
-
-#: contrib/flatpages/models.py:12
-msgid "enable comments"
-msgstr "habilitar comentarios"
-
-#: contrib/flatpages/models.py:13
-msgid "template name"
-msgstr "nombre de plantilla"
-
-#: contrib/flatpages/models.py:14
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema usará 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:15
-msgid "registration required"
-msgstr "debe estar registrado"
-
-#: contrib/flatpages/models.py:15
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página."
-
-#: contrib/flatpages/models.py:20
-msgid "flat page"
-msgstr "página estática"
-
-#: contrib/flatpages/models.py:21
-msgid "flat pages"
-msgstr "páginas estáticas"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f millón"
-msgstr[1] "%(value).1f millón"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f mil millones"
-msgstr[1] "%(value).1f mil millones"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billón"
-msgstr[1] "%(value).1f billón"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "uno"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "dos"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tres"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "cuatro"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "cinco"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "seis"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "siete"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "ocho"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "nueve"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "hoy"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "mañana"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "ayer"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Introduzca un código postal en el formato NNNN or ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49
-#: contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135
-#: contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Este campo sólo acepta números."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Este campo necesita 7 u 8 dígitos."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Introduzca un CUIT válido en el formato XX-XXXXXXXX-X o XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT inválido."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Introduzca un código postal de 4 dígitos."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Introduzca un código postal en el formato XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Los números de teléfono deben tener el formato XXX-XXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid "Select a valid brazilian state. That state is not one of the available states."
-msgstr "Seleccione un estado brasileño válido. Este estado no es uno de los estados disponibles."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Número CPF inválido."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Este campo necesita un máximo de 11 dígitos o 14 caracteres."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Número CNPJ inválido."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Este campo necesita 14 dígitos como mínimo"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Introduzca un código postal en el formato XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Introduzca un Número del Seguro Social de Canadá válido en el formato XXX-XXX-XXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Geneva"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Introduzca un código postal en el formato XXXX."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Introduzca un número de identificación o pasaporte suizos válidos en el formato X1234567<0 o 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Introduzca un RUT chileno válido."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Introduzca un RUT chileno válido. El formato es XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "El RUT chileno no es válido."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavaria"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlín"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburgo"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Lower Saxony"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "North Rhine-Westphalia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxony"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxony-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thuringia"
-
-#: contrib/localflavor/de/forms.py:14
-#: contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Introduzca un código postal en el formato XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr "Introduzca un número de tarjeta de identidad de Alemania válida en el formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Álava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alicante"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almería"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Ávila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Islas Baleares"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Cáceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cádiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castellón"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Córdoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "La Coruña"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Gerona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipúzcoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "León"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lérida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Málaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Orense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Vizcaya"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalucía"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragón"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principado de Asturias"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Islas Baleares"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "País Vasco"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Canarias"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castilla-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castilla y León"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Cataluña"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Región de Murcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Comunidad Foral de Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Comunidad Valenciana"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Introduzca un código postal en el rango y formato 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
-msgstr "Introduzca un número de teléfono válido en el formato 6XXXXXXXX, 8XXXXXXXX o 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Por favor introduzca un NIF, NIE o CIF válido."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Por favor, introduzca un NIF o NIE válido."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "El NIF es incorrecto."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "El NIE es incorrecto."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "El CIF es incorrecto."
-
-#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Introduzca un número de cuenta bancaria en el formato XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "El número de cuenta bancaria es incorrecto."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Introduzca un número de seguro social finlandés válido."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Introduzca un código postal en el formato XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Introduzca un número de identificación de Islandia válido. El formato es XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "El número de identificación de Islandia no es válido."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Introduzca un código postal válido."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Introduzca un número de Seguro Social válido."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Introduzca un número VAT válido."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estado de México"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Introduzca un código postal válido"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Introduzca un número de teléfono válido"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Introduzca un número SoFi válido"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Introduzca un número de seguro social de Noruega válido."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Este campo necesita 8 dígitos."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Este campo necesita 11 dígitos."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "Número de Identificación Nacional consiste en 11 dígitos"
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "El Número de Identificación Nacional es incorrecto."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Introduzca un número de impuesto (NIP) en el formato XXX-XXX-XX-XX o XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "El Número de Identificación Tributaria (NIP) es incorrecto."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "El Número Nacional de Registro de Negocios (REGON) consiste en 7 o 9 dígitos."
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "El Número Nacional de Registro de Negocios (REGON) es incorrecto."
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Introduzca un código postal en el formato XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Lower Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Lesser Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpatia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Greater Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "West Pomerania"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Introduzca un CIF válido."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Introduzca un CNP válido."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "Introduzca un IBAN válido en el formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX."
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Los números de teléfono deben tener el formato XXXX-XXXXXX."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Introduzca un código postal válido en el formato XXXXXX"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Introduzca un código postal en el formato XXXXX o XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Región de Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Región de Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Región de Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Región de Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Región de Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Región de Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Región de Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Región de Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Región de Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Región de Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Región de Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Región de Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Región de Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Región de Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Región de Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Región de Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Región de Bratislava"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Región de Kosice"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Región de Nitra"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Región de Presov"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Región de Trencin"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Región de Trnava"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Región de Zilina"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Introduzca un código postal válido."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Londres (área metropolitana)"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Manchester (área metropolitana)"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "Condado de Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "Condado de Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "Condado de Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "Condado de Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "Condado de Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "Condado de Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Central Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Inglaterra"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Irlanda del Norte"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Escocia"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Gales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Introduzca un código postal en el formato XXXXX o XXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Introduzca un Número Seguro Social de EEUU válido en el formato XXX-XX-XXXX"
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Introduzca un ID surafricano válido"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Introduzca un código postal surafricano válido"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Eastern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirigir desde"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirigir a"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Esto puede ser bien una ruta absoluta (como antes) o una URL completa que empiece con 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redirección"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redirecciones"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "clave de sesión"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "datos de sesión"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "fecha de caducidad"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sesión"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sesiones"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "nombre de dominio"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "nombre para mostrar"
-
-#: contrib/sites/models.py:38
-msgid "site"
-msgstr "sitio"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "sitios"
-
-#: core/validators.py:76
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Este valor debe contener sólo letras, números, guiones bajos y barras."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Este valor debe contener sólo letras, números, guiones bajos o medios."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "No se admiten letras mayúsculas."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "No se admiten letras minúsculas."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Introduzca sólo dígitos separados por comas."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Introduzca direcciones de correo válidas separadas por comas."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Por favor introduzca una dirección IP válida."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "No se admiten valores vacíos."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "No se admiten caracteres no numéricos."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Este valor no puede comprender sólo dígitos."
-
-#: core/validators.py:128
-#: forms/fields.py:157
-msgid "Enter a whole number."
-msgstr "Introduzca un número entero."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Sólo se admiten caracteres alfabéticos."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Fecha no válida: %s"
-
-#: core/validators.py:152
-#: db/models/fields/__init__.py:552
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Introduzca una hora válida en formato HH:MM."
-
-#: core/validators.py:161
-#: db/models/fields/__init__.py:633
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM."
-
-#: core/validators.py:166
-#: forms/fields.py:408
-msgid "Enter a valid e-mail address."
-msgstr "Introduzca una dirección de correo electrónico válida."
-
-#: core/validators.py:178
-#: core/validators.py:470
-#: forms/fields.py:426
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "No se ha enviado ningún fichero. Compruebe el tipo de codificación en el formulario."
-
-#: core/validators.py:189
-#: forms/fields.py:466
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Envíe una imagen válida. El fichero que ha enviado no era una imagen o se trataba de una imagen corrupta."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "La URL %s no apunta a una imagen válida."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Los números de teléfono deben guardar el formato XXX-XXX-XXXX. \"%s\" no es válido."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "La URL %s no apunta a un vídeo QuickTime válido."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Se precisa una URL válida."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Se precisa HTML válido. Los errores específicos son:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formado: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL no válida: %s"
-
-#: core/validators.py:255
-#: core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "La URL %s es un enlace roto."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introduzca una abreviatura válida de estado de los EEUU."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "¡Cuide su vocabulario! Aquí no admitimos la palabra %s."
-msgstr[1] "¡Cuide su vocabulario! Aquí no admitimos las palabras %s."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Este campo debe concordar con el campo '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Por favor, introduzca algo en al menos un campo."
-
-#: core/validators.py:312
-#: core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Por favor, rellene ambos campos o deje ambos vacíos."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "No se admiten valores duplicados."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Este valor debe estar entre %(lower)s y %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Este valor debe ser como mínimo %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Este valor no debe ser mayor que %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Este valor debe ser una potencia de %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Por favor, introduzca un número decimal válido."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito en total."
-msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos en total."
-
-#: core/validators.py:443
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito en su parte entera."
-msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos en su parte entera."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Por favor, introduzca un número decimal válido con a lo más %s dígito decimal."
-msgstr[1] "Por favor, introduzca un número decimal válido con a lo más %s dígitos decimales."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Por favor, introduzca un número de coma flotante válido."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Asegúrese de que el fichero que envía tiene al menos %s bytes."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Asegúrese de que el fichero que envía tiene como máximo %s bytes."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "El formato de este campo es incorrecto."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Este campo no es válido."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "No se pudo obtener nada de %s."
-
-#: core/validators.py:535
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no es válida."
-
-#: core/validators.py:568
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea empieza por \"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Parte del texto que comienza en la línea %(line)s no está permitido en ese contexto. (La línea empieza por \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea empieza por \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea empieza por \"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "A una etiqueta de la línea %(line)s le faltan uno o más atributos requeridos. (La línea empieza por \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es válido. (La línea empieza por \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s de este %(type)s ya existen en este %(field)s."
-
-#: db/models/fields/__init__.py:47
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Ya existe %(optname)s con este %(fieldname)s."
-
-#: db/models/fields/__init__.py:175
-#: db/models/fields/__init__.py:343
-#: db/models/fields/__init__.py:795
-#: db/models/fields/__init__.py:806
-#: forms/fields.py:51
-#: oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
-
-#: db/models/fields/__init__.py:450
-msgid "This value must be an integer."
-msgstr "Este valor debe ser un entero."
-
-#: db/models/fields/__init__.py:491
-msgid "This value must be either True or False."
-msgstr "Este valor debe ser Verdadero o Falso."
-
-#: db/models/fields/__init__.py:515
-msgid "This field cannot be null."
-msgstr "Este campo no puede estar vacío."
-
-#: db/models/fields/__init__.py:702
-msgid "This value must be a decimal number."
-msgstr "Este valor debe ser un entero."
-
-#: db/models/fields/__init__.py:815
-msgid "Enter a valid filename."
-msgstr "Introduzca un nombre de fichero válido"
-
-#: db/models/fields/__init__.py:1006
-msgid "This value must be either None, True or False."
-msgstr "Este valor debe ser Verdadero, Falso o Ninguno."
-
-#: db/models/fields/related.py:93
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Por favor, introduzca un %s válido."
-
-#: db/models/fields/related.py:729
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar más de una opción."
-
-#: db/models/fields/related.py:773
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es válido."
-msgstr[1] "Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son válidos."
-
-#: forms/fields.py:52
-msgid "Enter a valid value."
-msgstr "Introduzca un valor correcto."
-
-#: forms/fields.py:129
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Asegúrese de que su texto tiene a lo más %(max)d caracteres (actualmente tiene %(length)d)."
-
-#: forms/fields.py:130
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Asegúrese de que su texto tiene al menos %(min)d caracteres (actualmente tiene %(length)d)."
-
-#: forms/fields.py:158
-#: forms/fields.py:187
-#: forms/fields.py:216
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Asegúrese de que este valor es menor o igual a %s."
-
-#: forms/fields.py:159
-#: forms/fields.py:188
-#: forms/fields.py:217
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Asegúrese de que este valor es mayor o igual a %s."
-
-#: forms/fields.py:186
-#: forms/fields.py:215
-msgid "Enter a number."
-msgstr "Introduzca un número."
-
-#: forms/fields.py:218
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Asegúrese de que no hay más de %s dígitos en total."
-
-#: forms/fields.py:219
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Asegúrese de que no hay más de %s decimales."
-
-#: forms/fields.py:220
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Asegúrese de que no hay más de %s dígitos antes de la coma decimal."
-
-#: forms/fields.py:268
-#: forms/fields.py:795
-msgid "Enter a valid date."
-msgstr "Introduzca una fecha válida."
-
-#: forms/fields.py:301
-#: forms/fields.py:796
-msgid "Enter a valid time."
-msgstr "Introduzca una hora válida."
-
-#: forms/fields.py:340
-msgid "Enter a valid date/time."
-msgstr "Introduzca una fecha/hora válida."
-
-#: forms/fields.py:427
-msgid "No file was submitted."
-msgstr "No se ha enviado ningún fichero"
-
-#: forms/fields.py:428
-#: oldforms/__init__.py:693
-msgid "The submitted file is empty."
-msgstr "El fichero enviado está vacío."
-
-#: forms/fields.py:527
-msgid "Enter a valid URL."
-msgstr "Introduzca una URL válida."
-
-#: forms/fields.py:528
-msgid "This URL appears to be a broken link."
-msgstr "La URL parece ser un enlace roto."
-
-#: forms/fields.py:593
-#: forms/fields.py:644
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Escoja una opción válida. %(value)s no es una de las opciones disponibles."
-
-#: forms/fields.py:645
-#: forms/fields.py:706
-#: forms/models.py:581
-msgid "Enter a list of values."
-msgstr "Introduzca una lista de valores."
-
-#: forms/fields.py:824
-msgid "Enter a valid IPv4 address."
-msgstr "Introduzca una dirección IPv4 válida."
-
-#: forms/models.py:514
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Escoja una opción válida. Esa opción no está entre las disponibles."
-
-#: forms/models.py:582
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Escoja una opción válida; '%s' no es una de las opciones disponibles."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Asegúrese de que su texto tiene menos de %s carácter."
-msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "No se permiten saltos de línea."
-
-#: oldforms/__init__.py:512
-#: oldforms/__init__.py:586
-#: oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Escoja una opción válida; '%(data)s' no está en %(choices)s."
-
-#: oldforms/__init__.py:754
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduzca un número entero entre -32.768 y 32.767."
-
-#: oldforms/__init__.py:764
-msgid "Enter a positive number."
-msgstr "Introduzca un número positivo."
-
-#: oldforms/__init__.py:774
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduzca un número entero entre 0 y 32.767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "sí,no,tal vez"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "media noche"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "medio día"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "lunes"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "miércoles"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "jueves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "viernes"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mié"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "jue"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "vie"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sáb"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "enero"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febrero"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "March"
-msgstr "marzo"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "April"
-msgstr "abril"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "May"
-msgstr "mayo"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "June"
-msgstr "junio"
-
-#: utils/dates.py:19
-#: utils/dates.py:31
-msgid "July"
-msgstr "julio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "septiembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "octubre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "noviembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "diciembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ene"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dic"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "ene."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "ago."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "oct."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "dic."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "o"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "año"
-msgstr[1] "años"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mes"
-msgstr[1] "meses"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "semana"
-msgstr[1] "semanas"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "día"
-msgstr[1] "días"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "horas"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minutos"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutos"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j N Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j N Y P"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j \\de F"
-
-#: views/generic/create_update.py:129
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "El/La %(verbose_name)s se ha creado exitosamente."
-
-#: views/generic/create_update.py:172
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Se actualizó con éxito el %(verbose_name)s."
-
-#: views/generic/create_update.py:214
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "El/La %(verbose_name)s ha sido borrado."
-
-#~ msgid "Ordering"
-#~ msgstr "Ordenación"
-#~ msgid "Order:"
-#~ msgstr "Orden:"
-#~ msgid "Added %s."
-#~ msgstr "Añadido %s."
-#~ msgid "Deleted %s."
-#~ msgstr "Borrado %s."
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "Los dos campos 'nueva contraseña' no coinciden."
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "El año debe ser 1900 o posterior."
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "Separe múltiples IDs con comas."
-
diff --git a/webapp/django/conf/locale/es/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/es/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b42ebb3..0000000
--- a/webapp/django/conf/locale/es/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/es/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/es/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 4ad90fa..0000000
--- a/webapp/django/conf/locale/es/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,117 +0,0 @@
-# Spanish translation for the django-admin JS files.
-# Copyright (C) 2008, The Django Project
-# This file is distributed under the same license as the django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-10-04 00:00+0200\n"
-"PO-Revision-Date: 2008-03-30 00:54+0100\n"
-"Last-Translator: Django Spanish Group <django-i18n@googlegroups.com>\n"
-"Language-Team: Spanish <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre "
-"Noviembre Diciembre"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Domingo Lunes Martes Miércoles Jueves Viernes Sábado"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s Disponibles"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Selecciona todos"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Agregar"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Remover"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s Elegidos"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Haz tus elecciones y da click en "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Elimina todos"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Ahora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Reloj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Elige una hora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Medianoche"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Mediodía"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Hoy"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Calendario"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Ayer"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Mañana"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Mostrar"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Esconder"
diff --git a/webapp/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/webapp/django/conf/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 5d9eca6..0000000
--- a/webapp/django/conf/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/es_AR/LC_MESSAGES/django.po b/webapp/django/conf/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 170e6aa..0000000
--- a/webapp/django/conf/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4653 +0,0 @@
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-15 18:34-0300\n"
-"PO-Revision-Date: 2008-08-16 14:18-0300\n"
-"Last-Translator: Ramiro Morales <rm0@gmx.net>\n"
-"Language-Team: Django-I18N <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "árabe"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengalí"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "búlgaro"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "catalán"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "checo"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "galés"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "danés"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "alemán"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "griego"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "inglés"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "español"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "estonio"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "español de Argentina"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "vasco"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "persa"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "finlandés"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "francés"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "irlandés"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "gallego"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "húngaro"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "hebreo"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "croata"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islandés"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "japonés"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "georgiano"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "koreano"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "jémer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "canarés"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "letón"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "lituano"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "macedonio"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "holandés"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "noruego"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "polaco"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portugués"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "portugués de Brasil"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "rumano"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "ruso"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "eslovaco"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "esloveno"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "serbio"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "sueco"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tamil"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ucraniano"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "chino simplificado"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "chino tradicional"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Por %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Todos/as"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Cualquier fecha"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Hoy"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Últimos 7 días"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Este mes"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Este año"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Sí"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "No"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "hora de la acción"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "id de objeto"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "repr de objeto"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "marca de acción"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "mensaje de cambio"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "entrada de registro"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "entradas de registro"
-
-#: contrib/admin/options.py:143 contrib/admin/options.py:202
-msgid "None"
-msgstr "Ninguno"
-
-#: contrib/admin/options.py:407
-#, python-format
-msgid "Changed %s."
-msgstr "Modifica %s."
-
-#: contrib/admin/options.py:407 contrib/admin/options.py:417
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "y"
-
-#: contrib/admin/options.py:412
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Se agregó %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:416
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Se modificaron %(list)s en %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:421
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Se eliminó %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:425
-msgid "No fields changed."
-msgstr "No ha modificado ningún campo."
-
-#: contrib/admin/options.py:486 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se agregó con éxito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:490 contrib/admin/options.py:523
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Puede modificarlo nuevamente abajo."
-
-#: contrib/admin/options.py:500 contrib/admin/options.py:533
-#, python-format
-msgid "You may add another %s below."
-msgstr "Puede agregar otro %s abajo."
-
-#: contrib/admin/options.py:521
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:529
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo nuevamente abajo."
-
-#: contrib/admin/options.py:595
-#, python-format
-msgid "Add %s"
-msgstr "Agregar %s"
-
-#: contrib/admin/options.py:672
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/options.py:703
-msgid "Database error"
-msgstr "Error de base de datos"
-
-#: contrib/admin/options.py:752
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se eliminó con éxito %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:759
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: contrib/admin/options.py:786
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia de modificaciones: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Por favor introduzca un nombre de usuario y una contraseña correctos. Note "
-"que ambos campos son sensibles a mayúsculas/minúsculas."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Por favor, identifíquese de nuevo porque su sesión ha caducado. No se "
-"preocupe: se ha guardado su envío."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Parece que su navegador no está configurado para aceptar cookies. Por favor "
-"actívelas, recargue esta página, e inténtelo de nuevo."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Los nombres de usuario no pueden contener el carácter '@'."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Su dirección de correo electrónico no es su nombre de usuario. Intente "
-"nuevamente usando '%s'."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Administración de sitio"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Identificarse"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o más %(fieldname)s en %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o más %(fieldname)s en %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Fecha:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Actualmente"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Página no encontrada"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Lo sentimos, pero no se encuentra la página solicitada."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Inicio"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Error de servidor <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ha ocurrido un error. Se ha informado a los administradores del sitio "
-"mediante correo electrónico y debería ser solucionado en breve. Gracias por "
-"su paciencia."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Bienvenido,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentación"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Cambiar contraseña"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Cerrar sesión"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Sitio de administración de Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administración de Django"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Agregar"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Historia"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Ver en el sitio"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Por favor, corrija el siguiente error."
-msgstr[1] "Por favor, corrija los siguientes errores."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Agregar %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtrar"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Eliminar"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación "
-"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los "
-"siguientes tipos de objetos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"¿Está seguro de que quiere eliminar los %(object_name)s \"%(escaped_object)s"
-"\"? Se eliminarán los siguientes objetos relacionados:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Sí, estoy seguro"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelos disponibles en la aplicación %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Modificar"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "No tiene permiso para editar nada."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Acciones recientes"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mis acciones"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Ninguna disponible"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Hay algún problema con su instalación de base de datos. Asegúrese de que las "
-"tablas de la misma hayan sido creadas, y asegúrese de que el usuario "
-"apropiado tenga permisos de lectura en la base de datos."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Usuario:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Contraseña:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Fecha/hora"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Usuario"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Acción"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j M Y P"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto no tiene historia de modificaciones. Probablemente no fué "
-"añadido usando este sitio de administración."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todos/as"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Buscar"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "un resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "total: %(full_result_count)s"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Grabar como nuevo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Grabar y añadir otro"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Grabar y continuar editando"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Grabar"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primero, introduzca un nombre de usuario y una contraseña. Luego podrá "
-"configurar opciones adicionales."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Nombre de usuario:"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Contraseña:"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"Para verificación, introduzca la misma contraseña que introdujo arriba."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Introduzca una nueva contraseña para el usuario <strong>%(username)s</"
-"strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Identificarse de nuevo"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Cambio de contraseña"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Cambio de contraseña exitoso"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Su contraseña ha sido cambiada."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, por razones de seguridad, introduzca su contraseña antigua, y "
-"luego introduzca la nueva contraseña dos veces para verificar que la ha "
-"escrito correctamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Contraseña antigua:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Contraseña nueva:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Confirme contraseña:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Cambiar mi contraseña"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Recuperar contraseña"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Reinicialización de contraseña completada"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Se le ha enviado su contraseña.  Ahora puede continuar e ingresar."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Confirmación de reincialización de contraseña"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Introduzca la nueva contraseña"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Por favor introduzca su nueva contraseña dos veces de manera que podamos "
-"verificar que la ha escrito correctamente."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Reinicialización de contraseña exitosa"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"El enlace de reinicialización de contraseña es inválido, posiblemente debido "
-"a que ya ha sido usado.  Por favor solicite una nueva reinicialización "
-"de contraseña."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Recuperación de contraseña exitosa"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Le hemos enviado instrucciones sobre como establecer su contraseña a la "
-"dirección de correo electrónico que ha suministrado. Debería recibir las "
-"mismas en breve."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Está recibiendo este mensaje debido a que solicitó recuperar la contraseña"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "de su cuenta de usuario en %(site_name)s."
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Por favor visite la página que se muestra a continuación y elija una nueva "
-"contraseña:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "¡Gracias por usar nuestro sitio!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "El equipo de %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"¿Ha olvidado su contraseña?. Introduzca su dirección de correo electrónico "
-"mas abajo y le enviaremos instrucciones para establecer una nueva."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Dirección de correo electrónico:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Recuperar mi contraseña"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Todas las fechas"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Seleccione %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s a modificar"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "sitio"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "plantilla"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filtrar:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "ver:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicación %r no encontrada"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modelo %(model_name)r no encontrado en aplicación %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "el objeto `%(app_label)s.%(data_type)s` relacionado"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "modelo:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "objetos `%(app_label)s.%(object_name)s` relacionados"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "todos los %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campos en objetos %s"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Entero"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadena (máximo %(max_length)s)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Enteros separados por comas"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Fecha (sin hora)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Fecha (con hora)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "Dirección de correo electrónico"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Ruta de archivo"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Número de punto flotante"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadero, Falso o Nulo)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relación con el modelo padre"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Número de teléfono"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Texto"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Hora"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Estado de los EE.UU. (dos letras mayúsculas)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "Texto XML"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no parece ser un objeto urlpattern"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentación"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus "
-"favoritos.\n"
-"Ahora puede seleccionar el bookmarklet desde cualquier página en el sitio.\n"
-"Tenga en cuenta que algunos de estos bookmarklets precisan que esté viendo\n"
-"el sitio desde un equipo señalado como \"interno\" (hable\n"
-"con su administrador de sistemas si no está seguro de si el suyo lo es).</"
-"p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Documentación de esta página"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Le lleva desde cualquier página a la documentación de la vista que la genera."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID unívoco de las páginas que representan un "
-"único objeto."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Le lleva a la página de administración de páginas que representan un único "
-"objeto."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Ídem, pero abre la página de administración en una nueva ventana."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Información personal"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Permisos"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Agregar usuario"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Cambio de contraseña exitoso"
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contraseña: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Obligatorio. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y "
-"guiones bajos)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor debe contener sólo letras, números y guiones bajos."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Confirmación de contraseña"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Ya existe un usuario con ese nombre."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "Los dos campos de contraseñas no coinciden entre si."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Esta cuenta está inactiva"
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Su navegador Web aparenta no estar configurado para aceptar cookies. Las "
-"cookies son un requerimiento para poder ingresar."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "Correo electrónico"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Esa dirección de e-mail no está asociada a ninguna cuenta de usuario. ¿Está "
-"seguro de que ya se ha registrado?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Reinicialización de contraseña en %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Contraseña nueva"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Confirmación de contraseña nueva"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"La antigua contraseña introducida es incorrecta. Por favor introdúzcala "
-"nuevamente."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "nombre"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "nombre en código"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "permiso"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "permisos"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "grupo"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "grupos"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "nombre de usuario"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "nombre"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "apellido"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "dirección de correo electrónico"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "contraseña"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Use '[algo]$[salt]$[hexdigest]' o use el <a href=\"password/\">formulario de "
-"cambio de contraseña</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "es staff"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si el usuario puede ingresar a este sitio de administración."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "activo"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica si el usuario debe ser tratado como un usuario activo. Desactive este "
-"campo en lugar de eliminar usuarios."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "es superusuario"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario posee todos los permisos sin que sea necesario "
-"asignarle los mismos en forma explícita."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "último ingreso"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "fecha de creación"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Además de los permisos asignados manualmente, este usuario también poseerá "
-"todos los permisos de los grupos a los que pertenezca."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "permisos de usuario"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "usuario"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "usuarios"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "mensaje"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Sesión cerrada"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "ID de objeto"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "encabezado"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "comentario"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "calificación 1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "calificación 2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "calificación 3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "calificación 4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "calificación 5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "calificación 6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "calificación 7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "calificación 8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "es calificación válida"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "fecha/hora de envío"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "es público"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "se ha eliminado"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque esta caja si el comentario es inapropiado. En su lugar se mostrará un "
-"mensaje \"Este comentario ha sido eliminado\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "comentarios"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Objeto contenido"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s el %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "nombre de la persona"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "dirección ip"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "aprobado por el staff"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "comentario libre"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "comentarios libres"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "puntuación"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "fecha de la puntuación"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "punto karma"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "puntos karma"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "puntuado %(score)d por %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario fue marcado por %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "fecha de la marca"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "marca de usuario"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "marcas de usuario"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Marca de %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "fecha de eliminación"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "eliminación por moderador"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "eliminaciones por moderador"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Eliminación del moderador %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Olvidó su contraseña?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Calificaciones"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obligatorio"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Enviar una foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Comentario:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Previsualizar comentario"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Su nombre:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Se precisa esta puntuación porque ha introducido al menos otra más."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Este comentario lo envió un usuario que ha enviado menos de %(count)s "
-"comentario:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Este comentario lo envió un usuario que ha enviado menos de %(count)s "
-"comentarios:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario ha sido enviado por un usuario 'semi-anónimo':\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Sólo se admiten POSTs"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "No se proporcionó uno o más de los campos obligatorios"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Alguien está jugando con el formulario de comentarios (violación de "
-"seguridad)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"El formulario de comentarios tiene un parámetro 'target' no válido (el ID de "
-"objeto era inválido)"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-"El formulario de comentarios no proporcionó 'previsualizar' ni 'enviar'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Los usuarios anónimos no pueden votar"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "ID de comentario no válido"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Ud. no puede votarse a sí mismo"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "nombre de la clase python del modelo"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ejemplo: '/about/contact/'. Asegúrese de usar barras '/' al principio y al "
-"final."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Este valor debe contener sólo letras, números, guiones bajos, guiones o "
-"barras (/)"
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Opciones avanzadas"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "título"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "contenido"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "activar comentarios"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nombre de plantilla"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema "
-"usará 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "debe estar registrado"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "página estática"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "páginas estáticas"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "No se ha proporcionado un valor de geometría."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Valor de geometría no válido."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Tipo de geometría no válido"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "st"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "nd"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f millón"
-msgstr[1] "%(value).1f millones"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f millardo"
-msgstr[1] "%(value).1f millardos"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billón"
-msgstr[1] "%(value).1f billones"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "uno"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "dos"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tres"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "cuatro"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "cinco"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "seis"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "siete"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "ocho"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "nueve"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "hoy"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "mañana"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "ayer"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Introduzca un código postal en formato NNNN o ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Este campo permite sólo valores numéricos."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Este campo requiere 7 u 8 dígitos."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Introduzca un CUIT válido en formato XX-XXXXXXXX-X o XXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT inválido."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Carintia"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Baja Austria"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Alta Austria"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburgo"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Estiria"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tirol"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Viena"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Introduzca un zip code en formato XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr "Introduzca un Número de Seguridad Social austríaco en formato XXXX XXXXXX."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Introduzca un post code de 4 dígitos."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Introduzca un zip code en formato XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Los números telefónicos deben respetar el formato XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Seleccione un estado Brasileño válido. Ese estado no es uno de los estados "
-"disponibles."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Número CPF inválido."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Este campo requiere como máximo 11 dígitos o 14 caracteres."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Número CNPJ inválido."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Este campo requiere al menos 14 dígitos."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Introduzca un código postal en formato XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Introduzca un Número de Seguridad Social Canadiense en formato XXX-XXX-XXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Geneva"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Introduzca un número válido de tarjeta de identidad o pasaporte Suizos en "
-"formato X1234567<0 o 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Introduzca un RUT chileno válido."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Introduzca un RUT chileno válido. EL formato es XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "El RUT chileno no es válido."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavaria"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Lower Saxony"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "North Rhine-Westphalia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxony"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxony-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thuringia"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Introduzca un zip code en formato XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Introduzca un número de tarjeta de identidad alemán válido en formato "
-"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Álava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alicante"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almería"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Ávila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Islas Baleares"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Cáceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cádiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castellón"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Córdoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "La Coruña"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Gerona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipúzcoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "León"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lérida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Málaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Orense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Vizcaya"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalucía"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragón"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principado de Asturias"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Islas Baleares"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "País Vasco"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Islas Canarias"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castilla-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castilla y León"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Cataluña"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Región de Murcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Comunidad Foral de Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Comunidad Valenciana"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-"Introduzca un código postal en el siguiente rango y con el siguiente "
-"formato: 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Introduzca un número telefónico en uno de los siguientes formatos: "
-"6XXXXXXXX, 8XXXXXXXX o 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Por favor introduzca un NIF, NIE o CIF válidos."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Por favor, introduzca un NIF o CIE válidos."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Código de verificación de NIF inválido."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Código de verificación de NIE inválido."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Código de verificación de CIF inválido."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Por favor introduzca un número de cuenta bancaria válido en formato XXXX-"
-"XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Código de verificación de número de cuenta bancaria inválido."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Introduzca un número de seguridad social finlandés válido."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Introduzca un zip code en formato XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Introduzca un número de identificación islandés válido. El formato es XXXXXX-"
-"XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "El número de identificación islandés no es válido."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Introduzca un zip code válido."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Introduzca un número de Seguridad Social válido."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Introduzca un número VAT válido."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Introduzca un código postal en formato XXXXXX o XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estado de México"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Introduzca un código postal válido."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Introduzca un número telefónico válido."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Introduzca un número SoFi válido."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevolanda"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Frisia"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Güeldres"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groninga"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburgo"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Brabante Septentrional"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Holanda Septentrional"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zelanda"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Holanda Meridional"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Introduzca un número de seguridad social Noruego válido."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Este campo requiere 8 dígitos."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Este campo requiere 11 dígitos."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "Los Números Nacionales de Identificación constan de 11 dígitos."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Código de verificación de Número Nacional de Identificación inválido."
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Introduzca un campo de número impositivo en formato XXX-XXX-XX-XX o XX-XX-"
-"XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Código de verificación de Número Impostitivo (NIP) inválido."
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"Los Números Nacionales de Registro de Negocios (REGON) constan de 7 o 9 "
-"dígitos."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-"Código de verificación de Número Nacional de Registro de negocios (REGON) "
-"inválido."
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Introduzca un código postal en formato XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Baja Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Cuyavia y Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubus"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Pequeña Polonia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpacia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlaquia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Varmia y Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Gran Polonia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Pomerania Occidental"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Introduzca un CIF válido."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Introduzca un CNP válido."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "Introduzca un IBAN válido en formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX"
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Los números telefónicos deben respetar el formato XXXX-XXXXXX."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Introduzca un código postal válido en formato XXXXXX"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Introduzca un código postal en formato XXXXX o XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "region Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "region Bratislava"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "region Kosice"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "region Nitra"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "region Presov"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "region Trencin"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "region Trnava"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "region Zilina"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Introduzca un postcode válido."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall e Islas de Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Greater London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "County Fermarmagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Escocia Central"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Inglaterra"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Irlanda del Norte"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Escocia"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Gales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Introduzca un zip code en el formato XXXXX o XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Introduzca un Número de Seguridad Social en formato XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Introduzca un número ID de Sudáfrica válido."
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Introduzca un código postal de Sudáfrica válido."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Eastern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirigir desde"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Esta ruta debe ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/"
-"events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirigir a"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Esto puede ser bien una ruta absoluta (como arriba) o una URL completa que "
-"empiece con 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redirección"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redirecciones"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "clave de sesión"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "datos de sesión"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "fecha de caducidad"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sesión"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sesiones"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "nombre de dominio"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "nombre para visualizar"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "sitios"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Este valor debe contener sólo letras, números, guiones bajos o guiones."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "No se admiten letras mayúsculas."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "No se admiten letras minúsculas."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Introduzca sólo dígitos separados por comas."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Introduzca direcciones de correo válidas separadas por comas."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Por favor introduzca una dirección IP válida."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "No se admiten valores vacíos."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "No se admiten caracteres no numéricos."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Este valor no puede estar formado sólo por dígitos."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Introduzca un número entero."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Sólo se admiten caracteres alfabéticos."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Fecha no válida: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Introduzca un valor de hora válido en formato HH:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Introduzca un valor de fecha/hora válido en formato AAAA-MM-DD HH:MM."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "Introduzca una dirección de correo electrónico válida"
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No se envió un archivo. Verifique el tipo de codificación en el formulario."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Envíe una imagen válida. El archivo que ha enviado no era una imagen o se "
-"trataba de una imagen corrupta."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "La URL %s no apunta a una imagen válida."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Los números telefónicos deben respetar el formato XXX-XXX-XXXX. \"%s\" no es "
-"válido."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "La URL %s no apunta a un video QuickTime válido."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Se precisa una URL válida."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Se precisa HTML válido. Los errores específicos son:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formado: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL no válida: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "La URL %s es un enlace roto."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introduzca una abreviatura válida de estado de los EE.UU."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "¡Vigila tu boca! Aquí no admitimos la palabra %s."
-msgstr[1] "¡Vigila tu boca! Aquí no admitimos las palabras %s."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Este campo debe concordar con el campo '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Por favor, introduzca algo en al menos un campo."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Por favor, rellene ambos campos o deje ambos vacíos."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Se debe proporcionar este campo si %(field)s es %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Se debe proporcionar este campo si %(field)s no es %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "No se admiten valores duplicados."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Este valor debe estar entre %(lower)s y %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Este valor debe ser al menos %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Este valor debe ser no mayor que %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Este valor debe ser una potencia de %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Por favor, introduzca un número decimal válido."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"Por favor, introduzca un número decimal válido con un máximo de un dígito en "
-"total."
-msgstr[1] ""
-"Por favor, introduzca un número decimal válido con un maximo de %s dígitos "
-"en total."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Por favor, introduzca un número decimal válido con un dígito entero como "
-"máximo."
-msgstr[1] ""
-"Por favor, introduzca un número decimal válido con un máximo de %s dígitos "
-"enteros."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Por favor, introduzca un número decimal válido con un máximo de una posición "
-"decimal."
-msgstr[1] ""
-"Por favor, introduzca un número decimal válido con un máximo de %s "
-"posiciones decimales."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Por favor introduzca un número de punto flotante válido."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-"Asegúrese de que el archivo que envía es de un tamaño mínimo de %s bytes."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-"Asegúrese de que el archivo que envía es de un tamaño máximo de %s bytes."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "El formato de este campo es incorrecto."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Este campo no es válido."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "No se pudo obtener nada de %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"La URL %(url)s devolvió la cabecera Content-Type '%(contenttype)s', que no "
-"es válida."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Por favor, cierre la etiqueta %(tag)s de la línea %(line)s. (La línea "
-"empieza con \"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Parte del texto que comienza en la línea %(line)s no está permitido en ese "
-"contexto. (La línea empieza con \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"El \"%(attr)s\" de la línea %(line)s no es un atributo válido. (La línea "
-"empieza con \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"La \"<%(tag)s>\" de la línea %(line)s no es una etiqueta válida. (La línea "
-"empieza con \"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"A una etiqueta de la línea %(line)s le faltan uno o más atributos "
-"requeridos. (La línea empieza con \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"El atributo \"%(attr)s\" de la línea %(line)s tiene un valor que no es "
-"válido. (La línea empieza con \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "Ya existe un(a) %(object)s con este/a %(type)s para %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Ya existe %(optname)s con este %(fieldname)s."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "Este valor debe ser un número entero."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "Este valor debe ser True o False."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "Este campo no puede ser nulo."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Introduzca un valor de fecha/hora válido en formato AAAA-MM-DD HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "Este valor debe ser un número decimal."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "Este valor debe ser None, True o False."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Introduzca un valor de hora válido en formato HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Introduzca un nombre de archivo válido."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Por favor, introduzca un %s válido."
-
-#: db/models/fields/related.py:759
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenga presionada \"Control\" (\"Command\" en una Mac) para seleccionar "
-"más de uno."
-
-#: db/models/fields/related.py:839
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Por favor, introduzca IDs de %(self)s válidos. El valor %(value)r no es "
-"válido."
-msgstr[1] ""
-"Por favor, introduzca IDs de %(self)s válidos. Los valores %(value)r no son "
-"válidos."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Introduzca un valor válido."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Asegúrese de que este valor tenga como máximo %(max)d caracteres (tiene %"
-"(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Asegúrese de que este valor tenga al menos %(min)d caracteres (tiene %"
-"(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Asegúrese de que este valor sea menor o igual a %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Asegúrese de que este valor sea mayor o igual a %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Introduzca un número."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Asegúrese de que no existan en total mas de %s dígitos."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Asegúrese de que no existan mas de %s lugares decimales."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Asegúrese de que no existan mas de %s dígitos antes del punto decimal."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "Introduzca una fecha válida."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "Introduzca un valor de hora válido."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "Introduzca un valor de fecha/hora válido."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "No se envió ningún archivo."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "El archivo enviado está vacío."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "Introduzca una URL válida."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "La URL parece ser un enlace roto."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. %(value)s no es una de las opciones "
-"disponibles."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Introduzca una lista de valores."
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "Introduzca una dirección IPv4 válida"
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. Esa opción no es una de las opciones "
-"disponibles."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. %s no es una de las opciones disponibles."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Asegúrese de que su texto tiene menos de %s caracter."
-msgstr[1] "Asegúrese de que su texto tiene menos de %s caracteres."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "No se permiten saltos de línea."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Seleccione una opción válida; '%(data)s' no está en %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduzca un número entero entre -32.768 y 32.767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Introduzca un número positivo."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduzca un número entero entre 0 y 32.767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "si,no,talvez"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "medianoche"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "mediodía"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Lunes"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Miércoles"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Jueves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Viernes"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mie"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Jue"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Vie"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Setiembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ene"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dic"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Enero"
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Set."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dic."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "o"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "año"
-msgstr[1] "años"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mes"
-msgstr[1] "meses"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "semana"
-msgstr[1] "semanas"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "día"
-msgstr[1] "días"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "horas"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minutos"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutos"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j N Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j N Y P"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j \\de F"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Se creó con éxito %(verbose_name)s."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Se actualizó con éxito %(verbose_name)s."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Se eliminó %(verbose_name)s."
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "Su nueva contraseña es: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr "Puede cambiarla accediendo a esta página:"
-
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "El año debe ser 1900 o posterior."
-
-#~ msgid "Gaeilge"
-#~ msgstr "Irlandés"
-
-#~ msgid "Brazilian"
-#~ msgstr "Brasileño"
-
-#~ msgid "Ordering"
-#~ msgstr "Ordenación"
-
-#~ msgid "Order:"
-#~ msgstr "Orden:"
-
-#~ msgid "Added %s."
-#~ msgstr "Agregado %s."
-
-#~ msgid "Deleted %s."
-#~ msgstr "Eliminó %s."
-
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "Los dos campos 'nueva contraseña' no coinciden entre si."
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "Separe múltiples identificadores con comas."
-
-#~ msgid ""
-#~ "Enter a postcode. A space is required between the two postcode parts."
-#~ msgstr ""
-#~ "Introduzca un postcode. Se requiere un espacio entre las dos secciones "
-#~ "del mismo."
-
-#~ msgid "%d milliseconds"
-#~ msgstr "%d milisegundos"
-
-#~ msgid "AnonymousUser"
-#~ msgstr "UsuarioAnonimo"
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Use '[algoritmo]$[salt]$[hexdigest]'"
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "¿Ha <a href=\"/password_reset/\">olvidado su contraseña</a>?"
-
-#~ msgid "%(content_type_name)s"
-#~ msgstr "tipos de contenido"
-
-#~ msgid "%(result_count)s result"
-#~ msgid_plural "%(counter)s results"
-#~ msgstr[0] "un resultado"
-#~ msgstr[1] "%(counter)s resultados"
-
-#~ msgid "Comment"
-#~ msgstr "Comentario"
-
-#~ msgid "Comments"
-#~ msgstr "Comentarios"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "Cadena (máximo 50)"
-
-#~ msgid "label"
-#~ msgstr "etiqueta"
-
-#~ msgid "package"
-#~ msgstr "paquete"
-
-#~ msgid "packages"
-#~ msgstr "paquetes"
diff --git a/webapp/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b7683ea..0000000
--- a/webapp/django/conf/locale/es_AR/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 32a37eb..0000000
--- a/webapp/django/conf/locale/es_AR/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-10-06 14:18-0300\n"
-"PO-Revision-Date: 2007-07-14 14:36-0300\n"
-"Last-Translator: Ramiro Morales <rm0@gmx.net>\n"
-"Language-Team: Django-I18N <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s disponibles"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Seleccionar todos"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Agregar"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Eliminar"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s elegidos"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Seleccione los items a agregar y haga click en "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Eliminar todos"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Setiembre Octubre "
-"Noviembre Diciembre"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Domingo Lunes Martes Miércoles Jueves Viernes Sábado"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Mostrar"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Ocultar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Ahora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Reloj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Elija una hora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Medianoche"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Mediodía"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Hoy"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Calendario"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Ayer"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Mañana"
diff --git a/webapp/django/conf/locale/et/LC_MESSAGES/django.mo b/webapp/django/conf/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index 2915706..0000000
--- a/webapp/django/conf/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/et/LC_MESSAGES/django.po b/webapp/django/conf/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index d8d33be..0000000
--- a/webapp/django/conf/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4496 +0,0 @@
-# Estonian translation for the Django Project.
-# Copyright (C) 2008, Django Project
-# This file is distributed under the same license as the django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-21 01:56+0300\n"
-"PO-Revision-Date: 2008-06-17 12:29+0300\n"
-"Last-Translator: Erik Allik <removethis-eallik_at_gmail-com>\n"
-"Language-Team: Django-i18n <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "araabia"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengali"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "bulgaaria"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "katalaani"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "tšehhi"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "uelsi"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "taani"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "saksa"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "kreeka"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "inglise"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "hispaania"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "eesti"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "argentiina hispaania"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "baski"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "pärsia"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "soome"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "prantsuse"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "iiri"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "galiitsia"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "ungari"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "heebrea"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "horvaatia"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islandi"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "itaalia"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "jaapani"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "gruusia"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "korea"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "khmeri"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "läti"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "leedu"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "makedoonia"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "hollandi"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "norra"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "poola"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portugali"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "brasiilia portugali"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "rumeenia"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "vene"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "slovaki"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "sloveeni"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "serbia"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "rootsi"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tamiili"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "türgi"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ukrania"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "lihtsustatud hiina"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "traditsiooniline hiina"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>%s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Kõik"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Suvaline kuupäev"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Täna"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Viimased 7 päeva"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Käesolev kuu"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Käesolev aasta"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Jah"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Ei"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Tundmatu"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "toimingu aeg"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "objekti id"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "objekti esitus"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "toimingu lipp"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "muudatuse tekst"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "logisissekanne"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "logisissekanded"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "puudub"
-
-#: contrib/admin/options.py:326
-#, python-format
-msgid "Changed %s."
-msgstr "Muutsin %s."
-
-#: contrib/admin/options.py:326 contrib/admin/options.py:336
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "ja"
-
-#: contrib/admin/options.py:331
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Lisatud %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:335
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Muudetud %(list)s objektil %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:340
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Kustutatud %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:344
-msgid "No fields changed."
-msgstr "Ühtegi välja ei muudetud."
-
-#: contrib/admin/options.py:405 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" lisamine õnnestus."
-
-#: contrib/admin/options.py:409 contrib/admin/options.py:442
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Te võite selle muutmist jätkata."
-
-#: contrib/admin/options.py:419 contrib/admin/options.py:452
-#, python-format
-msgid "You may add another %s below."
-msgstr "Te võite lisada uue objekti %s"
-
-#: contrib/admin/options.py:440
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Objekti %(name)s \"%(obj)s\" muutmine õnnestus."
-
-#: contrib/admin/options.py:448
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "Objekti %(name)s \"%(obj)s\" lisamine õnnestus. Te võite seda muuta."
-
-#: contrib/admin/options.py:514
-#, python-format
-msgid "Add %s"
-msgstr "Lisa %s"
-
-#: contrib/admin/options.py:591
-#, python-format
-msgid "Change %s"
-msgstr "Muuda %s"
-
-#: contrib/admin/options.py:622
-msgid "Database error"
-msgstr "Andmebaasi viga"
-
-#: contrib/admin/options.py:671
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Objekti %(name)s \"%(obj)s\" kustutamine õnnestus."
-
-#: contrib/admin/options.py:678
-msgid "Are you sure?"
-msgstr "Kas olete kindel?"
-
-#: contrib/admin/options.py:705
-#, python-format
-msgid "Change history: %s"
-msgstr "Muudatuste ajalugu: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Palun sisestage korrektne kasutajatunnus ja salasõna. Mõlemad väljad on "
-"tõstutundlikud."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Teie sessioon on aegunud. Palun logige uuesti sisse. Olge mureta: sisestatud "
-"andmed on salvestatud."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Paistab, et Teie brauser ei aktsepteeri küpsiseid. Palun võimaldage küpsised "
-"ning seejärel laadige see leht uuesti."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Kasutajatunnused ei tohi sisaldada '@' märki."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Teie e-posti aadress ei ole sama asi, mis Teie kasutajatunnus. Proovige '%s'."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Saidi administreerimine"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Sisene"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Kuupäev:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Aeg:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Hetkel:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Muuda:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Lehte ei leitud"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Vabandame, kuid soovitud lehte ei leitud."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Kodu"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serveri viga"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serveri viga (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serveri Viga <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"On tekkinud viga. Vastavasisuline teavitus on saadetud süsteemi haldajale "
-"ning vea parandamisega tegeletakse esimesel võimalusel. Täname mõistva "
-"suhtumise eest!"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Tere tulemast,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentatsioon"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Muuda salasõna"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Logi välja"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administreerimisliides"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administreerimisliides"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Lisa"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Ajalugu"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Näida lehel"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Palun parandage allolev viga"
-msgstr[1] "Palun parandage allolevad vead"
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lisa %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtreeri"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Kustuta"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Selleks, et kustutada %(object_name)s '%(escaped_object)s', on vaja "
-"kustutada lisaks ka kõik seotud objecktid, aga teil puudub õigus järgnevat "
-"tüüpi objektide kustutamiseks:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Kas olete kindel, et soovite kustutada objekti %(object_name)s \"%"
-"(escaped_object)s\"? Kõik järgnevad seotud objektid kustutatakse koos "
-"sellega:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Jah, olen kindel"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Rakenduses %(name)s leitud mudelid"
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Muuda"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Teil ei ole õigust midagi muuta."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Hiljutised Toimingud"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Minu Toimingud"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Ei leitud ühtegi"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"On tekkinud viga seoses andmebaasiga. Veenduge, et kõik vajalikud "
-"andmebaasitabelid on loodud  ning et andmebaas on vastava kasutaja poolt "
-"loetav."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Kasutajatunnus:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Salasõna:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Kuupäev/kellaaeg"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Kasutaja"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Toiming"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Sellel objektil puudub muudatuste ajalugu. Tõenäoliselt ei kasutatud selle "
-"objekti lisamisel käesolevat administreerimislidest."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Näita kõiki"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Mine"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 tulemus"
-msgstr[1] "%(counter)s tulemust"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "Kokku %(full_result_count)s"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Salvesta uuena"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Salvesta ja lisa uus"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Salvesta ja jätka muutmist"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Salvesta"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Kõige pealt sisestage kasutajatunnus ja salasõna, seejärel on võimalik muuta "
-"täiendavaid kasutajaandmeid."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Kasutajatunnus"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Salasõna"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Salasõna (uuesti)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"Sisestage sama salasõna uuesti veendumaks, et sisestamisel ei tekkinud vigu"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Sisestage uus salasõna kasutajale <strong>%(username)s</strong>"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tänan, et veetsite aega meie lehel."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logi uuesti sisse"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Salasõna muutmine"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Salasõna muutmine õnnestus"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Teie salasõna on vahetatud."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Turvalisuse tagamiseks palun sisestage oma praegune salasõna ning seejärel "
-"uus salasõna.Veendumaks, et uue salasõna sisestamisel ei tekkinud vigu, "
-"palun sisestage see kaks korda."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Senine salasõna:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Uus salasõna:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Kinnita salasõna:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Muuda salasõna"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Uue parooli loomine"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Uue salasõna loomine valmis"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Teie salasõna on määratud. Võite nüüd sisse logida."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Uue salasõna loomise kinnitamine"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Sisestage uus salasõna"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Palun sisestage uus salasõna kaks korda, et saaksime veenduda, et "
-"sisestamisel ei tekkinud vigu."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Uue salasõna loomine ebaõnnestus"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Uue salasõna loomise link ei olnud korrektne. Võimalik, et seda on varem "
-"kasutatud. Esitage uue salasõna taotlus uuesti."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Uue parooli loomine õnnestus"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Teie poolt sisestatud e-posti aadressile on saadetud juhised uue salasõna "
-"määramiseks. Kiri peaks kohale jõudma varsti."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "See kiri saadeti teile, sest soovisite uut salasõna"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "teie kasutajakontole lehel %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Teie kasutajatunnus juhul, kui olete unustanud:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Täname meie lehte külastamast!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s meeskond"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Unustasid parool? Sisesta oma e-posti aadress ning me saadame sulle juhised "
-"uue parooli määramiseks."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-posti aadress:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Reseti parool"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Kõik kuupäevad"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Vali %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Vali %s mida muuta"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "sait"
-
-#: contrib/admin/views/template.py:38
-#, fuzzy
-msgid "template"
-msgstr "mall"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "lipik:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filtreeri:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "vaade:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Rakendust %r ei leitud"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Mudelit %(model_name)r ei leitud rakendusest %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "seotud `%(app_label)s.%(data_type)s` objekt"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "mudel:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "seotud `%(app_label)s.%(object_name)s` objektid"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "kõik %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "%s arv"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Objekti %s väljad"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Täisarv"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Tõeväärtus (Kas tõene või väär)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (kuni %(max_length)s märki)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Komaga eraldatud täisarvud"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Kuupäev (kellaajata)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Kuupäev (kellaajaga)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Kümnendmurd"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-posti aadress"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Faili asukoht"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Ujukomaarv"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP aadress"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Tõeväärtus (Kas tõene, väär või tühi)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Seos ülem-mudeliga"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefoninumber"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Aeg"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S.A. osariik (kaks suurt tähte)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML tekst"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ei tundu olevat urlpattern objekt"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Järjehoidjad"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentatsiooni järjehoidjad"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Selle lehekülje dokumentatsioon"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Näita objekti ID-d"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Muuda seda objekti (samas aknas)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Muuda seda objekti (uues aknas)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Sama, mis üleval, kuid avab admin. lehe uues aknas."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Isiklikud andmd"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Õigused"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Tähtsad kuupäevad"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Grupid"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Lisa kasutaja"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Salasõna edukalt muudetud."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Muuda salasõna: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "Nõutav. 30 tähemärki või vähem. Ainult tähed, numbrid ja alakriipsud."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "See väärtus võib sisaldada ainult tähti, numbreid ja alakriipse."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Salasõna kinnitus"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Sama kasutajatunnusega kasutaja on juba olemas."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "Kaks sisestatud parooli ei olnud identsed."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "See konto ei ole aktiivne."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Teie veebibrauser ei aktsepteeri küpsiseid, aga küpsised on sisselogimiseks "
-"vajalikud."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-posti aadress"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Selle e-posti aadressiga ei ole seotud ühtegi kasutajakontot. Veenduge, et "
-"olete registreerunud."
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr ""
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Uus salasõna"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Uue salasõna kinnitus"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Vana salasõna"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Te sisestasite oma vana parooli vigaselt. Palun sisestage see uuesti."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "nimi"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "koodnimi"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "õigus"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "õigused"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "grupp"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "grupid"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "kasutajatunnus"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "eesnimi"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "perenimi"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "e-posti aadress"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "salasõna"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "personalistaatus"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Määrab, kas kasutaja saab sisse logida sellesse admininistreerimisliidesesse."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "aktiivne"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Määrab, kas see konto on aktiivne. Kustutamise asemel lihtsalt deaktiveerige "
-"konto."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "superkasutaja staatus"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Määrab, kas see kasutaja omab automaatselt ja alati kõiki õigus."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "viimane sisenemine"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "liitumise kuupäev"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Lisaks neile õigustele, mis kasutajale on määratud, omab kasutaja ka neid "
-"õigusi, mis on nendel gruppidel, millesse ta kuulub."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "kasutajaõigused"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "kasutaja"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "kasutajad"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "sõnum"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Välja logitud"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "objekti ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "pealkiri"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "kommentaar"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "reiting #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "reiting #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "reiting #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "reiting #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "reiting #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "reiting #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "reiting #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "reiting #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "on korrektne reiting"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "loomise kuupäev/kellaaeg"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "on avalik"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "on eemaldatud"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Märkige siia linnuke, kui see kommentaar on ebasobiv. Kommentaari asemel "
-"kuvatakse kirja \"Kommentaar on kustutatud\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "kommentaarid"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Sisuobjekt"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postitatud kasutaja %(user)s poolt %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "isiku nimi"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "ip aadress"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "personali poolt heaks kiidetud"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "vaba kommentaar"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "vabad kommentaarid"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "tulemus"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "tulemuse kuupäev"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "karma tulemus"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "karma tulemused"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d reiting kasutaja %(user)s poolt"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"See kommentaar märgiti kasutaja %(user)s poolt:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "märkimise kuupäev"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "kasutajamärge"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "kasutajamärked"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Lipu pani %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "kustutamise kuupäev"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "moderaatori kustutus"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "moderaatori kustutused"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "moderaatori kustutus kasutaja %r poolt"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Unustasid salasõna?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Reitingud"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Nõutav"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Valikuline"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Postita foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Kommentaar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Kommentaari eelvaade"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Teie nimi:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"See reiting on nõutav, sest olete sisestanud vähemalt ühe teise reitingu."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Selle kommentaari postitas pealiskaudne kasutaja:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Ainult POST päringud on lubatud"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Üks või enam nõutavatest väljadest on puudu"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Keegi on kommentaari ankeeti sisestanud vigaseid andmed (turvarikkumine)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Kommentaariankeet sisaldas ebakorrektset 'target' parameetrit -- objekti ID "
-"ei olnud korrektne"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Kommentaari ankeedis oli puudu kas 'preview' või 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonüümsed kasutajad ei saa hääletada"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Ebakorrektne kommentaari ID"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Iseendale ei saa häält anda"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "pythoni mudeli klassinimi"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "sisutüüp"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "sisutüübid"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Näide: '/about/contact/'. Veenduge, et URL algaks ja lõppeks kaldkriipsuga."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"See väärtus võib sisaldada ainult tähti, numbreid, alakriipse, mõttekriipse "
-"või kaldkriipse."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Lisavalikud"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "pealkiri"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "sisu"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "võimalda kommentaarid"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "mall"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Näide: 'flatpages/contact_page.html'. Kui mall on määramata, kasutatakse "
-"vaikimisi malli 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registreerumine nõutav"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Kui see on valitud, näevad lehte ainult sisselogitud kasutajad"
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "sisuleht"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "sisulehed"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr ""
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Vigane geomeetriline väärtus"
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Vigane geomeetriline tüüp"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljon"
-msgstr[1] "%(value).11f miljonit"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljard"
-msgstr[1] "%(value).1f miljardit"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triljon"
-msgstr[1] "%(value).1f triljonit"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "üks"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "kaks"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "kolm"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "neli"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "viis"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "kuus"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "seitse"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "kaheksa"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "üheksa"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "täna"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "homme"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "eile"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Sisesta postiindeks kujul NNNN või ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "See väli peab koosnema ainult numbritest."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Siin väljal peab olema kas 7 või 8 numbrit."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Sisesta korrektne CUIT kujul XX-XXXXXXXX-X or XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Vale CUIT."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Kärnten"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Alam-Austria"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Ülem-Austria"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburg"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Steiermark"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tirool"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Viin"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Sisesta postiindeks kujul XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr "Sisesta kehtiv Austria sotsiaalkindlustusnumber formaadis XXX-XX-XXXX."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Sisesta neljakohaline postiindeks."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Sisesta postiindeks kujul XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefoninumbrid peavad olema kujul XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "Vali korrektne Brasiilia osariik. Valitud osariik ei ole korrektne."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Mittekorrektne CPF number."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "See väli võib olla maksimaalselt 11 või 14 sümbolit."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Mittekorrektne CNPJ number."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "See väli peab olema vähemalt 14-kohaline arv."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Sisesta postiindeks kujul XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Sisesta korrektne Kanada sotsiaalturvatunnus formaadis XXX-XXX-XXXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Geneva"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Sisesta kehtiv Šveitsi isiku- või passinumber kujul X1234567<0 või "
-"1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Sisesta korrektne Tšiili RUT."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Sisesta korrektne Tšiili RUT formaadis XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Tšiili RUT on ebakorrektne."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Baieri"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berliin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Vorpommern"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Alam-Saksi"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Nordrhein-Westfalen"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rheinland-Pfalz"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarimaa"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saksimaa"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saksi-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Tüüringi"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Sisesta postiindeks kujul XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Sisesta kehtiv Saksamaa ID-kaardi number kujul XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Álava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alicante"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almería"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Ávila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Baleaarid"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Cáceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cádiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castellón"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Córdoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipúzcoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "León"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Málaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Orense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Astuuria"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Vizcaya"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andaluusia"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragón"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Astuuria"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Baleaarid"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Baskimaa"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Kanaari saared"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castilla-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castilla-León"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Kataloonia"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Sisesta korrektne postiindeks vahemikus 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Sisesta korrektne telefoninumber, mis on formaadis 6XXXXXXXX, 8XXXXXXXX või "
-"9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Palun sisesta korrektne NIF, NIE või CIF."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Palun sisesta korrektne NIF või NIE."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Vale NIF-i kontrollsumma."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Vale NIE kontrollsumma."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Vale CIF-i kontrollsumma."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Palun sisesta korrektne kontonumber formaadis XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Pangakonto numbri kontrollsumma on vale."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Sisesta korrektne Soome sotsiaalturvatunnus."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Sisesta postiindeks kujul XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Sisesta kehtiv Islandi isikukood formaadis XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Islandi isikukood ei ole korrektne."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Sisesta korrektne postiindeks."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Sisesta korrektne sotsiaalturvatunnus."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Sisesta korrektne käibemaksukohuslase kood."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Sisesta postiindeks kujul XXXXXXX või XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estado de México"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Sisesta kehtiv postiindeks"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Sisesta kehtiv telefoninumber"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Sisesta kehtiv SoFi number"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-#, fuzzy
-msgid "Drenthe"
-msgstr "Drenthe"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friisimaa"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningeni provints"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburgi provints"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Põhja-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Põhja-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrechti provints"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Lõuna-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Sisesta kehtiv Norra sotsiaalturvatunnus."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Sellel väljal peab olema 8 numbrit."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Sellel väljal peab olema 11 numbrit."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "Riiklik isikukood koosneb 11 numbrist."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Isikukoodil on vale kontrollsumma."
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Sisesta maksumaksja number (NIP) formaadis XXX-XXX-XX-XX või XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Maksukohustusnumbril (NIP) on vale kontrollsumma."
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "Riikliku Äriregistri number (REGON) koosneb 7 või 9 numbrist."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Riiklikul Äriregistri numbril (REGON) on vale kontrollsumma."
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Sisesta postiindeks kujul XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Alam-Sileesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kujawy-Pomorze"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Łódź"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Väike-Poola"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masoovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Podkarpacie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlaasia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomorze"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Sileesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Święty Krzyżi"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Suur-Poola"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Lääne-Pomorze"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Sisestage korrektne CIF."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Sisestage korrektne CNP."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "Sisesta korrektne IBAN kujul ROXX-XXXX-XXXX-XXXX-XXXX-XXXX"
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Telefoninumbrid peavad olema kujul XXXX-XXXXXX"
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Sisesta postiindeks kujul XXXXXX"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Sisesta postiindeks kujul XXXXX või XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banská Bystrica regioon"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Bratislava regioon"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Košice regioon"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nitra regioon"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Prešovi regioon"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trenšíni regioon"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava regioon"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Žilina regioon"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Sisesta kehtiv postiindeks."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Suur-London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Suur-Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "Lõuna-Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne ja Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "Lääne-Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "Lääne-Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "County Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "Lääne-Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Piirid"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Kesk-Šotimaa"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney saared"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetlandi saared"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Inglismaa"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Põhja-Iirimaa"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Šotimaa"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Wales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Sisesta postiindeks kujul XXXXX või XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Sisesta kehtiv U.S. Social Security number formaadis XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Sisesta kehtiv Lõuna-Aafrika ID-number"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Sisesta kehtiv Lõuna-Aafrika postiindeks"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Eastern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "ümbersuunatav asukoht"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"See peaks olema absoluutne asukoht, v.a. domeeninimi. Näide: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "suuna aadressile"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"See võib olla kas absoluutne asukoht (nagu ülemine) või täielik URL algusega "
-"'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "suunamine"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "suunamised"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "sessioonivõti"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "sessiooni andmed"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "kehtivusaja lõpp"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sessioon"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sessioonid"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "domeeninimi"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "hüüdnimi"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "saidid"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"See väärtus võib sisaldada ainult tähti, nubmreid, alakriipse ja sidekriipse."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Suured tähed ei ole siin lubatud."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Väiksed tähed ei ole siin lubatud."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Sisestage ainult komaga eraldatud numbreid."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Sisestage korrektseid komaga eraldatud e-posti aadresseid."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Palun sisestage korrektne IP aadress."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Tühjad väärtused ei ole siin lubatud."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Mittenumbrilised märgid ei ole siin lubatud."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "See väärtus ei tohi sisaldada ainult numbreid."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Sisestage täisarv."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Siin on lubatud ainult tähestiku tähed."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ebakorrektne kuupäev: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Sisestage korrektne kuupäev formaadis AAAA-KK-PP."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Sisestage korrektne kellaaeg formaadis TT:MM"
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Sisestage korrektne kuupäev ja kellaaeg formaadis AAAA-KK-PP TT:MM."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "Sisestage korrektne e-posti aadress:"
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ühtegi faili ei saadetud. Kontrollige vormi kodeeringutüüpi."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Laadige korrektne pilt. Fail, mille laadisite, ei olnud kas pilt või oli "
-"fail vigane."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s ei viita korrektsele pildile."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefoninumbrid peavad olema formaadis XXX-XXX-XXXX. \"%s\" on ebakorrektne."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s ei viita korrektsele QuickTime videole."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Korrektne URL on nõutav."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Korrektne HTML on nõutav. Vead on järgnevad:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Vigane XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Vigane URL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s on katkine."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Sisestage korrektne USA osariigilühend."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Jälgige oma keelekasutust. Sõna %s ei ole lubatud."
-msgstr[1] "Jälgige oma keelekasutust. Sõnad %s ei ole lubatud."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "See väli peab sobima väljaga '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Palun täitke vähemalt üks väli."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Palun täitke mõlemad lahtrid või jätke mõlemad tühjaks."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "See lahter on kohustuslik, kui %(field)s on %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "See lahter on nõutav, kui %(field)s ei ole %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Mitte-unikaalsed väärtused ei ole lubatud."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "See väärtus peab olema vahemikus %(lower)s kuni %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "See väärtus peab olema vähemalt %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "See väärtus ei tohi olla rohkem kui %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "See väärtus peab jaguma arvuga %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Palun sisestage korrektne kümnendarv."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Palun sisestage %s-kohaline kümnendarv."
-msgstr[1] "Palun sisestage %s-kohaline kümnendarv."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Palun sisestage korrektne kümnendarv, mille täisosa on %s-kohaline"
-msgstr[1] "Palun sisestage korrektne kümnendarv, mille täisosa on %s-kohaline"
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Palun sisestage korrektne kümnendarv, millel on maksimaalselt %s komakoht."
-msgstr[1] ""
-"Palun sisestage korrektne kümnendarv, millel on maksimaalselt %s komakohta."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Palun sisestage korrektne murdarv."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Veenduge, et üleslaetud fail on vähemalt %s baiti suur."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Veenduge, et üleslaetud fail ei ole suurem kui %s baiti."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Selle lahtri formaat on ebakorrektne."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "See lahter on ebakorrektne."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Ei õnnestunud leida midagi aadressilt %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s tagastas sobimatu Content-Type päise '%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Palun sulgege sulgemata jäänud %(tag)s lipik real %(line)s. (Rea algus: \"%"
-"(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Rida %(line)s sisaldab teksti, mis ei ole selles kontekstis lubatud. (Rea "
-"algus: \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"Real %(line)s on vigane attribute \"%(attr)s\". (Rea algus: \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"Real %(line)s on vigane lipik \"<%(tag)s>\". (Rea algus: \"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Real %(line)s on lipik, millel on puudu üks või enam nõutavatest "
-"atribuutidest. (Rea algus: \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Real %(line)s on atribuut \"%(attr)s\", mille väärtus on vigane. (Rea algus: "
-"\"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"%(type)s tüüpi %(object)s on juba olemas etteantud väärtustele %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "See lahter on nõutav."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "See väärtus peab olema täisarv."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "See väärtus peab olema kas tõene või väär"
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "See lahter ei tohi olla tühi."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr ""
-"Sisestage korrektne kuupäev ja kellaaeg kujul AAAA-KK-PP TT:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "See väärtus peab olema kümnendarv."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "See väärtus peab olema kas tühi, tõene või väär."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Sisestage korrektne kellaaeg formaadis TT:MM[:ss[.uuuuuu]]"
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Sisestage korrektne failinimi."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Palun sisestage korrektne %s."
-
-#: db/models/fields/related.py:782
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Et valida mitu, hoidke all \"Control\"-nuppu (Maci puhul \"Command\")."
-
-#: db/models/fields/related.py:862
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Palun sisestage korrektne %(self)s ID. Väärtus %(value)r on vigane."
-msgstr[1] ""
-"Palun sisestage korrektne %(self)s ID. Väärtused %(value)r on vigased."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Sisestage korrektne väärtus."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Veenduge, et see väärtus sisaldab kõige rohkem %(max)d tähemärki (hetkel on %"
-"(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Veenduge, et see väärtus sisaldab vähemalt %(min)d märki (hetkel on %(length)"
-"d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Veenduge, et see väärtus on väiksem või võrdne kui %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Veenduge, et see väärtus on suurem või võrdne kui %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Sisestage arv."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Veenduge, et kogu numbrikohtade arv ei ületaks %s."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Veenduge, et komakohtade arv ei ületaks %s."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Veenduge, et komast vasakul olevaid numbreid ei oleks rohkem kui %s."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "Sisestage korrektne kuupäev."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "Sisestage korrektne kellaaeg."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "Sisestage korrektne kuupäev ja kellaaeg."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "Ühtegi faili ei saadetud."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Saadetud fail on tühi."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "Sisestage korrektne URL."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "See URL näib olevat katkine."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Valige korrektne väärtus. %(value)s ei ole valitav."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Sisestage väärtuste nimekiri."
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "Sisestage korrektne IPv4 aadress."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Valige korrektne väärtus. Valitud väärtus ei ole valitav."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Valige korrektne väärtus. %s ei ole valitav."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Veenduge, et tekst on alla %s tähemärgi."
-msgstr[1] "Veenduge, et tekst on alla %s tähemärgi."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Reavahetused ei ole lubatud."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Valige korrektne väärtus; '%(data)s' ei kuulu valikutesse %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Sisestage täisarv vahemikus -32 768 kuni 32 767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Sisestage postiivne arv."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Sisestage täisarv vahemikus 0 kuni 32 767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "jah,ei,võib-olla"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bait"
-msgstr[1] "%(size)d baiti"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.l."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "e.l."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PL"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "EL"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "südaöö"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "keskpäev"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "esmaspäev"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "teisipäev"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "kolmapäev"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "neljapäev"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "reede"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "laupäev"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "pühapäev"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "esmasp."
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "teisip."
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "kolmap."
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "neljap."
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "reede"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "laup."
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "pühap."
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "jaanuar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "veebruar"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "märts"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "aprill"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "juuni"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "juuli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktoober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "detsember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jaan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "veeb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "märts"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sept"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dets"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jaan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Veeb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dets."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "või"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "aasta"
-msgstr[1] "aastat"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "kuu"
-msgstr[1] "kuud"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "nädal"
-msgstr[1] "nädalat"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "päev"
-msgstr[1] "päeva"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "tund"
-msgstr[1] "tundi"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minut"
-msgstr[1] "minutit"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutit"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j. N Y, H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j. F"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s edukalt loodud."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s edukalt muudetud."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s kustutatud."
diff --git a/webapp/django/conf/locale/et/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/et/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 2dc026e..0000000
--- a/webapp/django/conf/locale/et/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/et/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/et/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 5a62fe3..0000000
--- a/webapp/django/conf/locale/et/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,117 +0,0 @@
-# Estonian translation for the Django Project.
-# Copyright (C) 2008, Django Project
-# This file is distributed under the same license as the django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: <removethis-eallik_at_gmail-com>\n"
-"POT-Creation-Date: 2008-06-02 19:42+0300\n"
-"PO-Revision-Date: 2008-06-17 12:29+0300\n"
-"Last-Translator: Erik Allik <removethis-eallik_at_gmail-com>\n"
-"Language-Team: Django-i18n <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Saadaval %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Vali kõik"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Lisa"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Eemalda"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Valitud %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Tee valik(ud) ja klõpsa"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Puhasta kõik"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Jaanuar Veebruar Märts Aprill Mai Juuni Juuli August September Oktoober "
-"November Detsember"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "P E T K N R L"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Pühapäev Esmaspäev Teisipäev Kolmapäev Neljapäev Reede Laupäev"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Näita"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Varja"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Praegu"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Kell"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Vali aeg"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Kesköö"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 hommikul"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Keskpäev"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Tühista"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Täna"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalender"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Eile"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Homme"
diff --git a/webapp/django/conf/locale/eu/LC_MESSAGES/django.mo b/webapp/django/conf/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index c19c321..0000000
--- a/webapp/django/conf/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/eu/LC_MESSAGES/django.po b/webapp/django/conf/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 37a829d..0000000
--- a/webapp/django/conf/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4248 +0,0 @@
-# translation of django.po to
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-08 19:37+0100\n"
-"PO-Revision-Date: 2008-02-14 22:12+0100\n"
-"Last-Translator: Ibon\n"
-"Language-Team:  <es@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arabiera"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengalera"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Bulgariera"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "Katalana"
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "Txekiera"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "Gales"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Daniera"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "Alemaniera"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "Greziera"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "Ingeles"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Espainola"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Argentinako espainola"
-
-#: conf/global_settings.py:51
-msgid "Persian"
-msgstr "Persiera"
-
-#: conf/global_settings.py:52
-msgid "Finnish"
-msgstr "Finlandesa"
-
-#: conf/global_settings.py:53
-msgid "French"
-msgstr "Frantzesa"
-
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr "Gaelikoa"
-
-#: conf/global_settings.py:55
-msgid "Galician"
-msgstr "Galiziarra"
-
-#: conf/global_settings.py:56
-msgid "Hungarian"
-msgstr "Hungarierra"
-
-#: conf/global_settings.py:57
-msgid "Hebrew"
-msgstr "Hebreera"
-
-#: conf/global_settings.py:58
-msgid "Croatian"
-msgstr "Kroaziarra"
-
-#: conf/global_settings.py:59
-msgid "Icelandic"
-msgstr "Islandiera"
-
-#: conf/global_settings.py:60
-msgid "Italian"
-msgstr "Italiera"
-
-#: conf/global_settings.py:61
-msgid "Japanese"
-msgstr "Japoniera"
-
-#: conf/global_settings.py:62
-msgid "Korean"
-msgstr "Koreera"
-
-#: conf/global_settings.py:63
-msgid "Khmer"
-msgstr "khemerera"
-
-#: conf/global_settings.py:64
-msgid "Kannada"
-msgstr "Kanadiera"
-
-#: conf/global_settings.py:65
-msgid "Latvian"
-msgstr "Lituaniera"
-
-#: conf/global_settings.py:66
-msgid "Macedonian"
-msgstr "Mazedoniera"
-
-#: conf/global_settings.py:67
-msgid "Dutch"
-msgstr "Holandesa"
-
-#: conf/global_settings.py:68
-msgid "Norwegian"
-msgstr "Norvegiera"
-
-#: conf/global_settings.py:69
-msgid "Polish"
-msgstr "Poloniera"
-
-#: conf/global_settings.py:70
-msgid "Portugese"
-msgstr "Portugalera"
-
-#: conf/global_settings.py:71
-msgid "Brazilian"
-msgstr "Brasilgo portugalera"
-
-#: conf/global_settings.py:72
-msgid "Romanian"
-msgstr "Errumaniera"
-
-#: conf/global_settings.py:73
-msgid "Russian"
-msgstr "Errusiera"
-
-#: conf/global_settings.py:74
-msgid "Slovak"
-msgstr "Eslovakiera"
-
-#: conf/global_settings.py:75
-msgid "Slovenian"
-msgstr "Esloveniera"
-
-#: conf/global_settings.py:76
-msgid "Serbian"
-msgstr "Serbiera"
-
-#: conf/global_settings.py:77
-msgid "Swedish"
-msgstr "Suediera"
-
-#: conf/global_settings.py:78
-msgid "Tamil"
-msgstr "Tamilera"
-
-#: conf/global_settings.py:79
-msgid "Telugu"
-msgstr "Telegu hizkuntza"
-
-#: conf/global_settings.py:80
-msgid "Turkish"
-msgstr "Turkiera"
-
-#: conf/global_settings.py:81
-msgid "Ukrainian"
-msgstr "Ukrainera"
-
-#: conf/global_settings.py:82
-msgid "Simplified Chinese"
-msgstr "Txinera (sinpletua)"
-
-#: conf/global_settings.py:83
-msgid "Traditional Chinese"
-msgstr "Txinera (tradizionala)"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3> %s gatik:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Dena"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Edozein data"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Gaur"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Aurreko 7 egunak"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Hilabete hau"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Urte hau"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Bai"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Ez"
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Ezezaguna"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "Ekintz hordua"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "Objetuaren id"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "Objeturaren repr"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "Ekintza botoia"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "Mezua aldatu"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "Log sarrera"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "log sarrerak"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Ez da lekua aurkitu"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Barkatu, eskatutako lekua ezin daiteke aurkitu"
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Hasiera"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serbidore errorea"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serbidor errorea (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serbidore Errorea <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr "Arazo bat izan da. Web guneraren administradorea e-mail bidez ohartuko da eta laister konpondua egon beharko luke. Barkatu arazoak."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Ongi etorri."
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentazioa"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Hitz ezkutua aldatu"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Atera"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django admin. gunea"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administradorea"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Gehitu"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "Aurrekoak"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Lekuaren bista"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Arren zuzendu ondoko akatsa"
-msgstr[1] "Arren zuzendu ondoko akatsak"
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Ordenaketa"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Ordena:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Gehitu  %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Ezabatu"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects: "
-"%(object_name)s '%(escaped_object)s' ezabatuz, erlazionatutako objetuak ere ezabatuko ditu, baina zure kontuak ez du baimenik, hurrengo objetuak ezabatzeko:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ziur zaude %(object_name)s \"%(escaped_object)s\" ezabatu nai duzula ? "
-"Erlazionaturik dauden hurrengo elementuak ere ezabatuko dira:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Bai, ziur nago"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s gatik"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtroa"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "%(name)s aplikazioan Modeloak."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Aldatu"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Ezer aldatzeko baimenik ez dezu."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Azken ekintzak"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Nere ekintzak"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Ez dago ezer"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr "Zerbait gaizki dago zure data-basearekin. Ziurtatu ezazu data-baseko taulak sortuak izan direla eta usuario egokiarengatik irakurriak izan daitekela"
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Usuario Izena:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Hitz ezkutua:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
-msgid "Log in"
-msgstr "Sartu"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Data/ordua"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Usuarioa"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Ekintza"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "Objetu honek ez du alketa zerrenda bat. Ziur asko, administrazio leku hau erabili gabe gehitua izan da."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Dena erakutsi"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Aurrera"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s emaitza"
-msgstr[1] "%(counter)s emaitzak"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s guztira"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Berria bezala gorde"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Gorde eta beste bat gehitu"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Gorde eta aldatzen jarraitu"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Gorde"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "Lehenengo usuario izena eta hitz ezkutua idatzi. Gero usuarioaren aukera gehiago aldatu ditzakezu"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Usuario izena"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Hitz ezkutua"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Hitz ezkutua (berriro)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Idatzi berriro hitz ezkutua."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Hitz ezkutu berria idatzi <strong>%(username)s</strong> usuarioarentzat."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Markadoreak"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentazio markadoreak"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Markadoreak instalatzeko eraman linka zure erreminta panelera (toolbar).\n"
-"Orain markadorea lekuko edozein horritik aukeratu dezakezu. Hauetako \n"
-"markadore batzu, zure ordenadorea 'barnekoa' bezala erregistratua egotea\n"
-"behar dute. Hitzegin web lekuaren administradorearekin azalpen gehiagorako.</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Web horri honentzat dokumentazioa"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Edozein lekutik, horriaren bista sortzaileara (view) salto egiten du."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Objetuaren ID erakutsi"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "Objetu bakarra erakusten duten horrietan, eduki mota (content-type) eta horriaren ID bakarra erakutsi, ."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Objetu hau aldatu ( leiho hau)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Objetu bakarra erakusten horrietan, adminiztrazio gunera joan."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Objetu hay aldatu (leiho berria)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Goian bezala baina administrzazio gune leio berrian irekitzen."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Mila esker gaur zure denbora web gunean erabiltzegatik."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Berrio sartu (log in)"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Hitz ezkutua aldatu"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Hitz ezkutuaren aldaketa arrakastatsua"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "Hitz ezkutua aldatua izan da"
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "Idatzi hitz ezkutu zaharra segurtasun arrazoiengatik eta gero hitz ezkutu berria bi aldiz, akatsik egiten ez duzula ziurtatu dezagun."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Hitz ezkutu zaharra"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Hitz ezkutu berria:"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Hitz ezkutua baieztatu:"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Nire hitz ezkutua aldatu"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Hitz ezkutua ezabatu"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Hitz ezkutuaren ezabaketa zuzena"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr "Hitz ezkutu berria e-mail bidez bidali dizugu. Epe laburrean jasokor duzu."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Mezu elektroniko hau jaso dezu, hitz ezkutuaren ezabaketa eskatu duzulako"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "%(site_name)s usuario kontuarentzat"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Zure hitz ezkutu berria %(new_password)s da"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Hitz ezkutua aldatu nai baduzu, zoaz web horri honetara joan:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Zure usuario izena (ahaztu badezu):"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Mila esker gure web gunea erabiltzeagatik!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s web gunearen taldea"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr "Hitz ezkutua ahaztu dezu ? Hidatzi zure e-mail helbidea, eta hitz ezkutu berri bat bidaliko dizugu."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail helbidea:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Hitz ezkutua ezabatu"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Ordua:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Orain:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Aldatu:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Data guztiak"
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s arrakastaz gehitua izan da."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Berriro alkatu zenezake beherago."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Usuario gehitu"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Hitz ezkutua aldaketa zuzena."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Hitz ezkutua aldatu: %s"
-
-#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "Mesedez idatzi usuario izena eta hitz ezkutu egokiak. Maiskula eta minuskula ondo bereiztu."
-
-#: contrib/admin/views/decorators.py:63
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "Mesedez berriro sar saitez, sesioa zahartu bai da. Bidalitakoa gorde egin da."
-
-#: contrib/admin/views/decorators.py:70
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr "Zure nabegatzaileak ez ditu cookie-ak onartzen. Aktiba ezazu hauen erabilera eta ekarri ezazu horria hau berriro."
-
-#: contrib/admin/views/decorators.py:84
-msgid "Usernames cannot contain the '@' character."
-msgstr "Usuario izenek ezin dezkete @ karakterea eduki."
-
-#: contrib/admin/views/decorators.py:86
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Zure e-mail helbidea ez da zure usuario izena. Ahalegindo '%s' rekin."
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "filtroa:"
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "bista:"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "%r aplikazio ez da aurkitu"
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "%(name)r modeloa ez da %(label)r aplikazioan aurkitu"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "erlazionaturik `%(label)s.%(type)s` objetua"
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "modeloa:"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "erlazionaturik `%(label)s.%(name)s` objetua"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "%s dena"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "%s zenbakia"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s objetuan zutabeak"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Zenbaki osoa"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Boolearra (egia ala gezurra)"
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Katea (%(max_length)s gehienez)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Komaz bereiztutako zenbako osoak"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Data (ordurik gabe)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Data (orduarekin)"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Zenbaki dezimala"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "E-mail helbidea"
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Fitxegi bidea (path)"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Zenbaki erreala (float)"
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP helbidea"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolearra (egia, gezurra edo hutsa[None])"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Gurazo modeloarekin erlazioa"
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Telefono zenbakia"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Textua"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Ordua"
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S statua (bi letra maiuskula)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "XML textua"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ez dirudi  url heredu objetua"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Web gunearen administrazioa"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Beste %s gehitu dezakezu jarraian."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "%s gehitu"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "%s gehituta."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "eta"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "%s aldatuta."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "%s ezabatuta."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Ez da zutaberik aldatu."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" aldatuta izan da."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" arrakastarekin gehituta izan da. Jarraian aldatu dezakezu berriro."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "%s aldatu"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "%(fieldname)s bat edo  gehiago %(name)s an: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "%(fieldname)s bat edo gehiago %(name)s n"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\"  arrakastaz ezabatua izan da."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Ziur al zaude?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Aldaketa zerrenda: %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "%s aukeratu"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "aldaketarako %s aukeratu"
-
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Data base errorea"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Hitz ezkutuak ez dira berdinak."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Usuario izen hori erabiltzen ari da."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr "Zure nabegatzaileak ez ditu cookiak onartzen. Cookia-k beharrezkoak dira sistemn sartzeko."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Kontu hau az dago aktibatuta."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "E-mail helbide horrek ez du usariorik. Ziur al zaude erregistraturik zaudela?"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Hitz ezkutu ezabatua %s n"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Bi hitz ezkutu berriak ez dira berdinak."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Zure hitz ezkutu zaharra ez zuzena. Idatzi ezazu berriro."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "izena"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "code izena (codename)"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "baimena"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "baimenak"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "taldea"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
-msgid "groups"
-msgstr "taldeak"
-
-#: contrib/auth/models.py:131
-msgid "username"
-msgstr "usuario izena"
-
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Beharrezkoa. 30 karaktere edo gutxiago. Karaktere alfanumerikoak "
-"bakarrik (letra, zembaki eta '_')"
-
-#: contrib/auth/models.py:132
-msgid "first name"
-msgstr "izena"
-
-#: contrib/auth/models.py:133
-msgid "last name"
-msgstr "abizena"
-
-#: contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr "e-mail helbidea"
-
-#: contrib/auth/models.py:135
-msgid "password"
-msgstr "hitz ezkutua"
-
-#: contrib/auth/models.py:135
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr "Erabili '[algo]$[salt]$[hexdigest]' edo erabili <a href=\"password/\">hitz ezkuta aldatu </a>."
-
-#: contrib/auth/models.py:136
-msgid "staff status"
-msgstr "Arduraduen egoera"
-
-#: contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "Usuarioak administrazio gune honetan sartu dezkeen ala ez izendatzen du."
-
-#: contrib/auth/models.py:137
-msgid "active"
-msgstr "Aktiboa"
-
-#: contrib/auth/models.py:137
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr "Usuarioak Django adminiztrazio gunean sartu daitekeen ala ez. Desaktiba ezazu aukera hau,kontua ezabatu ordez."
-
-#: contrib/auth/models.py:138
-msgid "superuser status"
-msgstr "Usuario nagusia (superuser)"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Usuario honek baimen guztiak ditu, banan banan denak zehaztu gabe."
-
-#: contrib/auth/models.py:139
-msgid "last login"
-msgstr "azken sarrera"
-
-#: contrib/auth/models.py:140
-msgid "date joined"
-msgstr "erregistro eguna"
-
-#: contrib/auth/models.py:142
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "Usuario honek, eskuz emandako baimen guztietaz aparte, berari egokitutako talde bakoitzari emandako baimenak ere izango ditu."
-
-#: contrib/auth/models.py:143
-msgid "user permissions"
-msgstr "Usuarioaren baimenak"
-
-#: contrib/auth/models.py:147
-msgid "user"
-msgstr "Usuarioa"
-
-#: contrib/auth/models.py:148
-msgid "users"
-msgstr "Usuarioak"
-
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Informazio pertsonala"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Baimenak"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Data garrantzitsuak"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Taldeak"
-
-#: contrib/auth/models.py:316
-msgid "message"
-msgstr "mezua"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Sesiotik kanpo"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
-msgid "object ID"
-msgstr "objetuaren ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "izenburua"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
-msgid "comment"
-msgstr "komentarioa"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "puntaketa #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "puntaketa #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "puntaketa #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "puntaketa #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "puntaketa #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "puntaketa #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "puntaketa #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "puntaketa #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "puntuaketa zuzena"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
-msgid "date/time submitted"
-msgstr "data/hordua bidalia"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
-msgid "is public"
-msgstr "publikoa"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "ezabatua"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr "Markatu kutxa hau komentario ezegokia bada. A \"Komentario hau ezabatua izan da\" mezua erakutsiko da bere ordez."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "Komentarioak"
-
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
-msgid "Content object"
-msgstr "Eduki objetua"
-
-#: contrib/comments/models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s -k bidalia %(date)s -n\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:178
-msgid "person's name"
-msgstr "pertsonaren izena"
-
-#: contrib/comments/models.py:181
-msgid "ip address"
-msgstr "ip zenbakia"
-
-#: contrib/comments/models.py:183
-msgid "approved by staff"
-msgstr "arduradunek onartua"
-
-#: contrib/comments/models.py:187
-msgid "free comment"
-msgstr "komentario librea"
-
-#: contrib/comments/models.py:188
-msgid "free comments"
-msgstr "komentario libreak"
-
-#: contrib/comments/models.py:250
-msgid "score"
-msgstr "puntuaketa"
-
-#: contrib/comments/models.py:251
-msgid "score date"
-msgstr "puntuaketa data"
-
-#: contrib/comments/models.py:255
-msgid "karma score"
-msgstr "karma puntuaketa"
-
-#: contrib/comments/models.py:256
-msgid "karma scores"
-msgstr "karma puntuaketak"
-
-#: contrib/comments/models.py:260
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(user)s -k emandako puntaketa: %(score)d"
-
-#: contrib/comments/models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"%(user)s -k komentario hay markatu du:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:285
-msgid "flag date"
-msgstr "markatutako eguna"
-
-#: contrib/comments/models.py:289
-msgid "user flag"
-msgstr "usuarioaren markaketa"
-
-#: contrib/comments/models.py:290
-msgid "user flags"
-msgstr "usuariaren markaketak"
-
-#: contrib/comments/models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "%r -k markatuta"
-
-#: contrib/comments/models.py:300
-msgid "deletion date"
-msgstr "ezabatze data"
-
-#: contrib/comments/models.py:303
-msgid "moderator deletion"
-msgstr "moderatzaileak ezabatua"
-
-#: contrib/comments/models.py:304
-msgid "moderator deletions"
-msgstr "moderatzaileak ezabatuak"
-
-#: contrib/comments/models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "%r moderatzaileak ezabatua"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Hitz ezkutua ahaztu duzu?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Puntuaketak"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Beharrezkoa"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Aukerakoa"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Argazkia bidali"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentarioa:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Komentarioa aurreikusi"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Zure izena:"
-
-#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Puntuaketa hau beharrezkoa da, gutxienez beste puntaketa bat sartu duzulako"
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] "Komentario hau, %(count)s komentario baino gutxiago egindako usuario batek bidalia da:<br><br>%(text)s"
-msgstr[1] ""
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Komentario hau usuario 'arin' batek bidalia da:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "POST bakarrik onartzen dira"
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Beharrezko fitxategi bat edo gehiago ez dira bidali"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Norbaitek komentario formularioa maltzurki eraldatu du (segurtasun erasoa)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr "Komentario formularioak 'target' parametroa okerra zuen -- objetuaren ID okerra zen"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Komentario formularioa ez zuen ez 'berikusi'  edo 'bidali'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Usuario ezezagunak ezin dezakete botoa eman"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Komentario ID okerra"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Norberak ezin dezake botoa eman"
-
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr "python model class izena"
-
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "edukiera moeta"
-
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "edukiera moetak"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Adibidez: '/about/contact/'. Ziurta zaitez '/' karaktera hasieran eta bukaeran dagoela."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "izenburua"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "edukiera"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "komentarioak onartu"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "plantila izena"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr "Adibidez: 'flatpages/contact_page.html'. Hau ematen ez bada, sistema 'flatpages/default.html' erabiliko du."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "erregistratzea beharrezkoa da"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Hau markatuta badago, erregistratutako usuarioak bakarrik ikusiko dute horria."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "flat page"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "flat pages"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "th"
-msgstr "garren"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "nd"
-msgstr "garren"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "rd"
-msgstr "garren"
-
-#: contrib/humanize/templatetags/humanize.py:52
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milioi"
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f bilioi"
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:58
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilioi"
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "one"
-msgstr "bat"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "two"
-msgstr "bi"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "three"
-msgstr "hiru"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "four"
-msgstr "lau"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "five"
-msgstr "bost"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "six"
-msgstr "sei"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "seven"
-msgstr "zazpi"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "eight"
-msgstr "zortzi"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "nine"
-msgstr "bederatzi"
-
-#: contrib/humanize/templatetags/humanize.py:94
-msgid "today"
-msgstr "gaur"
-
-#: contrib/humanize/templatetags/humanize.py:96
-msgid "tomorrow"
-msgstr "bihar"
-
-#: contrib/humanize/templatetags/humanize.py:98
-msgid "yesterday"
-msgstr "atzo"
-
-#: contrib/localflavor/ar/forms.py:28
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "NNNN edo ANNNNAAA formatoan idatzi posta kode bat."
-
-#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Data honek zenbakiak bakarrik behar ditu."
-
-#: contrib/localflavor/ar/forms.py:51
-msgid "This field requires 7 or 8 digits."
-msgstr "Data honek 7 edo 8 digito behar ditu."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "CUIT zuzena idatzi XX-XXXXXXXX-X edo XXXXXXXXXXXX formatoan."
-
-#: contrib/localflavor/ar/forms.py:81
-msgid "Invalid CUIT."
-msgstr "CUIT okerra."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "4 zenbaki posta kodean idatzi."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "XXXXX-XXX formatoan zip kodea idatzi."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefono zenbakiak XX-XXXX-XXXX formatoa behar dute."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "Brasilgo estatu zuzen bat aukeratu. Hori ez dago aukeran."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "CPF zenbaki okerra."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Data honek gehienez 11 digito edo 14 karaktere behar ditu."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "CNPJ zenbaki okerra."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Data honek 14 digito behar ditu gutxienez"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Posta kodea idatzi XXX XXX formatoan."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "zip kodea XXXX formatoan idatzi."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Araba"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Gupuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "Errioxa"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Nafarroa"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Asturiaseko printzipadoa"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Euskal Herria"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Canaria uharteak"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "La Mancha-Gaztela"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Gaztela eta Leon"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Katalunia"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Nafarroako komunitate forala"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valeciako komunitatea"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Kode postal bat idatzi hurrengo formato eta tartearekin: 01XXX - 52XXX"
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr "Telefono zenbaki bat idatzi hurrengo formato batekin: 6XXXXXXXX, 8XXXXXXXX edo 9XXXXXXXX"
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Idatzi NIF,NIE edo CIF zuzena."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Idatzi NIF edo NIE zuzena."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "NIF kontrol kode okerra."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "NIE kontrol kode okerra."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "CIF kontrl kode okerra."
-
-#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Mesedez idatzi banku kontu zenbaki zuzena XXXX-XXXX-XX-XXXXXXXXXX formatoarekin."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Banku kontu zenbakian kontrol digito okerra."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:19
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "nondik berbidalia"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "Hau 'bide' absolutua izan beharko luke, dominio izena kenduta. 'Adibidez: events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "Nora berbidali"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "Hau 'bide' absolutua (goian bezala) edo URL osoa , 'http://'-rekin hasiz, izan daiteke."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "berbidali"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "berbidali"
-
-#: contrib/sessions/models.py:46
-msgid "session key"
-msgstr "sesioaren giltza"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "sesioaren data"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "amaiera data"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sesioa"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sesioak"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "dominio izena"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "erakusteko izena"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr "web gunea"
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr "web guneak"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Balore honek, letrak, zenbakia eta '_' karakterak bakarrik eduki ditzazke."
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "Balore honek, letrak, zenbakia eta  '_', '/','-' karakterak bakarrik eduki ditzazke."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Balore honek letrak, zenbakiak eta '_','-' karatereak bakarrik izan ditzazke."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Hemen letra maiuskulak ez dira onartzen."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Hemen letra minukulak ez dira onartzen."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Komaz bereiztutako digitoak bakarrik idatzi."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "E-mail norabide zuzenak idatzi, komaz bereizturik."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Idatzi IP zenbaki zuzena mesedez."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Balore hutsak ez dira hemen onartzen."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Zenbaki karaktereak bakarrik onartzen dira hemen."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Balore honek ezin daiteke digitoz bakarrik osatua egon."
-
-#: core/validators.py:128 newforms/fields.py:151
-msgid "Enter a whole number."
-msgstr "Zenbaki bat idatzi."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Karaktere alfabetikoak bakarrik onartzen dira hemen."
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Urtea 1900 edo haundiagoa izan behar du."
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Data okerra: %s"
-
-#: core/validators.py:156 db/models/fields/__init__.py:509
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Data zuzena idatzi, YYY-MM-DD formatoan."
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Hordu zuzena idatzi HH:MM formatoan."
-
-#: core/validators.py:165 db/models/fields/__init__.py:583
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Idatzi data/hordua zuzena YYYY-MM-DD HH:MM formatoan."
-
-#: core/validators.py:170 newforms/fields.py:402
-msgid "Enter a valid e-mail address."
-msgstr "e-mail helbide zuzena idatzi."
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ez da fitxategirik bidali. Baiztatu ezazu formularioren kode formatoa."
-
-#: core/validators.py:193 newforms/fields.py:458
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "Bidali irudi zuzena. Zuk bidalitako fitxategia ez da irudi motako edo akatsa du."
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "%s URLa ez da irudi zuzena."
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefono zenbakiak XXX-XXX-XXXX formatoa eduki behar dute. \"%s\" okerra."
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "%s URLa ez da QuickTime bideo zuzena."
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr "URL zuzena behar da."
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"HTML zuzena behar da. Erroreak daude:\n"
-"%s"
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML okerra: %s"
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL okerra: %s"
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "%s URLa ez dabil ondo."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "U.S estatu laburpen zuzen idatzi."
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Kontuz ibili! %s hitza ez dago hemen onartua."
-msgstr[1] ""
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Data hau '%s' data berdindu behar du."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Idatzi gutxienez data bat."
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Hidatzi bi datuak edo utzi biak hutsik."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Data hau idatzi behar da, %(field)s %(value)s balorea badu."
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Data hau idatzi behar da %(field)s %(value)s balorea ez bada."
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Errepikatutako datak ez dira onartzen."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Balore hau %(lower)s eta %(upper)s artean egon behar du."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Gutxienez  %s izan behar du."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Balore hau %s baino txikiagoa izan behar du."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Balore hau %s-ren multiploa izan behar du."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Idatzi zenbaki dezimal zuzena mesedez."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Idatzi zenbaki dezimal zuzena gehienez %s digitorekin."
-msgstr[1] ""
-
-#: core/validators.py:447
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Idatzi zenbaki digital zuzena, %s digitorekin gutxienez alde osoan."
-msgstr[1] ""
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Idatzi zenbaki dezimal zuzena, %s digitorekin dezimalean."
-msgstr[1] ""
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Idatzi zenbaki erreal zuzena."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Ziurta zaitez bidalitako fitxategia gutxienex %s byte tamaina duela."
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Ziurta zaitez bidalitako fitxategia gehienez %s byte dituela."
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "Data honen formatoa okerra da."
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "Data okerra."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Ezin daiteke ezer lortu %s-tik."
-
-#: core/validators.py:539
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "%(url)s URLak content-type okerra itzuli du: '%(contenttype)s'."
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr "Mesedez itxi itxigabeko %(tag)s elementoa %(line)s lerroan. Lerroa hasiera: \"%(start)s\"."
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr "Texturen bat  %(line)s lerroan ez da onartzen contextu horretan. Lerro hasiera: \"%(start)s\"."
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr "\"%(attr)s\" %(line)s lerroan atribitu okerra da. Lerro hasiera: \"%(start)s\"."
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr "\"%(tag)s\" %(line)s lerroan elementu okerra da. Lerro hasiera: \"%(start)s\"."
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr "%(line)s lerroan elementu atributu bat edo gehiago faltan ditu. Lerro hasiera:\"%(start)s\"."
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" atributoa %(line)s lerroan balore okerra du. (Lerro hasiera: \"%(start)s\".)"
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s with this %(type)s already exists for the given %(field)s."
-
-#: db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Badago %(optname)s izenarekin %(fieldname)s-n."
-
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318
-#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746
-#: newforms/fields.py:45 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Kanpo hau beharrezkoa da."
-
-#: db/models/fields/__init__.py:418
-msgid "This value must be an integer."
-msgstr "Balore hau zenbaki osoa izan behar du."
-
-#: db/models/fields/__init__.py:454
-msgid "This value must be either True or False."
-msgstr "Balore hau egia ala gezurra izan behar du (True/False)."
-
-#: db/models/fields/__init__.py:475
-msgid "This field cannot be null."
-msgstr "Datu hau ezin daiteke hutsa izan (null)."
-
-#: db/models/fields/__init__.py:644
-msgid "This value must be a decimal number."
-msgstr "Balore hau zenbaki dezimala izan begar du."
-
-#: db/models/fields/__init__.py:755
-msgid "Enter a valid filename."
-msgstr "Idatzi fitxategi izen zuzena"
-
-#: db/models/fields/__init__.py:908
-msgid "This value must be either None, True or False."
-msgstr "Balore hau hutsa, egia edo gezurra izan behar du (None, True,False)"
-
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Mesades idatzi %s zuzena."
-
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr "Bereiztu ID zerrenda koma bidez."
-
-#: db/models/fields/related.py:660
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Zapaldu \"Control\" karakterea edo \"Command\" Mac batean, bat baino gehiago aukeratzeko."
-
-#: db/models/fields/related.py:707
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Mesedez idatzi %(self)s ID zuzena. %(value)r okerra da."
-msgstr[1] ""
-
-#: newforms/fields.py:46
-msgid "Enter a valid value."
-msgstr "Idatzi balio zuzena."
-
-#: newforms/fields.py:123
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Ziurta zaitez balore honek gehienez %(max)d karactere dituela, %(length)d ditu orain."
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Ziurta zaitez balore honek gutxienez %(min)d karaktere dituela ,%(length)d ditu orain."
-
-#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Ziurta zaitez balore hau %s baino txikiagoa edo berdina dela."
-
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Ziurta zaitez balore hau %s baino haundiagoa edo berdina dela."
-
-#: newforms/fields.py:180 newforms/fields.py:209
-msgid "Enter a number."
-msgstr "Idatzi zenbaki bat."
-
-#: newforms/fields.py:212
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Ziurta zaitez %s baino digito gehiago ez dagoela."
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Ziurta zaitez %s baino dezimale gehiago ez dagoela."
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Ziurta zaitez %s digitu baino gehiago ez dagoela puntu dezimalaren aurretik."
-
-#: newforms/fields.py:262 newforms/fields.py:723
-msgid "Enter a valid date."
-msgstr "Data zuzen bat idatzi."
-
-#: newforms/fields.py:295 newforms/fields.py:724
-msgid "Enter a valid time."
-msgstr "Ordu zuzen bat idatzi."
-
-#: newforms/fields.py:334
-msgid "Enter a valid date/time."
-msgstr "Data/Ordua zuzen bat idatzi."
-
-#: newforms/fields.py:433
-msgid "No file was submitted."
-msgstr "Ez da fitxategirik bidali."
-
-#: newforms/fields.py:434 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Bidalitako fitxategia hutsik dago."
-
-#: newforms/fields.py:496
-msgid "Enter a valid URL."
-msgstr "URL zuzen bat idatzi."
-
-#: newforms/fields.py:497
-msgid "This URL appears to be a broken link."
-msgstr "URL hau ez dabil ondo."
-
-#: newforms/fields.py:559 newforms/models.py:317
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Aukera zuzen bat aukeratu. Aukeratutakoa ez da zuzena."
-
-#: newforms/fields.py:598
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Aukeratu aukera zuzen bat. %(value)s ez da zuzena."
-
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:377
-msgid "Enter a list of values."
-msgstr "Balio zerrenda bat idatzi ezazu."
-
-#: newforms/fields.py:752
-msgid "Enter a valid IPv4 address."
-msgstr "IPv4 zuzen bat idatzi."
-
-#: newforms/models.py:378
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Aukera zuzena aukeratu. %s ez da zuzena."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Ziurta zaitez textuak %s karaktere baino gutxiago duela."
-msgstr[1] ""
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Lerro berriak (line breaks) ez dire onartzen hemen."
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Aukera zuzena aukeratu: '%(data)s' ez dago %(choices)s hartean."
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Idatzi -32.768 eta 32.767 arteko zenbaki osoa."
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Zenbaki positboa idatzi."
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Idatzi 0 eta 32.767 arteko zenbaki osoa."
-
-#: template/defaultfilters.py:691
-msgid "yes,no,maybe"
-msgstr "bai,ez,agian"
-
-#: template/defaultfilters.py:722
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] ""
-
-#: template/defaultfilters.py:724
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:726
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:727
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "gauerdia"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "eguerdia"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Astelehena"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Asteartea"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Asteazkena"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Osteguna"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Ostirala"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Larunbata"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Igandea"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Astelehe"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Astear"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Asteaz"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Oste"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Osti"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Lar"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Iga"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Urtarrila"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Otsaila"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Martxoa"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "Apirila"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Maiatza"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Ekaina"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Uztaila"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Abuztua"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Iraila"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Urria"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Azaroa"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Abendua"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "urt"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ots"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "api"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "eka"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "uzt"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "abu"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ira"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "urr"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "aza"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "abe"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Urt."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Ots."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Abu."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Ira."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Urr."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Aza."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Abe."
-
-#: utils/text.py:127
-msgid "or"
-msgstr "edo"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "urtea"
-msgstr[1] ""
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "hilabetea"
-msgstr[1] ""
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "astea"
-msgstr[1] ""
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "eguna"
-msgstr[1] ""
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hordua"
-msgstr[1] ""
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minutu"
-msgstr[1] ""
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutuak"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:404
-msgid "DATE_FORMAT"
-msgstr "DATE_FORMAT"
-
-#: utils/translation/trans_real.py:405
-msgid "DATETIME_FORMAT"
-msgstr "DATETIME_FORMAT"
-
-#: utils/translation/trans_real.py:406
-msgid "TIME_FORMAT"
-msgstr "TIME_FORMAT"
-
-#: utils/translation/trans_real.py:422
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:423
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s arazorik gabe sortu da"
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s arazorik gabe aldatua izan da."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s ezabatua izan da."
-
diff --git a/webapp/django/conf/locale/eu/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/eu/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 646aa0f..0000000
--- a/webapp/django/conf/locale/eu/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/eu/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/eu/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 2df6bd2..0000000
--- a/webapp/django/conf/locale/eu/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,117 +0,0 @@
-# Spanish translation for the django-admin JS files.
-# Copyright (C)
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-14 13:47-0500\n"
-"PO-Revision-Date: 2007-07-14 13:41-0500\n"
-"Last-Translator: Jorge Gajon <gajon@gajon.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Urtarrila Otsaila Martxoa Apirila Maiatza Ekaina Uztaila Abuztua Iraila Urria "
-"Azaroa Abendua"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "I A A A O O L"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Igandea Astelehene Asteartea Asteazkena Osteguna Ostirala Larunbata"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s Erabilgarri"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Denak aukeratu"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Gehitu"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Ezabatu"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s Aukeratuak"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Egin zure aukerak eta click egin "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Denak garbitu"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Orain"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Erlojua"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Aukeratu ordu bat"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Gauerdia"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Eguerdia"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Atzera"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Gaur"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Egutegia"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Atzo"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Bihar"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Erakutsi"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Izkutatu"
diff --git a/webapp/django/conf/locale/fa/LC_MESSAGES/django.mo b/webapp/django/conf/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index ac3c31e..0000000
--- a/webapp/django/conf/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/fa/LC_MESSAGES/django.po b/webapp/django/conf/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 16b0d7c..0000000
--- a/webapp/django/conf/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4236 +0,0 @@
-# Persian translation of Django.
-# Copyright (C) 2007 THE Django'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the Django package.
-# 
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-01 03:29+0330\n"
-"PO-Revision-Date: 2008-02-01 05:19+0330\n"
-"Last-Translator: starrynight <cmorgh@gmail.com>\n"
-"Language-Team: Persian <farsi@lists.sharif.edu>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr ""
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr ""
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr ""
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr ""
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr ""
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr ""
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr ""
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "انگلیسی"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr ""
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr ""
-
-#: conf/global_settings.py:51
-#, fuzzy
-msgid "Persian"
-msgstr "اجازه‌ها"
-
-#: conf/global_settings.py:52
-msgid "Finnish"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "French"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:57
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Icelandic"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Italian"
-msgstr "ایتالیایی"
-
-#: conf/global_settings.py:61
-msgid "Japanese"
-msgstr "ژاپنی"
-
-#: conf/global_settings.py:62
-msgid "Korean"
-msgstr "کره ای"
-
-#: conf/global_settings.py:63
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:64
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:65
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:66
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:67
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Norwegian"
-msgstr "نروژی"
-
-#: conf/global_settings.py:69
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Portugese"
-msgstr "پرتغالی"
-
-#: conf/global_settings.py:71
-msgid "Brazilian"
-msgstr "برزیلی"
-
-#: conf/global_settings.py:72
-msgid "Romanian"
-msgstr "رومانی"
-
-#: conf/global_settings.py:73
-msgid "Russian"
-msgstr "روسی"
-
-#: conf/global_settings.py:74
-msgid "Slovak"
-msgstr "اسلواکی"
-
-#: conf/global_settings.py:75
-msgid "Slovenian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Serbian"
-msgstr "سرب"
-
-#: conf/global_settings.py:77
-msgid "Swedish"
-msgstr "سوءدی"
-
-#: conf/global_settings.py:78
-msgid "Tamil"
-msgstr "تامیل"
-
-#: conf/global_settings.py:79
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Turkish"
-msgstr "ترکی"
-
-#: conf/global_settings.py:81
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:82
-msgid "Simplified Chinese"
-msgstr ""
-
-#: conf/global_settings.py:83
-msgid "Traditional Chinese"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>بوسیلهٔ %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "همه"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "هر تاریخی"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "امروز"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "۷ روز اخیر"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "این ماه"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "امسال"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "بله"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "خیر"
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "ناشناخته"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "زمان اتفاق"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "شناسهٔ شئ"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "صورت شیء"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "نشانه عمل"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "پیغام تغییر"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "مورد اتفاقات"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "موارد اتفاقات"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "صفحه یافت نشد"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "ما متاسفیم، اما صفحه مورد تقاضا یافت نشد."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "آغازه"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "خطای کارگزار"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "خطای کارگزار (۵۰۰)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "خطای کارگزار <em>(۵۰۰)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr "مشکلی وجود دارد. این مشکل توسط ایمیل به مدیر سایت گزارش داده شد و در اولین فرصت اصلاح خواهد شد. از بردباری شما متشکریم."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "خوش آمدید،"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "مستندات"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "تغییر گذرواژه"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "خروج"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "وب‌گاه مدیریت Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "مدیریت Django"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "ایجاد"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "تاریخچه"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "مشاهده در سایت"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgstr "لطفا مشکل زیر را حل نمایید."
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "ترتیب"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "ترتیب:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "اضافه‌کردن %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "حذف"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr "حذف %(object_name)s·'%(escaped_object)s' می تواند باعث حذف اشیاء مرتبط شود. اما اکانت شما دسترسی لازم برای حذف اشیاءی با انواع زیر را ندارد:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr "آیا مطمءنید که می خواهید %(object_name)s·\"%(escaped_object)s\" را حذف نمایید؟ کلیه اشیاء مرتبط زیر حذف خواهند شد:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "بله، مطمئن هستم."
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " با %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "فیلتر"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "مدلهای موجود در برنامه %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "تغییر"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "شما اجازهٔ ویرایش چیزی را ندارید."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "اعمال اخیر"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "اعمال من"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "چیزی در دسترس نیست"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr "در نصب بانک اطلاعاتی شما مشکلی وجود دارد. مطمءن شوید که جداول صحیح ایجاد شده اند و اطمینان حاصل کنید که بانک اطلاعاتی توسط کاربر صحیح قابل خواندن می باشد."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "نام کاربری:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "گذرواژه:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
-msgid "Log in"
-msgstr "ورود"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "تاریخ/ساعت"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "کاربر"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "عمل"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "DATE_WITH_TIME_FULL"
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "این شیء تاریخچه تغییرات ندارد. احتمالا این شیء توسط سایت مدیریت ایجاد نشده است."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "نمایش همه"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "برو"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgstr "۱ نتیجه"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "کل %(full_result_count)s"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "ذخیره به عنوان جدید"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "ذخیره و ایجاد یکی دیگر"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "ذخیره و ادامه ویرایش"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "ذخیره"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "ابتدا یک نام کاربری و گذرواژه وارد کنید. سپس می توانید مشخصات دیگر را تغییر دهید."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "نام کاربری"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "گذرواژه"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "گذرواژه (تکرار)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "همان گذرواژهٔ بالایی را برای اطمینان دوباره وارد کنید."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "برای کابر <strong>%(username)s</strong> یک گذرنامهٔ جدید وارد کنید."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "یادداشت"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "یادداشت راهنما"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "راهنما برای این صفحه"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "شما را از هر صفحه ای که باشید به نمایی که صفحه را ایجاد کرده می برد"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "نمایش مشخصه شیء"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "نمایش محتوا و مشخصه منحصر به فرد برای صفحاتی که یک شیء را بیان می کنند."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "این شیء را ویرایش کنید (پنجره کنونی)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "رفتن به صفحه مدیر برای صفحاتی که یک شیء را بیان می کنند."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "این شیء را ویرایش کنید (پنجره جدید)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "مانند بالا، اما صفحه مدیر را در پنجره جدیدی باز می کند."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "متشکر از اینکه مدتی از وقت خود را به ما اختصاص دادید."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ورود دوباره"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "تغییر گذرواژه"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "گذرواژه تغییر یافت."
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "گذرواژهٔ شما تغییر یافت."
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"گذرواژهٔ قدیمی خود را، برای امنیت بیشتر، وارد کنید و سپس گذرواژهٔ جدیدتان را "
-"دوبار وارد کنید تا ما بتوانیم چک کنیم که به درستی تایپ کرده‌اید."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "گذرواژهٔ قدیمی"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "گذرواژهٔ جدید"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "تکرار گذرواژه"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "تغییر گذرواژهٔ من"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "ایجاد گذرواژهٔ جدید"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "گذرواژهٔ جدید ایجاد شد."
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"ما به آدرس پست اکترونیکی‌ای که وارد کردید یک گذرواژهٔ جدید فرستادیم. به زودی "
-"به شما می‌رسد."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"درخواستی برای ایجاد گذرواژهٔ جدید با آدرس شما به ما رسیده است و ما این نامه "
-"را برای شما فرستادیم"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "برای حساب کاربریتان در %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "گذرواژهٔ جدیدتان: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "با رفتن به صفحهٔ زیر می‌توانید گذرواژه‌تان را عوض کنید:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "نام کاربریتان، اگر یادتان رفته است:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "متشکر از استفادهٔ شما از وبگاه ما"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "گروه %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr "گذرواژه خود را فراموش کرده اید؟ ایمیل خود را وارد کنید. ما گذرواژه را تغییر داده، آنرا برای شما ایمیل می کنیم."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "آدرس پست الکترونیکی:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "ایجاد گذرواژهٔ جدید"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "تاریخ:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "زمان:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "اکنون:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "تغییر:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "همه تاریخ ها"
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(obj)s از %(name)s با موفقیت ایجاد شد."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "در زیر، می توانید مجددا آنرا ویراش کنید."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "ایجاد کاربر"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "گذرواژه با موفقیت تغییر یافت."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "تغییر گذرواژه: %s"
-
-#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "لطفا نام کاربری و گذرواژه صحیح را وارد نمایید. توجه نمایید که هر دو مقدار به حروف کوچک و بزرگ (انگلیسی) حساس می باشند."
-
-#: contrib/admin/views/decorators.py:63
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "لطفا مجددا وارد شوید. زیرا مدت زیادی در سایت غیر فعال بوده اید. نگران نباشید، کلیه اطلاعات وارد شده شما ذخیره شده اند."
-
-#: contrib/admin/views/decorators.py:70
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr "به نظر می رسد تنظیمات browser شما طوری است که cookie ها را قبول نمی کند. لطفا cookie را در browser خود فعال نموده و مجددا تلاش نمایید."
-
-#: contrib/admin/views/decorators.py:84
-msgid "Usernames cannot contain the '@' character."
-msgstr "نام کاربری نمی تواند حاوی حرف '@' باشد."
-
-#: contrib/admin/views/decorators.py:86
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "آدرس ایمیل شما نام کابریتان نیست. %s را به جای آن امتحان کنید."
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "نشانه"
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "فیلتر"
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "نمایش:"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "برنامه %r یافت نشد"
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "مدل %(name)r در برنامه %(label)r یافت نشد"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "شیء `%(label)s %(type)s` مرتبط"
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "مدل:"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "اشیاء `%(label)s.%(name)s` مرتبط"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "کل %s"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "عدد %s"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "فیلدهای شیء %s"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "عدد صحیح"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (درست یا غلط)"
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (تا %(max_length)s)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "اعداد صحیح که با ویلگول جدا شده اند"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "تاریخ (بدون زمان)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "تاریخ (با زمان)"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "عدد دهدهی"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "آدرس ایمیل"
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "مسیر فایل"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "عدد اعشاری"
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "آدرس IP"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "‌Boolean (درست، نادرست یا پوچ)"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr ""
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "شماره تلفن"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "متن"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "زمان"
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "آدرس اینترنت"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "ایالت آمریکا(دو حرف بزرگ)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "متن XML"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "به نظر نمی رسد %s یک شیء از نوع urlpattern باشد"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "مدیریت سایت"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "شما می توانید یک %s دیگر در زیر اضافه کنید"
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "اضافه کردن %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "%s اضافه شده"
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "و"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "%s تغییر یافته."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "%s حذف شده."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "فیلدی تغییر نیافته است."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "مورد %(name)s·\"%(obj)s\" با موفقیت تغییر یافت."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "مورد %(name)s·\"%(obj)s\" با موفقیت اضافه شد. شما می توانید در زیر آنرا ویرایش نمایید."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "تغییر %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "آیا مطمئن هستید؟"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "تاریخچه تغییر: %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "انتخاب %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "%s را برای تغییر انتخاب کنید"
-
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "اشکال در بانک اطلاعاتی"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "دو فیلد گذرواژه با هم مطابقت ندارند."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "کاربری با این نام کاربری وجود دارد."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr "به نطر می رسد browser شما cookie ها را قبول نمی کند. برای ورود به سایت cookie fhdn فعال شده باشد."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "این حساب غیرفعال است."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "این ایمیل اکانتی در سیستم ندارد. آیا مطمئن هستید که عضو شده اید؟"
-
-#: contrib/auth/forms.py:107
-#, fuzzy, python-format
-msgid "Password reset on %s"
-msgstr "ایجاد گذرواژهٔ جدید"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "دو فیلد «گذرواژهٔ جدید» با هم مطابقت ندارند."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "گذرواژهٔ قدیمی شما اشتباه بود. لطفاً دوباره وارد کنید."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "نام"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "نام کد"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "اجازه"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "اجازه‌ها"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "گروه"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
-msgid "groups"
-msgstr "گروه‌ها"
-
-#: contrib/auth/models.py:131
-msgid "username"
-msgstr "نام کاربری"
-
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "الزامی. ۳۰ حرف یا کمتر. فقط حروف الفبا (شماره، الفبا و خط زیر)."
-
-#: contrib/auth/models.py:132
-msgid "first name"
-msgstr "نام"
-
-#: contrib/auth/models.py:133
-msgid "last name"
-msgstr "نام خانوادگی"
-
-#: contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr "آدرس پست الکترونیکی"
-
-#: contrib/auth/models.py:135
-msgid "password"
-msgstr "گذرواژه"
-
-#: contrib/auth/models.py:135
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-
-#: contrib/auth/models.py:136
-msgid "staff status"
-msgstr "کارمند"
-
-#: contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "تعبیه شده برای اینکه در سایت مدیریت، کاربر بتواند یا نتواند وارد شود."
-
-#: contrib/auth/models.py:137
-msgid "active"
-msgstr "فعال"
-
-#: contrib/auth/models.py:137
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr "تعبیه شده برای اینکه کاربر بتواند به سایت مدیریت وارد شود یا خیر. (به جای حذف کاربر آنرا تیک بزنید)."
-
-#: contrib/auth/models.py:138
-msgid "superuser status"
-msgstr "ابرکاربر"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "تعبیه شده برای اینکه کاربر دسترسی نامحدود به کلیه بخشهای سایت مدیریت داشته باشد یا خیر."
-
-#: contrib/auth/models.py:139
-msgid "last login"
-msgstr "آخرین ورود"
-
-#: contrib/auth/models.py:140
-msgid "date joined"
-msgstr "تاریخ پیوستن"
-
-#: contrib/auth/models.py:142
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "علاوه بر دسترسی هایی که به طور دستی تنظیم شده، این کاربر تمامی دسترسی هایی که توسط گروه عضو شده به او می رسد را خواهد داشت."
-
-#: contrib/auth/models.py:143
-msgid "user permissions"
-msgstr "اجازه‌های کاربر"
-
-#: contrib/auth/models.py:147
-msgid "user"
-msgstr "کاربر"
-
-#: contrib/auth/models.py:148
-msgid "users"
-msgstr "کاربرها"
-
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "اطلاعات شخصی"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "اجازه‌ها"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "تاریخ‌های مهم"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "گروه‌ها"
-
-#: contrib/auth/models.py:316
-msgid "message"
-msgstr "پیغام"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "خارج شد"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
-msgid "object ID"
-msgstr "مشخصه شیء"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr ""
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
-msgid "comment"
-msgstr "نظر"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "امتیاز #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "امتیاز #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "امتیاز #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "امتیاز #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "امتیاز $5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "امتیاز #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "امتیاز #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "امتیاز #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "آیا رتبه بندی قابل قبول است"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
-msgid "date/time submitted"
-msgstr "تاریخ/زمان ثبت شد"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
-msgid "is public"
-msgstr "عمومی است"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "پاک شده است"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "نظرها"
-
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
-msgid "Content object"
-msgstr "شئ نظر"
-
-#: contrib/comments/models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr "نظر داده شده توسط %(user)s در تاریخ %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:178
-msgid "person's name"
-msgstr "نام شخص"
-
-#: contrib/comments/models.py:181
-msgid "ip address"
-msgstr "آدرس ip"
-
-#: contrib/comments/models.py:183
-msgid "approved by staff"
-msgstr ""
-
-#: contrib/comments/models.py:187
-msgid "free comment"
-msgstr "نظر آزاد"
-
-#: contrib/comments/models.py:188
-msgid "free comments"
-msgstr "نظرهای آزاد"
-
-#: contrib/comments/models.py:250
-msgid "score"
-msgstr "امتیاز"
-
-#: contrib/comments/models.py:251
-msgid "score date"
-msgstr "تاریخ امتیاز"
-
-#: contrib/comments/models.py:255
-msgid "karma score"
-msgstr "امتیاز عملکرد"
-
-#: contrib/comments/models.py:256
-msgid "karma scores"
-msgstr "امتیازهای عملکرد"
-
-#: contrib/comments/models.py:260
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d رتبه توسط %(user)s"
-
-#: contrib/comments/models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/models.py:285
-msgid "flag date"
-msgstr "تاریخ پرچم"
-
-#: contrib/comments/models.py:289
-msgid "user flag"
-msgstr "پرچم کاربر"
-
-#: contrib/comments/models.py:290
-msgid "user flags"
-msgstr "پرچم‌های کاربر"
-
-#: contrib/comments/models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "پرچم توسط %r"
-
-#: contrib/comments/models.py:300
-msgid "deletion date"
-msgstr "تاریخ حذف"
-
-#: contrib/comments/models.py:303
-msgid "moderator deletion"
-msgstr "حذف مدیر"
-
-#: contrib/comments/models.py:304
-msgid "moderator deletions"
-msgstr "حذف های مدیر"
-
-#: contrib/comments/models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "گذرواژه‌تان را فراموش کرده‌اید؟"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "لازم"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "اختیاری"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "ارسال عکس"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "نظر:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "پیش‌نمایش نظر"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "نام شما:"
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr ""
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr ""
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr ""
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr ""
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr ""
-
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr ""
-
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "نوع محتوا"
-
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "نوع‌های محتوا"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "تیتر"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "محتوا"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr ""
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "نام قالب"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "عضویت اجباریست"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "اگر این انتخاب شود، فقط کاربران وارد شده می توانند این صفحه را مشاهده نمایند."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "صفحه تخت"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "صفحات تخت"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "th"
-msgstr "اُم"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "st"
-msgstr "اُم"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "nd"
-msgstr "اُم"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "rd"
-msgstr "اُم"
-
-#: contrib/humanize/templatetags/humanize.py:52
-#, python-format
-msgid "%(value).1f million"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f billion"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:58
-#, python-format
-msgid "%(value).1f trillion"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "one"
-msgstr "یک"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "two"
-msgstr "دو"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "three"
-msgstr "سه"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "four"
-msgstr "چهار"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "five"
-msgstr "پنج"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "six"
-msgstr "شش"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "seven"
-msgstr "هفت"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "eight"
-msgstr "هشت"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "nine"
-msgstr "نُه"
-
-#: contrib/humanize/templatetags/humanize.py:94
-#, fuzzy
-msgid "today"
-msgstr "امروز"
-
-#: contrib/humanize/templatetags/humanize.py:96
-msgid "tomorrow"
-msgstr "فردا"
-
-#: contrib/humanize/templatetags/humanize.py:98
-msgid "yesterday"
-msgstr "دیروز"
-
-#: contrib/localflavor/ar/forms.py:28
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "کد پستی را به شکل NNNN یا ANNNNAAA وارد نمایید."
-
-#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "در این فیلد فقط عدد می توانید وارد کنید."
-
-#: contrib/localflavor/ar/forms.py:51
-msgid "This field requires 7 or 8 digits."
-msgstr "این فیلد ۷ یا ۸ شماره لازم دارد."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:81
-msgid "Invalid CUIT."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "کد پستی ۴ رقمی را وارد کنید."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "کد پستی را به شکل XXXXX-XXX وارد کنید."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "شماره تلفنها باید به شکل XX-XXXX-XXXX باشند."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "طول این فیلد حداقل ۱۱ شماره و حداکثر ۱۴ حرف می باشد."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "فیلد حداقل باید ۱۴ شماره باشد"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "کد پستس را به شکل XXX·XXX. وارد کنید."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "کد پستی صحیح را به شکل XXXX وارد کنید."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "کد پستی را به شکل XXXXX وارد کنید."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-#, fuzzy
-msgid "Avila"
-msgstr "آوریل"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-#, fuzzy
-msgid "Jaen"
-msgstr "ژانویه"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:19
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-#, fuzzy
-msgid "Guerrero"
-msgstr "خطای کارگزار"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "شماره تلفن را به طور صحیح وارد نمایید."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-#, fuzzy
-msgid "Groningen"
-msgstr "نُه"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "این فیلد، ۸ رقم لازم دارد."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "این فیلد ۱۱ رقم لازم دارد."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-#, fuzzy
-msgid "Opole"
-msgstr "اختیاری"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-#, fuzzy
-msgid "Komarno"
-msgstr "مارس"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-#, fuzzy
-msgid "Malacky"
-msgstr "مه"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-#, fuzzy
-msgid "Sabinov"
-msgstr "نوامبر"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-#, fuzzy
-msgid "Snina"
-msgstr "نُه"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "کد پستی را به طور صحیح وارد نمایید."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-#, fuzzy
-msgid "Devon"
-msgstr "هفت"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-#, fuzzy
-msgid "Fife"
-msgstr "فیلتر"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "انگلستان"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:4
-#, fuzzy
-msgid "Eastern Cape"
-msgstr "نام کاربری"
-
-#: contrib/localflavor/za/za_provinces.py:5
-#, fuzzy
-msgid "Free State"
-msgstr "تاریخ امتیاز"
-
-#: contrib/localflavor/za/za_provinces.py:6
-#, fuzzy
-msgid "Gauteng"
-msgstr "اوت"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-#, fuzzy
-msgid "Western Cape"
-msgstr "نام کاربری"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr ""
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr ""
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr ""
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr ""
-
-#: contrib/sessions/models.py:46
-msgid "session key"
-msgstr ""
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "اطلاعات نشست"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "تاریخ انقضاء"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "نشست"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "نشست‌ها"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr ""
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "نام نمایش داده شده"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr ""
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr ""
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "این مقدار فقط باید حاوی کلمات، شماره ها و یا خط زیر باشد."
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "حروف بزرگ در اینجا مجاز نمی باشند."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr ""
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr ""
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "یک آدرس ایمیل صحیح وارد کنید."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr ""
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr ""
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr ""
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "این مقدار عدد یا ترکیبی از آن نیست."
-
-#: core/validators.py:128 newforms/fields.py:151
-msgid "Enter a whole number."
-msgstr ""
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr ""
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr ""
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr ""
-
-#: core/validators.py:156 db/models/fields/__init__.py:509
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr ""
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr ""
-
-#: core/validators.py:165 db/models/fields/__init__.py:583
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-
-#: core/validators.py:170 newforms/fields.py:402
-msgid "Enter a valid e-mail address."
-msgstr "آدرس ایمیل صحیح را وارد نمایید."
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: core/validators.py:193 newforms/fields.py:458
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr ""
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr ""
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr ""
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr ""
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr ""
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "آدرس %s لینک شکسته است."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr ""
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgstr ""
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "این فیلد باید با فیلد %s مطابقت داشته باشد."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "لطفا چیزی را وارد کنید حداقل برای یک فیلد."
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "لطفا هر دو فیلد را پر کنید یا هر دو را خالی بگذارید."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "این فیلد باید پر شود اگر %(field)s با %(value)s برابر نباشد."
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr ""
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "این مقدار باید بین %(lower)s و %(upper)s باشد."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "این مقدار حداقل باید %s باشد."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "این مقدار نباید بیشتر از %s باشد."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "این مقدار باید توانی از %s باشد."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "لطفا یک عدد صحیح وارد کنید."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-"Please enter a valid decimal number with at most %s total digits."
-msgstr ""
-
-#: core/validators.py:447
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr ""
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr ""
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "لطفا یک عدد اعشاری صحیح وارد کنید."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr ""
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "این فیلد صحیح نمی باشد."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr ""
-
-#: core/validators.py:539
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318
-#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746
-#: newforms/fields.py:45 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "این فیلد لازم است."
-
-#: db/models/fields/__init__.py:418
-msgid "This value must be an integer."
-msgstr "این مقدار باید یک عدد صحیح باشد."
-
-#: db/models/fields/__init__.py:454
-msgid "This value must be either True or False."
-msgstr "این مقدار باید درست یا غلط باشد."
-
-#: db/models/fields/__init__.py:475
-msgid "This field cannot be null."
-msgstr "این فیلد نمی تواند پوچ باشد."
-
-#: db/models/fields/__init__.py:644
-msgid "This value must be a decimal number."
-msgstr "این مقدار باید یک عدد باشد."
-
-#: db/models/fields/__init__.py:755
-msgid "Enter a valid filename."
-msgstr ""
-
-#: db/models/fields/__init__.py:908
-msgid "This value must be either None, True or False."
-msgstr "این مقدار باید یکی از مقادیر None یا True یا False باشد."
-
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "لطفا %s صحیحی وارد نمایید."
-
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr ""
-
-#: db/models/fields/related.py:660
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: db/models/fields/related.py:707
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr ""
-
-#: newforms/fields.py:46
-msgid "Enter a valid value."
-msgstr "یک مقدار صحیح وارد کنید."
-
-#: newforms/fields.py:123
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-
-#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr ""
-
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr ""
-
-#: newforms/fields.py:180 newforms/fields.py:209
-msgid "Enter a number."
-msgstr "یک عدد وارد نمایید."
-
-#: newforms/fields.py:212
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr ""
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr ""
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr ""
-
-#: newforms/fields.py:262 newforms/fields.py:723
-msgid "Enter a valid date."
-msgstr "تاریخ را به شکل صحیح وارد نمایید."
-
-#: newforms/fields.py:295 newforms/fields.py:724
-msgid "Enter a valid time."
-msgstr "یک زمان صحیح وارد کنید."
-
-#: newforms/fields.py:334
-msgid "Enter a valid date/time."
-msgstr "تاریخ/زمان را به شکل صحیح وارد نمایید."
-
-#: newforms/fields.py:433
-msgid "No file was submitted."
-msgstr "فایلی ارسال نشده است."
-
-#: newforms/fields.py:434 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr ""
-
-#: newforms/fields.py:496
-msgid "Enter a valid URL."
-msgstr ""
-
-#: newforms/fields.py:497
-msgid "This URL appears to be a broken link."
-msgstr "به نظر می رسد این آدرس یک پیوند شکسته است."
-
-#: newforms/fields.py:559 newforms/models.py:317
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: newforms/fields.py:598
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:377
-msgid "Enter a list of values."
-msgstr ""
-
-#: newforms/fields.py:752
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: newforms/models.py:378
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr ""
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgstr ""
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr ""
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr ""
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "یک عدد مثبت وارد نمایید."
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr ""
-
-#: template/defaultfilters.py:691
-msgid "yes,no,maybe"
-msgstr "بله،خیر،شاید"
-
-#: template/defaultfilters.py:722
-#, fuzzy, python-format
-msgid "%(size)d byte"
-msgstr "%(size)d یایت"
-
-#: template/defaultfilters.py:724
-#, python-format
-msgid "%.1f KB"
-msgstr ""
-
-#: template/defaultfilters.py:726
-#, python-format
-msgid "%.1f MB"
-msgstr ""
-
-#: template/defaultfilters.py:727
-#, python-format
-msgid "%.1f GB"
-msgstr ""
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "ب.ظ."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "صبح"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "بعد از ظهر"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "صبح"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "نیمه شب"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "ظهر"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "دوشنبه"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "سه شنبه"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "چهارشنبه"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "پنجشنبه"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "جمعه"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "شنبه"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "یکشنبه"
-
-#: utils/dates.py:10
-#, fuzzy
-msgid "Mon"
-msgstr "یک"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "سه شنبه"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "چهارشنبه"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "سه شنبه"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "جمعه"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "شنبه"
-
-#: utils/dates.py:11
-#, fuzzy
-msgid "Sun"
-msgstr "ژوئن"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ژانویه"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "فوریه"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "مارس"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "آوریل"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "مه"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "ژوئن"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "ژوئیه"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "اوت"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "سپتامبر"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "اکتبر"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "نوامبر"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "دسامبر"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ژانویه"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "فوریه"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "مارس"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "آوریل"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "مه"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ژوئن"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ژوئیه"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "اوت"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "سپتامبر"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "اکتبر"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "نوامبر"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "دسامبر"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "ژانویه"
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "فوریه"
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "اوت"
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "سپتامبر"
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "اکتبر"
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "نوامبر"
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "دسامبر"
-
-#: utils/text.py:127
-#, fuzzy
-msgid "or"
-msgstr "چهار"
-
-#: utils/timesince.py:21
-#, fuzzy
-msgid "year"
-msgstr "سال"
-
-#: utils/timesince.py:22
-#, fuzzy
-msgid "month"
-msgstr "ماه"
-
-#: utils/timesince.py:23
-#, fuzzy
-msgid "week"
-msgstr "هفته"
-
-#: utils/timesince.py:24
-#, fuzzy
-msgid "day"
-msgstr "روز"
-
-#: utils/timesince.py:25
-#, fuzzy
-msgid "hour"
-msgstr "ساعت"
-
-#: utils/timesince.py:26
-#, fuzzy
-msgid "minute"
-msgstr "دقیقه"
-
-#: utils/timesince.py:46
-#, fuzzy
-msgid "minutes"
-msgstr "دقیقه"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr ""
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ""
-
-#: utils/translation/trans_real.py:399
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:400
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:401
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:417
-msgid "YEAR_MONTH_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:418
-msgid "MONTH_DAY_FORMAT"
-msgstr ""
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s با موفقیت ایجاد شد."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s با موفقیت به روز شد."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s حذف شد."
-
-#~ msgid "AnonymousUser"
-#~ msgstr "کاربر ناشناس"
-
-#~ msgid "%d milliseconds"
-#~ msgstr "%d میلی‌ثانیه"
diff --git a/webapp/django/conf/locale/fa/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/fa/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index f2e8940..0000000
--- a/webapp/django/conf/locale/fa/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/fa/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/fa/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 56dcedc..0000000
--- a/webapp/django/conf/locale/fa/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-24 22:09+1000\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr ""
diff --git a/webapp/django/conf/locale/fi/LC_MESSAGES/django.mo b/webapp/django/conf/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 156bf0c..0000000
--- a/webapp/django/conf/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/fi/LC_MESSAGES/django.po b/webapp/django/conf/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index d74fa15..0000000
--- a/webapp/django/conf/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4636 +0,0 @@
-# Finnish translation of Django
-# Copyright (C) 2006-2007
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-18 01:15+0300\n"
-"PO-Revision-Date: 2007-09-15 00:34+0300\n"
-"Last-Translator: Ville Säävuori <ville@unessa.net>\n"
-"Language-Team: Django I18N <Django-I18N@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Language: Finnish\n"
-"X-Poedit-Country: FINLAND\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "arabia"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengali"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "bulgaria"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "katalaani"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "tšekki"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "wales"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "tanska"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "saksa"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "kreikka"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "englanti"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "espanja"
-
-#: conf/global_settings.py:55
-#, fuzzy
-msgid "Estonian"
-msgstr "viro"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Argentiinan espanja"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "baski"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "persia"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "suomi"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "ranska"
-
-#: conf/global_settings.py:61
-#, fuzzy
-msgid "Irish"
-msgstr "turkki"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "galicia"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "unkari"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "heprea"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "kroatia"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islanti"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "italia"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "japani"
-
-#: conf/global_settings.py:69
-#, fuzzy
-msgid "Georgian"
-msgstr "saksa"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "korea"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "latvia"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "liettua"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "makedonia"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "hollanti"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "norja"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "puola"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portugali"
-
-#: conf/global_settings.py:80
-#, fuzzy
-msgid "Brazilian Portuguese"
-msgstr "brasilian portugali"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "romania"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "venäjä"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "slovakia"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "slovenia"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "serbia"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "ruotsi"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tamili"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "turkki"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ukraina"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "kiina (yksinkertaistettu)"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "kiina (perinteinen)"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Yksi %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Kaikki"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Mikä tahansa päivä"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Tänään"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Viimeiset 7 päivää"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Tässä kuussa"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Tänä vuonna"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Kyllä"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Ei"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Tuntematon"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "tapahtumahetki"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "kohteen tunniste"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "kohteen tiedot"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "tapahtumatyyppi"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "selitys"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "lokimerkintä"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "lokimerkinnät"
-
-#: contrib/admin/options.py:143 contrib/admin/options.py:202
-#, fuzzy
-msgid "None"
-msgstr "yksi"
-
-#: contrib/admin/options.py:413
-#, python-format
-msgid "Changed %s."
-msgstr "Muokattu: %s."
-
-#: contrib/admin/options.py:413 contrib/admin/options.py:423
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "ja"
-
-#: contrib/admin/options.py:418
-#, fuzzy, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Lisää uusi %(name)s"
-
-#: contrib/admin/options.py:422
-#, fuzzy, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "tähän liittyvät `%(label)s.%(name)s`-kohteet"
-
-#: contrib/admin/options.py:427
-#, fuzzy, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "tähän liittyvät `%(label)s.%(name)s`-kohteet"
-
-#: contrib/admin/options.py:431
-msgid "No fields changed."
-msgstr "Ei muutoksia kenttiin."
-
-#: contrib/admin/options.py:492 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" on nyt lisätty."
-
-#: contrib/admin/options.py:496 contrib/admin/options.py:529
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Voit muokata sitä uudelleen alla."
-
-#: contrib/admin/options.py:506 contrib/admin/options.py:539
-#, python-format
-msgid "You may add another %s below."
-msgstr "Uusi %s on lisättävissä alla."
-
-#: contrib/admin/options.py:527
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" on nyt muutettu."
-
-#: contrib/admin/options.py:535
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" on nyt lisätty. Voit muokata sitä uudelleen alla."
-
-#: contrib/admin/options.py:601
-#, python-format
-msgid "Add %s"
-msgstr "Uusi %s"
-
-#: contrib/admin/options.py:678
-#, python-format
-msgid "Change %s"
-msgstr "Muokkaa: %s"
-
-#: contrib/admin/options.py:709
-msgid "Database error"
-msgstr "Tietokantavirhe"
-
-#: contrib/admin/options.py:758
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" on poistettu."
-
-#: contrib/admin/options.py:765
-msgid "Are you sure?"
-msgstr "Oletko varma?"
-
-#: contrib/admin/options.py:792
-#, python-format
-msgid "Change history: %s"
-msgstr "Muokkaushistoria: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Käyttäjätunnus tai salasana ei kelpaa. Huomaa, että isot ja pienet kirjaimet "
-"ovat merkitseviä."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Kirjaudu uudelleen sisään, koska istuntosi on vanhentunut. Muutoksesi ovat "
-"silti tallessa."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Selaimesi ei salli evästeitä. Muuta asetukset sallimaan evästeet, lataa tämä "
-"sivu uudelleen ja yritä uudelleen."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Käyttäjätunnuksessa ei saa olla '@'-merkkiä."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Käyttäjätunnus ei ole sama kuin sähköpostiosoite. Kokeile '%s'."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Sivuston ylläpito"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Kirjaudu sisään"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Yksi tai useampi %(fieldname)s kohteessa %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Pvm:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Klo:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Tällä hetkellä:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Muokkaa:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Sivua ei löydy"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Pahoittelemme, pyydettyä sivua ei löytynyt."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Etusivu"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Palvelinvirhe"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Palvelinvirhe (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Palvelinvirhe <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Palvelimella on tapahtunut virhe. Se on ilmoitettu sivuston ylläpitäjille "
-"sähköpostilla ja korjataan pian. Kiitämme kärsivällisyydestä."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Tervetuloa,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Ohjeita"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Vaihda salasana"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Kirjaudu ulos"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django-sivuston ylläpito"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Djangon ylläpito"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Lisää uusi"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Muokkaushistoria"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Näytä lopputulos"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Korjaa virhe."
-msgstr[1] "Korjaa virheet."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lisää uusi %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Suodatin"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Poista"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Kohteen '%(escaped_object)s' (%(object_name)s) poisto poistaisi myös siihen "
-"liittyviä kohteita, mutta sinulla ei ole oikeutta näiden kohteiden "
-"poistamiseen:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Haluatko varmasti poistaa kohteen \"%(escaped_object)s\" (%(object_name)s)? "
-"Myös seuraavat kohteet poistettaisiin samalla:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Kyllä, olen varma"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s:"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Sovelluksen %(name)s mallit."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Muokkaa"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Sinulla ei ole oikeutta muokata mitään."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Viimeisimmät muutokset"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Sinun tekemäsi muutokset"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Ei yhtään"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Tietokanta-asennuksessasi on jotain vialla. Varmistu, että sopivat taulut on "
-"luotu ja että oikea käyttäjä voi lukea tietokantaa."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Käyttäjätunnus:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Salasana:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Pvm/klo"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Käyttäjä"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Toiminto"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Tällä kohteella ei ole muutoshistoriaa. Sitä ei ole lisätty tämän "
-"ylläpitosivun avulla."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Näytä kaikki"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Etsi"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 hakutulas"
-msgstr[1] "%(counter)s hakutulosta"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "yhteensä %(full_result_count)s"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Tallenna uutena"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Tallenna ja lisää seuraava"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Tallenna välillä ja jatka muokkaamista"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Tallenna ja poistu"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Syötä ensin käyttäjätunnus ja salasana. Sen jälkeen voit muokata muita "
-"käyttäjän tietoja."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Käyttäjätunnus"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Salasana"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Salasana toistamiseen"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Syötä käyttäjän <strong>%(username)s</strong> uusi salasana."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Kiitos sivuillamme viettämästäsi ajasta."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Kirjaudu uudelleen sisään"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Salasanan muuttaminen"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Salasanan muuttaminen onnistui"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Salasanasi on muutettu."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Syötä vanha salasanasi varmistukseksi, ja syötä sitten uusi salasanasi\n"
-"kaksi kertaa, jotta se tulee varmasti oikein."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Vanha salasana:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Uusi salasana:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Varmista uusi salasana:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Vaihda salasana"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Salasanan nollaus"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-#, fuzzy
-msgid "Password reset complete"
-msgstr "Salasanan nollaus"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Salasanasi on asetettu. Nyt voit kirjautua sisään."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#, fuzzy
-msgid "Password reset confirmation"
-msgstr "Salasanan nollaus"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-#, fuzzy
-msgid "Enter new password"
-msgstr "Uusi salasana:"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-#, fuzzy
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Syötä vanha salasanasi varmistukseksi, ja syötä sitten uusi salasanasi\n"
-"kaksi kertaa, jotta se tulee varmasti oikein."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-#, fuzzy
-msgid "Password reset unsuccessful"
-msgstr "Salasanan nollaus ei onnistunut"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Salasanan nollauslinkki oli virheellinen, mahdollisesti siksi että se on jo "
-"käytetty. Ole hyvä ja pyydä uusi salasanan nollaus."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Salasanan nollaus onnistui"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-#, fuzzy
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Uusi salasanasi on lähetetty antamaasi sähköpostiosoitteeseen.\n"
-"Se saapuu tuota pikaa."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Sait tämän viestin, koska pyysit uutta salasanaa"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "sivuston %(site_name)s käyttäjätilillesi"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Ole hyvä ja mene oheiselle sivulle valitsemaan uusi salasana:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Käyttäjätunnuksesi siltä varalta, että olet unohtanut sen:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Kiitos vierailustasi sivuillemme!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s ylläpitäjät"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-#, fuzzy
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Unohditko salasanasi? Syötä alle sähköpostiosoitteesi, niin \n"
-"lähetämme sinulle uuden salasanan."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Sähköpostiosoite:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Nollaa salasana"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Kaikki päivät"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Valitse %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Valitse muokattava %s"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "sivusto"
-
-#: contrib/admin/views/template.py:38
-#, fuzzy
-msgid "template"
-msgstr "mallipohjan nimi"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "suodatin:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Sovellusta %r ei löydy"
-
-#: contrib/admindocs/views.py:194
-#, fuzzy, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Sovelluksesta %(label)r ei löydy mallia %(name)r"
-
-#: contrib/admindocs/views.py:206
-#, fuzzy, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "tähän liittyvä `%(label)s.%(type)s`-kohde"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "malli:"
-
-#: contrib/admindocs/views.py:237
-#, fuzzy, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "tähän liittyvät `%(label)s.%(name)s`-kohteet"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "kaikki %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "%s-kohteiden lukumäärä"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s-kohteiden kentät"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Kokonaisluku"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Merkkijono (enintään %(max_length)s merkkiä)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Pilkulla erotetut kokonaisluvut"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Päivämäärä (ilman kellonaikaa)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Päivämäärä ja kellonaika"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Desimaaliluku"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "Sähköpostiosoite"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Tiedostopolku"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Liukuluku"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP-osoite"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relaatio emomalliin"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Puhelinnumero"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Tekstiä"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Kellonaika"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL-osoite"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "USA:n osavaltio (kaksikirjaiminen versaalein)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML-teksti"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ei näytä urlpattern-objektilta"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Kirjanmerkkiset"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Ohjeiden kirjanmerkkiset"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Asenna kirjanmerkkinen raahaamalla linkki kirjanmerkkien "
-"työkalupalkkiin tai napsauttamalla linkkiä oikeanpuoleisella hiiren "
-"painikkeella ja valitsemalla kirjanmerkkeihin lisäämisen. Sen jälkeen voit "
-"valita kirjanmerkkisen miltä tahansa sivuston sivulta. Huomaa, että jotkin "
-"näistä kirjanmerkkisistä toimivat vain, jos selaat sivustoa \"paikalliseksi"
-"\" määritellyltä tietokoneelta (kysy lisätietoja verkkonne ylläpitäjältä).</"
-"p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Tämän sivun ohjeita"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Vie avoinna olevan sivun luoneen näkymän ohjeisiin."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Näytä kohteen tunniste"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Näyttää yksittäistä kohdetta vastaavilla sivuilla kohteen tyypin ja "
-"tunnisteen."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Muokkaa tätä kohdetta (tässä ikkunassa)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Siirtyy yksittäistä kohdetta vastaavalta sivulta kohteen ylläpitosivulle."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Muokkaa tätä kohdetta (uudessa ikkunassa)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kuten yllä, mutta avaa ylläpitosivun uuteen ikkunaan."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Henkilökohtaiset tiedot"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Oikeudet"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Tärkeät päivämäärät"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Ryhmät"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Uusi käyttäjä"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Salasanan muuttaminen onnistui."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Vaihda salasana: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-" Vaaditaan. Enintään 30 kirjanta (a-z), numeroa (0-9) tai alaviivaa (_)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr ""
-"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) ja alaviivoja "
-"(_)."
-
-#: contrib/auth/forms.py:18
-#, fuzzy
-msgid "Password confirmation"
-msgstr "Salasanan muuttaminen"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Käyttäjätunnus on jo rekisteröity."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "Salasanat eivät täsmää."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Tämä käyttäjätili ei ole voimassa."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr "Selaimesi ei salli evästeitä. Sisäänkirjautuminen vaatii evästeen."
-
-#: contrib/auth/forms.py:92
-#, fuzzy
-msgid "E-mail"
-msgstr "Sähköpostios."
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Sähköpostiosoitetta vastaavaa käyttäjätunnusta ei löydy. Oletko varmasti jo "
-"rekisteröitynyt?"
-
-#: contrib/auth/forms.py:126
-#, fuzzy, python-format
-msgid "Password reset on %s"
-msgstr "Salasanan nollaus"
-
-#: contrib/auth/forms.py:134
-#, fuzzy
-msgid "New password"
-msgstr "Uusi salasana:"
-
-#: contrib/auth/forms.py:135
-#, fuzzy
-msgid "New password confirmation"
-msgstr "Uusi salasana uudelleen:"
-
-#: contrib/auth/forms.py:160
-#, fuzzy
-msgid "Old password"
-msgstr "Vanha salasana:"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vanha salasana on virheellinen. Yritä uudelleen."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "nimi"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "koodinimi"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "oikeus"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "oikeudet"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "ryhmä"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "ryhmät"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "tunnus"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "etunimi"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "sukunimi"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "sähköposti"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "salasana"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Syötä muodossa '[algo]$[suola]$[heksa-digest]' tai käytä <a href=\"password/"
-"\">muutoslomaketta</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "ylläpitäjä"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Ylläpitäjillä on pääsy tähän sivuston ylläpito-osioon."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "voimassa"
-
-#: contrib/auth/models.py:143
-#, fuzzy
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Määrää, voiko käyttäjä kirjautua sisään. Tällä voi estää käyttäjätilin "
-"käytön poistamatta sitä."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "pääkäyttäjä"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Antaa käyttäjälle kaikki oikeudet ilman, että niitä täytyy erikseen luetella."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "viimeksi kirjautunut"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "liittynyt"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Tässä valittujen oikeuksien lisäksi käyttäjä saa myös kaikki niiden ryhmien "
-"oikeudet, joiden jäsen hän on."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "käyttäjän oikeudet"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "käyttäjä"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "käyttäjät"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "viesti"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Kirjautunut ulos"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "kohteen tunniste"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "otsikko"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "kommentti"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "1. pisteytys"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "2. pisteytys"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "3. pisteytys"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "4. pisteytys"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "5. pisteytys"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "6. pisteytys"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "7. pisteytys"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "8. pisteytys"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "on sallittu pisteytys"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "lähetyshetki"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "on julkinen"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "on poistettu"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Rastita jos kommentti on asiaankuulumaton. Kommentin tilalla näytetään\n"
-"viesti \"Tämä kommentti on poistettu\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "kommentit"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Kommentoitu kohde"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-" Kirjoittanut %(user)s, pvm %(date)s\\n\n"
-" \\n\n"
-" %(comment)s\\n\n"
-" \\n\n"
-" http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "henkilön nimi"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "IP-osoite"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "ylläpidon hyväksymä"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "vapaa kommentti"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "vapaat kommentit"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "pisteet"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "pisteytyspäivä"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "karma-pisteytys"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "karma-pisteytykset"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d pistettä käyttäjältä %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-" %(user)s on merkinnyt tämän kommentin:\\n\n"
-" \\n\n"
-" %(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "merkintäpäivä"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "käyttäjän merkki"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "käyttäjien merkit"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Käyttäjän %r merkki"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "poistamispäivä"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "valvojan poisto"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "valvojien poistot"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Valvojan %r poisto"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Unohditko salasanasi?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Pisteytykset"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Vaaditaan"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Vapaavalintainen"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Lähetä valokuva"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Kommentti:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Esikatsele kommenttia"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Nimesi:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Tämä pisteytys on annettava, koska olet syöttänyt ainakin yhden muunkin "
-"pisteytyksen."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Kommentin kirjoittanut käyttäjä on kirjoittanut vain yhden kommentin:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Kommentin kirjoittanut käyttäjä on kirjoittanut alle %(count)s kommenttia:\n"
-"\n"
-"%(text)s"
-
-# Mitä "sketchy user" tarkoittaa?
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Tämä on \"sketchy\"-käyttäjän kirjoittama kommentti:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Vain POST-kutsut sallittu"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Yksi tai useampi vaadittu kenttä on jäänyt täyttämättä"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Kommenttilomaketta on käpälöity (turvallisuusrike)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Kommenttilomakkeen 'target'-parametri ei kelpaa -- kohteen ID oli "
-"virheellinen"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Kommenttilomake ei pyytänyt esikatselua tai lähettämistä"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonyymit käyttäjät eivät voi äänestää"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Kommentin tunniste on virheellinen"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Itseään ei voi äänestää"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "mallin python-luokan nimi"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "sisältötyyppi"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "sisältötyypit"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Esimerkki: '/tietoja/yhteystiedot/'. Varmista, että sekä alussa että lopussa "
-"on kauttaviiva."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala-, tavu- "
-"ja kauttaviivoja (_ - /)."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Lisäasetukset"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "otsikko"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "sisältö"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "salli kommentit"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "mallipohjan nimi"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Esimerkiksi: 'flatpages/yhteydenotto.html'. Jos tämä jätetään tyhjäksi, "
-"käytetään oletuspohjaa 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "vaaditaan rekisteröityminen"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Jos tämä kohta on valittu, vain sisäänkirjautuneet käyttäjät näkevät sivun."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "tekstisivu"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "tekstisivut"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Geometria-arvoa ei annettu."
-
-#: contrib/gis/forms/fields.py:11
-#, fuzzy
-msgid "Invalid Geometry value."
-msgstr "Kommentin tunniste on virheellinen"
-
-#: contrib/gis/forms/fields.py:12
-#, fuzzy
-msgid "Invalid Geometry type."
-msgstr "Kommentin tunniste on virheellinen"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljoona"
-msgstr[1] "%(value).1f miljoonaa"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljardi"
-msgstr[1] "%(value).1f miljardia"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triljoona"
-msgstr[1] "%(value).1f triljoonaa"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "yksi"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "kaksi"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "kolme"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "neljä"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "viisi"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "kuusi"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "seitsemän"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "kahdeksan"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "yhdeksän"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "tänään"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "huomenna"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "eilen"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Syötä postinumero muodossa NNNN tai ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Tähän kenttään kelpaavat vain numerot."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Tähän kenttään vaaditaan 7 tai 8 numeroa."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Syötä validi CUIT joko XX-XXXXXXXX-X tai XXXXXXXXXXXX -muodossa."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Virheellinen CUIT."
-
-#: contrib/localflavor/at/at_states.py:5
-#, fuzzy
-msgid "Burgenland"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Carinthia"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:9
-#, fuzzy
-msgid "Salzburg"
-msgstr "Hampuri"
-
-#: contrib/localflavor/at/at_states.py:10
-#, fuzzy
-msgid "Styria"
-msgstr "serbia"
-
-#: contrib/localflavor/at/at_states.py:11
-#, fuzzy
-msgid "Tyrol"
-msgstr "Tokio"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr ""
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Syötä postinumero muodossa XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-#, fuzzy
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr "Syötä oikea henkilötunnus."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Syötä nelinumeroinen postinumero."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Syötä postinumero muodossa XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Puhelinnumeron tulee olla muodossa XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Virheellinen CPF-numero."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Tämä kenttä vaatii vähintään 11 ja enintään 14 merkkiä."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Virheellinen CNPJ-numero."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Tähän kenttään vaaditaan ainakin 14 numeroa."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Syötä postinumero muodossa XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-#, fuzzy
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Syötä oikea norjalainen henkilötunnus."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Geneve"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zürich"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-
-#: contrib/localflavor/cl/forms.py:29
-#, fuzzy
-msgid "Enter a valid Chilean RUT."
-msgstr "Syötä oikea chileläinen RUT"
-
-#: contrib/localflavor/cl/forms.py:30
-#, fuzzy
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Syötä postinumero muodossa XXXXX-XXX."
-
-#: contrib/localflavor/cl/forms.py:31
-#, fuzzy
-msgid "The Chilean RUT is not valid."
-msgstr "Tämä arvo ei kelpaa."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berliini"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hampuri"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Syötä postinumero muodossa XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-#, fuzzy
-msgid "Arava"
-msgstr "Trnava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-#, fuzzy
-msgid "Avila"
-msgstr "huhtikuu"
-
-#: contrib/localflavor/es/es_provinces.py:10
-#, fuzzy
-msgid "Badajoz"
-msgstr "Bardejov"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-#, fuzzy
-msgid "Barcelona"
-msgstr "makedonia"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-#, fuzzy
-msgid "Cadiz"
-msgstr "Cadca"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-#, fuzzy
-msgid "Cuenca"
-msgstr "Senica"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-#, fuzzy
-msgid "Granada"
-msgstr "kannada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-#, fuzzy
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-#, fuzzy
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-#, fuzzy
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-#, fuzzy
-msgid "Madrid"
-msgstr "Martin"
-
-#: contrib/localflavor/es/es_provinces.py:33
-#, fuzzy
-msgid "Malaga"
-msgstr "Galanta"
-
-#: contrib/localflavor/es/es_provinces.py:34
-#, fuzzy
-msgid "Murcia"
-msgstr "Jura"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-#, fuzzy
-msgid "Palencia"
-msgstr "galicia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-#, fuzzy
-msgid "Salamanca"
-msgstr "Galanta"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-#, fuzzy
-msgid "Cantabria"
-msgstr "katalaani"
-
-#: contrib/localflavor/es/es_provinces.py:44
-#, fuzzy
-msgid "Segovia"
-msgstr "slovenia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-#, fuzzy
-msgid "Seville"
-msgstr "Levice"
-
-#: contrib/localflavor/es/es_provinces.py:46
-#, fuzzy
-msgid "Soria"
-msgstr "serbia"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-#, fuzzy
-msgid "Teruel"
-msgstr "Ti"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-#, fuzzy
-msgid "Valencia"
-msgstr "galicia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-#, fuzzy
-msgid "Valladolid"
-msgstr "Valais"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-#, fuzzy
-msgid "Ceuta"
-msgstr "Detva"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-#, fuzzy
-msgid "Catalonia"
-msgstr "katalaani"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-#, fuzzy
-msgid "Galicia"
-msgstr "galicia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-#, fuzzy
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Syötä validi postinumero väliltä ja muodossa 01XXX-52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-#, fuzzy
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr "Syötä postinumero muodossa XXXXX tai XXX XX."
-
-#: contrib/localflavor/es/forms.py:66
-#, fuzzy
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "IP-osoite ei kelpaa."
-
-#: contrib/localflavor/es/forms.py:67
-#, fuzzy
-msgid "Please enter a valid NIF or NIE."
-msgstr "Syöttämäsi %s ei kelpaa."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Syötä oikea suomalainen henkilötunnus."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Syötä postinumero muodossa XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Syötä oikea postinumero."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Syötä oikea henkilötunnus."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Syötä oikea ALV-tunnus."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokio"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kioto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-#, fuzzy
-msgid "Campeche"
-msgstr "tšekki"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-#, fuzzy
-msgid "Coahuila"
-msgstr "kroatia"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-#, fuzzy
-msgid "Guerrero"
-msgstr "Palvelinvirhe"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-#, fuzzy
-msgid "Jalisco"
-msgstr "Valais"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-#, fuzzy
-msgid "Michoacán"
-msgstr "Michalovce"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-#, fuzzy
-msgid "Sinaloa"
-msgstr "Sala"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Syötä oikea postinumero."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Syötä oikea puhelinnumero."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Syötä ikea SoFi-numero."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Syötä oikea norjalainen henkilötunnus."
-
-#: contrib/localflavor/pe/forms.py:24
-#, fuzzy
-msgid "This field requires 8 digits."
-msgstr "Tähän kenttään vaaditaan 7 tai 8 numeroa."
-
-#: contrib/localflavor/pe/forms.py:52
-#, fuzzy
-msgid "This field requires 11 digits."
-msgstr "Tähän kenttään vaaditaan 7 tai 8 numeroa."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Syötä postinumero muodossa XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:19
-#, fuzzy
-msgid "Enter a valid CIF."
-msgstr "Syötä oikea URL-osoite."
-
-#: contrib/localflavor/ro/forms.py:56
-#, fuzzy
-msgid "Enter a valid CNP."
-msgstr "Syötä oikea URL-osoite."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:171
-#, fuzzy
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Puhelinnumeron tulee olla muodossa XX-XXXX-XXXX."
-
-#: contrib/localflavor/ro/forms.py:194
-#, fuzzy
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Syötä postinumero muodossa XXX XXX."
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Syötä postinumero muodossa XXXXX tai XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banská Bystrican aule"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Bratislavan alue"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Košicen alue"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nitran alue"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Prešovin alue"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trenčínin alue"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava region"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Zilina region"
-
-#: contrib/localflavor/uk/forms.py:21
-#, fuzzy
-msgid "Enter a valid postcode."
-msgstr "Syötä oikea postinumero."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-#, fuzzy
-msgid "Devon"
-msgstr "seitsemän"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-#, fuzzy
-msgid "Durham"
-msgstr "Jura"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-#, fuzzy
-msgid "Kent"
-msgstr "korea"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-#, fuzzy
-msgid "Surrey"
-msgstr "Tällä hetkellä:"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-#, fuzzy
-msgid "Borders"
-msgstr "Järjestysnumero:"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-#, fuzzy
-msgid "Fife"
-msgstr "Suodatin"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-#, fuzzy
-msgid "Grampian"
-msgstr "saksa"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-#, fuzzy
-msgid "Lothian"
-msgstr "latvia"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-#, fuzzy
-msgid "England"
-msgstr "ja"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-#, fuzzy
-msgid "Wales"
-msgstr "wales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-#, fuzzy
-msgid "Enter a valid South African ID number"
-msgstr "Syötä ikea SoFi-numero."
-
-#: contrib/localflavor/za/forms.py:54
-#, fuzzy
-msgid "Enter a valid South African postal code"
-msgstr "Syötä oikea postinumero."
-
-#: contrib/localflavor/za/za_provinces.py:4
-#, fuzzy
-msgid "Eastern Cape"
-msgstr "Käyttäjätunnus"
-
-#: contrib/localflavor/za/za_provinces.py:5
-#, fuzzy
-msgid "Free State"
-msgstr "pisteytyspäivä"
-
-#: contrib/localflavor/za/za_provinces.py:6
-#, fuzzy
-msgid "Gauteng"
-msgstr "elo"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-#, fuzzy
-msgid "Western Cape"
-msgstr "Käyttäjätunnus"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "ohjaa osoitteesta"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Tässä on käytettävä absoluuttista polkua ilman verkkotunnusta. Esimerkki: "
-"'\\\n"
-"events/search/'"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "ohjaa osoitteeseen"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Tässä on käytettävä joko absoluuttista polkua (kuten yllä) tai täydellistä "
-"'http://'-alkuista URL-osoitetta."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "edelleenohjaus"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "edelleenohjaukset"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "istunnon avain"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "istunnon tiedot"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "vanhenee"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "istunto"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "istunnot"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "domain-nimi"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "näyttönimi"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "sivustot"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala- ja "
-"tavuviivoja (_ -)."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Isot kirjaimet (ABC) eivät kelpaa tässä."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Pienet kirjaimet (abc) eivät kelpaa tässä."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Vain pilkulla erotetut luvut kelpaavat tässä."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Syötä sähköpostiosoitteita pilkuilla erotettuina."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "IP-osoite ei kelpaa."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Tätä kohtaa ei voi jättää tyhjäksi."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Vain numerot (0-9) kelpaavat tässä."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Tarvitaan vähintään yksi merkki, joka ei ole numero (0-9)."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Syötä kokonaisluku."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Vain kirjaimet kelpaavat tässä."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Päivämäärä %s ei kelpaa"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Päivämäärän pitää olla muodossa VVVV-KK-PP."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Ajan täytyy olla muodossa TT:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Ajankohdan pitää olla muodossa VVVV-KK-PP TT:MM."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "Syötä kelvollinen sähköpostiosoite."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Osoittessa %s ei ole kuvaa tai se on vioittunut."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Puhelinnumeron tulee olla muodossa XXX-XXX-XXXX. \"%s\" ei kelpaa."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Osoitteessa %s ei ole QuickTime-videota tai se on vioittunut."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "URL-osoite ei kelpaa."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"HTML-koodi ei kelpaa. Virheilmoitus on:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Vääränmuotoinen XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL-osoite %s ei kelpaa."
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Osoite %s on rikkoutunut tai väärä linkki."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Syötä USA:n osavaltion lyhenne."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Siivoa suusi! Sanaa \"%s\" ei saa käyttää tässä."
-msgstr[1] "Siivoa suusi! Sanoja \"%s\" ei saa käyttää tässä."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Arvon täytyy olla sama kuin kentässä '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Täytä ainakin yksi kenttä."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Täytä tai jätä tyhjäksi kummatkin kentät."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Tämä kenttä pitää täyttää, jos %(field)s on %(value)s."
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Tämä kenttä pitää täyttää, jos %(field)s ei ole %(value)s."
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Samaa arvoa ei voi käyttää kahdesti."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Tämän luvun on oltava välillä %(lower)s–%(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Tämän luvun on oltava vähintään %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Tämän luvun on oltava enintään %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Tämän luvun on oltava %s:n potenssi."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Desimaaliluku ei kelpaa."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevä numero. Huomaa, "
-"että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)."
-msgstr[1] ""
-"Desimaaliluvussa saa tässä olla yhteensä vain %s merkitsevää numeroa. "
-"Huomaa, että desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Desimaaliluvun kokonaisosassa saa tässä olla vain %s numero. Huomaa, että "
-"desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)."
-msgstr[1] ""
-"Desimaaliluvun kokonaisosassa saa tässä olla vain %s numeroa. Huomaa, että "
-"desimaalierottimena käytetään pilkun (,) sijasta pistettä (.)."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Tässä saa olla vain %s desimaali. Huomaa, että desimaalierottimena käytetään "
-"pilkun (,) sijasta pistettä (.)."
-msgstr[1] ""
-"Tässä saa olla vain %s desimaalia. Huomaa, että desimaalierottimena "
-"käytetään pilkun (,) sijasta pistettä (.)."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Syötä liukuluku."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Lähetä vähintään %s tavun kokoinen tiedosto."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Lähetä enintään %s tavun kokoinen tiedosto."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Muoto ei kelpaa."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Tämä arvo ei kelpaa."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Tietoja ei voida noutaa kohteesta: %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"Osoitteesta %(url)s saatiin virheellinen Content-Type '%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Rivillä %(line)s oleva tagi %(tag)s pitää sulkea. (Rivi alkaa \"%(start)s\")"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Rivillä %(line)s on tekstiä, joka ei kelpaa tässä yhteydessä. (Rivi alkaa \"%"
-"(start)s\")"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"Rivillä %(line)s attribuutti %(attr)s ei kelpaa. (Rivi alkaa \"%(start)s\")"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"Rivillä %(line)s tagi \"<%(tag)s>\" ei kelpaa. (Rivi alkaa \"%(start)s\")"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Rivillä %(line)s yhdestä tagista puuttuu yksi tai useampi attribuutti. (Rivi "
-"alkaa \"%(start)s\")"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Rivillä %(line)s attribuutin %(attr)s arvo ei kelpaa. (Rivi alkaa \"%(start)s"
-"\")"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(field)s omaa jo kohteen %(object)s, joka on tyyppiä %(type)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s, jolla on tämä %(fieldname)s, on jo olemassa."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Tämä kenttä vaaditaan."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "Tarvitaan kokonaisluku."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "Tarvitaan tosi (True) tai epätosi (False)."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "Tämän kentän arvo ei voi olla \"null\"."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-#, fuzzy
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Ajankohdan pitää olla muodossa VVVV-KK-PP TT:MM."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "Tähän tarvitaan desimaaliluku."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "Tähän tarvitaan tyhjä (None), tosi (True) tai epätosi (False)."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-#, fuzzy
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Ajan täytyy olla muodossa TT:MM."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Tiedostonimi ei kelpaa."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Syöttämäsi %s ei kelpaa."
-
-#: db/models/fields/related.py:776
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Pidä \"Ctrl\"-näppäin (tai Macin \"Command\") pohjassa valitaksesi useita "
-"vaihtoehtoja."
-
-#: db/models/fields/related.py:856
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Syöttämäsi %(self)s-tunniste %(value)r ei kelpaa."
-msgstr[1] "Syöttämäsi %(self)s-tunnisteet %(value)r eivät kelpaa."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Syötä oikea arvo."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Tähän kelpaa enintään %(max)d merkkiä (nyt niitä on %(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Tähän tarvitaan vähintään %(min)d merkkiä (nyt on vain %(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Tämän luvun on oltava enintään %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Tämän luvun on oltava vähintään %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Syötä kokonaisluku."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Tässä luvussa voi olla yhteensä enintään %s numeroa."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Tässä luvussa saa olla enintään %s desimaalia."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Tässä luvussa saa olla enintään %s numeroa ennen desimaalipilkkua."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "Syötä oikea päivämäärä."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "Syötä oikea kellonaika."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "Syötä oikea pvm/kellonaika."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "Yhtään tiedostoa ei ole lähetetty."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Lähetetty tiedosto on tyhjä."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "Syötä oikea URL-osoite."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "Tämä URL-osoite on rikkinäinen linkki."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, fuzzy, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Valitse oikea vaihtoehto. %s ei löydy vaihtoehtojen joukosta."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Syötä lista."
-
-#: forms/fields.py:832
-#, fuzzy
-msgid "Enter a valid IPv4 address."
-msgstr "Syötä kelvollinen sähköpostiosoite."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Valitse oikea vaihtoehto. %s ei löydy vaihtoehtojen joukosta."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Varmista, että tekstin pituus on vähemmän kuin %s merkki."
-msgstr[1] "Varmista, että teksti pituus on vähemmän kuin %s merkkiä."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Rivinvaihtoja ei voi käyttää."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-"Valinta ei kelpaa; '%(data)s' ei löydy vaihtoehtojen %(choices)s joukosta."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Syötä kokonaisluku väliltä -32768 ja 32767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Syötä positiivinen kokonaisluku."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Syötä kokonaisluku väliltä 0 ja 32767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "kyllä,ei,ehkä"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d tavu"
-msgstr[1] "%(size)d tavua"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f Kt"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f Mt"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f Gt"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "ip"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "ap"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "IP"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AP"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "keskiyö"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "keskipäivä"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "maanantai"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "tiistai"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "keskiviikko"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "torstai"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "perjantai"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "lauantai"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "sunnuntai"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Ma"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Ti"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ke"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "To"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Pe"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "La"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Su"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "tammikuu"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "helmikuu"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "maaliskuu"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "huhtikuu"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "toukokuu"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "kesäkuu"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "heinäkuu"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "elokuu"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "syyskuu"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "lokakuu"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "marraskuu"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "joulukuu"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "tam"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "hel"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "maa"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "huh"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "tou"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "kes"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "hei"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "elo"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "syy"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "lok"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "mar"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "jou"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "tammi"
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "helmi"
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "elo"
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "syys"
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "loka"
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "marras"
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "joulu"
-
-#: utils/text.py:128
-msgid "or"
-msgstr "tai"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "vuosi"
-msgstr[1] "vuotta"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "kuukausi"
-msgstr[1] "kuukautta"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "viikko"
-msgstr[1] "viikkoa"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "päivä"
-msgstr[1] "päivää"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "tunti"
-msgstr[1] "tuntia"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuutti"
-msgstr[1] "minuuttia"
-
-#: utils/timesince.py:46
-#, fuzzy
-msgid "minutes"
-msgstr "minuutti"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j.n.Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j.n.Y G:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "G:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "N Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "N j, Y"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s luotiin onnistuneesti."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s päivitettiin onnistuneesti."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s on poistettu."
-
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "Vuosiluvuksi kelpaa vain 1900 tai myöhempi."
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "Erottele tunnisteet pilkuilla."
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "Uusi salasanasi on: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr "Voit vaihtaa salasanan sivulla:"
-
-#~ msgid "Ordering"
-#~ msgstr "Järjestys"
-
-#~ msgid "Added %s."
-#~ msgstr "Lisätty %s."
-
-#~ msgid "Deleted %s."
-#~ msgstr "Poistettu %s."
-
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "Salasanat eivät täsmää."
-
-#~ msgid "Brazilian"
-#~ msgstr "Brasilian portugali"
diff --git a/webapp/django/conf/locale/fi/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/fi/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index f94931a..0000000
--- a/webapp/django/conf/locale/fi/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/fi/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/fi/LC_MESSAGES/djangojs.po
deleted file mode 100644
index cfdb73a..0000000
--- a/webapp/django/conf/locale/fi/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,119 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-18 02:12+0300\n"
-"PO-Revision-Date: 2006-08-05 15:27+0300\n"
-"Last-Translator: Ville Säävuori <ville@unessa.net>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Mahdolliset %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Valitse kaikki"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Lisää uusi"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Poista"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Valitut %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Valitse vasemmalta ja napsauta "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Tyhjennä kaikki"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Tammikuu Helmikuu Maaliskuu Huhtikuu Toukokuu Kesäkuu Heinäkuu Elokuu "
-"Syyskuu Lokakuu Marraskuu Joulukuu"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M T K T P L"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Sunnuntai Maanantai Tiistai Keskiviikko Torstai Perjantai Lauantai"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Näytä"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Piilota"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Nyt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Kello"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Valitse kellonaika"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "24"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "06"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "12"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Peruuta"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Tänään"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalenteri"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Eilen"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Huomenna"
diff --git a/webapp/django/conf/locale/fr/LC_MESSAGES/django.mo b/webapp/django/conf/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index e52b555..0000000
--- a/webapp/django/conf/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/fr/LC_MESSAGES/django.po b/webapp/django/conf/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index aedd95d..0000000
--- a/webapp/django/conf/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4405 +0,0 @@
-# translation of django.po to french
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-16 15:42+0100\n"
-"PO-Revision-Date: 2008-08-20 16:40+0300\n"
-"Last-Translator: Baptiste <baptiste.goupil_at_google_email.com>\n"
-"Language-Team: français <fr@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arabe"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Indien"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Bulgare"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "Catalan"
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "Tchèque"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "Gallois"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Dannois"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "Allemand"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "Grec"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "Anglais"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Espagnol"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Espagnol Argentin"
-
-#: conf/global_settings.py:51
-msgid "Basque"
-msgstr "Basque"
-
-#: conf/global_settings.py:52
-msgid "Persian"
-msgstr "Perse"
-
-#: conf/global_settings.py:53
-msgid "Finnish"
-msgstr "Finlandais"
-
-#: conf/global_settings.py:54
-msgid "French"
-msgstr "Français"
-
-#: conf/global_settings.py:55
-msgid "Irish"
-msgstr "Irlandais"
-
-#: conf/global_settings.py:56
-msgid "Galician"
-msgstr "Galicien"
-
-#: conf/global_settings.py:57
-msgid "Hungarian"
-msgstr "Hongrois"
-
-#: conf/global_settings.py:58
-msgid "Hebrew"
-msgstr "Hébreu"
-
-#: conf/global_settings.py:59
-msgid "Croatian"
-msgstr "Croate"
-
-#: conf/global_settings.py:60
-msgid "Icelandic"
-msgstr "Islandais"
-
-#: conf/global_settings.py:61
-msgid "Italian"
-msgstr "Italien"
-
-#: conf/global_settings.py:62
-msgid "Japanese"
-msgstr "Japonais"
-
-#: conf/global_settings.py:63
-msgid "Georgian"
-msgstr "Géorgien"
-
-#: conf/global_settings.py:64
-msgid "Korean"
-msgstr "Coréen"
-
-#: conf/global_settings.py:65
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:66
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:67
-msgid "Latvian"
-msgstr "Letton"
-
-#: conf/global_settings.py:68
-msgid "Macedonian"
-msgstr "Macédonien"
-
-#: conf/global_settings.py:69
-msgid "Dutch"
-msgstr "Hollandais"
-
-#: conf/global_settings.py:70
-msgid "Norwegian"
-msgstr "Norvégien"
-
-#: conf/global_settings.py:71
-msgid "Polish"
-msgstr "Polonais"
-
-#: conf/global_settings.py:72
-msgid "Portugese"
-msgstr "Portugais"
-
-#: conf/global_settings.py:73
-msgid "Brazilian"
-msgstr "Brésilien"
-
-#: conf/global_settings.py:74
-msgid "Romanian"
-msgstr "Roumain"
-
-#: conf/global_settings.py:75
-msgid "Russian"
-msgstr "Russe"
-
-#: conf/global_settings.py:76
-msgid "Slovak"
-msgstr "Slovaque"
-
-#: conf/global_settings.py:77
-msgid "Slovenian"
-msgstr "Slovaque"
-
-#: conf/global_settings.py:78
-msgid "Serbian"
-msgstr "Serbe"
-
-#: conf/global_settings.py:79
-msgid "Swedish"
-msgstr "Suédois"
-
-#: conf/global_settings.py:80
-msgid "Tamil"
-msgstr "Tamoul"
-
-#: conf/global_settings.py:81
-msgid "Telugu"
-msgstr "Télougou"
-
-#: conf/global_settings.py:82
-msgid "Turkish"
-msgstr "Turc"
-
-#: conf/global_settings.py:83
-msgid "Ukrainian"
-msgstr "Ukrainien"
-
-#: conf/global_settings.py:84
-msgid "Simplified Chinese"
-msgstr "Chinois simplifié"
-
-#: conf/global_settings.py:85
-msgid "Traditional Chinese"
-msgstr "Chinois traditionnel"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Par %s&nbsp;:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Tout"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Toutes les dates"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Aujourd'hui"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Les 7 derniers jours"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Ce mois-ci"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Cette année"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Oui"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Non"
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "heure de l'action"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "id de l'objet"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "représentation de l'objet"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "indicateur de l'action"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "message de modification"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "entrée d'historique"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "entrées d'historique"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Cette page n'a pas été trouvée"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Nous sommes désolés, mais la page demandée est introuvable."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Accueil"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Erreur du serveur"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Erreur du serveur (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Erreur du serveur <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Une erreur est survenue. Elle a été transmise par courriel aux "
-"administrateurs du site et sera corrigée dans les meilleurs délais. Merci de "
-"votre patience."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Bienvenue,"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentation"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Modifier votre mot de passe"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Déconnexion"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Site d'administration de Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administration de Django"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Ajouter"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "Historique"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Voir sur le site"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgstr "Veuillez corriger l'erreur ci-dessous."
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Tri"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Ordre :"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Ajouter %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Supprimer"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Supprimer l'objet %(object_name)s '%(escaped_object)s' provoquerait la "
-"suppression des objets qui lui sont liés mais votre compte ne possède pas la "
-"permission de supprimer les types d'objets suivants :"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Êtes vous certain de vouloir supprimer l'objet %(object_name)s \"%"
-"(escaped_object)s\" ? Les éléments suivant sont liés à celui-ci et seront "
-"aussi supprimés :"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Oui, j'en suis certain"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Par %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtre"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modèles disponibles dans l'application %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Modifier"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Vous n'avez pas la permission d'éditer quoi que ce soit."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Actions récentes"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Mes actions"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Aucun(e) disponible"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Quelque chose ne va pas avec votre base de données. Vérifiez que les bonnes "
-"tables ont été créées, et que la base est lisible par le bon utilisateur."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Nom d'utilisateur"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Mot de passe"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Connectez-vous"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Date/Heure"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Utilisateur"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Action"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Cet objet n'a pas d'historique de modification. Il n'a probablement pas été "
-"ajouté au moyen de ce site d'administration."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Tout montrer"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Envoyer"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgstr "1 résultat"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s résultats"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Sauver en tant que nouveau"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Sauver et ajouter un nouveau"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Sauver et continuer les modifications"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Sauver"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Entrez tout d'abord un nom d'utilisateur et un mot de passe. Vous pourrez "
-"ensuite modifier plus d'options."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Nom d'utilisateur"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Mot de passe"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Mot de passe (à nouveau)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Entrez le même mot de passe que précedemment, par sécurité."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Entrez un nouveau mot de passe pour l'utilisateur <strong>%(username)s</"
-"strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Signets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Documentation des signets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Pour installer des signets, faîtes glisser le lien vers\n"
-"votre barre de marques-pages, ou cliquez droit dessus et ajoutez-y le.\n"
-"Maintenant, vous pouvez le sélectionner depuis n'importe quelle page\n"
-"du site. Notez que certains d'entre eux nécessitent que vous visionniez\n"
-"le site depuis un ordinateur dit \"interne\" (veuillez contacter votre\n"
-"administrateur système si vous n'êtes pas sûr que votre ordinateur le soit)."
-"</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Documentation pour cette page"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Vous envoie de n'importe quelle page vers la documentation de la vue qui a "
-"généré cette page."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Afficher l'identifiant de l'objet"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Montre le content-type et l'identifiant unique pour les pages qui "
-"représentent un objet unique."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Editer cet objet (fenêtre courante)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Renvoie à la page d'administration qui représente un objet seul."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Editer cet objet (nouvelle fenêtre)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle "
-"fenêtre."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Merci pour le temps que vous avez accordé à ce site aujourd'hui."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Connectez vous à nouveau"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Modification de votre mot de passe"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Mot de passe modifié avec succés"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "Votre mot de passe a été modifié."
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Pour des raisons de sécurité, veuillez entrer votre ancien mot de passe puis "
-"saisissez deux fois votre nouveau mot de passe afin que nous puissions "
-"vérifier que vous l'avez tapé correctement."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Ancien mot de passe :"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Nouveau mot de passe :"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Confirmation du mot de passe"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Modifier mon mot de passe"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Réinitialisation de votre mot de passe"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Mot de passe réinitialisé avec succès"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Nous vous avons envoyé par courriel un nouveau mot de passe. Vous devriez le "
-"recevoir rapidement."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Vous recevez ce courriel car vous avez demandé un changement de mot de passe"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "pour votre compte au site %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Votre nouveau mot de passe est : %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Vous pouvez modifier ce mot de passe à l'adresse suivante :"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Votre nom d'utilisateur, en cas d'oubli :"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Merci d'utiliser notre site !"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "L'équipe %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Mot de passe perdu ? Saisissez votre adresse de courriel ci-dessous et nous "
-"annulerons votre mot de passe actuel avant de vous en faire parvenir un "
-"nouveau par courriel."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Courriel :"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Réinitialiser mon mot de passe"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Date :"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Heure :"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Actuellement :"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modification :"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Toutes les dates"
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "L'objet %(name)s \"%(obj)s\" a été ajouté avec succès."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Vous pouvez continuez de l'éditez ci-dessous."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Ajouter l'utilisateur"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Mot de passe modifié avec succés"
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Modifier le mot de passe : %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Veuillez saisir un nom d'utilisateur et un mot de passe valide. Remarquez "
-"que chacun de ces champs est sensible à la casse (différenciation des "
-"majuscules/minuscules)."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Veuillez vous reconnecter, car votre session a expiré. Ne vous inquiétez "
-"pas, votre soumission a été enregistrée."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Il semblerait que votre navigateur n'accepte pas les cookies. Veuillezles "
-"activer, recharger cette page, puis rééssayer."
-
-#: contrib/admin/views/decorators.py:90
-msgid "Usernames cannot contain the '@' character."
-msgstr "Les noms d'utilisateur ne peuvent contenir le caractère '@'"
-
-#: contrib/admin/views/decorators.py:92
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Votre courriel n'est pas votre nom d'utilisateur. Essayez '%s' à la place."
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "mot-clé :"
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "filtre :"
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "vue :"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "L'application %r n'a pas été trouvée."
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Le modèle %(name)r n'a pas été trouvé dans l'application %(label)r"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "l'objet `%(label)s.%(type)s` en relation "
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "modèle :"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "les objets `%(label)s.%(name)s` en relation"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "tous les %s"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "nombre de %s"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Champs sur les objets %s"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Entier"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Booléen (Vrai ou Faux)"
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Chaîne de caractère (jusqu'à %(max_length)s)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Des entiers séparés par une virgule"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Date (sans l'heure)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Date (avec l'heure)"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Nombre décimal"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "Courriel"
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Chemin vers le fichier"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Nombre à virgule flottante"
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "adresse IP"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Booléen (Vrai, Faux ou None)"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Relation au modèle parent"
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Numéro de téléphone"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Texte"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Heure"
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "État Américain (deux lettres majuscules)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "Texte XML"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ne semble pas être un objet urlpattern"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Gestion du site"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Vous pouvez ajouter un autre %s ci-dessous."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Ajouter %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Ajouté %s."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "et"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Modifié %s."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Supprimé %s."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Aucun champ modifié."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "L'objet %(name)s \"%(obj)s\" a été modifié avec succès."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"L'objet %(name)s \"%(obj)s\" a été ajouté avec succès.Vous pouvez continuez "
-"de l'éditez ci-dessous."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Changement %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Un ou plusieurs %(fieldname)s dans %(name)s : %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "L'objet %(name)s \"%(obj)s\" a été supprimé avec succès."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Êtes-vous sûr ?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Historique des changements : %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Sélectionnez %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Sélectionnez l'objet %s à changer"
-
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Erreur de base de données"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Les deux mots de passe ne correspondent pas."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Un utilisateur avec ce nom existe déjà."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Votre navigateur ne semble pas avoir activé les cookies. Les cookies sont "
-"nécessaire pour se connecter"
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Ce compte est inactif."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Cette adresse e-mail ne correspond à aucun compte utilisateur. Êtes-vous sûr "
-"de vous être enregistré ?"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Mot de passe réinitialisé le %s"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Les deux champs \"nouveau mot de passe\" ne correspondent pas."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Votre ancien mot de passe est incorrect. Veuillez le rectifier."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "nom"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "nom de code"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "permission"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "permissions"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "groupe"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
-msgid "groups"
-msgstr "groupes"
-
-#: contrib/auth/models.py:131
-msgid "username"
-msgstr "nom d'utilisateur"
-
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Requis. 30 caractères maximum, alphanumériques uniquement (lettres, "
-"chiffres, et tirets bas _)."
-
-#: contrib/auth/models.py:132
-msgid "first name"
-msgstr "prénom"
-
-#: contrib/auth/models.py:133
-msgid "last name"
-msgstr "nom"
-
-#: contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr "courriel"
-
-#: contrib/auth/models.py:135
-msgid "password"
-msgstr "mot de passe"
-
-#: contrib/auth/models.py:135
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Utilisez [algo]$[salt]$[hexdigest]' ou le <a href=\"password/\">formulaire "
-"de changement de mot de passe</a>."
-
-#: contrib/auth/models.py:136
-msgid "staff status"
-msgstr "statut équipe"
-
-#: contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration."
-
-#: contrib/auth/models.py:137
-msgid "active"
-msgstr "actif"
-
-#: contrib/auth/models.py:137
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Précise si l'utilisateur peut se connecter à l'administration. "
-"Déselectionnez ceci plutôt que supprimer le compte."
-
-#: contrib/auth/models.py:138
-msgid "superuser status"
-msgstr "statut super-utilisateur"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Précise que l'utilisateur possède toutes les permissions sans les assigner "
-"explicitement."
-
-#: contrib/auth/models.py:139
-msgid "last login"
-msgstr "dernière connexion"
-
-#: contrib/auth/models.py:140
-msgid "date joined"
-msgstr "date d'inscription"
-
-#: contrib/auth/models.py:142
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"En plus des permissions qui lui sont manuellement assignées, cet utilisateur "
-"recevra aussi toutes les permissions de tous les groupes auquels il "
-"appartient. "
-
-#: contrib/auth/models.py:143
-msgid "user permissions"
-msgstr "permissions de l'utilisateur"
-
-#: contrib/auth/models.py:147
-msgid "user"
-msgstr "utilisateur"
-
-#: contrib/auth/models.py:148
-msgid "users"
-msgstr "utilisateurs"
-
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Information personnelle"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Permissions"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Dates importantes"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Groupes"
-
-#: contrib/auth/models.py:316
-msgid "message"
-msgstr "message"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Déconnecté"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
-msgid "object ID"
-msgstr "ID de l'objet"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "titre"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
-msgid "comment"
-msgstr "commentaire"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "vote n°1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "vote n°2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "vote n°3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "vote n°4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "vote n°5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "vote n°6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "vote n°7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "vote n°8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "est un vote valide"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
-msgid "date/time submitted"
-msgstr "date et heure soumises"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
-msgid "is public"
-msgstr "est public"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "est supprimé"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Cochez cette case si le commentaire est inadéquat. Un message type \"Ce "
-"commentaire a été supprimé\" sera affiché en lieu et place de celui-ci."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "commentaires"
-
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
-msgid "Content object"
-msgstr "Type de contenu"
-
-#: contrib/comments/models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Posté par %(user)s à %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:178
-msgid "person's name"
-msgstr "nom de la personne"
-
-#: contrib/comments/models.py:181
-msgid "ip address"
-msgstr "adresse IP"
-
-#: contrib/comments/models.py:183
-msgid "approved by staff"
-msgstr "approuvé par l'équipe"
-
-#: contrib/comments/models.py:187
-msgid "free comment"
-msgstr "commentaire libre"
-
-#: contrib/comments/models.py:188
-msgid "free comments"
-msgstr "commentaires libres"
-
-#: contrib/comments/models.py:250
-msgid "score"
-msgstr "evaluation"
-
-#: contrib/comments/models.py:251
-msgid "score date"
-msgstr "date d'évaluation"
-
-#: contrib/comments/models.py:255
-msgid "karma score"
-msgstr "point de Karma"
-
-#: contrib/comments/models.py:256
-msgid "karma scores"
-msgstr "points de Karma"
-
-#: contrib/comments/models.py:260
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d évalué par %(user)s"
-
-#: contrib/comments/models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ce commentaire a été marqué par %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:285
-msgid "flag date"
-msgstr "date d'indicateur"
-
-#: contrib/comments/models.py:289
-msgid "user flag"
-msgstr "indicateur utilisateur"
-
-#: contrib/comments/models.py:290
-msgid "user flags"
-msgstr "indicateurs utilisateur"
-
-#: contrib/comments/models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "Indicateur par %r"
-
-#: contrib/comments/models.py:300
-msgid "deletion date"
-msgstr "date de suppression"
-
-#: contrib/comments/models.py:303
-msgid "moderator deletion"
-msgstr "suppression de modérateur"
-
-#: contrib/comments/models.py:304
-msgid "moderator deletions"
-msgstr "suppressions de modérateur"
-
-#: contrib/comments/models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Suppression de modérateur par %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Mot de passe oublié ?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Votes"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Requis"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Optionel"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Poster une photo"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Commentaire :"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Prévisualisation du commentaire"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Votre nom :"
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Ce vote est nécessaire car vous avez saisi au moins un autre vote."
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s "
-"commentaire :\n"
-"\n"
-"%(text)s"
-"Ce commentaire a été posté par un utilisateur qui a posté moins de %(count)s "
-"commentaires :\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ce commentaire a été posté par un utilisateur imprécis :\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Seuls les POSTs sont autorisés"
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Un ou plusieurs champs requis n'ont pas été remplis"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Quelqu'un a trafiqué le formulaire de commentaire (violation des règles de "
-"sécurité)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Ce formulaire de commentaire avait un paramètre cible invalide; "
-"l'identifiant de l'objet était invalide"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-"Le formulaire de commentaire ne proposait ni la prévisualisation ni l'envoi"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Les utilisateurs anonymes ne peuvent pas voter"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Identifiant de commentaire invalide"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Impossible de voter pour soi-même"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "nom du module python"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "type de contenu"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "types de contenu"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Par exemple : '/a_propos/contact/'. Vérifiez la présence du caractère '/' en "
-"début et en fin de chaine."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titre"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "contenu"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "autoriser les commentaires"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nom du template"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Par exemple: 'flatfiles/contact_page'. Sans définition, le système utilisera "
-"'flatfiles/default'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "enregistrement requis"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Si coché, seuls les utilisateurs connectés auront la possibilité de voir "
-"cette page."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "page statique"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "pages statiques"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "<sup>e</sup>"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "<sup>er</sup>"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "<sup>d</sup>"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "<sup>e</sup>"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgstr "%(value).1f million"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgstr "%(value).1f milliard"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgstr "%(value).1f billion"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "un"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "deux"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "trois"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "quatre"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "cinq"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "six"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "sept"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "huit"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "neuf"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "aujourd'hui"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "demain"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "hier"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Entrez un code postal au format NNNN ou ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Ce champ ne doit contenir que des nombres."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Ce champ requiert au 7 ou 8 chiffres."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-"Entrez un numéro CUIT (format XX-XXXXXXXX-X ou XXXXXXXXXXXX)."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT invalide."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Entrez un code postal Australien (4 chiffres)."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Entrez un code postal Brésilien (format XXXXX-XXX)."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Les numéros de téléphone doivent être au format XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Sélectionnez un etat·brésilien valide. Cet etat ne fait pas partie de ceux "
-"disponibles."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Numéro CPF invalide."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Ce champ requiert au plus 11 chiffres ou 14 caractères."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Numéro CNPJ invalide."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Ce champ requiert au minimum 14 chiffres."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Entrez un code postal au format XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Entrez un numéro de sécurité sociale Canadien (format XXX-XXX-XXX)."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Argovie"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Rhodes-Intérieures"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Rhodes-Extérieures"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Bâle-Ville"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Bâle-Campagne"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Genève"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glaris"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Grisons"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchâtel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwald"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwald"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhouse"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Suisse"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Soleure"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "Saint Gall"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thuringe"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Tessin"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zoug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Entrez un code postal Norvégien (format XXXX)."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Entrez un numéro de passeport ou de carte d'identité valide au format "
-"X1234567<0 ou 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Entrez un RUT Chilien valide."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Entrez un RUT Chilien valide (format XX.XXX.XXX-X)."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Ce RUT chilien est invalide."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Bade-Wurtemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavière"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandebourg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Brême"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hambourg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hess"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklembourg-Poméranie occidentale"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Basse Saxe"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Rhénanie-du-Nord-Westphalie"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhénanie-Palatinat"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Sarre"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxe"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxe-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thuringe"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Entrez un code postal (format XXXXX)."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Entrez un numéro de carte d'identité Allemand (format XXXXXXXXXXX-XXXXXXX-"
-"XXXXXXX-X)."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Álava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alicante"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almería"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Ávila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Îles Baléares"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelone"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Cáceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadix"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castellón"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Córdoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "La Corogne"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Gérone"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Grenade"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipúzcoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "León"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lérida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Málaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcie"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Orense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Ténérife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabrie"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Ségovie"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Séville"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragone"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valence"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Biscaye"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Saragosse"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalousie"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragon"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principauté des Asturies"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Îles Baléares"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Pays basque"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Îles Canaries"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castille-La Manche"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castille-et-León"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalogne"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Estrémadure"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galice"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Murcie"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Communauté valencienne"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Entrez un code postal dans la plage et au format 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr "Entrez un numero de téléphone au format 6XXXXXXXX, 8XXXXXXXX ou "
-"9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Veuillez entrer une adresse NIF, NIE ou CIF valide."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Entrez un NIF ou NIE valide."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Mauvais checksum pour NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Mauvais checksum pour NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Mauvais checksum pour CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Veuillez entrer un numéro de compte bancaire valide au format XXXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Mauvais checksum pour le numero de compte bancaire."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Entrez un numéro de sécurité sociale Finlandais."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Entrez un code postal au format XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Entrez un code postal islandais valide (format XXXXXX-XXXX)."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Le numéro d'identification Islandais est invalide."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Entrez un code postal valide."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Entrez un numéro valide de Sécurité Sociale."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Entrez une TVA valide."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Entrez un code postal Japonais (format XXXXXXX ou XXX-XXXX)."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaidō"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyōto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyōgo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Ōita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "District fédéral"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "État de Mexico"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Entrez un code postal valide."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Entrez un numero de telephone valide."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Entrez un numero SoFi valide."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drenthe"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Frise"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gueldre"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningue"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limbourg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Brabant-du-Nord"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Hollande-du-Nord"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overĳssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Hollande-Méridionale"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Entrez un numéro de sécurité sociale Norvégien."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Ce champ requiert 8 chiffres."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Ce champ requiert 11 chiffres."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "Le numéro national d'identification (NIN) comporte 11 chiffres."
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Mavais checksum pour le·\"National·Identification·Number\"."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Entrez un code NIP (impots) au format XXX-XXX-XX-XX ou XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Mavais checksum pour le \"Tax·Number\"·(NIP)."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "Le \"National·Business·Register·Number\"·(REGON) comporte 7 ou 9 chiffres."
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Mavais checksum pour le \"National·Business·Register·Number\"·(REGON)."
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Entrez un code postal  au format XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Basse-Silésie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Cujavie-Poméranie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Łódź"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Petite-Pologne"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Mazovie "
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Basses-Carpates"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlachie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Poméranie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silésie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Varmie-Mazurie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Grande-Pologne"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Poméranie Occidentale"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Entrez un code postal au format XXXXX ou XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banská Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banská Štiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Bánovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava·I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava·II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava·III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava·IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava·V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytča"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Čadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolný Kubín"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajská Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenné"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kežmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komárno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Košice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Košice·II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Košice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Košice·IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Košice–okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucké Nové Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoča"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovský Mikuláš"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lučenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Námestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nové Mesto nad Váhom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nové Zámky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizánske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piešťany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltár"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Považská Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Prešov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Púchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revúca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavská Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Rožňava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ružomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spišská Nová Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stará Ľubovňa"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidník"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Šaľa"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topoľčany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebišov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trenčín"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turčianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdošín"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Veľký Krtíš"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Topľou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlaté Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Žarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Žiar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Žilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Région de Banská Bystrica"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Région de Bratislava"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Région de Košice"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Prešov"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trenčín"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Žilina"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Entrez un code postal valide."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornouailles et les îles Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbrie"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "Sussex de l'Est"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Grand Londres"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Grand Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancastre"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "Yorkshire du Nord"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "Yorkshire du Su"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne et Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "Midlands de l'Ouest"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "Sussex de l'Ouest"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "Yorkshire de l'Ouest"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "Comté d'Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "Comté d'Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "Comté de Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "Comté de Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "Comté de Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "Comté de Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid·Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Centre"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orcades"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "îles Shetland"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Hébrides extérieures"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Angleterre"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Irlande du Nord"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Écosse"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Pays de Galles"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Entrez un code postal Américain (format XXXXX ou XXXXX-XXXX)."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Entrez un numéro de sécurité sociale Américain (format XXX-XX-XXXX)."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Entrez un numero d'identification sud-africain valide."
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Entrez un code postal sud-africain valide."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Cap-Oriental"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "État-Libre"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Cap-du-Nord"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "Nord-Ouest"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Cap-Occidental"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirigé depuis"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple: '/"
-"evenements/rechercher/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirigé vers"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète "
-"débutant par 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redirige"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redirige"
-
-#: contrib/sessions/models.py:41
-msgid "session key"
-msgstr "clé de session"
-
-#: contrib/sessions/models.py:42
-msgid "session data"
-msgstr "données de session"
-
-#: contrib/sessions/models.py:43
-msgid "expire date"
-msgstr "date d'expiration"
-
-#: contrib/sessions/models.py:48
-msgid "session"
-msgstr "session"
-
-#: contrib/sessions/models.py:49
-msgid "sessions"
-msgstr "sessions"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "nom de domaine"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "nom à afficher"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr "site"
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr "sites"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr ""
-"Ce champ ne doit contenir que des lettres, des nombres et destirets bas _."
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _,des "
-"traits d'union, et des '/'."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _et "
-"des traits d'union."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Les lettres majuscules ne sont pas autorisées ici."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Les lettres minuscules ne sont pas autorisées ici."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Saisissez uniquement des chiffres séparés par des virgules."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Entrez des adresses de courriel valides séparées par des virgules."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Entrez une adresse IP valide."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Vous ne pouvez pas laisser ce champ vide."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Les caractères non numériques ne sont pas autorisés ici."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Cette valeur ne peut pas être composé uniquement de chiffres."
-
-#: core/validators.py:128 newforms/fields.py:151
-msgid "Enter a whole number."
-msgstr "Entrez un nombre entier."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Seules les lettres de l'alphabet sont autorisées ici."
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "L'année doit être supérieure à 1900."
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Date invalide : %s"
-
-#: core/validators.py:156 db/models/fields/__init__.py:522
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Entrez une date valide au format AAAA-MM-JJ."
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Entrez une heure valide au format HH:MM."
-
-#: core/validators.py:165 db/models/fields/__init__.py:599
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM."
-
-#: core/validators.py:170 newforms/fields.py:402
-msgid "Enter a valid e-mail address."
-msgstr "Entrez une adresse de courriel valide."
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Aucun fichier n'a été soumis. Vérifiez le type d'encodage du formulaire."
-
-#: core/validators.py:193 newforms/fields.py:458
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Envoyez une image valide. Le fichier que vous avez transferé n'est pas une "
-"image ou bien est corrompu."
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "L'URL %s ne pointe pas vers une image valide."
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Les numéros de téléphone doivent être au format XXX-XXX-XXXX. \"%s\" est "
-"incorrect."
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "L'URL %s ne pointe pas vers une vidéo QuickTime valide."
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr "Une URL valide est requise."
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Du HTML valide est requis. Les erreurs sont les suivantes :\n"
-"%s"
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formé : %s"
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL invalide : %s"
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "L'URL %s est un lien cassé."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Entrez une abréviation d'État Américain valide."
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgstr "Attention à votre langage ! Le mot %s n'est pas autorisé ici."
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Ce champ doit correspondre au champ '%s'."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Veuillez saisir quelque chose dans au moins un des champs."
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr ""
-"Veuillez renseigner les deux champs ou les laisser tous les deux vides."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Ce champ doit être renseigné si %(field)s vaut %(value)s"
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Ce champ doit être renseigné si %(field)s ne vaut pas %(value)s"
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Les valeurs identiques ne sont pas autorisées."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Cette valeur doit être comprise entre %(lower)s et %(upper)s."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Cette valeur doit être au moins %s."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Cette valeur ne doit pas dépasser %s."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Cette valeur doit être une puissance de %s."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Veuillez saisir un nombre décimal valide."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-"Please enter a valid decimal number with at most %s total digits."
-msgstr "Veuillez saisir un nombre décimal valide avec au plus %s chiffre."
-"Veuillez saisir un nombre décimal valide avec au plus %s chiffres."
-
-#: core/validators.py:447
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr ""
-"Veuillez saisir un nombre décimal valide avec une partie entière de %s "
-"chiffre au plus."
-"Veuillez saisir un nombre décimal valide avec une partie entière de %s "
-"chiffres au plus."
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr "Veuillez saisir un nombre décimal valide avec au plus %s chiffre après la virgiule."
-"Veuillez saisir un nombre décimal valide avec au plus %s chiffres après la virgiule."
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Veuillez entrer un nombre à virgule flottante valide."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Vérifiez que le fichier transféré fait au moins %s octets."
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Vérifiez que le fichier transféré fait au plus %s octets."
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "Le format de ce champ est mauvais."
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "Ce champ est invalide."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Impossible de récupérer quoi que ce soit depuis %s."
-
-#: core/validators.py:539
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"L'entête Content-Type '%(contenttype)s', renvoyée par l'url %(url)s n'est "
-"pas valide."
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Veuillez fermer le tag %(tag)s à la ligne %(line)s. (Ligne débutant par \"%"
-"(start)s\".)"
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Du texte commençant à la ligne %(line)s n'est pas autorisé dans ce contexte. "
-"(Ligne débutant par \"%(start)s\".)"
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne débutant "
-"par \"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne débutant par \"%"
-"(start)s\".)"
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. "
-"(Ligne débutant par \"%(start)s\".)"
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"La valeur de l'attribut \"%(attr)s\" de la ligne %(line)s n'est pas valide. "
-"(Ligne débutant par \"%(start)s\".)"
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s·de ce·%(type)s·existent déjà pour le %(field)s données."
-
-#: db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s avec le champ %(fieldname)s existe déjà."
-
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:322
-#: db/models/fields/__init__.py:754 db/models/fields/__init__.py:765
-#: newforms/fields.py:45 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Ce champ est obligatoire."
-
-#: db/models/fields/__init__.py:422
-msgid "This value must be an integer."
-msgstr "Cette valeur doit être un entier."
-
-#: db/models/fields/__init__.py:461
-msgid "This value must be either True or False."
-msgstr "Cette valeur doit être soit Vraie soit Fausse."
-
-#: db/models/fields/__init__.py:485
-msgid "This field cannot be null."
-msgstr "Ce champ ne peut pas être vide."
-
-#: db/models/fields/__init__.py:663
-msgid "This value must be a decimal number."
-msgstr "Cette valeur doit être un nombre décimal."
-
-#: db/models/fields/__init__.py:774
-msgid "Enter a valid filename."
-msgstr "Entrez un nom de fichier valide."
-
-#: db/models/fields/__init__.py:945
-msgid "This value must be either None, True or False."
-msgstr "Cette valeur doit être Nulle, Vraie ou Fausse."
-
-#: db/models/fields/related.py:93
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Entrez un %s valide."
-
-#: db/models/fields/related.py:694
-msgid "Separate multiple IDs with commas."
-msgstr "Séparez les ID par des virgules."
-
-#: db/models/fields/related.py:696
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Maintenez \"Contrôle (ctrl)\", ou \"Commande (touche pomme)\" sur un Mac, "
-"pour en sélectionner plusieurs."
-
-#: db/models/fields/related.py:743
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr "Entrez un ID %(self)s valide. La valeur %(value)r est invalide."
-"Entrez des ID %(self)s valides. Les valeurs %(value)r sont invalides."
-
-#: newforms/fields.py:46
-msgid "Enter a valid value."
-msgstr "Entrez une valeur valide."
-
-#: newforms/fields.py:123
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Assurez-vous que cette valeur fait moins de %(max)d caractères (il fait actuellement %(length)d caractères)."
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Assurez-vous que cette valeur fait plus de %(min)d caractères (il fait actuellement %(length)d caractères)."
-
-#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Assurez-vous que cette valeur soit inférieure ou égale à %s."
-
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Assurez-vous que cette valeur soit supérieure ou égale à %s."
-
-#: newforms/fields.py:180 newforms/fields.py:209
-msgid "Enter a number."
-msgstr "Entrez un nombre."
-
-#: newforms/fields.py:212
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres au total."
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres après la virgule."
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres avant la virgule."
-
-#: newforms/fields.py:262 newforms/fields.py:723
-msgid "Enter a valid date."
-msgstr "Entrez une date valide."
-
-#: newforms/fields.py:295 newforms/fields.py:724
-msgid "Enter a valid time."
-msgstr "Entrez une heure valide."
-
-#: newforms/fields.py:334
-msgid "Enter a valid date/time."
-msgstr "Entrez une date et une heure valides."
-
-#: newforms/fields.py:433
-msgid "No file was submitted."
-msgstr "Aucun fichier n'a été soumis."
-
-#: newforms/fields.py:434 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Le fichier soumis est vide."
-
-#: newforms/fields.py:496
-msgid "Enter a valid URL."
-msgstr "Entrez une URL valide."
-
-#: newforms/fields.py:497
-msgid "This URL appears to be a broken link."
-msgstr "Cette URL semble être cassée."
-
-#: newforms/fields.py:559 newforms/models.py:300
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux "
-"disponibles."
-
-#: newforms/fields.py:598
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Sélectionnez un choix valide. %(value)s n'en fait pas partie."
-
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:360
-msgid "Enter a list of values."
-msgstr "Entrez une liste de valeurs."
-
-#: newforms/fields.py:752
-msgid "Enter a valid IPv4 address."
-msgstr "Entrez une adresse IPv4 valide."
-
-#: newforms/models.py:361
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Sélectionnez un choix valide; %s n'en fait pas partie."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgstr "Assurez-vous que votre texte fait moins de %s caractère."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Les retours à la ligne ne sont pas autorisés ici."
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Sélectionnez un choix valide ; '%(data)s' n'est pas dans %(choices)s."
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Entrez un nombre entier entre -32 768 et 32 767."
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Entrez un nombre entier positif."
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Entrez un nombre entier entre 0 et 32 767."
-
-#: template/defaultfilters.py:695
-msgid "yes,no,maybe"
-msgstr "oui, non, peut-être"
-
-#: template/defaultfilters.py:726
-#, python-format
-msgid "%(size)d byte"
-msgstr "%(size)d octet"
-
-#: template/defaultfilters.py:728
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f Ko"
-
-#: template/defaultfilters.py:730
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f Mo"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f Go"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "après-midi"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "matin"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "Après-midi"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "Matin"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "minuit"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "midi"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "lundi"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "mardi"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "mercredi"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "jeudi"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "vendredi"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "samedi"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "dimanche"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "jeu"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ven"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sam"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dim"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "janvier"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "février"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "avril"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "juin"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "juillet"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "août"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "septembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "octobre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "décembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "fév"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "avr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jui"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "août"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "déc"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "fév."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "août"
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "oct."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "déc."
-
-#: utils/text.py:127
-msgid "or"
-msgstr "ou"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "année"
-msgstr[1] "années"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mois"
-msgstr[1] "mois"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "semaine"
-msgstr[1] "semaines"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "journée"
-msgstr[1] "journées"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "heure"
-msgstr[1] "heures"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgstr "minute"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutes"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:403
-msgid "DATE_FORMAT"
-msgstr "j F Y"
-
-#: utils/translation/trans_real.py:404
-msgid "DATETIME_FORMAT"
-msgstr "j F Y, G:i"
-
-#: utils/translation/trans_real.py:405
-msgid "TIME_FORMAT"
-msgstr "G:i:s"
-
-#: utils/translation/trans_real.py:421
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:422
-msgid "MONTH_DAY_FORMAT"
-msgstr "j F"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "L'objet %(verbose_name)s a été créé avec succès."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "L'objet %(verbose_name)s a été mis à jour avec succès."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "L'objet %(verbose_name)s a été supprimé."
-
-#~ msgid ""
-#~ "Enter a postcode. A space is required between the two postcode parts."
-#~ msgstr ""
-#~ "Entrez un code postal Anglais. Un espace est requis entre les deux "
-#~ "parties."
-
-#~ msgid "%d milliseconds"
-#~ msgstr "%d millisecondes"
-
-#~ msgid "AnonymousUser"
-#~ msgstr "Anonyme"
-
-#~ msgid "One or more %(fieldname)s in %(name)s :"
-#~ msgstr "Un ou plusieurs %(fieldname)s dans %(name)s :"
-
-#~ msgid "%dth"
-#~ msgstr "%de"
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr ""
-#~ "Avez vous <a href=\"/password_reset/\">perdu votre mot de passe</a>?"
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Utilisez '[algo]$[salt]$[hexdigest]'"
-
-#~ msgid "Comment"
-#~ msgstr "Commentaire"
-
-#~ msgid "Comments"
-#~ msgstr "Commentaires"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "Chaîne de caractères (jusqu'à 50)"
-
-#~ msgid "label"
-#~ msgstr "intitulé"
-
-#~ msgid "package"
-#~ msgstr "paquetage"
-
-#~ msgid "packages"
-#~ msgstr "paquetages"
-
-#~ msgid "Messages"
-#~ msgstr "Messages"
diff --git a/webapp/django/conf/locale/fr/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/fr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 33e5087..0000000
--- a/webapp/django/conf/locale/fr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/fr/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/fr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index ce457d4..0000000
--- a/webapp/django/conf/locale/fr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,109 +0,0 @@
-# French translation for js. 
-# Copyright (C) 2005 Mikaël Barbero 
-# This file is distributed under the same license as the PACKAGE package. 
-# 
-msgid "" 
-msgstr "" 
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n" 
-"POT-Creation-Date: 2005-12-24 16:39+0100\n" 
-"PO-Revision-Date: 2005-12-24 16:39+0100\n" 
-"Last-Translator: Mikaël Barbero <mikael.barbero nospam at nospam free.fr>\n" 
-"Language-Team: French <fr@li.org>\n" 
-"MIME-Version: 1.0\n" 
-"Content-Type: text/plain; charset=UTF-8\n" 
-"Content-Transfer-Encoding: 8bit\n" 
-
-#: contrib/admin/media/js/calendar.js:24 
-#: contrib/admin/media/js/dateparse.js:26 
-msgid "" 
-"January February March April May June July August September October November " 
-"December" 
-msgstr "" 
-"Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre " 
-"Décembre" 
-
-#: contrib/admin/media/js/calendar.js:25 
-msgid "S M T W T F S" 
-msgstr "D L M M J V S" 
-
-#: contrib/admin/media/js/dateparse.js:27 
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" 
-msgstr "Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi" 
-
-#: contrib/admin/media/js/SelectFilter2.js:33 
-#, perl-format 
-msgid "Available %s" 
-msgstr "%s disponible(s)" 
-
-#: contrib/admin/media/js/SelectFilter2.js:41 
-msgid "Choose all" 
-msgstr "Tout choisir" 
-
-#: contrib/admin/media/js/SelectFilter2.js:46 
-msgid "Add" 
-msgstr "Ajouter" 
-
-#: contrib/admin/media/js/SelectFilter2.js:48 
-msgid "Remove" 
-msgstr "Enlever" 
-
-#: contrib/admin/media/js/SelectFilter2.js:53 
-#, perl-format 
-msgid "Chosen %s" 
-msgstr "%s choisi(es)" 
-
-#: contrib/admin/media/js/SelectFilter2.js:54 
-msgid "Select your choice(s) and click " 
-msgstr "Sélectionnez un ou plusieurs choix et cliquez " 
-
-#: contrib/admin/media/js/SelectFilter2.js:59 
-msgid "Clear all" 
-msgstr "Tout enlever" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 
-msgid "Now" 
-msgstr "Maintenant" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48 
-msgid "Clock" 
-msgstr "Horloge" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77 
-msgid "Choose a time" 
-msgstr "Choisir une heure" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81 
-msgid "Midnight" 
-msgstr "Minuit" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82 
-msgid "6 a.m." 
-msgstr "6:00" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83 
-msgid "Noon" 
-msgstr "Midi" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168 
-msgid "Cancel" 
-msgstr "Annuler" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111 
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162 
-msgid "Today" 
-msgstr "Aujourd'hui" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114 
-msgid "Calendar" 
-msgstr "Calendrier" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160 
-msgid "Yesterday" 
-msgstr "Hier" 
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164 
-msgid "Tomorrow" 
-msgstr "Demain"
diff --git a/webapp/django/conf/locale/ga/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 6a28961..0000000
--- a/webapp/django/conf/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ga/LC_MESSAGES/django.po b/webapp/django/conf/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index d05c387..0000000
--- a/webapp/django/conf/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4444 +0,0 @@
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-14 10:20+0100\n"
-"PO-Revision-Date: 2008-08-14 14:46+0100\n"
-"Last-Translator: Michael Thornhill <michael@maithu.com>\n"
-"Language-Team: Gaeilge <ga@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Arabach"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Beangáilis"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Bulgárach"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "Catalóinis"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Seiceach"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Breatnach"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Dainmhairgis"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Gearmánach"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Gréigis"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Béarla"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Spáinneach"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "Eastóinis"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Spáinnis Airgintín"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "Bascais"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "Peirsis"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "Fionlainnis"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "Francach"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "Gaeilge"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "Gailísis"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "Ungáiris"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "Eabhrach"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "Cróitis"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "Mórlainnis"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "Iodáilis"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "Seapáinis"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "Seoirseach"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "Cóiréis"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "Ciméiris"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "Cannadais"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "Laitvis"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "Liotuáinis"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "Macadóinis"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "Ollannach"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "Ioruais"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "snas"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "Portaingéileach"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "Brasaíleach"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "Rómáinis"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "Rúiseach"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "Slóvaicis"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "Slóivéinis"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "Seirbiach"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "Sualainnis"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "Tamailis"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "Teileagúis"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "Tuircis"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "Úcráinis"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "Sínis"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "Sínis Tradisúinta"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Trí %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Gach"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Aon dáta"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Inniu"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "7 lá a chuaigh thart"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Táim cinnte"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "An blian seo"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Tá"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Níl"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Gan aithne"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "am aicsean"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "id oibiacht"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "repr oibiacht"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "brat an aicsean"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "teachtaireacht athrú"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "loga iontráil"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "loga iontrálacha"
-
-#: contrib/admin/options.py:143 contrib/admin/options.py:202
-msgid "None"
-msgstr "Dada"
-
-#: contrib/admin/options.py:407
-#, python-format
-msgid "Changed %s."
-msgstr "Athraithe %s"
-
-#: contrib/admin/options.py:407 contrib/admin/options.py:417
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "agus"
-
-#: contrib/admin/options.py:412
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Suimithe %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:416
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Athraithe %(list)s le %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:421
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Scriosaithe %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:425
-msgid "No fields changed."
-msgstr "Dada réimse aithraithe"
-
-#: contrib/admin/options.py:486 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Bhí  %(name)s \"%(obj)s\" breisithe go rathúil"
-
-#: contrib/admin/options.py:490 contrib/admin/options.py:523
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Is féidir leat é a cuir in eagar thíos."
-
-#: contrib/admin/options.py:500 contrib/admin/options.py:533
-#, python-format
-msgid "You may add another %s below."
-msgstr "Is féidir le ceann eile %s a cuir le thíos."
-
-#: contrib/admin/options.py:521
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Bhí an %(name)s \"%(obj)s\" aithraithe to rathúil"
-
-#: contrib/admin/options.py:529
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Chuir an %(name)s·\"%(obj)s\"·go rathúil.·Is féidir leat é a cuir in eagar "
-"thíos."
-
-#: contrib/admin/options.py:596
-#, python-format
-msgid "Add %s"
-msgstr "Cuir %s le"
-
-#: contrib/admin/options.py:673
-#, python-format
-msgid "Change %s"
-msgstr "Aithrigh %s"
-
-#: contrib/admin/options.py:704
-msgid "Database error"
-msgstr "Botún bunachar sonraí"
-
-#: contrib/admin/options.py:753
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Bhí %(name)s \"%(obj)s\" scrioste go rathúil."
-
-#: contrib/admin/options.py:760
-msgid "Are you sure?"
-msgstr "An bhfuil tú cinnte?"
-
-#: contrib/admin/options.py:787
-#, python-format
-msgid "Change history: %s"
-msgstr "Athraigh stáir %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Le do thoil, iontráil aihm úsaideora agus focal faire ceart. Bí cúramach go "
-"bhfuil an beirt acu cásíogair."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Le do thoil, logáil isteach arís cé go bhfuil to seisúin críochnaithe.  Ná "
-"bí imní ort, tá do iarratas sabháilte."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Feictear nach bhfuil do brabhsálaí réidh le cuaiche a glacadh. Le do thoil, "
-"cumasaigh cuaiche, athlódáil an leathanach seo, agus déan iarracht arís."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Níl an carachtar '@' ceadaithe in ainmeacha úsaideora."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Níl do ríomhseoladh do ainm úsaideora. Bain trial as '%s'."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Riaracháin an suíomh"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Logáil isteach"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Ceann amhain nó níos mó  %(fieldname)s in %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ceann amhain nó níos mó  %(fieldname)s in %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Dáta:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Am:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Ag an am seo."
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Athraigh:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Ní bhfuarthas an leathanach"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Tá brón orainn, ach ní bhfuarthas an leathanach iarraite."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Baile"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Botún freastalaí"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Botún freastalaí (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Botún Freastalaí <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Bhí botún. Seolah é go dtí riarthóirí an suíomh agus beidh sé ceartaithe i "
-"gceann tamallín. Go raibh maith agat le hadhaigh do foighne."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Fáilte"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Doiciméadúchán"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Athraigh focal faire"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Logáil amach"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Riarthóir suíomh Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Riarachán Django"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Cuir le"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Stair"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Breath ar suíomh"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Le do thoil ceartaigh an botún thíos."
-msgstr[1] "Le do thoil ceartaigh na botúin thíos."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Cuir %(name)s le"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Scagaire"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Cealaigh"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Má scriossan tú  %(object_name)s '%(escaped_object)s' scriosfaidh oibiachtí "
-"gaolta. Ach níl cead ag do cuntas na oibiacht a leanúint a scriosadh:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"An bhfuil tú cinnte na  %(object_name)s \"%(escaped_object)s\" a scroiseadh?"
-"Beidh gach oibiacht a leanúint scroiste freisin:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Táim cinnte"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Trí %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Samhla ar fáil ins an feidhmchlár %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Athraigh"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Níl cead agat aon rud a cuir in eagar."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Aicsean úrnua"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mo Aicseain"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Dada ar fáil"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Tá rud éigin mícheart le suitéail do bunachar sonraí.  Déan cinnte go bhfuil "
-"boird an bunachar sonraI cruthaithe cheana, agus déan cinnte go bhfuil do "
-"úsaideoir in ann an bunacchar sonraí a léamh."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Ainm úsaideor:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Focal faire:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Dáta/am"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Úsaideoir"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Aicsean"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "DATE_WITH_TIME_FULL"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Níl stáir aitraithe ag an oibiacht seo agús is dócha ná cuir le tríd an an "
-"suíomh riarachán."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Taispéan gach rud"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Té"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "toradh 1"
-msgstr[1] "1 toradh"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s iomlán"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Sabháil mar nua"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Sabháil agus cuir le ceann eile"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Sábhail agus lean ag cuir in eagar"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Sábháil"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Ar dtús, iontráil ainm úsaideoir agus focal faire.  Ansin, beidh tú in ann "
-"cuir in eagar níos mó roghaí úsaideoira."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Ainm úsaideoir"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Focal faire"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Focal faire (arís)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Iontráíl an focal faire céanna mar thuas, le fíorúchán."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Iontráil focal faire nua le hadhaigh an úsaideor <strong>%(username)s</"
-"strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Go raibh maith agat le hadhaigh do cuairt ar an suíomh idirlínn inniú."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logáil isteacj arís"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Athrú focal faire"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Athrú an focal faire rathúil"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Bhí do focal faire aithraithe."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Le do thoil, iontráil do sean-focal faire, ar son slándáil, agus ansin "
-"iontráil do focal faire dhá uaire cé go mbeimid in ann a seiceal go bhfuil "
-"sé scríobhte isteach i gceart."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Sean-focal faire"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Focal faire nua:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Deimhnigh focal faire:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Athraigh mo focal faire"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Athsocraigh focal faire"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Athshocraigh an focal faire críochnaithe"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Tá do focal faire réidh.  Is féidir leat logáil isteach anois."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Deimhniú athshocraigh focal faire"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Cuir isteach focal faire nua"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Le do thoil, iontráil do focal faire dhá uaire cé go mbeimid in ann a "
-"seiceal go bhfuil sé scríobhte isteach i gceart."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Athshocraigh focal faire mí-rathúil"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Bhí nasc athshocraigh an focal faire mícheart, b'fheidir mar go raibh sé "
-"úsaidte cheana.  Le do thoil, iarr ar athsocraigh focal faire nua."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Athshocraigh focal faire mí-rathúil"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Seolamar teagasca chugat le hadhaigh do r-phost a úsaid mar to focal faire.  "
-"Gheobaidh tú an r-phost i gceann tamallín."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Tá tú ag fáil an r-phost seo mar iarr tú ar athshocraigh an focal faire."
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "Le do cuntas úsaideor ar %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Le do thoil té go dtí an leathanach a leanúint agus roghmaigh focal faire "
-"nua:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Do ainm úsaideoir, má tá dearmad déanta agat."
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Go raibh maith agat le hadhaigh do cuairt!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Foireann an %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Dearmad déanta ar do focal faire? Iontráil do r-phost thíos agus seolfaimid "
-"teagasca chun ceann nua a fháil."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "R-phost:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Athsocraigh mo focal faire"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Gach dáta"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Roghnaigh %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Roghnaigh %s a athrú"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "suíomh"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "teimpléad"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "clib:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "scag:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "radharc:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Ní bhfuarthas feidhmchlár %r "
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Ní bhfuarthas samhail %(model_name)r  i bhfeidhmclár %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "An oibiacht gaolmhara `%(app_label)s.%(data_type)s`"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "samhail:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "Oibiachtí gaolmhara `%(app_label)s.%(object_name)s`"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "gach %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "líon %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Réimse ar oibiachtí %s"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Slánuimhir"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Boole"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Teaghrán (suas go %(max_length)s)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Slánuimhireacha camóg-scartha"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Dáta (gan am)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Dáta (le am)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Uimhir deachúlach"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "R-phost"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Conair comhaid"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Snámhphointe"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "Seol IP"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Boole (Fíor, Bréagach nó Dada)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Cine do samhail máthair"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Uimhir telefón"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "téacs"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "am"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S. stát (dhá litreacha móra)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "Téacs XML"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "Feiceann sé nach bhfuil %s oibiacht urlpattern"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Leabharmharcín"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Leabharmharcín doiciméadúchán"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Chun leabharmarcín a suitéal, Tarraing an nasc go dtí do barra uirlisí leabhairmairc\n, nó deaschliceáil and nasc agus cuir leis do leabharmairc.  Anois is féidir\n"
-"leat an leabharmarcín a roghnaigh ón aon leathanach ar an suíomh.  Bí cúramach go dteastaíonn cuid de na leabharmarcín go bhfuil tú ag féachaint ar an suíomh ó ríomhaire inmheánach\n(leabhar le do riarthóir córais muna bhfuil tú cinnte).</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Doiciméadúchán le hadhaigh an leathanach seo"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Tógann se tusa ón aon leathanach go dtí an doiciméadúchán le hadhaigh an "
-"radharc a rinne an leathanach."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Taispéain oibiacht ID"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Taispéain an content-type agus ID uathúil le leathanaigh le hadhaigh "
-"oibiacht amháin."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Cuir in eagar an oibiacht seo (fuinneog láthair)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Léimeann go dtí an leathanach riaracháin le leathainaigh le hadhaigh "
-"oibiacht amháin."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Cuir in eagar an oibiacht seo (fuinneog nua)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Mar thuas, ach osclaíonn sé an leathanach riarachán if fuinneog nua"
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Eolas pearsantach"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Ceada"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Dáta tábhactach"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Grúpa"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Cuir úsaideoir le"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Focal faire aithraithe rathúil"
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Athraigh focal faire: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "Riachtanach. 30 carachtair nó níos lú. Alfa-uimhriúil amhain (litreacha, digite agus fostríce)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Cathaigh litreacha, digite agus fostríce amhain le hadhaigh an méid seo."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Focal faire deimhniú"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "In ann do úsáideoir leis an ainm úsáideora."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "Níl an dá focla faire comhoiriúnigh"
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Tá an cuntas seo neamhghníomhach."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-""
-"Feictear nach bhfuil do brabhsálaí réidh le cuaiche a glacadh. Tá cuaiche ag teastail le logáil isteach."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "R-phost"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Níl cuntas in éineacht leis an r-phost sin. An bhfuil tú cinnte go bhfuil tú cláraithe?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Athsocraigh focal faire ar %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Focal faire nua"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Deimnhiú focal faire nua"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Sean-focal faire "
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Cuireadh do sean-focal faire isteach go mícheart. Iontráil isteach é arís."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "ainm"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "Ainm cód"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "cead"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "ceada"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "grúpa"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "grúpa"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "Ainm úsáideoir"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "ainm baiste"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "sloinne"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "seoladh r-phost"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "focal faire"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Úsáid '[algo]$[salt]$[hexdigest]' nó <a href=\"password/\">athraigh focal faire foirm</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "stádas foirne"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Sainigh an bhfuil cead ag an úsáideoir logáil isteach go dtí an suíomh riaracháin seo."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "gníomhach"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr "Sainíonn an bhfuil an úsáideoir gníomhach. Míroghnaigh seo in aineonn de scriseadh cuntasí."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "stádas forúsáideoir"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Sainíonn go bhfuil gach ceada ag an úsáideoir seo gan iad a cur le go díreach."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "logáil deirneach"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "Dáta teacht isteach"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "Breis leis na ceada sannta láimhe, faigheann an úsáideoir seo gach ceada sannta do na grúpaí a bhfuil sé/sí isteach in."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "ceada úsáideoira"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "úsáideoir"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "úsáideora"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "teachtaireacht"
-
-#: contrib/auth/views.py:52
-msgid "Logged out"
-msgstr "Logáilte amach"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "oibiacht ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "ceannlíne"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "trácht"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "rátáil #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "rátáil #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "rátáil #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "rátáil #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "rátáil #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "rátáil #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "rátáil #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "rátáil #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "is rátáil bailí"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "Dáta/am curtha isteach"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "poiblí"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "Scrioste"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Seic an bosca seo dá bbéadh an nóta tráchta seo míchuí. Taispeantar \"Bhí an nóta tráchta scrioste\" in áit an nóta tráchta seo."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "nótaí tráchta"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Oibiacht inneachar"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postáilte trí %(user)s ar %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "Ainm"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "seoladh ip"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "ceadaithe tríd an foireann"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "Nóta tráchta saor"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "Nótaí tráchtaí saoire"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "scór"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "Dáta scór"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "Scór karma"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "Scóra karma"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d rátailte trí  %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Bhí bratach curtha leis an nóta tráchta seo trí %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "Dáta brait"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "Brat úsáideoir"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "Brait úsáideoira"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Cuir brat leis roimh %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "Dáta scrioseadh"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "Scroiseadh modhnóir"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "Scrios modhnóra"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Scrios modhnóir trí %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Dearmad déanta ar do focal faire?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Rátála"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Riachtanach"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Roghnach"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Post griangraf"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Nóta tráchta"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Nóta tráchta réamhamharc"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Do chuid ainm:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Tá an rátáil seo ag teastail mar cuir tú rátáil amhain eile isteach ar a laghad."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Bhí an nóta tráchta póstailte trí úsáideoir a cuir níos lú ná %(count)s nótaí tráchtaí\n"
-"\n"
-"%(text)s"
-"Bhí an nóta tráchta póstailte trí úsáideoir a cuir níos lú ná %(count)s nótaí tráchtaí\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr "Bhí an nóta tráchta póstailte trí úsáideoir ait \n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "POSTs amhain ceadaithe"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Níor curtha isteach ceann amhain nó níos mó de na réimse riachtanach"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Cuir duine éigin isteach leis an foirm nóta tráchta (fadbh slándála)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Bhí paraiméadar targaid mícheart ag an foirm nóta tráchta -- bhí ID an oibiacht neamhbhailí"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Níor sholáthair an foirm nóta tráchta 'réamhamharc' nó 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Níl cead ag úsáideoira anaithnid vótáil"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Nóta tráchta ID neamhbhailí"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Vótáil leat féin coiscthe"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "píotón samhail aicme ainm"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tíopa inneachar "
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "tíopaI inneachair"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Sampla '/about/contact/' Déan cinnte go bhfuil príomhslaid agus cúlslais agat."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "Níl ach litreacha, uimhreacha, slaiseacha, fólíniú agus daiseanna ceadaithe."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Ard-rogha"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "teideal"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "suaimhneach"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "Cuir nótaí tráchta ar chumas"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "ainm an teimpléid"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Sampla: 'flatpages/contact_page.html'. Muna bhfuil sé ar soláthair, bainfidh an córás úsáid as 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "clárúchán riachtanach"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Dá mbéadh é seo seicailte, ní beidh ach úsáideora logáilte isteach in ann an leathanach seo a fheiceail"
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "leacleathanach"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "leacleathanaigh"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Ní soláthair méid geoiméadracht"
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Méid geoiméadracht neamhbhailí"
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Tíopa geoiméadracht neamhbhailí"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "ú"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "ú"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "ú"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "ú"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgstr "%(value).1f milliún"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgstr "%(value).1f billiún"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgstr "%(value).1f trilliún"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "aon"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "dó"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "trí"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "ceathair"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "cúig"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "sé"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "seacht"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "ocht"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "naoi"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "inniu"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "amárach"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "inné"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Cuir isteach cód póstal ins an formáid NNNN nó ANNNNAAA"
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Teastaíonn an réimse seo uimhreacha amháin."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Teastaíonn an réimse seo 7 nó 8 digite."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Cuir isteach CUIT bailí i formáid XX-XXXXXXXX-X nó XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT neamhbailí"
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Carinthia"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "An Ostair íochtarach"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "An Ostair uachtarach"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburg"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Styria"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tyrol"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Tyrol"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Vín"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Cuir isteach cód zip ins an formáid XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "An Ghinéiv"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Beirlín"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Sasana"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Tuaisceart Éireann"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Albain"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "An Bhreatain Bheag"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Saorstát"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "Iarthuaisceart"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "atreoraigh ó"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Teastaíonn dearbhchosán gan ainm fearainn. Sampla '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "atreoraigh go dtí"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "Is féidir dearbhchosán nó URL lán ag tosnú le 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "athsheol"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "atreoraithe"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "eochair an seisiún"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "sonraíocht an seisiún"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "Data dul as feidhm"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "seisiún"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "seisúin"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "ainm fearainn"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "ainm taispeáinta"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "suíomhanna"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Níl ach litreacha, uimhreacha, fílínta agus daiseanna ceadaithe."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Níl cás uachtair ceadaithe anseo."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Nil cás íochtair ceadaithe anseo."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Cuir isteach digite amháin anseo scartha le camóg."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Cuir isteach r-phostanna bailí scartha le camóige."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Le do thoil cuir isteach seoladh IP bailí."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Níl méideanna folmh ceadaithe anseo."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Níl ach uimhreacha ceadaithe anseo."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Cathaigh níos mó ná digite amháin sa méid seo."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Cuir isteach uimhir lán."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr ""
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr ""
-
-#: core/validators.py:152 db/models/fields/__init__.py:569
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr ""
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr ""
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-
-#: core/validators.py:166 forms/fields.py:412
-msgid "Enter a valid e-mail address."
-msgstr ""
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:430
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: core/validators.py:189 forms/fields.py:461
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr ""
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr ""
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr ""
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr ""
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr ""
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr ""
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr ""
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgstr ""
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr ""
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr ""
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr ""
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr ""
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr ""
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr ""
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr ""
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr ""
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr ""
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-"Please enter a valid decimal number with at most %s total digits."
-msgstr ""
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr ""
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr ""
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr ""
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr ""
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr ""
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr ""
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:170 db/models/fields/__init__.py:343
-#: db/models/fields/files.py:168 db/models/fields/files.py:179
-#: forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr ""
-
-#: db/models/fields/__init__.py:457
-msgid "This value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:503
-msgid "This value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:532
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:634 db/models/fields/__init__.py:651
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "This value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:854
-msgid "This value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:969 db/models/fields/__init__.py:982
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr ""
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr ""
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr ""
-
-#: db/models/fields/related.py:759
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: db/models/fields/related.py:839
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr ""
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr ""
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr ""
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr ""
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr ""
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr ""
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr ""
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr ""
-
-#: forms/fields.py:272 forms/fields.py:793
-msgid "Enter a valid date."
-msgstr ""
-
-#: forms/fields.py:305 forms/fields.py:794
-msgid "Enter a valid time."
-msgstr ""
-
-#: forms/fields.py:344
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: forms/fields.py:431
-msgid "No file was submitted."
-msgstr ""
-
-#: forms/fields.py:432 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr ""
-
-#: forms/fields.py:522
-msgid "Enter a valid URL."
-msgstr ""
-
-#: forms/fields.py:523
-msgid "This URL appears to be a broken link."
-msgstr ""
-
-#: forms/fields.py:591 forms/fields.py:642
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:643 forms/fields.py:704 forms/models.py:528
-msgid "Enter a list of values."
-msgstr ""
-
-#: forms/fields.py:822
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr ""
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgstr ""
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr ""
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr ""
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr ""
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr ""
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "tá, níl, b'fhéidir"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgstr ""
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "meán oíche"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "nóin"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Luan"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Máirt"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Céadaoin"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Déardaoin"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Aoine"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Satharn"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domhnach"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Lua"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Mai"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Céa"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Déa"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Aoi"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sat"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Mí Eanair"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Mí Feabhra"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Mí Márta"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "Aibreán"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Bealtaine"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Mí an Mheithimh"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Mí Iúil"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Lúnasa"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Meán Fómhair"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Deireadh Fómhair"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Samhain"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Mí na Nollag"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ean"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "fea"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "loit"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "aib"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "bealtaine"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "mei"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "iui"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "lun"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "mea"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "dei"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "sam"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "nol"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Ean"
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Fea"
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Lún"
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Mea"
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Dei"
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Sam"
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Nol"
-
-#: utils/text.py:128
-msgid "or"
-msgstr "nó"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "blian"
-msgstr[1] "blianta"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mí"
-msgstr[1] "mhí"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "seachtain"
-msgstr[1] "seachtain"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "lá"
-msgstr[1] "laethanta"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "uair"
-msgstr[1] "uair"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "nóiméad"
-msgstr[1] "nóiméad"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "nóiméad"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr ""
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ""
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "DATE_FORMAT"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "DATETIME_FORMAT"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "TIME_FORMAT"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr ""
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr ""
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr ""
-
-#~ msgid "Gaeilge"
-#~ msgstr "Gaeilge"
diff --git a/webapp/django/conf/locale/ga/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ga/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index ba93d35..0000000
--- a/webapp/django/conf/locale/ga/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ga/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ga/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 0b935f1..0000000
--- a/webapp/django/conf/locale/ga/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,116 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-14 12:33+0100\n"
-"PO-Revision-Date: 2008-01-23 11:04+0100\n"
-"Last-Translator: Michael Thornhill <michael@maithu.com>\n"
-"Language-Team: Gaeilge <ga@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid "January February March April May June July August September October November December"
-msgstr "Eanair Feabhra Márta Aibreán Bealtaine Meitheamh Iúil Lúnasa Mean Fómhair Deireadh Fómhair Nollaig"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D L M C D A S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Domhnaigh Luain Máirt Céadaoin Déardaoin Aoine Sathairn"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s ar fáil"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Roghnaigh iomlán"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Cuir le"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Bain amach"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Roghnófar %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Roghnaigh do rogha agus cniog"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Glan iomlán"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Anois"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Clog"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Roghnaigh am"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Meán oíche"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Nóin"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Cealaigh"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Inniu"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Féilire"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Inné"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Amárach"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Taispeán"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Folaigh"
-
diff --git a/webapp/django/conf/locale/gl/LC_MESSAGES/django.mo b/webapp/django/conf/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 491d161..0000000
--- a/webapp/django/conf/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/gl/LC_MESSAGES/django.po b/webapp/django/conf/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index f5db1f0..0000000
--- a/webapp/django/conf/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,3028 +0,0 @@
-# Translation of django.po to Galego
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-28 12:56+0200\n"
-"PO-Revision-Date: 2007-05-28 17:29+0200\n"
-"Last-Translator: Afonso Fernández Nogueira <fonzzo.django@gmail.com>\n"
-"Language-Team: Galego\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Galician\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "árabe"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "bengalí"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "búlgaro"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "catalán"
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "checo"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "galés"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "dinamarqués"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "alemán"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "grego"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "inglés"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "español"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "español de Arxentina"
-
-#: conf/global_settings.py:51
-msgid "Finnish"
-msgstr "finés"
-
-#: conf/global_settings.py:52
-msgid "French"
-msgstr "francés"
-
-#: conf/global_settings.py:53
-msgid "Galician"
-msgstr "galego"
-
-#: conf/global_settings.py:54
-msgid "Hungarian"
-msgstr "húngaro"
-
-#: conf/global_settings.py:55
-msgid "Hebrew"
-msgstr "hebreo"
-
-#: conf/global_settings.py:56
-msgid "Icelandic"
-msgstr "islandés"
-
-#: conf/global_settings.py:57
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:58
-msgid "Japanese"
-msgstr "xaponés"
-
-#: conf/global_settings.py:59
-msgid "Korean"
-msgstr "coreano"
-
-#: conf/global_settings.py:60
-msgid "Kannada"
-msgstr "canará"
-
-#: conf/global_settings.py:61
-msgid "Latvian"
-msgstr "letón"
-
-#: conf/global_settings.py:62
-msgid "Macedonian"
-msgstr "macedonio"
-
-#: conf/global_settings.py:63
-msgid "Dutch"
-msgstr "holandés"
-
-#: conf/global_settings.py:64
-msgid "Norwegian"
-msgstr "noruegués"
-
-#: conf/global_settings.py:65
-msgid "Polish"
-msgstr "polaco"
-
-#: conf/global_settings.py:66
-msgid "Portugese"
-msgstr "portugués"
-
-#: conf/global_settings.py:67
-msgid "Brazilian"
-msgstr "brasileiro"
-
-#: conf/global_settings.py:68
-msgid "Romanian"
-msgstr "romanés"
-
-#: conf/global_settings.py:69
-msgid "Russian"
-msgstr "ruso"
-
-#: conf/global_settings.py:70
-msgid "Slovak"
-msgstr "eslovaco"
-
-#: conf/global_settings.py:71
-msgid "Slovenian"
-msgstr "esloveno"
-
-#: conf/global_settings.py:72
-msgid "Serbian"
-msgstr "serbio"
-
-#: conf/global_settings.py:73
-msgid "Swedish"
-msgstr "sueco"
-
-#: conf/global_settings.py:74
-msgid "Tamil"
-msgstr "támil"
-
-#: conf/global_settings.py:75
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:76
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:77
-msgid "Ukrainian"
-msgstr "ucraíno"
-
-#: conf/global_settings.py:78
-msgid "Simplified Chinese"
-msgstr "chinés simplificado"
-
-#: conf/global_settings.py:79
-msgid "Traditional Chinese"
-msgstr "chinés tradicional"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Por %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Todo"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Calquera data"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Hoxe"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Últimos 7 días"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Este mes"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Este ano"
-
-#: contrib/admin/filterspecs.py:143 newforms/widgets.py:182
-#: oldforms/__init__.py:577
-msgid "Yes"
-msgstr "Si"
-
-#: contrib/admin/filterspecs.py:143 newforms/widgets.py:182
-#: oldforms/__init__.py:577
-msgid "No"
-msgstr "Non"
-
-#: contrib/admin/filterspecs.py:150 newforms/widgets.py:182
-#: oldforms/__init__.py:577
-msgid "Unknown"
-msgstr "Descoñecido"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "hora da acción"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id do obxecto"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "repr do obxecto"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "código do tipo de acción"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "cambiar mensaxe"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "entrada de rexistro"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "entradas de rexistro"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Páxina non atopada"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Sentímolo, pero non se atopou a páxina solicitada."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Inicio"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Erro no servidor"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Erro no servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Erro do servidor <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Houbo un erro. Xa se informou aos administradores do sitio por correo "
-"electrónico e debería quedar arranxado pronto. Grazas pola súa paciencia."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Benvido,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Documentation"
-msgstr "Documentación"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Cambiar contrasinal"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Rematar sesión"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Administración de sitio Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administración de Django"
-
-#: contrib/admin/templates/admin/change_form.html:15
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Engadir"
-
-#: contrib/admin/templates/admin/change_form.html:21
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Histórico"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Ver na web"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Por favor, corrixa o erro de embaixo."
-msgstr[1] "Por favor, corrixa os erros de embaixo."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Orde"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Orde:"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Engadir %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Eliminar"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Borrar o %(object_name)s '%(escaped_object)s' resultaría na eliminación de elementos "
-"relacionados, pero a súa conta non ten permiso para borrar os seguintes "
-"tipos de elementos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Seguro que quere borrar o %(object_name)s \"%(escaped_object)s\"? Eliminaranse os "
-"seguintes obxectos relacionados:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Si, estou seguro"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtro"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelos dispoñíbeis na aplicación %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Modificar"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Non ten permiso para editar nada."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Accións recentes"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "As miñas accións"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Ningunha dispoñíbel"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Hai un problema coa súa instalación de base de datos. Asegúrese "
-"de que se creasen as táboas axeitadas na base de datos, e de que o usuario "
-"apropiado teña permisos para lela."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Usuario:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Contrasinal:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:24
-msgid "Log in"
-msgstr "Iniciar sesión"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Usuario"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Acción"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j de N de Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este obxecto non ten histórico de cambios. Posibelmente non se creou usando "
-"este sitio de administración."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Amosar todo"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Ir"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s en total"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Gardar coma novo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Gardar e engadir outro"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Gardar e seguir editando"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Gardar"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "Primeiro insira un nome de usuario e un contrasinal. Despois poderá "
-"editar máis opcións de usuario."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Usuario"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-msgid "Password"
-msgstr "Contrasinal"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Password (again)"
-msgstr "Contrasinal (outra vez)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Insira o mesmo contrasinal ca enriba para verificalo."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Insira un novo contrasinal para o usuario <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentación"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre a ligazón á súa\n"
-"barra de favoritos ou marcadores, ou faga clic co botón dereito\n"
-"e engádao aos marcadores. Agora pode usar o bookmarklet dende\n"
-" calquera páxina do sitio web. Teña en conta que algúns destes\n"
-"bookmarklets precisan que estea a visitar o sitio dende un ordenador\n"
-"designado coma \"interno\" (fale co administrador do sistema se\n"
-"non está seguro de que o seu ordenador é \"interno\" .</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Documentación para esta páxina"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Salta á documentación para a vista que xera a páxina."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Amosar ID do obxecto"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Amosa o tipo de contido e a ID única para páxinas que representan un obxecto "
-"determinado."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Editar este obxecto (nesta fiestra)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Salta á páxina de administración para páxina que representan un obxecto "
-"determinado."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Editar este obxecto (nunha nova fiestra)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Como enriba, pero abre a páxina de administración nunha nova fiestra."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Grazas polo tempo que dedicou ao sitio web."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Entrar de novo"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Cambiar o contrasinal"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "O seu contrasinal cambiouse correctamente."
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Cambiouse o seu contrasinal."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por razóns de seguridade, introduza o contrasinal actual. Despois introduza "
-"dúas veces o contrasinal para verificarmos que o escribiu correctamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Contrasinal actual:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Contrasinal novo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Confirmar contrasinal:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Cambiar o contrasinal"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Recuperar o contrasinal"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "O contrasinal foi recuperado correctamente"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Acabamos de enviarlle un novo contrasinal ao enderezo de correo indicado. "
-"Debería recibilo en breve."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Recibe esta mensaxe porque solicitou recuperar o contrasinal"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "para a súa conta de usuario en %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "O seu novo contrasinal é: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Pode cambiar este contrasinal visitando esta páxina:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "No caso de que o esquecese, o seu nome de usuario é:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Grazas por usar o noso sitio web!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "O equipo de %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Esqueceu o contrasinal? Introduza o seu enderezo de correo electrónico "
-"embaixo e enviarémoslle un novo contrasinal."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Enderezo de correo electrónico:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Recuperar o meu contrasinal"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Agora:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/admin/templatetags/admin_list.py:249
-msgid "All dates"
-msgstr "Todas as datas"
-
-#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Engadiuse correctamente o/a %(name)s  \"%(obj)s\"."
-
-#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "Pode editalo embaixo."
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Engadir usuario"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "O contrasinal cambiouse correctamente."
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contrasinal: %s"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Insira un nome de usuario e un contrasinal correctos. Teña en conta que nos "
-"dous campos se distingue entre maiúsculas e minúsculas."
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Ten que identicarse outra vez porque a súa sesión expirou. Non se preocupe, "
-"o que enviou quedou gardado."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Semella que o seu navegador non está configurado para aceptar  'cookies'. "
-"Por favor, habilite as 'cookies', recargue a páxina e ténteo de novo."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Os nomes de usuario non poden conter o carácter '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"O seu enderezo de correo electrónico non é o seu nome de usuario. Probe con "
-"'%s'."
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "filtro:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "vista:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "Non se atopou a aplicación %r"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Non se atopou o modelo %(name)r na aplicación %(label)r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "o obxecto `%(label)s.%(type)s` relacionado"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "modelo:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "obxectos `%(label)s.%(name)s` relacionados"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "todos os %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campos dos obxectos %s"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:304 contrib/admin/views/doc.py:310
-#: contrib/admin/views/doc.py:311 contrib/admin/views/doc.py:313
-msgid "Integer"
-msgstr "Número enteiro"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Valor booleano (verdadeiro ou falso)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:312
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Cadea (ata %(maxlength)s caracteres)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Números enteiros separados por comas"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Data (sen a hora)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Data (coa hora)"
-
-#: contrib/admin/views/doc.py:297
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: contrib/admin/views/doc.py:298
-msgid "E-mail address"
-msgstr "Enderezo de correo electrónico"
-
-#: contrib/admin/views/doc.py:299 contrib/admin/views/doc.py:300
-#: contrib/admin/views/doc.py:303
-msgid "File path"
-msgstr "Ruta do ficheiro"
-
-#: contrib/admin/views/doc.py:301
-msgid "Floating point number"
-msgstr "Número de coma flotante"
-
-#: contrib/admin/views/doc.py:305 contrib/comments/models.py:85
-msgid "IP address"
-msgstr "Enderezo IP"
-
-#: contrib/admin/views/doc.py:307
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (verdadeiro, falso ou ningún)"
-
-#: contrib/admin/views/doc.py:308
-msgid "Relation to parent model"
-msgstr "Relación cun modelo pai"
-
-#: contrib/admin/views/doc.py:309
-msgid "Phone number"
-msgstr "Número de teléfono"
-
-#: contrib/admin/views/doc.py:314
-msgid "Text"
-msgstr "Texto"
-
-#: contrib/admin/views/doc.py:315
-msgid "Time"
-msgstr "Hora"
-
-#: contrib/admin/views/doc.py:316 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:317
-msgid "U.S. state (two uppercase letters)"
-msgstr "Estado dos Estados Unidos (dúas letras maiúsculas)"
-
-#: contrib/admin/views/doc.py:318
-msgid "XML text"
-msgstr "Texto XML"
-
-#: contrib/admin/views/doc.py:344
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s non semella ser un obxecto urlpattern"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Administración do sitio web"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Pode engadir outro/a %s embaixo."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Engadir %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Engadido/a %s."
-
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339 db/models/manipulators.py:308
-msgid "and"
-msgstr "e"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado(s) %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Eliminado(s) %s."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Non se modificou ningún campo."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Modificouse correctamente o/a %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "Engadiuse correctamente o/a %(name)s \"%(obj)s\" Pode editalo embaixo."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Un ou máis %(fieldname)s no/a %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Un ou máis %(fieldname)s no/a %(name)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Eliminouse correctamente o/a %(name)s \"%(obj)s\"."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Está seguro?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de cambios: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "Seleccione un/ha %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s que modificar"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Erro da base de datos"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Os dous campos de contrasinal non coinciden."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Xa existe un usuario con ese nome de usuario."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Semella que o seu navegador non acepta 'cookies'. Requírense 'cookies' para "
-"iniciar sesión."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Esta conta está inactiva."
-
-#: contrib/auth/forms.py:85
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Este enderezo de correo electrónico non ten unha conta de usuario asociada. "
-"Está seguro de que está rexistrado?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Os dous campos 'contrasinal novo' non coinciden."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Inseriu incorrectamente o seu contrasinal actual. Por favor, insírao de novo."
-
-#: contrib/auth/models.py:44 contrib/auth/models.py:64
-msgid "name"
-msgstr "nome"
-
-#: contrib/auth/models.py:46
-msgid "codename"
-msgstr "código"
-
-#: contrib/auth/models.py:49
-msgid "permission"
-msgstr "permiso"
-
-#: contrib/auth/models.py:50 contrib/auth/models.py:65
-msgid "permissions"
-msgstr "permisos"
-
-#: contrib/auth/models.py:68
-msgid "group"
-msgstr "grupo"
-
-#: contrib/auth/models.py:69 contrib/auth/models.py:109
-msgid "groups"
-msgstr "grupos"
-
-#: contrib/auth/models.py:99
-msgid "username"
-msgstr "nome de usuario"
-
-#: contrib/auth/models.py:99
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Requirido. 30 caracteres ou menos. Soamente caracteres alfanuméricos "
-"(letras, díxitos ou guións baixos)."
-
-#: contrib/auth/models.py:100
-msgid "first name"
-msgstr "nome"
-
-#: contrib/auth/models.py:101
-msgid "last name"
-msgstr "apelidos"
-
-#: contrib/auth/models.py:102
-msgid "e-mail address"
-msgstr "enderezo de correo electrónico"
-
-#: contrib/auth/models.py:103
-msgid "password"
-msgstr "contrasinal"
-
-#: contrib/auth/models.py:103
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Use '[algo]$[salt]$[hexdigest]' ou utilice o <a href=\"password/\">formulario de "
-"cambio de contrasinal</a>."
-
-#: contrib/auth/models.py:104
-msgid "staff status"
-msgstr "membro do persoal"
-
-#: contrib/auth/models.py:104
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica se o usuario pode entrar neste sitio de administración."
-
-#: contrib/auth/models.py:105
-msgid "active"
-msgstr "activo"
-
-#: contrib/auth/models.py:105
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr "Indica se o usuario pode entrar na sección de administración. "
-"Desactíveo no canto de borrar contas de usuario."
-
-#: contrib/auth/models.py:106
-msgid "superuser status"
-msgstr "estatus de superusuario"
-
-#: contrib/auth/models.py:106
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario ten todos os permisos sen asignarllos explicitamente."
-
-
-#: contrib/auth/models.py:107
-msgid "last login"
-msgstr "última sesión"
-
-#: contrib/auth/models.py:108
-msgid "date joined"
-msgstr "data de rexistro"
-
-#: contrib/auth/models.py:110
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Ademais dos permisos asignados manualmente, este usuario gozará de todos os "
-"permisos concedidos a cada un dos grupos aos que pertence."
-
-#: contrib/auth/models.py:111
-msgid "user permissions"
-msgstr "permisos de usuario"
-
-#: contrib/auth/models.py:115
-msgid "user"
-msgstr "usuario"
-
-#: contrib/auth/models.py:116
-msgid "users"
-msgstr "usuarios"
-
-#: contrib/auth/models.py:122
-msgid "Personal info"
-msgstr "Información persoal"
-
-#: contrib/auth/models.py:123
-msgid "Permissions"
-msgstr "Permisos"
-
-#: contrib/auth/models.py:124
-msgid "Important dates"
-msgstr "Datas importantes"
-
-#: contrib/auth/models.py:125
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:269
-msgid "message"
-msgstr "mensaxe"
-
-#: contrib/auth/models.py:282
-msgid "AnonymousUser"
-msgstr "UsuarioAnónimo"
-
-#: contrib/auth/views.py:40
-msgid "Logged out"
-msgstr "Rematou a sesión"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID do obxecto"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "título"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "comentario"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "valoración 1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "valoración 2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "valoración 3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "valoración 4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "valoración 5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "valoración 6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "valoración 7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "valoración 8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "é unha valoración válida"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "data/hora do envío"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "é público"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "está borrado"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque esta caixa se o comentario non é apropiado. Verase a mensaxe \"Este "
-"comentario foi borrado\" no canto do seu contido."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "comentarios"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Obxecto de contido"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Publicado por %(user)s o %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "nome da persoa"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "enderezo IP"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "aprobado polos moderadores"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "comentario libre"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "comentarios libres"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "puntuación"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "data da puntuación"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "puntos de karma"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "puntos de karma"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "puntuación de %(score)d por %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario foi marcado por %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "data da marca"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "marca de usuario"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "marcas de usuario"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Marca por %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "data de borrado"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "borrado de moderador"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "borrados de moderador"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Borrado polo moderador %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Esqueceu o contrasinal?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Valoracións"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Requirido"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Publicar unha foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Comentario:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Previsualizar comentario"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "O seu nome:"
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Requírese esta valoración porque vostede inseriu polo menos "
-"outra valoración."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Este comentario foi publicado por un usuario que ten publicados menos de %"
-"(count)s comentario:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Este comentario foi publicado por un usuario que ten publicados menos de %"
-"(count)s comentarios:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentario foi enviado por un usuario conflitivo:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Soamente se permiten envíos polo método POST"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Non se enviaron un ou máis dos campos requiridos"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Alguén manipulou o formulario do comentario (violación de seguridade)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"O formulario do comentario tiña un parámetro 'target' non válido: a ID do "
-"obxecto non é válida"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "O formulario de comentario non proporciona 'preview' ou 'post'"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Os usuarios anónimos non poden votar"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "ID de comentario non válida"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Vostede non se pode votar a si mesmo"
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "nome do módulo Python"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "tipo de contido"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "tipos de contido"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exemplo: '/about/contact/'. Lembre incluír as barras ao principio e ao final."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "título"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "contido"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "activar comentarios"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nome da plantilla"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemplo: 'flatpages/contact_page.html'. Se non se especifica, o sistema usará "
-"'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "require rexistro"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Se se marca, só poderán ver a páxina os usuarios identificados."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "páxina simple"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "páxinas simples"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f millón"
-msgstr[1] "%(value).1f millóns"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f mil millóns"
-msgstr[1] "%(value).1f miles de millóns"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billón"
-msgstr[1] "%(value).1f billóns"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "un"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "dous"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "tres"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "catro"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "cinco"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "seis"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "sete"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "oito"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "nove"
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Insira un código postal de 4 díxitos."
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Insira un código postal no formato XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr ""
-"Os números de teléfono deben estar no formato XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "Este campo soamente admite números."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Este campo acepta como máximo 11 díxitos ou 14 caracteres."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr "Número de CPF non válido."
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "Este campo require polo menos 14 díxitos."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr "Número de CNPJ non válido"
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Argovia"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Interior"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Exterior"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basilea-Cidade"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basilea-Campo"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berna"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Friburgo"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Xenebra"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Grisóns"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Xura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerna"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwald"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwald"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Soleura"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "San Galo"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Turgovia"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Tesino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:15
-msgid "Enter a zip code in the format XXXX."
-msgstr "Insira un código posttal no formato XXXX."
-
-#: contrib/localflavor/ch/forms.py:90
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr "Insira un número válido de tarxeta de identidade ou pasaporte no "
-"formato X1234567<0 ou 1234567890."
-
-#: contrib/localflavor/cl/forms.py:21
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Insira un RUT chileno válido. O formato é XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:26
-msgid "Enter valid a Chilean RUT"
-msgstr "Insira un RUT chileno válido."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Baviera"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlín"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandemburgo"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburgo"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hesse"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklemburgo-Pomerania Occidental"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Baixa Saxonia"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Renania do Norte-Westfalia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Renania-Palatinado"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Sarre"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxonia"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxonia-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Turinxia"
-
-#: contrib/localflavor/de/forms.py:16 contrib/localflavor/fi/forms.py:14
-#: contrib/localflavor/fr/forms.py:17
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Insira un código postal no formato XXXXX"
-
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr "Insira un número válido de tarxeta de identidade alemá no formato "
-"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr "Insira un número válido de tarxeta da seguridade social finlandesa."
-
-#: contrib/localflavor/is_/forms.py:16
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Insira un número de identificación islandés válido. O formato é XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:30
-msgid "The Icelandic identification number is not valid."
-msgstr "O número de identificación islandés non é válido."
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Insira un código postal válido."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Insira un número da seguridade social válido."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Insira un número de IVE válido."
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Insira un código postal no formato XXXXXXX ou XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaidō"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Toquio"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kioto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyōgo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kōchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Ōita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/no/forms.py:36
-msgid "Enter a valid Norwegian social security number."
-msgstr "Insira un número válida da seguridade social norueguesa."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "Insira un código postal. Requírese un espazo entre as dúas partes do código postal."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Insira un código postal no formato XXXXX ou XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Insira un número válido da seguridade social dos Estados Unidos no formato XXX-XX-XXXX."
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "orixe da redirección"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Debe ser unha ruta absoluta, sen o nome de dominio. Exemplo: '/events/"
-"search/'"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "destino da redirección"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Pode ser unha ruta absoluta (coma a de enriba) ou un URL completo que empece "
-"por 'http://'"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redirección"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redireccións"
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "clave da sesión"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "datos da sesión"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "data de caducidade"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "sesión"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "sesións"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "dominio"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "nome"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "sitio"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "sitios"
-
-#: core/validators.py:65
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor soamente pode conter letras, números e guións baixos (_)."
-
-#: core/validators.py:69
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Este valor soamente pode conter letras, números, guións baixos (_), guións "
-"(-) e barras inclinadas (/)."
-
-#: core/validators.py:73
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Este valor soamente pode conter letras, números, guións baixos (_) e guións."
-
-#: core/validators.py:77
-msgid "Uppercase letters are not allowed here."
-msgstr "Non se permiten letras maiúsculas."
-
-#: core/validators.py:81
-msgid "Lowercase letters are not allowed here."
-msgstr "Non se permiten letras minúsculas."
-
-#: core/validators.py:88
-msgid "Enter only digits separated by commas."
-msgstr "Insira só díxitos separados por comas."
-
-#: core/validators.py:100
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Insira enderezos de correo elecrónico válidos separados por comas."
-
-#: core/validators.py:104
-msgid "Please enter a valid IP address."
-msgstr "Insira un enderezo IP válido."
-
-#: core/validators.py:108
-msgid "Empty values are not allowed here."
-msgstr "Non se permiten valores en branco."
-
-#: core/validators.py:112
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Non se permiten caracteres non númericos."
-
-#: core/validators.py:116
-msgid "This value can't be comprised solely of digits."
-msgstr "Este valor non pode estar composto por díxitos soamente."
-
-#: core/validators.py:121 newforms/fields.py:135
-msgid "Enter a whole number."
-msgstr "Insira un número enteiro."
-
-#: core/validators.py:125
-msgid "Only alphabetical characters are allowed here."
-msgstr "Soamente se permiten caracteres do alfabeto."
-
-#: core/validators.py:140
-msgid "Year must be 1900 or later."
-msgstr "O ano debe ser 1900 ou posterior."
-
-#: core/validators.py:144
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Data non válida: %s"
-
-#: core/validators.py:149 db/models/fields/__init__.py:463
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Insira unha data válida en formato AAAA-MM-DD."
-
-#: core/validators.py:154
-msgid "Enter a valid time in HH:MM format."
-msgstr "Insira unha hora válida en formato HH:MM."
-
-#: core/validators.py:158 db/models/fields/__init__.py:532
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Insira unha data/hora válida en formato AAAA-MM-DD HH:MM."
-
-#: core/validators.py:163 newforms/fields.py:339
-msgid "Enter a valid e-mail address."
-msgstr "Insira un enderezo de correo electrónico válido."
-
-#: core/validators.py:175 core/validators.py:453 oldforms/__init__.py:672
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Non se enviou ficheiro ningún. Comprobe o tipo de codificación do formulario."
-
-#: core/validators.py:179
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Suba unha imaxe válida. O ficheiro subido non era unha imaxe ou esta estaba "
-"corrupta."
-
-#: core/validators.py:186
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "O URL %s non apunta a unha imaxe válida."
-
-#: core/validators.py:190
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Os números de teléfono deben estar no formato XXX-XXX-XXXX. \"%s\" non é "
-"válido."
-
-#: core/validators.py:198
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "O URL %s non apunta a unha vídeo QuickTime válido."
-
-#: core/validators.py:202
-msgid "A valid URL is required."
-msgstr "Precísase un URL válido."
-
-#: core/validators.py:216
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Precísase HTML válido. Os erros específicos son estes:\n"
-"%s"
-
-#: core/validators.py:223
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formado: %s"
-
-#: core/validators.py:240
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL non válido: %s"
-
-#: core/validators.py:245 core/validators.py:247
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "O URL %s é unha ligazón rota."
-
-#: core/validators.py:253
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Insira unha abreviatura estatal válida para os Estados Unidos."
-
-#: core/validators.py:267
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Sen palabrotas, por favor! Aquí non se pode usar a palabra %s."
-msgstr[1] "Sen palabrotas, por favor! Aquí non se poden usar as palabras %s."
-
-#: core/validators.py:274
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Este campo ten que coincidir co campo '%s'."
-
-#: core/validators.py:293
-msgid "Please enter something for at least one field."
-msgstr "Por favor, encha polo menos un campo."
-
-#: core/validators.py:302 core/validators.py:313
-msgid "Please enter both fields or leave them both empty."
-msgstr "Por favor, encha os dous campos ou deixe ambos en branco."
-
-#: core/validators.py:321
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Débese encher este campo se %(field)s é %(value)s"
-
-#: core/validators.py:334
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Este campo débese encher se %(field)s non é %(value)s"
-
-#: core/validators.py:353
-msgid "Duplicate values are not allowed."
-msgstr "Non se permiten valores duplicados."
-
-#: core/validators.py:368
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Este valor ten que estar comprendido entre %(lower)s e %(upper)s."
-
-#: core/validators.py:370
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Este valor ten que ser polo menos %s."
-
-#: core/validators.py:372
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Este valor non pode ser superior a %s."
-
-#: core/validators.py:408
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Este valor ten que ser unha potencia de %s."
-
-#: core/validators.py:417
-msgid "Please enter a valid decimal number."
-msgstr "Insira un número decimal válido."
-
-#: core/validators.py:423
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Insira un número decimal válido cun máximo de %s díxito en total."
-msgstr[1] "Insira un número decimal válido cun máximo de %s díxitos en total."
-
-#: core/validators.py:426
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Insira un número decimal válido cunha parte enteira de como máximo %s díxito."
-msgstr[1] "Insira un número decimal válido cunha parte enteira de como máximo %s díxitos."
-
-#: core/validators.py:429
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Insira un número decimal válido cun máximo de %s lugar decimal."
-msgstr[1] "Insira un número decimal válido cun máximo de %s lugares decimais."
-
-#: core/validators.py:437
-msgid "Please enter a valid floating point number."
-msgstr "Insira un número de coma flotante válido."
-
-#: core/validators.py:446
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Verifique que o ficheiro subido ten un tamaño mínimo de %s bytes."
-
-#: core/validators.py:447
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Verifique que o ficheiro subido ten un tamaño máximo de %s bytes."
-
-#: core/validators.py:464
-msgid "The format for this field is wrong."
-msgstr "O formato deste campo é incorrecto."
-
-#: core/validators.py:479
-msgid "This field is invalid."
-msgstr "Este campo non é válido."
-
-#: core/validators.py:515
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Non se puido recibir ningún dato de %s."
-
-#: core/validators.py:518
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"O URL %(url)s devolveu a cabeceira Content-Type non válida '%(contenttype)s'."
-
-#: core/validators.py:551
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Por favor, peche a etiqueta %(tag)s da liña %(line)s. (A liña comeza con \"%"
-"(start)s\")."
-
-#: core/validators.py:555
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Algún texto a partir da liña %(line)s non é válido nese contexto. (A liña "
-"comeza con \"%(start)s\")."
-
-#: core/validators.py:560
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" na liña %(line)s non é un atributo válido. (A liña comeza con "
-"\"%(start)s\")."
-
-#: core/validators.py:565
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" na liña %(line)s non é unha etiqueta válida. (A liña comeza "
-"con \"%(start)s\")."
-
-#: core/validators.py:569
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Falta un o máis dos atributos requiridos para unha etiqueta da liña %(line)"
-"s. (A liña comeza con \"%(start)s\")."
-
-#: core/validators.py:574
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"O atributo \"%(attr)s\" na liña %(line)s contén un valor non válido. (A liña "
-"comeza con \"%(start)s\")."
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"Xa existe un obxecto %(object)s con este %(type)s para o campo %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Xa existe un/ha %(optname)s con este/a %(fieldname)s."
-
-#: db/models/fields/__init__.py:121 db/models/fields/__init__.py:278
-#: db/models/fields/__init__.py:675 db/models/fields/__init__.py:686
-#: newforms/fields.py:87 newforms/fields.py:444 newforms/fields.py:520
-#: newforms/fields.py:531 newforms/models.py:186 oldforms/__init__.py:357
-msgid "This field is required."
-msgstr "Requírese este campo."
-
-#: db/models/fields/__init__.py:373
-msgid "This value must be an integer."
-msgstr "Este valor ten que ser un número enteiro."
-
-#: db/models/fields/__init__.py:408
-msgid "This value must be either True or False."
-msgstr "Este valor ten que verdadeiro ou falso."
-
-#: db/models/fields/__init__.py:429
-msgid "This field cannot be null."
-msgstr "Este campo non pode ser nulo."
-
-#: db/models/fields/__init__.py:592
-msgid "This value must be a decimal number."
-msgstr "Este valor ten que ser un número decimal."
-
-#: db/models/fields/__init__.py:695
-msgid "Enter a valid filename."
-msgstr "Introduza un nome de ficheiro válido."
-
-#: db/models/fields/__init__.py:818
-msgid "This value must be either None, True or False."
-msgstr "Este valor ten que verdadeiro, falso ou nulo."
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Insira un %s válido/a."
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "Separe varias IDs con comas."
-
-#: db/models/fields/related.py:644
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Para seleccionar máis dunha entrada, manteña premida a tecla \"Control\", "
-"ou \"Comando\" nun Mac."
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Insira IDs de %(self)s válidas. O valor %(value)r non é válido."
-msgstr[1] ""
-"Insira IDs de %(self)s válidas. Os valores %(value)r non son válidos."
-
-#: newforms/fields.py:110 newforms/fields.py:324
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "Asegúrese de que este valor ten como máximo %d caracteres."
-
-#: newforms/fields.py:112 newforms/fields.py:326
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "Asegúrese de que este valor ten polo menos %d caracteres."
-
-#: newforms/fields.py:137 newforms/fields.py:160 newforms/fields.py:192
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Asegúrese de que este valor é menor ou igual a %s."
-
-#: newforms/fields.py:139 newforms/fields.py:162 newforms/fields.py:194
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Asegúrese de que este valor é maior ou igual a %s"
-
-#: newforms/fields.py:158 newforms/fields.py:186
-msgid "Enter a number."
-msgstr "Insira un número."
-
-#: newforms/fields.py:196
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Asegñurese de que non hai máis de %s díxitos en total."
-
-#: newforms/fields.py:198
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Asegúrese de que non hai máis de %s lugares decimais."
-
-#: newforms/fields.py:200
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Asegúrese de que no hai máis de %s díxitos antes do punto ou coma decimal."
-
-#: newforms/fields.py:233
-msgid "Enter a valid date."
-msgstr "Insira unha data válida."
-
-#: newforms/fields.py:260
-msgid "Enter a valid time."
-msgstr "Insira unha hora válida."
-
-#: newforms/fields.py:296
-msgid "Enter a valid date/time."
-msgstr "Insira unha data/hora válida."
-
-#: newforms/fields.py:310
-msgid "Enter a valid value."
-msgstr "Insira un valor válido."
-
-#: newforms/fields.py:357 newforms/fields.py:379
-msgid "Enter a valid URL."
-msgstr "Insira un URL válido."
-
-#: newforms/fields.py:381
-msgid "This URL appears to be a broken link."
-msgstr "Semella que este URL é unha ligazón rota."
-
-#: newforms/fields.py:432 newforms/models.py:173
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Escolla unha opción válida. Esta opción non se atopa entre as opcións dispoñíbeis"
-
-#: newforms/fields.py:448 newforms/fields.py:524 newforms/models.py:190
-msgid "Enter a list of values."
-msgstr "Insira unha lista de valores."
-
-#: newforms/fields.py:457 newforms/models.py:196
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Escolla unha opción válida. %s non se atopa entre as opcións dispoñíbeis."
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Asegúrese de que o seu texto contén menos de %s carácter."
-msgstr[1] "Asegúrese de que o seu texto contén menos de %s caracteres."
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "Aquí non se permiten saltos de liña."
-
-#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Elixa unha opción válida; '%(data)s' non está en %(choices)s."
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "O ficheiro enviado está baleiro."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Insira un número enteiro entre -32.768 e 32.767."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Insira un número positivo."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Insira un número enteiro entre 0 e 32.767."
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "si,non,quizais"
-
-#: template/defaultfilters.py:520
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:522
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:524
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:525
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "medianoite"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "mediodía"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "luns"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "mércores"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "xoves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "venres"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "domingo"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "xaneiro"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "febreiro"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "marzo"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "abril"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "maio"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "xuño"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "xullo"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "agosto"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "setembro"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "outubro"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "novembro"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "decembro"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "xan"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "xuñ"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "xul"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "out"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "xan."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "ago."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "set."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "out."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "dec."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "ano"
-msgstr[1] "anos"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mes"
-msgstr[1] "meses"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "semana"
-msgstr[1] "semanas"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "día"
-msgstr[1] "días"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "horas"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minutos"
-
-#: utils/timesince.py:40
-#, python-format
-msgid "%d milliseconds"
-msgstr "%d milisegundos"
-
-#: utils/timesince.py:41
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:47
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "d-m-Y"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "d-m-Y H:i"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "m Y"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr "d m"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Creouse correctamente o/a %(verbose_name)s ."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Actualizouse correctamente o/a %(verbose_name)s."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Eliminouse o/a %(verbose_name)s"
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "<a href=\"/password_reset/\">Esqueceu o contrasinal</a>?"
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Use '[algo]$[salt]$[hexdigest]'"
-
-#~ msgid "Comment"
-#~ msgstr "Comentario"
-
-#~ msgid "Comments"
-#~ msgstr "Comentarios"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "Cadea (ata 50 caracteres)"
-
-#~ msgid "label"
-#~ msgstr "etiqueta"
-
-#~ msgid "package"
-#~ msgstr "paquete"
-
-#~ msgid "packages"
-#~ msgstr "paquetes"
diff --git a/webapp/django/conf/locale/gl/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/gl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index fcb6976..0000000
--- a/webapp/django/conf/locale/gl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/gl/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/gl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 9d273db..0000000
--- a/webapp/django/conf/locale/gl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,109 +0,0 @@
-# Translation of djangojs.po to Galego.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2005-07-02 13:25+0200\n"
-"Last-Translator: Afonso Fernández Nogueira <fonzzo.django@gmail.com>\n"
-"Language-Team: Galego\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s dispoñíbeis"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Escoller todo"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Engadir"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Quitar"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s escollido/a(s)"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Seleccione unha ou varias entrada e faga clic "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Quitar todo"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"xaneiro febreiro marzo abril maio xuño xullo agosto setembro outubro novembro "
-"decembro"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "domingo luns martes mércores xoves venres sábado"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D L M M X V S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Agora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Reloxo"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Escolla unha hora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Medianoite"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 da mañá"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Mediodía"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Hoxe"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Calendario"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Onte"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Mañá"
diff --git a/webapp/django/conf/locale/he/LC_MESSAGES/django.mo b/webapp/django/conf/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 27fa6d5..0000000
--- a/webapp/django/conf/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/he/LC_MESSAGES/django.po b/webapp/django/conf/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 6fbac31..0000000
--- a/webapp/django/conf/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4489 +0,0 @@
-# translation of Django.
-# Copyright (C) 2008 The Django Project
-# This file is distributed under the same license as the Django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-23 02:48+0300\n"
-"PO-Revision-Date: 2008-08-23 02:44+0200\n"
-"Last-Translator: Meir Kriheli <meir@mksoft.co.il>\n"
-"Language-Team: Django-i18n <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Bookmarks: -1,988,-1,-1,-1,-1,-1,-1,-1,-1\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "ערבית"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "בנגאלית"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "בולגרית"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "קאטלונית"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "צ'כית"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "וולשית"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "דנית"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "גרמנית"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "יוונית"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "אנגלית"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "ספרדית"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "אסטונית"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "ספרדית ארגנטינאית"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "בסקית"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "פרסית"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "פינית"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "צרפתית"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "אירית"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "גאליצית"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "הונגרית"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "עברית"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "קרואטית"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "איסלנדית"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "איטלקית"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "יפנית"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "גיאורגית"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "קוריאנית"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "חמר"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "קנדית"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "לטבית"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "ליטאית"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "מקדונית"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "הולנדית"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "נורווגית"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "פולנית"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "פורטוגזית"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "פורטוגזית ברזילאית"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "רומנית"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "רוסית"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "סלובקית"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "סלובנית"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "סרבית"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "שוודית"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "טמילית"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "טלגו"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "טורקית"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "אוקראינית"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "סינית פשוטה"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "סינית מסורתית"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>ע\"י %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "הכל"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "כל תאריך"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "היום"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "בשבוע האחרון"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "החודש"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "השנה"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "כן"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "לא"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "לא ידוע"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "זמן פעולה"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "מזהה אובייקט"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "ייצוג אובייקט"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "דגל פעולה"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "הערה לשינוי"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "רישום יומן"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "רישומי יומן"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "ללא"
-
-#: contrib/admin/options.py:329
-#, python-format
-msgid "Changed %s."
-msgstr "%s שונה."
-
-#: contrib/admin/options.py:329 contrib/admin/options.py:339
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "ו"
-
-#: contrib/admin/options.py:334
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "התווסף %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:338
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "שונה %(list)s עבור %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:343
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "נמחק %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:347
-msgid "No fields changed."
-msgstr "אף שדה לא השתנה."
-
-#: contrib/admin/options.py:408 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה."
-
-#: contrib/admin/options.py:412 contrib/admin/options.py:445
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "ניתן לערוך שוב מתחת"
-
-#: contrib/admin/options.py:422 contrib/admin/options.py:455
-#, python-format
-msgid "You may add another %s below."
-msgstr "ניתן להוסיף %s נוסף מתחת."
-
-#: contrib/admin/options.py:443
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "שינוי %(name)s \"%(obj)s\" בוצע בהצלחה."
-
-#: contrib/admin/options.py:451
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה. ניתן לערוך אותו שוב מתחת."
-
-#: contrib/admin/options.py:517
-#, python-format
-msgid "Add %s"
-msgstr "הוספת %s"
-
-#: contrib/admin/options.py:594
-#, python-format
-msgid "Change %s"
-msgstr "שינוי %s"
-
-#: contrib/admin/options.py:625
-msgid "Database error"
-msgstr "שגיאת בסיס נתונים"
-
-#: contrib/admin/options.py:674
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "מחיקת %(name)s \"%(obj)s\" בוצעה בהצלחה."
-
-#: contrib/admin/options.py:681
-msgid "Are you sure?"
-msgstr "האם את/ה בטוח/ה ?"
-
-#: contrib/admin/options.py:708
-#, python-format
-msgid "Change history: %s"
-msgstr "היסטוריית שינוי: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"נא להזין שם משתמש וסיסמה נכונים. בשני השדות גודל האותיות האנגליות משנה."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"נא להתחבר שוב, מאחר ופג תוקף ההתחברות הנוכחית. אל דאגה: המידע ששלחת נשמר."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"נראה שהדפדפן שלך אינו מוגדר לקבל עוגיות. נא לאפשר עוגיות, לטעון מחדש את הדף "
-"ולנסות שוב."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "שם משתמש אינו יכול להכיל את התו '@'."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "כתובת הדוא\"ל שלך אינה שם המשתמש שלך. נסה/י '%s' במקום."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "ניהול אתר"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "כניסה"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "אחד או יותר %(fieldname)s ב%(name)s: %(obj)s"
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "אחד או יותר %(fieldname)s ב%(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "תאריך:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "שעה:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "הנוכחי:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "שינוי:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "דף לא קיים"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "אנו מצטערים, לא ניתן למצוא את הדף המבוקש."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "דף הבית"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "שגיאת שרת"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "שגיאת שרת (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "שגיאת שרת <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "שלום,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "תיעוד"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "שינוי סיסמה"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "יציאה"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ניהול אתר Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ניהול Django"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "הוספה"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "היסטוריה"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "צפיה באתר"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "נא לתקן את השגיאה המופיעה מתחת."
-msgstr[1] "נא לתקן את השגיאות המופיעות מתחת."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "הוספת %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "סינון"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "מחיקה"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת אובייקטים מקושרים, "
-"אך לחשבון שלך אין הרשאות למחיקת סוגי האובייקטים הבאים:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"האם ברצונך למחוק את %(object_name)s \"%(escaped_object)s\"? כל הפריטים "
-"הקשורים הבאים יימחקו:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "כן, אני בטוח/ה"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " לפי %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "מודלים זמינים ביישום %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "שינוי"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "אין לך הרשאות לעריכה."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "פעולות אחרונות"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "הפעולות שלי"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "לא נמצאו"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים "
-"המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "שם משתמש:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "סיסמה:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "תאריך/שעה"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "משתמש"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "פעולה"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "l d.m.y H:i:s"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "הצג הכל"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "בצע"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "תוצאה אחת"
-msgstr[1] "%(counter)s תוצאות"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s סה\"כ"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "שמירה כחדש"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "שמירה והוספת אחר"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "שמירה והמשך עריכה"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "שמירה"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויות נוספות "
-"עבור המשתמש."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "שם משתמש"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "סיסמה"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "סיסמה (שוב)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "יש להזין את אותה סיסמה שוב,לאימות."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "יש להזין סיסמה חדשה עבור המשתמש <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "תודה על בילוי זמן איכות עם האתר."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "התחבר/י שוב"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "שינוי סיסמה"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "הסיסמה שונתה בהצלחה"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "סיסמתך שונתה."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"נא להזין את סיסמתך הישנה, למען האבטחה, ולאחר מכן את סיסמתך החדשה פעמיים כדי "
-"שנוכל לוודא שהקלדת אותה כראוי."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "סיסמה ישנה:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "סיסמה חדשה:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "אימות סיסמה:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "שנה את סיסמתי"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "איפוס סיסמה"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "איפוס הסיסמה הושלם"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "ססמתך נשמרה. כעת ניתן להתחבר."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "אימות איפוס סיסמה"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "הזנת סיסמה חדשה"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "נא להזין את סיסמתך החדשה פעמיים כדי שנוכל לוודא שהקלדת אותה כראוי."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "איפוס הסיסמה נכשל"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"הקישור לאיפוס הסיסמה אינו חוקי. ייתכן והשתמשו בו כבר. נא לבקש איפוס סיסמה "
-"חדש."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "הסיסמה אופסה בהצלחה"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"שלחנו הוראות לקביעת הסיסמה אל כתובת הדוא\"ל שהזנת. ההודעה אמורה להתקבל בקרוב."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "הודעה זו התקבלה כי ביקשת איפוס סיסמה"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "עבור חשבון המשתמש שלך ב %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "נא להגיע לעמוד הבא ולבחור סיסמה חדשה:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "שם המשתמש שלך, במקרה ששכחת:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "תודה על השימוש באתר שלנו!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "צוות %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"שכחת את סיסמתך ? נא להזין את כתובת הדוא\"ל מתחת, ואנו נשלח הוראות לקביעת "
-"סיסמה חדשה."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "כתובת דוא\"ל:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "אפס את סיסמתי"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "כל התאריכים"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "בחירת %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "בחירת %s לשינוי"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "אתר"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "תבנית"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "תג:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "סינון:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "ה-view:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "יישום %r לא נמצא"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "מודל %(model_name)r לא נמצא ביישום %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "אוביקטי `%(app_label)s.%(data_type)s` קשורים"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "מודל:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "אובייקטי `%(app_label)s.%(object_name)s` קשורים"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "כל %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "מספר %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Fields on %s objects"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "מספר שלם"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "בוליאני (אמת או שקר)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "מחרוזת (עד %(max_length)s תווים)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "מספרים שלמים מופרדים בפסיקים"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "תאריך (ללא שעה)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "תאריך (כולל שעה)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "מספר עשרוני"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "כתובת דוא\"ל"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "נתיב קובץ"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "מספר עשרוני"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "כתובת IP"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "בוליאני (אמת, שקר או כלום)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "יחס למודל אב"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "מספר טלפון"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "טקסט"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "זמן"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "מדינה בארה\"ב (שתי אותיות גדולות)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "טקסט XML"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "לא נראה ש-%s הוא אובייקט urlpattern"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "ייסומניות"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "ייסומוניות תיעוד"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">כדי להתקין ייסומניות, יש לגרור את הקישור לסרגל הסימניות\n"
-"שלך, או קליק ימני והוספה לסימניות. כעת ניתן\n"
-"לבחור את הייסומניה מכל עמוד באתר.  יש לשים לב כי חלק מהייסומניות\n"
-"ניתנות לצפיה רק ממחשב שמסווג\n"
-"כ\"פנימי\" (יש לדבר עם מנהל המערכת שלך אם אינך בטוח/ה\n"
-"שהמחשב מסווג ככזה).</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "תיעוד לדף זה"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "מקפיץ אותך מכל עמוד לתיעוד התצוגה שייצרה אותו."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "הצג מזהה אובייקט"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "מציג את סוג התוכן והמזהה הייחודי לעמודים המייצגים אובייקט בודד."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "עריכת אובייקט זה (בחלון הנוכחי)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "קופץ לעמוד הניהול לעמודים אשר מייצגים אובייקטים בודד."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "עריכת אובייקט זה (בחלון חדש)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "כנ\"ל, אך דף הניהול ייפתח בחלון חדש."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "מידע אישי"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "הרשאות"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "תאריכים חשובים"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "קבוצות"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "הוספת משתמש"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "הסיסמה שונתה בהצלחה."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "שינוי סיסמה: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"דורש 30 תווים או פחות. תווים אלפאנומריים בלבד (אותיות, ספרות וקווים תחתונים)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "ערך זה חייב להכיל אותיות, ספרות וקווים תחתונים בלבד."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "אימות סיסמה"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "משתמש עם שם משתמש זה קיים כבר"
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "שני שדות הסיסמה אינם זהים."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "חשבון זה אינו פעיל."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr "נראה שעוגיות לא מאופשרות בדפדפן שלך. הן נדרשות כדי להתחבר."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "כתובת דוא\"ל"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "כתובת דואר אלקטרוני זו אינה משוייכת למשתמש. בטוח שנרשמת ?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "איפוס סיסמה על %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "סיסמה חדשה"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "אימות סיסמה חדשה"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "סיסמה ישנה"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "סיסמתך הישנה הוזנה בצורה שגויה. נא להזינה שוב."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "שם"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "שם קוד"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "הרשאה"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "הרשאות"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "קבוצה"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "קבוצות"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "שם משתמש"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "שם פרטי"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "שם משפחה"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "כתובת דוא\"ל"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "סיסמה"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"יש להזין '[algo]$[salt]$[hexdigest]' או להשתמש ב<a href=\"password/\">טופס "
-"שינוי הסיסמה</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "סטטוס איש צוות"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "מציין האם המשתמש יכול להתחבר לאתר הניהול."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "פעיל"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"מציין האם יש להתייחס למשתמש כפעיל. יש לבטל בחירה זו במקום למחוק חשבונות "
-"משתמשים."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "סטטוס משתמש על"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "מציין שלמשתמש זה יש את כל ההרשאות ללא הצורך המפורש בהענקתן."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "כניסה אחרונה"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "תאריך הצטרפות"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"בנוסף לכל ההרשאות שהוקצו ידנית, יוענקו למשתמש גם כל ההרשאות של כל קבוצה "
-"המשוייכת אליו."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "הרשאות משתמש"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "משתמש"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "משתמשים"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "הודעה"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "יצאת מהמערכת"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "מזהה אובייקט"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "כותרת"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "תגובה"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "דירוג #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "דירוג #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "דירוג #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "דירוג #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "דירוג #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "דירוג #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "דירוג #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "דירוג #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "האם דירוג חוקי"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "תאריך/שעת הגשה"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "ציבורי"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "האם הוסר"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"יש לסמן תיבה זו עבור תגובה לא נאותה. הודעת \"תגובה זו נמחקה\" תוצג במקום."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "תגובות"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "אובייקט תוכן"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"הוגש ע\"י %(user)s ב %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "שם"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "כתובת IP"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "אושר ע\"י הצוות"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "הערה אנונימית"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "הערות אנונימיות"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "ציון"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "תאריך ציון"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "ניקוד קארמה"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "ניקודי קארמה"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d·דירוג ע\"י·%(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"התגובה סומנה ע\"י %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "תאריך סימון"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "סימון ע\"י משתמש"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "סימונים ע\"י משתמש"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "סימון ע\"י %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "תאריך מחיקה"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "מחיקת מודרטור"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "מחיקות מודרטור"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "מחיקת מודרציה ע\"י %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "שכחת את סיסמתך?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "דירוג"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "נדרש"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "אופציונלי"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "שליחת תמונה"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "תגובה:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "תצוגה מקדימה של התגובה"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "שמך:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "הדירוג נדרש מאחר והזנת לפחות דרוג אחד אחר."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"ההודעה נשלחה ע\"י משתמש ששלח פחות מ-%(count)s תגובה:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"ההודעה נשלחה ע\"י משתמש ששלח פחות מ-%(count)s תגובות:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"ההודעה נשלחה ע\"י משתמש מפוקפק:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "רק פעולות POST מותרות"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "אחד או יותר מהשדות הנדרשים אינו נשלח."
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "מישהו התעסק עם טופס התגובה (הפרת אבטחה)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr "טופס התגובה הכיל פרמטר target לא חוקי -- מזהה האובייקט אינו חוקי"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "טופס התגובה לא הכיל 'preview' או 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "משתמשים אנונימיים אינם יכולים להצביע"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "מזהה תגובה שגוי"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "לא ניתן להצביע לעצמך"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "שם ה-class של מודל פייתון"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "סוג תוכן"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "סוגי תוכן"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים, קווים תחתונים ונטויים בלבד."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "אפשרויות מתקדמות"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "כותרת"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "תוכן"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "אפשר תגובות"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "שם תבנית"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"דוגמא: 'flatpages/contact_page.html'. אם זה לא צויין, המערכת תשתמש "
-"ב-'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "הרשמה נדרשת"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "אם מסומן, רק משתמשים מחוברים יוכלו לצפות בדף."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "דף פשוט"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "דפים פשוטים"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "לא סופק ערך גיאומטרי."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "ערך גאומטרי שגוי"
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "סוג גיאומטרי שגוי."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "רביעי"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "ראשון"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "שני"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "שלישי"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f מיליון"
-msgstr[1] "%(value).1f מיליונים"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f מיליארד"
-msgstr[1] "%(value).1f מיליארדים"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f טריליון"
-msgstr[1] "%(value).1f טריליונים"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "אחד"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "שניים"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "שלושה"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "ארבעה"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "חמישה"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "שישה"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "שבעה"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "שמונה"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "תשעה"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "היום"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "מחר"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "אתמול"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "יש להזין קוד דואר בתחביר NNNN או ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "יש להזין רק ספרות בשדה זה."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "שדה זה דורש 7 או 8 ספרות."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "יש להזין מספר CUIT חוקי בתחביר XX-XXXXXXXX-X או XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT שגוי"
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "\tבורגנלנד"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "קרינתיה"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "אוסטריה התחתונה"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "אוסטריה עילית"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "זלצבורג"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "שטיריה"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "טירול"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "פורארלברג"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "וינה"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "יש להזין מיקוד בתחביר XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr "יש להזין מספר ביטוח לאומי אוסטרלי חוקי בתחביר XXXX XXXXXX."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "יש להזין קוד דואר בן 4 ספרות."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "יש להזין מיקוד בתחביר XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "מספרי טלפון חייבים להיות בתחביר XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "נא לבחור מדינה ברזילאית חוקית. מדינה זו אינה אחת מהמדינות האפשריות."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "מספר CPF לא חוקי"
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "שדה זה דורש 11 או 14 ספרות לכל היותר."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "מספר CNPJ לא חוקי"
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "שדה זה דורש לפחות 14 ספרות."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "יש להזין מיקוד בתחביר XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "יש להזין מספר ביטוח לאומי קנדי חוקי בתחביר XXX-XXX-XXXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "ארגאו"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "אפנצל אינר-רודן"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "אפנצל אוסר-רודן"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "באזל-שטאדט"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "באזל-לנדשאפט"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "ברן"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "פריבור"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "ג'נבה"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "גלרוס"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "גראובינדן"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "ז'ורה"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "לוצרן"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "נשאטל"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "נידוולדן"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "אובוולדן"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "שפהאוזן"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "שוויץ"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "זולותורן"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "סנט גלן"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "טיצ'ינו"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "אורי"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "ואלה"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "וו"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "צוג"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "ציריך"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr "יש להזין מספר זיהוי או דרכון שוויצרי בתחביר X1234567<0 או 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "יש להזין RUT צ'יליאני חוקי."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "יש להזין RUT צ'יליאני חוקי. התחביר הוא XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "שדה RUT צ'יליאני אינו חוקי."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "באדן-וירטמברג"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "באווריה"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "ברלין"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "ברנדנבורג"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "ברמן"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "המבורג"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "הסה"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "מקלנבורג-מערב פומרניה"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "סקסוניה התחתונה"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "נורדריין-וסטפאליה"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "ריינלנד-פאלץ"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "חבל הסאר"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "סקסוניה"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "סקסוניה-אנהלט"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "שלזוויג-הולשטיין"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "תורינגיה"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "יש להזין מיקוד בתחביר XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr "יש להזין מספר זיהוי גרמני חוקי בתחביר XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "אראבה"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "אלבסטה"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "אלאקאנט"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "אלמריה"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "אווילה"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "באדאג'וז"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "האיים הבלאריים"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "ברצלונה"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "בורגוס"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "קסרס"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "קדיס"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "קסטלו"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "העיר הקולוניאלית"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "קורדובה"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "א קורוניה"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "קואנקה"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "ז'ירונה"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "גרנדה"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "גוודלחרה"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "גוויפוזקואה"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "אואלבה"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "אואסקה"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "חאאן"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "לאון"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "ליידה"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "לה ריוחה"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "לוגו"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "מדריד"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "מאלאגה"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "מורסיה"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "נווארה"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "אוורנס"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "אסטוריאס"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "פלנסיה"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "לאס פאלמס"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "פונטוורדה"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "סלמנקה"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "סנטה קרוז דה טנריף"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "קנטבריה"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "סגוביה"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "סביליה"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "סוריה"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "טרגונה"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "טרואל"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "טולדו"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "ולנסיה"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "ויאדוליד"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "ביסקאיה"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "סמורה"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "סראגוסה"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "סאוטה"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "מלייה"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "אנדלוסיה"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "אראגון"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "נסיכות אסטוריאס"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "האיים הבלאריים"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "חבל הבסקים"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "האיים הקנריים"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "קסטיליה-לה מנצ'ה"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "קסטיליה ולאון"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "קאטלוניה"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "אקסטרמדורה"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "גאליציה"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "אזור מורסיה"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "הקהילה האוטונומית של נווארה"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "קהילת ולנסיה"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "נא להזיו מיקוד חוקי בתחום ובתחביר 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"נא להזין מספר טלפון חוקי באחד מהתחבירים 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "נא להזין NIF, NIE, או CIF חוקי."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "נא להזין NIF או NIE חוקי."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "סיכום ביקורת שגוי עבור NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "סיכום ביקורת שגוי עבור NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "סיכום ביקורת שגוי עבור CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "נא להזין חשבון בנק חוקי בתחביר XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "סיכום ביקורת שגוי עבור מספר חשבון בנק."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "יש להזין מספר ביטוח לאומי פיני חוקי."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "יש להזין מיקוד בתחביר XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "יש להזין מספר זיהוי איסלנדי חוקי. התחביר הוא XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "מספר הזיהוי האיסלנדי אינו חוקי"
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "יש להזין מיקוד חוקי."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "יש להזין מספר ביטוח לאומי חוקי."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "יש להזין מספר מעמ חוקי"
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "יש להזין קוד דואר בתחביר XXXXXXX או XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "הוקאידו"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "אאומורי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "מיאגי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "אקיטה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "יאמאגטה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "פוקושימה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "איברקי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "טושיגי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "גונמה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "סאיטאמה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "צ'יבה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "טוקיו"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "קאנגאווה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "יאמאנשי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "נאגאנו"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "נייגטה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "טויאמה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "אישיקאוואה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "פוקוי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "גיפו"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "שיזואוקה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "אייצ'י"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "מיי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "שיגה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "קיוטו"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "אוסקה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "הייוגו"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "נארה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "ווקאייאמה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "טוטורי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "אוקייאמה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "הירושימה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "יאמאגוצ'י"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "טוקושימה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "קאגאווה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "קוצ'י"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "פוקוקה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "סגה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "נגסקי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "קומאמוטו"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "אויטה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "מיאזאקי"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "קגושימה"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "אוקינאווה"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "אגואסקליינטס"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "באחה קליפורניה"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "באחה קליפורניה הדרומית"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "קמפצ'ה"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "צ'יוואוה"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "צ'יאפס"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "קואהווילה"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "קולימה"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "מחוז פדרלי"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "צ'יוואוה"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "גררו"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "גואנחואטו"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "אידלגו"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "חליסקו"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "אסטאדו דה מקסיקו"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "מיצ'ואקן"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "מורלוס"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "נייארית"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "נואבו ליאון"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "אואסקה"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "פואבלה"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "קוורטארו"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "קינטאנה רו"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "סינאלוה"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "סאן לואי פוטוסי"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "סונורה"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "טבסקו"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "טמפוליפס"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "טלקסקאלה"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "ורקרוז"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "יוקטן"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "זאקאטקס"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "יש להזין מיקוד חוקי."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "יש להזין מספר טלפון חוקי"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "יש להזין מספר SoFi חוקי"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drenthe"
-msgstr "דרנתה"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "פלבולנד"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "פריזלנד"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "חלדרלנד"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "חרונינגן"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "לימבורג"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "צפון בראבנט"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "צפון הולנד"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "אובראיסל"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "אוטרכט"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "זילנד"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "דרום הולנד"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "יש להזין מספר ביטוח לאומי נורבגי חוקי."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "שדה זה דורש 8 ספרות."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "שדה זה דורש 11 ספרות."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "מספר זיהוי לאומי מורכב מ-11 ספרות"
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "סכום ביקורת שגוי עבודי מספר הזיהוי הלאומי"
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "נא להזין שדה מספר מס (NIP) בתחביר XXX-XXX-XX-XX או XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "סיכום ביקורת שגוי עבור מספר מס (NIP)."
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "מספר רישום עסק לאומי (REGON) מכיל 7 או 9 ספרות."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "סיכום שגוי National Business Register Number (REGON)."
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "נא להזין מיקוד בתחביר XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "סילסיה התחתונה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "קויאבויה - פומרניה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "לובלין"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "לובוש"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "לודז'"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "פולין זוטא"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "מזוביה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "אופולה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "תת קרפטיה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "פודלסיה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "פומרניה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "סילסיה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "סבייטוקזי'סקי"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "וורמיה- מזוריה"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "פולין רבתי"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "מערב פומרניה"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "יש להזין CIF חוקי."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "יש להזין CNP חוקי."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "יש להזין מספר IBAN חוקי בתחביר ROXX-XXXX-XXXX-XXXX-XXXX-XXXX"
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "תחביר מספרי טלפון חייב להיות XXXX-XXXXXX."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "נא להזין מיקוד חוקי בתחביר XXXXXX"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "יש להזין קוד דואר בתחביר XXXXX או XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr " בנסקה ביסטריצה"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "בנסקה שטיאבניצה"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "ברדיוב"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "בנובץ ע\"מ בברבו"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "ברזנו"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "ברטיסלאבה 1"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "ברטיסלאבה 2"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "ברטיסלאבה 3"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "ברטיסלאבה 4"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "ברטיסלאבה 5"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "ביטצ'ה"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "צ'דקה"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "דטבה"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "דולני קובין"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "דונאייסקה סטרדה"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "גלנטה"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "גלניקה"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "הלוהובץ"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "הומנה"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "אילבה"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "קזמרוק"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "קומרנו"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "קושיצה 1"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "קושיצה 2"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "קושיצה 3"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "קושיצה 4"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "קושיצ'ה - אוקולי"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "קרופינה"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "קיוסקה נובה מסטו"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "לביצה"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "לבוצ'ה"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "ליפטובסקי מיקולס"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "לוצ'נץ'"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "מאלאקי"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "מרטין"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "מדזילבורצה"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "מיחלובצה"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "מיאווה"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "נמסטובו"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "ניטרה"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "נובה מסטו ע\"נ וה"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "נווי-זאמקי"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "פרטיזנסקה"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "פזינוק"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "פיאסטאני"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "פולטר"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "פופרד"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "פובסקה ביסטריצ'ה"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "פרשוב"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "פרבידזה"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "פוצ'וב"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "ריץ"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "רימובסקה סובוטה"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "רוזנבה"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "רוזומברוק"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "סבינוב"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "סנץ"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "סניצ'ה"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "סקליצ'ה"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "סנינה"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "סוברנס"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "ספישסקה נובה וס"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "סטרה לובובנה"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "סרטופקוב"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "סבידניק"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "סאלה"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "טופולצ'ני"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "טרביסוב"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "טרנצ'ין"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "טרנאוה"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "טורצינסק טפליץ"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "טברודוסין"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "ולקי קריץ"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "טרנוב ע\"נ טופולו"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "זלטה מורבצה"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "זבולן"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "זרנוביקה"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "ז'יר ע\"נ הרון"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "ז'ילינה"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "מחוז בטנסקה ביסטריקה"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "מחוז ברטיסלבה"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "מחוז קושיצ'ה"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "מחוז ניטרה"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "מחוז פראסוב"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "מחוז טראנצין"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "מחוז טרנאוה"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "מחוז ז'ילינה"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "יש להזין מיקוד חוקי."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr " בדפורשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "באקינגהמשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr " צ'שייר"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "קורנוול ואיי סילי"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr " קאמבריה"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "דרבישייר"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr " דבון"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "דורסט"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "דרהאם"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "מזרח אסקס"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "אסקס"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "גלוסטרשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "לונדון רבתי"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "מנצ'סטר רבתי"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "המפשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "הארטפורדשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "קנט"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "לנקשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "ליסטרשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr " לינקולנשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "מרסיסייד"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "נורפולק"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "צפון יורקשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "נורת'המפטונשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "נורת'אמברלנד"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "נוטינגהאמשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "אוקספורדשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "שרופשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "סומרסט"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "דרום יורקשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "סטאפורדשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr " סאפוק"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "סוריי"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "טיין ו-וויר"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr " וורוויקשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "מערב המידלנדס"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "מערב סאסקס"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "מערב יורקשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr " ווילטשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr " ווסטרשייר"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "מחוז אנטרים"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "ארמה"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "מחוז דאון"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "מחוז פרמאנה"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "מחוז לונדונברי"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "מחוז טיירון"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "קלוויד"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "דייפד"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "גוונט"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "גווינד"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "מרכז גלמורגן"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "ַפואיס"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "דרום גלמורגן"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "מערב גלמורגן"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "גבולות"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "מרכז סקוטלנד"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "דמפרייס וגאלוויי"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "פייף"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr " גרמפיאן"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "רמה"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "לודיאן"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "איי אורקיי"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "איי שטלנד"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "סטראת'קלייד"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "טייסייד"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "האיים המערביים"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "אנגליה"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "צפון אירלנד"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "סקוטלנד"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "וויילס"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "יש להזין מיקוד חוקי בתחביר XXXXX או XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "יש להזין מספר ביטוח לאומי אמריקאי בתחביר XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "נא להזין מספר זיהוי דרום אפריקאי חוקי"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "נא להזין מיקוד דרום אפריקאי חוקי"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "הכף המזרחי"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "המדינה החופשית"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "גאוטנג"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "קווזולו-נטל"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "לימפופו"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "מפומלנגה"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "כף צפוני"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "דרום מערב"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "כף מערבי"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "הפניה מ"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "זה אמור להיות נתיב מלא, ללא שם המתחם. לדוגמא: '/‎/events/search'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "הפניה אל"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "יכול להיות נתיב מלא (כנ\"ל) או URL מלא המתחיל ב'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "הפניה"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "הפניות"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "מפתח התחברות (session key)"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "מידע התחברות (session data)"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "תאריך פג תוקף"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "התחברות"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "התחברויות"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "שם מתחם"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "שם לתצוגה"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "אתרים"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "ערך זה חייב להכיל אותיות, ספרות, מקפים וקווים תחתונים בלבד."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "אסור להשתמש באותיות גדולות."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "אסור להשתמש באותיות קטנות."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "יש להזין רק ספרות מופרדות בפסיקים."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "יש להזין רק כתובות דוא\"ל מופרדות בפסיקים."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "נא להזין כתובת IP חוקית."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "חובה להזין ערך בשדה זה."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "מותר להזין ספרות בלבד."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "ערך זה אינו יכול להכיל ספרות בלבד."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "נא להזין מספר שלם."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "יש להזין כאן אותיות בלבד."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "תאריך שגוי: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "יש להזין תאריך במבנה YYYY-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "יש להזין שעה במבנה HH:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "יש להזין תאריך ושעה במבנה YYYY-MM-DD HH:MM."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "יש להזין כתובת דוא\"ל חוקית."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "נא להעלות תמונה חוקית. הקובץ שהעלת אינו תמונה או מכיל תמונה מקולקלת."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "ה-URL %s אנו מצביע לתמונה חוקית."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "מספרי טלפון חייבים להיות במבנה XXX-XXX-XXXX.‏ \"%s\" אינו חוקי."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "ה-URL‏ %s אינו מצביע לסרטון QuickTime חוקי."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "יש להזין URL חוקי."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"יש להזין HTML חוקי. שגיאות ספציפיות:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "מבנה XML שגוי: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL שגוי: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "ה-URL‏ %s הוא קישור שבור."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "יש להזין קיצור חוקי למדינה בארה\"ב."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "שמור על לשונך! המילה %s אסורה לשימוש כאן."
-msgstr[1] "שמור על לשונך! המילים %s אסורות לשימוש כאן."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "תוכן השדה חייב להיות זהה לשדה '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "יש להזין תוכן בלפחות אחד מהשדות."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "יש להזין תוכן בשני השדות או להשאיר את שניהם ריקים."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "יש להזין תוכן בשדה זה אם שדה %(field)s מכיל %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "יש להזין תוכן בשדה זה אם תוכן שדה %(field)s אינו %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "לא ניתן להזין ערכים כפולים."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "ערך זה חייב להיות בין %(lower)s ל-%(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "ערך זה חייב להיות לפחות %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "ערך זה אינו יכול להיות יותר מ-%s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "ערך זה חייב להיות חזקה של %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "יש להזין מספר עשרוני חוקי."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "יש להזין מספר עשרוני חוקי עם ספרה %s לכל היותר."
-msgstr[1] "יש להזין מספר עשרוני חוקי עם %s ספרות לכל היותר."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "יש להזין מספר עשרוני חוקי עם ספרה %s בחלק השלם לכל היותר."
-msgstr[1] "יש להזין מספר עשרוני חוקי עם %s ספרות בחלק השלם לכל היותר."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "יש להזין מספר עשרוני חוקי עם ספרה %s בחלק העשרוני לכל היותר."
-msgstr[1] "יש להזין מספר עשרוני חוקי עם %s ספרות בחלק העשרוני לכל היותר."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "נא להזין מספר נקודה צפה חוקי."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "יש להעלות קובץ בגודל %s בתים לפחות."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "יש לוודא שהקובץ שהעלת הוא בגודל %s בתים לכל היותר."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "מבנה תוכן שדה זה שגוי."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "שדה זה אינו חוקי."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "לא ניתן לאחזר כלום מ %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "ה-URL·%(url)s·החזיר כותרת·Content-Type·לא חוקית·'%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr "נא לסגור את תג·%(tag)s·בשורה·%(line)s.·(השורה מתחילה ב·\"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"חלק מהטקסט בשורה·%(line)s·אסור בהקשר זה.·(השורה·מתחילה ב·\"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\"·בשורה·%(line)s·אינה תכונה חוקית.·(השורה מתחילה ב·\"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\"·בשורה·%(line)s·אינו תג חוקי.·(השורה מתחילה ב·\"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"לתג בשורה %(line)s חסרה תכונה אחת או יותר נדרשות. (השורה מתחילה ב-\"%(start)s"
-"\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"לתכונה·\"%(attr)s\"·בשורה·%(line)s·יש ערך לא חוקי.·(השורה·מתחילה ב·\"%(start)"
-"s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s עם %(type)s קיים כבר עבור %(field)s נתון."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s·עם·%(fieldname)s·זה קיימת כבר."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "יש להזין תוכן בשדה זה."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "ערך זה חייב להיות מספר שלם."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "ערך זה חייב להיות אמת או שקר."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "שדה זה אינו יכול להכיל null."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "נא להזין תאריך/שעה חוקיים בתחביר YYYY-MM-DD HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "ערך זה חייב להיות מספר עשרוני."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "ערך זה חייב להיות כלום, אמת או שקר."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "נא להזין זמן חוקי בתחביר HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "יש להזין שם קובץ חוקי."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "יש להזין %s חוקי."
-
-#: db/models/fields/related.py:786
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"יש להחזיק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד."
-
-#: db/models/fields/related.py:866
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "נא להזין מזהה %(self)s חוקי. הערך %(value)r אינו חוקי."
-msgstr[1] "נא להזין מזהי %(self)s חוקיים. הערכים %(value)r אינם חוקיים."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "יש להזין ערך חוקי."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "נא לוודא שערך זה מכיל  %(max)d תווים לכל היותר (מכיל %(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "נא לוודא שערך זה מכיל לפחות %(min)d תווים (מכיל %(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "יש לוודא שערך זה פחות מ או שווה ל %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "יש לוודא שהערך גדול מ או שווה ל %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "נא להזין מספר."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "נא לוודא שאין יותר מ-%s ספרות סה\"כ"
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "נא לוודא שאין יותר מ-%s ספרות אחרי הנקודה"
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "נא לוודא שאין יותר מ-%s ספרות לפני הנקודה העשרונית"
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "יש להזין תאריך חוקי."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "יש להזין שעה חוקית."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "יש להזין תאריך ושעה חוקיים."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "לא נשלח שום קובץ"
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "הקובץ שנשלח ריק."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "יש להזין URL חוקי."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "ה-URL הזה נראה כקישור שבור."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "יש לבחור אפשרות חוקית. %(value)s אינו בין האפשרויות הזמינות."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "יש להזין רשימת ערכים"
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "יש להזין כתובת IPv4 חוקית."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "יש לבחור אפשרות חוקית. %s אינו בין האפשרויות הזמינות."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "נא לוודא שהטקסט שלך מכיל פחות מ %s תו."
-msgstr[1] "נא לוודא שהטקסט שלך מכיל פחות מ %s תווים."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "מעברי שורה אסורים כאן."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "יש לבחור אפשרות חוקית; '%(data)s' אינו בין %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "יש להזין מספר שלם בין ‎-32,768 ל- 32,767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "יש להזין מספר חיובי."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "יש להזין מספר שלם בין 0 ל- 32,767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "כן,לא,אולי"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d בית"
-msgstr[1] "%(size)d בתים"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "אחר הצהריים"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "בבוקר"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "אחר הצהריים"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "בבוקר"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "חצות"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "צהריים"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "שני"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "שלישי"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "רביעי"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "חמישי"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "שישי"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "שבת"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ראשון"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "שני"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "שלישי"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "רביעי"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "חמישי"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "שישי"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "שבת"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ראשון"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ינואר"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "פברואר"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "מרס"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "אפריל"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "מאי"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "יוני"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "יולי"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "אוגוסט"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "ספטמבר"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "אוקטובר"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "נובמבר"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "דצמבר"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ינו"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "פבר"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "מרס"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "אפר"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "מאי"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "יונ"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "יול"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "אוג"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ספט"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "אוק"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "נוב"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "דצמ"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "ינו'"
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "פבר'"
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "אוג'"
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "ספט'"
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "אוק'"
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "נוב'"
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "דצמ'"
-
-#: utils/text.py:128
-msgid "or"
-msgstr "או"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "שנה"
-msgstr[1] "שנים"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "חודש"
-msgstr[1] "חודשים"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "שבוע"
-msgstr[1] "שבועות"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "יום"
-msgstr[1] "ימים"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "שעה"
-msgstr[1] "שעות"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "דקה"
-msgstr[1] "דקות"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "דקות"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "d.m.Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "d.m.‏Y H:i:s"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "d.m.Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "d.m.Y"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "ה-%(verbose_name)s  נוצר בהצלחה."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "ה-%(verbose_name)s עודכן בהצלחה."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "ה-%(verbose_name)s נמחק."
-
-#~ msgid "Ordering"
-#~ msgstr "מיון"
-
-#~ msgid "Order:"
-#~ msgstr "מיון:"
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "סיסמתך החדשה: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr "ניתן לשנות את הסיסמה בכל עת ע\"י פניה לדף זה:"
-
-#~ msgid "Added %s."
-#~ msgstr "%s התווסף."
-
-#~ msgid "Deleted %s."
-#~ msgstr "%s נמחק."
-
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "שני שדות 'הסיסמה החדשה' אינם זהים."
-
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "שנה צריכה להיות 1900 ומעלה."
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "יש להפריד מזהים מרובים בפסיקים."
diff --git a/webapp/django/conf/locale/he/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/he/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 9448068..0000000
--- a/webapp/django/conf/locale/he/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/he/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/he/LC_MESSAGES/djangojs.po
deleted file mode 100644
index cc68885..0000000
--- a/webapp/django/conf/locale/he/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,120 +0,0 @@
-# Hebrew translation of djangojs.
-# Copyright (C) 2006 THE djangojs'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the djangojs package.
-# Meir Kriheli <meir@mksoft.co.il>, 2006.
-# 
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-06 13:08+0300\n"
-"PO-Revision-Date: 2007-05-06 13:08+0300\n"
-"Last-Translator: Meir Kriheli <meir@mksoft.co.il>\n"
-"Language-Team: Hebrew\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s זמינות"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "בחירת הכל"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "הוספה"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "הסרה"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s נבחרות"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "יש לסמן את ההרשאות המבוקשות וללחוץ על "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "איפוס הכל"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"ינואר פברואר מרץ אפריל מאי יוני יולי אוגוסט ספטמבר אוקטובר נובמבר דצמבר"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "ר ש ש ר ח ש ש"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "ראשון שני שלישי רביעי חמישי שישי שבת"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "הצג"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "הסתר"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "כעת"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "שעון"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "בחירת שעה"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "חצות"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 בבוקר"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "צהריים"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "ביטול"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "היום"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "לוח שנה"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "אתמול"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "מחר"
-
diff --git a/webapp/django/conf/locale/hr/LC_MESSAGES/django.mo b/webapp/django/conf/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 0326a71..0000000
--- a/webapp/django/conf/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/hr/LC_MESSAGES/django.po b/webapp/django/conf/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index cfdcf6f..0000000
--- a/webapp/django/conf/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4320 +0,0 @@
-# translation of django.po to Hrvatski jezik
-# This file is distributed under the same license as the Django package.
-#
-# Aljosa Mohorovic <aljosa.mohorovic@gmail.com>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-06 16:24+0100\n"
-"PO-Revision-Date: 2008-06-17 23:25+0100\n"
-"Last-Translator: Aljosa Mohorovic <aljosa.mohorovic@gmail.com>\n"
-"Language-Team: Hrvatski jezik\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arapski"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengalski"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Bugarski"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "Katalanski"
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "Češki"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "Velški"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Danski"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "Njemački"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "Grčki"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "Engleski"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Španjolski"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Argentinski španjolski"
-
-#: conf/global_settings.py:51
-msgid "Persian"
-msgstr "Perzijski"
-
-#: conf/global_settings.py:52
-msgid "Finnish"
-msgstr "Finski"
-
-#: conf/global_settings.py:53
-msgid "French"
-msgstr "Francuski"
-
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr "Gaeilge"
-
-#: conf/global_settings.py:55
-msgid "Galician"
-msgstr "Galski"
-
-#: conf/global_settings.py:56
-msgid "Hungarian"
-msgstr "Mađarski"
-
-#: conf/global_settings.py:57
-msgid "Hebrew"
-msgstr "Hebrejski"
-
-#: conf/global_settings.py:58
-msgid "Croatian"
-msgstr "Hrvatski"
-
-#: conf/global_settings.py:59
-msgid "Icelandic"
-msgstr "Islandski"
-
-#: conf/global_settings.py:60
-msgid "Italian"
-msgstr "Talijanski"
-
-#: conf/global_settings.py:61
-msgid "Japanese"
-msgstr "Japanski"
-
-#: conf/global_settings.py:62
-msgid "Korean"
-msgstr "Koreanski"
-
-#: conf/global_settings.py:63
-msgid "Khmer"
-msgstr "Kambođanski"
-
-#: conf/global_settings.py:64
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:65
-msgid "Latvian"
-msgstr "Letonski"
-
-#: conf/global_settings.py:66
-msgid "Macedonian"
-msgstr "Makedonski"
-
-#: conf/global_settings.py:67
-msgid "Dutch"
-msgstr "Nizozemski"
-
-#: conf/global_settings.py:68
-msgid "Norwegian"
-msgstr "Norveški"
-
-#: conf/global_settings.py:69
-msgid "Polish"
-msgstr "Poljski"
-
-#: conf/global_settings.py:70
-msgid "Portugese"
-msgstr "Portugalski"
-
-#: conf/global_settings.py:71
-msgid "Brazilian"
-msgstr "Brazilski"
-
-#: conf/global_settings.py:72
-msgid "Romanian"
-msgstr "Rumunjski"
-
-#: conf/global_settings.py:73
-msgid "Russian"
-msgstr "Ruski"
-
-#: conf/global_settings.py:74
-msgid "Slovak"
-msgstr "Slovački"
-
-#: conf/global_settings.py:75
-msgid "Slovenian"
-msgstr "Slovenski"
-
-#: conf/global_settings.py:76
-msgid "Serbian"
-msgstr "Srpski"
-
-#: conf/global_settings.py:77
-msgid "Swedish"
-msgstr "Švedski"
-
-#: conf/global_settings.py:78
-msgid "Tamil"
-msgstr "Tamilski"
-
-#: conf/global_settings.py:79
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:80
-msgid "Turkish"
-msgstr "Turski"
-
-#: conf/global_settings.py:81
-msgid "Ukrainian"
-msgstr "Ukrajinski"
-
-#: conf/global_settings.py:82
-msgid "Simplified Chinese"
-msgstr "Pojednostavljeni kineski"
-
-#: conf/global_settings.py:83
-msgid "Traditional Chinese"
-msgstr "Tradicionalni kineski"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Po %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Svi"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Bilo koji datum"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Danas"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Prošlih 7 dana"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Ovaj mjesec"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Ova godina"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Da"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Ne"
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Nepoznat pojam"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "vrijeme akcije"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "id objekta"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "object repr"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "action flag"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "promijeni poruku"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "log entry"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "log entries"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Stranica nije pronađena"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ispričavamo se, ali tražena stranica nije pronađena."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Doma"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverska pogreška"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverska pogreška (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverska pogreška <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr "Dogodila se pogreška. Administratori su obaviješteni putem e-maila te bi pogreška uskoro trebala biti ispravljena. Hvala na strpljenju."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Dobrodošli,"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Promijeni lozinku"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Odjava"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administracija stranica"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administracija"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Dodaj"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "Povijest"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Pogledaj na stranicama"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Molim ispravite navedenu pogrešku."
-msgstr[1] "Molim ispravite navedene pogreške."
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Redoslijed"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Redoslijed:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Izbriši"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Brisanje %(object_name)s '%(escaped_object)s' rezultiralo bi brisanjem "
-"povezanih objekta, ali vi nemate privilegije za brisanje navedenih objekta: "
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Jeste li sigurni da želite izbrisati %(object_name)s \"%(escaped_object)s\"? "
-"Svi navedeni objekti biti će izbrisani:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Da, siguran sam"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Po %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeli dostupni u %(name)s aplikaciji."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Promijeni"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Nemate privilegije za promjenu podataka."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Nedavne promjene"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Moje promjene"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nije dostupno"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Nešto je pogrešno sa instalacijom/postavkama baze. Provjerite jesu li "
-"potrebne tablice u bazi kreirane i provjerite je li baza dostupna korisniku."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Korisničko ime:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Lozinka:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
-msgid "Log in"
-msgstr "Prijavi se"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Datum/vrijeme"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Korisnik"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Akcija"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "DATE_WITH_TIME_FULL"
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ovaj objekt nema povijest promjena. Moguće je da nije dodan korištenjem ove "
-"administracije."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Prikaži sve"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Idi"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 rezultat"
-msgstr[1] "%(counter)s rezultata"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s ukupno"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Spremi kao novi unos"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Spremi i dodaj novi unos"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Spremi i nastavi uređivati"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Spremi"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Prvo, unesi korisničko ime i lozinku. Onda možete promijeniti više postavki "
-"korisnika."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Korisničko ime"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Lozinka"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Lozinka (unesi ponovo)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Unesi istu lozinku, za potvrdu."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Unesi novu lozinku za korisnika <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentacija bookmarklets-a"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Da bi instalirali bookmarklet, povucite link na svoj bookmarks\n"
-"toolbar, ili desnim klikom na link dodajte u svoje bookmarke. Sada možete\n"
-"selektirati bookmarklet sa bilo koje stranice. Zapamtite da neki bookmarkleti\n"
-"zahtjevaju da gledate stranice sa računala označenog\n"
-"kao \"internal\" (razgovarajte sa svojim sistem administratorom ako niste sigurni\n"
-"je li vaše računalo \"internal\").</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentacija za ovu stranicu"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Preusmjeri te sa bilo koje stranice na dokumentaciju za taj prikaz (view) "
-"koji generira stranicu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Prikaži ID objekta"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Prikazuje tip sadržaja (content-type) i jedinstveni ID za stranice koje predstavljaju "
-"pojedinačan objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Uredi objekt (u trenutnom prozoru)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Preusmjeri na admin stranicu za stranice koje predstavljaju pojedinačan objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Uredi objekt (u novom prozoru)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Isto kao prethodno, ali otvara admin stranicu u novom prozoru."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala što ste proveli malo kvalitetnog vremena na stranicama danas."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Prijavite se ponovo"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Promjena lozinke"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Promjena lozinke uspješna"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "Vaša lozinka je promijenjena."
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Molim unesite staru lozinku, zbog sigurnosti, i onda unesite novu lozinku "
-"dvaput da bi mogli provjeriti jeste li ispravno unesli."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Stara lozinka:"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Nova lozinka:"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Potvrdi lozinku:"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Promijeni moju lozinku"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Resetiranje lozinke"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Resetiranje lozinke uspješno"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Poslali smo novu lozinku na e-mail adresu koju ste unijeli. Trebali bi je "
-"uskoro primiti."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Dobili ste ovaj e-mail jer ste zatražili resetiranje lozinke"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "za vaš korisnički račun na %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Vaša nova lozinka je: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Slobodno promijenite lozinku odlaskom na ovu stranicu:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše korisničko ime, u slučaju da ste zaboravili:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Hvala šta koristite naše stranice!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s tim"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Zaboravili ste lozinku? Unesite vašu e-mail adresu ispod i onda ćemo "
-"resetirati vašu lozinku i poslati novu na vaš e-mail."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail adresa:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Resetiraj moju lozinku"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Vrijeme:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Trenutno:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Promijeni:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Svi datumi"
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" uspješno je dodano."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Možete ponovo urediti unos dolje."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Dodaj korisnika"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Lozinka uspješno promijenjena."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Promijeni lozinku: %s"
-
-#: contrib/admin/views/decorators.py:11 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Molim unesite ispravno korisničko ime i lozinku. Uzmite u obzir da oba polja "
-"razlikuju velika/mala slova."
-
-#: contrib/admin/views/decorators.py:63
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Molim prijavite se ponovo jer je vaš session istekao. Nemojte brinuti, vaš "
-"unos je sačuvan."
-
-#: contrib/admin/views/decorators.py:70
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Izgleda da vaš browser nije podešen da prihvaća kolačiće (cookies). Molim "
-"promijenite postavke, ponovno učitajte stranicu i pokušajte ponovo."
-
-#: contrib/admin/views/decorators.py:84
-msgid "Usernames cannot contain the '@' character."
-msgstr "Korisnička imena ne mogu sadržavati '@' znak."
-
-#: contrib/admin/views/decorators.py:86
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Vaša e-mail adresa nije vaše korisničko ime. Pokušajte sa '%s'"
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "filter:"
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "prikaz:"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacija %r nije pronađena"
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Model %(name)r nije pronađen u aplikaciji %(label)r"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "povezan `%(label)s.%(type)s` objekt"
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "povezani `%(label)s.%(name)s` objekti"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "svi %s"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "broj %s"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Polja na %s objektima"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Cijeli broj"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True ili False)"
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Slova (do %(max_length)s)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Cijeli brojevi odvojeni zarezom"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Datum (bez vremena/sati)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Datum (sa vremenom/satima)"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Decimalni broj"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "E-mail adresa"
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Put do datoteke"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Broj s pomičnim zarezom (floating point number)"
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:85
-msgid "IP address"
-msgstr "IP adresa"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (True, False ili None)"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Relacija na roditeljski model (parent model)"
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Telefonski broj"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Vrijeme"
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "Država S.A.D.-a (dva velika slova)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "XML tekst"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "izgleda da %s nije urlpattern objekt"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Administracija stranica"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Možete dodati još jedan %s ispod."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Dodano %s"
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "i"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Promijenjeno %s."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Izbrisano %s."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Nije bilo promjena polja."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" uspješno promijenjeno."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" uspješno dodan. Možete ponovo urediti dolje."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Promijeni %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Jedan ili više %(fieldname)s u %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Jedan ili više %(fieldname)s u %(name)s"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" uspješno izbrisan."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Jeste li sigurni?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Promijeni povijest: %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Odaberi %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Odaberi %s za promjenu"
-
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Pogreška u bazi"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Dva polja za lozinku nisu jednaka."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Korisnik sa navedenim imenom već postoji."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Izgleda da Vaš browser ne podržava kolačiće (cookies). Kolačići su potrebni "
-"da bi se prijavili."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Ovaj korisnički račun nije aktivan."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Za navedenu e-mail adresu ne postoji korisnički račun. Jeste li sigurni da "
-"ste registrirani?"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Lozinka resetirana na %s"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Dva polja 'nova lozinka' nisu jednaka."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaša stara lozinka je pogrešno unesena. Molim unesite ponovo."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "ime"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "kodno ime"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "privilegija"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "privilegije"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "grupa"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
-msgid "groups"
-msgstr "grupe"
-
-#: contrib/auth/models.py:131
-msgid "username"
-msgstr "korisničko ime"
-
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "Obavezno 30 alfanumeričkih znakova ili manje (slova, brojevi i povlaka)."
-
-#: contrib/auth/models.py:132
-msgid "first name"
-msgstr "ime"
-
-#: contrib/auth/models.py:133
-msgid "last name"
-msgstr "prezime"
-
-#: contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr "e-mail adresa"
-
-#: contrib/auth/models.py:135
-msgid "password"
-msgstr "lozinka"
-
-#: contrib/auth/models.py:135
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Koristite '[algo]$[salt]$[hexdigest]' ili <a href=\"password/\">formu za "
-"promjenu lozinke</a>."
-
-#: contrib/auth/models.py:136
-msgid "staff status"
-msgstr "status osoblja"
-
-#: contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "Određuje može li se korisnik prijaviti na ove stranice administracije."
-
-#: contrib/auth/models.py:137
-msgid "active"
-msgstr "aktivan"
-
-#: contrib/auth/models.py:137
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Određuje može li se korisnik prijaviti na stranice Django administracije. "
-"Koristite ovu opciju umjesto brisanja korisničkih računa."
-
-#: contrib/auth/models.py:138
-msgid "superuser status"
-msgstr "superuser status"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Određuje da ovaj korisnik ima sve privilegije te uklanja potrebu da se "
-"privilegije dodaju eksplicitno/ručno."
-
-#: contrib/auth/models.py:139
-msgid "last login"
-msgstr "posljednja prijava"
-
-#: contrib/auth/models.py:140
-msgid "date joined"
-msgstr "datum učlanjenja"
-
-#: contrib/auth/models.py:142
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Uz ručno dodane privilegije korisnik će također dobiti sve privilegije "
-"odobrene grupama kojima korisnik pripada."
-
-#: contrib/auth/models.py:143
-msgid "user permissions"
-msgstr "privilegije korisnika"
-
-#: contrib/auth/models.py:147
-msgid "user"
-msgstr "korisnik"
-
-#: contrib/auth/models.py:148
-msgid "users"
-msgstr "korisnici"
-
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Osobni podaci"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Privilegije"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Važni datumi"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Grupe"
-
-#: contrib/auth/models.py:316
-msgid "message"
-msgstr "poruka"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Niste logirani"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:169
-msgid "object ID"
-msgstr "ID objekta"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "naslov"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:170
-msgid "comment"
-msgstr "komentar"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "ocjena #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "ocjena #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "ocjena #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "ocjena #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "ocjena #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "ocjena #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "ocjena #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "ocjena #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "ocjena je ispravana"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:172
-msgid "date/time submitted"
-msgstr "datum/vrijeme unosa"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:173
-msgid "is public"
-msgstr "javno dostupno"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "uklonjeno"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Uključite ako je komentar neprikladan. Umjesto komentara biti će prikazana "
-"poruka \"Komentar je uklonjen.\"."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "komentari"
-
-#: contrib/comments/models.py:134 contrib/comments/models.py:213
-msgid "Content object"
-msgstr "Objekt sadržaja"
-
-#: contrib/comments/models.py:162
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Napisao %(user)s dana %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:171
-msgid "person's name"
-msgstr "ime osobe"
-
-#: contrib/comments/models.py:174
-msgid "ip address"
-msgstr "ip adresa"
-
-#: contrib/comments/models.py:176
-msgid "approved by staff"
-msgstr "odobreno od strane osoblja"
-
-#: contrib/comments/models.py:179
-msgid "free comment"
-msgstr "slobodan komentar"
-
-#: contrib/comments/models.py:180
-msgid "free comments"
-msgstr "slobodni komentari"
-
-#: contrib/comments/models.py:239
-msgid "score"
-msgstr "rezultat"
-
-#: contrib/comments/models.py:240
-msgid "score date"
-msgstr "datum rezultata"
-
-#: contrib/comments/models.py:243
-msgid "karma score"
-msgstr "karma rezultat"
-
-#: contrib/comments/models.py:244
-msgid "karma scores"
-msgstr "karma rezultati"
-
-#: contrib/comments/models.py:248
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d ocjena po %(user)s"
-
-#: contrib/comments/models.py:264
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ovaj komentar je označio %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:271
-msgid "flag date"
-msgstr "označeno datuma"
-
-#: contrib/comments/models.py:274
-msgid "user flag"
-msgstr "korisnička oznaka"
-
-#: contrib/comments/models.py:275
-msgid "user flags"
-msgstr "korisničke oznake"
-
-#: contrib/comments/models.py:279
-#, python-format
-msgid "Flag by %r"
-msgstr "Oznaka po %r"
-
-#: contrib/comments/models.py:284
-msgid "deletion date"
-msgstr "datum brisanja"
-
-#: contrib/comments/models.py:286
-msgid "moderator deletion"
-msgstr "brisanje moderatora"
-
-#: contrib/comments/models.py:287
-msgid "moderator deletions"
-msgstr "brisanja moderatora"
-
-#: contrib/comments/models.py:291
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Brisanje moderatora po %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Zaboravili ste lozinku?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Ocjene"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obavezno"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Izborno, nije obavezno"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Pošalji sliku"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Pregled komentara"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Vaše ime:"
-
-#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Ova ocjena je obavezna jer ste bar jednom već ocjenjivali"
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Ovaj komentar je napisao korisnik koji je napisao manje od %(count)s "
-"komentara:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Ovaj komentar je napisao korisnik koji je napisao manje od %(count)s "
-"komentara:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ovaj komentar je napisao nedorečen korisnik:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Samo POST dopušten."
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Jedno ili više obaveznih polja nisu poslana"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Netko je mijenjao formu komentara (sigurnosni propust)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Forma komentara ima nepravilni 'target' parametar -- ID objekta je bio "
-"nepravilan"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Forma komentara nije imala ni 'preview' ni 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonimni korisnici ne mogu glasati"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Neispravan ID komentara"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Ne možete glasati za sebe"
-
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr "ime klase (class) python modela"
-
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "tipovi sadržaja"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Primjer: '/about/contact/'. Provjerite ako imate prvi i preostale slash-eve "
-"(/)."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "naslov"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "sadržaj"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "uključi komentare"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "ime template-a"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Primjer: 'flatpages/contact_page.html'. Ako navedeno nije definirano sistem "
-"će koristiti 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registracija obavezna"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ako je ovo selektirano samo logirani korisnici moći će vidjeti ovu stranicu."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "statična stranica"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "statične stranice"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "st"
-msgstr "st"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "nd"
-msgstr "nd"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:52
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milijun"
-msgstr[1] "%(value).1f milijuna"
-
-#: contrib/humanize/templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milijarda"
-msgstr[1] "%(value).1f milijarde"
-
-#: contrib/humanize/templatetags/humanize.py:58
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilijun"
-msgstr[1] "%(value).1f bilijuna"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "one"
-msgstr "jedan"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "two"
-msgstr "dva"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "three"
-msgstr "tri"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "four"
-msgstr "četiri"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "five"
-msgstr "pet"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "six"
-msgstr "šest"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "seven"
-msgstr "sedam"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "eight"
-msgstr "osam"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "nine"
-msgstr "devet"
-
-#: contrib/humanize/templatetags/humanize.py:94
-msgid "today"
-msgstr "danas"
-
-#: contrib/humanize/templatetags/humanize.py:96
-msgid "tomorrow"
-msgstr "sutra"
-
-#: contrib/humanize/templatetags/humanize.py:98
-msgid "yesterday"
-msgstr "jučer"
-
-#: contrib/localflavor/ar/forms.py:28
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Unesi ispravan poštanski broj formata NNNN ili ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Ovo polje zahtjeva samo brojeve."
-
-#: contrib/localflavor/ar/forms.py:51
-msgid "This field requires 7 or 8 digits."
-msgstr "Ovo polje zahtjeva 7 ili 8 numeričkih znakova."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Unesite ispravan CUIT formata XX-XXXXXXXX-X ili XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:81
-msgid "Invalid CUIT."
-msgstr "Neispravan CUIT."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Unesite poštanski kod sa 4 numerička znaka."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Unesite zip kod formata XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefonski brojevi moraju biti formata XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "Izaberite ispravnu brazilsku državu. Država nije jedna od dostupnih "
-"država."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Neispravan CPF broj."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Ovo polje zahtjeva najviše 11 numeričkih znakova ili 14 slova."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Neispravan CNPJ broj."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Ovo polje zahtjeva bar 14 numeričkih znakova"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Unesi poštanski broj formata XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Unesite valjani kanadski broj socijalnog osiguranja formata XXX-XXX-XXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Geneva"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Unesite zip kod formata XXXX."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr "Unesite ispravan švicarski identifikacijski broj ili broj putovnice formata X1234567<0 ili "
-"1234567890"
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Unesi ispravan čileanski RUT"
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Unesi ispravan čileanski RUT formata XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Čileanski RUT nije ispravan."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavaria"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Lower Saxony"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "North Rhine-Westphalia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxony"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxony-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thuringia"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Unesite zip kod formata XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr "Unesite broj njemačke identifikacijske kartice formata XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Avila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Illes Balears"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Caceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castello"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Cordoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaen"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Leon"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Malaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Seville"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusia"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragon"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principality of Asturias"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Balearic Islands"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Basque Country"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Canary Islands"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castile-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castile and Leon"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalonia"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Region of Murcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Foral Community of Navarre"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valencian Community"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Unesi ispravan poštanski broj u rasponu i formatu od 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Unesite ispravan broj telefona u jednom od formata 6XXXXXXXX, 8XXXXXXXX ili "
-"9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Unesite ispravan NIF, NIE ili CIF."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Molim unesite ispravan NIF ili NIE."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Neispravan checksum za NIF"
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Neispravan checksum za NIF"
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Neispravan checksum za CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Molim unesite ispravan broj bankovnog računa formata XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Neispravan checksum za broj bankovnog računa."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Unesi ispravan broj finskog socijalnog osiguranja."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Unesi ispravan zip kod formata XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Unesite ispravan islandski identifikacijski broj formata XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Islandski identifikacijski broj nije ispravan."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Unesite ispravan zip kod."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Unesite ispravan broj socijalnog osiguranja."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Unesite ispravan VAT broj."
-
-#: contrib/localflavor/jp/forms.py:19
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Unesite poštanski broj formata XXXXXXX or XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estado de México"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Unesite ispravan poštanski broj"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Unesite ispravan telefonski broj"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Unesite ispravan SoFi broj"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Unesite ispravan broj norveškog socijalnog osiguranja."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Ovo polje zahtjeva 8 numeričkih znakova."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Ovo polje zahtjeva 11 numeričkih znakova."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "Nacionalni identifikacijski broj sadrži 11 numeričkih znakova."
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Neispravan checksum za Nacionalni identifikacijski broj."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Unesite ispravan porezni broj (NIP) formata XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Neispravan checksum za porezni broj (NIP)."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "National Business Register Number (REGON) sastoji se od 7 ili 9 numeričkih znakova."
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Neispravan checked za National Business Register Number (REGON)."
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Unesi poštanski broj formata XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Lower Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Lesser Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpatia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Greater Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "West Pomerania"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Unesi ispravan poštanski broj formata XXXXX or XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banska Bystrica regija"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Bratislava regija"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Kosice regija"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nitra regija"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Presov regija"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trencin regija"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava regija"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Zilina regija"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Unesite ispravan poštanski broj."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Greater London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "Country Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Central Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Engleska"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Sjeverna irska"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Škotska"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Wales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Unesite zip kod formata XXXXX or XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Unesi ispravan broj socijalnog osiguranja S.A.D.-a formata XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Unesi ispravan južnoafrički ID broj."
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Unesite ispravan južnoafrički poštanski broj."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Eastern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "preusmjeri od"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ovo bi trebala biti apsolutna putanja, bez imena domene. Primjer: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "preusmjeri na"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ovo može biti ili apsolutna putanja (kao gore) ili potpuni URL koji počinje "
-"sa 'http://'"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "preusmjeri"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "preusmjeravanja"
-
-#: contrib/sessions/models.py:46
-msgid "session key"
-msgstr "session ključ (key)"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "session podaci"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "ističe na datum"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "session"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sessions"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "ime domene"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "ime za prikaz"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr "stranica"
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr "stranice"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Ova vrijednost može sadržavati samo slova, brojeve i povlaku."
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Ova vrijednost može sadržavati samo slova, brojeve, povlaku, crtice ili "
-"slashes (/)."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Ova vrijednost može sadržavati samo slova, brojeve, povlake ili hyphens."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Velika slova ovdje nisu dopuštena."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Mala slova ovdje nisu dopuštena"
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Unesite samo brojeve razdvojene zarezom."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Unesite ispravne e-mail adrese odvojene zarezom."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Unesite ispravnu IP adresu."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Prazne vrijednosti nisu dopuštene ovdje."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Dozvoljeni su samo numerički znakovi."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Ova vrijednost ne može sadržavati samo brojeve."
-
-#: core/validators.py:128 newforms/fields.py:151
-msgid "Enter a whole number."
-msgstr "Unesite cijeli broj."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Dozvoljena su samo slova abecede."
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Godina mora biti 1900 ili poslije."
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Neispravan datum: %s"
-
-#: core/validators.py:156 db/models/fields/__init__.py:509
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Unesite ispravan datum u formatu YYYY-MM-DD."
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Unesite ispravno vrijeme u HH:MM formatu."
-
-#: core/validators.py:165 db/models/fields/__init__.py:583
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Unesite ispravan datum/vrijeme u formatu YYYY-MM-DD HH:MM."
-
-#: core/validators.py:170 newforms/fields.py:402
-msgid "Enter a valid e-mail address."
-msgstr "Unesite ispravnu e-mail adresu."
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:432
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Datoteka nije poslana. Provjerite 'encoding type' forme."
-
-#: core/validators.py:193 newforms/fields.py:456
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Upload-ajte ispravnu sliku. Datoteka koju ste upload-ali ili nije slika ili "
-"je oštečena."
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s ne vodi na ispravnu sliku."
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" nije ispravan "
-"format."
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s ne vodi na ispravan QuickTime video."
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr "Ispravan URL je obavezan."
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr "Ispravan HTML je obavezan. Pogreške:<br> %s"
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Loše formatiran XML: %s"
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Neispravan URL: %s"
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s je neispravan (broken) link."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Unesite ispravanu kraticu za državu S.A.D.-a."
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pazite na izražavanje! Riječ %s nije dopuštena."
-msgstr[1] "Pazite na izražavanje! Riječi %s nisu dopuštene."
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Ovo polje mora biti jednako %s polju."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Molim unesite nešto bar za jedno polje."
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Molim unesite vrijednosti za oba polja ili ostavite oba polja prazna."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Ovo polje mora biti ispunjeno ako je %(field)s %(value)s"
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Ovo polje je obavezno ako je %(field)s različito od %(value)s"
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Duplicirane vrijednosti nisu dopuštene."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Vrijednost mora biti između %(lower)s i %(upper)s."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Vrijednost mora biti bar %s."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Vrijednost ne može biti veća od %s."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Ova vrijednost mora biti %s na kvadrat."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Molim unesite ispravan decimalni broj."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Molim unesite ispravan decimalni broj sa najviše %s numerička znaka."
-msgstr[1] "Molim unesite ispravan decimalni broj sa najviše %s numeričkih znakova."
-
-#: core/validators.py:447
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Molim unesite ispravan decimalni broj sa najviše %s numerička znaka u cijelom dijelu."
-msgstr[1] "Molim unesite ispravan decimalni broj sa najviše %s numeričkih znakova u cijelom dijelu."
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Molim unesite ispravan decimalni broj sa najviše %s decimalna mjesta."
-msgstr[1] "Molim unesite ispravan decimalni broj sa najviše %s decimalnih mjesta."
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Molim unesite ispravan broj sa pomičnim zarezom (floating point number)."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Provjerite je li Vaša upload-ana datoteka bar %s byte-ova velika."
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Provjerite je li Vaša upload-ana datoteka najviše %s byte-ova velika."
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "Format za ovo polje je pogrešno."
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "Ovo polje je neispravno."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Ništa nije izvučeno iz %s."
-
-#: core/validators.py:539
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s je vratio neispravan Content-Type header '%(contenttype)s'."
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Molim zatvorite %(tag)s na liniji %(line)s. (Linija počinje sa "
-"\"%(start)s\".)"
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Neki tekst koji počinje na liniji %(line)s nije dopušten u tom kontekstu. (Linija "
-"počinje sa \"%(start)s\".)"
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" na liniji %(line)s je neispravan atribut. (Linija počinje sa \"%"
-"(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" na liniji %(line)s je neispravan tag. (Linija počinje sa \"%"
-"(start)s\".)"
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Tagu na liniji %(line)s nedostaje jedan ili više obaveznih atributa. (Linija "
-"počinje sa \"%(start)s\".)"
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"\"%(attr)s\" atribut na liniji %(line)s ima neispravnu vrijednost. (Linija "
-"počinje sa \"%(start)s\".)"
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s sa %(type)s već postoji za navedeno %(field)s."
-
-#: db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s sa navedenim %(fieldname)s već postoji."
-
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:318
-#: db/models/fields/__init__.py:735 db/models/fields/__init__.py:746
-#: newforms/fields.py:45 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Unos za ovo polje je obavezno."
-
-#: db/models/fields/__init__.py:418
-msgid "This value must be an integer."
-msgstr "Vrijednost mora biti cijeli broj."
-
-#: db/models/fields/__init__.py:454
-msgid "This value must be either True or False."
-msgstr "Vrijednost mora biti True ili False."
-
-#: db/models/fields/__init__.py:475
-msgid "This field cannot be null."
-msgstr "Ovo polje ne može biti null."
-
-#: db/models/fields/__init__.py:644
-msgid "This value must be a decimal number."
-msgstr "Vrijednost mora biti decimalan broj."
-
-#: db/models/fields/__init__.py:755
-msgid "Enter a valid filename."
-msgstr "Unesite ime datoteke koja postoji."
-
-#: db/models/fields/__init__.py:904
-msgid "This value must be either None, True or False."
-msgstr "Vrijednost mora biti None, True ili False."
-
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Molim unesite ispravan %s."
-
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr "Odvojite više ID-a zarezom."
-
-#: db/models/fields/related.py:660
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Držite \"Control\", ili \"Command\" na Mac-u, da bi odabrali više od "
-"jednog objekta."
-
-#: db/models/fields/related.py:707
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Molim unesite ispravan %(self)s ID-eve. Vrijednost %(value)r je neispravna."
-msgstr[1] "Molim unesite ispravan %(self)s ID-eve. Vrijednosti %(value)r su neispravne."
-
-#: newforms/fields.py:46
-msgid "Enter a valid value."
-msgstr "Unesite ispravnu vrijednost."
-
-#: newforms/fields.py:123
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Osigurajte da ova vrijednost ima najviše %(max)d znakova (ima %(length)d)."
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Osigurajte da ova vrijednost ima najmanje %(min)d znakova (ima %(length)d)."
-
-#: newforms/fields.py:152 newforms/fields.py:181 newforms/fields.py:210
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Osigurajte da je ova vrijednost manja ili jednaka %s."
-
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Osigurajte da je ova vrijednost veća ili jednaka %s."
-
-#: newforms/fields.py:180 newforms/fields.py:209
-msgid "Enter a number."
-msgstr "Unesite broj."
-
-#: newforms/fields.py:212
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Osigurajte da ukupno nema više od %s numeričkih znakova."
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Osigurajte da ukupno nema više od %s decimalnih mjesta."
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Osigurajte da ukupno nema više od %s numeričkih znakova prije decimalne točke."
-
-#: newforms/fields.py:262 newforms/fields.py:719
-msgid "Enter a valid date."
-msgstr "Unesite ispravan datum."
-
-#: newforms/fields.py:295 newforms/fields.py:720
-msgid "Enter a valid time."
-msgstr "Unesite ispravno vrijeme."
-
-#: newforms/fields.py:334
-msgid "Enter a valid date/time."
-msgstr "Unesite ispravan datum/vrijeme."
-
-#: newforms/fields.py:433
-msgid "No file was submitted."
-msgstr "Datoteka nije poslana."
-
-#: newforms/fields.py:434 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Poslana datoteka je prazna."
-
-#: newforms/fields.py:492
-msgid "Enter a valid URL."
-msgstr "Unesite ispravan URL."
-
-#: newforms/fields.py:493
-msgid "This URL appears to be a broken link."
-msgstr "Izgleda da je URL neispravan."
-
-#: newforms/fields.py:555 newforms/models.py:317
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izaberite ispravnu opciju. Ta opcija nije jedna od dostupnih opcija."
-
-#: newforms/fields.py:594
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Odaberite iz ponuđenog. %(value)s nije ponuđen kao opcija."
-
-#: newforms/fields.py:595 newforms/fields.py:657 newforms/models.py:377
-msgid "Enter a list of values."
-msgstr ""
-
-#: newforms/fields.py:748
-msgid "Enter a valid IPv4 address."
-msgstr "Unesite ispravnu IPv4 adresu."
-
-#: newforms/models.py:378
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Odaberite iz ponuđenog. %s nije ponuđen kao opcija."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Osigurajte da tekst sadrži manje od %s znaka."
-msgstr[1] "Osigurajte da tekst sadrži manje od %s znakova."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Novi redovi ovdje nisu dozvoljeni."
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Odaberite iz ponuđenog; '%(data)s' nije u %(choices)s."
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Unesite cijeli broj između -32,768 i 32,767."
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Unesite pozitivan broj."
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Unesite cijeli broj između 0 i 32,767."
-
-#: template/defaultfilters.py:683
-msgid "yes,no,maybe"
-msgstr "da,ne,možda"
-
-#: template/defaultfilters.py:714
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajta"
-
-#: template/defaultfilters.py:716
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:718
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:719
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "popodne"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "ujutro"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "popodne"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "ujutro"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "ponoć"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "podne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Ponedjeljak"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Utorak"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Srijeda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Četvrtak"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Petak"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Subota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Nedjelja"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Pon"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Uto"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Sri"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Čet"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Pet"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sub"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Ned"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Siječanj"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Veljača"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Ožujak"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "Travanj"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Svibanj"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Lipanj"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Srpanj"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Kolovoz"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Rujan"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Listopad"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Studeni"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Prosinac"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "sij."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "velj."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "ožu."
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "tra."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "svi."
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "lip."
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "srp."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "kol."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ruj."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "lis."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "stu."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "pro."
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Sij."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Velj."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Kol."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Ruj."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Lis."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Stu."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Pro."
-
-#: utils/text.py:127
-msgid "or"
-msgstr "ili"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "godina"
-msgstr[1] "godine"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mjesec"
-msgstr[1] "mjeseci"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "tjedan"
-msgstr[1] "tjedani"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dan"
-msgstr[1] "dani"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "sat"
-msgstr[1] "sati"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuta"
-msgstr[1] "minute"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuta"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:399
-msgid "DATE_FORMAT"
-msgstr "DATE_FORMAT"
-
-#: utils/translation/trans_real.py:400
-msgid "DATETIME_FORMAT"
-msgstr "DATETIME_FORMAT"
-
-#: utils/translation/trans_real.py:401
-msgid "TIME_FORMAT"
-msgstr "TIME_FORMAT"
-
-#: utils/translation/trans_real.py:417
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:418
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s je uspješno kreirano."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s je uspješno promijenjeno."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s je izbrisano."
-
diff --git a/webapp/django/conf/locale/hr/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/hr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 30f7c19..0000000
--- a/webapp/django/conf/locale/hr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/hr/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/hr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 5ad8993..0000000
--- a/webapp/django/conf/locale/hr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,117 +0,0 @@
-# translation of djangojs.po to Hrvatski jezik
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-13 11:13+1000\n"
-"PO-Revision-Date: 2008-06-17 23:45+0100\n"
-"Last-Translator: Aljosa Mohorovic <aljosa.mohorovic@gmail.com>\n"
-"Language-Team: Hrvatski jezik\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Dostupno %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Odaberi sve"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Dodaj"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Ukloni"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Odabrano %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Odaberi iz izbora i klikni "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Očisti sve"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Siječanj Veljača Ožujak Travanj Svibanj Lipanj Srpanj Kolovoz Rujan Listopad Studeni Prosinac"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Nedjelja Ponedjeljak Utorak Srijeda Četvrtak Petak Subota"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "N P U S Č P S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Sada"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Sat"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Izaberite vrijeme"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Ponoć"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 ujutro"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Podne"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Odustani"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Danas"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalendar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Jučer"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Sutra"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Prikaži"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Sakri"
-
diff --git a/webapp/django/conf/locale/hu/LC_MESSAGES/django.mo b/webapp/django/conf/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 60c544a..0000000
--- a/webapp/django/conf/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/hu/LC_MESSAGES/django.po b/webapp/django/conf/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 2f1d10a..0000000
--- a/webapp/django/conf/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,3497 +0,0 @@
-# translation of django.po to Hungarian
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-21 02:23+0200\n"
-"PO-Revision-Date: 2007-08-21 02:28+0200\n"
-"Last-Translator: Szilveszter Farkas <szilveszter.farkas@gmail.com>\n"
-"Language-Team: Hungarian <hu@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-
-#: oldforms/__init__.py:373 db/models/fields/__init__.py:156
-#: db/models/fields/__init__.py:313 db/models/fields/__init__.py:721
-#: db/models/fields/__init__.py:732 newforms/models.py:193
-#: newforms/fields.py:92 newforms/fields.py:490 newforms/fields.py:566
-#: newforms/fields.py:577
-msgid "This field is required."
-msgstr "Ennek a mezőnek a megadása kötelező."
-
-#: oldforms/__init__.py:408
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "A szövegnek rövidebbnek kell lennie %s karakternél."
-msgstr[1] "A szövegnek rövidebbnek kell lennie %s karakternél."
-
-#: oldforms/__init__.py:413
-msgid "Line breaks are not allowed here."
-msgstr "Sortörések itt nem megengedettek."
-
-#: oldforms/__init__.py:511 oldforms/__init__.py:585 oldforms/__init__.py:624
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Válasszon egy érvényes elemet, '%(data)s' nincs ezek között: %(choices)s."
-
-#: oldforms/__init__.py:591 newforms/widgets.py:188
-#: contrib/admin/filterspecs.py:152
-msgid "Unknown"
-msgstr "Ismeretlen"
-
-#: oldforms/__init__.py:591 newforms/widgets.py:188
-#: contrib/admin/filterspecs.py:145
-msgid "Yes"
-msgstr "Igen"
-
-#: oldforms/__init__.py:591 newforms/widgets.py:188
-#: contrib/admin/filterspecs.py:145
-msgid "No"
-msgstr "Nem"
-
-#: oldforms/__init__.py:686 core/validators.py:181 core/validators.py:461
-#: newforms/fields.py:376
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nem küldött el fájlt. Ellenőrizze a kódolás típusát az űrlapon."
-
-#: oldforms/__init__.py:688 newforms/fields.py:380
-msgid "The submitted file is empty."
-msgstr "A küldött fájl üres."
-
-#: oldforms/__init__.py:744
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Írjon be egy egész számot -32 768 és 32 767 között."
-
-#: oldforms/__init__.py:754
-msgid "Enter a positive number."
-msgstr "Írjon be egy pozitív számot."
-
-#: oldforms/__init__.py:764
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Írjon be egy egész számot 0 és 32 767 között."
-
-#: db/models/manipulators.py:309
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "A megadott %(field)s mezőhöz már létezik %(type)s típusú %(object)s elem."
-
-#: db/models/manipulators.py:310 core/validators.py:275
-#: contrib/admin/views/main.py:342 contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-msgid "and"
-msgstr "és"
-
-# TODO
-#: db/models/fields/__init__.py:49
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s ezzel a(z) %(fieldname)s már létezik."
-
-#: db/models/fields/__init__.py:411
-msgid "This value must be an integer."
-msgstr "Az értéknek egész számnak kell lennie."
-
-#: db/models/fields/__init__.py:446
-msgid "This value must be either True or False."
-msgstr "Az értéknek igaznak (True) vagy hamisnak (False) kell lennie."
-
-#: db/models/fields/__init__.py:467
-msgid "This field cannot be null."
-msgstr "Ez a mező nem lehet nulla."
-
-#: db/models/fields/__init__.py:501 core/validators.py:155
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Írjon be egy érvényes dátumot 'ÉÉÉÉ-HH-NN' alakban."
-
-#: db/models/fields/__init__.py:570 core/validators.py:164
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Írjon be egy érvényes dátumot/időt 'ÉÉÉÉ-HH-NN ÓÓ-PP' alakban."
-
-#: db/models/fields/__init__.py:631
-msgid "This value must be a decimal number."
-msgstr "Az értéknek decimálisnak kell lennie."
-
-#: db/models/fields/__init__.py:741
-msgid "Enter a valid filename."
-msgstr "Adjon meg egy érvényes fájlnevet."
-
-#: db/models/fields/__init__.py:883
-msgid "This value must be either None, True or False."
-msgstr ""
-"Az értéknek semminek (None), igaznak (True), vagy hamisnak (False) kell "
-"lennie."
-
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Adjon meg egy érvényes %s értéket."
-
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr "Az ID-ket vesszővel válassza el."
-
-#: db/models/fields/related.py:660
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Tartsa lenyomva a \"Control\"-t (vagy Mac-en a \"Command\"-ot) több elem "
-"kiválasztásához."
-
-#: db/models/fields/related.py:707
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Írjon be érvényes %(self)s ID-t. A mostani érték érvénytelen: %(value)r."
-msgstr[1] ""
-"Írjon be érvényes %(self)s ID-ket. A mostani értékek érvénytelenek: %(value)"
-"r."
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arab"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengáli"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Bolgár"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "Katalán"
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "Cseh"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "Walesi"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Dán"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "Német"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "Görög"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "Angol"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Spanyol"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Argentín spanyol"
-
-#: conf/global_settings.py:51
-msgid "Persian"
-msgstr "Perzsa"
-
-#: conf/global_settings.py:52
-msgid "Finnish"
-msgstr "Finn"
-
-#: conf/global_settings.py:53
-msgid "French"
-msgstr "Francia"
-
-#: conf/global_settings.py:54
-msgid "Galician"
-msgstr "Gall"
-
-#: conf/global_settings.py:55
-msgid "Hungarian"
-msgstr "Magyar"
-
-#: conf/global_settings.py:56
-msgid "Hebrew"
-msgstr "Héber"
-
-#: conf/global_settings.py:57
-msgid "Croatian"
-msgstr "Horvát"
-
-#: conf/global_settings.py:58
-msgid "Icelandic"
-msgstr "Izlandi"
-
-#: conf/global_settings.py:59
-msgid "Italian"
-msgstr "Olasz"
-
-#: conf/global_settings.py:60
-msgid "Japanese"
-msgstr "Japán"
-
-#: conf/global_settings.py:61
-msgid "Korean"
-msgstr "Koreai"
-
-#: conf/global_settings.py:62
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:63
-msgid "Latvian"
-msgstr "Litván"
-
-#: conf/global_settings.py:64
-msgid "Macedonian"
-msgstr "Macedón"
-
-#: conf/global_settings.py:65
-msgid "Dutch"
-msgstr "Holland"
-
-#: conf/global_settings.py:66
-msgid "Norwegian"
-msgstr "Norvég"
-
-#: conf/global_settings.py:67
-msgid "Polish"
-msgstr "Lengyel"
-
-#: conf/global_settings.py:68
-msgid "Portugese"
-msgstr "Portugál"
-
-#: conf/global_settings.py:69
-msgid "Brazilian"
-msgstr "Brazil"
-
-#: conf/global_settings.py:70
-msgid "Romanian"
-msgstr "Román"
-
-#: conf/global_settings.py:71
-msgid "Russian"
-msgstr "Orosz"
-
-#: conf/global_settings.py:72
-msgid "Slovak"
-msgstr "Szlovák"
-
-#: conf/global_settings.py:73
-msgid "Slovenian"
-msgstr "Szlovén"
-
-#: conf/global_settings.py:74
-msgid "Serbian"
-msgstr "Szerb"
-
-#: conf/global_settings.py:75
-msgid "Swedish"
-msgstr "Svéd"
-
-#: conf/global_settings.py:76
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:77
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:78
-msgid "Turkish"
-msgstr "Török"
-
-#: conf/global_settings.py:79
-msgid "Ukrainian"
-msgstr "Ukrán"
-
-#: conf/global_settings.py:80
-msgid "Simplified Chinese"
-msgstr "Egyszerű kínai"
-
-#: conf/global_settings.py:81
-msgid "Traditional Chinese"
-msgstr "Hagyományos kínai"
-
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Az érték csak betűket, számokat és aláhúzást tartalmazhat."
-
-#: core/validators.py:75
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "Az érték csak betűket, számokat, aláhúzást és perjelet tartalmazhat."
-
-#: core/validators.py:79
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Az érték csak betűket, számokat, aláhúzást és kötőjelet tartalmazhat."
-
-#: core/validators.py:83
-msgid "Uppercase letters are not allowed here."
-msgstr "Nagybetűk itt nem megengedettek."
-
-#: core/validators.py:87
-msgid "Lowercase letters are not allowed here."
-msgstr "Kisbetűk itt nem megengedettek."
-
-#: core/validators.py:94
-msgid "Enter only digits separated by commas."
-msgstr "Csak számokat adjon meg, vesszővel elválasztva."
-
-#: core/validators.py:106
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Érvényes e-mail címeket adjon meg, vesszővel elválasztva."
-
-#: core/validators.py:110
-msgid "Please enter a valid IP address."
-msgstr "Írjon be egy érvényes IP címet."
-
-#: core/validators.py:114
-msgid "Empty values are not allowed here."
-msgstr "Üres érték itt nem megengedett."
-
-#: core/validators.py:118
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Nem szám karakterek itt nem megengedettek."
-
-#: core/validators.py:122
-msgid "This value can't be comprised solely of digits."
-msgstr "Ez az érték nem tartalmazhat kizárólag számokat."
-
-#: core/validators.py:127 newforms/fields.py:142
-msgid "Enter a whole number."
-msgstr "Adjon meg egy egész számot."
-
-#: core/validators.py:131
-msgid "Only alphabetical characters are allowed here."
-msgstr "Itt csak betűk megengedettek."
-
-#: core/validators.py:146
-msgid "Year must be 1900 or later."
-msgstr "Az évnek 1900-nak vagy későbbinek kell lennie."
-
-#: core/validators.py:150
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Érvénytelen dátum: %s"
-
-#: core/validators.py:160
-msgid "Enter a valid time in HH:MM format."
-msgstr "Írjon be egy érvényes időt 'ÓÓ:PP' alakban."
-
-#: core/validators.py:169 newforms/fields.py:336
-msgid "Enter a valid e-mail address."
-msgstr "Írjon be egy érvényes e-mail címet."
-
-#: core/validators.py:185 newforms/fields.py:397
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Töltsön fel egy érvényes képfájlt. A feltöltött fájl nem kép volt, vagy "
-"megsérült."
-
-#: core/validators.py:192
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "A hivatkozás (%s) érvénytelen képfájlra mutat."
-
-#: core/validators.py:196
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"A telefonszámoknak 'XXX-XXX-XXXX' formátumúnak kell lenniük. \"%s\" "
-"érvénytelen."
-
-#: core/validators.py:204
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "A hivatkozás (%s) érvénytelen QuickTime videóra mutat."
-
-#: core/validators.py:208
-msgid "A valid URL is required."
-msgstr "Érvényes URL szükséges."
-
-#: core/validators.py:222
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Érvényes HTML kell. A hiba:\n"
-"%s"
-
-#: core/validators.py:229
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Rosszul formázott XML: %s"
-
-#: core/validators.py:246
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Érvénytelen URL: %s"
-
-#: core/validators.py:251 core/validators.py:253
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "A hivatkozás (%s) egy törött link."
-
-#: core/validators.py:259
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Írja be egy érvényes USA állam rövidítését."
-
-#: core/validators.py:273
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Vigyázzon a szájára! Az ilyen szó (%s) itt nem megengedett."
-msgstr[1] "Vigyázzon a szájára! Az ilyen szavak (%s) itt nem megengedettek."
-
-# TODO
-#: core/validators.py:280
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Ennek a mezőnek egyeznie kell a(z) %s mezővel."
-
-#: core/validators.py:299
-msgid "Please enter something for at least one field."
-msgstr "Írjon be valamit legalább egy mezőbe."
-
-#: core/validators.py:308 core/validators.py:319
-msgid "Please enter both fields or leave them both empty."
-msgstr "Töltse ki mindkét mezőt, vagy hagyja üresen mindkettőt."
-
-#: core/validators.py:327
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Ezt a mezőt meg kell adni, ha %(field)s értéke %(value)s"
-
-#: core/validators.py:340
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Ezt a mezőt meg kell adni, ha %(field)s értéke nem %(value)s"
-
-#: core/validators.py:359
-msgid "Duplicate values are not allowed."
-msgstr "Ugyanazok az értékek nem megengedettek."
-
-#: core/validators.py:374
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Az értéknek %(lower)s és %(upper)s között kell lennie."
-
-#: core/validators.py:376
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Az értéknek legalább ennyinek kell lennie: %s."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Az érték nem lehet több ennyinél: %s."
-
-#: core/validators.py:414
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Az értéknek %s hatványának kell lennie."
-
-#: core/validators.py:424
-msgid "Please enter a valid decimal number."
-msgstr "Írjon be egy érvényes decimális számot."
-
-#: core/validators.py:431
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Írjon be egy legalább %s jegyű érvényes decimális számot."
-msgstr[1] "Írjon be egy legalább %s jegyű érvényes decimális számot."
-
-#: core/validators.py:434
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Írjon be egy érvényes decimális számot, legfeljebb %s egész számjeggyel."
-msgstr[1] "Írjon be egy érvényes decimális számot, legfeljebb %s egész számjeggyel."
-
-#: core/validators.py:437
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Írjon be egy érvényes decimális számot, legfeljebb %s tizedessel."
-msgstr[1] "Írj be egy érvényes decimális számot, legfeljebb %s tizedessel."
-
-#: core/validators.py:445
-msgid "Please enter a valid floating point number."
-msgstr "Írj be egy érvényes lebegőpontos számot."
-
-#: core/validators.py:454
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "A feltöltött fájl legalább %s bájt méretű legyen."
-
-#: core/validators.py:455
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "A feltöltött fájl legfeljebb %s bájt méretű lehet."
-
-#: core/validators.py:472
-msgid "The format for this field is wrong."
-msgstr "Ennek a mezőnek rossz a formátuma."
-
-#: core/validators.py:487
-msgid "This field is invalid."
-msgstr "A mező érvénytelen."
-
-#: core/validators.py:523
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nem lehet semmit kinyerni innen: %s."
-
-#: core/validators.py:526
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"A hivatkozás (%(url)s) érvénytelen '%(contenttype)s' Content-Type fejlécet "
-"adott vissza."
-
-#: core/validators.py:559
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Zárja le a nyitott %(tag)s címkét a következő sorban: %(line)s. (A sor "
-"kezdete: \"%(start)s\".)"
-
-#: core/validators.py:563
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Valamely szöveg nem megengedett ebben a környezetben a következő sorban: %"
-"(line)s. (A sor kezdete: \"%(start)s\".)"
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" érvénytelen tulajdonság a következő sorban: %(line)s. (A sor "
-"kezdete: \"%(start)s\".)"
-
-#: core/validators.py:573
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" érvénytelen címke a következő sorban: %(line)s. (A sor "
-"kezdete: \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"A következő sorban lévő címkéről hiányzik egy vagy több kötelező "
-"tulajdonság: %(line)s. (A sor kezdete: \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"A tulajdonság (\"%(attr)s\") érvénytelen a következő sorban: %(line)s. (A "
-"sor kezdete: \"%(start)s\".)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s sikeresen létrehozva."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s sikeresen frissítve."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s törölve."
-
-#: newforms/models.py:180 newforms/fields.py:478
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Válasszon érvényes elemet. Az Ön választása nincs az elérhető lehetőségek "
-"között."
-
-#: newforms/models.py:197 newforms/fields.py:494 newforms/fields.py:570
-msgid "Enter a list of values."
-msgstr "Adja meg értékek egy listáját."
-
-#: newforms/models.py:203 newforms/fields.py:500
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Válasszon érvényes elemet. %s nincs az elérhető lehetőségek között."
-
-#: newforms/fields.py:116
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Bizonyosodjon meg arról, hogy ez az érték legfeljebb %(max)d karaktert "
-"tartalmaz (jelenlegi hossza: %(length)d)."
-
-#: newforms/fields.py:118
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Bizonyosodjon meg arról, hogy ez az érték legalább %(min)d karaktert "
-"tartalmaz (jelenlegi hossza: %(length)d)."
-
-#: newforms/fields.py:144 newforms/fields.py:167 newforms/fields.py:197
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Bizonyosodjon meg arról, hogy az érték %s vagy kisebb."
-
-#: newforms/fields.py:146 newforms/fields.py:169 newforms/fields.py:199
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Bizonyosodjon meg arról, hogy az érték %s vagy nagyobb."
-
-#: newforms/fields.py:165 newforms/fields.py:192
-msgid "Enter a number."
-msgstr "Adj meg egy számot."
-
-#: newforms/fields.py:201
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Bizonyosodjon meg arról, hogy nincs ennél több számjegy: %s."
-
-#: newforms/fields.py:203
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Bizonyosodjon meg arról, hogy nincs ennél több tizedesjegy: %s."
-
-#: newforms/fields.py:205
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr ""
-"Bizonyosodjon meg arról, hogy nincs ennél több számjegy a tizedesvessző "
-"előtt: %s."
-
-#: newforms/fields.py:238 newforms/fields.py:610
-msgid "Enter a valid date."
-msgstr "Adjon meg egy érvényes dátumot."
-
-#: newforms/fields.py:265 newforms/fields.py:612
-msgid "Enter a valid time."
-msgstr "Adjon meg egy érvényes időt."
-
-#: newforms/fields.py:301
-msgid "Enter a valid date/time."
-msgstr "Adjon meg egy érvényes dátumot/időt."
-
-#: newforms/fields.py:314
-msgid "Enter a valid value."
-msgstr "Adjon meg egy érvényes értéket."
-
-#: newforms/fields.py:378
-msgid "No file was submitted."
-msgstr "Semmilyen fájl sem került feltöltésre."
-
-#: newforms/fields.py:403 newforms/fields.py:425
-msgid "Enter a valid URL."
-msgstr "Adjon meg egy érvényes URL-t."
-
-#: newforms/fields.py:427
-msgid "This URL appears to be a broken link."
-msgstr "Ez a hivatkozás törött linknek tűnik."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "th"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "nd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "rd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value)1f millió"
-msgstr[1] "%(value)1f millió"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value)1f milliárd"
-msgstr[1] "%(value)1f milliárd"
-
-#: contrib/humanize/templatetags/humanize.py:56
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value)1f trilliárd"
-msgstr[1] "%(value)1f trilliárd"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "one"
-msgstr "egy"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "two"
-msgstr "kettő"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "three"
-msgstr "három"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "four"
-msgstr "négy"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "five"
-msgstr "öt"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "six"
-msgstr "hat"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "seven"
-msgstr "hét"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "eight"
-msgstr "nyolc"
-
-#: contrib/humanize/templatetags/humanize.py:71
-msgid "nine"
-msgstr "kilenc"
-
-#: contrib/humanize/templatetags/humanize.py:90
-msgid "today"
-msgstr "ma"
-
-#: contrib/humanize/templatetags/humanize.py:92
-msgid "tomorrow"
-msgstr "holnap"
-
-#: contrib/humanize/templatetags/humanize.py:94
-msgid "yesterday"
-msgstr "tegnap"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "átirányítva innen"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ennek abszolút elérési útnak kell lennie, a tartománynév nélkül. Példa: '/"
-"events/search/'"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "átirányítva ide"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ennek vagy abszolút elérési útnak kell lennie (mint fentebb), vagy teljes "
-"URL-nek 'http://'-vel kezdve."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "átirányítás"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "átirányít"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:169
-msgid "object ID"
-msgstr "objektum ID"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "címsor"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:170
-msgid "comment"
-msgstr "megjegyzés"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "besorolás #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "besorolás #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "besorolás #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "besorolás #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "besorolás #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "besorolás #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "besorolás #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "besorolás #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "érvényes besorolás"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:172
-msgid "date/time submitted"
-msgstr "dátum/idő beállítva"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:173
-msgid "is public"
-msgstr "publikus"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306
-msgid "IP address"
-msgstr "IP cím"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "eltávolítva"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Jelöld be a négyzetet, ha a megjegyzés nem megfelelő. Az \"Ezt a megjegyzést "
-"törölték\" üzenet fog megjelenni helyette."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "megjegyzés"
-
-#: contrib/comments/models.py:134 contrib/comments/models.py:213
-msgid "Content object"
-msgstr "Tartalom objektum"
-
-#: contrib/comments/models.py:162
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Beküldte %(user)s ekkor: %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:171
-msgid "person's name"
-msgstr "személy neve"
-
-#: contrib/comments/models.py:174
-msgid "ip address"
-msgstr "IP cím"
-
-#: contrib/comments/models.py:176
-msgid "approved by staff"
-msgstr "személyzet által elfogadva"
-
-#: contrib/comments/models.py:179
-msgid "free comment"
-msgstr "szabad megjegyzés"
-
-#: contrib/comments/models.py:180
-msgid "free comments"
-msgstr "szabad megjegyzések"
-
-#: contrib/comments/models.py:239
-msgid "score"
-msgstr "értékelés"
-
-#: contrib/comments/models.py:240
-msgid "score date"
-msgstr "értékelés dátuma"
-
-#: contrib/comments/models.py:243
-msgid "karma score"
-msgstr "karma értékelés"
-
-#: contrib/comments/models.py:244
-msgid "karma scores"
-msgstr "karma értékelések"
-
-#: contrib/comments/models.py:248
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d értékelés %(user)s felhasználótól"
-
-#: contrib/comments/models.py:264
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ezt a megjegyzést %(user)s jelölte meg:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:271
-msgid "flag date"
-msgstr "jelölés dátuma"
-
-#: contrib/comments/models.py:274
-msgid "user flag"
-msgstr "felhasználó jelölése"
-
-#: contrib/comments/models.py:275
-msgid "user flags"
-msgstr "felhasználó jelölései"
-
-#: contrib/comments/models.py:279
-#, python-format
-msgid "Flag by %r"
-msgstr "Megjelölte %r"
-
-#: contrib/comments/models.py:284
-msgid "deletion date"
-msgstr "törlés dátuma"
-
-#: contrib/comments/models.py:286
-msgid "moderator deletion"
-msgstr "moderátor törlése"
-
-#: contrib/comments/models.py:287
-msgid "moderator deletions"
-msgstr "moderátor törlései"
-
-#: contrib/comments/models.py:291
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Moderátor törlés %r által"
-
-#: contrib/comments/views/karma.py:20
-msgid "Anonymous users cannot vote"
-msgstr "Névtelen felhasználó nem szavazhat"
-
-#: contrib/comments/views/karma.py:24
-msgid "Invalid comment ID"
-msgstr "Érvénytelen megjegyzés ID"
-
-#: contrib/comments/views/karma.py:26
-msgid "No voting for yourself"
-msgstr "Nem szavazhat önmagára"
-
-#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Ez az értékelés szükséges, mert legalább még egy értékelést megadott."
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Ezt a megjegyzést olyan felhasználó küldte akinek kevesebb mint %(count)s "
-"megjegyzése van:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Ezt a megjegyzést olyan felhasználó küldte akinek kevesebb mint %(count)s "
-"megjegyzése van:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ezt a megjegyzést egy nem értékelt felhasználó küldte:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:281
-msgid "Only POSTs are allowed"
-msgstr "Csak POST engedélyezett"
-
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:285
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Egy vagy több kötelező mező nincs kitöltve"
-
-#: contrib/comments/views/comments.py:197
-#: contrib/comments/views/comments.py:287
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Valaki megváltoztatta a megjegyzés űrlapot (biztonság megsértése)"
-
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:293
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"A megjegyzés űrlap érvénytelen 'target' paramétert tartalmaz -- az objektum "
-"ID-je érvénytelen volt"
-
-#: contrib/comments/views/comments.py:258
-#: contrib/comments/views/comments.py:322
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "A megjegyzés űrlap nem biztosít sem 'preview' -t sem 'post' -ot."
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Felhasználó:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Log out"
-msgstr "Kijelentkezés"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Jelszó:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Elfelejtette a jelszavát?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Értékelések"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Kötelező"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcionális"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Fénykép beküldése"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Megjegyzés:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Megjegyzés előnézete"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Név:"
-
-#: contrib/sites/models.py:15
-msgid "domain name"
-msgstr "tartománynév"
-
-#: contrib/sites/models.py:16
-msgid "display name"
-msgstr "megjelenítendő név"
-
-#: contrib/sites/models.py:20
-msgid "site"
-msgstr "honlap"
-
-#: contrib/sites/models.py:21
-msgid "sites"
-msgstr "honlapok"
-
-#: contrib/admin/filterspecs.py:42
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Szerző: %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90
-#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171
-msgid "All"
-msgstr "Mind"
-
-#: contrib/admin/filterspecs.py:111
-msgid "Any date"
-msgstr "Bármely dátum"
-
-#: contrib/admin/filterspecs.py:112
-msgid "Today"
-msgstr "Ma"
-
-#: contrib/admin/filterspecs.py:115
-msgid "Past 7 days"
-msgstr "Utolsó 7 nap"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This month"
-msgstr "Ez a hónap"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This year"
-msgstr "Ez az év"
-
-#: contrib/admin/models.py:17
-msgid "action time"
-msgstr "művelet időpontja"
-
-#: contrib/admin/models.py:20
-msgid "object id"
-msgstr "objektum id"
-
-#: contrib/admin/models.py:21
-msgid "object repr"
-msgstr "objektum repr"
-
-#: contrib/admin/models.py:22
-msgid "action flag"
-msgstr "művelet jelölés"
-
-#: contrib/admin/models.py:23
-msgid "change message"
-msgstr "üzenet módosítása"
-
-#: contrib/admin/models.py:26
-msgid "log entry"
-msgstr "naplóbejegyzés"
-
-#: contrib/admin/models.py:27
-msgid "log entries"
-msgstr "naplóbejegyzések"
-
-#: contrib/admin/templatetags/admin_list.py:254
-msgid "All dates"
-msgstr "Minden dátum"
-
-# TODO
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "\"%(obj)s\" %(name)s sikeresen létrehozva."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268
-#: contrib/admin/views/main.py:354
-msgid "You may edit it again below."
-msgstr "Alább ismét szerkesztheti."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Felhasználó hozzáadása"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Sikeres jelszóváltoztatás."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Jelszó megváltoztatása: %s"
-
-#: contrib/admin/views/main.py:230
-msgid "Site administration"
-msgstr "Honlap karbantartás"
-
-#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363
-#, python-format
-msgid "You may add another %s below."
-msgstr "Alább hozzáadhat egy másikat ebből: %s."
-
-#: contrib/admin/views/main.py:296
-#, python-format
-msgid "Add %s"
-msgstr "Új %s"
-
-#: contrib/admin/views/main.py:342
-#, python-format
-msgid "Added %s."
-msgstr "%s létrehozva."
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Changed %s."
-msgstr "%s módosítva."
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Deleted %s."
-msgstr "%s törölve."
-
-#: contrib/admin/views/main.py:349
-msgid "No fields changed."
-msgstr "Egy mező sem változott."
-
-#: contrib/admin/views/main.py:352
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "\"%(obj)s\" %(name)s sikeresen módosítva."
-
-#: contrib/admin/views/main.py:360
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "\"%(obj)s\" %(name)s sikeresen létrehozva. Alább ismét szerkesztheted."
-
-#: contrib/admin/views/main.py:398
-#, python-format
-msgid "Change %s"
-msgstr "%s módosítása"
-
-# TODO
-#: contrib/admin/views/main.py:483
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Egy vagy több %(fieldname)s a(z) %(name)s -ban: %(obj)s"
-
-# TODO
-#: contrib/admin/views/main.py:488
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Egy vagy több %(fieldname)s a(z) %(name)s:"
-
-#: contrib/admin/views/main.py:520
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "\"%(obj)s\" %(name)s sikeresen törölve."
-
-#: contrib/admin/views/main.py:523
-msgid "Are you sure?"
-msgstr "Biztos benne?"
-
-#: contrib/admin/views/main.py:545
-#, python-format
-msgid "Change history: %s"
-msgstr "Változások története: %s"
-
-#: contrib/admin/views/main.py:579
-#, python-format
-msgid "Select %s"
-msgstr "Kiválasztás %s"
-
-#: contrib/admin/views/main.py:579
-#, python-format
-msgid "Select %s to change"
-msgstr "Válasszon ki egyet a módosításhoz (%s)"
-
-#: contrib/admin/views/main.py:780
-msgid "Database error"
-msgstr "Adatbázis hiba"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Írjon be egy helyes felhasználónevet és jelszót. Mindkét mező kisbetű-"
-"nagybetű érzékeny."
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Bejelentkezés"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Jelentkezzen be újra, mert a munkamenete végetért. Ne aggódjon, minden "
-"beküldött adata el van mentve."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Úgy tűnik a böngészőjében nincs engedélyezve a cookie-k fogadása. Kérem "
-"engedélyezze és töltse újra az oldalt!"
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "A felhasználónév nem tartalmazhat '@' karaktert."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Az email címe nem a felhasználóneve. Próbálja inkább ezt: %s."
-
-#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49
-#: contrib/admin/views/doc.py:51
-msgid "tag:"
-msgstr "címke:"
-
-#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80
-#: contrib/admin/views/doc.py:82
-msgid "filter:"
-msgstr "szűrő:"
-
-#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138
-#: contrib/admin/views/doc.py:140
-msgid "view:"
-msgstr "nézet:"
-
-#: contrib/admin/views/doc.py:165
-#, python-format
-msgid "App %r not found"
-msgstr "%r alkalmazás nem található"
-
-#: contrib/admin/views/doc.py:172
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "%(name)r modell nem található a következő alkalmazásban: %(label)r"
-
-#: contrib/admin/views/doc.py:184
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "a kapcsolódó '%(label)s.%(type)s' objektum"
-
-#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206
-#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225
-msgid "model:"
-msgstr "modell:"
-
-#: contrib/admin/views/doc.py:215
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "kapcsolódó '%(label)s.%(name)sí' objektumok"
-
-#: contrib/admin/views/doc.py:220
-#, python-format
-msgid "all %s"
-msgstr "minden %s"
-
-#: contrib/admin/views/doc.py:225
-#, python-format
-msgid "number of %s"
-msgstr "%s mennyisége"
-
-#: contrib/admin/views/doc.py:230
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Mezők %s objektumokban"
-
-#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303
-#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311
-#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314
-msgid "Integer"
-msgstr "Egész"
-
-#: contrib/admin/views/doc.py:293
-msgid "Boolean (Either True or False)"
-msgstr "Logikai (True vagy False)"
-
-#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Karakterlánc (%(max_length)s hosszig)"
-
-#: contrib/admin/views/doc.py:295
-msgid "Comma-separated integers"
-msgstr "Vesszővel elválasztott egészek"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (without time)"
-msgstr "Dátum (idő nélkül)"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (with time)"
-msgstr "Dátum (idővel)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Decimal number"
-msgstr "Tizes számrendszerű (decimális) szám"
-
-#: contrib/admin/views/doc.py:299
-msgid "E-mail address"
-msgstr "E-mail cím"
-
-#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:304
-msgid "File path"
-msgstr "Elérési út"
-
-#: contrib/admin/views/doc.py:302
-msgid "Floating point number"
-msgstr "Lebegőpontos szám"
-
-#: contrib/admin/views/doc.py:308
-msgid "Boolean (Either True, False or None)"
-msgstr "Logikai (True, False vagy None)"
-
-#: contrib/admin/views/doc.py:309
-msgid "Relation to parent model"
-msgstr "Szülőkapcsolat"
-
-#: contrib/admin/views/doc.py:310
-msgid "Phone number"
-msgstr "Telefonszám"
-
-#: contrib/admin/views/doc.py:315
-msgid "Text"
-msgstr "Szöveg"
-
-#: contrib/admin/views/doc.py:316
-msgid "Time"
-msgstr "Idő"
-
-#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:318
-msgid "U.S. state (two uppercase letters)"
-msgstr "USA állam (két nagybetű)"
-
-#: contrib/admin/views/doc.py:319
-msgid "XML text"
-msgstr "XML szöveg"
-
-#: contrib/admin/views/doc.py:345
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nem tűnik egy urlpattern objektumnak."
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Éppen:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Változás:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Dátum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Idő:"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentáció"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Change password"
-msgstr "Jelszó megváltoztatása"
-
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Kezdőlap"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Új %(name)s"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s szerint "
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "Történet"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Dátum/idő"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Felhasználó"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Művelet"
-
-# TODO
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Az objektumnak nincs változási története. Valószínűleg nem ezen a "
-"karbantartó oldalon lett rögzítve."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Mehet"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "Egy találat."
-msgstr[1] "%(counter)s találat."
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s összesen"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mutassa mindet"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django honlap adminisztráció"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django adminisztráció"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Szerverhiba"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Szerverhiba (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Szerverhiba <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Hiba történt, melyet e-mailben jelentettünk az oldal karbantartójának. A "
-"rendszer remélhetően hamar megjavul. Köszönjük a türelmét."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Valami nem stimmel a telepített adatbázissal. Bizonyosodjon meg arról, hogy "
-"a megfelelő táblák létre lettek-e hozva, és hogy a megfelelő felhasználó "
-"tudja-e őket olvasni."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "%(name)s alkalmazásban elérhető modellek."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Új"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Módosítás"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Nincs joga szerkeszteni."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Utolsó műveletek"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Az én műveleteim"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nincs elérhető"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Nincs ilyen oldal"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Sajnáljuk, de a kért oldal nem található."
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Szűrő"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Megtekintés a honlapon"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Kérem javítsa az alábbi hibát."
-msgstr[1] "Kérlem javítsa az alábbi hibákat."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Rendezés"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Rendezés:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Törlés"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"'%(escaped_object)s' %(object_name)s törlése a kapcsolódó objektumok "
-"törlését is eredményezi, de a hozzáférése nem engedi a következő típusú "
-"objektumok törlését:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Biztos hogy törli a következőt: \"%(escaped_object)s\" (típus: %(object_name)"
-"s)? A összes további kapcsolódó elem is törlődik:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Igen, biztos vagyok benne"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Üdvözlöm,"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Mentés újként"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Mentés és másik hozzáadása"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Mentés és a szerkesztés folytatása"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Mentés"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Adjon meg egy új jelszót a <strong>%(username)s</strong> nevű felhasználónak."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Jelszó"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Jelszó újra"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Írja be a fenti jelszót ellenőrzés céljából."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Először adjon meg egy felhasználói nevet és egy jelszót. Ezek után további "
-"módosításokat is végezhet a felhasználó adatain."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Felhasználó"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Jelszó megváltoztatása"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Sikeres jelszóváltoztatás"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Megváltozott a jelszava."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Jelszó törlése"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Elfelejtette a jelszavát? Írja be az e-mail címét, mi töröljük a jelszavát "
-"és az újat e-mailben elküldjük."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail cím:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Jelszavam törlése"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Köszönjük hogy egy kis időt eltöltött ma a honlapunkon."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Jelentkezzen be újra"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Sikeres jelszótörlés"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Új jelszavát elküldtük e-mailben a megadott címre. Hamarosan meg kell "
-"érkeznie."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Írja be a régi jelszavát biztonsági okokból, majd az újat kétszer, hogy "
-"biztosan ne gépelje el."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Régi jelszó:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Új jelszó:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Jelszó megerősítése:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Jelszavam megváltoztatása"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Ezt az e-mail-t azért kapta, mert jelszótörlést kért"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "hozzáféréséhez a következő honlapon: %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Új jelszava: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Bármikor megváltoztathatja a jelszavát a következő oldalon:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Felhasználóneve, ha elfelejtette volna:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Köszönjük, hogy használta honlapunkat!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s csapat"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Könyvjelzők"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dokumentum könyvjelzők"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">A könyvjelzők felvételéhez húzza a könyvjelzők linkjét az "
-"eszköztárra, vagy kattintson rájuk jobb egérgombbal és úgy adja hozzá. "
-"Ezután \n"
-"már ki tudja választani a könyvjelzőt a honlap bármely oldaláról. A "
-"könyvjelzők között néhány oldal csak \"belső\" gépekről nézhető meg.\n"
-"(Kérdezze meg rendszergazdáját, hogy az Ön gépe \"belső\" gép-e.).</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Az oldal dokumentációja"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Bármely oldalról annak a nézetnek a dokumentációjára ugrik, amely a kérdéses "
-"oldalt generálta."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Az objektum ID mutatása"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Az objektum által reprezentált oldalak 'content-type' és 'unique ID' "
-"értékeit mutatja."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Objektum szerkesztése (aktuális ablakban)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Az objektumhoz tartozó oldalak adminisztrációjához ugrik."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Objektum szerkesztése (új ablakban)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Mint fentebb, de az adminisztrációs oldalt új ablakban nyitja meg."
-
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr "python modell osztály neve"
-
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "tartalom típusa"
-
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "tartalom típusok"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Kijelentkezve"
-
-#: contrib/auth/models.py:53 contrib/auth/models.py:73
-msgid "name"
-msgstr "név"
-
-#: contrib/auth/models.py:55
-msgid "codename"
-msgstr "kódnév"
-
-#: contrib/auth/models.py:58
-msgid "permission"
-msgstr "jogosultság"
-
-#: contrib/auth/models.py:59 contrib/auth/models.py:74
-msgid "permissions"
-msgstr "jogosultságok"
-
-#: contrib/auth/models.py:77
-msgid "group"
-msgstr "csoport"
-
-#: contrib/auth/models.py:78 contrib/auth/models.py:121
-msgid "groups"
-msgstr "csoportok"
-
-#: contrib/auth/models.py:111
-msgid "username"
-msgstr "felhasználónév"
-
-#: contrib/auth/models.py:111
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Kötelező. Legfeljebb 30 karakter. Csak alfanumerikus karaktereket "
-"tartalmazhat (betűk, számok és aláhúzás)."
-
-#: contrib/auth/models.py:112
-msgid "first name"
-msgstr "keresztnév"
-
-#: contrib/auth/models.py:113
-msgid "last name"
-msgstr "vezetéknév"
-
-#: contrib/auth/models.py:114
-msgid "e-mail address"
-msgstr "e-mail cím"
-
-#: contrib/auth/models.py:115
-msgid "password"
-msgstr "jelszó"
-
-#: contrib/auth/models.py:115
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Használja az \"[algo]$[salt]$[hexdigest]\" formátumot, vagy a <a href="
-"\"password/\">jelszó megváltoztatása űrlapot</a>."
-
-#: contrib/auth/models.py:116
-msgid "staff status"
-msgstr "személyzet státusz"
-
-#: contrib/auth/models.py:116
-msgid "Designates whether the user can log into this admin site."
-msgstr "Megadja, hogy a felhasználó bejelentkezhet-e erre az adminisztrációs oldalra."
-
-#: contrib/auth/models.py:117
-msgid "active"
-msgstr "aktív"
-
-#: contrib/auth/models.py:117
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Megadja, hogy a felhasználó bejelentkezhet-e erre az adminisztrációs "
-"oldalra. Állítsa át ezt az értéket a fiókok törlése helyett."
-
-#: contrib/auth/models.py:118
-msgid "superuser status"
-msgstr "rendszergazda státusz"
-
-#: contrib/auth/models.py:118
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Megadja, hogy ez a felhasználó rendelkezik-e minden jogosultsággal anélkül, "
-"hogy azt külön meg kellene adni."
-
-#: contrib/auth/models.py:119
-msgid "last login"
-msgstr "utolsó bejelentkezés"
-
-#: contrib/auth/models.py:120
-msgid "date joined"
-msgstr "csatlakozás dátuma"
-
-#: contrib/auth/models.py:122
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"A kézzel beállított jogosultságok mellett a felhasználó a csoportjának "
-"jogait is megkapja."
-
-#: contrib/auth/models.py:123
-msgid "user permissions"
-msgstr "felhasználói jogosultságok"
-
-#: contrib/auth/models.py:127
-msgid "user"
-msgstr "felhasználó"
-
-#: contrib/auth/models.py:128
-msgid "users"
-msgstr "felhasználók"
-
-#: contrib/auth/models.py:134
-msgid "Personal info"
-msgstr "személyes információ"
-
-#: contrib/auth/models.py:135
-msgid "Permissions"
-msgstr "jogosultságok"
-
-#: contrib/auth/models.py:136
-msgid "Important dates"
-msgstr "Fontos dátumok"
-
-#: contrib/auth/models.py:137
-msgid "Groups"
-msgstr "Csoportok"
-
-#: contrib/auth/models.py:288
-msgid "message"
-msgstr "üzenet"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "A két jelszó mező tartalma nem egyezik meg."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Létezik már egy felhasználó ezzel a névvel."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"A böngészője úgy tűnik nem támogatja a cookie-kat. A cookie-k engedélyezése "
-"szükséges a bejelentkezéshez."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Ez a fiók inaktív."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Ehhez az e-mail címhez nem tartozik felhasználói fiók. Biztos benne, hogy "
-"regisztrált?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "A két \"új jelszó\" mezó tartalma nem egyezik meg."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "A régi jelszó hibásan lett megadva. Írja be újra."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr ""
-"Írjon be egy irányítószámot. Az irányítószám két része között szóköznek kell "
-"állnia."
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Írjon be egy irányítószámot 'XXXXX-XXX' alakban."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "A telefonszámoknak 'XXX-XXX-XXXX' formátumúnak kell lenniük."
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "Ez a mező csak számokat tartalmazhat."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Ez a mező legfeljebb 11 számjegyet vagy 14 karaktert tartalmazhat."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr "Érvénytelen CPF szám."
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "Ennek a mezőnek legalább 14 számjegyet kell tartalmaznia."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr "Érvénytelen CNPJ szám."
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Írjon be egy négyjegyű irányítószámot."
-
-#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Írjon be egy irányítószámot 'XXXXX' alakban."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Írjon be egy irányítószámot 'XXXXX', vagy 'XXXXX-XXXX' alakban."
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Írjon be egy érvényes USA SSN-t 'XXX-XX-XXXX' formátumban."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bajorország"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bréma"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Nyugat-Pomeránia"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Alsó-Szászország"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Észak-Rajna-Vesztfália"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Szárföld"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Szászország"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Szász-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Türingia"
-
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Írjon be egy érvényes német személyazonosító számot \"XXXXXXXXXXX-XXXXXXX-"
-"XXXXXXX-X\" alakban."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tókió"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kiotó"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Oszaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagaszaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Írjon be egy irányítószámot \"XXXXXXX\" vagy \"XXX-XXXX\" alakban."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Bázel-város"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Bázel-vidék"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Genf"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zürich"
-
-#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14
-msgid "Enter a zip code in the format XXXX."
-msgstr "Írjon be egy irányítószámot 'XXXX' alakban."
-
-#: contrib/localflavor/ch/forms.py:90
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Írjon be egy érvényes svájci személyazonosító vagy útlevél számot "
-"\"X1234567<0\" vagy \"1234567890\" alakban."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Írjon be egy érvényes izlandi személyazonosító számot \"XXXXXX-XXXX\" "
-"alakban."
-
-#: contrib/localflavor/is_/forms.py:31
-msgid "The Icelandic identification number is not valid."
-msgstr "Az izlandi személyazonosító szám érvénytelen."
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Adjon meg egy érvényes irányítószámot."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Adjon meg egy érvényes társadalombiztosítási számot."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Adjon meg egy érvényes ÁFA számot."
-
-#: contrib/localflavor/no/forms.py:35
-msgid "Enter a valid Norwegian social security number."
-msgstr "Írjon be egy érvényes norvég társadalombiztosítási számot."
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Besztercebánya régió"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Pozsony régió"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Kassa régió"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nyitra régió"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Presov régió"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trencsén régió"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava régió"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Zsolna régió"
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Besztercebánya"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Pozsony I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Pozsony II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Pozsony III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Pozsony IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Pozsony V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunaszerdahely"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galánta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Késmárk"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komárom"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kassa I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kassa II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kassa III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kassa IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nyitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprád"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimaszombat"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Rozsnyó"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Rózsahegy"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Igló"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sellye"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencsén"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zsolna"
-
-#: contrib/localflavor/sk/forms.py:32
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Írjon be egy irányítószámot \"XXXXX\" vagy \"XXX XX\" alakban."
-
-#: contrib/localflavor/cl/forms.py:32
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Írjon be egy érvényes chilei RUT-ot \"XX.XXX.XXX-X\" alakban."
-
-#: contrib/localflavor/cl/forms.py:37
-msgid "Enter valid a Chilean RUT"
-msgstr "Írjon be egy érvényes chilei RUT-ot"
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr "Adjon meg egy érvényes finn társadalombiztosítási számot."
-
-#: contrib/localflavor/in_/forms.py:16
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Írjon be egy irányítószámot \"XXXXXXX\" alakban."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Alsó-Szilézia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Kis-Lengyelország"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Szubkárpátok"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomeránia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Szilézia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Nagy-Lengyelország"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Nyugat-Pomeránia"
-
-#: contrib/localflavor/pl/forms.py:53
-msgid "National Identification Number consists of 11 digits."
-msgstr "A nemzeti azonosítószám 11 számjegyből áll."
-
-#: contrib/localflavor/pl/forms.py:59
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Hibás a nemzeti azonosítószám ellenőrző kódja."
-
-#: contrib/localflavor/pl/forms.py:71
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Írjon be egy adószámot \"XXX-XXX-XX-XX\" vagy \"XX-XX-XXX-XXX\" alakban."
-
-#: contrib/localflavor/pl/forms.py:82
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Írjon be egy irányítószámot 'XX-XXX' alakban."
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "munkamenet kulcs"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "munkamenet adat"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "lejárat dátuma"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "munkamenet"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "munkamenetek"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Például: '/about/contact/'. Figyeljen a nyitó és záró perjelre!"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "cím"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "tartalom"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "megjegyzések engedélyezése"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "sablon neve"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Példa: 'flatpages/contact_page'. Ha ez nem létezik, a rendszer a 'flatpages/"
-"default.html' sablont fogja használni."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "regisztráció szükséges"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ha ez be van jelölve, csak bejelentkezett felhasználó tudja az oldalt "
-"megnézni."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "egyszerű oldal"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "egyszerű oldalak"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "hétfő"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "kedd"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "szerda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "csütörtök"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "péntek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "szombat"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "vasárnap"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "hét"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "kedd"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "sze"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "csüt"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pén"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "szo"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "vas"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "január"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "február"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "március"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "április"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "május"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "június"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "július"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "augusztus"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "szeptember"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "október"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "febr"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "márc"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ápr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "máj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jún"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "júl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "szept"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "febr."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "szept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "dec."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "év"
-msgstr[1] "év"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "hónap"
-msgstr[1] "hónap"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "hét"
-msgstr[1] "hét"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "nap"
-msgstr[1] "nap"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "óra"
-msgstr[1] "óra"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "perc"
-msgstr[1] "perc"
-
-#: utils/timesince.py:39
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:45
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/text.py:127
-msgid "or"
-msgstr "vagy"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "du"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "de"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "DU"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "DE"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "éjfél"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "dél"
-
-#: utils/translation/trans_real.py:391
-msgid "DATE_FORMAT"
-msgstr "Y. F j."
-
-#: utils/translation/trans_real.py:392
-msgid "DATETIME_FORMAT"
-msgstr "Y. F j., H:i"
-
-#: utils/translation/trans_real.py:393
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:409
-msgid "YEAR_MONTH_FORMAT"
-msgstr "Y. F j."
-
-#: utils/translation/trans_real.py:410
-msgid "MONTH_DAY_FORMAT"
-msgstr "Y. F j."
-
-#: template/defaultfilters.py:485
-msgid "yes,no,maybe"
-msgstr "igen,nem,talán"
-
-#: template/defaultfilters.py:514
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bájt"
-msgstr[1] "%(size)d bájt"
-
-#: template/defaultfilters.py:516
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:518
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:519
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
diff --git a/webapp/django/conf/locale/hu/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/hu/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index e538984..0000000
--- a/webapp/django/conf/locale/hu/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/hu/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/hu/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 26f0232..0000000
--- a/webapp/django/conf/locale/hu/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,111 +0,0 @@
-# translation of djangojs.po to Hungarian
-# translation of djangojs.po to
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2007-09-13 13:30+0200\n"
-"Last-Translator: Szilveszter Farkas <szilveszter.farkas@gmail.com>\n"
-"Language-Team: Hungarian <hu@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Elérhető %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Mindet kijelölni"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Hozzáadás"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Eltávolítás"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s kiválasztva"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Válassza ki a kért elemeket és kattintson"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Összes törlése"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "január február március április május június július augusztus szeptember október november december"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "vasárnap hétfő kedd szerda csütörtök péntek szombat"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "V H K Sz Cs P Szo"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Most"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Óra"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Válassza ki az időt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Éjfél"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "Reggel 6 óra"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Dél"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Mégsem"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Ma"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Naptár"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Tegnap"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Holnap"
-
diff --git a/webapp/django/conf/locale/is/LC_MESSAGES/django.mo b/webapp/django/conf/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 1a95aad..0000000
--- a/webapp/django/conf/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/is/LC_MESSAGES/django.po b/webapp/django/conf/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 82cfa67..0000000
--- a/webapp/django/conf/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4266 +0,0 @@
-# Icelandic translation of Django.
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-18 15:00+0000\n"
-"PO-Revision-Date: 2008-01-18 17:16+0100\n"
-"Last-Translator: Jökull Sólberg Auðunsson <jokullsolberg@gmail.com>\n"
-"Language-Team:  <dagurp@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arabíska"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengalska"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Búlgarska"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "Tékkneska"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "Velska"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Danska"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "Þýska"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "Gríska"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "Enska"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Spænska"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Argentínsk Spænska"
-
-#: conf/global_settings.py:51
-msgid "Persian"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Finnish"
-msgstr "Finnska"
-
-#: conf/global_settings.py:53
-msgid "French"
-msgstr "Franska"
-
-#: conf/global_settings.py:54
-msgid "Gaeilge"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Galician"
-msgstr "Galíska"
-
-#: conf/global_settings.py:56
-msgid "Hungarian"
-msgstr "Ungverska"
-
-#: conf/global_settings.py:57
-msgid "Hebrew"
-msgstr "Hebreska"
-
-#: conf/global_settings.py:58
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Icelandic"
-msgstr "Íslenska"
-
-#: conf/global_settings.py:60
-msgid "Italian"
-msgstr "Ítalska"
-
-#: conf/global_settings.py:61
-msgid "Japanese"
-msgstr "Japanska"
-
-#: conf/global_settings.py:62
-msgid "Korean"
-msgstr ""
-
-#: conf/global_settings.py:63
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:64
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:65
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:66
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:67
-msgid "Dutch"
-msgstr "Hollenska"
-
-#: conf/global_settings.py:68
-msgid "Norwegian"
-msgstr "Norska"
-
-#: conf/global_settings.py:69
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Portugese"
-msgstr "Portúgalska"
-
-#: conf/global_settings.py:71
-msgid "Brazilian"
-msgstr "Brasilíska"
-
-#: conf/global_settings.py:72
-msgid "Romanian"
-msgstr "Rúmenska"
-
-#: conf/global_settings.py:73
-msgid "Russian"
-msgstr "Rússneska"
-
-#: conf/global_settings.py:74
-msgid "Slovak"
-msgstr "Slóvaska"
-
-#: conf/global_settings.py:75
-msgid "Slovenian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Serbian"
-msgstr "Serbneska"
-
-#: conf/global_settings.py:77
-msgid "Swedish"
-msgstr "Sænska"
-
-#: conf/global_settings.py:78
-msgid "Tamil"
-msgstr ""
-
-#: conf/global_settings.py:79
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Turkish"
-msgstr ""
-
-#: conf/global_settings.py:81
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:82
-msgid "Simplified Chinese"
-msgstr "Einfölduð Kínverska "
-
-#: conf/global_settings.py:83
-msgid "Traditional Chinese"
-msgstr "Hefðbundin Kínverska"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Frá %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74
-#: contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147
-#: contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Allt"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Allar dagsetningar"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Dagurinn í dag"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Síðustu 7 dagar"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Þessi mánuður"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Þetta ár"
-
-#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Já"
-
-#: contrib/admin/filterspecs.py:147
-#: newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Nei"
-
-#: contrib/admin/filterspecs.py:154
-#: newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Óþekkt"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "tími aðgerðar"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "kenni hlutar"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "framsetning hlutar"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "aðgerðarveifa"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "breyta skilaboði"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "kladdafærsla"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "kladdafærslur"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Síða fannst ekki"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Því miður fannst umbeðin síða ekki."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Heim"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Kerfisvilla"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Kerfisvilla (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Kerfisvilla <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Villa hefur komið upp. Hún hefur verið tilkynnt vefstjórunum með tölvupósti og verður örugglega löguð fljótlega. Við þökkum þolinmæðina."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Velkomin(n),"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Skjölun"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Breyta lykilorði"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Skrá út"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django vefstjóri"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django vefstjórn"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Bæta við"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "Saga"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Skoða á vef"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Vinsamlegast leiðréttu villuna hér að neðan:"
-msgstr[1] "Vinsamlegast leiðréttu villurnar hér að neðan:"
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Röðun"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Röð:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Bæta við %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Eyða"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Eyðing á %(object_name)s „%(escaped_object)s“ hefði í för með sér eyðingu á tengdum hlutum en þú hefur ekki réttindi til að eyða eftirfarandi hlutum:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Ertu viss um að þú viljir eyða %(object_name)s „%(escaped_object)s“? Öllu eftirfarandi verður eytt:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Já ég er viss."
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Eftir %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Sía"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Líkön sem eru hluti af %(name)s forritinu."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Breyta"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Þú hefur ekki réttindi til að breyta neinu"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Nýlegar aðgerðir"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Mínar aðgerðir"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Engin fáanleg"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Eitthvað er að gagnagrunnsuppsetningu. Gakktu úr skuggum um að allar töflur séu til staðar og að notandinn hafi aðgang að grunninum."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Notandanafn:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Lykilorð:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:25
-msgid "Log in"
-msgstr "Skrá inn"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Dagsetning/tími"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Notandi"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Aðgerð"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Þessi hlutur hefur enga breytingasögu. Hann var líklega ekki búinn til á þessu stjórnunarsvæði."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Sýna allt"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Áfram"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 niðustaða"
-msgstr[1] "%(counter)s niðurstöður"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s í heildina"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Vista sem nýtt"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Vista og búa til nýtt"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Vista og halda áfram að breyta"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Vista"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Fyrst, settu inn notendanafn og lykilorð. Svo geturðu breytt öðrum notendamöguleikum."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Notandanafn"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Lykilorð"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Lykilorð (aftur)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Settu inn sama lykilorðið aftur til staðfestingar."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Settu inn nýtt lykilorð fyrir notandann <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bókamerklar"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Skjölunarbókamerklar"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Til að setja upp bókamerkil (Bookmarklet) þarftu að draga tengilinn\n"
-"í bókamerkjareinina þína eða hægrismella á tengilinn og bæta honum við bókamerkin þín\n"
-"Nú getur þú notað bókamerkilinn frá hvaða síðu sem er innan vefjarins. Athugaðu að sumir\n"
-"þessara bókamerkla krefjast þess að þú sért að skoða vefinn frá tölvu sem er\n"
-"skráð sem \"internal\" (hafðu samband við kerfisstjórann ef þú ert óviss hvort tölvan þín er \"internal\").</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Skjölun þessarar síðu"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Sendir þig af hvaða síðu sem er á skjölun þess framsetningarlags sem myndar hana."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Sýna kenni hlutar"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Sýnir efnistag og sérkenni síða sem gefa tiltekna mynd af stökum hlut."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Breyta þessum hlut (í þessum glugga)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Stekkur á stjórnunarsíðuna fyrir þær síður sem gefa tiltekna mynd af stökum hlut."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Breyta þessum hlut (nýr gluggi)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Eins og að ofan en opnar stjórnunarsíðuna í nýjum glugga."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Takk fyrir að verja tíma í vefsíðuna í dag."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Skráðu þig inn aftur"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Breyta lykilorði"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Breyting á lykilorði tókst"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "Lykilorði þínu var breytt"
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Vinsamlegast skrifaðu gamla lykilorðið þitt til öryggis. Sláðu svo nýja lykilorðið tvisvar inn svo að hægt sé að ganga úr skugga um að þú hafir ekki gert innsláttarvillu."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Gamla lykilorðið:"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Nýja lykilorðið:"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Staðfesta lykilorð:"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Breyta lykilorðinu mínu"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Endurstilla lykilorð"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Endurstilling á lykilorði tókst"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Við sendum nýtt lykilorð á tölvupóstfangið sem þú gafst upp. Það ætti að berast fljótlega til þín."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Þú fékkst þennan tölvupóst vegna þess að þú baðst um endurstillingu á lykilorðinu þínu"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "fyrir notandareikning þinn á %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Nýja lykilorðið þitt er: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Þér er frjálst að breyta lykilorðinu með því að fara á þessa síðu:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Notandanafnið þitt ef þú skyldir hafa gleymt því:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Takk fyrir að nota vefinn okkar!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s hópurinn"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "Gleymdir þú lykilorðinu þínu? Sláðu tölvupóstfangið þitt inn að neðan og við munum endurstilla lykilorðið þitt og senda til þín."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Tölvupóstfang:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Endursstilla lykilorðið mitt"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Dagsetning:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Tími:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Eins og er:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Breyta:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Allar dagsetningar"
-
-#: contrib/admin/views/auth.py:20
-#: contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s „%(obj)s“ var bætt við."
-
-#: contrib/admin/views/auth.py:25
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Þú getur breytt því aftur að neðan."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Bæta við notanda"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Breyting á lykilorði tókst."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Breyta lykilorði: %s"
-
-#: contrib/admin/views/decorators.py:11
-#: contrib/auth/forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Vinsamlegast sláðu inn rétt notandanafn og lykilorð. Athugaðu að báðir reitirnir þurfa að vera stafréttir."
-
-#: contrib/admin/views/decorators.py:63
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Vinsamlegast skráðu þig inn aftur vegna þess að setan þín rann út. Engar áhyggjur, breytingin þín var vistuð."
-
-#: contrib/admin/views/decorators.py:70
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Vafri þinn virðist ekki vera stilltur til að leyfa dúsur (cookies). Vinsamlegast gerðu dúsur virkar, endurhladdu þessa síðu og reyndu aftur."
-
-#: contrib/admin/views/decorators.py:84
-msgid "Usernames cannot contain the '@' character."
-msgstr "Notendanöfn geta ekki innihaldið '@' merkið."
-
-#: contrib/admin/views/decorators.py:86
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Tölvupóstfangið þitt er ekki notandanafnið þitt. Prófaðu '%s' í staðinn."
-
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "merki:"
-
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "sía:"
-
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "skoða:"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "Forrit %r fannst ekki"
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Líkanið %(name)r finnst ekki í forritinu %(label)r"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "tengdur `%(label)s.%(type)s` hluturinn"
-
-#: contrib/admin/views/doc.py:185
-#: contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221
-#: contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "líkan:"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "tengdir `%(label)s.%(name)s` hlutir"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "allt %s"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "fjöldi af %s"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Svæði í %s hlutnum"
-
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306
-#: contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313
-#: contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Heiltala"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Boole-gildi (True eða False)"
-
-#: contrib/admin/views/doc.py:295
-#: contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Strengur (mest %(max_length)s)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Kommuaðgreindar heiltölur"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Dagsetning (án tíma)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Dagsetning (með tíma)"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Tugatala"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "Tölvupóstfang"
-
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Skjalaslóð"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Hlaupakommutala (floating point number)"
-
-#: contrib/admin/views/doc.py:307
-#: contrib/comments/models.py:85
-msgid "IP address"
-msgstr "IP tala"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Boole-gildi (True, False eða None)"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Tengsl við yfirlíkan"
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Símanúmer"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Texti"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Tími"
-
-#: contrib/admin/views/doc.py:318
-#: contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "Veffang"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "Bandarískt fylki (tveir hástafir)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "XML texti"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s virðist ekki vera urlpattern hlutur"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Vefstjórn"
-
-#: contrib/admin/views/main.py:280
-#: contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Þú getur bætt öðru %s við að neðan."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Bæta við %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Bætti við %s."
-
-#: contrib/admin/views/main.py:344
-#: contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348
-#: core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "og"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Breytti %s."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Eyddi %s."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Engum reitum breytt."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s „%(obj)s“ hefur verið breytt."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s „%(obj)s“ hefur verið bætt við. Þú getur breytt því aftur að neðan."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Breyta %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Eitt eða fleiri %(fieldname)s í %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Eitt eða fleiri %(fieldname)s í %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s „%(obj)s“ var eytt."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Ertu viss?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Breytingarsaga: %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Veldu %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Veldu %s til að breyta"
-
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Gagnagrunnsvilla"
-
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Lykilorðin tvö pössuðu ekki saman."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Notandi með þetta notendanafn er nú þegar til."
-
-#: contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Vafri þinn virðist ekki vera stilltur til að leyfa dúsur (cookies). Dúsur eru nauðsynlegar fyrir innskráningu."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Þessi reikningur er óvirku."
-
-#: contrib/auth/forms.py:84
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Þetta netfang hefur engan tengdan notandareikning. Ertu viss um að þú hafi skráð þig?"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Lykilorð endurstillt á %s"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "'Nýtt lykilorð' svæðin passa ekki saman."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Gamla lykilorðið var vitlaust. Vinsamlegast reyndu aftur."
-
-#: contrib/auth/models.py:73
-#: contrib/auth/models.py:93
-msgid "name"
-msgstr "nafn"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "vinnuheiti"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "réttindi"
-
-#: contrib/auth/models.py:79
-#: contrib/auth/models.py:94
-msgid "permissions"
-msgstr "réttindi"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "hópur"
-
-#: contrib/auth/models.py:98
-#: contrib/auth/models.py:141
-msgid "groups"
-msgstr "hópar"
-
-#: contrib/auth/models.py:131
-msgid "username"
-msgstr "notandanafn"
-
-#: contrib/auth/models.py:131
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Krafist. 30 stafir eða færri. Aðeins enskir ritstafastafir (enskir ritstafir, tölur og undirstrik)."
-
-#: contrib/auth/models.py:132
-msgid "first name"
-msgstr "skírnarnafn"
-
-#: contrib/auth/models.py:133
-msgid "last name"
-msgstr "eftirnafn"
-
-#: contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr "tölvupóstfang"
-
-#: contrib/auth/models.py:135
-msgid "password"
-msgstr "lykilorð"
-
-#: contrib/auth/models.py:135
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Notaðu '[algo]$[salt]$[hexdigest]' eða <a href=\"password/\">'breyta lykilorði' formið</a>."
-
-#: contrib/auth/models.py:136
-msgid "staff status"
-msgstr "staða starfsmanns"
-
-#: contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "Segir til um hvort notandinn getur skráð sig inn á þetta stjórnunarsvæði."
-
-#: contrib/auth/models.py:137
-msgid "active"
-msgstr "virkur"
-
-#: contrib/auth/models.py:137
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Segir til um hvort notandinn geti skráð sig inn á þetta stjórnunarsvæði. Slökktu á þessum möguleika í stað þess að eyða notandanum."
-
-#: contrib/auth/models.py:138
-msgid "superuser status"
-msgstr "staða ofurnotanda"
-
-#: contrib/auth/models.py:138
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Til marks um að notandinn hafi öll réttindi án þess að taka þau sérstaklega fram."
-
-#: contrib/auth/models.py:139
-msgid "last login"
-msgstr "síðasta innskráning"
-
-#: contrib/auth/models.py:140
-msgid "date joined"
-msgstr "skráning dags."
-
-#: contrib/auth/models.py:142
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Auk réttindanna sem notandanum var gefið sérstaklega fær hann öll þau réttindi sem hópurinn hans hefur."
-
-#: contrib/auth/models.py:143
-msgid "user permissions"
-msgstr "réttindi"
-
-#: contrib/auth/models.py:147
-msgid "user"
-msgstr "notandi"
-
-#: contrib/auth/models.py:148
-msgid "users"
-msgstr "notendur"
-
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Persónuupplýsingar"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Réttindi"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Mikilvægar dagsetningar"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Hópar"
-
-#: contrib/auth/models.py:316
-msgid "message"
-msgstr "skilaboð"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Útskráður"
-
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:169
-msgid "object ID"
-msgstr "kenni hlutar"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "fyrirsögn"
-
-#: contrib/comments/models.py:69
-#: contrib/comments/models.py:90
-#: contrib/comments/models.py:170
-msgid "comment"
-msgstr "athugasemd"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "einkunn #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "einkunn #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "einkunn #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "einkunn #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "einkunn #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "einkunn #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "einkunn #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "einkunn #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "er gild einkunn"
-
-#: contrib/comments/models.py:83
-#: contrib/comments/models.py:172
-msgid "date/time submitted"
-msgstr "innsent dags/tími"
-
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:173
-msgid "is public"
-msgstr "er öllum sýnilegt"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "hefur verið fjarlægt"
-
-#: contrib/comments/models.py:86
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Hakaðu við þennan reit ef athugasemdin er óviðeigandi. Skilaboðin „Þessi athugasemd hefur verið fjarlægð“ birtist í staðinn."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "athugasemdir"
-
-#: contrib/comments/models.py:134
-#: contrib/comments/models.py:213
-msgid "Content object"
-msgstr "Efnishlutur"
-
-#: contrib/comments/models.py:162
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s sendi inn %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:171
-msgid "person's name"
-msgstr "nafn einstaklings"
-
-#: contrib/comments/models.py:174
-msgid "ip address"
-msgstr "IP tala"
-
-#: contrib/comments/models.py:176
-msgid "approved by staff"
-msgstr "samþykkt af umsjónarmönnum"
-
-#: contrib/comments/models.py:179
-msgid "free comment"
-msgstr "frjáls athugasemd"
-
-#: contrib/comments/models.py:180
-msgid "free comments"
-msgstr "frjálsar athugasemdir"
-
-#: contrib/comments/models.py:239
-msgid "score"
-msgstr "stig"
-
-#: contrib/comments/models.py:240
-msgid "score date"
-msgstr "dagsetning stigagjafar"
-
-#: contrib/comments/models.py:243
-msgid "karma score"
-msgstr "karma stig"
-
-#: contrib/comments/models.py:244
-msgid "karma scores"
-msgstr "karma stig"
-
-#: contrib/comments/models.py:248
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d stig frá %(user)s"
-
-#: contrib/comments/models.py:264
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Þessi athugasemd var veifuð af %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:271
-msgid "flag date"
-msgstr "Dagsetning veifu"
-
-#: contrib/comments/models.py:274
-msgid "user flag"
-msgstr "notandaveifa"
-
-#: contrib/comments/models.py:275
-msgid "user flags"
-msgstr "notendaveifur"
-
-#: contrib/comments/models.py:279
-#, python-format
-msgid "Flag by %r"
-msgstr "Veifað af %r"
-
-#: contrib/comments/models.py:284
-msgid "deletion date"
-msgstr "eytt dags."
-
-#: contrib/comments/models.py:286
-msgid "moderator deletion"
-msgstr "eytt af umsjónarmanni"
-
-#: contrib/comments/models.py:287
-msgid "moderator deletions"
-msgstr "eytt af umsjónarmanni"
-
-#: contrib/comments/models.py:291
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Eytt af umsjónarmanni %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Gleymdir þú lykilorðinu þínu?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Einkunnir"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Nauðsynlegt"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Valfrjálst"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Sendu inn ljósmynd"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Athugasemd:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Forskoða athugasemd"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Nafnið þitt:"
-
-#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Þessi stigagjöf er nauðsynleg vegna þess að þú gafst að minnsta kosti eina aðra einkunn."
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Þessi athugasemd var send inn af notanda sem hefur sent inn færri en %(count)s athugasemd:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Þessi athugasemd var send inn af notanda sem hefur sent inn færri en %(count)s athugasemdir:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Þessi athugasemd var send inn af vafasömum notanda:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Eingöngu POST eru leyfð"
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Einn eða fleiri nauðsynlegir reitir voru ekki fylltir"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Einhver átti við athugasemdaformið (öryggisbrot)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Athugasemdaformið hafði ógildan 'target' stika -- kenni hlutarins var ógilt"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Athugasemdaformið útvegaði ekki annað hvort 'forskoða' eða 'senda'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Ónafngreindir notendur geta ekki kosið"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Ógilt kenni á athugasemd"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Þú getur ekki kosið sjálfa(n) þig"
-
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr "python eininga klasa nafn"
-
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "efnistag"
-
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "efnistög"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Dæmi: '/about/contact/'. Passaðu að hafa skástrik fremst og aftast."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titill"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "innihald"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "virkja athugasemdir"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nafn sniðmáts"
-
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Dæmi: 'flatpages/contact_page.html'. Ef ekkert er gefið upp mun kerfið nota 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "skráning nauðsynleg"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ef þetta er valið geta eingöngu innskráðir notendur séð síðuna."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "flatskrá"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "flatskrár"
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "th"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "nd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:20
-msgid "rd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:52
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milljón"
-msgstr[1] "%(value).1f milljónir"
-
-#: contrib/humanize/templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milljarður"
-msgstr[1] "%(value).1f milljarðar"
-
-#: contrib/humanize/templatetags/humanize.py:58
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billjarður"
-msgstr[1] "%(value).1f billjónir"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "one"
-msgstr "einn"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "two"
-msgstr "tveir"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "three"
-msgstr "þrír"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "four"
-msgstr "fjórir"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "five"
-msgstr "fimm"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "six"
-msgstr "sex"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "seven"
-msgstr "sjö"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "eight"
-msgstr "átta"
-
-#: contrib/humanize/templatetags/humanize.py:74
-msgid "nine"
-msgstr "níu"
-
-#: contrib/humanize/templatetags/humanize.py:94
-msgid "today"
-msgstr "í dag"
-
-#: contrib/humanize/templatetags/humanize.py:96
-msgid "tomorrow"
-msgstr "morgundagur"
-
-#: contrib/humanize/templatetags/humanize.py:98
-msgid "yesterday"
-msgstr "gærdagur"
-
-#: contrib/localflavor/ar/forms.py:28
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Færðu inn póstnúmer í sniðinu NNNN eða ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:50
-#: contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135
-#: contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Þessi reitur tekur aðeins tölugildi."
-
-#: contrib/localflavor/ar/forms.py:51
-msgid "This field requires 7 or 8 digits."
-msgstr "Þessi reitur krefst 7 eða 8 tölustafa."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Færðu inn gilt CUIT í XX-XXXXXXXX-X eða XXXXXXXXXXXX sniðinu."
-
-#: contrib/localflavor/ar/forms.py:81
-msgid "Invalid CUIT."
-msgstr "Ógilt CUIT."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Sláðu inn 4 stafa póstkóða."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Sláðu inn zip póstfang í sniðinu XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Símanúmer verða að vera í XXX-XXX-XXXX sniði."
-
-#: contrib/localflavor/br/forms.py:58
-msgid "Select a valid brazilian state. That state is not one of the available states."
-msgstr "Veldu gilt brasilískt fylki. Fylkið er ekki eitt af gildum fylkjum."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Ógilt CPF númer."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Þessi reitur krefst að minnsta kosti 14 tölustafa."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:64
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14
-#: contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:41
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Sláðu inn gilda íslenska kennitölu. Sniðið er DDMMÁÁÁÁ-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Íslenska kennitalan er ekki gild."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:19
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Sláðu inn gilt póstnúmer."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Sláðu inn gilt símanúmer."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Þessi reitur krefst 8 tölustafa."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Þessi reitur krefst 11 tölustafa."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Sláðu inn gilt póstnúmer."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "vísun frá"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Þetta þarf að vera full slóð án lénsins. Dæmi: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "vísa á"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Þetta getur verið full slóð (eins og hér að ofan) eða veffang með 'http://' fremst."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "vísun"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "vísanir"
-
-#: contrib/sessions/models.py:46
-msgid "session key"
-msgstr "setulykill"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "setugögn"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "fyrningardagsetning"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "seta"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "setur"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "lén"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "birtingarnafn"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr "vefur"
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr "vefir"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Þetta gildi má einungis innihalda stafi, tölur og undirstrik."
-
-#: core/validators.py:76
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Þetta gildi má einungis innihalda stafi, tölur, undirstrik, skástrik og bandstrik."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Þetta gildi má einungis innihalda stafi, tölur, undirstrik og úrfellingarkommur."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Hástafir eru ekki leyfðir hér."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Lágstafir eru ekki leyfðir hér."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Skrifaðu einungis tölur aðskildar með kommum."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Sláðu inn gild tölvupóstföng aðskilin með kommum."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Vinsamlegast sláðu inn gilda IP tölu."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Tóm gildi eru ekki leyfð hér."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Aðeins tölustafir eru leyfðir hér."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Þetta gildi verður að vera samsett úr fleiru en tölustöfum."
-
-#: core/validators.py:128
-#: newforms/fields.py:151
-msgid "Enter a whole number."
-msgstr "Sláðu inn heila tölu."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Einungis bókstafir eru leyfðir hér."
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr ""
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ógild dagsetning: %s"
-
-#: core/validators.py:156
-#: db/models/fields/__init__.py:509
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Sláðu inn gilda dagsetningu á YYYY-MM-DD sniði."
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Sláðu inn gildan tíma á HH:MM sniði."
-
-#: core/validators.py:165
-#: db/models/fields/__init__.py:583
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Sláðu inn gilda dagsetningu/tíma á YYYY-MM-DD HH:MM sniði."
-
-#: core/validators.py:170
-#: newforms/fields.py:402
-msgid "Enter a valid e-mail address."
-msgstr "Sláðu inn gilt tölvupóstfang."
-
-#: core/validators.py:182
-#: core/validators.py:474
-#: newforms/fields.py:432
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Engin skrá var send. Athugaðu kótunartegund á forminu (encoding type)."
-
-#: core/validators.py:193
-#: newforms/fields.py:456
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Halaðu upp gildri myndskrá. Skráin sem þú halaðir upp var annað hvort gölluð eða ekki mynd."
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Veffangið %s bendir ekki á fullgilda mynd."
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Símanúmer verða að vera á XXX-XXX-XXXX forminu. „%s“ er ógilt."
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Veffangið %s vísar ekki á gilt QuickTime myndskeið."
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr "Gilds veffangs er krafist."
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Gilt HTML er nauðsynlegt. Tilteknar villur:\n"
-"%s"
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Illa sniðið XML: %s"
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Ógilt veffang: %s"
-
-#: core/validators.py:259
-#: core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Veffangið %s er brotinn hlekkur."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Skrifaðu gilda styttingu á bandarísku fylkisnafni."
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Passaðu orðbragðið! Orðið %s er ekki leyft hér."
-msgstr[1] "Passaðu orðbragðið! Orðin %s eru ekki leyfð hér."
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Þessi reitur verður að passa við „%s“ reitinn."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Vinsamlegast fylltu út einn reit að minnsta kosti."
-
-#: core/validators.py:316
-#: core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Vinsamlegast fylltu út í báða reitina eða skildu þá eftir tóma."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Þessi reitur þarf að vera útfylltur ef %(field)s er %(value)s"
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Þessi reitur verður að vera útfylltur ef %(field)s er ekki %(value)s"
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Endurtekin gildi eru ekki leyfð."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Þetta gildi verður að vera á milli  %(lower)s og %(upper)s."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Þetta gildi verður að vera að minnsta kosti  %s."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Þetta gildi má ekki vera hærra en  %s."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Þessi reitur verður að vera veldi af %s."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Vinsamlegast settu inn gilda tugatölu."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Vinsamlegast skrifaðu gilda tugatölu með hámark %s tölustaf."
-msgstr[1] "Vinsamlegast skrifaðu gilda tugatölu með hámark %s tölustafi."
-
-#: core/validators.py:447
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Vinsamlegast settu inn gilda tugatölu með hámark %s tölustaf."
-msgstr[1] "Vinsamlegast settu inn gilda tugatölu með hámark %s tölustafi."
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Vinsamlegast skrifaðu gilda tugatölu með hámark %s tugbrotastaf."
-msgstr[1] "Vinsamlegast skrifaðu gilda tugatölu með hámark %s tugbrotastafi."
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Vinsamlegast settu inn gilda hlaupakommutölu (floating point number)."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Gakktu úr skugga um að upphöluð skrá sé að minnsta kosti %s bæti að stærð."
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Gakktu úr skugga um að upphlaðin skrá sé í mesta lagi %s bæti að stærð."
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "Sniðið á þessum reit í rangt."
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "Þessi reitur er ótækur."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Gat engu náð úr %s."
-
-#: core/validators.py:539
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "Veffangið %(url)s skilaði ótæka efnistagshausnum '%(contenttype)s'."
-
-#: core/validators.py:572
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Vinsamlegast lokaðu opna %(tag)s taginu sem byrjar á línu %(line)s. (Línan hefst á \"%(start)s\".)"
-
-#: core/validators.py:576
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Texti sem hefst á línu %(line)s er ekki leyfður í því samhengi. (Line starts with \"%(start)s\".)"
-
-#: core/validators.py:581
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" á línu %(line)s er ótækt eigindi (línan hefst á \"%(start)s\")."
-
-#: core/validators.py:586
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" á línu %(line)s er ótækt tag. (Línan hefst á \"%(start)s\".)"
-
-#: core/validators.py:590
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "Tag á línu %(line)s vantar eitt eða fleiri nauðsynleg eigindi. (Línan hefst á \"%(start)s\".)"
-
-#: core/validators.py:595
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" eigindið á línu %(line)s hefur ótækt gildi (línan hefst á \"%(start)s\")."
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s með þetta %(type)s er nú þegar til fyrir uppgefið %(field)s."
-
-#: db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s með þetta %(fieldname)s er nú þegar til."
-
-#: db/models/fields/__init__.py:161
-#: db/models/fields/__init__.py:318
-#: db/models/fields/__init__.py:735
-#: db/models/fields/__init__.py:746
-#: newforms/fields.py:45
-#: oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Þennan reit þarf að fylla út."
-
-#: db/models/fields/__init__.py:418
-msgid "This value must be an integer."
-msgstr "Þetta gildi verður að vera heil tala."
-
-#: db/models/fields/__init__.py:454
-msgid "This value must be either True or False."
-msgstr "Þetta gildi verður að vera True eða False."
-
-#: db/models/fields/__init__.py:475
-msgid "This field cannot be null."
-msgstr "Þessi reitur getur ekki haft tómgildi (null)."
-
-#: db/models/fields/__init__.py:644
-msgid "This value must be a decimal number."
-msgstr "Þetta gildi verður að vera tugatala (decimal number)."
-
-#: db/models/fields/__init__.py:755
-msgid "Enter a valid filename."
-msgstr "Sláðu inn gilt tölvupóstfang."
-
-#: db/models/fields/__init__.py:904
-msgid "This value must be either None, True or False."
-msgstr "Þetta gildi verður að vera annaðhvort None, True eða False."
-
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Vinsamlegast sláðu inn fullgilt %s."
-
-#: db/models/fields/related.py:658
-msgid "Separate multiple IDs with commas."
-msgstr "Aðgreindu mörg kenni með kommum."
-
-#: db/models/fields/related.py:660
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Haltu inni „Control“, eða „Command“ á Mac til þess að velja fleira en eitt."
-
-#: db/models/fields/related.py:707
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Vinsamlegast sláðu inn gild %(self)s kenni. Gildið %(value)r er ógilt."
-msgstr[1] "Vinsamlegast sláðu inn gild %(self)s kenni. Gildin %(value)r eru ógild."
-
-#: newforms/fields.py:46
-msgid "Enter a valid value."
-msgstr "Sláðu inn gilt gildi."
-
-#: newforms/fields.py:123
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Gildið má ekki hafa fleiri en %(max)d stafi (gildið hefur %(length)d)."
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Gildið má ekki hafa færri en %(min)d stafi (gildið hefur %(length)d)."
-
-#: newforms/fields.py:152
-#: newforms/fields.py:181
-#: newforms/fields.py:210
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Gakktu úr skuggum um að gildið sé minna en eða jafn og %s."
-
-#: newforms/fields.py:153
-#: newforms/fields.py:182
-#: newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Gildið þarf að vera jafnt og eða hærra en %s."
-
-#: newforms/fields.py:180
-#: newforms/fields.py:209
-msgid "Enter a number."
-msgstr "Sláðu inn heila tölu."
-
-#: newforms/fields.py:212
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Gildið má ekki hafa fleiri en %s tölur."
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Gildið má ekki hafa meira en %s tugatölustafi (decimal places)."
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Gildið má ekki hafa fleiri en %s tölur fyrir tugabrotskil."
-
-#: newforms/fields.py:262
-#: newforms/fields.py:719
-msgid "Enter a valid date."
-msgstr "Sláðu inn gilda dagsetningu."
-
-#: newforms/fields.py:295
-#: newforms/fields.py:720
-msgid "Enter a valid time."
-msgstr "Sláðu inn gilda tímasetningu."
-
-#: newforms/fields.py:334
-msgid "Enter a valid date/time."
-msgstr "Sláðu inn gilda dagsetningu ásamt tíma."
-
-#: newforms/fields.py:433
-msgid "No file was submitted."
-msgstr "Engin skrá var send."
-
-#: newforms/fields.py:434
-#: oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Innsend skrá er tóm."
-
-#: newforms/fields.py:492
-msgid "Enter a valid URL."
-msgstr "Sláðu inn gilt veffang (URL)."
-
-#: newforms/fields.py:493
-msgid "This URL appears to be a broken link."
-msgstr "Síðan á þessari slóð lítur út fyrir að skila villu."
-
-#: newforms/fields.py:555
-#: newforms/models.py:317
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Veldu gildan valmöguleika. Valið virðist ekki vera eitt af gildum valmöguleikum."
-
-#: newforms/fields.py:594
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Veldu gildan valmöguleika. %(value)s er ekki eitt af gildum valmöguleikum."
-
-#: newforms/fields.py:595
-#: newforms/fields.py:657
-#: newforms/models.py:377
-msgid "Enter a list of values."
-msgstr "Sláðu inn lista af gildum."
-
-#: newforms/fields.py:748
-msgid "Enter a valid IPv4 address."
-msgstr "Sláðu inn gilda IPv4 tölu."
-
-#: newforms/models.py:378
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Veldu gildan valmöguleika. %s er ekki einn af gildum valmöguleikum."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Gangtu úr skugga um að textinn þin sé styttri en %s tákn."
-msgstr[1] "Gangtu úr skugga um að textinn þin sé styttri en %s tákn."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Línuskil eru ekki leyfð hér."
-
-#: oldforms/__init__.py:512
-#: oldforms/__init__.py:586
-#: oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Veldu gildan valmöguleika; „%(data)s“ er ekki í %(choices)s."
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Sláðu inn heila tölu á bilinu -32.768 til 32.767."
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Sláðu inn jákvæða tölu."
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Sláðu inn heila tölu á bilinu 0 til 32.767."
-
-#: template/defaultfilters.py:691
-msgid "yes,no,maybe"
-msgstr "já,nei,kannski"
-
-#: template/defaultfilters.py:722
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bæti"
-msgstr[1] "%(size)d bæti"
-
-#: template/defaultfilters.py:724
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:726
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:727
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "eftirmiðdegi"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "morgun"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "Eftirmiðdegi"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "Morgun"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "miðnætti"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "hádegi"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "mánudagur"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "þriðjudagur"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "miðvikudagur"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "fimmtudagur"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "föstudagur"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "laugardagur"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "sunnudagur"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Mán"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Þri"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mið"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Fim"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fös"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Lau"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Sun"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "janúar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febrúar"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "April"
-msgstr "apríl"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "May"
-msgstr "maí"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "June"
-msgstr "júní"
-
-#: utils/dates.py:19
-#: utils/dates.py:31
-msgid "July"
-msgstr "júlí"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "ágúst"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "október"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "nóvember"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "desember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "Jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maí"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jún"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "júl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ágú"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nóv"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "ág."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nóv."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "des."
-
-#: utils/text.py:127
-msgid "or"
-msgstr "eða"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "ár"
-msgstr[1] "ár"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mánuður"
-msgstr[1] "mánuðir"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "vika"
-msgstr[1] "vikur"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dagur"
-msgstr[1] "dagar"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "klukkutími"
-msgstr[1] "klukkutímar"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "mínúta"
-msgstr[1] "mínútur"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "mínútur"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:399
-msgid "DATE_FORMAT"
-msgstr "j. N Y"
-
-#: utils/translation/trans_real.py:400
-msgid "DATETIME_FORMAT"
-msgstr "j. N Y, H:i"
-
-#: utils/translation/trans_real.py:401
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:417
-msgid "YEAR_MONTH_FORMAT"
-msgstr "j. N Y"
-
-#: utils/translation/trans_real.py:418
-msgid "MONTH_DAY_FORMAT"
-msgstr "j. N Y"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s var fært inn."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s var uppfært."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s var eytt."
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "<a href=\"/password_reset/\">Gleymdir þú lykilorðinu</a> þínu?"
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Notaðu '[algo]$[salt]$[hexdigest]'"
-#~ msgid "Comment"
-#~ msgstr "Athugasemd"
-#~ msgid "Comments"
-#~ msgstr "Athugasemdir"
-#~ msgid ""
-#~ "This comment was posted by a user who has posted fewer than %(count)s "
-#~ "comment:\n"
-#~ "\n"
-#~ "%(text)sThis comment was posted by a user who has posted fewer than %"
-#~ "(count)s comments:\n"
-#~ "\n"
-#~ "%(text)s"
-#~ msgstr ""
-#~ "Þessi athugasemd var send inn af notanda sem hefur skrifað færri en %"
-#~ "(count)s athugasemd:\n"
-#~ "\n"
-#~ "%(text)sÞessi athugasemd var send inn af notanda sem hefur skrifað færri "
-#~ "en %(count)s athugasemdir:\n"
-#~ "\n"
-#~ "%(text)s"
-#~ msgid "String (up to 50)"
-#~ msgstr "Strengur (allt að 50)"
-#~ msgid "label"
-#~ msgstr "merki"
-#~ msgid "package"
-#~ msgstr "pakki"
-#~ msgid "packages"
-#~ msgstr "pakkar"
-
-#, fuzzy
-#~ msgid "count"
-#~ msgstr "innihald"
-
diff --git a/webapp/django/conf/locale/is/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/is/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 1a11690..0000000
--- a/webapp/django/conf/locale/is/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/is/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/is/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c68e77d..0000000
--- a/webapp/django/conf/locale/is/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,109 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2006-05-13 11:48-0000\n"
-"Last-Translator: Dagur Páll Ammendrup <dagurp@gmail.com>\n"
-"Language-Team: Icelandic <dagurp@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Icelandic\n"
-"X-Poedit-Country: ICELAND\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Fáanleg %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Velja öll"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Bæta við"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Fjarlægja"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Valin %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Veldu úr valmöguleikunum og smelltu"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Hreinsa öll"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid "January February March April May June July August September October November December"
-msgstr "janúar febrúar mars apríl maí júní júlí ágúst september október nóvember desember"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "sunnudagur mánudagur þriðjudagur miðvikudagur fimmtudagur föstudagur laugardagur"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M Þ M F F L"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Núna"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Klukka"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Veldu tíma"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Miðnætti"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 f.h."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Hádegi"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Hætta við"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Í dag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Dagatal"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Í gær"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Á morgun"
-
diff --git a/webapp/django/conf/locale/it/LC_MESSAGES/django.mo b/webapp/django/conf/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index 68f9f7b..0000000
--- a/webapp/django/conf/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/it/LC_MESSAGES/django.po b/webapp/django/conf/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index c21f860..0000000
--- a/webapp/django/conf/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4523 +0,0 @@
-# translation of django.po to Italiano
-# Italian translation of Django.
-# Copyright (C) 2006 the Lawrence Journal-World
-# This file is distributed under the same license as the Django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django vSVN\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-10 16:19+0200\n"
-"PO-Revision-Date: 2008-08-14 18:37+0200\n"
-"Last-Translator: Nicola Larosa <nico@tekNico.net>\n"
-"Language-Team: Italiano\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "arabo"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengali"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "bulgaro"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "catalano"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "ceco"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "gallese"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "danese"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "tedesco"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "greco"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "inglese"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "spagnolo"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "estone"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "spagnolo argentino"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "basco"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "persiano"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "finlandese"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "francese"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "irlandese"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "galiziano"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "ungherese"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "ebraico"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "croato"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islandese"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "giapponese"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "georgiano"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "coreano"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "lettone"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "lituano"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "macedone"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "olandese"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "norvegese"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "polacco"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portoghese"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "brasiliano portoghese"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "rumeno"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "russo"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "slovacco"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "sloveno"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "serbo"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "svedese"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tamil"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ucraino"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "cinese semplificato"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "cinese tradizionale"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Di %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Tutti"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Qualsiasi data"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Oggi"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Ultimi 7 giorni"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Questo mese"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Quest'anno"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Sì"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "No"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "momento dell'azione"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "id dell'oggetto"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "rappresentazione dell'oggetto"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "flag di azione"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "messaggio di modifica"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "voce di log"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "voci di log"
-
-#: contrib/admin/options.py:143 contrib/admin/options.py:202
-msgid "None"
-msgstr "Nessuno"
-
-#: contrib/admin/options.py:407
-#, python-format
-msgid "Changed %s."
-msgstr "%s modificato."
-
-#: contrib/admin/options.py:407 contrib/admin/options.py:417
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "e"
-
-#: contrib/admin/options.py:412
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Aggiunti %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:416
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Cambiati %(list)s per %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:421
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Cancellati %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:425
-msgid "No fields changed."
-msgstr "Nessun campo modificato."
-
-#: contrib/admin/options.py:480 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Il %(name)s \"%(obj)s\" è stato aggiunto correttamente."
-
-#: contrib/admin/options.py:484 contrib/admin/options.py:517
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "È possibile modificarlo nuovamente qui sotto."
-
-#: contrib/admin/options.py:494 contrib/admin/options.py:527
-#, python-format
-msgid "You may add another %s below."
-msgstr "Puoi aggiungere un altro %s qui sotto."
-
-#: contrib/admin/options.py:515
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Il %(name)s \"%(obj)s\" è stato modificato correttamente."
-
-#: contrib/admin/options.py:523
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Il %(name)s \"%(obj)s\" è stato aggiunto correttamente. È possibile "
-"modificarlo nuovamente qui sotto."
-
-#: contrib/admin/options.py:593
-#, python-format
-msgid "Add %s"
-msgstr "Aggiungi %s"
-
-#: contrib/admin/options.py:673
-#, python-format
-msgid "Change %s"
-msgstr "Modifica %s"
-
-#: contrib/admin/options.py:704
-msgid "Database error"
-msgstr "Errore nel database"
-
-#: contrib/admin/options.py:753
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Lo %(name)s \"%(obj)s\" è stato cancellato correttamente."
-
-#: contrib/admin/options.py:760
-msgid "Are you sure?"
-msgstr "Sei sicuro?"
-
-#: contrib/admin/options.py:787
-#, python-format
-msgid "Change history: %s"
-msgstr "Tracciato delle modifiche: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "Inserisci nome utente e password corretti. In entrambi i campi le maiuscole sono significative."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Devi effettuare di nuovo l'accesso, perché la sessione è scaduta. I dati inseriti sono "
-"stati comunque salvati."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Il browser non sembra configurato per accettare i cookie. Una volta "
-"abilitati, ricarica la pagina e riprova."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "I nomi utente non possono contenere il carattere '@'."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Il nome utente non è costituito dall'indirizzo e-mail. Prova con '%s'."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Amministrazione sito"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Accedi"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Uno o più %(fieldname)s in %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Uno o più %(fieldname)s in %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Ora:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Attualmente:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Modifica:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Pagina non trovata"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Spiacenti, ma la pagina richiesta non è stata trovata."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Pagina iniziale"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Errore del server"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Errore del server (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Errore del server <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Si è verificato un errore. È stato riportato agli amministratori del sito "
-"via e-mail e verrà corretto a breve. Grazie per la tua pazienza."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Benvenuto,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentazione"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Cambia la password"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Esci"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Amministrazione sito Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Amministrazione Django"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Aggiungi"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Storia"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Vedi sul sito"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Correggi l'errore qui sotto."
-msgstr[1] "Correggi gli errori qui sotto."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Aggiungi %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtro"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Cancella"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"La cancellazione di %(object_name)s '%(escaped_object)s' causerebbe la "
-"cancellazione di oggetti collegati, ma questo account non ha i permessi per "
-"cancellare gli oggetti dei seguenti tipi:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Sei sicuro di voler cancellare gli %(object_name)s \"%(escaped_object)s\"? "
-"Tutti i seguenti oggetti collegati saranno cancellati:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Sì, sono sicuro"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Per %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelli disponibili nell'applicazione %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Modifica"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Non hai i privilegi per modificare alcunché."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Azioni Recenti"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Azioni Proprie"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Nessuno disponibile"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Ci sono problemi nell'installazione del database. Assicurarsi che le tabelle "
-"appropriate del database siano state create, e che il database sia leggibile "
-"dall'utente appropriato."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Nome utente:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Password:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Data/ora"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Utente"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Azione"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j F Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Questo oggetto non ha cambiamenti registrati. Probabilmente non è stato "
-"creato con questo sito di amministrazione."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostra tutto"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Vai"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 risultato"
-msgstr[1] "%(counter)s risultati"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totali"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Salva come nuovo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Salva e aggiungi un altro"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Salva e continua le modifiche"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Salva"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "Inserisci innanzitutto nome utente e password. Potrai poi modificare le altre impostazioni dell'utente."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Nome utente"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Password"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Password (di nuovo)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Inserisci la stessa password inserita sopra, come verifica."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Inserisci una nuova password per l'utente <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Grazie per aver speso il tuo tempo prezioso su questo sito oggi."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Accedi di nuovo"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Cambio password"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Cambio di password avvenuto correttamente"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "La password è stata cambiata."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Inserisci la password attuale, per ragioni di sicurezza, e poi la nuova "
-"password due volte, per verificare di averla scritta correttamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Password attuale:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Nuova password:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Conferma la password:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Modifica la mia password"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Reimposta la password"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Password reimpostata"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "La tua password è stata impostata. Ora puoi effettuare l'accesso."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Conferma reimpostazione password"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Inserisci la nuova password"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Inserisci la nuova password due volte, per verificare di averla scritta "
-"correttamente."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Password NON reimpostata"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Il link per la reimpostazione della password non era valido, forse perché "
-"era già stato usato. Richiedi una nuova reimpostazione della password."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Password reimpostata correttamente"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Abbiamo inviato le istruzioni per impostare la tua password all'indirizzo e-"
-"mail inserito. Arriveranno a breve."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Hai ricevuto questa e-mail perché hai chiesto di reimpostare la password"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "per il tuo account utente su %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Vai alla pagina seguente e scegli una nuova password:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Il tuo nome utente, in caso l'abbia dimenticato:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Grazie per aver usato il nostro sito!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Il team di %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Dimenticata la password? Inserisci il tuo indirizzo email qui sotto, e ti "
-"invieremo per email le istruzioni per impostarne una nuova."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Indirizzo e-mail:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Reimposta la mia password"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Tutte le date"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Scegli %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Scegli %s da modificare"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filtro:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Appl. %r non trovata"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modello %(model_name)r non trovato nell'appl. %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "l'oggetto `%(app_label)s.%(data_type)s` collegato"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "modello:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "oggetti `%(app_label)s.%(object_name)s` collegati"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "tutti %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "numero di %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campi sugli oggetti %s"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Intero"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (True o False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Stringa (fino a %(max_length)s)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Interi separati da virgola"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Data (senza ora)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Data (con ora)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Numero decimale"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "Indirizzo e-mail"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Percorso di file"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Numero decimale"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "indirizzo IP"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (True, False o None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Collegamento a modello padre"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Numero di telefono"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Testo"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Ora"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stato USA (due lettere maiuscole)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "Testo XML"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s non sembra essere un oggetto urlpattern"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklet"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklet alla documentazione"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Per installare i bookmarklet, trascina il link sulla barra \n"
-"dei bookmark, o clicca il link con il tasto destro e aggiungilo ai "
-"bookmark.\n"
-"Potrai poi scegliere un bookmarklet in qualsiasi pagina del sito.\n"
-"Nota che alcuni di questi bookmarklet richiedono l'accesso al sito tramite un\n"
-"computer designato come \"interno\" (chiedi al tuo amministratore di \n"
-"sistema se non sei sicuro che il tuo computer sia \"interno\").</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Documentazione per questa pagina"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Porta da qualsiasi pagina alla documentazione della view che genera quella "
-"pagina."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Mostra l'ID dell'oggetto"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Mostra il content-type e l'ID univoco di pagine che rappresentano un singolo "
-"oggetto."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Modifica quest'oggetto (nella finestra corrente)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Porta alla pagina amministrativa di pagine che rappresentano un oggetto "
-"singolo."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Modifica quest'oggetto (in una nuova finestra)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Come sopra, ma apre la pagina di amministrazione in una nuova finestra."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Informazioni personali"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Permessi"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Date importanti"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Gruppi"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Aggiungi utente"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "La password è stata cambiata correttamente."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambia la password: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:134
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Obbligatorio. 30 caratteri o meno. Solo caratteri alfanumerici (lettere, "
-"cifre e sottolineati)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Questo valore può contenere solo lettere, cifre e sottolineati."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Conferma password"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Un utente con questo nome·è già presente."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "I due campi password non corrispondono."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Questo account non è attivo."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Il browser web sembra non avere i cookie abilitati. I cookie sono necessari "
-"per poter accedere."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-mail"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Questo indirizzo email non è associato ad alcun account utente. Sei sicuro "
-"di esserti registrato?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Password reimpostata su %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Nuova password"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Conferma nuova password"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Password attuale"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "La password attuale non è stata inserita correttamente: va inserita di nuovo."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "nome"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "nome in codice"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "permesso"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "permessi"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "gruppo"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:144
-msgid "groups"
-msgstr "gruppi"
-
-#: contrib/auth/models.py:134
-msgid "username"
-msgstr "nome utente"
-
-#: contrib/auth/models.py:135
-msgid "first name"
-msgstr "nome"
-
-#: contrib/auth/models.py:136
-msgid "last name"
-msgstr "cognome"
-
-#: contrib/auth/models.py:137
-msgid "e-mail address"
-msgstr "indirizzo e-mail"
-
-#: contrib/auth/models.py:138
-msgid "password"
-msgstr "password"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Usa '[algo]$[salt]$[hexdigest]' oppure la <a href=\"password/\">maschera "
-"di cambio password</a>."
-
-#: contrib/auth/models.py:139
-msgid "staff status"
-msgstr "privilegi di staff"
-
-#: contrib/auth/models.py:139
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica se l'utente può accedere a questo sito di amministrazione."
-
-#: contrib/auth/models.py:140
-msgid "active"
-msgstr "attivo"
-
-#: contrib/auth/models.py:140
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica se l'utente debba essere considerato attivo. Deseleziona qui, "
-"piuttosto che cancellare gli account."
-
-#: contrib/auth/models.py:141
-msgid "superuser status"
-msgstr "privilegi di superutente"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica che l'utente ha tutti i privilegi, senza che siano stati assegnati "
-"esplicitamente."
-
-#: contrib/auth/models.py:142
-msgid "last login"
-msgstr "ultimo accesso"
-
-#: contrib/auth/models.py:143
-msgid "date joined"
-msgstr "iscritto in data"
-
-#: contrib/auth/models.py:145
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"In aggiunta ai privilegi assegnati manualmente, l'utente riceverà anche "
-"tutti i privilegi assegnati ad ogni gruppo cui appartiene."
-
-#: contrib/auth/models.py:146
-msgid "user permissions"
-msgstr "privilegi utente"
-
-#: contrib/auth/models.py:150
-msgid "user"
-msgstr "utente"
-
-#: contrib/auth/models.py:151
-msgid "users"
-msgstr "utenti"
-
-#: contrib/auth/models.py:306
-msgid "message"
-msgstr "messaggio"
-
-#: contrib/auth/views.py:51
-msgid "Logged out"
-msgstr "Accesso annullato"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "ID dell'oggetto"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "intestazione"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "commento"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "valutazione #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "valutazione #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "valutazione #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "valutazione #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "valutazione #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "valutazione #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "valutazione #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "valutazione #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "è una valutazione valida"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "data/ora di inserimento"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "è pubblico"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "è rimosso"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Spunta la casella se il commento è inappropriato. Verrà sostituito dal "
-"messaggio \"Questo commento è stato rimosso\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "commenti"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Oggetto con contenuto"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Inserito da %(user)s il %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "nome della persona"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "indirizzo IP"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "approvato dallo staff"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "commento libero"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "commenti liberi"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "punteggio"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "data punteggio"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "livello karma"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "livelli karma"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "valutazione: %(score)d da %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"A questo commento è stato apposto un flag da %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "data flag"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "flag utente"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "flag utente"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Flag da %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "data cancellazione"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "cancellazione da moderatore"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "cancellazioni da moderatore"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Cancellazione da moderatore %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Hai dimenticato la password?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Valutazioni"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obbligatorio"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Facoltativo"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Inserisci una foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Commento:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Anteprima commento"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Il tuo nome:"
-
-#: contrib/comments/views/comments.py:76
-msgid "This rating is required because you've entered at least one other rating."
-msgstr ""
-"Questa valutazione è obbligatoria perché hai inserito almeno un'altra "
-"valutazione."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Questo commento è stato inserito da un utente autore di meno di %(count)s "
-"commento:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Questo commento è stato inserito da un utente autore di meno di %(count)s "
-"commenti:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Questo commento è stato inserito da un utente non confermato:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Sono ammessi solo POST"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Uno o più campi richiesti non sono stati inseriti"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Qualcuno ha alterato il modulo di commento (violazione di sicurezza)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Il modulo di commento ha un parametro 'target' non valido -- l'ID "
-"dell'oggetto non è valido"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Il modulo di commento non fornisce né 'anteprima' né 'invia'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Gli utenti anonimi non possono votare"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "ID commento non valido"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Impossibile votare per se stessi"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "nome della classe del modello Python"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "content type"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "content type"
-
-#: contrib/flatpages/admin.py:9
-msgid "Advanced options"
-msgstr "Opzioni avanzate"
-
-#: contrib/flatpages/models.py:9
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Esempio: '/about/contact/'. Assicurati di inserire le barre diagonali iniziali e finali."
-
-#: contrib/flatpages/models.py:10
-msgid "title"
-msgstr "titolo"
-
-#: contrib/flatpages/models.py:11
-msgid "content"
-msgstr "contenuto"
-
-#: contrib/flatpages/models.py:12
-msgid "enable comments"
-msgstr "abilita commenti"
-
-#: contrib/flatpages/models.py:13
-msgid "template name"
-msgstr "nome modello"
-
-#: contrib/flatpages/models.py:14
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Esempio: 'flatpages/contact_page.html'. Se non specificato, il sistema userà "
-"'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:15
-msgid "registration required"
-msgstr "registrazione obbligatoria"
-
-#: contrib/flatpages/models.py:15
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Se selezionato, solo gli utenti che hanno effettuato l'accesso potranno "
-"vedere la pagina."
-
-#: contrib/flatpages/models.py:20
-msgid "flat page"
-msgstr "pagina statica"
-
-#: contrib/flatpages/models.py:21
-msgid "flat pages"
-msgstr "pagine statiche"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Nessun valore geometrico fornito."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Valore geometrico non valido."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Tipo geometrico non valido."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milione"
-msgstr[1] "%(value).1f milioni"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliardo"
-msgstr[1] "%(value).1f miliardi"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f migliaio di miliardi"
-msgstr[1] "%(value).1f migliaia di miliardi"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "uno"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "due"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tre"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "quattro"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "cinque"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "sei"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "sette"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "otto"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "nove"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "oggi"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "domani"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "ieri"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Inserisci un codice postale nel formato NNNN o ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Questo campo può contenere solo numeri."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Questo campo richiede 7 o 8 cifre."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Inserisci un CUIT valido nel formato XX-XXXXXXXX-X o XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT non valido."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Carinthia"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Bassa Austria"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Alta Austria"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salisburgo"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Styria"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tirolo"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Vienna"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Inserisci un codice postale nel formato XXXXX ."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-"Inserisci un Numero di Assistenza Sociale Austriaco valido, nel formato XXXX "
-"XXXXXX."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Inserisci un codice postale di 4 cifre."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Inserisci un codice postale nel formato XXXXX-XXX ."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "I numeri di telefono devono essere in formato XX-XXXX-XXXX ."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Scegliere uno stato brasiliano valido. Questo stato non è uno di quelli "
-"disponibili."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Numero CPF non valido."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Questo campo richiede non più di 11 cifre, o 14 caratteri."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Numero CNPJ non valido."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Questo campo richiede almeno 14 cifre"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Inserisci un codice postale nel formato XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Inserisci un numero di assicurazione sociale canadese valido, nel formato XXX-"
-"XXX-XXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berna"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Friburgo"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Ginevra"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerna"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurigo"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Inserisci un numero di carta d'identità o passaporto svizzeri validi, in "
-"formato X1234567<0 o 1234567890 ."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Inserisci un RUT cileno valido."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Inserisci un RUT cileno valido. Il formato è XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Il RUT cileno non è valido."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Baviera"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlino"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburgo"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Brema"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Amburgo"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Pomerania Ovest"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Bassa Sassonia"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Reno Nord-Wesfalia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Sassonia"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxony-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thuringia"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Inserisci un codice postale nel formato XXXXX ."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Inserisci un numero di carta d'identità tedesco valido nel formato "
-"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X ."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Avila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Isole Baleari"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcellona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Caceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadice"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castello"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Città Reale"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Cordoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaen"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Leon"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Malaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Croce di Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Siviglia"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valenza"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Saragozza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusia"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragon"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principato delle Asturie"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Isole Baleari"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Paese Basco"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Isole Canarie"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castile-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castile and Leon"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalogna"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Estremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galizia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Regione Murzia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Comunità Forale di Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Comunità di Valenza"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Inserisci un codice postale valido nell'intervallo e formato 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Inserisci un numero telefonico valido in uno dei formati 6XXXXXXXX, 8XXXXXXXX "
-"o 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Inserisci un NIF, NIE, o CIF valido."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Inserisci un NIF o NIE valido."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Checksum non valido per il NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Checksum non valido per il NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Checksum non valido per il CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Inserisci un numero di conto corrente bancario valido nel formato XXXX-XXXX-"
-"XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Checksum non valido per il numero di conto corrente bancario."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Inserisci un numero di assistenza sociale finlandese valido."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Inserisci un codice postale nel formato XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Inserisci un numero di identificazione islandese valido. Il formato è XXXXXX-"
-"XXXX ."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Il numero di identificazione islandese non è valido."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Inserisci un codice postale valido."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Inserisci un numero di codice fiscale valido."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Inserisci una partita IVA valida."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Inserisci un codice postale nel formato XXXXXXX o XXX-XXXX ."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baia California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baia California Sud"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distretto Federale"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Stato del Messico"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuova Leòn"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Inserisci un codice postale valido"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Inserisci un numero telefonico valido"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Inserisci un numero SoFi valido"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Inserisci un numero di assistenza sociale norvegese valido."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Questo campo richiede 8 cifre."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Questo campo richiede 11 cifre."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "Il Numero Identificativo Nazionale è costituito da 11 cifre."
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Checksum errato per il Numero Identificativo Nazionale."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Inserisci un campo di numero d'imposta (NIP) nel formato XXX-XXX-XX-XX o XX-"
-"XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Checksum errato per il Numero d'Imposta (NIP)."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"Il Numero di Registro Nazionale d'Impresa (REGON) è costituito da 7 o 9 "
-"cifre."
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Checksum errato per il Numero di Registro Nazionale d'Impresa (REGON)."
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Inserisci un codice postale nel formato XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Bassa Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublino"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Polonia Minore"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpatia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Polonia Maggiore"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Pomerania Ovest"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Inserisci un codice CIF valido."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Inserisci un codice CNP valido."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "Inserisci un codice IBAN valido nel formato ROXX-XXXX-XXXX-XXXX-XXXX-XXXX."
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "I numeri di telefono devono essere in formato XXXX-XXXXXX."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Inserisci un codice postale valido nel formato XXXXXX."
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Inserisci un codice postale nel formato XXXXX o XXX XX ."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banska Bystrica region"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Regione di Bratislava"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Regione di Kosice"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Regione di Nitra"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Regione di Presov"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Regione di Trencin"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Regione di Trnava"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Regione di Zilina"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Inserisci un codice postale valido."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornovaglia e Isole di Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "Sussex dell'Est"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Greater London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "Yorkshire del Nord"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "Yorkshire del Sud"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "Midland dell'Ovest"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "Sussex dell'Ovest"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "Yorkshire dell'Ovest"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "County Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Glamorgan centrale"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "Glamorgan Sud"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "Glamorgan Ovest"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Scozia Centrale"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Isole Orkney"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Isole Shetland"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Isole dell'Ovest"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Inghilterra"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Irlanda del Nord"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Scozia"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Galles"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Inserisci un codice postale nel formato XXXXX o XXXXX-XXXX ."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-"Inserisci un numero di assistenza sociale statunitense valido, nel formato "
-"XXX-XX-XXXX ."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Inserisci un numero ID sudafricano valido"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Inserisci un codice postale sudafricano valido"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Capo Est"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Libero Stato"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Capo Nord"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "Nordovest"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Capo Ovest"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirezione da"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Deve essere un percorso assoluto, senza nome di dominio. Esempio: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirezione verso"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Può essere un percorso assoluto (come sopra) o una URL completa che inizia "
-"con 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redirezione"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redirezioni"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "chiave di sessione"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "dati di sessione"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "data di scadenza"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sessione"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sessioni"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "nome di dominio"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "nome visualizzato"
-
-#: contrib/sites/models.py:38
-msgid "site"
-msgstr "sito"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "siti"
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Questo valore può contenere solo lettere, cifre, sottolineati, trattini e "
-"barre diagonali."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Questo valore può contenere solo lettere, cifre, sottolineati e trattini."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Non sono ammesse lettere maiuscole."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Non sono ammesse lettere minuscole."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Inserisci solo cifre separate da virgole."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Inserisci indirizzi e-mail validi separati da virgole."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Inserisci un indirizzo IP valido."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "I valori vuoti non sono ammessi qui."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Sono ammessi soltanto caratteri numerici."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Questo valore non può essere composto solo da cifre."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Inserisci un numero intero."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Sono ammessi solo caratteri alfabetici."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Data non valida: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:569
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Inserisci una data valida in formato AAAA-MM-GG."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Inserisci un ora valida in formato OO:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Inserisci una data/ora valida in formato AAAA-MM-GG OO:MM."
-
-#: core/validators.py:166 forms/fields.py:412
-msgid "Enter a valid e-mail address."
-msgstr "Inserisci un indirizzo e-mail valido."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:430
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Non è stato inviato alcun file. Verifica il tipo di codifica della form."
-
-#: core/validators.py:189 forms/fields.py:470
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "Carica un'immagine valida. Il file caricato non è un'immagine o è corrotto."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "La URL %s non punta ad un'immagine valida."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"I numeri di telefono devono essere in formato XXX-XXX-XXXX . \"%s\" non è "
-"valido."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "La URL %s non punta ad un video QuickTime valido."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Inserisci una URL valida."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"È richiesto HTML valido. Gli errori sono i seguenti:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML malformato: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL non valida: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "La URL %s è un link non funzionante."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Inserisci un valido nome di stato USA abbreviato."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Modera i termini: la parola %s non è ammessa."
-msgstr[1] "Modera i termini: le parole %s non sono ammesse."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Questo campo deve corrispondere al campo '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Inserisci qualcosa in almeno un campo."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Inserisci entrambi i campi o lasciarli entrambi vuoti."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Questo campo è obbligatorio se %(field)s è %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Questo campo è obbligatorio se %(field)s non è %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Non sono ammessi valori duplicati."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Questo valore deve essere compreso tra %(lower)s e %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Questo valore deve essere almeno pari a %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Questo valore non deve essere maggiore di %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Questo valore deve essere una potenza di %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Inserisci un numero decimale valido."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Inserisci un numero decimale con non più di %s cifra in totale."
-msgstr[1] "Inserisci un numero decimale con non più di %s cifre in totale."
-
-#: core/validators.py:443
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Inserisci un numero decimale la cui parte intera sia composta da non più di %"
-"s cifra."
-msgstr[1] ""
-"Inserisci un numero decimale la cui parte intera sia composta da non più di %"
-"s cifre."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Inserisci un decimale con non più di %s cifra decimale."
-msgstr[1] "Inserisci un decimale con non più di %s cifre decimali."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Inserisci un numero decimale valido."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Verifica che il file caricato sia grande almeno %s byte."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Verifica che il file caricato non sia più grande di %s byte."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Il formato di questo campo non è valido."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Questo campo non è valido."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Impossibile recupera alcunché da %s."
-
-#: core/validators.py:535
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"La URL %(url)s ha restituito un header Content-Type non valido: '%"
-"(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Chiudi il tag %(tag)s a linea %(line)s. (La linea inizia con \"%(start)s"
-"\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Il testo che comincia a linea %(line)s non e' ammesso in quel contesto. (La "
-"linea comincia con \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" a linea %(line)s non è un attributo valido. (La linea comincia "
-"con \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" a linea %(line)s non è un tag valido. (La linea comincia con "
-"\"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Un tag a linea %(line)s manca di uno o più attributi richiesti. (La linea "
-"comincia con \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"L'attributo \"%(attr)s\" a linea %(line)s ha un valore non valido. (La linea "
-"comincia con \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "Un %(object)s·con questo·%(type)s·esiste già per questo·%(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Un %(optname)s·con questo·%(fieldname)s·esiste già."
-
-#: db/models/fields/__init__.py:170 db/models/fields/__init__.py:343
-#: db/models/fields/files.py:168 db/models/fields/files.py:179
-#: forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Questo campo è obbligatorio."
-
-#: db/models/fields/__init__.py:457
-msgid "This value must be an integer."
-msgstr "Questo valore deve essere un intero."
-
-#: db/models/fields/__init__.py:503
-msgid "This value must be either True or False."
-msgstr "Questo valore deve essere True o False."
-
-#: db/models/fields/__init__.py:532
-msgid "This field cannot be null."
-msgstr "Questo campo non può essere nullo."
-
-#: db/models/fields/__init__.py:634 db/models/fields/__init__.py:651
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Inserisci una data/ora valida nel formato AAAA-MM-GG OO:MM[ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:707
-msgid "This value must be a decimal number."
-msgstr "Questo valore deve essere un numero decimale."
-
-#: db/models/fields/__init__.py:854
-msgid "This value must be either None, True or False."
-msgstr "Questo valore deve essere None, True o False."
-
-#: db/models/fields/__init__.py:969 db/models/fields/__init__.py:982
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Inserisci un ora valida nel formato OO:MM[ss[.uuuuuu]]."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Inserisci un nome di file valido."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Inserisci un %s valido."
-
-#: db/models/fields/related.py:759
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Tieni premuto \"Control\", o \"Command\" su Mac, per selezionarne più di "
-"uno."
-
-#: db/models/fields/related.py:839
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Inserisci un ID valido per %(self)s. Il valore %(value)r non è valido."
-msgstr[1] "Inserisci ID validi per %(self)s. I valori %(value)r non sono validi."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Inserisci un valore valido."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Assicurarsi che questo valore non contenga più di %(max)d caratteri (ne ha %"
-"(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Assicurarsi che questo valore contenga almeno %(min)d caratteri (ne ha %"
-"(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Assicurarsi che questo valore sia minore o uguale a %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Assicurarsi che questo valore sia maggiore o uguale a %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Inserisci un numero."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Assicurarsi che non vi siano più di %s cifre in totale."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Assicurarsi che non vi siano più di %s cifre decimali."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Assicurarsi che non vi siano più di %s cifre prima della virgola."
-
-#: forms/fields.py:272 forms/fields.py:802
-msgid "Enter a valid date."
-msgstr "Inserisci una data valida."
-
-#: forms/fields.py:305 forms/fields.py:803
-msgid "Enter a valid time."
-msgstr "Inserisci un ora valida."
-
-#: forms/fields.py:344
-msgid "Enter a valid date/time."
-msgstr "Inserisci una coppia data/ora valida."
-
-#: forms/fields.py:431
-msgid "No file was submitted."
-msgstr "Nessun file è stato inviato."
-
-#: forms/fields.py:432 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Il file inviato è vuoto."
-
-#: forms/fields.py:531
-msgid "Enter a valid URL."
-msgstr "Inserisci una URL valida."
-
-#: forms/fields.py:532
-msgid "This URL appears to be a broken link."
-msgstr "Questa URL non sembra funzionare."
-
-#: forms/fields.py:600 forms/fields.py:651
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Scegli un'opzione valida. '%(value)s non compare tra quelle disponibili."
-
-#: forms/fields.py:652 forms/fields.py:713 forms/models.py:589
-msgid "Enter a list of values."
-msgstr "Inserisci una lista di valori."
-
-#: forms/fields.py:831
-msgid "Enter a valid IPv4 address."
-msgstr "Inserisci un indirizzo IPv4 valido."
-
-#: forms/models.py:522
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Scegli un'opzione valida. La scelta effettuata non compare tra quelle "
-"disponibili."
-
-#: forms/models.py:590
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Scegli un'opzione valida. %s non compare tra quelle disponibili."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Assicurarsi che il testo sia più corto di %s carattere."
-msgstr[1] "Assicurarsi che il testo sia più corto di %s caratteri."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Non sono ammessi a capo manuali qui."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Scegli un'opzione valida; '%(data)s' non è presente in %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Inserisci un numero intero compreso tra -32.768 e 32.767 ."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Inserisci un numero positivo."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Inserisci un numero intero compreso tra 0 e 32.767 ."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "sì,no,forse"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d byte"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "mezzanotte"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "mezzogiorno"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "lunedì"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "martedì"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "mercoledì"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "giovedì"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "venerdì"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sabato"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "domenica"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "gio"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ven"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "gennaio"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febbraio"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "marzo"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "aprile"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "maggio"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "giugno"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "luglio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "settembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ottobre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "dicembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "gen"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mag"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "giu"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "lug"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ott"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dic"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "gen."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "ago."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "set."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "ott."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "dic."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "o"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "anno"
-msgstr[1] "anni"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mese"
-msgstr[1] "mesi"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "settimana"
-msgstr[1] "settimane"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "giorno"
-msgstr[1] "giorni"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "ora"
-msgstr[1] "ore"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minuti"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuti"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j F Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j F Y, H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "Y F"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "F j"
-
-#: views/generic/create_update.py:129
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s è stato creato correttamente."
-
-#: views/generic/create_update.py:172
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s è stato aggiornato correttamente."
-
-#: views/generic/create_update.py:214
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s è stato cancellato."
-
diff --git a/webapp/django/conf/locale/it/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/it/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 827f6e4..0000000
--- a/webapp/django/conf/locale/it/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/it/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/it/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 8f6d6dd..0000000
--- a/webapp/django/conf/locale/it/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,121 +0,0 @@
-# translation of djangojs.po to Italiano
-# Italian translation for the django-admin JS files
-# Copyright (C) 2006 the Lawrence Journal-World
-# This file is distributed under the same license as the Django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django vSVN\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-10 16:19+0200\n"
-"PO-Revision-Date: 2008-08-14 18:36+0200\n"
-"Last-Translator: Nicola Larosa <nico@tekNico.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-"X-Generator: KBabel 1.11.4\n"
-"Language-Team: Italiano\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s disponibili"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Scegli tutto"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Aggiungi"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Rimuovi"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s scelti"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Fai le tue scelte e clicca "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Cancella tutto"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre "
-"novembre dicembre"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D L M M G V S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "domenica lunedì martedì mercoledì giovedì venerdì sabato"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Mostra"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Nascondi"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Adesso"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Orologio"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Scegli un orario"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Mezzanotte"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 del mattino"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Mezzogiorno"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Annulla"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Oggi"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Calendario"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Ieri"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Domani"
-
diff --git a/webapp/django/conf/locale/ja/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index 907d7df..0000000
--- a/webapp/django/conf/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ja/LC_MESSAGES/django.po b/webapp/django/conf/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 675d41a..0000000
--- a/webapp/django/conf/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4510 +0,0 @@
-# Translation of django.po to japanese.
-
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-17 10:54+0900\n"
-"PO-Revision-Date: 2008-08-17 11:05+0900\n"
-"Last-Translator: Takashi Matsuo <matsuo.takashi@gmail.com>\n"
-"Language-Team: Japanese <django-ja@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "アラビア語"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "ベンガル語"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "ブルガリア語"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "カタロニア語"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "チェコ語"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "ウェールズ語"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "デンマーク語"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "ドイツ語"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "ギリシャ語"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "英語"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "スペイン語"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "エストニア語"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "アルゼンチンスペイン語"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "バスク語"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "ペルシア語"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "フィンランド語"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "フランス語"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "アイルランド語"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "ガリシア語"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "ハンガリー語"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "ヘブライ語"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "クロアチア語"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "アイスランド語"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "イタリア語"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "日本語"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "グルジア語"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "韓国語"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "クメール語"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "カンナダ語"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "ラトビア語"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "リトアニア語"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "マケドニア語"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "オランダ語"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "ノルウェー語"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "ポーランド語"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "ポルトガル語"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "ブラジルポルトガル語"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "ルーマニア語"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "ロシア語"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "スロバキア語"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "スロヴェニア語"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "セルビア語"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "スウェーデン語"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "タミル語"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "テルグ語"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "トルコ語"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ウクライナ語"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "簡体字中国語"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "繁体字中国語"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>%s で絞り込む</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "全て"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "いつでも"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "今日"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "過去 7 日間"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "今月"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "今年"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "はい"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "いいえ"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "不明"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "操作時刻"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "オブジェクト ID"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "オブジェクトの文字列表現"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "操作種別"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "変更メッセージ"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "ログエントリ"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "ログエントリ"
-
-#: contrib/admin/options.py:143 contrib/admin/options.py:202
-msgid "None"
-msgstr "None"
-
-#: contrib/admin/options.py:413
-#, python-format
-msgid "Changed %s."
-msgstr "%s を変更しました。"
-
-#: contrib/admin/options.py:413 contrib/admin/options.py:423
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "と"
-
-#: contrib/admin/options.py:418
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\"を追加しました。"
-
-#: contrib/admin/options.py:422
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" の %(list)s を変更しました。"
-
-#: contrib/admin/options.py:427
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" を削除しました。"
-
-#: contrib/admin/options.py:431
-msgid "No fields changed."
-msgstr "変更はありませんでした。"
-
-#: contrib/admin/options.py:492 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" を追加しました。"
-
-#: contrib/admin/options.py:496 contrib/admin/options.py:529
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "続けて編集できます。"
-
-#: contrib/admin/options.py:506 contrib/admin/options.py:539
-#, python-format
-msgid "You may add another %s below."
-msgstr "続けて別の %s を追加できます。"
-
-#: contrib/admin/options.py:527
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" を変更しました。"
-
-#: contrib/admin/options.py:535
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" を追加しました。続けて編集できます。"
-
-#: contrib/admin/options.py:601
-#, python-format
-msgid "Add %s"
-msgstr "%s を追加"
-
-#: contrib/admin/options.py:678
-#, python-format
-msgid "Change %s"
-msgstr "%s を変更"
-
-#: contrib/admin/options.py:709
-msgid "Database error"
-msgstr "データベースエラー"
-
-#: contrib/admin/options.py:758
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" を削除しました。"
-
-#: contrib/admin/options.py:765
-msgid "Are you sure?"
-msgstr "よろしいですか？"
-
-#: contrib/admin/options.py:792
-#, python-format
-msgid "Change history: %s"
-msgstr "変更履歴: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"正しいユーザ名とパスワードを入力してください (大文字小文字は区別します) 。"
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"再ログインしてください。ログインセッションが有効期間切れしてしまいました。入"
-"力データは失われておりませんのでご安心ください。"
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"ブラウザがクッキーの使用を許可していないようです。クッキーの使用を許可して、"
-"もう一度このページを表示してください。"
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "ユーザ名には '@' を含められません。"
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "メールアドレスはユーザ名ではありません。 '%s' を試してみてください。"
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "サイト管理"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "ログイン"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "%(name)s に %(fieldname)s が一つ以上あります: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "%(name)s に %(fieldname)s が一つ以上あります:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "日付:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "時刻:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "現在:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "変更:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "ページが見つかりません"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "申し訳ありませんが、お探しのページは見つかりませんでした。"
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "ホーム"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "サーバエラー"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "サーバエラー (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "サーバエラー <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"エラーが発生しました。エラーをサイトの管理者にメールで報告しましたので、近い"
-"うちに修正されるはずです。しばらくお待ちください。"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "ようこそ"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "ドキュメント"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "パスワードの変更"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "ログアウト"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django サイト管理"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 管理サイト"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "追加"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "履歴"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "サイト上で表示"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "下記のエラーを修正してください。"
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s を追加"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "フィルタ"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "削除"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' の削除時に関連づけられたオブジェクトも削"
-"除しようとしましたが、あなたのアカウントには以下のタイプのオブジェクトを削除"
-"するパーミッションがありません:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\"を削除しますか？ 関連づけられている以下"
-"のオブジェクトも全て削除されます:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "はい。"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s で絞り込む"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "%(name)s アプリケーションで利用可能なモデル"
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "変更"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "変更のためのパーミッションがありません。"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "最近行った操作"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "操作"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "利用不可"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"データベースの設定に問題があるようです。適切なテーブルが作られていること、適"
-"切なユーザでデータベースのデータを読み込めることを確認してください。"
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "ユーザ名:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "パスワード:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "日付/時刻"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "ユーザ"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "操作"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "Y/m/d H:i:s"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"このオブジェクトには変更履歴がありません。おそらくこの管理サイトで追加したも"
-"のではありません。"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "全件表示"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "検索"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s 件"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "全 %(full_result_count)s 件"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "新規保存"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "保存してもう一つ追加"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "保存して編集を続ける"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "保存"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"まずユーザ名とパスワードを登録してください。その後詳細情報が編集可能になりま"
-"す。"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "ユーザ名"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "パスワード"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "パスワード(確認用)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "確認のため、再度パスワードを入力してください。"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"<strong>%(username)s</strong>さんの新しいパスワードを入力してください。"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ご利用ありがとうございました。"
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "もう一度ログイン"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "パスワードの変更"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "パスワードを変更しました"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "あなたのパスワードは変更されました"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"セキュリティ上の理由から元のパスワードの入力が必要です。新しいパスワードは正"
-"しく入力したか確認できるように二度入力してください。"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "元のパスワード:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "新しいパスワード:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "新しいパスワード (確認用) :"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "パスワードの変更"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "パスワードをリセット"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "パスワードがリセットされました"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "パスワードがセットされました。ログインしてください。"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "パスワードリセットの確認"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "新しいパスワードを入力してください"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "確認のために、新しいパスワードを二回入力してください。"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "パスワードのリセットに失敗しました"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"パスワードリセットのリンクが不正です。おそらくこのリンクは既に使われていま"
-"す。もう一度パスワードリセットしてください。"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "パスワードをリセットしました"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"登録されているメールアドレスにパスワードリセットの方法を送信しました。まもな"
-"く届くでしょう。"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"あなたのパスワードはリセットされましたので、ここにメールでご連絡差し上げま"
-"す。"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "リセットされたのは %(site_name)s のアカウントです。"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "次のページで新しいパスワードを選んでください:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "あなたのユーザ名 (念のため):"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "ご利用ありがとうございました！"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr " %(site_name)s チーム"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"パスワードをお忘れですか？メールアドレスを入力してください。パスワードのリ"
-"セット方法をメールでお知らせします。"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "メールアドレス"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "パスワードをリセット"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "いつでも"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "%s を選択"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "変更する %s を選択"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "サイト"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "テンプレート"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "タグ"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "フィルタ"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "ビュー"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "アプリケーション %r が見つかりません"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-"モデル %(model_name)r が %(app_label)r アプリケーションに見つかりません"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` (関連オブジェクト)"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "モデル :"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` (関連オブジェクト)"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "全ての %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "%s の数"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s のフィールド"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "整数"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "ブール値 (真: True または偽: False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "文字列 ( %(max_length)s 字まで )"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "カンマ区切りの整数"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "日付"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "日時"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "10 進数 (小数可)"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "メールアドレス"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "ファイルの場所"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "浮動小数点"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP アドレス"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "ブール値 (真: True 、偽: False または None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "親モデルへのリレーション"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "電話番号"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "テキスト"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "時刻"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "アメリカの州 (大文字二文字で)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XMLテキスト"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s はurlpatternオブジェクトでは無いようです"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "ブックマークレット"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "ドキュメントへのブックマークレット"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">ブックマークレットをインストールするには、リンクをブック"
-"マークツールバーにドラッグするか、\n"
-"リンクを右クリックしてブックマークに追加してください。これで\n"
-"サイトのどのページからでもブックマークレットを選択可能になりました。\n"
-"ブックマークレットによっては、内部ネットワークにあるコンピュータからこのサイ"
-"トを\n"
-"参照していなければならないことがあります。内部ネットワークにあるかどうか不明"
-"な場合は、システム管理者に確認してください。</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "このページのドキュメント"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "各ページから、ページを生成したビューのドキュメントにジャンプします。"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "オブジェクト ID を表示"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"単一のオブジェクトを表示するページのコンテンツタイプと一意な IDを表示します。"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "オブジェクトを (現在のウィンドウで) 編集"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "単一のオブジェクトを表示するページの管理ページへジャンプします。"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "オブジェクトを (新しいウィンドウで) 編集"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "上と同じですが、新しいウィンドウで管理ページを開きます。"
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "個人情報"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "パーミッション"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "重要な日程"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "グループ"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "ユーザを追加"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "パスワードを変更しました"
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "パスワードの変更: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"この項目は必須です。半角アルファベット、半角数字、半角アンダーバーで30文字以"
-"下にしてください。"
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "半角の英数字およびアンダースコア以外は使用できません。"
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "パスワードの確認"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "同じユーザ名が既に登録済みです。"
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "確認用パスワードが一致しません。"
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "アカウントが無効です。"
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"お使いのブラウザはクッキーを有効にしていないようです。ログインにはクッキーが"
-"必要です。"
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "メールアドレス"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "メールアドレスの一致するユーザはいません。本当に登録しましたか？"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "%s にパスワードをリセット"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "新しいパスワード"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "新しいパスワード(確認用)"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "元のパスワード"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "元のパスワードが間違っています。もう一度入力してください。"
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "名前"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "コード名"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "パーミッション"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "パーミッション"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "グループ"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "グループ"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "ユーザ名"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "名"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "姓"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "メールアドレス"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "パスワード"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"'[algo]$[salt]$[hexdigest]'形式か、<a href=\"password/\">パスワード変更フォー"
-"ム</a>を使ってください。"
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "スタッフ権限"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "ユーザが管理サイトにログイン可能かどうかを示します。"
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "有効"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"ユーザがアクティブかどうかを示します。アカウントを消す代わりに選択を解除して"
-"ください。"
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "スーパーユーザ権限"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "全ての権限を持っているとみなされます。"
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "最終ログイン"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "登録日"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"手動で付与したパーミッションに加え、所属しているグループに付与された全ての"
-"パーミッションを獲得します。"
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "ユーザパーミッション"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "ユーザ"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "ユーザ"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "メッセージ"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "ログアウト"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "オブジェクト ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "新着情報"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "コメント"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "レーティング #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "レーティング #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "レーティング #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "レーティング #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "レーティング #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "レーティング #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "レーティング #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "レーティング #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "は有効なレーティングです"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "コメント投稿日時"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "は公開中です"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "は削除されました"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"コメントが不適切な場合はチェックを入れてください。「コメントは削除されまし"
-"た」と表示されるようになります。"
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "コメント"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "コンテンツオブジェクト"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s が %(date)s に投稿\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "名前"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "IP アドレス"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "スタッフの承認済み"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "フリーコメント"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "フリーコメント"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "スコア"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "スコアされた日"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "カルマスコア"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "カルマスコア"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(user)s により %(score)d 点のレーティング"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"このコメントは %(user)s がフラグ付けしました。:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "フラグ日"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "ユーザフラグ"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "ユーザフラグ"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "%r によるフラグ"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "削除日"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "モデレータ削除"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "モデレータ削除"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "%r によるモデレータ削除"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "パスワードをお忘れですか？"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "レーティング"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "必須"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "オプション"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "写真を登録"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "コメント:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "コメントをプレビュー"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "ユーザ名:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"他のレーティングを入力した場合は、このレーティングは必ず入力してください。"
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"このコメントを投稿したユーザのコメント数は %(count)s 未満です。コメント:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"このコメントを投稿したユーザの詳細は不明です:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "POST メソッドのみ有効です。"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "必須項目がいくつか入力されていません。"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "だれかがコメントフォームを改竄しています (セキュリティ侵害です)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"コメントフォームの 'target' パラメータが不正です。 -- オブジェクト IDが不正な"
-"値でした"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "コメントの「プレビュー」「投稿」種別が不明です。"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "非ログインユーザは投票できません。"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "コメント ID が不正です"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "自分には投票できません。"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "Python モデルクラス名"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "コンテンツタイプ"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "コンテンツタイプ"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"例: '/about/contact/'. 先頭と最後にスラッシュがあるか確認してください。"
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"半角の英数字、アンダースコア、ダッシュ、スラッシュ以外は使用できません。"
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "詳細設定"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "タイトル"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "内容"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "コメントを有効にする"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "テンプレート名"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"例: 'flatpages/contact_page.html'. 指定しなければ、デフォルト設定"
-"の'flatpages/default.html' を使います。"
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "登録が必要です"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "チェックした場合、ログインしたユーザだけがページを参照できます。"
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "フラットページ"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "フラットページ"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Geo値がありません。"
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Geo値が不正です"
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Geometry タイプが不正です。"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "番目"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "番目"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "番目"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "番目"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f 百万"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f 十億"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f 兆"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "1"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "2"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "3"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "4"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "5"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "6"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "7"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "8"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "9"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "今日"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "明日"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "昨日"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "NNNNか、ANNNNAAAの形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "このフィールドは必須です(数値のみ)。"
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "7桁か8桁で入力して下さい。"
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-"XX-XXXXXXXX-X か XXXXXXXXXXXX の形式で納税証明単一番号(CUIT)を入力して下さ"
-"い。"
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "無効な納税証明単一番号(CUIT): %s"
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Carinthia"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Lower Austria"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Upper Austria"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburg"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Styria"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tyrol"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Vienna"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "XXXXの形式でZipコードを入力してください。"
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr "XXXX XXXXXX の形式でオーストリア社会保障番号を入力してください。"
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "4桁でポストコードを入力してください。"
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "XXXXX-XXXの形式でZipコードを入力してください。"
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "電話番号は XX-XXXX-XXXX 形式で入力してください。"
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "ブラジルの州から選択してください。選択したものは候補にありません。"
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "ブラジル納税者番号(CPF)が無効です。"
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "11桁の数字か14文字で入力してください。"
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "納税登録番号(CNPJ)が正しくありません。"
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "14桁以上で入力して下さい。"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "XXX XXXの形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "XXX-XXX-XXX の形式で、カナダ社会保障番号を入力して下さい。"
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Geneva"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"スイス アイデンティティかパスポート番号を X1234567<0 か 1234567890 の形式で入"
-"力して下さい。"
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "正しいチリ納税者番号(RUT)を入力してください。"
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "XX.XXX.XXX-Xの形式でチリ納税者番号(RUT)を入力してください。"
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "このチリ納税者番号(RUT)は無効です。"
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavaria"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Lower Saxony"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "North Rhine-Westphalia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxony"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxony-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thuringia"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "XXXXXの形式でZipコードを入力してください。"
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X の形式でドイツIDカード番号を入力して下さい。"
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Avila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Illes Balears"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Caceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castello"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Cordoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaen"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Leon"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Malaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Seville"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusia"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragon"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principality of Asturias"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Balearic Islands"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Basque Country"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Canary Islands"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castile-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castile and Leon"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalonia"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicia"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Region of Murcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Foral Community of Navarre"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valencian Community"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "01XXX から 52XXXの形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"6XXXXXXXX か 8XXXXXXXX か 9XXXXXXXX かのいずれかの形式で電話番号を入力してく"
-"ださい。"
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
-"スペイン納税者番号(NIF)かスペイン住民番号(N.I.E)かスペイン企業番号(CIF)のいず"
-"れかを入力してください。"
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "スペイン納税者番号(NIF)かスペイン住民番号(N.I.E)を入力してください。"
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "スペイン納税者番号(NIF)のチェックサムがあいません。"
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "スペイン住民番号(N.I.E)のチェックサムがあいません。"
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "スペイン企業番号(CIF)のチェックサムがあいません。"
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "XXXX-XXXX-XX-XXXXXXXXXX の形式で銀行口座番号を入力して下さい。"
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "銀行口座番号のチェックサムがあいません。"
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "フィンランド社会保証番号を正しく入力してください。"
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "XXXXXXXの形式でZipコードを入力してください。"
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "XXXXXか、XXXXX-XXXXの形式でアイスランド納税者番号を入力してください。"
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "アイスランド納税者番号を正しく入力して下さい。"
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Zipコードを正しく入力してください。"
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "社会保障番号番号を正しく入力してください。"
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "VAT番号を正しく入力してください。"
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "北海道"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "青森県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "岩手県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "宮城県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "秋田県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "山形県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "福島県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "茨城県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "栃木県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "群馬県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "埼玉県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "千葉県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "東京都"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "神奈川県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "山梨県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "長野県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "新潟県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "富山県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "石川県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "福井県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "岐阜県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "静岡県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "愛知県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "三重県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "滋賀県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "京都府"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "大阪府"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "兵庫県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "奈良県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "和歌山県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "鳥取県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "島根県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "岡山県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "広島県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "山口県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "徳島県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "香川県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "愛媛県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "高知県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "福岡県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "佐賀県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "長崎県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "熊本県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "大分県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "宮崎県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "鹿児島県"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "沖縄県"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estado de México"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacan"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo Leon"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Queretaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosi"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatan"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "郵便番号を正しく入力してください。"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "電話番号を正しく入力してください。"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "社会税務番号(SoFi)を正しく入力してください。"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "ノルウェー社会保障番号を正しく入力してください。"
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "8桁で入力して下さい。"
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "11桁で入力して下さい。"
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "国民識別番号は11文字で入力して下さい。"
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "国民識別番号のチェックサムがあいません。"
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "XXXXXか、XXXXX-XXXXの形式で納税者欄(NIP)を入力してください。"
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "税務署登録ID(NIP)のチェックサムがあいません。"
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "ポーランド企業番号(REGON)は7文字か9文字で入力して下さい。"
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "ポーランド企業番号(REGON)のチェックサムがあいません。"
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "XX-XXXの形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Lower Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Lesser Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpatia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Greater Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "West Pomerania"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "CIFを正しく入力してください。"
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "CNPを正しく入力してください。"
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "ROXX-XXXX-XXXX-XXXX-XXXX-XXXX の形式でIBANを入力してください"
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "電話番号は XXXX-XXXXXX 形式で入力してください。"
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "XXXXXX の形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "XXXXXか、XXX XXの形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banska Bystrica region"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Bratislava region"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Kosice region"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nitra region"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Presov region"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trencin region"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava region"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Zilina region"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "郵便番号を正しく入力してください。"
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Greater London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "County Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Central Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "England"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Northern Ireland"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Wales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "XXXXXか、XXXXX-XXXXの形式で郵便番号を入力してください。"
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "XXX-XX-XXXX の形式で、米国社会保障番号を入力して下さい。"
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "南アフリカID番号を正しく入力してください。"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "南アフリカ郵便番号を正しく入力してください。"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Eastern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "リダイレクト元"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "'/events/search/' のように、ドメイン名を除いた絶対パスにします。 "
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "リダイレクト先"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "上記のような絶対パスか、 'http://' で始まる完全な URL にします。"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "リダイレクト"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "リダイレクト"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "セッションキー"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "セッションデータ"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "有効期限"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "セッション"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "セッション"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "ドメイン名"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "表示名"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "サイト"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "半角の英数字、アンダースコア、ハイフン以外は使用できません。"
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "大文字はここでは使用できません。"
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "小文字はここでは使用できません。"
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "カンマ区切りの数字だけを入力してください。"
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "カンマ区切りの有効なメールアドレスを入力してください。"
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "有効な IP アドレスを入力してください。"
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "入力は必須です。"
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "数値以外は使用できません。"
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "数値だけの値にはできません。"
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "整数を入力してください。"
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "半角アルファベット以外使用できません。"
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "無効な日付: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "YYYY-MM-DD形式で日付を入力してください。"
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "HH:MM形式で時刻を入力してください。"
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "YYYY-MM-DD HH:MM形式で日時を入力してください。"
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "有効なメールアドレスを入力してください。"
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"ファイルが取得できませんでした。formのencoding typeを確認してください。"
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "画像をアップロードしてください。アップロードしたファイルは画像でないか、または壊れています。"
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL ( %s )  は画像ではありません。"
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "電話番号は XXX-XXX-XXXX 形式で入力してください。\"%s\" は無効です。"
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL ( %s ) は QuickTime ビデオではありません。"
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "正しい URL を入力してください。"
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"有効な HTML を入力してください。エラー:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "不正な XML です: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "無効なURL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL ( %s ) はリンクが壊れています。"
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "正しい米州略称を入力してください。"
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "言葉使いに気を付けて！ %s という言葉は使えません。"
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "このフィールドは '%s' フィールドと一致せねばなりません。"
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "少なくとも一つのフィールドに何か入力してください。"
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "両方のフィールドに入力するか、両方とも未入力にしてください。"
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-"%(field)s を %(value)s にするのなら、このフィールドに必ず入力してください。"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-"%(field)s を %(value)s にしないのなら、このフィールドに必ず入力してください。"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "重複する値は認められません。"
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "この値は %(lower)s から %(upper)s の間でなければなりません。"
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "この値は %s 以上でなければなりません。"
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "この値は %s より小さくなければなりません。"
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "この値は %s の累乗でなければなりません。"
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "有効な 10 進数を入力してください。"
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "全体で %s 文字以下の数字を入力してください。"
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "整数部は %s 文字以下の数字を入力してください。"
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "小数部は %s 文字以下の数字を入力してください。"
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "有効な 小数 を入力してください。"
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "アップロードするファイルの大きさは %s バイト以上にしてください。"
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "アップロードするファイルの大きさは %s 最大バイトまでです。"
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "フィールドの形式が正しくありません。"
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "このフィールドは無効です。"
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "%s から何も検索できませんでした。"
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL %(url)s は無効なコンテンツタイプヘッダ '%(contenttype)s' を返しました。"
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"%(line)s 行目から始まる %(tag)s タグを閉じてください (\"%(start)s\" で始まる"
-"行です)。"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s 行目から始まるテキストはこのコンテキストでは使えません。 (\"%(start)"
-"s\" で始まる行です)。"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"%(line)s 行目の \"%(attr)s\" は無効なアトリビュートです (\"%(start)s\" で始ま"
-"る行です)。"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"%(line)s 行目の \"<%(tag)s>\" は無効なタグです( \"%(start)s\" で始まる行で"
-"す)。"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s 行目のタグは必須アトリビュートが未入力です( \"%(start)s\" で始まる行"
-"です)。"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s 行目の \"%(attr)s\" アトリビュートの値が正しくありません (\"%(start)"
-"s\" で始まる行です) 。"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"%(field)s に入力されたものは、この %(type)s の %(object)s に既に存在します。"
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(fieldname)s に %(optname)s は既に存在します。"
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "このフィールドは必須です。"
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "値は整数でなければなりません。"
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "値は真: True または偽: False でなければなりません。"
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "このフィールドには NULL を指定できません。"
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "YYYY-MM-DD HH:MM[:ss[.uuuuuu]]形式で日時を入力してください。"
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "値は整数でなければなりません。"
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "値は、空: None、真: True または偽: False でなければなりません。"
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "HH:MM[:ss[.uuuuuu]]形式で時刻を入力してください。"
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "正しいファイル名を入力してください。"
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "正しい %s を入力してください。"
-
-#: db/models/fields/related.py:776
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"複数選択するときには Control キーを押したまま選択してください。Mac は "
-"Command キーを使ってください"
-
-#: db/models/fields/related.py:856
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "正しい %(self)s IDを入力してください。 %(value)r は無効です。"
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "値を正しく入力してください。"
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "%(max)d 字以下で入力してください( %(length)d 文字入力されました)。"
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "%(min)d 字以上で入力してください。( %(length)d 文字入力されました)。"
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "この値は %s 以下でなければなりません。"
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "この値は %s 以上でなければなりません。"
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "整数を入力してください。"
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "整数部と少数部を併せて %s 桁までで入力して下さい。"
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "少数部は %s 桁までで入力して下さい。"
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "整数部は %s 桁までで入力して下さい。"
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "日付を正しく入力してください。"
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "時間を正しく入力してください。"
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "日付/時間を正しく入力してください。"
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "ファイルが送信されていません。"
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "入力されたファイルは空です。"
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "URLを正しく入力してください。"
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "このURLはリンクが壊れています。"
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "正しく選択してください。 %(value)s は候補にありません。"
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "リストを入力してください。"
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "有効なIPアドレス (IPv4) を入力してください。"
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "正しく選択してください。選択したものは候補にありません。"
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "正しく選択してください。 %s は候補にありません。"
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "%s 字以下で入力してください。"
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "改行はできません。"
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "正しく選択してください。; '%(data)s' は %(choices)s にありません。"
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "-32,768 から 32,767 までの整数を入力してください。"
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "正の数を入力してください。"
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "0 から 32,767 までの整数を入力してください。"
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "はい,いいえ,たぶん"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d バイト"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "0時"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "12時"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "月曜日"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "火曜日"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "水曜日"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "木曜日"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "金曜日"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "土曜日"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "日曜日"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "月"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "火"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "水"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "木"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "金"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "土"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "日"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "1月"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "2月"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "3月"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "4月"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "5月"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "6月"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "7月"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "8月"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "9月"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "10月"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "11月"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "12月"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "1月"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "2月"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "3月"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "4月"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "5月"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "6月"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "7月"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "8月"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "9月"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "10月"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "11月"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "12月"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "1月"
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "2月"
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "8月"
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "9月"
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "10月"
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "11月"
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "12月"
-
-#: utils/text.py:128
-msgid "or"
-msgstr "または"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "年"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "ヶ月"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "週間"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "日"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "時間"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "分"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "分"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "Y/m/d"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "Y/m/d H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "Y/m/d"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "m/d"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s を作成しました。"
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s を更新しました。"
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr " %(verbose_name)s を削除しました。"
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "新しいパスワード: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr "パスワードは下記のページで自由に変更していただけます:"
-
-#~ msgid "Gaeilge"
-#~ msgstr "アイルランド語"
-
-#~ msgid "Brazilian"
-#~ msgstr "ブラジル語"
-
-#~ msgid "Ordering"
-#~ msgstr "順序"
-
-#~ msgid "Order:"
-#~ msgstr "並び変え:"
-
-#~ msgid "Added %s."
-#~ msgstr "%s を追加しました。"
-
-#~ msgid "Deleted %s."
-#~ msgstr "%s を削除しました。"
-
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "新しいパスワード(確認用)が一致しません。"
-
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "1900年以降を指定してください。"
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "複数の ID はカンマで区切ってください。"
diff --git a/webapp/django/conf/locale/ja/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ja/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 6abe6ea..0000000
--- a/webapp/django/conf/locale/ja/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ja/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ja/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c7f2db5..0000000
--- a/webapp/django/conf/locale/ja/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,113 +0,0 @@
-# Japanese translation for js.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-03-26 23:41+0900\n"
-"PO-Revision-Date: 2006-05-08 13:39+0900\n"
-"Last-Translator: makoto tsuyuki <mtsuyuki@gmail.com>\n"
-"Language-Team: Japanese <django-ja@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "日 月 火 水 木 金 土"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "日曜 月曜 火曜 水曜 木曜 金曜 土曜"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "利用可能 %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "全て選択"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "追加"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "削除"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "選択された %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "選択してクリック"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "全てクリア"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "表示"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "非表示"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "現在"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "時計"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "時間を選択"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "0時"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "午前 6 時"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "12時"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "キャンセル"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "今日"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "カレンダー"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "昨日"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "明日"
diff --git a/webapp/django/conf/locale/ka/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index aa632e4..0000000
--- a/webapp/django/conf/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ka/LC_MESSAGES/django.po b/webapp/django/conf/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 59bec5e..0000000
--- a/webapp/django/conf/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4571 +0,0 @@
-# Django translation to Georgian language.
-# Copyright (C) 2008
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-20 21:33+0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: David Avsajanishvili <avsd05@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "არაბული"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "ბენგალიური"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "ბულგარული"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "კატალანური"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "ჩეხური"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "უელსური"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "დანიური"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "გერმანული"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "ბერძნული"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "ინგლისური"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "ესპანური"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "ესტონური"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "არგენტინის ესპანური"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "ბასკური"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "სპარსული"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "ფინური"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "ფრანგული"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "ირლანდიური"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "გალიციური"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "უნგრული"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "ებრაული"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "ხორვატიული"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "ისლანდიური"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "იტალიური"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "იაპონური"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "ქართული"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "კორეული"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "ხმერული"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "კანნადა"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "ლატვიური"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "ლიტვური"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "მაკედონური"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "ჰოლანდიური"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "ნორვეგიული"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "პოლონური"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "პორტუგალიური"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "ბრაზილიური პორტუგალიური"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "რუმინული"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "რუსული"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "სლოვარური"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "სლოვენიური"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "სერბული"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "შვედური"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "თამილური"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "ტელუგუ"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "თურქული"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "უკრაინული"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "გამარტივებული ჩინური"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "ტრადიციული ჩინური"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>%s-ს მიერ:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "ყველა"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "ნებისმიერი თარიღი"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "დღეს"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "ბოლო 7 დღე"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "მიმდინარე თვე"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "მიმდინარე წელი"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "კი"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "არა"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "გაურკვეველი"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "მოქმედების დრო"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "ობიექტის id"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "ობიექტის წარმ."
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "მოქმედების დროშა"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "შეცვლის შეტყობინება"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "ლოგის ერთეული"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "ლოგის ერთეულები"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "არცერთი"
-
-#: contrib/admin/options.py:326
-#, python-format
-msgid "Changed %s."
-msgstr "%s შეცვლილია."
-
-#: contrib/admin/options.py:326 contrib/admin/options.py:336
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "და"
-
-#: contrib/admin/options.py:331
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "დამატებულია %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:335
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "შეცვლილია %(list)s for %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:340
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "წაშლილია %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:344
-msgid "No fields changed."
-msgstr "არცერთი ველი არ შეცვლილა."
-
-#: contrib/admin/options.py:405 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" წარმატებით დაემატა."
-
-#: contrib/admin/options.py:409 contrib/admin/options.py:442
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "თქვენ შეგიძლიათ შეცვალოთ იგი."
-
-#: contrib/admin/options.py:419 contrib/admin/options.py:452
-#, python-format
-msgid "You may add another %s below."
-msgstr "შეგიძლიათ დაამატოთ კიდევ ერთი %s."
-
-#: contrib/admin/options.py:440
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" წარმატებით შეიცვალა."
-
-#: contrib/admin/options.py:448
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" წარმატებით დაემატა. შეგიძლიათ განაგრძოთ მისი "
-"რედაქტირება."
-
-#: contrib/admin/options.py:514
-#, python-format
-msgid "Add %s"
-msgstr "დავამატოთ %s"
-
-#: contrib/admin/options.py:591
-#, python-format
-msgid "Change %s"
-msgstr "შევცვალოთ %s"
-
-#: contrib/admin/options.py:622
-msgid "Database error"
-msgstr "მონაცემთა ბაზის შეცდომა"
-
-#: contrib/admin/options.py:671
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" წარმატებით წაიშალა."
-
-#: contrib/admin/options.py:678
-msgid "Are you sure?"
-msgstr "დარწმუნებული ხართ?"
-
-#: contrib/admin/options.py:705
-#, python-format
-msgid "Change history: %s"
-msgstr "ცვლილებების ისტორია: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"გთხოვთ, შეიყვანოთ სწორი მომხმარებლის სახელი და პაროლი. გაითვალისწინეთ, რომ "
-"ორივე ველი დამოკიდებულია რეგისტრზე."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"გთხოვთ, შეხვიდეთ კიდევ ერთხელ, რადგანაც თქვენი სესიის დრო ამოიწურა. ნუ "
-"ღელავთ: თქვენს მიერ შეტანილი ცვლილებები შენახულია."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"როგორც ჩანს, თქვენი ბროუზერი არ ღებულობს cookie-ებს. გთხოვთ, ჩართოთ cookie-"
-"ების მიღების ფუნქცია, განაახლეთ ეს გვერდი და სცადეთ კიდევ ერთხელ."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "მომხმარებლის სახელი არ უნდა შეიცავდეს სიმბოლოს '@'."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"ელ-ფოსტის მისამართი არ არის თქვენი მომხმარებლის სახელი. სცადეთ '%s' მის "
-"ნაცვლად."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "საიტის ადმინისტრირება"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "შესვლა"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "ერთი ან რამდენიმე %(fieldname)s ობიექტში %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "ერთი ან რამდენიმე %(fieldname)s ობიექტში %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "თარიღი;"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "დრო:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "მიმდინარე:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "შეცვლა:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "გვერდი ვერ მოიძებნა"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "უკაცრავად, მოთხოვნილი გვერდი ვერ მოიძებნა."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "საწყისი გვერდი"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "სერვერის შეცდომა"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "სერვერის შეცდომა (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "სერვერის შეცდომა <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"სისტემაში მოხდა შეცდომა. იგი გადაგზავნილია საიტის ადმინისტრატორის ელექტრონულ "
-"ფოსტაზე და მალე გამოსწორდება. გმადლობთ მოთმინებისათვის."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "კეთილი იყოს თქვენი მობრძანება,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "დოკუმენტაცია"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "პაროლის შეცვლა"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "გამოსვლა"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django-ს ადმინისტრირების საიტი"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-ს ადმინისტრირება"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "დამატება"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "ისტორია"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "წარმოდგენა საიტზე"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "გთხოვთ, გაასწორეთ ქვემოთ მოყვანილი შეცდომა."
-msgstr[1] "გთხოვთ, გაასწორეთ ქვემოთ მოყვანილი შეცდომები."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "დავამატოთ %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "ფილტრი"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "წავშალოთ"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"ობიექტების წაშლა: %(object_name)s '%(escaped_object)s' გამოიწვევს "
-"დაკავშირებული ობიექტების წაშლას, მაგრამ თქვენ არა გაქვთ შემდეგი ტიპების "
-"ობიექტების წაშლის უფლება:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"ნამდვილად გსურთ, წაშალოთ %(object_name)s \"%(escaped_object)s\"? ყველა "
-"ქვემოთ მოყვანილი დაკავშირებული ობიექტი წაშლილი იქნება:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "კი, ნამდვილად"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s მიხედვით "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "%(name)s აპლიკაციაში არსებული მოდელები."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "შეცვლა"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "თქვენ არა გაქვთ რედაქტირების უფლება."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "ბოლო მოქმედებები"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "ჩემი მოქმედებები"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "არ არის მისაწვდომი"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"თქვენი მონაცემთა ბაზის ინსტალაცია არაკორექტულია. დარწმუნდით, რომ მონაცემთა "
-"ბაზის შესაბამისი ცხრილები შექმნილია, და მონაცემთა ბაზის წაკითხვა შეუძლია "
-"შესაბამის მომხმარებელს."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "მომხმარებლის სახელი:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "პაროლი:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "თარიღი/დრო"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "მომხმარებელი"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "მოქმედება"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"ამ ობიექტს ცვლილებების ისტორია არა აქვს. როგორც ჩანს, იგი არ იყო დამატებული "
-"ადმინისტრირების საიტის მეშვეობით."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "ვაჩვენოთ ყველა"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "ძებნა"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "ერთი შედეგი"
-msgstr[1] "%(counter)s შედეგი"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "სულ %(full_result_count)s"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "შევინახოთ, როგორც ახალი"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "შევინახოთ და დავამატოთ ახალი"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "შევინახოთ და გავაგრძელოთ რედაქტირება"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "შევინახოთ"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"ჯერ შეიყვანეთ მომხმარებლის სახელი და პაროლი. ამის შემდეგ თქვენ გექნებათ "
-"მომხმარებლის სხვა ოპციების რედაქტირების შესაძლებლობა."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "მომხმარებელი"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "პაროლი"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "პაროლი (განმეორებით)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "შეიყვანეთ იგივე პაროლი, დამოწმებისათვის."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"შეიყვანეთ ახალი პაროლი მომხმარებლისათვის <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "გმადლობთ, რომ დღეს ამ საიტთან მუშაობას დაუთმეთ დრო."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ხელახლა შესვლა"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "პაროლის შეცვლა"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "პაროლი წარმატებით შეიცვალა"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "თქვენი პაროლი შეიცვალა."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"გთხოვთ, უსაფრთხოების დაცვის მიზნით, შეიყვანოთ თქვენი ძველი პაროლი, შემდეგ კი "
-"ახალი პაროლი ორჯერ, რათა დარწმუნდეთ, რომ იგი შეყვანილია სწორად."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "ძველი პაროლი:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "ახალი პაროლი:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "პაროლის დამოწმება:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "შევცვალოთ ჩემი პაროლი"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "პაროლის აღდგენა"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "პაროლის აღდგენა დასრულებულია"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "თქვენი პაროლი დაყენებულია. ახლა შეგიძლიათ გადახვიდეთ შემდეგ გვერდზე და შეხვიდეთ სისტემაში."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "პაროლი შეცვლის დამოწმება"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "შეიყვანეთ ახალი პაროლი:"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"გთხოვთ, შეიყვანეთ თქვენი ახალი პაროლი ორჯერ, რათა დავრწმუნდეთ, "
-"რომ იგი სწორად ჩაბეჭდეთ."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "პაროლის აღდგენა წარუმატებლად დასრულდა"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"პაროლის აღდგენის ბმული არასწორი იყო, შესაძლოა იმის გამო, რომ "
-"იგი უკვე ყოფილა გამოყენებული. გთხოვთ, კიდევ ერთხელ სცადოთ პაროლის აღდგენა."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "პაროლის აღდგენა წარმატებით დასრულდა"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"თქვენს მიერ მითითებულ საფოსტო ყუთზე გამოგიგზავნეთ ინსტრუქციები, "
-"თუ როგორ უნდა დააყენოთ თქვენი პაროლი. წერილი მალე უნდა მიიღოთ."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "თქვენ მიიღეთ ეს წერილი, რადგანაც მოითხოვეთ პაროლის აღდგენა"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "თქვენი მომხმარებლის ანგარიშისათვის %(site_name)s-საიტზე"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "გთხოვთ, გადახვიდეთ შემდეგ გვერდზე და აირჩიოთ ახალი პაროლი:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "თქვენი მომხმარებლის სახელი (თუ დაგავიწყდათ):"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "გმადლობთ, რომ იყენებთ ჩვენს საიტს!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s საიტის გუნდი"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"დაგავიწყდათ პაროლი? შეიყვანეთ თქვენი ელექტრონული ფოსტის მისამართი ამ ველში, "
-"ჩვენ გამოგიგზავნით ინსტრუქციებს, როგორ დააყენოთ ახალი."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "ელ. ფოსტა:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "აღვადგინოთ ჩემი პაროლი"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "ყველა თარიღი"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "ავირჩიოთ %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "აირჩიეთ %s შესაცვლელად"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "საიტი"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "შაბლონი"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "ტეგი:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "ფილტრი:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "წარმოდგენა:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "აპლიკაცია %r ვერ მოიძებნა"
-
-#: contrib/admindocs/views.py:194
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "მოდელი %(model_name)r ვერ მოიძებნა აპლიკაციაში %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` დაკავშირებული ობიექტი"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "მოდელი:"
-
-#: contrib/admindocs/views.py:237
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` დაკავშირებული ობიექტები"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "ყველა %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "%s - რაოდენობა"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s ობიექტების ველები"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "მთელი"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "ლოგიკური (True ან False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "სტრიქონი (%(max_length)s სიმბოლომდე)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "მძიმით გამოყოფილი მთელი რიცხვები"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "თარიღი (დროის გარეშე)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "თარიღი (დროსთან ერთად)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "ათობითი რიცხვი"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "ელ. ფოსტის მისამართი"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "გზა ფაილისაკენ"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "რიცხვი მცოცავი წერტილით"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP-მისამართი"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "ლოგიკური (True, False ან None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "მშობელ მოდელთან დამოკიდებულება"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "ტელეფონის ნომერი"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "ტექსტი"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "დრო"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "აშშ შტატი (ორი ასომთავრული)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML ტექსტი"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s არ არის urlpattern-ის შესაბამისი ობიექტი"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "სანიშნები"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "დოკუმენტაციის სანიშნები"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">სანიშნების დასაყენებლად გადაათრიეთ ბმული თქვენი "
-"სანიშნების\n"
-"პანელზე, ან დააწკაპეთ ბმულზე მარჯვენა ღილაკით და დაამატეთ იგი სანიშნებში.\n"
-"ამის შემდეგ თქვენ შეძლებთ სანიშნის არჩევას საიტის ნებისმიერი გვერდიდან.\n"
-"გაითვალისწინეთ, რომ ზოგიერთი სანიშნის მოხმარებისათვის საჭიროა, რომ თქვენ\n"
-"იყოთ შესული ამ საიტზე ე.წ. \"შიდა\" კომპიუტერიდან (შეუთანხმდით თქვენს\n"
-"ადმინისტრატორს, თუ არ ხართ დარწმუნებული, რომ თქვენი კომპიუტერი არის\n"
-"\"შიდა\" კომპიუტერი).</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "ამ გვერდის დოკუმენტაცია"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"გადასვლა ნებისმიერი გვერდიდან იმ წარმოდგენის დოკუმენტაციაზე, რომელიც ამ "
-"გვერდს აგენერირებს."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "ობიექტის ID-ის ჩვენება"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"ერთი ობიექტის ამსახველი გვერდის content-type-ის და უნიკალური ID-ის ჩვენება."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "შევცვალოთ ეს ობიექტი (იმავე ფანჯარაში)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ერთი ობიექტის ამსახველი გვერდების ადმინისტრირებაზე გადასვლა."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "შევცვალოთ ეს ობიექტი (ახალ ფანჯარაში)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "იგივე, ოღონდ ხსნის ადმინისტრირების გვერდს ახალ ფანჯარაში."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "პირადი ინფორმაცია"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "უფლებები"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "მნიშვნელოვანი თარიღები"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "ჯგუფები"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "მომხმარებლის დამატება"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "პაროლი წარმატებით შეიცვალა."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "შევცვალოთ პაროლი: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"აუცილებელია. 30 ან ნაკლები სიმბოლო. მხოლოდ ლათინური ასოები, ციფრები და "
-"ხაზგასმა."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr ""
-"ეს მნიშვნელობა შეიძლება შეიცავდეს მხოლოდ ასოებს, ციფრებს და ხაზგასმის "
-"ნიშნებს."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "პაროლის დამოწმება"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "მომხმარებელი ამ სახელით უკვე არსებობს."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "პაროლის ორი ველი ერთმანეთს არ ემთხვევა."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "თქვენი ანგარიში არააქტიურია."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"თქვენი ბროუზერი არ ღებულობს cookie-ებს. Cookie საჭიროა საიტზე შესასვლელად."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "ელ. ფოსტა"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"ელ.ფოსტის ეს მისამართი არ შეესაბამება არცერთ მომხმარებელს. ნამდვილად ხართ "
-"დარეგისტრირებული?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "პაროლი შეცვლილია: %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "ახალი პაროლი"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "ახალი პაროლის დამოწმება"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "ძველი პაროლი"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "თქვენი ძველი პაროლი შეყვანილია არასწორად. გთხოვთ, შეიყვანოთ ხელახლა."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "სახელი"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "კოდური სახელი"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "უფლება"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "უფლებები"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "ჯგუფი"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "ჯგუფები"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "მომხმარებლის სახელი"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "სახელი"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "გვარი"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "ელ. ფოსტა"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "პაროლი"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"გამოიყენეთ '[algo]$[salt]$[hexdigest]' ან <a href=\"password/\">პაროლის "
-"შეცვლის ფორმა</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "თანამშრომლობის სტატუსი"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"განსაზღვრავს, აქვს თუ არა მომხმარებელს ადმინისტრირების საიტზე შესვლის უფლება."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "აქტიურია"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"განსაზღვრავს, რომ მომხმარებელი გააქტიურებულია. მომხმარებლის წაშლის მაგივრად "
-"გადანიშნეთ ეს დროშა."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "სუპერმომხმარებლის სტატუსი"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "განსაზღვრავს, რომ ამ მომხმარებელს აქვს ყველა უფლება."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "ბოლო შესვლა"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "გაწევრიანების თარიღი"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"ინდივიდუალურად მითითებული უფლებების გარდა, ეს მომხმარებელი მიიღებს აგრეთვე "
-"ყველა იმ ჯგუფის უფლებას, რომელშიც იგი გაწევრიანებულია."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "მომხმარებლის უფლებები"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "მომხმარებელი"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "მომხმარებლები"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "შეტყობინება"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "გამოსული ხართ"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "ობიექტის ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "ჰედლაინი"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "კომენტარი"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "რეიტინგი #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "რეიტინგი #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "რეიტინგი #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "რეიტინგი #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "რეიტინგი #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "რეიტინგი #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "რეიტინგი #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "რეიტინგი #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "დასაშვები რეიტინგია"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "გაგზავნის თარიღი და დრო"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "საყოველთაოა"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "წაშლილია"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"მონიშნეთ ეს დროშა, თუ კომენტარი შეუსაბამოა. მის ნაცვლად გაჩნდება "
-"შეტყობინება: \"კომენტარი წაშლილია\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "კომენტარები"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "კონტენტის ობიექტი"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"გამოგზავნილია %(user)s-ს მიერ, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "პიროვნების სახელი"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "ip-მისამართი"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "მოწონებულია პერსონალის მიერ"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "თავისუფალი კომენტარი"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "თავისუფალი კომენტარები"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "შეფასება"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "შეფასების თარიღი"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "კარმა-შეფასება"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "კარმა-შეფასებები"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d შეფასებულია %(user)s-ის მიერ"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"ეს კომენტარი მონიშნულია %(user)s-ის მიერ:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "მონიშვნის თარიღი"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "მომხმარებლის მონიშვნა"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "მომხმარებლის მონიშვნები"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "%r-ის მონიშვნები"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "წაშლის თარიღი"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "მოდერატორის წაშლა"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "მოდერატორის წაშლები"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "მოდერატორის წაშლა %r-ის მიერ"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "დაგავიწყდათ თქვენი პაროლი?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "რეიტინგები"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "აუცილებელია"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "არასავალდებულოა"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "სურათის გაგზავნა"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "კომენტარი:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "კომენტარის წინასწარი ნახვა"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "თქვენი სახელი:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "ეს რეიტინგი აუცილებელია, რადგანაც თქვენ შესულხართ სხვა რეიტინგებში."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"ეს კომენტარი გამოგზავნილია მომხმარებლის მიერ, რომელსაც %(count)s-ზე ნაკლები "
-"კომენტარი აქვს:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"ეს კომენტარი გამოგზავნილია მომხმარებლის მიერ, რომელსაც %(count)s-ზე ნაკლები "
-"კომენტარი აქვს:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"ეს კომენტარი გამოგზავნილია ზერელე მომხმარებლის მიერ:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "დაშვებულია მხოლოდ POST-ები"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "ერთი ან რამდენიმე აუცილებელი ველი არ იყო მითითებული"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "ვიღაცა ჩაერია კომენტარის ფორმაში (უსაფრთხოების დარღვევა)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"კომენტარის ფორმას აქვს არასწორი პარამეტრი 'target' -- ობიექტის ID არ იყო "
-"სწორი"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "კომენტარის ფორმას არა აქვს 'წინასწარი ხედვის' ან 'გაგზავნის' საშუალება"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "ანონიმურ მომხმარებლებს ხმის მიცემის უფლება არა აქვთ"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "კომენტარის ID არასწორია"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "საკუთარი თავისათვის ხმის მიცემა აკრძალულია"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "python-ის მოდელის კლასის სახელი"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "კონტენტის ტიპი"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "კონტენტის ტიპები"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"მაგალითი: '/about/contact/'. ყურადღება მიაქციეთ დახრილ ხაზებს თავში და "
-"ბოლოში."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"ეს მნიშვნელობა შეიძლება შეიცავდეს მხოლოდ ასოებს, ციფრებს, ხაზგასმის ნიშნებს, "
-"ტირეებს და დახრილ ხაზებს."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "დამატებითი პარამეტრები"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "სათაური"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "კონტენტი"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "ჩავრთოთ კომენტარები"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "შაბლონის სახელი"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"მაგალითი: 'flatpages/contact_page.html'. თუ იგი მითითებული არ არის, "
-"გამოყენებული იქნება 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "რეგისტრაცია აუცილებელია"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"თუ ეს დროშა ჩართულია, მხოლო შემოსულ მომხმარებლებს ექნებათ გვერდის "
-"დათვალიერების საშუალება."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "უბრალო გვერდი"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "უბრალო გვერდები"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "გეომეტრიის მნიშვნელობა მოცემული არ არის."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "გეომეტრიის მნიშვნელობა არასწორია."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "გეომეტრიის ტიპი არასწორია."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "-ე"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "-ლი"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "-ე"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "-ე"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f მილიონი"
-msgstr[1] "%(value).1f მილიონი"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f მილიარდი"
-msgstr[1] "%(value).1f მილიარდი"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ტრილიონი"
-msgstr[1] "%(value).1f ტრილიონი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "ერთი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "ორი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "სამი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "ოთხი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "ხუთი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "ექვსი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "შვიდი"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "რვა"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "ცხრა"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "დღეს"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "ხვალ"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "გუშინ"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "შეიყვანეთ საფოსტო კოდი ერთ-ერთ ფორმატში: NNNN ან ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "ამ ველში შეიძლება იყოს მხოლოდ ციფრები."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "ამ ველში შეიძლება იყოს 7 ან 8 თანრიგი."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-"შეიყვანეთ დასაშვები CUIT ერთ-ერთ ფორმატში: XX-XXXXXXXX-X ან XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "არასწორი CUIT."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "ბურგლენდი"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "კარინტია"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "ქვემო ავსტრია"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "ზემო ავსტრია"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "ზალცბურგი"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "სტირია"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "ტიროლი"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "ფორარლბერგი"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "ვენა"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "შეიყვანეთ zip-კოდი ფორმატში XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-"შეიყვანეთ კანადაში დასაშვები პირადი ნომერი ფორმატში: XXX-XXX-XXX"
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "შეიყვანეთ ოთხთანრიგიანი საფოსტო კოდი"
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "შეიყვანეთ zip-კოდი ფორმატში: XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "ტელეფონის ნომრები უნდა იყოს XX-XXXX-XXXX ფორმატში."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"შეიყვანეთ დასაშვები ბრაზილიური შტატი. მოცემული შტატი არ არის დასაშვები."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "არასწორი CPF ნომერი."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "ეს ველი უნდა შეიცავდეს 11 ციფრს ან 14 სიმბოლოს, ან ნაკლებს."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "არასწორი CNPJ ნომერი."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "ეს ველი მოითხოვს არაუმეტეს 14 თანრიგისა"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "შეიყვანეთ საფოსტო კოდი ფორმატში: XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"შეიყვანეთ კანადაში დასაშვები სოციალური დაზღვევის ნომერი ფორმატში: XXX-XXX-XXX"
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "აარგაუ"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "აპენცელ ინერჰოდენ"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "აპენცელ აუსერჰოდენ"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "ბაზელ-შტადტი"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "ბაზელ-ლანდი"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "ბერნი"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "ფრაიბურგი"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "ჟენევა"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "გლარუსი"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "გრაუბუენდენ"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "ჯურა"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "ლეცერნი"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "ნოიხატლი"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "ნიდვალდენი"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "ობვალდენი"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "შაფჰაუზენი"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "შვიცი"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "სოლოთურნი"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "სენტ-გალენი"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "თურგაუ"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "ტიჯინო"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "ური"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "ვალაისი"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "ვაუდი"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "ცუგი"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "ციურიხი"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"შეიყვანეთ შვეიცარიაში დაშვებული პირადი ან პასპორტის ნომერი, ფორმატებში: "
-"X1234567<0 ან 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "შეიყვანეთ დასაშვები ჩილიური RUT."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "შეიყვანეთ დასაშვები ჩილიური RUT. ფორმატი: XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "ჩილიური RUT არასწორია."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "ბადენ-ვურტემბერგი"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "ბავარია"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "ბერლინი"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "ბრანდენბურგი"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "ბრემენი"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "ჰამბურგი"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "ჰესენი"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "მეკლენბურგ-ვესტერნ პომერანია"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "ქვემო საქსონია"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "ჩრდილოეთ რაინ-ვესტფალია"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "რაინლანდ-პალატინატა"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "ზაარლანდი"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "საქსონია"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "საქსონია-ანჰალტ"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "შლეზვიგ-ჰოლშტაინი"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "თურინგია"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "შეიყვანეთ zip-კოდი ფორმატში XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"შეიყვანეთ გერმანიაში დასაშვები პირადობის მოწმობის ნომერი, ფორმატში: "
-"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "არავა"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "ალბასეტე"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "ალასანტი"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "ალმერია"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "ავილა"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "ბადაჰოსი"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "ილეს ბალეარს"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "ბარსელონა"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "ბურგოსი"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "კასერესი"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "კადიზი"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "კასტელო"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "სიუდად რეალი"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "კორდობა"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "ა კორუნია"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "კუენსა"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "გირონა"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "გრანადა"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "გუადალაჯარა"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "გუიპუზკოა"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "ჰუელვა"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "ჰუესკა"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "ჯეინი"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "ლეონი"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "ლეიდა"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "ლა რიოხა"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "ლუგო"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "მადრიდი"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "მალაგა"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "მურსია"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "ნავარე"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "ოურენსი"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "ასტურია"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "პალენსია"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "ლას პალმას"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "პონტევედრა"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "სალამანსა"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "სანტა კრუზ დე ტენერიფე"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "კანტაბრია"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "სეგოვია"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "სევილი"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "სორია"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "ტარაგონა"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "ტერუელი"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "ტოლედო"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "ვალენსია"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "ვალადოლიდი"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "ბიზკაია"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "სამორა"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "სარაგოსა"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "კეუტა"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "მელილა"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "ანდალუზია"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "არაგონ"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "ასტურიის პრინციპატი"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "ბალეარის კუნძულები"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "ბასკების ქვეყანა"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "კანარის კუნძuლები"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "კასტილია ლა მანჩა"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "კასტილია და ლეონი"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "კატალონია"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "ექსტრემადურა"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "გალიცია"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "მურსიის რეგიონი"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "ნავარის ფორალური თემი"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "ვალენსიის თემი"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "შეიყვანეთ სწორი საფოსტო კოდი შემდეგ ინტერვალში და ფორმატში: 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"შეიყვანეთ სწორი სატელეფონო ნომერი ერთ-ერთ ფორმატში: 6XXXXXXXX, 8XXXXXXXX ან "
-"9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "გთხოვთ, შეიყვანოთ სწორი NIF, NIE, ან CIF."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "გთხოვთ, შეიყვანოთ სწორი NIF ან NIE."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "NIF-ის საკონტროლო ჯამი არასწორია."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "NIE-ს საკონტროლო ჯამი არასწორია."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "CIF-ის საკონტროლო ჯამი არასწორია."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"გთხოვთ, შეიყვანოთ სწორი საბანკო ანგარიშის ნომერი ფორმატში: XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "არასწორი საკონტროლო ჯამი საბანკო ანგარიშის ნომრისათვის."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "შეიყვანეთ სწორი ფინური პირადი ნომერი."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "შეიყვანეთ zip-კოდი ფორმატში: XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"შეიყვანეთ სწორი ისლანდიური საიდენტიფიკაციო ნომერი. ფორმატია XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "ისლანდიური საიდენტიფიკაციო ნომერი არასწორია."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "შეიყვანეთ სწორი zip-კოდი."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "შეიყვანეთ სწორი პირადი ნომერი."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "შეიყვანეთ სწორი დღგ-ს ნომერი."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "შეიყვანეთ საფოსტო კოდი ფორმატში XXXXXXX ან XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "ჰოკაიდო"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "აომორი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "იუატე"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "მიიაგი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "აკიტა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "იამაგატა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "ფუკუსიმა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "იბარაკი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "ტოჩიგი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "გუნმა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "საიტამა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "ჩიბა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "ტოკიო"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "კანაგავა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "იამანაში"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "ნაგანო"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "ნიიგატა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "ტოიამა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "იშიკავა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "ფუკუი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "გიფუ"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "შიზუოკა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "აიჩი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "მიე"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "შიგა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "კიოტო"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "ოსაკა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "ჰიოგო"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "ნარა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "უაკაიამა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "ტოტორი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "შიმანე"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "ოკაიამა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "ჰიროსიმა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "იამაგუჩი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "ტოკუშიმა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "კაგავა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "ეჰიმე"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "კოჩი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "ფუკუოკა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "საგა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "ნაგასაკი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "კუმამოტო"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "ოიტა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "მიაზაკი"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "კაგოსიმა"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "ოკინავა"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "აგუასკალიენტესი"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "ქვემო კალიფორნია"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "ქვემო სამხრეთ კალიფორნია"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "კამპეჩე"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "ჩიჰუაჰუა"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "ჩიაპასი"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "კოაჰუილა"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "კოლიმა"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "ფედერალური ოლქი"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "დურანგო"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "გერერო"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "გუანაჰუატო"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "იდალგო"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "ჰალისკო"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "მეხიკოს შტატი"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "მიჩოაკანი"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "მორელოსი"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "ნაიარიტი"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "ნუევო-ლეონი"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "ოახაკა"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "პუებლა"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "კერეტარო"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "კინტანა-როო"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "სინალოა"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "სან-ლუის-პოტოსი"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "sონორა"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "ტაბასკო"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "ტამაულიპასი"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "ტლასკალა"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "ვერაკრუსი"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "იუკატანი"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "საკატეკასი"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "შეიყვანეთ სწორი საფოსტო კოდი"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "შეიყვანეთ სწორი ტელეფონის ნომერი"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "შეიყვანეთ სწორი SoFi ნომერი"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drenthe"
-msgstr "დრენტე"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "ფლევოლანდი"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "ფრისლანდია"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "გელდერლანდი"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "გრონიგენი"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "ლიმბურგი"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "ჩრდილოეთ ბრაბანტი"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "ჩრდილოეთ ჰოლანდია"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "ოვერეისელი"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "უტრეხტი"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "ზელანდია"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "სამხრეთ ჰოლანდია"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "შეიყვანეთ სწორი ნორვეგიული პირადი ნომერი."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "ეს ველი შედგება 8 თანრიგისაგან."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "ეს ველი სედგება 11 თანრიგისაგან."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "ეროვნული საიდენტიფიკაციო ნომერი შედგება 11 თანრიგისაგან."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "არასწორი საკონტროლო ჯამი ეროვნულ საიდენტიფიკაციო ნომერში."
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"შეიყვანეთ საგადასახადოს ნომერი (NIP) ფორმატში: XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "არასწორი საკონტროლო ჯამი საგადასახადო ნომრისათვის (NIP)."
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "საწარმოოს ეროვნული სარეგისტრაციო ნომერი (REGON) შედგება 7 ან 9 თანრიგისაგან."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "არასწორი საკონტროლო ჯამი საწარმოოს ეროვნულ სარეგისტრაციო ნომერში (REGON)."
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "შეიყვანეთ საფოსტო კოდი ფორმატში XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "ქვემო სილეზია"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "კუიავია-პომერანია"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "ლუბლინი"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "ლუბუში"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "ლოძი"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "მცირე პოლონეთი"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "მაზოვია"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "ოპოლე"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "სუბკარპატია"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "პოდლასიე"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "პომერანია"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "სილეზია"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "სვენტოკშისკე"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "ვარმია-მაზურია"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "დიდი პოლონეთი"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "დასავლეთ პომერანია"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "შეიყვანეთ სწორი URL."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "შეიყვანეთ სწორი URL."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-"შეიყვანეთ დასაშვები CUIT ერთ-ერთ ფორმატში: XX-XXXXXXXX-X ან XXXXXXXXXXXX."
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "ტელეფონის ნომრები უნდა იყოს XX-XXXX-XXXX ფორმატში."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "შეიყვანეთ საფოსტო კოდი ფორმატში: XXX XXX."
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "შეიყვანეთ საფოსტო კოდი ფორმატში XXXXX or XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "ბანსკა ბისტრიცა"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "ბანსკა შტიავნიცა"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "ბარდეიოვი"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "ბანოვცე-ნად-ბებრავოუ"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "ბრეზნო"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "ბრატისლავა I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "ბრატისლავა II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "ბრატისლავა III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "ბრატისლავა IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "ბრატისლავა V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "ბიტჩა"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "ჩადცა"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "დეტვა"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "დოლნი კუბინი"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "დუნაისკა სტრედა"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "გალანტა"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "გელნიცა"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "ჰლოჰოვეცი"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "ჰუმენე"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "ილავა"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "კეზმაროკი"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "კომარნო"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "კოშიცე I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "კოშიცე II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "კოშიცე III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "კოშიცე IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "კოშიცე - ოკოლიე"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "კრუპინა"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "კისუცკე ნოვე მესტო"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "ლევიცე"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "ლევოჩა"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "ლიპტოვსკი მიკულაში"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "ლუჩენეცი"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "მალაცკი"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "მარტინი"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "მეძილაბორცე"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "მიხალოვცე"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "მიავა"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "ნამესტოვო"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "ნიტრა"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "ნოვე-მესტო-ნად-ვაჰომ"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "ნოვე ზამკი"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "პარტიზანსკე"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "პეზინოკი"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "პიესტანი"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "პოლტარი"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "პოპრადი"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "პოვაჟსკა ბისტრიცა"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "პრესოვი"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "პრიევიძა"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "პუხოვი"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "რევუცა"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "რიმავსკა სობოტა"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "როზნავა"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "რუზომბეროკი"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "საბინოვი"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "სენეცი"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "სენიცა"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "სკალიცა"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "სნინა"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "სობრანცე"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "სპისკა-ნოვა-ვესი"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "სტარა-ლუბოვნა"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "სტროპკოვი"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "სვიდნიკი"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "სალა"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "ტოპოლჩანი"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "ტრებისოვი"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "ტრენჩინი"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "ტრნავა"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "ტურჩანსკე ტეპლიცე"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "ტვრდოშინი"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "ველკი კრტიში"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "ვრანოვ-ნად-ტოპლოუ"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "ზლატე მორავცე"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "ზვოლენი"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "ზარნოვიცა"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "ზიარ-ნად-ჰრონომი"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "ზილინა"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "ბანსკა-ბისტრიცის რაიონი"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "ბრატისლავას რაიონი"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "კოშიცეს რაიონი"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "ნიტრას რაიონი"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "პრესოვის რაიონი"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "ტრენჩინის რაიონი"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "ტრნავას რაიონი"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "ზილინას რაიონი"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "შეიყვანეთ სწორი საფოსტო კოდი."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "ბედფორდშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "ბუკინჰემშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "ჩეშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "კორნუოლი და სილის კუნძულები"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "კამბრია"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "დერბიშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "დევონი"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "დორსეტი"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "დარემი"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "აღმოსავლეთ სასექსი"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "ესექსი"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "გლოსტეშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "დიდი ლონდონი"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "დიდი მანჩესტერი"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "ჰემპშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "ჰარტფორდშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "კენტი"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "ლანკაშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "ლაიჩესტეშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "ლინკოლნშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "მერსისაიდი"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "ნორფოლკი"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "ჩრდილოეთ იოკშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "ნორტჰემპტონშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "ნორტუმბერლანდი"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "ნოტინგემშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "ოქსფორდშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "შროპშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "სომერსეტი"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "სამხრეთ იოკშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "სტაფორდშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "საფოლკი"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "სურეი"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "თაინ და უირი"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "უარვიკშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "დასავლეთ მიდლენდსი"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "დასავლეთ სასექსი"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "დასავლეთ იოკშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "უილტშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "უორსესტერშირი"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "ანტრიმის ქვეყანა"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "არმაგის ქვეყანა"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "დაუნის ქვეყანა"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "ფერმანაგის ქვეყანა"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "ლონდონდერის ქვეყანა"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "ტაირონის ქვეყანა"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "კლოუიდი"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "დაიფიდი"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "გვენტი"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "გუაინიდი"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "შუა გლემორგენი"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "პოუისი"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "სამხრეთ გლემორგენი"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "დასავლეთ გლემორგენი"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "საზღვრები"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "ცენტრალური შოტლანდია"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "დამფრაის და გელოუეი"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "ფაიფი"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "გრემპაინი"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "ჰაილენდი"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "ლოთიენი"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "ორკნის კუნძულები"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "შიტლენდის კუნძულები"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "სტრესკლაიდი"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "თეისაიდი"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "დასავლეთ კუნძულები"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "ინგლისი"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "ჩრდილოეთ ირლანდია"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "შოტლანდია"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "უელსი"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "შეიყვანეთ zip-კოდი ფორმატში XXXXX ან XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "შეიყვანეთ სწორი აშშ-ს პირადი ნომერი ფორმატში XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "შეიყვანეთ სწორი სამხრეთ-აფრიკული ID ნომერი"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "შეიყვანეთ სწორი სამხრეთ-აფრიკული საფოსტო კოდი"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "აღმოსავლეთ კაპი"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "თავისუფალი სახელმწიფო"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "გაუტენგი"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "კვაზულუ-ნატალი"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "ლიმპოპო"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "მპუმალანგა"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "ჩრდილოეთ კაპი"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "ჩრდილო-დასავლეთი"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "დასავლეთ კაპი"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "გადამისამართება გვერდიდან"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"უნდა იყოს აბსოლუტური გზა დომენის სახელის გარეშე. მაგალითი: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "გადამისამართება გვერდზე"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"უნდა იყოს აბსოლუტური გზა (როგორც ზემოთ) ან სრული URL, რომელიც იწყება "
-"'http://' სტრიქონით."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "გადამისამართება"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "გადამისამართებები"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "სესიის გასაღები"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "სესიის მონაცემები"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "ამოწურვის თარიღი"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "სესია"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "სესიები"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "დომენის სახელი"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "საჩვენებელი სახელი"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "საიტები"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"ეს მნიშვნელობა შეიძლება შეიცავდეს მხოლოდ ასოებს, ციფრებს, ხაზგასმის ნიშნებს "
-"და დეფისებს."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "ასომთავრულები აქ დაუშვებელია."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "პატარა ასოები აქ დაუშვებელია."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "შეიყვანეთ მხოლოდ მძიმეებით გამოყოფილი ციფრები."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "შეიყვანეთ მძიმეებით გამოყოფილი ელ. ფოსტის მისამართები."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "გთხოვთ, შეიყვანოთ დასაშვები IP-მისამართი"
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "ცარიელი მნიშვნელობები აქ დაუშვებელია."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "არაციფრული სიმბოლოები აქ დაუშვებელია."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "ეს მნიშვნელობა არ უნდა შედგებოდეს მხოლოდ ციფრებისაგან."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "შეიყვანეთ მთელი რიცხვი"
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "მხოლოდ ლათინური ასოებია დასაშვები."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "არასწორი თარიღი: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:556
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "შეიყვანეთ სწორი თარიღი YYYY-MM-DD ფორმატში."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "შეიყვანეთ სწორი დრო HH:MM ფორმატში."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "შეიყვანეთ სწორი თარიღი და დრო YYYY-MM-DD HH:MM ფორმატში."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "შეიყვანეთ სწორი ელ. ფოსტის მისამართი."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"ფაილი არ იყო გამოგზავნილი. შეამოწმეთ კოდირების ტიპი მოცემული ფორმისათვის."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"ატვირთეთ დასაშვები გამოსახულება. თქვენს მიერ გამოგზავნილი ფაილი ან არ არის "
-"გამოსახულება, ან დაზიანებულია."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s არ მიუთითებს დასაშვებ გამოსახულებას."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "ტელეფონის ნომრები უნდა იყოს XXX-XXX-XXXX ფორმატში. \"%s\" არასწორია."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s არ მიუთითებს დასაშვებ QuickTime ვიდეოფაილს."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "საჭიროა სწორი URL"
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"საჭიროა სწორი HTML. ტიპიური შეცდომებია:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "ცუდად დაფორმირებული XML-ია: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "არასწორი URL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s არის გაწყვეტილი ბმული."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "შეიყვანეთ სწორი აშშ შტატის აბრევიატურა."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "ყურადღება მიაქციეთ ლექსიკას! სიტყვა %s აქ დაუშვებელია."
-msgstr[1] "ყურადღება მიაქციეთ ლექსიკას! სიტყვები %s აქ დაუშვებელია."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "ველი უნდა ემთხვეოდეს '%s' ველს."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "გთხოვთ, შეიყვანოთ რაიმე მნიშვნელობა სულ მცირე ერთ ველში."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "გთხოვთ, შეავსოთ ორივე ველი, ან ორივე დატოვოთ ცარიელი."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "ეს ველი უნდა იყოს მითითებული, თუ %(field)s არის %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "ეს ველი უნდა იყოს მითითებული, თუ %(field)s არ არის %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "განმეორებითი მნიშვნელობები დაუშვებელია."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "მნიშვნელობა უნდა იყოს %(lower)s და %(upper)s შორის."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "მნიშვნელობა უნდა იყოს სულ მცირე %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "მნიშვნელობა არ უნდა აღემატებოდეს %s-ს."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "მნიშვნელობა უნდა იყოს %s-ის ხარისხი."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"გთხოვთ, შეიყვანოთ სწორი, არაუმეტეს %s თანრიგისაგან შემდგარი ათობითი რიცხვი."
-msgstr[1] ""
-"გთხოვთ, შეიყვანოთ სწორი, არაუმეტეს %s თანრიგისაგან შემდგარი ათობითი რიცხვი."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის მთელი ნაწილის სიგრძე არ "
-"აღემატება %s თანრიგს."
-msgstr[1] ""
-"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის მთელი ნაწილის სიგრძე არ "
-"აღემატება %s თანრიგს."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის წილადი ნაწილის სიგრძე არ "
-"აღემატება %s ციფრს."
-msgstr[1] ""
-"გთხოვთ, შეიყვანოთ სწორი ათობითი რიცხვი, რომლის წილადი ნაწილის სიგრძე არ "
-"აღემატება %s ციფრს."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "გთხოვთ, შეიყვანოთ სწორი რიცხვი მცოცავი ათობითი წერტილით."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-"დარწმუნდით, რომ თქვენს მიერ ატვირთული ფაილის სიგრძე არ არის %s ბაიტზე "
-"ნაკლები."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-"დარწმუნდით, რომ თქვენს მიერ ატვირთული ფაილის სიგრძე არ აღემატება %s ბაიტს."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "ამ ველის ფორმატი არასწორია."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "ველი არასწორია."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "%s-დან მნიშვნელობის ამოღება შეუძლებელია."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL %(url)s მისამართმა დააბრუნა არასწორი Content-Type სათაური '%(contenttype)"
-"s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"გთხოვთ, დახუროთ დაუხურავი %(tag)s ტეგი, ხაზის ნომერია %(line)s. (სტრიქონი "
-"იწყება ტექსტით: \"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"ტექსტის ნაწილი, რომელიც %(line)s ხაზზე იწყება, დაუშვებელია მიმდინარე "
-"კონტექსტში. (სტრიქონი იწყება ტექსტით: \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" ატრიბუტი არასწორია %(line)s ხაზზე. (სტრიქონი იწყება ტექსტით: \"%"
-"(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" ტეგი არასწორია %(line)s ხაზზე. (სტრიქონი იწყება ტექსტით: \"%"
-"(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"ტეგში %(line)s ხაზზე ერთი ან რამდენიმე ატრიბუტი გამოტოვებულია. (სტრიქონი "
-"იწყება ტექსტით: \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"\"%(attr)s\" ატრიბუტს %(line)s ხაზზე აქვს არასწორი მნიშვნელობა. (სტრიქონი "
-"იწყება ტექსტით: \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s მოცემული %(type)s-ით უკვე არსებობს მოცემული %(field)s-თვის."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s მოცემული %(fieldname)s-ით უკვე არსებობს."
-
-#: db/models/fields/__init__.py:321 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "ეს ველი აუცილებელია."
-
-#: db/models/fields/__init__.py:444
-msgid "This value must be an integer."
-msgstr "ეს მნიშვნელობა უნდა იყოს მთელი."
-
-#: db/models/fields/__init__.py:490
-msgid "This value must be either True or False."
-msgstr "ეს მნიშვნელობა უნდა იყოს True ან False."
-
-#: db/models/fields/__init__.py:519
-msgid "This field cannot be null."
-msgstr "ეს მნიშვნელობა არ შეიძლება იყოს null."
-
-#: db/models/fields/__init__.py:621 db/models/fields/__init__.py:638
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "შეიყვანეთ სწორი თარიღი და დრო YYYY-MM-DD HH:MM ფორმატში."
-
-#: db/models/fields/__init__.py:694
-msgid "This value must be a decimal number."
-msgstr "ეს მნიშვნელობა უნდა იყოს ათობითი რიცხვი."
-
-#: db/models/fields/__init__.py:835
-msgid "This value must be either None, True or False."
-msgstr "ეს მნიშვნელობა უნდა იყოს None, True ან False."
-
-#: db/models/fields/__init__.py:947 db/models/fields/__init__.py:960
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "შეიყვანეთ სწორი დრო HH:MM ფორმატში."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "შეიყვანეთ სწორი ფაილის სახელი."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "გთხოვთ, შეიყვანოთ სწორი %s."
-
-#: db/models/fields/related.py:782
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"დააჭირეთ \"Control\", ან \"Command\" Mac-ზე, ერთზე მეტი მნიშვნელობის "
-"ასარჩევად."
-
-#: db/models/fields/related.py:862
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"გთხოვთ, შეიყვანოთ სწორი %(self)s ID-ები. მნიშვნელობა %(value)r არასწორია."
-msgstr[1] ""
-"გთხოვთ, შეიყვანოთ სწორი %(self)s ID-ები. მნიშვნელობები %(value)r არასწორია."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "შეიყვანეთ სწორი მნიშვნელობა."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"დარწმუნდით, რომ მნიშვნელობა შედგება არაუმეტეს %(max)d სიმბოლოსაგან (ახლა "
-"მისი სიგრძეა %(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"დარწმუნდით, რომ მნიშვნელობა შედგება არანაკლებ %(min)d სიმბოლოსაგან (ახლა "
-"მისი სიგრძეა %(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "დარწმუნდით, რომ მნიშვნელობა ნაკლებია ან ტოლია %s-ზე."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "დარწმუნდით, რომ მნიშვნელობა მეტია ან ტოლია %s-ზე."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "შეიყვანეთ რიცხვი."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "დარწმუნდით, რომ მნიშვნელობა %s თანრიგს არ აღემატება."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "დარწმუნდით, რომ წილადი ნაწილი %s თანრიგს არ აღემატება."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "დარწმუნდით, რომ მთელი ნაწილი %s თანრიგს არ აღემატება."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "შეიყვანეთ სწორი თარიღი."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "შეიყვანეთ სწორი დრო."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "შეიყვანეთ სწორი თარიღი და დრო."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "ფაილი არ იყო გამოგზავნილი."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "გამოგზავნილი ფაილი ცარიელია."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "შეიყვანეთ სწორი URL."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "როგორც ჩანს, URL არის გაწყვეტილი ბმული."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "აირჩიეთ დასაშვები მნიშვნელობა. %(value)s დასაშვები არ არის."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "შეიყვანეთ მნიშვნელობების სია."
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "შეიყვანეთ სწორი IPv4 მისამართი."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "აირჩიეთ დასაშვები მნიშვნელობა. ეს არჩევანი დასაშვები არ არის."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "აირჩიეთ დასაშვები მნიშვნელობა. %s დასაშვები არ არის."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "დარწმუნდით, რომ თქვენს მიერ შეყვანილი ტექსტი %s სიმბოლოზე ნაკლებია."
-msgstr[1] "დარწმუნდით, რომ თქვენს მიერ შეყვანილი ტექსტი %s სიმბოლოზე ნაკლებია."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "ახალ ხაზზე გადასვლა აქ დაუშვებელია."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-"აირჩიეთ დასაშვები მნიშვნელობა; '%(data)s' არ არის %(choices)s მნიშვნელობების "
-"სიაში."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "შეიყვანეთ მთელი რიცხვი -32,768-დან 32,767-მდე."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "შეიყვანეთ დადებითი რიცხვი."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "შეიყვანეთ მთელი რიცხვი 0-დან 32,767-მდე."
-
-#: template/defaultfilters.py:707
-msgid "yes,no,maybe"
-msgstr "კი,არა,შესაძლოა"
-
-#: template/defaultfilters.py:738
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d ბაიტი"
-msgstr[1] "%(size)d ბაიტი"
-
-#: template/defaultfilters.py:740
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f კბაიტი"
-
-#: template/defaultfilters.py:742
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f მბაიტი"
-
-#: template/defaultfilters.py:743
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f გბაიტი"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "შუაღამე"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "შუადღე"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ორშაბათი"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "სამშაბათი"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ოთხშაბათი"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ხუთშაბათი"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "პარასკევი"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "შაბათი"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "კვირა"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "ორშ"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "სამ"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ოთხ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "ხუთ"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "პარ"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "შაბ"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "კვრ"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "იანვარი"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "თებერვალი"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "მარტი"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "აპრილი"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "მაისი"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "ივნისი"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "ივლისი"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "აგვისტო"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "სექტემბერი"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ოქტომბერი"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "ნოემბერი"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "დეკემბერი"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "იან"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "თებ"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "მარ"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "აპრ"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "მაი"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ივნ"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ივლ"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "აგვ"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "სექ"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ოქტ"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ნოე"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "დეკ"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "იან."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "თებ."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "აგვ."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "სექტ."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "ოქტ."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "ნოემ."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "დეკ."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "ან"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "წელი"
-msgstr[1] "წელი"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "თვე"
-msgstr[1] "თვე"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "კვირა"
-msgstr[1] "კვირა"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "დღე"
-msgstr[1] "დღე"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "საათი"
-msgstr[1] "საათი"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "წუთი"
-msgstr[1] "წუთი"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "წუთი"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "d.m.Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "d.m.Y H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "d.m.Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "d.m.Y"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s წარმატებით შეიქმნა."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s წარმატებით შეიცვალა."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s წაიშალა."
-
-#~ msgid "Ordering"
-#~ msgstr "დალაგება"
-
-#~ msgid "Order:"
-#~ msgstr "დალაგება:"
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "თქვენი ახალი პაროლია: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr "თქვენ შეგიძლიათ შეცვალოთ იგი შემდეგი გვერდიდან:"
-
-#~ msgid "Added %s."
-#~ msgstr "%s დამატებულია."
-
-#~ msgid "Deleted %s."
-#~ msgstr "%s წაშლილია."
-
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "'ახალი პაროლის' ორი ველი ერთმანეთს არ ემთხვევა."
-
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "წელი უნდა იყოს 1900 ან მეტი."
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "გამოყავით ID-ები მძიმეებით."
-
-#~ msgid "Brazilian"
-#~ msgstr "ბრაზილიური"
diff --git a/webapp/django/conf/locale/ka/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ka/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index bb70794..0000000
--- a/webapp/django/conf/locale/ka/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ka/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ka/LC_MESSAGES/djangojs.po
deleted file mode 100644
index e23b600..0000000
--- a/webapp/django/conf/locale/ka/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,117 +0,0 @@
-# Translation of Django Java-script part to Georgian.
-# Copyright (C) 2008
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-16 22:31+0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: David Avsajanishvili <avsd05@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "მისაწვდომი %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "ავირჩიოთ ყველა"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "დავამატოთ"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "წავშალოთ"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "არჩეული %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "აირჩიეთ და დააწკაპეთ "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "გავასუფთავოთ ყველა"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "იანვარი თებერვალი მარტი აპრილი მაისი ივნისი ივლისი აგვისტო სექტემბერი "
-"ოქტომბერი ნოემბერი დეკემბერი"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "კ ო ს ო ხ პ შ"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "კვირა ორშაბათი სამშაბათი ოთხშაბათი ხუთშაბათი პარასკევი შაბათი"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "ვაჩვენოთ"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "დავმალოთ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "ახლა"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "საათი"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "ავირჩიოთ დრო"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "შუაღამე"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "დილის 6 სთ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "შუადღე"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "უარი"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "დღეს"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "კალენდარი"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "გუშინ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "ხვალ"
diff --git a/webapp/django/conf/locale/km/LC_MESSAGES/django.mo b/webapp/django/conf/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 91f0628..0000000
--- a/webapp/django/conf/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/km/LC_MESSAGES/django.po b/webapp/django/conf/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index faf3a91..0000000
--- a/webapp/django/conf/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2508 +0,0 @@
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: sengtha@e-khmer.com\n"
-"POT-Creation-Date: 2007-01-15 15:43+0200\n"
-"PO-Revision-Date: 2007-08-10 00:21+0900\n"
-"Last-Translator: Chay Sengtha <sengtha@e-khmer.com>\n"
-"Language-Team: Chay Sengtha <sengtha@e-khmer.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: Information
-msgid "Administration Page"
-msgstr "ទំព័រគ្រប់គ្រង"
-
-msgid "Tag"
-msgstr "ប្រភេទ"
-
-msgid "Headline"
-msgstr "ចំណងជើង"
-
-msgid "Article"
-msgstr "អត្ថបទ"
-
-msgid "Review"
-msgstr "ព្រឹត្តិការណ៍ និង ផលិតផលថ្មីៗ"
-
-msgid "Keyword"
-msgstr "ពាក្យសំខាន់ៗ"
-
-msgid "Advertisement"
-msgstr "ការផ្សាយពាណិជ្ជកម្ម"
-
-msgid "Link"
-msgstr "អត្ថបទភ្ជាប់"
-
-msgid "Accounting"
-msgstr "គណនី"
-
-msgid "Name"
-msgstr "ឈ្មោះ"
-
-msgid "Slug"
-msgstr "ឈ្មោះជាអក្សរឡាតាំង"
-
-msgid "Created"
-msgstr "កាលបរិច្ឆេទនៃការសរសេរ"
-
-msgid "Modified"
-msgstr "កាលបរិច្ឆេទ​នៃការ​ផ្លាស់ប្តូរ"
-
-msgid "Summary"
-msgstr "អត្ថបទសង្ខេប"
-
-msgid "Viewed number"
-msgstr "ចំនួនអាន"
-
-msgid "Site"
-msgstr "គេហទំព័រ"
-
-msgid "Rate"
-msgstr "ការវាយតំលៃ"
-
-msgid "Private"
-msgstr "សំរាប់សមាជិកបង់លុយ"
-
-msgid "Public"
-msgstr "ផ្សព្វផ្សាយ"
-
-msgid "Content"
-msgstr "អត្ថបទ"
-
-msgid "Page"
-msgstr "ទំព័រទី"
-
-msgid "Attach Image"
-msgstr "រូបភាព"
-
-msgid "Ads type"
-msgstr "ប្រភេទពាណិជ្ជកម្ម"
-
-msgid "Link type"
-msgstr "ប្រភេទអត្ថបទភ្ជាប់"
-
-msgid "Account type"
-msgstr "ប្រភេទគណនី"
-
-msgid "Amount"
-msgstr "ចំនួន"
-
-msgid "Person"
-msgstr "អ្នកទទួលខុសត្រូវ"
-
-msgid "Date"
-msgstr "កាលបរិច្ឆេទ"
-
-msgid "Information"
-msgstr "ការគ្រប់គ្រងព័ត៌មាន"
-
-msgid "Auth"
-msgstr "ការគ្រប់គ្រងសមាជិក"
-
-msgid "Comments"
-msgstr "ការគ្រប់គ្រងមតិ​យោបល់"
-
-msgid "Sites"
-msgstr "ការគ្រប់គ្រងដមែន"
-
-msgid "Flatpages"
-msgstr "ការគ្រប់គ្រងទំព័រថ្មី"
-
-msgid "File-Browser"
-msgstr "ការគ្រប់គ្រងឯកសារ"
-
-msgid "Make Directory"
-msgstr "បង្កើតថតថ្មី"
-
-msgid "Multiple Upload"
-msgstr "ទាញយកឯកសារ"
-
-msgid "results"
-msgstr "លទ្ធផល"
-
-msgid "total"
-msgstr "​សរុប"
-
-msgid "Total"
-msgstr "​សរុប"
-
-msgid "type"
-msgstr "ប្រភេទ"
-
-msgid "filename"
-msgstr "ឈ្មោះឯកសារ"
-
-msgid "size"
-msgstr "ទំហំ"
-
-msgid "Past 30 days"
-msgstr "៣០ថ្ងៃកន្លងមក"
-
-msgid "By Date"
-msgstr "តាម​កាលបរិច្ឆេទ"
-
-msgid "By Type"
-msgstr "តាម​ប្រភេទ"
-
-msgid "no entries found"
-msgstr "រកមិនឃើញ"
-
-msgid "Select files to upload"
-msgstr "សូមជ្រើសរើសឯកសារ​។"
-
-msgid "At least one file must be chosen."
-msgstr "សូមជ្រើសរើសឯកសារ​យ៉ាង​តិច១។"
-
-msgid "Wrong filetype for"
-msgstr "ប្រភេទឯកសារដែលមិនអាចទាញយកបាន។"
-
-msgid "File already exists"
-msgstr "ឯកសារនេះមានរួចហើយ។"
-
-msgid "File"
-msgstr "ឯកសារ"
-
-msgid " is existed."
-msgstr "ត្រូវបានគេយករួចហើយ។"
-
-msgid "Account registration is not complete yet.<br/>You need to activate your account first.<br/>We have already sent you the activate URL. Please check you mail box."
-msgstr "ការចុះឈ្មោះមិនទាន់ចប់នៅឡើយទេ។ <br/>យើងខ្ញុំបានបញ្ជូនអ៊ីមែល​ទៅកាន់អាស័យដ្ឋានអ៊ីមែល​របស់​លោកអ្នក​ហើយ​ សូមចុច​អត្ថបទភ្ជាប់​នៅក្នុង​អ៊ីមែល ដើម្បី​បញ្ជប់ការចុះឈ្មោះ។"
-
-msgid "Help"
-msgstr "ជំនួយ"
-
-msgid "Max. Filesize"
-msgstr "ទំហំឯកសារអតិបរិមា"
-
-msgid "Upload"
-msgstr "ទាញយក"
-
-msgid "Folder"
-msgstr "ថត"
-
-msgid "Video"
-msgstr "វីដេអូ"
-
-msgid "Document"
-msgstr "ឯកសារ"
-
-msgid "Sound"
-msgstr "សំលេង"
-
-msgid "Code"
-msgstr "កូត"
-
-msgid "Allowed"
-msgstr "ប្រភេទឯកសារដែលអាចទាញ​យកបាន"
-
-msgid "Directory already exists."
-msgstr "ថតនេះមាន​រួចហើយ។"
-
-msgid "Permission denied."
-msgstr "ពុំមានសិទ្ធិអាចបង្កើតបាន។"
-
-msgid "Please correct the errors below."
-msgstr "សូមកែកំហុសដូចខាងក្រោម។"
-
-msgid "Only letters, numbers and underscores are allowed."
-msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _ ។"
-
-msgid "The directory will automatically be converted to lowercase"
-msgstr "ឈ្មោះថតនឹងត្រូវផ្លាស់ប្តូរទៅជាអក្សរតូចដោយស្វ័យប្រវត្ត។"
-
-msgid "Create"
-msgstr "បង្កើត"
-
-msgid "date"
-msgstr "​កាលបរិច្ឆេទ"
-
-msgid "Dbtemplate"
-msgstr "ការគ្រប់គ្រងឯកសារគំរូ"
-
-msgid "template"
-msgstr "ឯកសារគំរូ"
-
-msgid "templates"
-msgstr "ឯកសារគំរូ"
-
-msgid "Comment"
-msgstr "ផ្សេងៗ"
-
-msgid "Income"
-msgstr "ចំណូល"
-
-msgid "Expense"
-msgstr "ចំណាយ"
-
-msgid "Image"
-msgstr "រូបភាព"
-
-msgid "Text and Image"
-msgstr "អក្សរ និង​ រូបភាព"
-
-msgid "New Headlines"
-msgstr "អត្ថបទថ្មីៗ"
-
-msgid "New Reviews"
-msgstr "ព្រឹត្តិការណ៍ និង ផលិតផលថ្មីៗ"
-
-msgid "Login"
-msgstr "ពិនិត្យចូល"
-
-msgid "Logout"
-msgstr "ចាកចេញ"
-
-msgid "Register"
-msgstr "ចូលជាសមាជិក"
-
-msgid "Free"
-msgstr "ឥតគិតថ្លៃ"
-
-msgid "Welcome"
-msgstr "សូមស្វាគមន័ "
-
-msgid "IT Resources"
-msgstr "ប្រភពព័ត៌មានអំពី បច្ចេកទេសព័ត៌មានវិទ្យា"
-
-msgid "Copyrights"
-msgstr "រក្សាសិទ្ធិដោយ "
-
-msgid "Next page"
-msgstr "ទំព័របន្ទាប់"
-
-msgid "Previous page"
-msgstr "ទំព័រមុន "
-
-msgid "Wrong number or password. Please try it again."
-msgstr "ឈ្មោះជាសមាជិក​ ឬ ពាក្យសំងាត់ មិនត្រឹមត្រូវ។ សូមសាកល្បងម្តងទៀត។ "
-
-msgid "This username has not activated yet."
-msgstr "ឈ្មោះសាមាជិកនេះមិនទាន់ត្រូវបានគេអនុញ្ញាតនៅឡើយទេ។"
-
-msgid "Please write"
-msgstr "សូមបំពេញ"
-
-msgid "More"
-msgstr "អត្ថបទផ្សេងទៀត"
-
-msgid "Please correct below errors."
-msgstr "សូកកែកូមហុសខាងក្រោម។"
-
-msgid "Thank for your comment."
-msgstr "សូមអរគុណដែលបានបញ្ជេញមតិយោបល់ទាក់ទងនឹងអត្ថបទនេះ"
-
-#: Django standard
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:166
-msgid "object ID"
-msgstr "លេខ​សំគាល់​កម្មវិធី"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "ចំណងជើង"
-
-#: contrib/comments/models.py:69
-#: contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "មតិ​យោបល់"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "វាយ​តំលៃ #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "វាយ​តំលៃ #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "វាយ​តំលៃ #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "វាយ​តំលៃ #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "វាយ​តំលៃ #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "វាយ​តំលៃ #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "វាយ​តំលៃ #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "វាយ​តំលៃ #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "កំពុង​ត្រួត​ពិនិត្យចំពោះ​​ការ​វាយ​តំលៃ"
-
-#: contrib/comments/models.py:83
-#: contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "កាល​បរិច្ឆេទនៃ​ការ​សរសេរ​​"
-
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:170
-msgid "is public"
-msgstr "ផ្សព្វផ្សាយ​ជាសធារណៈ"
-
-#: contrib/comments/models.py:85
-#: contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "លេខ IP"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "ត្រូវ​បាន​លប់​ចេញ"
-
-#: contrib/comments/models.py:86
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "សូម​ចុច​ជ្រើសរើស​យក​ប្រអប់​នេះ​ ប្រសិន​បើ​មតិ​យោបល់​មិនសមរម្យ។ ឃ្លា \" មតិ​យោបល់​នេះ​ត្រូវបាន​គេលប់​\" នឹងត្រូវ​បង្ហាញ​ជំនួស​វិញ។"
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "មតិ​យោបល់"
-
-#: contrib/comments/models.py:131
-#: contrib/comments/models.py:207
-msgid "Content object"
-msgstr "អត្ថន័យ​របស់​កម្មវិធី"
-
-#: contrib/comments/models.py:159
-#: python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"សរសេរ​ដោយ %(user)s នៅថ្ងៃ​ %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "ឈ្មោះ"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "លេខ ip"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "យល់ព្រម​ដោយ​បុគ្គលិក"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "មតិ​យោបល់(មិនចាំបាច់សមាជិក)"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "មតិ​យោបល់(មិនចាំបាច់សមាជិក)"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "ពិន្ទុ"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "កាលបរិច្ឆេទ​ដាក់ពិន្ទុ"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "ពិន្ទុ​កម្មា(karma)"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "ពិន្ទុ​កម្មា(karma)"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d វាយ​តំលៃ​ដោយ %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"មតិ​យោបល់នេះ​ត្រូវបាន​កត់សំគាល់ទុក​ដោយ %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "កាល​បរិច្ឆេទ​កត់​សំគាល់​ទុក"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "ការ​កត់​សំគាល់​ទុក​"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "ការ​កត់​សំគាល់​ទុក"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "កត់​សំគាល់​ទុកដោយ %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "កាល​បរិច្ឆេទនៃ​ការ​លប់​"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "ការ​លប់​ដោយអ្នក​គ្រប់គ្រង"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "ការ​លប់​ដោយអ្នក​គ្រប់គ្រង"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "ការ​លប់​ដោយអ្នក​គ្រប់គ្រង នៅ %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "ជនអនាមិក​មិន​អាច​បោះ​ឆ្នោត​បាន​ទេ"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "លេខ​សំគាល់​មតិ​យោបល់​មិន​ត្រឹម​ត្រូវ"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "មិន​អាច​បោះ​ឆ្នោត​អោយ​ខ្លួន​ឯង​បាន​ទេ"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "ចាំបាច់ត្រូវការ វាយតំលៃ ពីព្រោះលោកអ្នកបានជ្រើសរើសធ្វើការវាយតំលៃផ្សេងពីនេះ។"
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"មតិយោបល់នេះត្រូវបានបញ្ជូនដោយសមាជិកម្នាក់ដែលបាន​ផ្តល់មតិយោបល់​តិចជាង %(count)s។\n"
-"%(text)s"
-msgstr[1] ""
-"មតិយោបល់នេះត្រូវបានសរសេរដោយសមាជិកម្នាក់ដែលបាន​ផ្តល់មតិយោបល់​តិចជាង %(count)s។\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"មតិយោបល់បានសរសេរដោយសមាជិកមិនសូវប្រាកដប្រជា:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "អនុញ្ញាតតែទិន្នន័យតាមរយះ​ POST ​។"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "ទិន្នន័យរបស់ចំនុចមួយចំនួនដែលចាំបាច់ មិនទាន់បានបំពេញ។"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "មានគេព្យាយាមសរសេរ មតិយោបល់ មិនត្រឹមត្រូវ (ប៉ះពាល់ដល់សុវត្ថិភាព)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "បែបបទបំពេញមតិយោបល់មិនមាន 'target' ​និង​ លេខសំគាល់កម្មវិធី (object ID)​ ត្រឹមត្រូវ"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "បែបបទបំពេញមតិយោបល់មិនមាន 'preview' or 'post' ។"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "ឈ្មោះសមាជិក"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "ចាកចេញ"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "ពាក្យ​សំងាត់"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "តើលោកអ្នក​ភ្លេច​ពាក្យសំងាត់រឺ?​​"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "វាយតំលៃ"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "ចាំ​បាច់"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "មិនចាំ​បាច់​ជ្រើសរើស​យក​ក៏បាន​"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "បញ្ជូន​រូបភាព"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "មតិ​យោបល់"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "មើល​ មតិយោបល់"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "ឈ្មោះ"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>ដោយ %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70
-#: contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-#: contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "ទាំងអស់"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "កាល​បរិច្ឆេទណាមួយ"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "ថ្ងៃនេះ"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "៧​ថ្ងៃ​កន្លង​មក"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "ខែ​នេះ"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "ឆ្នាំ​នេះ"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "យល់ព្រម"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "មិនយល់ព្រម"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "មិន​ដឹង"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "ពេលវេលាប្រតិបត្តិការ"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "លេខ​សំគាល់​កម្មវិធី (object id)"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "object repr"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "សកម្មភាព"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "ផ្លាស់ប្តូរ"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "កំណត់ហេតុ"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "កំណត់ហេតុ"
-
-#: contrib/admin/templatetags/admin_list.py:230
-msgid "All dates"
-msgstr "កាលបរិច្ឆេទទាំងអស់"
-
-#: contrib/admin/views/decorators.py:10
-#: contrib/auth/forms.py:59
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "សូមបំពេញ ឈ្មោះសមាជិក និង ពាក្យសំងាត់ ។ "
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "ពិនិត្យចូល"
-
-#: contrib/admin/views/decorators.py:62
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "សូមពិនិត្យចូលម្តងទៀត ។"
-
-#: contrib/admin/views/decorators.py:69
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "ប្រហែលជាកម្មវិធីមើលគេះទំព័រដែលលោកអ្នកកំពុងប្រើ មិនទទួល​ គូគី (cookies) ។ សូមកំណត់កម្មវិធីដែលលោកអ្នកកំពុងប្រើនេះអោយទទួលយក គូគី ហើយចូលមកមើលទំព័រនេះម្តងទៀត ។"
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "ឈ្មោះសមាជិកមិនអាចមាន សញ្ញា '@' ។"
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "អ៊ីមែលរបស់លោកអ្នក មិនអាចធ្វើជា ឈ្មោះសមាជិកបានទេ ។ សូមសាកល្បងជាមួយ '%s'។"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "ទំព័រគ្រប់គ្រង"
-
-#: contrib/admin/views/main.py:257
-#: contrib/admin/views/auth.py:17
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "ឈ្មោះកម្មវិធី %(name)s \"%(obj)s\" បានបញ្ជូលដោយជោគជ័យ​។"
-
-#: contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:22
-msgid "You may edit it again below."
-msgstr "សូមសាកល្បងកែប្រែម្តងទៀត។"
-
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "លោកអ្នកអាចបន្ថែម  %s ផ្សេងទៀតដូចខាងក្រោម។"
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "បន្ថែម %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "បានបន្ថែម %s"
-
-#: contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "និង"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "បានផ្លាស់ប្តូរ %s"
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "បានលប់ %s"
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "ពុំមានទិន្នន័យត្រូវបានផ្លាស់ប្តូរ។"
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "កម្មវិធីឈ្មោះ %(name)s \"%(obj)s\" ត្រូវបានផ្លាស់ប្តូរដោយជោគជ័យ។"
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "ឈ្មោះកម្មវីធី %(name)s \"%(obj)s\" ត្រូវបានបន្ថែមដោយជោគជ័យ។ លោកអ្នកអាចផ្លាស់ប្តូរម្តងទៀតនៅខាងក្រោម។"
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "ផ្លាស់ប្តូរ %s"
-
-#: contrib/admin/views/main.py:473
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "មានទិន្នន័យ %(fieldname)s មួយចំនួននៅក្នុង %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:478
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "មានទិន្នន័យ %(fieldname)s មួយចំនួននៅក្នុង %(name)s:"
-
-#: contrib/admin/views/main.py:511
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "ឈ្មោះកម្មវិធី %(name)s \"%(obj)s\" ត្រូវបានលប់ដោយជោគជ័យ។"
-
-#: contrib/admin/views/main.py:514
-msgid "Are you sure?"
-msgstr "តើលោកអ្នកប្រាកដទេ?"
-
-#: contrib/admin/views/main.py:536
-#, python-format
-msgid "Change history: %s"
-msgstr "សកម្មភាពផ្លាស់ប្តូរកន្លងមក : %s"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s"
-msgstr "ជ្រើសរើស %s"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s to change"
-msgstr "ជ្រើសរើស %s ដើម្បីផ្លាស់ប្តូរ"
-
-#: contrib/admin/views/main.py:758
-msgid "Database error"
-msgstr "ទិន្នន័យមូលដ្ឋានមានបញ្ហា"
-
-#: contrib/admin/views/doc.py:46
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "ប្រភេទ:"
-
-#: contrib/admin/views/doc.py:77
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "ពាក្យស្វែងរក"
-
-#: contrib/admin/views/doc.py:135
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "មើល"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "ស្វែងរក App %r មិនឃើញ ។"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %r not found in app %r"
-msgstr "Model %r រកមិនឃើញនៅក្នុង app %r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%s.%s` object"
-msgstr " `%s.%s` object ដែលពាក់ព័ន្ធ"
-
-#: contrib/admin/views/doc.py:183
-#: contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219
-#: contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%s.%s` objects"
-msgstr "ជាប់​ទាក់ទង​ជាមួយ​នឹងកម្មវិធី​  `%s.%s` "
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "ទាំងអស់ %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "ចំនួន​នៃ​%s"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "ទិន្នន័យអំពី %s កម្មវិធី"
-
-#: contrib/admin/views/doc.py:291
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303
-#: contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310
-#: contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "ចំនួនពិត(Integer)"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (អាច​ជា True រឺ False)"
-
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "String (អាចសរសេរបានរហូតដល់ %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "ចំនួនពិត(Integer) ដែលផ្តាច់ចេញពីគ្នាដោយ​ក្បៀស"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "កាល​បរិច្ឆេទ (Date) (មិនមានសរសេរម៉ោង)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "កាល​បរិច្ឆេទ (Date) (មានសរសេរម៉ោង)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "អ៊ីម៉ែល"
-
-#: contrib/admin/views/doc.py:298
-#: contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "ផ្លូវទៅកាន់ឯកសារ"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "ចំនួនទសភាគ (Decimal)"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (អាចជា True​ រឺ False រឺ None)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "ទាក់ទងទៅនឹងម៉ូដែល (model)មេ"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "លេខទូរស័ព្ទ"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "អត្ថបទ"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "ពេលវេលា"
-
-#: contrib/admin/views/doc.py:315
-#: contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "អាស័យដ្ឋានគេហទំព័រ(URL)"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "សហរដ្ឋអាមេរិក U.S. (ជាមួយនឹងអក្សរធំពីរ)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "អត្ថបទ XML"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ហាក់បីដូចជា URL ដែល​ត្រឹមត្រូវទេ"
-
-#: contrib/admin/views/auth.py:28
-msgid "Add user"
-msgstr "បន្ថែមសមាជិក"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "ឯកសារ"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "គេហទំព័រ"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "សកម្មភាព​កន្លង​មក"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Date/time"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "សមាជិក"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "សកម្មភាព"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "កម្មវិធីនេះមិនមានសកម្មភាព​កន្លងមកទេ។ ប្រហែលជាសកម្មភាពទាំងនេះមិនបានធ្វើនៅទំព័រគ្រប់គ្រងនេះ។"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ទំព័រគ្រប់គ្រងរបស់ Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ការ​គ្រប់គ្រង​របស់ ​Django"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា (៥០០)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា  <em>(៥០០)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "មានកំហុស។ កំហុសនេះត្រូវបានបញ្ជូនទៅកាន់អ្នកគ្រប់គ្រងគេហទំព័រនេះរួចហើយ។ សូមអភ័យទោសចំពោះបញ្ហានេះ។"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នៅក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "សួមអភ័យទោស ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នឹងក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "ម៉ូដែល (Models) មាននៅក្នុងកម្មវិធី %(name)s ។"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "បន្ថែម"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "ផ្លាស់ប្តូរ"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "លោកអ្នកពុំមានសិទ្ធិ ផ្លាស់​ប្តូរ ទេ។"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "សកម្មភាពបច្ចុប្បន្ន"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "សកម្មភាពរបស់ខ្ញុំ"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "គ្មាន"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "បន្ថែម %(name)s"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "តើលោកអ្នក <a href=\"/password_reset/\">ភ្លេចពាក្យសំងាត់</a>?"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "សូមស្វាគមន៏"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "លប់"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់ ។ ក៏ប៉ន្តែលោកអ្នក​ពុំមាន​សិទ្ធិលប់​កម្មវិធី​ប្រភេទនេះទេ។"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "តើលោកអ្នកប្រាកដជាចង់លប់ %(object_name)s \"%(escaped_object)s\"? ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់។"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "ខ្ញុំច្បាស់​ជាចង់លប់"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "ដោយ​  %(filter_title)s "
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "ស្វែងរក"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "លទ្ធផល ១"
-msgstr[1] "លទ្ធផល %(counter)s "
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "សរុបទាំងអស់ %(full_result_count)s"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "បង្ហាញទាំងអស់"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "ស្វែងរកជាមួយ"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "មើលនៅលើគេហទំព័រដោយផ្ទាល់"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "សូមកែប្រែកំហុសខាងក្រោម ។"
-msgstr[1] "សូមកែប្រែកំហុសខាងក្រោម ។"
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "កំពុងតំរៀប"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "តំរៀប"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "រក្សាទុក"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "រក្សាទុក ហើយ បន្ថែម​ថ្មី"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "រក្សាទុក ហើយ កែឯកសារដដែល"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "រក្សាទុក"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "មូលដ្ឋាន​ទិន្នន័យ​​​ របស់លោកអ្នក មានបញ្ហា។ តើ លោកអ្នកបាន បង្កើត តារាង​ របស់មូលដ្ឋានទិន្នន័យ​ ហើយឬនៅ? តើ​ លោកអ្នកប្រាកដថាសមាជិកអាចអានមូលដ្ឋានទិន្នន័យនេះ​​បានឬទេ? "
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "តំបូងសូមបំពេញ ឈ្មោះជាសមាជិក និង ពាក្យសំងាត់​។ បន្ទាប់មកលោកអ្នកអាចបំពេញបន្ថែមជំរើសផ្សេងៗទៀតបាន។ "
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "ឈ្មោះជាសមាជិក"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "ពាក្យសំងាត់"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "ពាក្យសំងាត់ (ម្តងទៀត)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "សូមបំពេញពាក្យសំងាត់ដូចខាងលើ ដើម្បីត្រួតពិនិត្យ។ "
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "ពាក្យសំងាត់របស់លោកអ្នកបានផ្លាស់ប្តូរហើយ"
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "ពាក្យសំងាត់បានកំណត់សារជាថ្មី"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "តើលោកអ្នកភ្លេចពាក្យសំងាត់រឺ? សូមបំពេញអ៊ីម៉ែលខាងក្រោម យើងខ្ញុំនឹងកំណត់ពាក្យសំងាត់របស់លោកអ្នកសារឡើងវិញ ហើយបញ្ជូនទៅកាន់អ៊ីម៉ែលរបស់លោកអ្នក។"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "អ៊ីមែល"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "កំណត់ពាក្យសំងាត់សារជាថ្មី"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "សូមថ្លែងអំណរគុណ ដែលបានចំណាយ ពេលវេលាដ៏មានតំលៃ របស់លោកអ្នកមកទស្សនាគេហទំព័ររបស់យើងខ្ញុំ"
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ពិនិត្យចូលម្តងទៀត"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "យើងខ្ញុំបានបញ្ជូន​ពាក្យសំងាត់ទៅកាន់​អ៊ីម៉ែលរបស់លោកអ្នករួចហើយ។ លោកអ្នកនឹងបានទទួលនៅពេលបន្តិចទៀតនេះ។"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "សូមបំពេញពាក្យសំងាត់ចាស់របស់លោកអ្នក។ ដើម្បីសុវត្ថភាព សូមបំពេញពាក្យសំងាត់ថ្មីខាងក្រោមពីរដង។"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "ពាក្សំងាត់ចាស់"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "ពាក្យសំងាត់ថ្មី"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "បំពេញពាក្យសំងាត់ថ្មីម្តងទៀត"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "លោកអ្នកទទួលអ៊ីម៉ែលនេះដោយសារលោកអ្នកកំណត់ពាក្យសំងាត់នេះសារជាថ្មី"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "សំរាប់សមាជិកនៅឯគេហទំព័រ %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "ពាក្យសំងាត់ថ្មីគឺ: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "សូមផ្លាស់ប្តូរពាក្យសំងាត់នៅឯទំព័រនេះ:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "ឈ្មោះជាសមាជិកក្នុងករណីភ្លេច:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "សូមអរគុណដែលបានប្រើប្រាស់សេវាកម្មរបស់យើងខ្ញុំ"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "ក្រុមរបស់គេហទំព័រ %(site_name)s"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "កំរងចំណាំ"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "កំរងចំណាំអំពីឯកសារ"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">ដើម្បីតំលើងកំរងចំណាំ សូមទាញយកអត្ថបទភ្ជាប់ទៅ​កាន់​របាឧបករណ៍ ឬក៏ចុចខាងស្តាំលើអត្ថបទភ្ជាប់ហើយ​បញ្ជូលទៅក្នុងកំរងចំណាំរបស់លោកអ្នក។</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "ឯកសារសំរាប់ទំព័រនេះ"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Jumps you from any page to the documentation for the view that generates that page."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "បង្ហាញលេខសំគាល់កម្មវិធី"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Shows the content-type and unique ID for pages that represent a single object."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "កែប្រែកម្មវិធីនេះ(វីនដូវកំពុងប្រើ)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "បង្វែរទៅកាន់​ ទំព័រគ្រប់គ្រង សំរាប់ទំព័រណាដែលតំណាងអោយកម្មវិធីតែមួយ។"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "កែប្រែកម្មវិធីនេះ(វីនដូវថ្មី)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "ដូចខាងលើ តែបើកនៅទំព័រវីនដូវថ្មី"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "កាលបរិច្ឆេទ"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "ម៉ោង"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "បច្ចុប្បន្ន"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "ផ្លាស់ប្តូរ"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "នាំចេញពី"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "គួរតែជាផ្លូវពេញ (absolute path) ហើយមិនបញ្ជូលឈ្មោះ ដមែន (domain name​)។​ឧទាហរណ៍ '/events/search/'។"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "នាំចេញទៅ"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "អាចជាផ្លូវពេញ (absolute path) ឬក៏ URL ទាំងមូលដែលចាប់ផ្តើមជាមួយ 'http://'។"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "នាំចេញ"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "នាំចេញ"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "ឧទាហរណ៍  '/about/contact/' ។ ត្រូវប្រាកដថាមានសញ្ញា / ទាំងនៅផ្នែកខាងមុខ និង ខាងក្រោយ។"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "ចំណងជើង"
-
-msgid "Title"
-msgstr "ចំណងជើង"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "អត្ថន័យ"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "អនុញ្ញាត"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "ឈ្មោះឯកសារគំរូ"
-
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "ឧទាហរណ៍ 'flatpages/contact_page.html'។ ប្រសិនឯកសារនេះមិនមានទេ​ នោះឯកសារ 'flatpages/default.html'នឹងត្រូវប្រើ។"
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "ត្រូវការសមាជិកភាព"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "ប្រសិនជាចុចជ្រើសរើសយកជំរើសនេះ នោះ មានតែសមាជិកទេដែលអាចមើលទំព័រនេះបាន​។"
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "ទំព័ថ្មី"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "ទំព័ថ្មី"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "ចាកចេញ"
-
-#: contrib/auth/models.py:38
-#: contrib/auth/models.py:57
-msgid "name"
-msgstr "ឈ្មោះ"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "ឈ្មោះលេខកូត"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "អនុញ្ញាត"
-
-#: contrib/auth/models.py:43
-#: contrib/auth/models.py:58
-msgid "permissions"
-msgstr "អនុញ្ញាត"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "ក្រុម"
-
-#: contrib/auth/models.py:61
-#: contrib/auth/models.py:100
-msgid "groups"
-msgstr "ក្រុម"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "ឈ្មោះជាសមាជិក"
-
-#: contrib/auth/models.py:90
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "ត្រូចវបំពេញអក្សរឡាតាំងចំនួន៣០ ឬ តិចជាងនេះ (អក្សរ លេខ ឬ សញ្ញា _)។"
-
-#: contrib/auth/models.py:91
-msgid "First name"
-msgstr "នាម"
-
-#: contrib/auth/models.py:92
-msgid "Last name"
-msgstr "គោត្តនាម"
-
-msgid "first name"
-msgstr "នាម"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "គោត្តនាម"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "អ៊ីមែល"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "ពាក្យសំងាត់"
-
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "ប្រើ '[algo]$[salt]$[hexdigest]'"
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "ស្ថានភាពបុគ្គលិក"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr "កំណត់អោយសមាជិកអាចចូលមកប្រើប្រាស់ទំព័រគ្រប់គ្រងនេះ។"
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "សកម្ម"
-
-#: contrib/auth/models.py:96
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "កំណត់ថាតើសមាជិកអាច​ពិនិត្យចូលមកប្រើទំព័រគ្រប់គ្រង។ មិនជ្រើសរើស ជាជាងលប់ចោល។"
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "ស្ថានភាពអ្នកគ្រងគ្រង"
-
-#: contrib/auth/models.py:97
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "កំណត់អោយសមាជិកនេះមានសិទ្ធិទាំងអស់។"
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "ការពិនិត្យចូលកន្លងមក"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "កាលបរិច្ឆេទចូលរួម"
-
-#: contrib/auth/models.py:101
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "បន្ថែមចំពោះសិទ្ធិដែលគេបាន​ផ្តល់​អោយ សមាជិកនេះអាចទទួលបានសិទ្ធិទាំងអស់​ដែលកំណត់​សំរាប់​ក្រុម​ ដែលសមាជិកនេះស្ថិតនៅ។"
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "ការអនុញ្ញាតអោយសមាជិក"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "សមាជិក"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "សមាជិក"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "ព័ត៌មានផ្ទាល់ខ្លួន"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "ការអនុញ្ញាត"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "កាលបរិច្ឆេទសំខាន់"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "ក្រុម"
-
-#: contrib/auth/models.py:256
-msgid "message"
-msgstr "អត្ថបទ"
-
-#: contrib/auth/forms.py:52
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "កម្មវិធីសំរាប់មើលគេហទំព័រនេះហាក់បីដូចជាមិនទាន់បានទទួលយកគុគី ។ ចាំបាច់ត្រូវកំណត់អោយ​កម្មវិធីសំរាប់មើលគេហទំព័រទទួល​យក គុគី ដើម្បីពិនិត្យចូល ។"
-
-#: contrib/auth/forms.py:61
-msgid "This account is inactive."
-msgstr "ឈ្មោះសមាជិកនេះ​លែងដំណើរការ"
-
-#: contrib/contenttypes/models.py:20
-msgid "python model class name"
-msgstr "ឈ្មោះ python model class"
-
-#: contrib/contenttypes/models.py:23
-msgid "content type"
-msgstr "ប្រភេទអត្ថន័យ"
-
-#: contrib/contenttypes/models.py:24
-msgid "content types"
-msgstr "ប្រភេទអត្ថន័យ"
-
-#: contrib/sessions/models.py:51
-msgid "session key"
-msgstr "លេខសំគាល់​រយះពេល​ពិនិត្យ​ចូល"
-
-#: contrib/sessions/models.py:52
-msgid "session data"
-msgstr "ទិន្នន័យរយះពេល​ពិនិត្យ​ចូល"
-
-#: contrib/sessions/models.py:53
-msgid "expire date"
-msgstr "ហួសពេលកំណត់"
-
-#: contrib/sessions/models.py:57
-msgid "session"
-msgstr "រយះពេល​ពិនិត្យ​ចូល"
-
-#: contrib/sessions/models.py:58
-msgid "sessions"
-msgstr "រយះពេល​ពិនិត្យ​ចូល"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "ឈ្មោះដមែន"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "ឈ្មោះសំរាប់បង្ហាញ"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "គេហទំព័រ"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "គេហទំព័រ"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ច័ន្ទ"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "អង្គារ"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ពុធ"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ព្រហស្បតិ៍"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "សុក្រ"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "សៅរ៍"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "អាទិត្យ"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "មករា"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "កុម្ភៈ"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "March"
-msgstr "មិនា"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "April"
-msgstr "មេសា"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "May"
-msgstr "ឧសភា"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "June"
-msgstr "មិថុនា"
-
-#: utils/dates.py:15
-#: utils/dates.py:27
-msgid "July"
-msgstr "កក្កដា"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "សីហា"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "កញ្ញា"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "តុលា"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "វិច្ឆិកា"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "ធ្នូ"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "មករា"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "កុម្ភះ"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "មិនា"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "មេសា"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "ឧសភា"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "មិថុនា"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "កក្កដា"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "សីហា"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "កញ្ញា"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "តុលា"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "វិច្ឆិកា"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "ធ្នូ"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "មករា"
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "កុម្ភះ"
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "សីហា"
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "កញ្ញា"
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "តុលា"
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "វិច្ឆិកា"
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "ធ្នូ"
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "ឆ្នាំ"
-msgstr[1] "ឆ្នាំ"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "ខែ"
-msgstr[1] "ខែ"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "សប្តាហ៍"
-msgstr[1] "សប្តាហ៍"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "ថ្ងៃ"
-msgstr[1] "ថ្ងៃ"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "ម៉ោង"
-msgstr[1] "ម៉ោង"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "នាទី"
-msgstr[1] "នាទី"
-
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr "ថ្ងៃទី j ​ខែ N ឆ្នាំ Y"
-
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr "ថ្ងៃទី j ​ខែ N ឆ្នាំ Y ម៉ោង P"
-
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr "ម៉ោង P"
-
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr "ខែ F ឆ្នាំ Y"
-
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr "ថ្ងៃទី​​ j ខែ F"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "ភាសាអារ៉ាប់"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "ភាសាបេឡារុស្ស"
-
-#: conf/global_settings.py:41
-msgid "Czech"
-msgstr "ភាសាឆេក"
-
-#: conf/global_settings.py:42
-msgid "Welsh"
-msgstr "ភាសាអ៊ុយក្រែន"
-
-#: conf/global_settings.py:43
-msgid "Danish"
-msgstr "ភាសាដាណឺម៉ាក"
-
-#: conf/global_settings.py:44
-msgid "German"
-msgstr "ភាសាអាល្លឺម៉ង់"
-
-#: conf/global_settings.py:45
-msgid "Greek"
-msgstr "ភាសាហ្កែលិគ"
-
-#: conf/global_settings.py:46
-msgid "English"
-msgstr "ភាសាអង់គ្លេស"
-
-#: conf/global_settings.py:47
-msgid "Spanish"
-msgstr "ភាសាអេស្ប៉ាញ"
-
-#: conf/global_settings.py:48
-msgid "Argentinean Spanish"
-msgstr "ភាសាអេស្ប៉ាញ"
-
-#: conf/global_settings.py:49
-msgid "Finnish"
-msgstr "ភាសាហ្វាំងឡង់"
-
-#: conf/global_settings.py:50
-msgid "French"
-msgstr "ភាសាបារាំង"
-
-#: conf/global_settings.py:51
-msgid "Galician"
-msgstr "ភាសាហ្កែលិគ"
-
-#: conf/global_settings.py:52
-msgid "Hungarian"
-msgstr "ភាសាហុងគ្រី"
-
-#: conf/global_settings.py:53
-msgid "Hebrew"
-msgstr "ភាសាហេប្រិ"
-
-#: conf/global_settings.py:54
-msgid "Icelandic"
-msgstr "ភាសាអ៉ីស្លង់"
-
-#: conf/global_settings.py:55
-msgid "Italian"
-msgstr "ភាសាអ៊ីតាលី"
-
-#: conf/global_settings.py:56
-msgid "Japanese"
-msgstr "ភាសាជប៉ុន"
-
-#: conf/global_settings.py:57
-msgid "Dutch"
-msgstr "ភាសាហ្វាំងឡង់"
-
-#: conf/global_settings.py:58
-msgid "Norwegian"
-msgstr "ភាសាន័រវែស"
-
-#: conf/global_settings.py:59
-msgid "Brazilian"
-msgstr "ភាសាប្រេស៊ីល"
-
-#: conf/global_settings.py:60
-msgid "Romanian"
-msgstr "ភាសារូម៉ានី"
-
-#: conf/global_settings.py:61
-msgid "Russian"
-msgstr "ភាសាรัរូស្ស៉ី"
-
-#: conf/global_settings.py:62
-msgid "Slovak"
-msgstr "ភាសាស្លូវ៉ាគី"
-
-#: conf/global_settings.py:63
-msgid "Slovenian"
-msgstr "ភាសាស្លូវ៉ានី"
-
-#: conf/global_settings.py:64
-msgid "Serbian"
-msgstr ""
-
-#: conf/global_settings.py:65
-msgid "Swedish"
-msgstr "ភាសាស៊ុយអែដ"
-
-#: conf/global_settings.py:66
-msgid "Tamil"
-msgstr "ភាសាតាមីល"
-
-#: conf/global_settings.py:67
-msgid "Turkish"
-msgstr "ភាសាទួរគី"
-
-#: conf/global_settings.py:68
-msgid "Ukrainian"
-msgstr "ភាសាអ៊ុយក្រែន"
-
-#: conf/global_settings.py:69
-msgid "Simplified Chinese"
-msgstr "ភាសាចិនសាមញ្ញ"
-
-#: conf/global_settings.py:70
-msgid "Traditional Chinese"
-msgstr "ភាសាចិនបុរាណ"
-
-#: core/validators.py:63
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _"
-
-#: core/validators.py:67
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _ សញ្ញា - ឬ សញ្ញា / ។"
-
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "ត្រូវបំពេញតែអក្សរឡាតាំង ចំនួនលេខ និង សញ្ញា _ សញ្ញា - ។"
-
-#: core/validators.py:75
-msgid "Uppercase letters are not allowed here."
-msgstr "មិនអនុញ្ញាតអោយសរសេរអក្សរធំ។"
-
-#: core/validators.py:79
-msgid "Lowercase letters are not allowed here."
-msgstr "មិនអនុញ្ញាតអោយសរសេរអក្សរតូច។"
-
-#: core/validators.py:86
-msgid "Enter only digits separated by commas."
-msgstr "បំពេញតែលេខហើយផ្តាច់ចេញពីគ្នាដោយសញ្ញាក្បៀស។"
-
-#: core/validators.py:98
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "បំពេញអ៊ីម៉ែលហើយផ្តាច់ចេញពីគ្នាដោយសញ្ញាក្បៀស។"
-
-#: core/validators.py:102
-msgid "Please enter a valid IP address."
-msgstr "សូមបំពេញអាស័យដ្ឋាន IP។"
-
-#: core/validators.py:106
-msgid "Empty values are not allowed here."
-msgstr "មិនអនុញ្ញាតអោយមានចំនួនទទេ។"
-
-#: core/validators.py:110
-msgid "Non-numeric characters aren't allowed here."
-msgstr "មិនអនុញ្ញាតអោយសរសេរអក្សរដែលមិនមែនជាលេខ។"
-
-#: core/validators.py:114
-msgid "This value can't be comprised solely of digits."
-msgstr "មិនអាចអនុញ្ញាតអោយមានតែចំនួនលេខ។"
-
-#: core/validators.py:119
-msgid "Enter a whole number."
-msgstr "បំពេញចំនួនទាំងអស់។"
-
-#: core/validators.py:123
-msgid "Only alphabetical characters are allowed here."
-msgstr "អនុញ្ញាតអោយសរសេរតែអក្សរឡាតាំង។"
-
-#: core/validators.py:138
-msgid "Year must be 1900 or later."
-msgstr "ត្រូវបំពេញឆ្នាំចាប់ពី ១៩០០។"
-
-#: core/validators.py:142
-#, python-format
-msgid "Invalid date: %s."
-msgstr "កាលបរិច្ឆេទមិនត្រឹមត្រូវ : %s។"
-
-#: core/validators.py:146
-#: db/models/fields/__init__.py:415
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "សូមបំពេញកាលបរិច្ឆេទក្នុងទំរង់ជា YYYY-MM-DD ។"
-
-#: core/validators.py:151
-msgid "Enter a valid time in HH:MM format."
-msgstr "សូមបំពេញពេលវេលាក្នុងទំរង់ជា HH:MM ។"
-
-#: core/validators.py:155
-#: db/models/fields/__init__.py:477
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "សូមបំពេញកាលបរិច្ឆេទក្នុងទំរង់ជា YYYY-MM-DD HH:MM ។"
-
-#: core/validators.py:160
-msgid "Enter a valid e-mail address."
-msgstr "សូមបំពេញអ៊ីមែល"
-
-#: core/validators.py:172
-#: core/validators.py:401
-#: forms/__init__.py:661
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "មិនមានឯកសារត្រូវបានជ្រើសរើស។ សូមពិនិត្យប្រភេទឯកសារម្តងទៀត។"
-
-#: core/validators.py:176
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "រូបភាពដែលទាញយកមិនត្រឹមត្រូវ ប្រហែលជាមិនមែនជារូបភាព ឬក៏ជា រូបភាពខូច។"
-
-#: core/validators.py:183
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL រូបភាព %s មិនត្រឹមត្រូវ ។"
-
-#: core/validators.py:187
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "លេខទូរស័ព្ទត្រូវតែក្នុងទំរង់ជា XXX-XXX-XXXX ។ \"%s\" គឺមិនត្រឹមត្រូវទេ។"
-
-#: core/validators.py:195
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL ទៅកាន់វីដេអូ QuickTime %s មិនត្រឹមត្រូវ ។"
-
-#: core/validators.py:199
-msgid "A valid URL is required."
-msgstr "URL មិនត្រឹមត្រូវ។"
-
-#: core/validators.py:213
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"ចាំបាច់ HTML ដែលត្រឹមត្រូវ។ ខាងក្រោម​គឺ​ជាកំហុស​:\n"
-"%s"
-
-#: core/validators.py:220
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML មិនត្រឹមត្រូវ​: %s"
-
-#: core/validators.py:230
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL ដែលមិនត្រឹមត្រូវ: %s"
-
-#: core/validators.py:234
-#: core/validators.py:236
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL​ខូច: %s"
-
-#: core/validators.py:242
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "សូមបំពេញអក្សរកាត់រដ្ឋរបស់សហរដ្ឋអាមេរិកអោយបានត្រឹមត្រូវ។"
-
-#: core/validators.py:256
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "ពាក្យ %s មិនអនុញ្ញាតអោយប្រើនៅទីនេះទេ។"
-msgstr[1] "ពាក្យ %s មិនអនុញ្ញាតអោយប្រើនៅទីនេះទេ។"
-
-#: core/validators.py:263
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "ទិន្នន័យនៅកន្លែងនេះត្រូវតែដូច '%s'  ។"
-
-#: core/validators.py:282
-msgid "Please enter something for at least one field."
-msgstr "សូមបំពេញទិន្នន័យយ៉ាងតិចនៅមួយ​កន្លែង។"
-
-#: core/validators.py:291
-#: core/validators.py:302
-msgid "Please enter both fields or leave them both empty."
-msgstr "អាចបំពេញ ឬ មិនបំពេញ ទិន្នន័យនៅកន្លែងទាំងពីរនេះ។"
-
-#: core/validators.py:309
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "ទិន្នន័យកន្លែងនេះត្រូវបំពេញ​ប្រសិន​បើ %(field)s មានតំលៃ %(value)s"
-
-#: core/validators.py:321
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "ទិន្នន័យកន្លែងនេះត្រូវបំពេញ​ប្រសិន​បើ %(field)s មិនមានតំលៃ %(value)s"
-
-#: core/validators.py:340
-msgid "Duplicate values are not allowed."
-msgstr "មិនអនុញ្ញាតអោយមានតំលៃដូចគ្នា។"
-
-#: core/validators.py:363
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "ចំនួនត្រូវតែជាស្វ័យគុណរបស់ %s។"
-
-#: core/validators.py:374
-msgid "Please enter a valid decimal number."
-msgstr "សូមបំពេញចំនួនទសភាគអោយបានត្រឹមត្រូវ។"
-
-#: core/validators.py:378
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "សូមបំពេញចំនួនទសភាគយ៉ាងតិច  %sខ្ទង់។"
-msgstr[1] "សូមបំពេញចំនួនទសភាគយ៉ាងតិច  %sខ្ទង់។"
-
-#: core/validators.py:381
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "សូមបំពេញចំនួនទសភាគទាំងអស់  %sខ្ទង់។"
-msgstr[1] "សូមបំពេញចំនួនទសភាគទាំងអស់  %sខ្ទង់។"
-
-#: core/validators.py:384
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "សូមបំពេញចំនួនទសភាគយ៉ាងច្រើន  %sខ្ទង់។"
-msgstr[1] "សូមបំពេញចំនួនទសភាគយ៉ាងច្រើន  %sខ្ទង់។"
-
-#: core/validators.py:394
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "ឯកសារដែលទាញយកត្រូវមានទំហំយ៉ាងតិច %s បៃ។"
-
-#: core/validators.py:395
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "ឯកសារដែលទាញយកត្រូវមានទំហំអតិបរិមា %s បៃ។"
-
-#: core/validators.py:412
-msgid "The format for this field is wrong."
-msgstr "ទំរង់ទិន្នន័យនៅកន្លែងនេះមិនត្រឹមត្រូវ។"
-
-#: core/validators.py:427
-msgid "This field is invalid."
-msgstr "ទិន្នន័យកន្លែងនេះមិនត្រឹមត្រូវ។"
-
-#: core/validators.py:463
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "មិនអាចទាញយកពី  %s។"
-
-#: core/validators.py:466
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "ទទួលចំលើយ ​Content-Type header '%(contenttype)s' មិនត្រឹមត្រូវពី URL %(url)s ។"
-
-#: core/validators.py:499
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "សូមបិទ ថាក់(tag) ដែលមិនទាន់បិទ %(tag)s នៅបន្ទាត់ %(line)s ។ (បន្ទាត់ដែលចាប់ផ្តើមជាមួយ \"%(start)s\".)"
-
-#: core/validators.py:503
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "ពាក្យមួយចំនួននៅបន្ទាត់ %(line)s មិនអនុញ្ញាតអោយប្រើទេ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\"។)"
-
-#: core/validators.py:508
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" on line %(line)s គឺជាគុណលក្ខណៈ(attribute) មិនត្រឹមត្រូវ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)"
-
-#: core/validators.py:513
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" ថាក់(tag)នៅបន្ទាត់ %(line)s គឺមិនត្រឹមត្រូវ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)"
-
-#: core/validators.py:517
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "ថាក់ (tag)​នៅបន្ទាត់ %(line)s បាត់គុណលក្ខណៈ មួយ ឬ ច្រើន។(បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)"
-
-#: core/validators.py:522
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "គុណលក្ខណៈ \"%(attr)s\" នៅបន្ទាត់ %(line)s ពុំមានតំលៃត្រឹមត្រូវទេ។ (បន្ទាត់ចាប់ផ្តើមជាមួយ \"%(start)s\".)"
-
-#: views/generic/create_update.py:43
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "The %(verbose_name)s បានផ្លាស់ប្តូរដោយជោគជ័យ។"
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "The %(verbose_name)s​ បានលប់។ "
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s ជាមួយនឹងប្រភេទ %(type)s នេះមានម្តងរួចហើយនៅជាមួយ %(field)s"
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s ជាមួយឈ្មោះ %(fieldname)s នេះមានរួចរាល់ហើយ។"
-
-#: db/models/fields/__init__.py:114
-#: db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:551
-#: db/models/fields/__init__.py:562
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។"
-
-#: db/models/fields/__init__.py:340
-msgid "This value must be an integer."
-msgstr "តំលៃនេះត្រូវតែជាចំនួនលេខ។"
-
-#: db/models/fields/__init__.py:372
-msgid "This value must be either True or False."
-msgstr "តំលៃអាចជា True ឬ False។"
-
-#: db/models/fields/__init__.py:388
-msgid "This field cannot be null."
-msgstr "ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។"
-
-#: db/models/fields/__init__.py:571
-msgid "Enter a valid filename."
-msgstr "សូមបំពេញឈ្មោះឯកសារអោយបានត្រឹមត្រូវ។"
-
-#: db/models/fields/related.py:51
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "សូមបំពេញ  %s អោយបានត្រឹមត្រូវ។"
-
-#: db/models/fields/related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr "ផ្តាច់លេច ID ចេញពីគ្នាដោយក្បៀស។"
-
-#: db/models/fields/related.py:620
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "សូមចុចប៉ូតុន \"Control\", ឬ \"Command\" ចំពោះកុំព្យូទ័រ Mac, ដើម្បីជ្រើសរើសច្រើនជាងមួយ។"
-
-#: db/models/fields/related.py:664
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "សូមបំពេញលេខ %(self)s អោយបានត្រឹមត្រូវ។ តំលៃ %(value)r នេះមិនត្រឹមត្រូវទេ។"
-msgstr[1] "សូមបំពេញលេខ %(self)s អោយបានត្រឹមត្រូវ។ តំលៃ %(value)r នេះមិនត្រឹមត្រូវទេ។"
-
-#: forms/__init__.py:381
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "អត្ថបទរបស់អ្នកតិចជាង %s អក្សរ។"
-msgstr[1] ""
-
-msgid "Ensure this value has at most %d characters."
-msgstr "អត្ថបទរបស់អ្នកត្រូវតិចជាង %d អក្សរ។"
-
-#: newforms/fields.py:105
-#: newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "អត្ថបទរបស់អ្នកត្រូវច្រើនជាង  %d អក្សរ។"
-
-#: forms/__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr "បន្ទាត់មិនអនុញ្ញាតនៅទីនេះទេ។"
-
-#: forms/__init__.py:487
-#: forms/__init__.py:560
-#: forms/__init__.py:599
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "សូមជ្រើសរើស ; '%(data)s' មិនមាននៅក្នុង %(choices)s"
-
-#: forms/__init__.py:663
-msgid "The submitted file is empty."
-msgstr "ពុំមានឯកសារ។​"
-
-#: forms/__init__.py:719
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "សូម​បំពេញ​លេខចន្លោះ​ពី​ -៣២.៧៦៧ និង ៣២.៧៦៧"
-
-#: forms/__init__.py:729
-msgid "Enter a positive number."
-msgstr "សូមបំពេញចំនួន​វិជ្ជមាន"
-
-#: forms/__init__.py:739
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "សូម​បំពេញ​លេខចន្លោះ​ពី​ ០ និង ៣២.៧៦៧"
-
-#: template/defaultfilters.py:401
-msgid "yes,no,maybe"
-msgstr "យល់ព្រម មិនយល់ព្រម​ ប្រហែល"
-
-msgid "Your username and password didn't match. Please try again."
-msgstr "ឈ្មោះជាសមាជិក និង ពាក្យ​សំងាត់​មិន​ត្រឹមត្រូវ។"
-
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "អ៊ីមែល នេះ មិនមាន​នៅក្នុង​ទិន្នន័យ​របស់​យើង​ខ្ញុំ​ទេ។"
-
-msgid "5-30 alphanumeric characters or underscores."
-msgstr "ត្រូវបំពេញអក្សរឡាតាំង (អក្សរ លេខ ឬ សញ្ញា _) ចំនួនពី​៥​ ទៅ ៣០។"
-
-msgid "Must be 5-30 alphanumeric characters or underscores."
-msgstr "ត្រូចវបំពេញអក្សរឡាតាំង (អក្សរ លេខ ឬ សញ្ញា _) ចំនួនពី​៥​ ទៅ ៣០។"
-
-msgid "Confirm password"
-msgstr "បំពេញពាក្យសំងាត់ម្តងទៀត"
-
-msgid "Please make sure your passwords match."
-msgstr "ពាក្យសំងាត់មិនដូចគ្នា។"
-
-msgid "The username \"%s\" is already taken."
-msgstr "ឈ្មោះជាសមាជិក  \"%s\" ត្រូវបានគេយករួចហើយ។ សូមជ្រើសរើសឈ្មោះជាសមាជិកផ្សេងទៀត។"
-
-msgid "The email \"%s\" existed."
-msgstr "អ៊ីមែល  \"%s\" មានរួចហើយ។ សូមជ្រើសរើសអ៊ីមែលផ្សេងទៀត។"
-
-msgid "Audio"
-msgstr "ចំរៀង"
-
-msgid "Video id"
-msgstr "លេខ វីដេអូ"
-
-msgid "Video title"
-msgstr "ចំណងជើើង  វីដេអូ"
-
-msgid "Video length"
-msgstr "ទំហំ  វីដេអូ"
-
-msgid "Outside url"
-msgstr "គេហទំព័រ​ពីក្រៅ"
-
-msgid "Receive name"
-msgstr "ឈ្មោះ​អ្នក​ទទួល"
-
-msgid "Receive email"
-msgstr "អ៊ីមែល​របស់​​អ្នក​ទទួល"
-
-msgid "Message"
-msgstr "អត្ថបទ"
-
-msgid "Sending date"
-msgstr "បញ្ជូន​នៅ​ថ្ងៃ"
-
-msgid "Received date"
-msgstr "​ថ្ងៃ​ទទួល"
-
-msgid "Send as private message"
-msgstr "ជាអត្ថបទ​ផ្ទាល់​ខ្លួន​"
-
-msgid "Sent"
-msgstr "បានបញ្ជូន​"
-
-msgid "Question"
-msgstr "សំណួរ"
-
-msgid "Answer"
-msgstr "ចំលើយ​"
-
-msgid "Tags"
-msgstr "ប្រភេទ​"
-
-msgid "Business"
-msgstr "ពាណិជ្ជកម្ម"
-
-msgid "Beauty & Style"
-msgstr "សោភ័ណភាព និង ម៉ូត​"
-
-msgid "Education"
-msgstr "ការអប់រំ​"
-
-msgid "Environment"
-msgstr "បរិដ្ឋាន"
-
-msgid "Family & Relationships"
-msgstr "គ្រួសារ និង សេចក្តីស្នេហា"
-
-msgid "Food & Drink"
-msgstr "ម្ហូប និង ភេសជ្ជៈ"
-
-msgid "General"
-msgstr "ផ្សេងៗ"
-
-msgid "Games & Recreation"
-msgstr "កំសាន្ត និង ហ្គេម"
-
-msgid "Health"
-msgstr "សុខភាព"
-
-msgid "Pets"
-msgstr "សត្វ ចិញ្ជឹម"
-
-msgid "Politics & Government"
-msgstr "រដ្ឋាភិបាល និង នយោបាយ"
-
-msgid "Sports"
-msgstr "កីឡា"
-
-msgid "Technology"
-msgstr "បច្ចេកវិទ្សា"
-
-msgid "Travel"
-msgstr "ដំណើរកំសាន្ត"
-
-msgid "Source"
-msgstr "ដកស្រង់ចេញ"
-
-msgid "Left column"
-msgstr "ជួរទីមួយ"
-
-msgid "Right column"
-msgstr "ជួរទីពីរ"
-
-msgid "Start date"
-msgstr "ចាប់ផ្តើមនៅ"
-
-msgid "End date"
-msgstr "បញ្ជប់នៅ"
-
diff --git a/webapp/django/conf/locale/km/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/km/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 613f548..0000000
--- a/webapp/django/conf/locale/km/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/km/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/km/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 6084219..0000000
--- a/webapp/django/conf/locale/km/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,108 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: sengtha@e-khmer.com\n"
-"POT-Creation-Date: 2007-01-15 15:43+0200\n"
-"PO-Revision-Date: 2007-01-21 01:25+0900\n"
-"Last-Translator: Chay Sengtha <sengtha@e-khmer.com>\n"
-"Language-Team: Chay Sengtha <sengtha@e-khmer.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s ដែលអាច​ជ្រើសរើសបាន"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "ជ្រើសរើសទាំងអស់"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "បន្ថែម"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "លប់ចេញ"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s ដែលបានជ្រើសរើស"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "សូមជ្រើសរើសយក"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "លប់ចេញទាំងអស់"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid "January February March April May June July August September October November December"
-msgstr "January February March April May June July August September October November December"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M T W T F S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "ឥឡូវនេះ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "នាឡិការ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "ជ្រើសរើសម៉ោង"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "អធ្រាត្រ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "ម៉ោង ៦ ព្រឹក"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "ពេលថ្ងែត្រង់"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "លប់ចោល"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "ថ្ងៃនេះ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "ប្រក្រតិទិន"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "ម្សិលមិញ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "ថ្ងៃស្អែក"
-
diff --git a/webapp/django/conf/locale/kn/LC_MESSAGES/django.mo b/webapp/django/conf/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 8c9fe23..0000000
--- a/webapp/django/conf/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/kn/LC_MESSAGES/django.po b/webapp/django/conf/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 37c632c..0000000
--- a/webapp/django/conf/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2536 +0,0 @@
-# Kannada translation of Django.
-# Copyright (C) 2007 Translation Team <translation@sampada.info>
-# This file is distributed under the same license as the Django package.
-# Kannada Localization Team <translation@sampada.info>, 2007.
-# 
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-25 15:43+0200\n"
-"PO-Revision-Date: 2007-01-08 20:22+0530\n"
-"Last-Translator: Kannada Localization Team <translation@sampada.info>\n"
-"Language-Team: Kannada <translation@sampada.info>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ವಸ್ತುವಿನ ಐಡಿ"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "ತಲೆಬರಹ"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "ಟಿಪ್ಪಣಿ"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "ಕ್ರಮಾಂಕ ೧"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "ಕ್ರಮಾಂಕ  ೨"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "ಕ್ರಮಾಂಕ  ೩ "
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "ಕ್ರಮಾಂಕ ೪"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "ಕ್ರಮಾಂಕ ೫ "
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "ಕ್ರಮಾಂಕ ೬ "
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "ಕ್ರಮಾಂಕ ೭"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "ಕ್ರಮಾಂಕ ೮"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "ಕ್ರಮಬದ್ಧ ಕ್ರಮಾಂಕ"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "ಸಲ್ಲಿಸಿದ ದಿನಾಂಕ/ಸಮಯ"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "ಸಾರ್ವಜನಿಕವಾಗಿದೆ"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP ವಿಳಾಸ"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "ತೆಗೆದು ಹಾಕಲಾಗಿದೆ"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"ಟಿಪ್ಪಣಿ ಅನುಚಿತವಾಗಿ "
-"ಇದ್ದಲ್ಲಿ ಈ ಚೌಕದಲ್ಲಿ ಗುರುತು "
-"ಮಾಡಿ. ಅದರ ಬದಲಾಗಿ \"ಈ ಟಿಪ್ಪಣಿ "
-"ತೆಗೆದುಹಾಕಲಾಗಿದೆ\" ಎಂಬ "
-"ಸಂದೇಶವನ್ನು  ತೋರಿಸಲಾಗುವುದು."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "ಟಿಪ್ಪಣಿಗಳು"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "ಒಳವಿಷಯ ವಸ್ತು"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"ಸಲ್ಲಿಸಿದವರು %(user)s ರವರು  %(date)s\n"
-"\n"
-"  ದಿನ/ಸಮಯಕ್ಕೆ %(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s  ಸಲ್ಲಿಸಿದ್ದು"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "ವ್ಯಕ್ತಿಯ ಹೆಸರು"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "IP ವಿಳಾಸ"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr ""
-"ಸಿಬ್ಬಂದಿಯಿಂದ ಅನುಮೋದನೆ "
-"ಪಡೆದಿದೆ"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "ಉಚಿತ ಟಿಪ್ಪಣಿ"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "ಉಚಿತ ಟಿಪ್ಪಣಿಗಳು"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "ಅಂಕ"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "ಅಂಕದ ದಿನಾಂಕ"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "ಕರ್ಮ ಅಂಕ"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "ಕರ್ಮ ಅಂಕಗಳು"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr " %(user)s ಇಂದ  %(score)d ಕ್ರಮಾಂಕ"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"ಈ ಟಿಪ್ಪಣಿಯನ್ನು %(user)s ರವರು "
-"ಪತಾಕೆಯಿಂದ ಗುರುತು "
-"ಮಾಡಿದ್ದಾರೆ:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "ಪತಾಕೆ ದಿನಾಂಕ"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "ಬಳಕೆದಾರ ಪತಾಕೆ"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "ಬಳಕೆದಾರ ಪತಾಕೆಗಳು"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "%r ಇಂದ ಪತಾಕೆ"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "ತೆಗೆದುಹಾಕಿದ ದಿನಾಂಕ"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "ನಿಯಂತ್ರಕರು ಅಳಿಸಿದ್ದು"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "ನಿಯಂತ್ರಕರು ಅಳಿಸಿದ್ದು"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr " %r ಇಂದ ನಿಯಂತ್ರಕರ ಅಳಿಸುವಿಕೆ "
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr ""
-"ಅನಾಮಧೇಯ ಬಳಕೆದಾರರು ಮತ "
-"ಹಾಕುವಂತಿಲ್ಲ"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "ತಪ್ಪು ಟಿಪ್ಪಣಿ ಐಡಿ"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr ""
-"ತಮಗೇ ಮತ ಹಾಕಿಕೊಳ್ಳುವಂತಿಲ್ಲ."
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"ನೀವು  ಬೇರೆಯ ಕ್ರಮಾಂಕ "
-"ನೀಡಿರುವುದರಿಂದ ಈ ಕ್ರಮಾಂಕ "
-"ಅವಶ್ಯವಾಗಿದೆ."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"%(count)s ಕ್ಕಿಂತಲೂ ಕಡಿಮೆ "
-"ಟಿಪ್ಪಣಿಗಳನ್ನು ಬರೆದಿರುವ "
-"ಸದಸ್ಯರಿಂದ ಈ ಟಿಪ್ಪಣಿ "
-"ಬರೆಯಲ್ಪಟ್ಟಿದೆ:\n"
-"\n"
-"%(text)s"
-"%(count)sಕ್ಕಿಂತಲೂ ಕಡಿಮೆ "
-"ಟಿಪ್ಪಣಿಗಳನ್ನು ಬರೆದಿರುವ "
-"ಸದಸ್ಯರಿಂದ ಈ ಟಿಪ್ಪಣಿ "
-"ಬರೆಯಲ್ಪಟ್ಟಿದೆ:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"ಈ ಟಿಪ್ಪಣಿಯನ್ನು ಅಪೂರ್ಣ "
-"ಮಾಹಿತಿಯುಳ್ಳ ಬಳಕೆದಾರ :\n"
-"\n"
-" %(text)s ರು ಸಲ್ಲಿಸಿದ್ದಾರೆ"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr ""
-"ಸಲ್ಲಿಕೆಗಳಿಗೆ ಮಾತ್ರ "
-"ಅನುಮತಿಯಿದೆ"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr ""
-"ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ಅಗತ್ಯ "
-"ಅಂಶಗಳನ್ನು ಸಲ್ಲಿಸಿಲ್ಲ"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"ಯಾರೋ ಟಿಪ್ಪಣಿಯನ್ನು "
-"ಬದಲಾಯಿಸಿದ್ದಾರೆ( ಭದ್ರತೆಯ "
-"ಉಲ್ಲಂಘನೆ)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"ಟಿಪ್ಪಣಿ ನಮೂನೆಗೆ ತಪ್ಪು "
-"ಟಾರ್ಗೆಟ್ ಪ್ಯಾರಾಮೀಟರ್ ಇದೆ. "
-"ವಸ್ತುವಿನ ಐಡಿಯು "
-"ದೋಷಪೂರಿತವಾಗಿತ್ತು."
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-"ಟಿಪ್ಪಣಿ ನಮೂನೆ "
-"'ಮುನ್ನೋಟ'ವನ್ನಾಗಲೀ "
-"'ಸಲ್ಲಿಕೆ'ಯನ್ನಾಗಲೀ "
-"ಒದಗಿಸಲಿಲ್ಲ."
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "ಬಳಕೆದಾರನ ಹೆಸರು:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "ಹೊರಕ್ಕೆ ಹೋಗಿ"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "ಪ್ರವೇಶಪದ:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr ""
-"ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಮರೆತಿದ್ದೀರಾ?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "ಕ್ರಮಾಂಕಗಳು"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "ಅವಶ್ಯ"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "ಐಚ್ಛಿಕ"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "ಭಾವಚಿತ್ರ ಸಲ್ಲಿಸಿ"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "ಟಿಪ್ಪಣಿ:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "ಟಿಪ್ಪಣಿ ಮುನ್ನೋಟ"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "ನಿಮ್ಮ ಹೆಸರು:"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>%s ಇಂದ :</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "ಎಲ್ಲಾ"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "ಯಾವುದೇ ದಿನಾಂಕ"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "ಈದಿನ"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "ಕಳೆದ ೭ ದಿನಗಳು"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "ಈ ತಿಂಗಳು"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "ಈ ವರ್ಷ"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "ಹೌದು"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "ಇಲ್ಲ"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "ಗೊತ್ತಿಲ್ಲ(ದ/ದ್ದು)"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಸಮಯ"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "ವಸ್ತುವಿನ ಐಡಿ"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "ವಸ್ತು ಪ್ರಾತಿನಿಧ್ಯ"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಪತಾಕೆ"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr ""
-"ಬದಲಾವಣೆಯ ಸಂದೇಶ/ಸಂದೇಶ ಬದಲಿಸಿ"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "ಲಾಗ್ ದಾಖಲೆ"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "ಲಾಗ್ ದಾಖಲೆಗಳು"
-
-#: contrib/admin/templatetags/admin_list.py:230
-msgid "All dates"
-msgstr "ಎಲ್ಲಾ ದಿನಾಂಕಗಳು"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
-msgid ""
-"Please enter a correct username and password. Note that both fields are "
-"case-sensitive."
-msgstr ""
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ಬಳಕೆದಾರ-ಪದ "
-"ಮತ್ತು  ಪ್ರವೇಶಪದ ಬರೆಯಿರಿ "
-".ಎರಡೂ ಇಂಗ್ಲೀಷಿನ  ಸಣ್ಣ ಮತ್ತು "
-"ದೊಡ್ಡ ಅಕ್ಷರ ಸಂವೇದಿ  "
-"ಎಂಬುದನ್ನು ಗಮನದಲ್ಲಿಡಿ"
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "ಒಳಗೆ ಬನ್ನಿ"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"ದಯವಿಟ್ಟು ಇನ್ನೊಮ್ಮೆ ಒಳಬನ್ನಿ "
-"(ಲಾಗಿನ್ ಮಾಡಿ) . ನಿಮ್ಮ ಅಧಿವೇಶನ "
-"ಕೊನೆಗೊಂಡಿದೆ. "
-"ಚಿಂತಿಸಬೇಡಿ:ನಿಮ್ಮ "
-"ಸಲ್ಲಿಕೆಯನ್ನು ಉಳಿಸಲಾಗಿದೆ."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"ಕುಕೀಗಳನ್ನು ಸ್ವೀಕರಿಸುವಂತೆ "
-"ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕವನ್ನು "
-"ಸಂರಚಿಸಲಾಗಿಲ್ಲ ಎಂದು "
-"ತೋರುತ್ತದೆ. ದಯವಿಟ್ಟು "
-"ಕುಕೀಗಳನ್ನು  ಸಕ್ರಿಯಗೊಳಿಸಿ , ಈ "
-"ಪುಟವನ್ನು ಮತ್ತೆ ಲೋಡ್ ಮಾಡಿ "
-"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿರಿ. "
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr ""
-"ಬಳಕೆದಾರ-ಹೆಸರುಗಳು '@' "
-"ಅಕ್ಷರವನ್ನು ಒಳಗೊಳ್ಳುವಂತಿಲ್ಲ"
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"ನಿಮ್ಮ ವಿ-ಅಂಚೆ ವಿಳಾಸವು ನಿಮ್ಮ "
-"ಬಳಕೆದಾರ-ಹೆಸರಲ್ಲ; ಬದಲಾಗಿ '%s'  "
-"ಪ್ರಯತ್ನಿಸಿ."
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "ತಾಣ ನಿರ್ವಹಣೆ"
-
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-" %(name)s \"%(obj)s\" ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ "
-"ಸೇರಿಸಲಾಯಿತು."
-
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:22
-msgid "You may edit it again below."
-msgstr ""
-"ನೀವು ಅದನ್ನು ಕೆಳಗೆ ಮತ್ತೆ "
-"ಬದಲಾಯಿಸಬಹುದು."
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr ""
-"ನೀವು ಕೆಳಗೆ ಇನ್ನೊಂದು %s "
-"ಸೇರಿಸಬಹುದು."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "%s ಸೇರಿಸಿ"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s ಸೇರಿಸಲಾಯಿತು."
-
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "ಮತ್ತು"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "%s ಬದಲಾಯಿಸಲಾಯಿತು."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s ತೆಗೆದುಹಾಕಲಾಯಿತು."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "ಯಾವುದೇ ಅಂಶಗಳು ಬದಲಾಗಲಿಲ್ಲ."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-"%(name)s \"%(obj)s\" ಸಫಲವಾಗಿ "
-"ಬದಲಾಯಿಸಲಾಯಿತು."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" ಅನ್ನು  ಯಶಸ್ವಿಯಾಗಿ "
-"ಸೇರಿಸಲಾಯಿತು. ನೀವು ಕೆಳಗೆ "
-"ಅದನ್ನು ಮತ್ತೆ ಬದಲಾಯಿಸಬಹುದು."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "%s ಅನ್ನು ಬದಲಿಸು"
-
-#: contrib/admin/views/main.py:473
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-"%(name)s ನಲ್ಲಿ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು "
-"%(fieldname)s :%(obj)s"
-
-#: contrib/admin/views/main.py:478
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
-"%(name)s ನಲ್ಲಿ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು "
-"%(fieldname)s :"
-
-#: contrib/admin/views/main.py:511
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-"%(name)s \"%(obj)s\" ಯಶಸ್ವಿಯಾಗಿ "
-"ಅಳಿಸಲಾಯಿತು."
-
-#: contrib/admin/views/main.py:514
-msgid "Are you sure?"
-msgstr "ಖಚಿತಪಡಿಸುವಿರಾ? "
-
-#: contrib/admin/views/main.py:536
-#, python-format
-msgid "Change history: %s"
-msgstr "ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ: %s"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s"
-msgstr "%s ಆಯ್ದುಕೊಳ್ಳಿ"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s to change"
-msgstr "ಬದಲಾಯಿಸಲು %s ಆಯ್ದುಕೊಳ್ಳಿ"
-
-#: contrib/admin/views/main.py:758
-msgid "Database error"
-msgstr "ದತ್ತಸಂಚಯದ ದೋಷ"
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "ಟ್ಯಾಗ್:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "ಸೋಸಕ:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "ನೋಟ:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "%r ಅನ್ವಯಾಂಶ ಸಿಗಲಿಲ್ಲ"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %r not found in app %r"
-msgstr ""
-"%r ಅನ್ವಯಾಂಶದಲ್ಲಿ %r  ಮಾಡೆಲ್ಲು "
-"ಸಿಗಲಿಲ್ಲ"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%s.%s` object"
-msgstr "ಸಂಬಂಧಿಸಿದ `%s.%s` ವಸ್ತು"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "ಮಾಡೆಲ್:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%s.%s` objects"
-msgstr "ಸಂಬಂಧಿಸಿದ `%s.%s` ವಸ್ತುಗಳು"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "ಎಲ್ಲಾ %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "%s ಗಳ ಸಂಖ್ಯೆ"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s ವಸ್ತುಗಳ ಅಂಶಗಳು"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "ಸಂಖ್ಯೆ"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "ಬೂಲಿಯನ್( ನಿಜ ಅಥವಾ ಸುಳ್ಳು)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "(%(maxlength)s ವರೆಗಿನ  ) ಅಕ್ಷರಪುಂಜ"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr ""
-"ಅಲ್ಪವಿರಾಮ(,) ದಿಂದ ಬೇರ್ಪಟ್ಟ "
-"ಸಂಖ್ಯೆಗಳು"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "ದಿನಾಂಕ (ಸಮಯರಹಿತ)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "ದಿನಾಂಕ(ಸಮಯದೊಂದಿಗೆ)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "ವಿ-ಅಂಚೆ ವಿಳಾಸ"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "ಕಡತದ ಸ್ಥಾನಪಥ"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "ದಶಮಾನ ಸಂಖ್ಯೆ"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-"ಬೂಲಿಯನ್( ನಿಜ ಅಥವಾ ಸುಳ್ಳು "
-"ಅಥವಾ ಯಾವುದೂ ಅಲ್ಲ)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr ""
-"ಹಿರಿಯ ಮಾಡೆಲ್‍ನೊಂದಿಗಿನ ಸಂಬಂಧ"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "ದೂರವಾಣಿ ಸಂಖ್ಯೆ"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "ಪಠ್ಯ"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "ಸಮಯ"
-
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr ""
-"ಅಮೇರಿಕಾ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನದ "
-"ರಾಜ್ಯ ( ಎರಡು ಇಂಗ್ಲೀಷ್ "
-"ದೊಡ್ಡಕ್ಷರಗಳು)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML ಪಠ್ಯ"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-"%s  URL ಸ್ವರೂಪದ್ದಾಗಿ ತೋರುವದಿಲ್ಲ."
-
-#: contrib/admin/views/auth.py:28
-msgid "Add user"
-msgstr "ಬಳಕೆದಾರನನ್ನು ಸೇರಿಸಿ"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "ವಿವರಮಾಹಿತಿ"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "ಪ್ರವೇಶಪದ ಬದಲಿಸಿ"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "ಪ್ರಾರಂಭಸ್ಥಳ(ಮನೆ)"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "ಚರಿತ್ರೆ"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "ದಿನಾಂಕ/ಸಮಯ"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "ಬಳಕೆದಾರ"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "ಕ್ರಮ(ಕ್ರಿಯೆ)"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"ಈ ವಸ್ತುವಿಗೆ ಬದಲಾವಣೆಯ "
-"ಇತಿಹಾಸವಿಲ್ಲ. ಅದು ಬಹುಶಃ ಈ "
-"ಆಡಳಿತತಾಣದ ಮೂಲಕ "
-"ಸೇರಿಸಲ್ಪಟ್ಟಿಲ್ಲ."
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ಜಾಂಗೋ ತಾಣದ ಆಡಳಿತಗಾರರು"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ಜಾಂಗೋ ಆಡಳಿತ"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "ಸರ್ವರ್ ದೋಷ"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "ಸರ್ವರ್ ದೋಷ(೫೦೦)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "ಸರ್ವರ್ ದೋಷ<em>(೫೦೦)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"e-mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"ಇಲ್ಲಿ ಒಂದು ತಪ್ಪಾಗಿದೆ. ಅದನ್ನು "
-"ತಾಣದ ಆಡಳಿತಗಾರರಿಗೆ ವರದಿ "
-"ಮಾಡಲಾಗಿದ್ದು ಶೀಘ್ರದ್ದಲ್ಲಿ "
-"ಸರಿಪಡಿಸಲಾಗುವದು. ನಿಮ್ಮ "
-"ತಾಳ್ಮೆಗೆ ಧನ್ಯವಾದಗಳು."
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "ಪುಟ ಸಿಗಲಿಲ್ಲ"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-"ಕ್ಷಮಿಸಿ, ನೀವು ಕೇಳಿದ ಪುಟ "
-"ಸಿಗಲಿಲ್ಲ"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr ""
-"%(name)s ಅನ್ವಯಾಂಶದಲ್ಲಿ "
-"ಮಾಡೆಲ್ಲುಗಳು ಲಭ್ಯ."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "ಸೇರಿಸಿ"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "ಬದಲಿಸಿ/ಬದಲಾವಣೆ"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr ""
-"ಯಾವುದನ್ನೂ ತಿದ್ದಲು ನಿಮಗೆ "
-"ಅನುಮತಿ ಇಲ್ಲ ."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "ಇತ್ತೀಚಿನ ಕ್ರಮಗಳು"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "ನನ್ನ ಕ್ರಮಗಳು"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "ಯಾವುದೂ ಲಭ್ಯವಿಲ್ಲ"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s ಸೇರಿಸಿ"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr ""
-"ನೀವು <a "
-"href=\"/password_reset/\">ಪ್ರವೇಶಪದವನ್ನು "
-"ಮರೆತಿದ್ದೀರಾ</a>?"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "ಸುಸ್ವಾಗತ."
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "ಅಳಿಸಿಹಾಕಿ"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"'%(escaped_object)s'  %(object_name)s ಅನ್ನು "
-"ತೆಗೆದುಹಾಕುವುದರಿಂದ ಸಂಬಂಧಿತ "
-"ವಸ್ತುಗಳೂ ಕಳೆದುಹೋಗುತ್ತವೆ. "
-"ಆದರೆ ನಿಮ್ಮ ಖಾತೆಗೆ ಕೆಳಕಂಡ "
-"ಬಗೆಗಳ ವಸ್ತುಗಳನ್ನು "
-"ತೆಗೆದುಹಾಕಲು ಅನುಮತಿಯಿಲ್ಲ."
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-#,fuzzy
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"ದಿಟವಾಗಿಯೂ, ನೀವು %(object_name)s  "
-"\"%(escaped_object)ಗಳನ್ನು\"? "
-"ತೆಗೆದುಹಾಕಬಯಸಿದ್ದೀರಾ? "
-"ಸಂಬಂಧಪಟ್ಟ ಕೆಳಕಂಡ ಎಲ್ಲವನ್ನೂ "
-"ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "ಹೌದು,ನನಗೆ ಖಚಿತವಿದೆ"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s ಇಂದ"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "ಹೋಗಿ"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgstr "೧ ಫಲಿತಾಂಶ"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "ಒಟ್ಟು %(full_result_count)s"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "ಸೋಸಕ"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "ತಾಣದಲ್ಲಿ ನೋಡಿ"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgstr ""
-"ದಯಮಾಡಿ ಕೆಳಗಿನ ತಪ್ಪನ್ನು "
-"ಸರಿಪಡಿಸಿ "
-"ದಯಮಾಡಿ ಕೆಳಗಿನ ತಪ್ಪುಗಳನ್ನು "
-"ಸರಿಪಡಿಸಿ. "
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "ಅನುಕ್ರಮದಲ್ಲಿ ಜೋಡಣೆ"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "ಅನುಕ್ರಮ:"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "ಹೊಸದರಂತೆ ಉಳಿಸಿ"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr ""
-"ಉಳಿಸಿ ಮತ್ತು ಇನ್ನೊಂದನ್ನು "
-"ಸೇರಿಸಿ"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr ""
-"ಉಳಿಸಿ ಮತ್ತು ತಿದ್ದುವುದನ್ನು "
-"ಮುಂದುವರಿಸಿರಿ."
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "ಉಳಿಸಿ"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"ಡಾಟಾಬೇಸನ್ನು ಇನ್ಸ್ಟಾಲ್ "
-"ಮಾಡುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ. ಸೂಕ್ತ "
-" ಡಾಟಾಬೇಸ್ ಕೋಷ್ಟಕಗಳು "
-"ರಚನೆಯಾಗಿ ಅರ್ಹ ಬಳಕೆದಾರರು "
-"ಅವುಗಳನ್ನು ಓದಬಹುದಾಗಿದೆಯೇ "
-"ಎಂಬುದನ್ನು ಖಾತರಿ "
-"ಪಡಿಸಿಕೊಳ್ಳಿ."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"ಮೊದಲು ಬಳಕೆದಾರ-ಹೆಸರು ಮತ್ತು "
-"ಪ್ರವೇಶಪದವನ್ನು ಕೊಡಿರಿ. ನಂತರ, "
-"ನೀವು ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳನ್ನು  "
-"ಬದಲಿಸಬಹುದಾಗಿದೆ."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "ಬಳಕೆದಾರ-ಹೆಸರು"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "ಪ್ರವೇಶಪದ"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "ಪ್ರವೇಶಪದ(ಇನ್ನೊಮ್ಮೆ)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"ಖಚಿತಗೊಳಿಸಲು ಮೇಲಿನ "
-"ಪ್ರವೇಶಪದವನ್ನು ಇನ್ನೊಮ್ಮೆ "
-"ಬರೆಯಿರಿ."
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಯಶಸ್ವಿ"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr ""
-"ನಿಮ್ಮ ಪ್ರವೇಶಪದ "
-"ಬದಲಾಯಿಸಲಾಗಿದೆ"
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "ಪ್ರವೇಶಪದವನ್ನು ಬದಲಿಸುವಿಕೆ"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"ಪ್ರವೇಶಪದವನ್ನು ಮರೆತಿದ್ದೀರಾ? "
-"ನಿಮ್ಮ ವಿ-ಅಂಚೆಯ ವಿಳಾಸವನ್ನು "
-"ಕೆಳಗೆ ಸೂಚಿಸಿರಿ, ನಾವು ನಿಮ್ಮ "
-"ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಿ "
-"ಅದನ್ನು ರವಾನಿಸುತ್ತೇವೆ."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "ವಿ-ಅಂಚೆ ವಿಳಾಸ:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr ""
-"ನನ್ನ ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೆ "
-"ನಿರ್ಧರಿಸಿ "
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-"ಈದಿನ ತಮ್ಮ ಅತ್ಯಮೂಲ್ಯವಾದ "
-"ಸಮಯವನ್ನು ನಮ್ಮ ತಾಣದಲ್ಲಿ "
-"ಕಳೆದುದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ಮತ್ತೆ ಒಳಬನ್ನಿ"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr ""
-"ಪ್ರವೇಶಪದದ ಮರುನಿರ್ಧಾರ "
-"ಸಾಧ್ಯವಾಗಿದೆ"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"ನಾವು ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು "
-"ನಿಮ್ಮ ವಿ-ಅಂಚೆಗೆ ಕಳಿಸಿದ್ದೇವೆ. "
-"ಕೆಲವೇ ಕ್ಷಣಗಳಲ್ಲಿ ನೀವದನ್ನು "
-"ಪಡೆಯಲಿದ್ದೀರಿ."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"ಭದ್ರತೆಯ ದೃಷ್ಟಿಯಿಂದ "
-"ದಯವಿಟ್ಟು ನಿಮ್ಮ ಹಳೆಯ "
-"ಪ್ರವೇಶಪದವನ್ನು ಸೂಚಿಸಿರಿ. "
-"ಆನಂತರ ನೀವು ಸರಿಯಾಗಿ "
-"ಬರೆದಿದ್ದೀರೆಂದು ನಾವು "
-"ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು   ಹೊಸ "
-"ಪ್ರವೇಶಪದವನ್ನು ಎರಡು ಬಾರಿ "
-"ಬರೆಯಿರಿ."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "ಹಳೆಯ ಪ್ರವೇಶಪದ:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "ಹೊಸ ಪ್ರವೇಶಪದ:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "ಪ್ರವೇಶಪದವನ್ನು ಖಚಿತಪಡಿಸಿ:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "ನನ್ನ ಪ್ರವೇಶಪದ ಬದಲಿಸಿ"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"ಪ್ರವೇಶಪದದ ಮರುನಿರ್ಧಾರವನ್ನು "
-"ನೀವು ಕೇಳಿದುದರಿಂದ ಈ "
-"ವಿ-ಅಂಚೆಯನ್ನು "
-"ಪಡೆಯುತ್ತಿದ್ದೀರಿ."
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr ""
-"%(site_name)s ತಾಣದಲ್ಲಿ ನಿಮ್ಮ "
-"ಬಳಕೆದಾರ-ಖಾತೆಗಾಗಿ"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "ನಿಮ್ಮ ಹೊಸ ಪ್ರವೇಶಪದ : %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr ""
-"ನಿಸ್ಸಂಕೋಚವಾಗಿ ಈ ಪುಟಕ್ಕೆ "
-"ಹೋಗಿ ಈ ಪ್ರವೇಶಪದವನ್ನು "
-"ಬದಲಿಸಿರಿ."
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-"ನೀವು ಮರೆತಿದ್ದಲ್ಲಿ , ನಿಮ್ಮ "
-"ಬಳಕೆದಾರ-ಹೆಸರು"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr ""
-"ನಮ್ಮ ತಾಣವನ್ನು "
-"ಬಳಸಿದ್ದಕ್ದಾಗಿ ಧನ್ಯವಾದಗಳು!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s ತಂಡ"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "ಚಿಕ್ಕ ಪುಟಗುರುತುಗಳು"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr ""
-"ಮಾಹಿತಿಯ ಚಿಕ್ಕ ಪುಟಗುರುತುಗಳು"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p "
-"class=\"help\">ಸಣ್ಣ್ಪುಟಗುರುತುಗಳನ್ನು "
-"ಅನುಸ್ಥಾಪಿಸಲು ಕೊಂಡಿಯನ್ನು "
-"ಪುಟಗುರುತು ಉಪಕರಣಪಟ್ಟಿ(ಟೂಲ್ "
-"ಬಾರ್)ಕಡೆಗೆ ಎಳೆದೊಯ್ಯಿರಿ,\n"
-" ಅಥವಾ ಕೊಂಡಿಯ ಮೇಲೆ "
-"ಮೂಷಿಕ(ಮೌಸ್)ದ ಬಲಬಟನ್ನನ್ನು "
-"ಒತ್ತಿ ಪುಟಗುರುತುಗಳಿಗೆ "
-"ಸೇರಿಸಿಕೊಳ್ಳಿ. ಈಗ \n"
-" ನೀವು ಸಣ್ಣಪುಟಗುರುತುಗಳನ್ನು "
-"ತಾಣದ ಯಾವ ಪುಟದಿಂದ ಬೇಕಾದರೂ "
-"ಆಯ್ಕೆಮಾಡಿಕೊಳ್ಳಬಹುದು.\n"
-"ನೆನಪಿರಲಿ, ಕೆಲವು "
-"ಸಣ್ಣಪುಟಗುರುತುಗಳಿಗೆ ನೀವು ಈ "
-"ತಾಣವನ್ನು ಆಂತರಿಕ (\"internal\") ಎಂದು "
-"ಸೂಚಿತವಾಗಿರುವ ಗಣಕದಿಂದ "
-"ವೀಕ್ಷಿಸಬೇಕಾಗುತ್ತದೆ.\n"
-"(  ನಿಮ್ಮ ಗಣಕವು \"internal\" ಹೌದೇ "
-"ಅಲ್ಲವೇ ಎಂದು "
-"ಗೊತ್ತಿಲ್ಲದಿದ್ದರೆ , ಗಣಕದ "
-"ಆಡಳಿತಗಾರರನ್ನು ಕೇಳಿರಿ).</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "ಈ ಪುಟದ ಬಗೆಗಿನ ಮಾಹಿತಿ"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"ನಿಮ್ಮನ್ನು ಯಾವುದೇ ಪುಟದಿಂದ ಆ "
-"ಪುಟವನ್ನು ಸೃಷ್ಟಿಸುವ ನೋಟದ "
-"ಮಾಹಿತಿಪುಟಕ್ಕೆ ಕೊಂಡೊಯ್ಯುವದು"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "ವಸ್ತುವಿನ ಐಡಿ ತೋರಿಸಿ"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"ಏಕೈಕ ವಸ್ತುವನ್ನು "
-"ಪ್ರತಿನಿಧಿಸುವ ಪುಟಗಳ ವಿಶಿಷ್ಠ "
-"ಐಡಿ ಮತ್ತು ಒಳವಿಷಯಬಗೆಯನ್ನು "
-"ತೋರಿಸುತ್ತದೆ."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr ""
-"ಈ ವಸ್ತುವನ್ನು ಬದಲಿಸಿ(ಈಗಿನ "
-"ಕಿಟಕಿಯಲ್ಲಿ)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"ಏಕೈಕ ವಸ್ತುವನ್ನು "
-"ಪ್ರತಿನಿಧಿಸುವ ಪುಟಗಳಿಗಾಗಿ "
-"ಆಡಳಿತಪುಟಕ್ಕೆ ಒಯ್ಯುತ್ತದೆ"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr ""
-"ಈ ವಸ್ತುವನ್ನು ಬದಲಿಸಿ(ಹೊಸ "
-"ಕಿಟಕಿಯಲ್ಲಿ)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"ಮೇಲಿನಂತೆ, ಆದರೆ "
-"ಆಡಳಿತಪುಟವನ್ನು ಹೊಸ "
-"ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆಯುವದು."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "ದಿನಾಂಕ:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "ಸಮಯ:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "ಈಗ:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "ಬದಲಿಸಿ / ಬದಲಾವಣೆ :"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ ಇಲ್ಲಿಂದ->"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: "
-"'/events/search/'."
-msgstr ""
-"ಇದು ಡೊಮೈನ್ ಹೊರತುಪಡಿಸಿದ "
-"ಸಂಪೂರ್ಣ ಪಥವಾಗಿರಬೇಕು "
-"ಉದಾ.'/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ ಇಲ್ಲಿಗೆ->"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"ಇದು ಮೇಲಿನಂತೆ ಸಂಪೂರ್ಣ "
-"ಪಥವಾದರೂ ಆಗಿರಬಹುದು ಅಥವಾ "
-"'http://'ದಿಂದ ಆರಂಭವಾಗುವ ಸಂಪೂರ್ಣ URL "
-"ಆಗಿರಬಹುದು."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ(ಗಳು)"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"ಉದಾ:'/about/contact/'. ಮೊದಲು ಮತ್ತು "
-"ಕೊನೆಯಲ್ಲಿ ಓರೆಗೆರೆ (/) ಇರುವಂತೆ "
-"ನೋಡಿಕೊಳ್ಳಿ."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "ಶೀರ್ಷಿಕೆ"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "ಒಳವಿಷಯ"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr ""
-"ಟಿಪ್ಪಣಿಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "ಟೆಂಪ್ಲೇಟಿನ ಹೆಸರು"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"ಉದಾ:'flatpages/contact_page.html'. ಇದನ್ನು "
-"ಕೊಡದಿದ್ದರೆ ಗಣಕವ್ಯವಸ್ಥೆಯು  "
-"'flatpages/default.html' ಅನ್ನು ಬಳಸುವದು."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "ನೋಂದಾವಣೆ ಅಗತ್ಯವಿದೆ."
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"ಇದರಲ್ಲಿ ಗುರುತು  ಮಾಡಿದರೆ,  "
-"ಒಳಬಂದ (ಲಾಗಿನ್ ಆದ) ಬಳಕೆದಾರರು "
-"ಮಾತ್ರ ಪುಟವನ್ನು ನೋಡಬಹುದು."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "ಚಪ್ಪಟೆ ಪುಟ"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "ಚಪ್ಪಟೆ  ಪುಟಗಳು"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "ಹೊರಬರಲಾಗಿದೆ"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
-msgstr "ಹೆಸರು"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "ಸಾಂಕೇತಿಕ ಹೆಸರು"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "ಅನುಮತಿ"
-
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
-msgstr "ಅನುಮತಿಗಳು"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "ಗುಂಪು"
-
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
-msgstr "ಗುಂಪುಗಳು"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "ಬಳಕೆದಾರ-ಹೆಸರು"
-
-#: contrib/auth/models.py:90
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"೩೦ ಅಥವಾ ಕಡಿಮೆ ಅಕ್ಷರಗಳು "
-"ಅವಶ್ಯ. ( ಅಕ್ಷರಗಳು , ಅಂಕೆಗಳು "
-"ಮತ್ತು ಅಂಡರ್ಸ್ಕೋರ್(_) ಗಳು "
-"ಮಾತ್ರ)"
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "ಮೊದಲ ಹೆಸರು"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "ಕೊನೆಯ ಹೆಸರು"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "ವಿ-ಅಂಚೆ ವಿಳಾಸ"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "ಪ್ರವೇಶಪದ"
-
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr " '[algo]$[salt]$[hexdigest]' ಬಳಸಿ"
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "ಸಿಬ್ಬಂದಿ ಸ್ಥಿತಿ"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"ಬಲಕೆದಾರರು ಈ ಆಡಳಿತ ತಾಣಕ್ಕೆ  "
-"ಪ್ರವೇಶಪಡೆಯಬಹುದೇ ಎಂಬುದನ್ನು "
-"ತಿಳಿಸುತ್ತದೆ."
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "ಸಕ್ರಿಯ"
-
-#: contrib/auth/models.py:96
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"ಈ ಬಳಕೆದಾರರು ಜಾಂಗೋ "
-"ಆಡಳಿತಪುಟಕ್ಕೆ "
-"ಪ್ರವೇಶಪಡೆಯಬಹುದೇ ಎಂಬುದನ್ನು "
-"ತಿಳಿಸುತ್ತದೆ. ಖಾತೆಗಳನ್ನು "
-"ಕಿತ್ತುಹಾಕುವ ಬದಲು ಇದನ್ನು "
-"ಆಯ್ಕೆಯನ್ನು ತೆಗೆದುಹಾಕಿರಿ."
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "ಮಹಾಬಳಕೆದಾರನ ಸ್ಧಿತಿ"
-
-#: contrib/auth/models.py:97
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"ಈ ಸದಸ್ಯರು ಸುವ್ಯಕ್ತವಾಗಿ  "
-"ನೀಡದಿದ್ದರೂ ಎಲ್ಲಾ "
-"ಅನುಮತಿಗಳನ್ನು ಪಡೆದಿರುವರು "
-"ಎಂಬುದನ್ನು ಸೂಚಿಸುತ್ತದೆ."
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "ಕಡೇ ಸಾರಿ ಒಳಬಂದದ್ದು"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "ಸೇರಿದ ದಿನಾಂಕ"
-
-#: contrib/auth/models.py:101
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"ವೈಯಕ್ತಿಕವಾಗಿ ನೀಡಲಾಗಿರುವ "
-"ಅನುಮತಿಗಳ ಜೊತೆಗೆ, ಈ ಸದಸ್ಯರು "
-"ತಮ್ಮ ಗುಂಪಿಗೆ ನೀಡಲಾಗಿರುವ "
-"ಅನುಮತಿಗಳನ್ನೂ ಕೂಡ "
-"ಪಡೆಯುತ್ತಾರೆ."
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "ಬಳಕೆದಾರ ಅನುಮತಿಗಳು"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "ಬಳಕೆದಾರ"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "ಬಳಕೆದಾರರು"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "ವೈಯುಕ್ತಿಕ ಮಾಹಿತಿ"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "ಅನುಮತಿಗಳು"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "ಮಹತ್ವದ ದಿನಾಂಕಗಳು"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "ಗುಂಪುಗಳು"
-
-#: contrib/auth/models.py:256
-msgid "message"
-msgstr "ಸಂದೇಶ"
-
-#: contrib/auth/forms.py:52
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"ನಿಮ್ಮ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ "
-"ಕುಕೀಗಳು "
-"ಸಕ್ರಿಯಗೊಳಿಸಲ್ಪಟ್ಟಂತಿಲ್ಲ. "
-"ಒಳಬರಲು ಕುಕೀಗಳು ಅಗತ್ಯ. "
-
-#: contrib/auth/forms.py:61
-msgid "This account is inactive."
-msgstr "ಈ ಖಾತೆಯು ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ"
-
-#: contrib/contenttypes/models.py:20
-msgid "python model class name"
-msgstr ""
-"ಪೈಥಾನ್ ಮಾಡೆಲ್  ಕ್ಲಾಸಿನ ಹೆಸರು"
-
-#: contrib/contenttypes/models.py:23
-msgid "content type"
-msgstr "ಒಳವಿಷಯದ ಬಗೆ"
-
-#: contrib/contenttypes/models.py:24
-msgid "content types"
-msgstr "ಒಳವಿಷಯದ ಬಗೆಗಳು"
-
-#: contrib/sessions/models.py:51
-msgid "session key"
-msgstr "ಅಧಿವೇಶನದ ಕೀಲಿಕೈ"
-
-#: contrib/sessions/models.py:52
-msgid "session data"
-msgstr "ಅಧಿವೇಶನದ ದತ್ತಾಂಶ"
-
-#: contrib/sessions/models.py:53
-msgid "expire date"
-msgstr "ಅವಧಿಮೀರುವ ದಿನಾಂಕ"
-
-#: contrib/sessions/models.py:57
-msgid "session"
-msgstr "ಅಧಿವೇಶನ"
-
-#: contrib/sessions/models.py:58
-msgid "sessions"
-msgstr "ಅಧಿವೇಶನಗಳು"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "ಡೊಮೈನ್  ಹೆಸರು"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "ತೋರಿಸುವ ಹೆಸರು"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "ತಾಣ"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "ತಾಣಗಳು"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ಸೋಮವಾರ"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "ಮಂಗಳವಾರ"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ಬುಧವಾರ"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ಗುರುವಾರ"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "ಶುಕ್ರವಾರ"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "ಶನಿವಾರ"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ರವಿವಾರ"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "ಜನವರಿ"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "ಫೆಬ್ರುವರಿ"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "ಮಾರ್ಚ್"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "ಎಪ್ರಿಲ್"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "ಮೇ"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "ಜೂನ್"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "ಜುಲೈ"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "ಆಗಸ್ಟ್"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "ಸೆಪ್ಟೆಂಬರ್"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "ಅಕ್ಟೋಬರ್"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "ನವೆಂಬರ್"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "ಡಿಸೆಂಬರ್"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "ಜನವರಿ"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "ಫೆಬ್ರವರಿ"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "ಮಾರ್ಚ್"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "ಏಪ್ರಿಲ್"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "ಮೇ"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "ಜೂನ್"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "ಜುಲೈ"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "ಆಗಸ್ಟ್"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "ಸೆಪ್ಟೆಂಬರ್"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "ಅಕ್ಟೋಬರ್"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "ನವೆಂಬರ್"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "ಡಿಸೆಂಬರ್"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "ಜನವರಿ."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "ಫೆಬ್ರವರಿ."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "ಆಗಸ್ಟ್."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "ಸೆಪ್ಟೆಂಬರ್."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "ಅಕ್ಟೋಬರ್."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "ನವೆಂಬರ್."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "ಡಿಸೆಂಬರ್."
-
-#: utils/timesince.py:12
-msgid "year"
-msgstr "ವರ್ಷ"
-
-#: utils/timesince.py:13
-msgid "month"
-msgstr "ತಿಂಗಳು"
-
-#: utils/timesince.py:14
-msgid "week"
-msgstr "ವಾರ"
-
-#: utils/timesince.py:15
-msgid "day"
-msgstr "ದಿನ"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgstr "ಘಂಟೆ"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgstr "ನಿಮಿಷ"
-
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
-
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr "F j"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "ಅರೇಬಿಕ್"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "ಬೆಂಗಾಲಿ"
-
-#: conf/global_settings.py:41
-msgid "Czech"
-msgstr "ಝೆಕ್"
-
-#: conf/global_settings.py:42
-msgid "Welsh"
-msgstr "ವೆಲ್ಷ್"
-
-#: conf/global_settings.py:43
-msgid "Danish"
-msgstr "ಡ್ಯಾನಿಷ್"
-
-#: conf/global_settings.py:44
-msgid "German"
-msgstr "ಜರ್ಮನ್"
-
-#: conf/global_settings.py:45
-msgid "Greek"
-msgstr "ಗ್ರೀಕ್"
-
-#: conf/global_settings.py:46
-msgid "English"
-msgstr "ಇಂಗ್ಲಿಷ್"
-
-#: conf/global_settings.py:47
-msgid "Spanish"
-msgstr "ಸ್ಪ್ಯಾನಿಷ್"
-
-#: conf/global_settings.py:48
-msgid "Argentinean Spanish"
-msgstr "ಅರ್ಜೆಂಟೈನಾದ ಸ್ಪ್ಯಾನಿಷ್"
-
-#: conf/global_settings.py:49
-msgid "Finnish"
-msgstr "ಫಿನ್ನಿಶ್"
-
-#: conf/global_settings.py:50
-msgid "French"
-msgstr "ಫ್ರೆಂಚ್"
-
-#: conf/global_settings.py:51
-msgid "Galician"
-msgstr "ಗ್ಯಾಲಿಶಿಯನ್"
-
-#: conf/global_settings.py:52
-msgid "Hungarian"
-msgstr "ಹಂಗೇರಿಯನ್"
-
-#: conf/global_settings.py:53
-msgid "Hebrew"
-msgstr "ಹೀಬ್ರೂ"
-
-#: conf/global_settings.py:54
-msgid "Icelandic"
-msgstr "ಐಸ್‍ಲ್ಯಾಂಡಿಕ್"
-
-#: conf/global_settings.py:55
-msgid "Italian"
-msgstr "ಇಟಾಲಿಯನ್"
-
-#: conf/global_settings.py:56
-msgid "Japanese"
-msgstr "ಜಪಾನೀಸ್"
-
-#: conf/global_settings.py:57
-msgid "Dutch"
-msgstr "ಡಚ್"
-
-#: conf/global_settings.py:58
-msgid "Norwegian"
-msgstr "ನಾರ್ವೇಜಿಯನ್"
-
-#: conf/global_settings.py:59
-msgid "Brazilian"
-msgstr "ಬ್ರಾಝಿಲಿಯನ್"
-
-#: conf/global_settings.py:60
-msgid "Romanian"
-msgstr "ರೋಮೇನಿಯನ್"
-
-#: conf/global_settings.py:61
-msgid "Russian"
-msgstr "ರಶಿಯನ್"
-
-#: conf/global_settings.py:62
-msgid "Slovak"
-msgstr "ಸ್ಲೋವಾಕ್"
-
-#: conf/global_settings.py:63
-msgid "Slovenian"
-msgstr "ಸ್ಲೋವೇನಿಯನ್"
-
-#: conf/global_settings.py:64
-msgid "Serbian"
-msgstr "ಸೆರ್ಬಿಯನ್"
-
-#: conf/global_settings.py:65
-msgid "Swedish"
-msgstr "ಸ್ವೀಡಿಷ್"
-
-#: conf/global_settings.py:66
-msgid "Tamil"
-msgstr "ತಮಿಳು"
-
-#: conf/global_settings.py:67
-msgid "Turkish"
-msgstr "ಟರ್ಕಿಶ್"
-
-#: conf/global_settings.py:68
-msgid "Ukrainian"
-msgstr "ಯುಕ್ರೇನಿಯನ್"
-
-#: conf/global_settings.py:69
-msgid "Simplified Chinese"
-msgstr "ಸರಳೀಕೃತ ಚೈನೀಸ್"
-
-#: conf/global_settings.py:70
-msgid "Traditional Chinese"
-msgstr "ಸಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್ "
-
-#: core/validators.py:63
-msgid "This value must contain only letters, numbers and underscores."
-msgstr ""
-"ಈ ಬೆಲೆಯು ಕೇವಲ ಅಕ್ಷರಗಳು , "
-"ಅಂಕೆಗಳು ಮತ್ತು ಅಂಡರ್ಸ್ಕೋರ್(_) "
-"ಗಳನ್ನು ಒಳಗೊಂಡಿರಬೇಕು"
-
-#: core/validators.py:67
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"ಈ ಬೆಲೆಯು ಅಕ್ಷರಗಳು , ಅಂಕೆಗಳು , "
-"ಅಡಿಗೆರೆ ಅರ್ಥಾತ್ "
-"ಅಂಡರ್ಸ್ಕೋರ್(_) ,ಅಡ್ಡಗೆರೆ "
-"ಅರ್ಥಾತ್ ಡ್ಯಾಷ್(-) ಮತ್ತು "
-"ಓರೆಗೆರೆ ಅರ್ಥಾತ್ ಸ್ಲ್ಯಾಶ್ (/) "
-"ಗಳನ್ನು ಒಳಗೊಳ್ಳಬಹುದು."
-
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"ಈ ಬೆಲೆಯು ಕೇವಲ ಅಕ್ಷರಗಳು , "
-"ಅಂಕೆಗಳು ಮತ್ತು ಅಂಡರ್ಸ್ಕೋರ್(_) "
-"ಮತ್ತು ಹೈಫನ್(-)ಗಳನ್ನು "
-"ಒಳಗೊಂಡಿರಬೇಕು"
-
-#: core/validators.py:75
-msgid "Uppercase letters are not allowed here."
-msgstr ""
-"ಇಂಗ್ಲೀಷ್ ದೊಡ್ಡಕ್ಷರಗಳನ್ನು "
-"ಇಲ್ಲಿ ಬಳಸುವಂತಿಲ್ಲ"
-
-#: core/validators.py:79
-msgid "Lowercase letters are not allowed here."
-msgstr ""
-"ಇಂಗ್ಲೀಷ್ ಸಣ್ಣಕ್ಷರಗಳನ್ನು "
-"ಇಲ್ಲಿ ಬಳಸುವಂತಿಲ್ಲ"
-
-#: core/validators.py:86
-msgid "Enter only digits separated by commas."
-msgstr ""
-"ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ  ಬೇರ್ಪಟ್ಟ  "
-"ಅಂಕೆಗಳನ್ನು ಮಾತ್ರ ಬರೆಯಿರಿ."
-
-#: core/validators.py:98
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr ""
-"ಇ-ಅಂಚೆಗಳ ವಿಳಾಸಗಳನ್ನು, "
-"ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ "
-"ಬೇರ್ಪಟ್ಟಿರುವಂತೆ ಸೂಚಿಸಿರಿ."
-
-#: core/validators.py:102
-msgid "Please enter a valid IP address."
-msgstr "ಸರಿಯಾದ  IP ವಿಳಾಸ ಬರೆಯಿರಿ"
-
-#: core/validators.py:106
-msgid "Empty values are not allowed here."
-msgstr "ಇಲ್ಲಿ ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ"
-
-#: core/validators.py:110
-msgid "Non-numeric characters aren't allowed here."
-msgstr ""
-"ಅಂಕೆಗಳಲ್ಲದೆ ಯಾವದೇ "
-"ಅಕ್ಷರಗಳನ್ನು ಇಲ್ಲಿ "
-"ಬಳಸುವಂತಿಲ್ಲ"
-
-#: core/validators.py:114
-msgid "This value can't be comprised solely of digits."
-msgstr ""
-"ಈ ಬೆಲೆಯಲ್ಲಿ ಅಂಕೆಗಳಷ್ಟೇ  "
-"ಇರುವಂತಿಲ್ಲ"
-
-#: core/validators.py:119
-msgid "Enter a whole number."
-msgstr "ಪೂರ್ಣಾಂಕವೊಂದನ್ನು ಬರೆಯಿರಿ"
-
-#: core/validators.py:123
-msgid "Only alphabetical characters are allowed here."
-msgstr ""
-"ವರ್ಣಮಾಲೆಯ ಅಕ್ಷರಗಳನ್ನು "
-"ಮಾತ್ರ ಇಲ್ಲಿ ಬಳಸಬಹುದು."
-
-#: core/validators.py:138
-msgid "Year must be 1900 or later."
-msgstr ""
-"ವರ್ಷವು ೧೯೦೦ ಅಥವಾ "
-"ನಂತರದ್ದಿರಬೇಕು."
-
-#: core/validators.py:142
-#, python-format
-msgid "Invalid date: %s."
-msgstr "ತಪ್ಪು ದಿನಾಂಕ: %s."
-
-#: core/validators.py:146 db/models/fields/__init__.py:415
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr ""
-"ಸರಿಯಾದ ದಿನಾಂಕವನ್ನು "
-"ವವವವ-ತಿತಿ-ದಿದಿ ರೀತಿಗೆ "
-"ಹೊಂದುವಂತೆ ಸೂಚಿಸಿರಿ."
-
-#: core/validators.py:151
-msgid "Enter a valid time in HH:MM format."
-msgstr ""
-"HH:MM ರೂಪದಲ್ಲಿ  ಸರಿಯಾದ ಸಮಯವನ್ನು "
-"ಬರೆಯಿರಿ"
-
-#: core/validators.py:155 db/models/fields/__init__.py:477
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-"ಸರಿಯಾದ ದಿನಾಂಕ/ವೇಳೆಯನ್ನು "
-"ವವವವ-ತಿತಿ-ದಿದಿ ಗಗ:ನಿನಿ "
-"ರೀತಿಗೆ ಹೊಂದುವಂತೆ ಸೂಚಿಸಿರಿ."
-
-#: core/validators.py:160
-msgid "Enter a valid e-mail address."
-msgstr ""
-"ಕ್ರಮಬದ್ಧ ವಿ-ವಿಳಾಸವೊಂದನ್ನು "
-"ಇಲ್ಲಿ ಬರೆಯಿರಿ"
-
-#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"ಯಾವದೇ ಕಡತವನ್ನೂ "
-"ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ.ನಮೂನೆಯ ಮೇಲಿನ "
-"ಸಂಕೇತೀಕರಣ ಬಗೆಯನ್ನು "
-"ಪರೀಕ್ಷಿಸಿ."
-
-#: core/validators.py:176
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"ಸರಿಯಾದ ಚಿತ್ರವನ್ನು ಏರಿಸಿ. "
-"ನೀವು ಏರಿಸಿದ ಕಡತವು ಚಿತ್ರವಲ್ಲ "
-"ಅಥವಾ ಅದು ಕೆಟ್ಟು ಹೋಗಿರುವ "
-"ಚಿತ್ರ. "
-
-#: core/validators.py:183
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr ""
-"%s URL ಸರಿಯಾದ ಚಿತ್ರದೆಡೆಗೆ "
-"ಒಯ್ಯುತ್ತಿಲ್ಲ."
-
-#: core/validators.py:187
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"ದೂರವಾಣಿ ಅಂಕೆಗಳು XXX-XXX-XXXX "
-"ರೀತಿಯಲ್ಲಿರಬೇಕು. \"%s\" "
-"ತಪ್ಪಾಗಿರುತ್ತದೆ."
-
-#: core/validators.py:195
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr ""
-"%s URL ಸರಿಯಾದ ಕ್ವಿಕ್‍ಟೈಮ್ "
-"ದೃಶ್ಯದೆಡೆಗೆ ಒಯ್ಯುತ್ತಿಲ್ಲ."
-
-#: core/validators.py:199
-msgid "A valid URL is required."
-msgstr "ಸರಿಯಾದ URL ಅವಶ್ಯವಿದೆ"
-
-#: core/validators.py:213
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"ಸರಿಯಾದ  HTML ಅವಶ್ಯ. ಇಲ್ಲಿನ "
-"ನಿರ್ದಿಷ್ಟ ತಪ್ಪುಗಳು:\n"
-"%s"
-
-#: core/validators.py:220
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "ತಪ್ಪು XML: %s"
-
-#: core/validators.py:230
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "ತಪ್ಪು URL: %s"
-
-#: core/validators.py:234 core/validators.py:236
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "%s ಈ  URL  ಮುರಿದ ಕೊಂಡಿಯಾಗಿದೆ."
-
-#: core/validators.py:242
-msgid "Enter a valid U.S. state abbreviation."
-msgstr ""
-" ಅಮೇರಿಕೆಯ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನದ "
-"ರಾಜ್ಯದ ಸರಿಯಾದ "
-"ಸಂಕ್ಷಿಪ್ತರೂಪವನ್ನು ಕೊಡಿ."
-
-#: core/validators.py:256
-#, python-format
-#,fuzzy
-msgid "Watch your mouth! The word %s is not allowed here."
-msgstr ""
-"ನಾಲಿಗೆ ಬಿಗಿ ಹಿಡಿಯಿರಿ! %s  "
-"ಶಬ್ದವನ್ನು ಇಲ್ಲಿ "
-"ಬಳಸುವಂತಿಲ್ಲ."
-"ನಾಲಿಗೆ ಬಿಗಿ ಹಿಡಿಯಿರಿ! %s ಈ "
-"ಶಬ್ದಗಳನ್ನು ಇಲ್ಲಿ "
-"ಬಳಸುವಂತಿಲ್ಲ."
-
-#: core/validators.py:263
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr ""
-"ಈ ಅಂಶವು  '%s' ಅಂಶದೊಂದಿಗೆ "
-"ಹೊಂದಿಕೊಳ್ಳಬೇಕು."
-
-#: core/validators.py:282
-msgid "Please enter something for at least one field."
-msgstr ""
-"ಕನಿಷ್ಠ ಒಂದು ಅಂಶದಲ್ಲಿ "
-"ಏನನ್ನಾದರೂ ಬರೆಯಿರಿ."
-
-#: core/validators.py:291 core/validators.py:302
-msgid "Please enter both fields or leave them both empty."
-msgstr ""
-"ಎರಡೂ ಅಂಶಗಳನ್ನು ಭರತಿ ಮಾಡಿರಿ "
-"ಅಥವಾ ಎರಡನ್ನೂ ಖಾಲಿಯಾಗಿಡಿ."
-
-#: core/validators.py:309
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-" %(field)s ಇದು  %(value)s ಆಗಿದ್ದರೆ ಈ "
-"ಅಂಶವನ್ನು ಕೊಡಲೇಬೇಕು"
-
-#: core/validators.py:321
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-" %(field)s ಇದು  %(value)s ಆಗಿಲ್ಲದಿದ್ದರೆ ಈ "
-"ಅಂಶವನ್ನು ಕೊಡಲೇಬೇಕು"
-
-#: core/validators.py:340
-msgid "Duplicate values are not allowed."
-msgstr ""
-"ಪಡಿಯಚ್ಚುಬೆಲೆಗಳಿಗೆ "
-"ಅನುಮತಿಯಿಲ್ಲ"
-
-#: core/validators.py:363
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "ಈ ಬೆಲೆಯು %sದ ಘಾತವಾಗಿರಬೇಕು."
-
-#: core/validators.py:374
-msgid "Please enter a valid decimal number."
-msgstr ""
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
-"ಸಂಖ್ಯೆ ಬರೆಯಿರಿ"
-
-#: core/validators.py:378
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-"Please enter a valid decimal number with at most %s total digits."
-msgstr ""
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
-"ಸಂಖ್ಯೆಯನ್ನು - ಹೆಚ್ಚೆಂದರೆ  "
-"ಒಟ್ಟು %s ಅಂಕೆ ಇರುವಂತೆ - "
-"ಬರೆಯಿರಿ."
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
-"ಸಂಖ್ಯೆಯನ್ನು - ಹೆಚ್ಚೆಂದರೆ  "
-"ಒಟ್ಟು %s ಅಂಕೆಗಳು ಇರುವಂತೆ - "
-"ಬರೆಯಿರಿ."
-
-#: core/validators.py:381
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr ""
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
-"ಸಂಖ್ಯೆಯನ್ನು - ಪೂರ್ಣಾಂಕ ಭಾಗವು "
-"ಹೆಚ್ಚೆಂದರೆ  ಒಟ್ಟು %s ಅಂಕೆ "
-"ಇರುವಂತೆ - ಬರೆಯಿರಿ."
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
-"ಸಂಖ್ಯೆಯನ್ನು - ಪೂರ್ಣಾಂಕ ಭಾಗವು "
-"ಹೆಚ್ಚೆಂದರೆ  ಒಟ್ಟು %s ಅಂಕೆಗಳು "
-"ಇರುವಂತೆ - ಬರೆಯಿರಿ."
-
-#: core/validators.py:384
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr ""
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
-"ಸಂಖ್ಯೆಯನ್ನು - ದಶಮಾಂಶ ಭಾಗವು "
-"ಹೆಚ್ಚೆಂದರೆ  ಒಟ್ಟು %s ಸ್ಥಾನ "
-"ಇರುವಂತೆ - ಬರೆಯಿರಿ."
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ ದಶಮಾನ "
-"ಸಂಖ್ಯೆಯನ್ನು - ದಶಮಾಂಶ ಭಾಗವು "
-"ಹೆಚ್ಚೆಂದರೆ   %s ಸ್ಥಾನಗಳು  "
-"ಇರುವಂತೆ - ಬರೆಯಿರಿ."
-
-#: core/validators.py:394
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-"ನೀವು ಏರಿಸಿದ ಕಡತವು ಕನಿಷ್ಟ %s "
-"ಬೈಟ್‍ಗಳಷ್ಟು ದೊಡ್ಡದಿದೆ ಎಂದು "
-"ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."
-
-#: core/validators.py:395
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-"ನೀವು ಏರಿಸಿದ ಕಡತವು %s "
-"ಬೈಟ್‍ಗಳಿಗಿಂತ ಹೆಚ್ಚಿರದ ಹಾಗೆ "
-"ನೋಡಿಕೊಳ್ಳಿ."
-
-#: core/validators.py:412
-msgid "The format for this field is wrong."
-msgstr "ಈ ಅಂಶದ ಸ್ವರೂಪವು ತಪ್ಪಾಗಿದೆ"
-
-#: core/validators.py:427
-msgid "This field is invalid."
-msgstr "ಈ ಅಂಶವು ತಪ್ಪಾಗಿದೆ"
-
-#: core/validators.py:463
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr ""
-" %s ದಿಂದ ಏನನ್ನೂ "
-"ಹೊರತೆಗೆದುಕೊಳ್ಳಲಾಗಲಿಲ್ಲ."
-
-#: core/validators.py:466
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-" %(url)s ಈ  URL ತಪ್ಪು ಒಳವಿಷಯ-ಬಗೆಯ "
-"ಶಿರೋ‍ಭಾಗ '%(contenttype)s' ಅನ್ನು "
-"ಮರಳಿಸಿತು."
-
-#: core/validators.py:499
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"ದಯವಿಟ್ಟು  %(line)s - ಸಾಲಿನಿಂದ "
-"ಮುಚ್ಚಿರದ %(tag)s ಟ್ಯಾಗ್ ಅನ್ನು "
-"ಮುಚ್ಚಿರಿ . (ಸಾಲು  \"%(start)s\" ಎಂದು "
-"ಆರಂಭವಾಗುತ್ತದೆ.)"
-
-#: core/validators.py:503
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-" %(line)s ಸಾಲಿನಲ್ಲಿ ಆರಂಭವಾಗುವ ಕೆಲ "
-"ಪಠ್ಯಭಾಗವನ್ನು ಆ ಸಂದರ್ಭದಲ್ಲಿ "
-"ಬಳಸಲಾಗದು.(ಸಾಲು  \"%(start)s\" ಎಂದು "
-"ಆರಂಭವಾಗುತ್ತದೆ.)"
-
-#: core/validators.py:508
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-" %(line)sನೆ ಸಾಲಿನಲ್ಲಿರುವ \"%(attr)s\"  "
-"ತಪ್ಪು ಗುಣಧರ್ಮವಾಗಿದೆ . (ಸಾಲು "
-"\"%(start)s\" ಎಂದು ಆರಂಭವಾಗುತ್ತದೆ.)"
-
-#: core/validators.py:513
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-" %(line)s ನೆ ಸಾಲಿನಲ್ಲಿರುವ \"<%(tag)s>\"  "
-"ತಪ್ಪು ಟ್ಯಾಗ್ ಆಗಿದೆ . (ಸಾಲು "
-"\"%(start)s\" ಎಂದು ಆರಂಭವಾಗುತ್ತದೆ.)"
-
-#: core/validators.py:517
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-" %(line)s ನೆ ಸಾಲಿನಲ್ಲಿರುವ  ಟ್ಯಾಗ್ "
-"ಗೆ ಅಗತ್ಯವಾದ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು "
-"ಗುಣಧರ್ಮಗಳು ಕಾಣೆಯಾಗಿವೆ . "
-"(ಸಾಲು \"%(start)s\" ಎಂದು "
-"ಆರಂಭವಾಗುತ್ತದೆ.)"
-
-#: core/validators.py:522
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-" %(line)s ನೆ ಸಾಲಿನಲ್ಲಿರುವ  \"%(attr)s\" ಗೆ "
-"ತಪ್ಪು ಬೆಲೆ ಇದೆ. (ಸಾಲು \"%(start)s\" "
-"ಎಂದು ಆರಂಭವಾಗುತ್ತದೆ.)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr ""
-" %(verbose_name)s ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ "
-"ನಿರ್ಮಿಸಲಾಯಿತು."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr ""
-" %(verbose_name)s ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ "
-"ಮಾರ್ಪಡಿಸಲಾಯಿತು."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr ""
-" %(verbose_name)s ಅನ್ನು "
-"ತೆಗೆದುಹಾಕಲಾಯಿತು"
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"ಕೊಟ್ಟಿರುವ %(field)sಗೆ  ಈ %(type)s  "
-"ಹೊಂದಿರುವ %(object)s ಈಗಾಗಲೇ ಇದೆ."
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-"ಈ %(fieldname)s ಹೊಂದಿರುವ %(optname)s ಈಗಾಗಲೇ "
-"ಇದೆ."
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "ಈ ಅಂಶ ಅಗತ್ಯ."
-
-#: db/models/fields/__init__.py:340
-msgid "This value must be an integer."
-msgstr ""
-"ಈ ಬೆಲೆಯು ಪೂರ್ಣ ಸಂಖ್ಯೆ ಇರಬೇಕು."
-
-#: db/models/fields/__init__.py:372
-msgid "This value must be either True or False."
-msgstr ""
-"ಈ ಬೆಲೆಯು  ಹೌದು ಅಥವಾ ಇಲ್ಲ "
-"ಇರಬೇಕು."
-
-#: db/models/fields/__init__.py:388
-msgid "This field cannot be null."
-msgstr ""
-"ಈ ಅಂಶವನ್ನು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ."
-
-#: db/models/fields/__init__.py:571
-msgid "Enter a valid filename."
-msgstr ""
-"ಸರಿಯಾದ ಕಡತದ ಹೆಸರನ್ನು "
-"ಬರೆಯಿರಿ"
-
-#: db/models/fields/related.py:51
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "ಸರಿಯಾದ %s ಅನ್ನು ಬರೆಯಿರಿ ."
-
-#: db/models/fields/related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr ""
-"ಅನೇಕ ಐಡಿಗಳನ್ನು "
-"ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ "
-"ಬೇರ್ಪಡಿಸಿರಿ"
-
-#: db/models/fields/related.py:620
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚನ್ನು "
-"ಆಯ್ದುಕೊಳ್ಳಲು ಮ್ಯಾಕ್ ಗಣಕದ "
-"ಮೇಲೆ  \"ಕಂಟ್ರೋಲ್\", ಅಥವಾ "
-"\"ಕಮ್ಯಾಂಡ್\" ಅನ್ನು ಒತ್ತಿ "
-"ಹಿಡಿಯಿರಿ."
-
-#: db/models/fields/related.py:664
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr ""
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ %(self)s "
-"ಐಡಿಗಳನ್ನು ಸೂಚಿಸಿರಿ . ಈಗ "
-"ಸೂಚಿಸಿದ          %(value)r   ತಪ್ಪಾಗಿದೆ."
-"ದಯವಿಟ್ಟು ಸರಿಯಾದ %(self)s "
-"ಐಡಿಗಳನ್ನು ಸೂಚಿಸಿರಿ . ಈಗ "
-"ಸೂಚಿಸಿದ          %(value)s ತಪ್ಪಾಗಿವೆ"
-
-#: forms/__init__.py:381
-#, python-format
-#,fuzzy
-msgid "Ensure your text is less than %s character."
-msgstr ""
-"ನಿಮ್ಮ ಗದ್ಯ %s ಅಕ್ಷರಕ್ಕಿಂತ "
-"ಕಡಿಮೆ ಇರುವಂತೆ ಜಾಗ್ರತೆ ವಹಿಸಿ."
-"ನಿಮ್ಮ ಗದ್ಯ %s ಅಕ್ಷರಗಳಿಗಿಂತ "
-"ಕಡಿಮೆ ಇರುವಂತೆ ಜಾಗ್ರತೆ ವಹಿಸಿ."
-
-#: forms/__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr ""
-" ಇಲ್ಲಿ "
-"ಸಾಲುಗಳನ್ನುತುಂಡರಿಸುವಂತಿಲ್ಲ"
-
-#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-"ಸರಿಯಾದ ಆಯ್ಕೆಯನ್ನು "
-"ಆಯ್ದುಕೊಳ್ಳಿರಿ.'%(data)s' %(choices)s "
-"ನಲ್ಲಿಲ್ಲ."
-
-#: forms/__init__.py:663
-msgid "The submitted file is empty."
-msgstr "ಸಲ್ಲಿಸಲಾದ ಕಡತ ಖಾಲಿ ಇದೆ."
-
-#: forms/__init__.py:719
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr ""
-"-೩೨,೭೬೮ ಹಾಗೂ ೩೨,೭೬೭ ರ ನಡುವಿನ "
-"ಪೂರ್ಣ ಸಂಖ್ಯೆ ಕೊಡಿ."
-
-#: forms/__init__.py:729
-msgid "Enter a positive number."
-msgstr "ಧನಾತ್ಮಕ ಸಂಖ್ಯೆ ಕೊಡಿ."
-
-#: forms/__init__.py:739
-msgid "Enter a whole number between 0 and 32,767."
-msgstr ""
-"೦ ಮತ್ತು ೩೨,೭೬೭ ರ ನಡುವಿನ ಒಂದು "
-"ಪೂರ್ಣಾಂಕ ಕೊಡಿ"
-
-#: template/defaultfilters.py:401
-msgid "yes,no,maybe"
-msgstr "ಹೌದು,ಇಲ್ಲ,ಇರಬಹುದು"
-
diff --git a/webapp/django/conf/locale/kn/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/kn/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 60272ca..0000000
--- a/webapp/django/conf/locale/kn/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/kn/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/kn/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 5909436..0000000
--- a/webapp/django/conf/locale/kn/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,116 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-25 15:43+0200\n"
-"PO-Revision-Date: 2007-01-08 20:22+0530\n"
-"Last-Translator: Kannada Localization Team <translation@sampada.info>\n"
-"Language-Team: Kannada <translation@sampada.info>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "ಲಭ್ಯ %s "
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "ಎಲ್ಲವನ್ನೂ  ಆಯ್ದುಕೊಳ್ಳಿ"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "ಸೇರಿಸಿ"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "ತೆಗೆದು ಹಾಕಿ"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s ಆಯ್ದುಕೊಳ್ಳಲಾಗಿದೆ"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr ""
-"ನಿಮ್ಮ ಆಯ್ಕೆ(ಗಳ)ನ್ನು ಆರಿಸಿ "
-"ಮತ್ತು ಕ್ಲಿಕ್ಕಿಸಿ"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "ಎಲ್ಲವನ್ನೂ  ತೆರವುಗೊಳಿಸಿ"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"ಜನವರಿ ಫೆಬ್ರುವರಿ ಮಾರ್ಚ್ "
-"ಎಪ್ರಿಲ್ ಮೇ ಜೂನ್ ಜುಲೈ ಆಗಸ್ಟ್ "
-"ಸೆಪ್ಟೆಂಬರ್ ನವೆಂಬರ್ ಡಿಸೆಂಬರ್"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
-"ರವಿವಾರ ಸೋಮವಾರ ಮಂಗಳವಾರ "
-"ಬುಧವಾರ ಗುರುವಾರ ಶುಕ್ರವಾರ "
-"ಶನಿವಾರ"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "ರ ಸೋ ಮ ಬು ಗು ಶು ಶ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "ಈಗ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "ಗಡಿಯಾರ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "ಸಮಯವೊಂದನ್ನು ಆರಿಸಿ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "ಮಧ್ಯರಾತ್ರಿ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "ಬೆಳಗಿನ ೬ ಗಂಟೆ "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "ಮಧ್ಯಾಹ್ನ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "ರದ್ದುಗೊಳಿಸಿ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "ಈ ದಿನ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "ಪಂಚಾಂಗ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "ನಿನ್ನೆ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "ನಾಳೆ"
diff --git a/webapp/django/conf/locale/ko/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index d200157..0000000
--- a/webapp/django/conf/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ko/LC_MESSAGES/django.po b/webapp/django/conf/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index fee4895..0000000
--- a/webapp/django/conf/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2797 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-04-24 12:33+0900\n"
-"PO-Revision-Date: 2007-04-06 11:04+0900\n"
-"Last-Translator: Sung-Jin Hong <serialx.net@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(field)s 에 입력된 값은 %(type)s 의 %(object)s 에 이미 존재합니다."
-
-#: db/models/manipulators.py:308 contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
-msgid "and"
-msgstr "또한"
-
-#: db/models/fields/__init__.py:42
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(fieldname)s 의 %(optname)s (은)는 이미 존재합니다."
-
-#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274
-#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621
-#: newforms/fields.py:80 newforms/fields.py:376 newforms/fields.py:452
-#: newforms/fields.py:463 newforms/models.py:178 oldforms/__init__.py:357
-msgid "This field is required."
-msgstr "필수 항목입니다."
-
-#: db/models/fields/__init__.py:367
-msgid "This value must be an integer."
-msgstr "정수 값을 사용하세요."
-
-#: db/models/fields/__init__.py:402
-msgid "This value must be either True or False."
-msgstr "True 또는 False 값을 사용하세요."
-
-#: db/models/fields/__init__.py:423
-msgid "This field cannot be null."
-msgstr "이 필드는 null 값은 사용할 수 없습니다. "
-
-#: db/models/fields/__init__.py:457 core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "날짜는 YYYY-MM-DD 형식으로 입력하세요."
-
-#: db/models/fields/__init__.py:526 core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "날짜/시각을 YYYY-MM-DD HH:MM 형식으로 입력하세요."
-
-#: db/models/fields/__init__.py:630
-msgid "Enter a valid filename."
-msgstr "올바른 파일명을 입력하세요."
-
-#: db/models/fields/__init__.py:751
-msgid "This value must be either None, True or False."
-msgstr "None, True 또는 False 값을 사용하세요."
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "올바른  %s (을)를 입력하세요."
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "복수 ID는 콤마로 구분해 주세요."
-
-#: db/models/fields/related.py:644
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"복수 선택 시에는 \"Control\" 키를 누른 상태에서 선택해 주세요.(Mac은 "
-"\"Command\" 키)"
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"올바른 %(self)s ID를 입력해 주세요. %(value)r (은)는 적절치 않습니다."
-msgstr[1] ""
-"올바른 %(self)s ID를 입력해 주세요. %(value)r (은)는 적절치 않습니다."
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "아랍어"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "방글라데시어"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "카탈로니아어"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "체코어"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "웨일즈어"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "덴마크어"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "독일어"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "그리스어"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "영어"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "스페인어"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "아르헨티나_스페인어"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "핀란드어"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "프랑스어"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr "갈리시아어"
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "헝가리어"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr "히브리어"
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "아이슬란드어"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "이탈리아어"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "일본어"
-
-#: conf/global_settings.py:58
-msgid "Korean"
-msgstr "한국어"
-
-#: conf/global_settings.py:59
-msgid "Kannada"
-msgstr "칸나다어"
-
-#: conf/global_settings.py:60
-msgid "Latvian"
-msgstr "라트비아어"
-
-#: conf/global_settings.py:61
-msgid "Macedonian"
-msgstr "마케도니아어"
-
-#: conf/global_settings.py:62
-msgid "Dutch"
-msgstr "네덜란드어"
-
-#: conf/global_settings.py:63
-msgid "Norwegian"
-msgstr "노르웨이어"
-
-#: conf/global_settings.py:64
-msgid "Polish"
-msgstr "폴란드어"
-
-#: conf/global_settings.py:65
-msgid "Portugese"
-msgstr "포르투갈어"
-
-#: conf/global_settings.py:66
-msgid "Brazilian"
-msgstr "브라질어"
-
-#: conf/global_settings.py:67
-msgid "Romanian"
-msgstr "루마니아어"
-
-#: conf/global_settings.py:68
-msgid "Russian"
-msgstr "러시아어"
-
-#: conf/global_settings.py:69
-msgid "Slovak"
-msgstr "슬로바키아어"
-
-#: conf/global_settings.py:70
-msgid "Slovenian"
-msgstr "슬로베니아어"
-
-#: conf/global_settings.py:71
-msgid "Serbian"
-msgstr "세르비아어"
-
-#: conf/global_settings.py:72
-msgid "Swedish"
-msgstr "스웨덴어"
-
-#: conf/global_settings.py:73
-msgid "Tamil"
-msgstr "타밀어"
-
-#: conf/global_settings.py:74
-msgid "Telugu"
-msgstr "텔루구어"
-
-#: conf/global_settings.py:75
-msgid "Turkish"
-msgstr "터키어"
-
-#: conf/global_settings.py:76
-msgid "Ukrainian"
-msgstr "우크라이나어"
-
-#: conf/global_settings.py:77
-msgid "Simplified Chinese"
-msgstr "중국어 간체"
-
-#: conf/global_settings.py:78
-msgid "Traditional Chinese"
-msgstr "중국어 번체"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "문자, 숫자, '_'만 가능합니다."
-
-#: core/validators.py:68
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "문자, 숫자, '_', '-', '/'만 가능합니다."
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "문자, 숫자, '_', '-'만 가능합니다."
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "대문자는 사용할 수 없습니다."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "소문자는 사용할 수 없습니다."
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "콤마로 구분된 숫자만 입력하세요."
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "콤마로 구분된 이메일 주소만 입력하세요."
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "올바른 IP 주소를 입력하세요."
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "반드시 입력하세요."
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "숫자만 사용할 수 있습니다."
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "숫자만 사용할 수는 없습니다."
-
-#: core/validators.py:120 newforms/fields.py:128
-msgid "Enter a whole number."
-msgstr "정수를 입력하세요."
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "문자만 사용할 수 있습니다."
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr "1900년 이후의 연도만 가능"
-
-#: core/validators.py:143
-#, python-format
-msgid "Invalid date: %s"
-msgstr "날짜가 부적절합니다.: %s"
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-msgstr "시각은 HH:MM 형식으로 입력하세요."
-
-#: core/validators.py:162 newforms/fields.py:271
-msgid "Enter a valid e-mail address."
-msgstr "올바른 이메일 주소를 입력하세요."
-
-#: core/validators.py:174 core/validators.py:445 oldforms/__init__.py:672
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "등록된 파일이 없습니다. 인코딩 형식을 확인하세요."
-
-#: core/validators.py:178
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"올바른 이미지를 업로드하세요.업로드하신 파일은 이미지 파일이 아니거나 파일이 "
-"깨져 있습니다."
-
-#: core/validators.py:185
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "해당 URL %s (은)는 올바른 이미지가 아닙니다."
-
-#: core/validators.py:189
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"전화번호는 xxx-xxx-xxxx 형식으로 입력하세요.  \"%s\" (은)는 부적절합니다."
-
-#: core/validators.py:197
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "해당 URL %s (은)는 올바른 QuickTime video가 아닙니다."
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "올바른 URL을 입력하세요."
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"올바른 HTML을 입력하세요. 오류:\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "잘못된 형식의 XML: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "부적절한 URL: %s"
-
-#: core/validators.py:244 core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "해당 URL %s 링크가 깨졌습니다."
-
-#: core/validators.py:252
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "올바른 미국의 주의 약어를 입력하세요."
-
-#: core/validators.py:266
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "비속어/욕설입니다. %s (은)는 사용하실 수 없습니다."
-msgstr[1] "비속어/욕설입니다. %s (은)는 사용하실 수 없습니다."
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "이 필드는 '%s' 필드와 일치해야 합니다."
-
-#: core/validators.py:292
-msgid "Please enter something for at least one field."
-msgstr "하나 이상의 필드에 입력해 주세요."
-
-#: core/validators.py:301 core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "양쪽 필드에 모두 입력하시거나, 모두 빈칸으로 해 주십시오."
-
-#: core/validators.py:320
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "%(field)s (이)가 %(value)s 일 경우, 이 필드에 반드시 입력해 주세요."
-
-#: core/validators.py:333
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-"%(field)s (이)가 %(value)s (이)가 아닐 경우, 이 필드에 반드시 입력해 주세요."
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "중복해서 사용할 수 없습니다."
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "%(lower)s 에서 %(upper)s 사이의 값을 사용해 주세요."
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "%s 이상의 값을 사용해 주세요."
-
-#: core/validators.py:371
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "%s 이하의 값을 사용해 주세요."
-
-#: core/validators.py:407
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "%s 제곱의 값을 사용해 주세요."
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "10진수를 사용해 주세요."
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "전체 %s 자리 이하의 10진수를 입력하세요."
-msgstr[1] "전체 %s 자리 이하의 10진수를 입력하세요."
-
-#: core/validators.py:425
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "정수부분이 %s 자리 이하인 10진수를 입력하세요."
-msgstr[1] "정수부분이 %s 자리 이하인 10진수를 입력하세요."
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "소수부분이 %s 자리 이하인 10진수를 입력하세요."
-msgstr[1] "소수부분이 %s 자리 이하인 10진수를 입력하세요."
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "업로드 파일은 %s bytes 이상입니다."
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "업로드 파일은 %s bytes 이하입니다."
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "이 필드의 형식이 잘못되었습니다."
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "필드가 올바르지 않습니다."
-
-#: core/validators.py:507
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "%s 에서 검색된 내용이 없습니다."
-
-#: core/validators.py:510
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL %(url)s (이)가 부적절한 Content-Type heade '%(contenttype)s' (을)를 반환"
-"했습니다."
-
-#: core/validators.py:543
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"%(line)s 줄의 %(tag)s 태그가 닫히지 않았습니다.(시작줄 : \"%(start)s\")"
-
-#: core/validators.py:547
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s 줄의 내용으로 시작하는 텍스트는 사용할 수 없습니다.(시작줄 : \"%"
-"(start)s\")"
-
-#: core/validators.py:552
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"%(line)s 줄의 \"%(attr)s\" (은)는 부적절한 속성입니다.(시작줄 : \"%(start)s"
-"\")"
-
-#: core/validators.py:557
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"%(line)s 줄의 \"<%(tag)s>\" (은)는 부적절한 태그입니다.(시작줄 : \"%(start)s"
-"\")"
-
-#: core/validators.py:561
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s 줄의 태그는 하나 이상의 필수 속성이 생략되어 있습니다.(시작줄 : \"%"
-"(start)s\")"
-
-#: core/validators.py:566
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s 줄의 \"%(attr)s\" 속성의 값이 부적절합니다.(시작줄 : \"%(start)s\")"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s (이)가 생성되었습니다."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s (이)가 수정되었습니다."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s (이)가 삭제되었습니다."
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "월요일"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "화요일"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "수요일"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "목요일"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "금요일"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "토요일"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "일요일"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "1월"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "2월"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "3월"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "4월"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "5월"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "6월"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "7월"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "8월"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "9월"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "10월"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "11월"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "12월"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "1월"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "2월"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "3월"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "4월"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "5월"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "6월"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "7월"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "8월"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "9월"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "10월"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "11월"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "12월"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "1월"
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "2월"
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "8월"
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "9월"
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "10월"
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "11월"
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "12월"
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "년"
-msgstr[1] "년"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "월"
-msgstr[1] "월"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "주"
-msgstr[1] "주"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "일"
-msgstr[1] "일"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "시간"
-msgstr[1] "시간"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "분"
-msgstr[1] "분"
-
-#: utils/timesince.py:40
-#, python-format
-msgid "%d milliseconds"
-msgstr "%d밀리초"
-
-#: utils/timesince.py:41
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d%(type)s"
-
-#: utils/timesince.py:47
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d%(type)s"
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr "오후"
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr "오전"
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr "오후"
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr "오전"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "자정"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "정오"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr ""
-
-#: newforms/fields.py:103 newforms/fields.py:256
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "%d 자 이하로 입력해 주세요."
-
-#: newforms/fields.py:105 newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "%d 자 이상 입력해 주세요."
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "%s 이하의 값을 입력해 주세요."
-
-#: newforms/fields.py:132
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "%s 이상의 값을 입력해 주세요."
-
-#: newforms/fields.py:165
-msgid "Enter a valid date."
-msgstr "올바른 날짜를 입력하세요."
-
-#: newforms/fields.py:192
-msgid "Enter a valid time."
-msgstr "올바른 시각을 입력하세요."
-
-#: newforms/fields.py:228
-msgid "Enter a valid date/time."
-msgstr "올바른 날짜/시각을 입력하세요."
-
-#: newforms/fields.py:242
-msgid "Enter a valid value."
-msgstr "올바른 값을 입력하세요."
-
-#: newforms/fields.py:289 newforms/fields.py:311
-msgid "Enter a valid URL."
-msgstr "올바른 URL을 입력하세요."
-
-#: newforms/fields.py:313
-msgid "This URL appears to be a broken link."
-msgstr "해당 URL의 링크가 잘못 되어 있습니다."
-
-#: newforms/fields.py:364 newforms/models.py:165
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "올바르게 선택해 주세요. 선택하신 것이 선택가능항목에 없습니다."
-
-#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182
-msgid "Enter a list of values."
-msgstr "리스트를 입력하세요."
-
-#: newforms/fields.py:389 newforms/models.py:188
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "올바르게 선택해 주세요. %s (이)가 선택가능항목에 없습니다."
-
-#: newforms/widgets.py:180 contrib/admin/filterspecs.py:150
-#: oldforms/__init__.py:577
-msgid "Unknown"
-msgstr "알 수 없습니다."
-
-#: newforms/widgets.py:180 contrib/admin/filterspecs.py:143
-#: oldforms/__init__.py:577
-msgid "Yes"
-msgstr "예"
-
-#: newforms/widgets.py:180 contrib/admin/filterspecs.py:143
-#: oldforms/__init__.py:577
-msgid "No"
-msgstr "아니오"
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "python 모델 클래스 명"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "콘텐츠 타입"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "콘텐츠 타입(들)"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "번째"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr "번째"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr "번째"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "번째"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "(value).1f"
-msgstr[1] "(value).1f"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f"
-msgstr[1] "%(value).1f"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f"
-msgstr[1] "%(value).1f"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "1"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "2"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "3"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "4"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "5"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "6"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "7"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "8"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "9"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "로그 아웃"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:58
-msgid "name"
-msgstr "이름"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "코드명"
-
-#: contrib/auth/models.py:43
-msgid "permission"
-msgstr "허가"
-
-#: contrib/auth/models.py:44 contrib/auth/models.py:59
-msgid "permissions"
-msgstr "허가"
-
-#: contrib/auth/models.py:62
-msgid "group"
-msgstr "그룹"
-
-#: contrib/auth/models.py:63 contrib/auth/models.py:103
-msgid "groups"
-msgstr "그룹"
-
-#: contrib/auth/models.py:93
-msgid "username"
-msgstr "사용자명"
-
-#: contrib/auth/models.py:93
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "필수항목입니다. 30자 이내로 입력하세요.(알파벳, 숫자, '_' 만 가능)"
-
-#: contrib/auth/models.py:94
-msgid "first name"
-msgstr "이름"
-
-#: contrib/auth/models.py:95
-msgid "last name"
-msgstr "성"
-
-#: contrib/auth/models.py:96
-msgid "e-mail address"
-msgstr "이메일 주소"
-
-#: contrib/auth/models.py:97
-msgid "password"
-msgstr "비밀번호"
-
-#: contrib/auth/models.py:97
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"'[algo]$[salt]$[hexdigest]' 또는 <a href=\"password/\">비밀번호 변경</a>"
-
-#: contrib/auth/models.py:98
-msgid "staff status"
-msgstr "스태프 권한"
-
-#: contrib/auth/models.py:98
-msgid "Designates whether the user can log into this admin site."
-msgstr "사용자가 관리사이트에 로그인이 가능한지를 나타냅니다."
-
-#: contrib/auth/models.py:99
-msgid "active"
-msgstr "활성"
-
-#: contrib/auth/models.py:99
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr "사용자가 'Django 관리'에 로그인이 가능한지를 나타냅니다."
-
-#: contrib/auth/models.py:100
-msgid "superuser status"
-msgstr "최상위 사용자 권한"
-
-#: contrib/auth/models.py:100
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "해당 사용자에게 모든 권한을 허가합니다."
-
-#: contrib/auth/models.py:101
-msgid "last login"
-msgstr "마지막 로그인"
-
-#: contrib/auth/models.py:102
-msgid "date joined"
-msgstr "등록일"
-
-#: contrib/auth/models.py:104
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "해당 사용자에게 속해있는 그룹의 모든 권한을 허가합니다."
-
-#: contrib/auth/models.py:105
-msgid "user permissions"
-msgstr "사용자 권한"
-
-#: contrib/auth/models.py:109
-msgid "user"
-msgstr "사용자"
-
-#: contrib/auth/models.py:110
-msgid "users"
-msgstr "사용자(들)"
-
-#: contrib/auth/models.py:116
-msgid "Personal info"
-msgstr "개인정보"
-
-#: contrib/auth/models.py:117
-msgid "Permissions"
-msgstr "권한"
-
-#: contrib/auth/models.py:118
-msgid "Important dates"
-msgstr "중요한 일정"
-
-#: contrib/auth/models.py:119
-msgid "Groups"
-msgstr "그룹"
-
-#: contrib/auth/models.py:263
-msgid "message"
-msgstr "메시지"
-
-#: contrib/auth/models.py:276
-#, fuzzy
-msgid "AnonymousUser"
-msgstr "익명사용자"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "비밀번호가 일치하지 않습니다."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "해당 사용자명은 이미 존재합니다."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"사용하시는 브라우저가 쿠키를 허용하지 않습니다.로그인하기 위해서는 쿠키 사용"
-"이 필요합니다."
-
-#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "사용자명과 비밀번호를 입력하세요.(대, 소문자 구별)"
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "이 계정은 유효하지 않습니다."
-
-#: contrib/auth/forms.py:85
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"이메일주소와 일치하는 사용자가 없습니다.이 이메일주소로 등록하셨습니까?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "새로운 비밀번호가 일치하지 않습니다."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "기존 비밀번호를 잘못 입력하셨습니다. 다시 입력해 주세요."
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "에서 재전송"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "도메인명을 제외한 절대경로로 입력하세요. 예: '/events/search/'"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "(으)로 재전송"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "절대경로와 URL('http://' 포함) 모두 가능합니다."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "재전송"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "재전송"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "오브젝트 ID"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "최근 정보"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "코멘트"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "rating #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "rating #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "rating #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "rating #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "rating #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "rating #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "rating #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "rating #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "올바른 레이팅입니다."
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "날짜/시간 확인"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "공개합니다."
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP 주소"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "삭제합니다."
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"코멘트가 부적절한 경우 체크하세요. \"코멘트가 삭제되었습니다.\" 메시지가 표시"
-"됩니다."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "코멘트(들)"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "콘텐츠 오브젝트"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s (이)가 %(date)s 등록\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "사용자 이름"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "IP 주소"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "스태프 승인"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "프리 코멘트"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "프리 코멘트(들)"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "스코어"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "스코어 날짜"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "카르마 스코어"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "카르마 스코어"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(user)s (이)가 %(score)d 점 부여했습니다."
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"%(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "플래그 날짜"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "사용자 플래그"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "사용자 플래그"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "%r (으)로 플래그"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "삭제일"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr ""
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr ""
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr ""
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "미등록 사용자는 투표할 수 없습니다."
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "코멘트 ID가 부적절합니다."
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "자신이 직접 투표할 수 없습니다."
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "다른 레이팅을 입력했을 경우, 이 레이팅은 필히 입력하셔야 합니다."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"이 코멘트를 작성한 사용자의 코멘트 포스팅은 %(count)s 번 이하입니다.:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"이 코멘트를 작성한 사용자의 코멘트 포스팅은 %(count)s 번 이하입니다.:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"이 코멘트는 알수 없는 사용자가 작성했습니다.:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "POST만 가능합니다."
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "하나 이상의 필수항목이 누락되었습니다."
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "해당 코멘트가 누군가에 의해 변경되었습니다."
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"'target' 파라미터가 코멘트 폼에 적합하지 않습니다.오브젝트 ID가 부적절합니다."
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "해당 코멘트 폼은 '미리보기'와 'post' 기능을 제공하지 않습니다."
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "이름:"
-
-#: contrib/comments/templates/comments/freeform.html:5
-#: contrib/comments/templates/comments/form.html:28
-msgid "Comment:"
-msgstr "코멘트:"
-
-#: contrib/comments/templates/comments/freeform.html:10
-#: contrib/comments/templates/comments/form.html:35
-msgid "Preview comment"
-msgstr "코멘트 미리보기"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "사용자명"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "로그아웃"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "비밀번호"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "비밀번호를 잊으셨습니까?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "레이팅"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "필수항목"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "옵션"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "사진 등록"
-
-#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315
-msgid "URL"
-msgstr "URL"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "앞, 뒤에 슬래시(/)를 넣으세요. 예:'/about/contact/' "
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "제목"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "내용"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "사용 가능한 코멘트"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "템플릿명"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"예: 'flatpages/contact_page.html' 를 사용할 수 없는 경우 시스템이 'flatpages/"
-"default.html' (을)를 사용합니다."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "등록하세요."
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "체크할 경우, 로그인 사용자만 해당 페이지를 볼 수 있습니다."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "플랫 페이지"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "플랫 페이지(들)"
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "세션 키"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "세션 날짜"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "유효날짜"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "세션"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "세션"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "도메인 명"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "표시명"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "사이트"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "사이트(들)"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>%s(으)로:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "모두"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "언제나"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "오늘"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "지난 7일"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "이번 달"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "이번 해"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "액션 타임"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "오브젝트 아이디"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "오브젝트 표현"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "액션 플래그"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "메시지 변경"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "로그 엔트리"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "로그 엔트리"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "언제나"
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "로그인"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "로그인 세션이 끊겼습니다. 다시 로그인 하세요."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"사용하시는 브라우저가 쿠키 사용을 허가하고 있지 않습니다.쿠키 사용을 체크하시"
-"고 다시 시도해 주세요."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "사용자명에는 '@'을 사용할 수 없습니다."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "이메일 주소와 사용자명은 다릅니다. '%s'를 사용하세요."
-
-#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" (이)가 추가되었습니다."
-
-#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "계속해서 편집하실 수 있습니다."
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "사용자 추가"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "비밀번호가 변경되었습니다."
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "비밀번호 변경: %s"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "사이트 관리"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "계속해서 다른 %s (을)를 추가하세요."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "%s 추가"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s (이)가 추가되었습니다."
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "%s (이)가 변경되었습니다."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s (이)가 삭제되었습니다."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "변경된 필드가 없습니다."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" (이)가 변경되었습니다."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" (이)가 추가되었습니다. 계속해서 편집하세요."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "%s 변경"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "%(name)s 에 %(fieldname)s (이)가 하나 이상 있는 %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "%(name)s 에 %(fieldname)s (이)가 하나 이상 있는"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" (이)가 삭제되었습니다."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "확실합니까?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "변경 히스토리: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "%s 선택"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "변경할 %s 선택"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "데이터베이스 오류"
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "태그:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "필터:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "뷰:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "어플리케이션 %r (이)가 없습니다."
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "모델 %(name)r (이)가 어플리케이션 %(label)r 에 없습니다."
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "`%(label)s.%(type)s` 관련 오브젝트"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "모델:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "`%(label)s.%(name)s` 관련 오브젝트(들)"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "모든 %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "%s 의 수"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s 오브젝트의 필드"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "정수"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "boolean(참 또는 거짓)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "문자열(%(maxlength)s 까지)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "정수(콤마로 구분)"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "날짜(시간 제외)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "날짜(시간 포함)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "이메일 주소"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "파일 경로"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "10진수"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "boolean (참, 거짓 또는 none)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "부모(상위) 모델과 연계"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "전화번호"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "텍스트"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "시각"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "미국의 주 (두개의 대문자로)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML 텍스트"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s (은)는 url 패턴의 오브젝트가 아닙니다."
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "현재:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "변경:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "날짜:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "시각:"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "문서"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "비밀번호 변경"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "홈"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "히스토리"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "날짜/시간"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "사용자"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "액션"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "년/월/일 시:분:초"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"오브젝트에 변경사항이 없습니다.이 admin 사이트를 통해 추가된 사항이 아닙니다."
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s 추가"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s (으)로"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "서버 오류"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "서버 오류 (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "서버 오류 <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"오류가 발생했습니다. 사이트 관리자에게 이메일로 에러를 보고 했습니다.조속히 "
-"수정하도록 하겠습니다. 고맙습니다."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"데이터베이스 설정에 문제가 발생했습니다. 해당 데이터베이스 테이블이 생성되었"
-"는지,해당 유저가 데이터베이스를 읽어 들일 수 있는지 확인하세요."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "실행"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1건"
-msgstr[1] "%(counter)s 건"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "모두 %(full_result_count)s 건"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "모두 표시"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django 사이트 관리"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 관리"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "필터"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "해당 페이지가 없습니다."
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "죄송합니다, 요청하신 페이지를 찾을 수 없습니다."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "%(name)s 어플리케이션으로 이용 가능한 모델"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "추가"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "변경"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "수정할 권한이 없습니다."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "최근 액션"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "나의 액션"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "이용할 수 없습니다."
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "사이트에서 보기"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "아래의 오류를 수정해 주세요."
-msgstr[1] "아래의 오류들을 수정해 주세요."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "순서"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "순서:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "환영합니다,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "삭제"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\" (을)를 삭제하면서관련 오브젝트를 제거"
-"하고자 했으나, 지금 사용하시는 계정은 다음 타입의 오브젝트를 제거할 권한이 없"
-"습니다. :"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"정말로 %(object_name)s \"%(escaped_object)s\" (을)를 삭제하시겠습니까?다음의 "
-"관련 아이템들이 모두 삭제됩니다. :"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "네, 확실합니다."
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "새로 저장"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "저장 및 다른 이름으로 추가"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "저장 및 편집 계속"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "저장"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> 새로운 비밀번호를 입력하세요."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "비밀번호"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "비밀번호 (확인)"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "확인을 위해 위와 동일한 비밀번호를 입력하세요. "
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"사용자명와 비밀번호를 입력하세요.더 많은 사용자 옵션을 사용하실 수 있습니다."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "사용자명"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "비밀번호 변경"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "비밀번호를 변경하였습니다."
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "비밀번호가 변경되었습니다."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "비밀번호 초기화"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"비밀번호를 잊으셨나요? 아래에 비밀번호를 입력하시면비밀전호를 초기화 한 후, "
-"새로운 비밀번호를 보내드리겠습니다."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "이메일 주소:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "비밀번호 초기화"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "사이트를 이용해 주셔서 고맙습니다."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "다시 로그인하기"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "비밀번호가 초기화 되었습니다."
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr "새로운 비밀번호를 등록하신 이메일로 보내드렸습니다."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"보안상 필요하오니 기존에 사용하시던 비밀번호를 입력해 주세요.새로운 비밀번호"
-"는 정확히 입력했는지 확인할 수 있도록 두 번 입력하시기 바랍니다."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "기존 비밀번호:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "새로운 비밀번호:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "새로운 비밀번호(확인):"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "비밀번호 변경"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "비밀번호가 초기화 되었음을 알려드립니다."
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "%(site_name)s 의 사용자 비밀번호가 초기화 되었습니다."
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "새로운 비밀번호는 %(new_password)s 입니다."
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "해당 페이지에서 언제든지 비밀번호 변경이 가능합니다."
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "사용자명:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "사이트를 이용해 주셔서 고맙습니다."
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 팀"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "북마크릿"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "문서 북마크릿"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\"> 북마크릿을 설치하시려면 링크를 북마크 툴바로 드래그 하거"
-"나,\n"
-"오른쪽 클릭으로 해당 링크를 북마크에 추가하세요.\n"
-"이제 사이트 내의 모든 페이지에서 북마크릿 선택이 가능합니다.\n"
-"북마크릿에 따라 내부 네트워크 상의 컴퓨터로부터 이 사이트를 참조해야하는 경우"
-"가 있습니다.\n"
-"(내부 네트워크가 있는지 불명확한 경우 시스템 관리자에게 확인하시기 바랍니다.)"
-"</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "이 페이지의 문서"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "각 페이지로에서 해당 페이지를 생성한 뷰의 문서로 갑니다."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "오브젝트 아이디 표시"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "단일 오브젝트 페이지의 고유 아이디와 컨텐츠 타입을 표시합니다."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "오브젝트 편집(현재 창)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "단일 오브젝트 페이지의 관리 페이지로 이동"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "오브젝트 편집(새로운 창)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "위와 동일하며, 새로운 창에서 관리 페이지를 엽니다."
-
-#: contrib/localflavor/au/forms.py:18
-#, 
-msgid "Enter a 4 digit post code."
-msgstr "우편번호를 입력하세요. (xxxx)"
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "우편번호를 입력하세요. (xxx xxx)"
-
-#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/fi/forms.py:14
-#: contrib/localflavor/de/forms.py:16
-msgid "Enter a zip code in the format XXXXX."
-msgstr "우편번호를 입력하세요.(xxx xxx)"
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "우변번호를 입력하세요.(xxxxxx 또는 xxx-xxx)"
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:16
-#, 
-msgid "Enter a valid zip code."
-msgstr "올바른 우편번호를 입력하세요."
-
-#: contrib/localflavor/it/forms.py:41
-#, 
-msgid "Enter a valid Social Security number."
-msgstr "올바른 Social Security number를 입력하세요."
-
-#: contrib/localflavor/it/forms.py:68
-#, 
-msgid "Enter a valid VAT number."
-msgstr "올바른 VAT번호를 입력하세요."
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-#, 
-msgid "Enter a valid Finnish social security number."
-msgstr "올바른 핀란드 Social Security number를 입력하세요."
-
-#: contrib/localflavor/br/forms.py:18
-#, 
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "우편번호는 XXXXX-XXX 형식으로 입력하세요."
-
-#: contrib/localflavor/br/forms.py:30
-#, fuzzy
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr ""
-"전화번호는 xx-xxxx-xxxx 형식으로 입력하세요."
-
-#: contrib/localflavor/no/forms.py:15
-#, fuzzy
-msgid "Enter a zip code in the format XXXX."
-msgstr "우편번호를 입력하세요.(xxx xxx)"
-
-#: contrib/localflavor/no/forms.py:36
-#, fuzzy
-msgid "Enter a valid Norwegian social security number."
-msgstr "10진수를 사용해 주세요."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-#, fuzzy
-msgid "Berlin"
-msgstr "브라질어"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-#, fuzzy
-msgid "Hessen"
-msgstr "메시지"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-#, fuzzy
-msgid "Saarland"
-msgstr "카탈로니아어"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "우변번호를 입력하세요.(xxxxxx 또는 xxx-xxx)"
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "예, 아니오, 아마도"
-
-#: template/defaultfilters.py:520
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:522
-#, python-format
-msgid "%.1f KB"
-msgstr ""
-
-#: template/defaultfilters.py:524
-#, python-format
-msgid "%.1f MB"
-msgstr ""
-
-#: template/defaultfilters.py:525
-#, python-format
-msgid "%.1f GB"
-msgstr ""
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "%s 자 이하로 입력해 주세요."
-msgstr[1] "%s 자 이하로 입력해 주세요."
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "줄바꿈이 허용되지 않습니다."
-
-#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "올바르게 선택해 주세요. '%(data)s' (이)가 %(choices)s 에 없습니다."
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "입력하신 파일은 빈 파일입니다."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "-32,768 ~ 32,767 사이의 정수를 입력하세요."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "양수를 입력하세요."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "0 ~ 32,767 사이의 정수를 입력하세요."
diff --git a/webapp/django/conf/locale/ko/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ko/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index cdc19a1..0000000
--- a/webapp/django/conf/locale/ko/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ko/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ko/LC_MESSAGES/djangojs.po
deleted file mode 100644
index fe1c7a4..0000000
--- a/webapp/django/conf/locale/ko/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-04-06 11:10+0900\n"
-"PO-Revision-Date: 2007-04-06 11:15+0900\n"
-"Last-Translator: Hyun Mi Ae <happyhyun@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "일 월 화 수 목 금 토"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "일요일 월요일 화요일 수요일 목요일 금요일 토요일"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "이용 가능한 %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "모두 선택"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "추가"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "삭제"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "선택된 %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "선택한 후 클릭하세요"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "모두 삭제"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "보기"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "감추기"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "현재"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "시계"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "시간 선택"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "자정"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "오전 6시"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "정오"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "취소"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "오늘"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "달력"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "어제"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "내일"
diff --git a/webapp/django/conf/locale/lt/LC_MESSAGES/django.mo b/webapp/django/conf/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 3d42827..0000000
--- a/webapp/django/conf/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/lt/LC_MESSAGES/django.po b/webapp/django/conf/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index d855d87..0000000
--- a/webapp/django/conf/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2868 +0,0 @@
-# Lithuanian translation of Django.
-# Copyright (C) 2008 The Django Software Foundation
-# This file is distributed under the same license as the Django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-15 23:03+0300\n"
-"PO-Revision-Date: 2008-06-18 22:37+0200\n"
-"Last-Translator: Rapolas Kaselis <rapolas@gmail.com>\n"
-"Language-Team: Django-i18n <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: oldforms/__init__.py:357
-#: db/models/fields/__init__.py:117
-#: db/models/fields/__init__.py:274
-#: db/models/fields/__init__.py:612
-#: db/models/fields/__init__.py:623
-#: newforms/models.py:178
-#: newforms/fields.py:80
-#: newforms/fields.py:376
-#: newforms/fields.py:452
-#: newforms/fields.py:463
-msgid "This field is required."
-msgstr "Šis laukas yra privalomas."
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Įsitikink, kad tavo tekstas turi mažiau nei %s simbolį."
-msgstr[1] "Įsitikink, kad tavo tekstas turi mažiau nei %s simbolių."
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "Nauja eilutė nėra leidžiama."
-
-#: oldforms/__init__.py:498
-#: oldforms/__init__.py:571
-#: oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Pasirink gerą variantą; '%(data)s' nėra tarp %(choices)s."
-
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Nežinomas"
-
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Taip"
-
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Ne"
-
-#: oldforms/__init__.py:672
-#: core/validators.py:174
-#: core/validators.py:445
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Failas nebuvo nurodytas. Patikrink formos koduotę."
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "Nurodytas failas yra tuščias"
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Įvesk sveiką skaičių nuo -32,768 iki 32,767."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Įvesk teigiamą skaičių."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Įvesk sveiką skaičių nuo 0 iki 32,767."
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s su šiuo %(type)s jau egzistuoja duotuose %(field)s."
-
-#: db/models/manipulators.py:308
-#: contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "ir"
-
-#: db/models/fields/__init__.py:42
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s su šiuo %(fieldname)s jau egzistuoja."
-
-#: db/models/fields/__init__.py:369
-msgid "This value must be an integer."
-msgstr "Ši reikšme turi būti sveikas skaičius."
-
-#: db/models/fields/__init__.py:404
-msgid "This value must be either True or False."
-msgstr "Ši reikšmė turi būti True arba False."
-
-#: db/models/fields/__init__.py:425
-msgid "This field cannot be null."
-msgstr "Šis laukas negali būti null"
-
-#: db/models/fields/__init__.py:459
-#: core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Įvesk tinkamą datą YYYY-MM-DD formatu."
-
-#: db/models/fields/__init__.py:528
-#: core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Įvesk tinkamą datą/laiką YYYY-MM-DD HH:MM formatu."
-
-#: db/models/fields/__init__.py:632
-msgid "Enter a valid filename."
-msgstr "Įvesk tinkamą failo vardą."
-
-#: db/models/fields/__init__.py:753
-msgid "This value must be either None, True or False."
-msgstr "Ši reikšmė turi būti viena iš None, True arba False."
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Įveskite tinkamą %s"
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "Atskirkite skirtingus ID su kableliu."
-
-#: db/models/fields/related.py:644
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Paspausk ir laikyk \"Control\", arba \"Command\" Mac'uose, kad pasirinkti daugiau nei vieną."
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Įveskite tinkamą %(self)s ID. Reikšmė %(value)r yra netinkama."
-msgstr[1] "Įveskite tinkamą %(self)s ID. Reikšmės %(value)r yra netinkamos."
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arabų"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengalų"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "Katalonų"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "Čekų"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "Velso"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "Danų"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "Vokiečių"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "Graikų"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "Anglų"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "Ispanų"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "Argentinos Ispanų"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "Suomių"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "Prancūzų"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr "Galų"
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "Vengrų"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr "Hebrajų"
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "Islandų"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "Italų"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "Japonų"
-
-#: conf/global_settings.py:58
-msgid "Korean"
-msgstr "Korėjiečių"
-
-#: conf/global_settings.py:59
-msgid "Kannada"
-msgstr "Dravidų"
-
-#: conf/global_settings.py:60
-msgid "Latvian"
-msgstr "Latvių"
-
-#: conf/global_settings.py:61
-msgid "Macedonian"
-msgstr "Makedonų"
-
-#: conf/global_settings.py:62
-msgid "Dutch"
-msgstr "Olandų"
-
-#: conf/global_settings.py:63
-msgid "Norwegian"
-msgstr "Norvegų"
-
-#: conf/global_settings.py:64
-msgid "Polish"
-msgstr "Lenkų"
-
-#: conf/global_settings.py:65
-msgid "Portugese"
-msgstr "Portugalų"
-
-#: conf/global_settings.py:66
-msgid "Brazilian"
-msgstr "Brazilų"
-
-#: conf/global_settings.py:67
-msgid "Romanian"
-msgstr "Rumunų"
-
-#: conf/global_settings.py:68
-msgid "Russian"
-msgstr "Rusų"
-
-#: conf/global_settings.py:69
-msgid "Slovak"
-msgstr "Slovakų"
-
-#: conf/global_settings.py:70
-msgid "Slovenian"
-msgstr "Slovėnų"
-
-#: conf/global_settings.py:71
-msgid "Serbian"
-msgstr "Serbų"
-
-#: conf/global_settings.py:72
-msgid "Swedish"
-msgstr "Švedų"
-
-#: conf/global_settings.py:73
-msgid "Tamil"
-msgstr "Tamilų"
-
-#: conf/global_settings.py:74
-msgid "Telugu"
-msgstr "Telugų"
-
-#: conf/global_settings.py:75
-msgid "Turkish"
-msgstr "Turkų"
-
-#: conf/global_settings.py:76
-msgid "Ukrainian"
-msgstr "Ukrainiečių"
-
-#: conf/global_settings.py:77
-msgid "Simplified Chinese"
-msgstr "Supaprastinta kinų"
-
-#: conf/global_settings.py:78
-msgid "Traditional Chinese"
-msgstr "Tradicinė kinų"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Ši reikšmė gali būti sudaryta tik iš raidžių, skaičių ir pabraukimų."
-
-#: core/validators.py:68
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Ši reikšmė gali būti sudaryta tik iš raidžių, skaičių, pabraukimų, brūkšnių ir/arba pasvirų brūkšnių."
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Ši reikšmė gali būti sudaryta tik iš raidžių, skaičių, pabraukimų arba brūkšnelių."
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "Didžiosios raidės nėra leidžiamos."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "Mažosios raidės nėra leidžiamos."
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "Įvesk skaitmenis atskirtus kableliais."
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Įvesk tinkamus e-mailus atskirtus kableliais."
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "Įveskt tinkamą IP adresą."
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "Tuščios reikšmės neleidžiamos."
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Ne skaičius neleidžiamas čia."
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "Ši reikšmė negali būti sudaryta vientik iš skaičių."
-
-#: core/validators.py:120
-#: newforms/fields.py:128
-msgid "Enter a whole number."
-msgstr "Įvesk sveiką skaičių."
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "Tik alfabetiniai simboliai leidžiami."
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr "Metai turi būti 1900 arba vėlesni."
-
-#: core/validators.py:143
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Netinkama data: %s"
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-msgstr "Įvesk tinkamą laiką HH:MM formatu"
-
-#: core/validators.py:162
-#: newforms/fields.py:271
-msgid "Enter a valid e-mail address."
-msgstr "Įvesk tinkamą e-mailą."
-
-#: core/validators.py:178
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Atsiųsk tinkamą paveiksliuką. Failas, kurį siuntei buvo arba ne paveiksliukas, arba sugadintas paveiksliukas"
-
-#: core/validators.py:185
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s nenurodo tinkamo paveiksliuko."
-
-#: core/validators.py:189
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefono numeris turi būti XXX-XXX-XXXX formatu. \"%s\" yra netinkamas."
-
-#: core/validators.py:197
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s nenurodo tinkamo QuickTime video."
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "Tinkamas URL privalomas."
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Tinkamas HTML privalomas. Klaidos:\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Blogai suformuotas XML: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Netinkamas URL: %s"
-
-#: core/validators.py:244
-#: core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s yra neveikiantis."
-
-#: core/validators.py:252
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Įvesk tinkamą JAV valstijos sutrumpinimą."
-
-#: core/validators.py:266
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Kontroliuok liežuvį! %s neleidžiamas."
-msgstr[1] "Kontroliuok liežuvį! %s neleidžiami."
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Šis laukas turi atitikti %s lauką."
-
-#: core/validators.py:292
-msgid "Please enter something for at least one field."
-msgstr "Nors vienam lauke kažką reikia įvesti."
-
-#: core/validators.py:301
-#: core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "Įveskite abu laukus arba abu palikite tuščius."
-
-#: core/validators.py:320
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Šis laukas turi būti užpildytas, jei %(field)s yra %(value)s"
-
-#: core/validators.py:333
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Šis laukas turi būti užpildytas, jei %(field)s nėra %(value)s"
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "Vienodos reikšmės neleidžiamos."
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Ši reikšmė turi būti tarp %(lower)s ir %(upper)s."
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Ši reikšme mažiausiai turi būti %s."
-
-#: core/validators.py:371
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Ši reikšmė negali būti daugiau nei %s."
-
-#: core/validators.py:407
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Ši reikšmė turi būti %s laipsnis."
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "Įveskite tinkamą dešimtainį skaičių."
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Įveskite tinkamą dešimtainį skaičių su daugiausiai %s skaitmeniu."
-msgstr[1] "Įveskite tinkamą dešimtainį skaičių su daugiausiai %s skaitmenimis."
-
-#: core/validators.py:425
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Įveskite tinkamą dešimtainį skaičių, kurio sveikoji dalis ne didenė nei %s skaitmens."
-msgstr[1] "Įveskite tinkamą dešimtainį skaičių, kurio sveikoji dalis ne didenė nei %s skaitmenų."
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Įveskite tinkamą dešimtainį skaičių, kur po kablelio max %s skaitmuo."
-msgstr[1] "Įveskite tinkamą dešimtainį skaičių, kur po kablelio max %s skaitmenų."
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Įsitikink, kad įkeltas failas yra mažiausiai %s baitų dydžio."
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Įsitikink, kad įkeltas failas yra daugiausiai %s baitų dydžio."
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "Šis formatas yra netinkamas šiam laukui."
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "Šis laukas yra netinkamas."
-
-#: core/validators.py:507
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nieko negaliu gauti iš %s"
-
-#: core/validators.py:510
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s gražino blogą Content-Type headerį '%(contenttype)s'."
-
-#: core/validators.py:543
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Uždaryk neuždarytus %(tag)s tagus nuo %(line)s eilutės. (Pradedant \"%(start)s\" eilute.)"
-
-#: core/validators.py:547
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Kažkiek teksto pradedant %(line)s eilute nėra leidžiamas šiame kontekste. (Pradedant \"%(start)s\" eilute."
-
-#: core/validators.py:552
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" eilutėje %(line)s yra netinkamas atributas. (Pradedant \"%(start)s\" eilute.)"
-
-#: core/validators.py:557
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" eilutėje %(line)s yra netinkami tagai. (Pradedant \"%(start)s\" eilute.)"
-
-#: core/validators.py:561
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "Eilutėje %(line)s tagui trūksta vieno ar daugiau privalomų atributų. (Pradedant \"%(start)s\" eilute.)"
-
-#: core/validators.py:566
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" atributas eilutėje %(line)s turi netinkamą reikšmę. (Pradedant \"%(start)s\" eilute.)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s sėkmingai sukurtas."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s sėkmingai atnaujintas."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s buvo ištrintas."
-
-#: newforms/models.py:165
-#: newforms/fields.py:364
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Pasirink tinkamą. Tas pasirinkimas nėra iš galimų."
-
-#: newforms/models.py:182
-#: newforms/fields.py:380
-#: newforms/fields.py:456
-msgid "Enter a list of values."
-msgstr "Įvesk reikšmių sarašą."
-
-#: newforms/models.py:188
-#: newforms/fields.py:389
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Pasirink tinkamą. %s nėra vienas iš galimų."
-
-#: newforms/fields.py:103
-#: newforms/fields.py:256
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "Įsitikink, kad reikšmė daugiausiai turi %d simbolių."
-
-#: newforms/fields.py:105
-#: newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "Įsitikink, kad reikšmė mažiausiai turi %d simbolių."
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Įsitikink, kad ši reikšmė yra mažiau arba lygu %s."
-
-#: newforms/fields.py:132
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Įsitikink, kad ši reikšmė yra daugiau arba lygu %s."
-
-#: newforms/fields.py:165
-msgid "Enter a valid date."
-msgstr "Įvesk tinkamą datą."
-
-#: newforms/fields.py:192
-msgid "Enter a valid time."
-msgstr "Įvesk tinkamą laiką."
-
-#: newforms/fields.py:228
-msgid "Enter a valid date/time."
-msgstr "Įvesk tinkamą datą/laiką."
-
-#: newforms/fields.py:242
-msgid "Enter a valid value."
-msgstr "Įvesk tinkamą reikšmę."
-
-#: newforms/fields.py:289
-#: newforms/fields.py:311
-msgid "Enter a valid URL."
-msgstr "Įvesk tinkamą URL."
-
-#: newforms/fields.py:313
-msgid "This URL appears to be a broken link."
-msgstr "Atrodo URL blogas."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "st"
-msgstr "st"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "nd"
-msgstr "nd"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milijonas"
-msgstr[1] "%(value).1f milijonas"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milijardas"
-msgstr[1] "%(value).1f milijardas"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilijonas"
-msgstr[1] "%(value).1f trilijonas"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "vienas"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "du"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "trys"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "keturi"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "penki"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "šeši"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "septyni"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "aštuoni"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "devyni"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "nukreiptas (redirect) iš"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Turi būti absoliutus adresas neįtraukiant domaino. Pavyzdžiui: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "nukreipti(redirect) į"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Gali būti absoliutus adresas (kaip viršuj) arba pilnas URL pradedant 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "nukreipti"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "nukreipia"
-
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:166
-msgid "object ID"
-msgstr "objekto ID"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "antraštė"
-
-#: contrib/comments/models.py:69
-#: contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "komentaras"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "reitingas #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "reitingas #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "reitingas #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "reitingas #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "reitingas #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "reitingas #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "reitingas #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "reitingas #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "tinkamas reitingas"
-
-#: contrib/comments/models.py:83
-#: contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "įvesta data/laikas"
-
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:170
-msgid "is public"
-msgstr "viešas"
-
-#: contrib/comments/models.py:85
-#: contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP adresas"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "pašalintas"
-
-#: contrib/comments/models.py:86
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Pažymėk šį laukelį, jei komentaras netinkamas. \"Šis komentaras ištrintas\" bus rodoma."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "komentarai"
-
-#: contrib/comments/models.py:131
-#: contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Turinio objektas"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Paskelbta  %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "asmens vardas"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip adresas"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "patvirtinta personalo"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "laisvas komentaras"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "laisvi komentarai"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "rezultatas"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "rezultato data"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "karma rezultatas"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "karma rezultatai"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d reitingas nuo %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Šis komentaras pažymėtas %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "pažymėjimo data"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "vartotojo žymė"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "vartotojo žymės"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Pažymėtas %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "ištrinimo data"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "moderatoriaus ištrynimas"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "moderatoriaus ištrynimai"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Moderatoriaus ištrynimas, pagal %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Neprisijungę vartotojai negali balsuoti"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Blogas komentaro ID"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Negali balsuoti už save"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Šis reitingas privalomas nes įvedei mažiausiai vieną kitą reitingą."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Šis komentaras buvo paskelbtas vartotojo, kuris paskelbė mažiau nei %(count)s komentarą:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Šis komentaras buvo paskelbtas vartotojo, kuris paskelbė mažiau nei %(count)s komentarų:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Šis komentaras buvo paskelbtas nerimto vartotojo:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Tik POSTai yra leidžiami"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Vienas ar daugiau privalomų laukų nebuvo įrašytas"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Kažkas padirbo komentaro formą (saugumo pažeidimai)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Komentaro forma turi blogą 'target' parametrą -- objekto ID blogas"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Komentaro forma nepateikė 'preview' arba 'post'"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Vartotojo vardas:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Log out"
-msgstr "Atsijungti"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Slaptažodis:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Pamiršai slaptažodį?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Reitingas"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Privalomas"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Neprivalomas"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Įkelk nuotrauką"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentaras:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Peržiūrėti komentarą"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Jūsų vardas:"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "domeno vardas"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "rodomas vardas"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "saitas"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "saitai"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:70
-#: contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-#: contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Visi"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Betkokia data"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Šiandien"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Paskutinės 7 dienos"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Šį mėnesį"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Šiais metais"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "veiksmo laikas"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "objekto id"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "objekto repr"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "veiksmo žymė"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "pakeisti žinutę"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "log įrašas"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "log įrašai"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "Visos datos"
-
-#: contrib/admin/views/auth.py:19
-#: contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" pridėtas sėkmingai."
-
-#: contrib/admin/views/auth.py:24
-#: contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "Gali taisyti dar kartą žemiau."
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Pridėti vartotoją"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Slaptažodis pakeistas sėkmingai."
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Pakeisti slaptažodį: %s"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Saito administracija"
-
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Gali pridėti dar vieną %s žemiau."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Pridėti %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Pridėtas %s."
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Pakeistas %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Ištrintas %s"
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Nei vienas laukas nepakeistas"
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" buvo sėkmingai pakeistas."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" pridėtas sėkmingai. Gali taisytį jį dar kartą žemiau."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Pakeisti %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Vienas arba daugiau %(fieldname)s %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Vienas arba daugiau %(fieldname)s %(name)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" sėkmingai ištrintas."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Ar tu tikras?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "Pakeisti istoriją: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "Pasirinkti %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "Pasirinkti %s pakeitimui"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Duomenų bazės klaida"
-
-#: contrib/admin/views/decorators.py:10
-#: contrib/auth/forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Įveskite teisingą vartotojo vardą ir slaptažodį. Abiejuose laukuose didžiosios mažosios raidės skiriasi"
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Prisijungti"
-
-#: contrib/admin/views/decorators.py:62
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Prisijunkite dar kartą, nes sesijos laikas baigėsi. Nesirūpinkite, įrašai buvo išsaugoti."
-
-#: contrib/admin/views/decorators.py:69
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Atrodo, kad Jūsų naršyklė nepriima sausainėlių (cookies). Įjunkite sausainėlių palaikymą, perkraukite puslapį ir bandykite dar kartą."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Vartotojo vardas negali turėti '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "E-mailas nėra vartotojo vardas. Pabandyk '%s' vietoj to."
-
-#: contrib/admin/views/doc.py:46
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "tagas"
-
-#: contrib/admin/views/doc.py:77
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "filtras:"
-
-#: contrib/admin/views/doc.py:135
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "vaizdas:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "Programa %r nerasta"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modelis %(name)r programoje %(label)r nerastas"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "susijęs `%(label)s.%(type)s` objektas"
-
-#: contrib/admin/views/doc.py:183
-#: contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219
-#: contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "modelis:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "susiję `%(label)s.%(name)s` objektai"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "visi %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "%s skaičius"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Objekto %s laukai"
-
-#: contrib/admin/views/doc.py:291
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303
-#: contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310
-#: contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "Sveikas skaičius"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True arba False)"
-
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Eilutė (iki %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Kableliais atskirti sveikieji skaičiai"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Data (be laiko)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Data (su laiku)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "E-mailo adresas"
-
-#: contrib/admin/views/doc.py:298
-#: contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "Kelias iki failo"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Dešimtainis skaičius"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (True arba False arba None)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Sąsaja su tėviniu modeliu"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Telefono numeris"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Tekstas"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "Laikas"
-
-#: contrib/admin/views/doc.py:315
-#: contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "JAV valstija (dvi didžiosios raidės)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML tekstas"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s neatrodo kaip urlpattern objektas"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Dabartinis:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Pakeisti:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Laikas:"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Change password"
-msgstr "Pakeisti slaptažodį"
-
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Pradinis"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Pridėti %(name)s"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Pagal %(filter_title)s "
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "Istorija"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Data/laikas"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Vartotojas"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Veiksmas"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Šis objektas neturi pakeitimų istorijos. Tikriausiai jis buvo pridėtas ne per admin puslapį."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Eiti!"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 rezultatas"
-msgstr[1] "%(counter)s rezultatai"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s iš viso"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Rodyti visus"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django saito administravimas"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administravimas"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverio klaida"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverio klaida (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverio klaida <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Įvyko klaida. Apie ją buvo pranešta administratoriams ir turėtų būti greitai ištaisyta. Dėkojame už kantrybę."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Kažkas yra negerai su jūsų duomenų bazės instaliacija. Įsitikink, kad visos reikalingos lentelės sukurtos ir vartotojas turi teises skaityti duomenų bazę."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelis prieinamas %(name)s programoje."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Pridėti"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Pakeisti"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Neturi teisių ką nors keistis."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Neseni veiksmai"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Mano Veiksmai"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nėra prieinamų"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Puslapis nerastas"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Atsiprašome, bet prašytas puslapis nerastas."
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtras"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Matyti saite"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Ištaisykite klaidą žemiau"
-msgstr[1] "Ištaisykite klaidas žemiau"
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Rūšiavimas"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Rūšiuoti:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Ištrinti"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Trinant %(object_name)s '%(escaped_object)s' turi būti ištrinti ir susiję objektai, bet tavo vartotojas neturi teisių ištrinti šių objektų:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Ar tu esi tikras, kad nori ištrinti %(object_name)s \"%(escaped_object)s\"? Visi susiję objektai bus ištrinti:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Taip, aš esu tikras"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Sveiki,"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Išsaugoti kaip naują"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Išsaugoti ir pridėti naują"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Išsaugoti ir tęsti redagavimą"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Išsaugoti"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Įvesk naują slaptažodį vartotojui <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Slaptažodis"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Slaptažodis (dar kartą)"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Patikrinimui įvesk tokį patį slaptažodį, kaip viršuje."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Pirmiausi įvesk vartotojo vardą ir slaptažodį. Tada turėsi galimybę redaguoti daugiau nustatymų."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Vartotojo vardas"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Slaptažodžio keitimas"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Slaptažodis sėkmingai pakeistas"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Jūsų slaptažodis buvo pakeistas."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Slaptažodžiu atstatymas(reset)"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "Pamiršai slaptažodį? Įvesk savo emailą žemiau ir mes atsiųsime naują slaptažodį emailu."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mailo adresas:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Atstatyti slaptažodį"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Dėkui už praleistą laiką šiandien."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Prisijungti dar kartą"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Slaptažodis sėkmingai atsatytas"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Išsiuntėm naują slaptažodį e-mailu. Turėtumėte greitai gauti."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Saugumo sumetimais įvesk seną slaptažodį ir tada du kartus naują, kad įsitikinti, jog nesuklydai rašydamas"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Senas slaptažodis:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Naujas slaptažodis:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Slaptažodžio patvirtinimas:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Pakeisti slaptažodį"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Gavote šį laišką, nes paprašėte atstatyti slaptažodį"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "Jūsų vartotojui %(site_name)s saite"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Jūsų naujas slaptažodis yra: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Nebijokite pasikeisti šį slaptažodį puslapyje:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Jūsų vartotojo vardas, jei netyčia užmiršote:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Dėkui, kad naudojatės mūsų saitu!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s komanda"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Greitosios žymės"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Doumentacijos greitosios žymės"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Greitųjų žymių įdiegimui, nutempkite nuorodą į greitųjų žymių\n"
-"juostą, arba spauskite dešinį pelės klavišą ir pridėkite prie greitųjų žymių. Dabar galite\n"
-"pasirinkti greitąją žymę iš bet kurio saito puslapio. Pastebėjimas, kad keletas iš šių\n"
-"greitųjų žymių reikalauja, kad saitas būtų žiūrimas iš vidinio kompiuterio \n"
-"(pasitarkite su administratorium, jei nežinai ar tavo kompiuteris yra vidinis).</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Šio puslapio dokumentacija"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Pereina iš bet kurio puslapio į jo view funkcijos dokumentaciją, kuri sukūria tą puslapį"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Parodyti objekto ID"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Parodyti content-type ir unikalų puslapių ID, kuris parodo vieną objektą."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Redaguoti šį objektą (einamajame lange)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Pereina į administravimo puslapį, kuris parodo vieną objektą."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Redaguoti šį objektą (naujame lange)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kaip ir viršuje, bet administravimo puslapį atidaro naujame lange."
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "python modelio klasės vardas"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "turinio tipas"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "turinio tipai"
-
-#: contrib/auth/views.py:40
-msgid "Logged out"
-msgstr "Atsijungęs"
-
-#: contrib/auth/models.py:44
-#: contrib/auth/models.py:64
-msgid "name"
-msgstr "vardas"
-
-#: contrib/auth/models.py:46
-msgid "codename"
-msgstr "kodinis vardas"
-
-#: contrib/auth/models.py:49
-msgid "permission"
-msgstr "leidimas"
-
-#: contrib/auth/models.py:50
-#: contrib/auth/models.py:65
-msgid "permissions"
-msgstr "leidimai"
-
-#: contrib/auth/models.py:68
-msgid "group"
-msgstr "grupė"
-
-#: contrib/auth/models.py:69
-#: contrib/auth/models.py:109
-msgid "groups"
-msgstr "grupės"
-
-#: contrib/auth/models.py:99
-msgid "username"
-msgstr "vartotojo vardas"
-
-#: contrib/auth/models.py:99
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Privalomas. 30 simbolių arba mažiau. Alfanumeriniai simboliai tik (raidės, skaitmenys ir pabraukimai)"
-
-#: contrib/auth/models.py:100
-msgid "first name"
-msgstr "vardas"
-
-#: contrib/auth/models.py:101
-msgid "last name"
-msgstr "pavardė"
-
-#: contrib/auth/models.py:102
-msgid "e-mail address"
-msgstr "e-mailo adresas"
-
-#: contrib/auth/models.py:103
-msgid "password"
-msgstr "slaptažodis"
-
-#: contrib/auth/models.py:103
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Naudok '[algo]$[salt]$[hexdigest]' arba naudok <a href=\"password/\">slaptažodžio keitimo formą</a>."
-
-#: contrib/auth/models.py:104
-msgid "staff status"
-msgstr "personalo statusas"
-
-#: contrib/auth/models.py:104
-msgid "Designates whether the user can log into this admin site."
-msgstr "Pažymi ar vartotojas gali prisijungti prie administravimo puslapio."
-
-#: contrib/auth/models.py:105
-msgid "active"
-msgstr "aktyvus"
-
-#: contrib/auth/models.py:105
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Pažymi ar šis vartotojas gali prisijungti prie Django administravimo. Nepažymėk šios lauko, vietoj vartotojo trynimo."
-
-#: contrib/auth/models.py:106
-msgid "superuser status"
-msgstr "supervartotojo statusas"
-
-#: contrib/auth/models.py:106
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Pažymi, kad šis vartotojas turi visas teises be specialių nustatymų."
-
-#: contrib/auth/models.py:107
-msgid "last login"
-msgstr "paskutinį kartą prisijungęs"
-
-#: contrib/auth/models.py:108
-msgid "date joined"
-msgstr "data, kada prisijungė"
-
-#: contrib/auth/models.py:110
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Prie rankiniu būdų priskirtų teisių, šis vartotojas taip pat gaus visas teises, kurias turi grupės, kurioms jis priklauso."
-
-#: contrib/auth/models.py:111
-msgid "user permissions"
-msgstr "vartotojo leidimai"
-
-#: contrib/auth/models.py:115
-msgid "user"
-msgstr "vartotojas"
-
-#: contrib/auth/models.py:116
-msgid "users"
-msgstr "vartotojai"
-
-#: contrib/auth/models.py:122
-msgid "Personal info"
-msgstr "Asmeninė informacija"
-
-#: contrib/auth/models.py:123
-msgid "Permissions"
-msgstr "Leidimai"
-
-#: contrib/auth/models.py:124
-msgid "Important dates"
-msgstr "Svarbios datos"
-
-#: contrib/auth/models.py:125
-msgid "Groups"
-msgstr "Grupės"
-
-#: contrib/auth/models.py:269
-msgid "message"
-msgstr "žinutė"
-
-#: contrib/auth/models.py:282
-msgid "AnonymousUser"
-msgstr "Anoniminis vartotojas"
-
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Slaptažodžio laukai nesutapo"
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Jau egzistuoja vartotojas su tokiu vardu."
-
-#: contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Atrodo, jūsų naršyklė nepriima sausainėlių(cookies). Sausainėliai yra reikalingi norint prisijungti."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Ši paskyra yra neaktyvi."
-
-#: contrib/auth/forms.py:85
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Šis emailas nėra registruotas sistemoje. Ar esi tikras, kad tu užsiregistravęs?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Naujo slaptažodžio laukai nesutapo"
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Blogai įvestas senas slaptažodis. Bandykite dar kartą."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "Įveskite pašto kodą. Tarpas reikalingas tarp dviejų pašto kodo dalių."
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Įveskite pašto kodą XXXXX-XXX formatu."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefonas turi būti XXX-XXXX-XXXX formatu."
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "Šis laukas priima tik skaičius."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Šis laukas talpina daugiausiai 11 skaitmenų arba 14 simbolių."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr "Netinkamas CPF numeris"
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "Šis laukas reikalauja mažiausiai 14 skaitmenų."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr "Netinkamas CNPJ numeris"
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Įveskite 4 skaitmenų pašto kodą."
-
-#: contrib/localflavor/fr/forms.py:17
-#: contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Įveskite pašto kodą XXXXX formatu."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Įveskite pašto kodą XXXXX arba XXXXX-XXXX formatu."
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Įveskite tinkamą JAV socialinio draudimo numerį."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavarija"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlynas"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburgas"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremenas"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburgas"
-
-#: contrib/localflavor/de/de_states.py:11
-#, fuzzy
-msgid "Hessen"
-msgstr "Hesenas"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saksonija"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:60
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr "Įveskite tinkamą Vokiško asmens id numerį XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formatu."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokaidas"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-#, fuzzy
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokijas"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-#, fuzzy
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hirošima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-#, fuzzy
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinava"
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Įveskite pašto kodą XXXXXXX arba XXX-XXXX formatu."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-#, fuzzy
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-#, fuzzy
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-#, fuzzy
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-#, fuzzy
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-#, fuzzy
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:18
-#: contrib/localflavor/no/forms.py:15
-msgid "Enter a zip code in the format XXXX."
-msgstr "Įveskite pašto kodą XXXX formatu."
-
-#: contrib/localflavor/ch/forms.py:90
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Įveskite tinkamą šveicarų asmens id ar paso numerį X1234567<0 arba 1234567890 formatu."
-
-#: contrib/localflavor/is_/forms.py:16
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Įveskite tinkamą islandų asmens id numerį XXXXXX-XXXX formatu."
-
-#: contrib/localflavor/is_/forms.py:30
-msgid "The Icelandic identification number is not valid."
-msgstr "Islandiškas asmend id yra netinkamas."
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Įveskite tinkamą pašto kodą."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Įveskite tinkamą socialinio draudimo numerį."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Įveskite tinkamą PVM numerį"
-
-#: contrib/localflavor/no/forms.py:36
-msgid "Enter a valid Norwegian social security number."
-msgstr "Įveskite tinkamą norvegiška socialinio draudimo numerį."
-
-#: contrib/localflavor/cl/forms.py:21
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Įveskite tinkamą Čilės RUT XX.XXX.XXX-X formatu."
-
-#: contrib/localflavor/cl/forms.py:26
-msgid "Enter valid a Chilean RUT"
-msgstr "Įveskite tinkamą Čilės RUT"
-
-#: contrib/localflavor/fi/forms.py:40
-#: contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr "Įveskite tinkamą suomišką socialinio draudimo numerį."
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "sesijos raktas"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "sesijos data"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "galiojima data"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "sesija"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "sesijos"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Pavyzdžiui: '/about/contact/'. Įsitikink, kad yra pasvirieji brūkšniai pradžioj ir gale."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "pavadinimas"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "turinys"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "įjungti komentavimą"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "šablono vardas"
-
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Pavyzdžiui: 'flatpages/contact_page.html'. Jeigu bus nenurodytas, sistema naudos 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registracija privaloma"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Jeigu pažymėta, tik prisijungę vartotojai galės matyti šį puslapį."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "paprastas puslapis"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "paprasti puslapiai"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Pirmadienis"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Antradienis"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Trečiadienis"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Ketvirtadienis"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Penktadienis"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Šeštadienis"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sekmadienis"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Sausis"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Vasaris"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "March"
-msgstr "Kovas"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "April"
-msgstr "Balandis"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "May"
-msgstr "Gegužė"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "June"
-msgstr "Birželis"
-
-#: utils/dates.py:15
-#: utils/dates.py:27
-msgid "July"
-msgstr "Liepa"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Rugpjūtis"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Rugsėjis"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Spalis"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Lapkritis"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Gruodis"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "sau"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "vas"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "kov"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "bal"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "geg"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "bir"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "lie"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "rugp"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "rugs"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "spa"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "lap"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "grd"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Sau."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Vas."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Rugp."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Rugs."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Spa."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Lap."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Grd."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "metai"
-msgstr[1] "metai"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mėnesis"
-msgstr[1] "mėnesiai"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "savaitė"
-msgstr[1] "savaitės"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "diena"
-msgstr[1] "dienos"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "valanda"
-msgstr[1] "valandos"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minutė"
-msgstr[1] "minutės"
-
-#: utils/timesince.py:40
-#, python-format
-msgid "%d milliseconds"
-msgstr "%d milisekundės"
-
-#: utils/timesince.py:41
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:47
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/dateformat.py:40
-#, fuzzy
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:41
-#, fuzzy
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:46
-#, fuzzy
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:47
-#, fuzzy
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "vidurnaktis"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "vidurdienis"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "DATE_FORMAT"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "DATETIME_FORMAT"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "TIME_FORMAT"
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "taip,ne,galbūt"
-
-#: template/defaultfilters.py:520
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d baitas"
-msgstr[1] "%(size)d baitai"
-
-#: template/defaultfilters.py:522
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:524
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:525
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
diff --git a/webapp/django/conf/locale/lt/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/lt/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index d703bfb..0000000
--- a/webapp/django/conf/locale/lt/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/lt/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/lt/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 81d6988..0000000
--- a/webapp/django/conf/locale/lt/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,116 +0,0 @@
-# Lithuanian translation of Django.
-# Copyright (C) 2008 The Django Software Foundation
-# This file is distributed under the same license as the Django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-15 23:03+0300\n"
-"PO-Revision-Date: 2008-06-18 22:37+0200\n"
-"Last-Translator: Rapolas Kaselis <rapolas@gmail.com>\n"
-"Language-Team: Django-i18n <django-i18n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Galimas %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Pasirinkti visus"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Pridėti"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Pašalinti"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Pasirinktas %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Pasirink ir paspausk"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Išvalyti visus"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Sausis Vasaris Kovas Balandis Gegužė Birželis Liepa Rugpjūtis Rugsėjis "
-"Spalis Lapkritis Gruodis"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Sekmadienis Pirmadienis Antradienis Trečiadienis Ketvirtadienis Penktadienis Šeštadienis"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S P A T K P Š"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Dabar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Laikrodis"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Pasirink laiką"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Vidurnaktis"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Vidurdienis"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Atšaukti"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Šiandien"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalendorius"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Vakar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Rytoj"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Parodyti"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Slėpti"
diff --git a/webapp/django/conf/locale/lv/LC_MESSAGES/django.mo b/webapp/django/conf/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index ad9bf70..0000000
--- a/webapp/django/conf/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/lv/LC_MESSAGES/django.po b/webapp/django/conf/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index c6541d2..0000000
--- a/webapp/django/conf/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2864 +0,0 @@
-# Django Latvian translation.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# , fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-07 23:28+0300\n"
-"PO-Revision-Date: 2007-05-08 00:35+0300\n"
-"Last-Translator: Gatis Tomsons <gatis.tomsons@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: oldforms/__init__.py:357
-#: db/models/fields/__init__.py:117
-#: db/models/fields/__init__.py:274
-#: db/models/fields/__init__.py:612
-#: db/models/fields/__init__.py:623
-#: newforms/models.py:178
-#: newforms/fields.py:80
-#: newforms/fields.py:376
-#: newforms/fields.py:452
-#: newforms/fields.py:463
-msgid "This field is required."
-msgstr "Šis lauks ir obligāts."
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] ""
-msgstr[1] ""
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "Pārnešana jaunā rindā šeit nav atļauta."
-
-#: oldforms/__init__.py:498
-#: oldforms/__init__.py:571
-#: oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Nezināms"
-
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Jā"
-
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Nē"
-
-#: oldforms/__init__.py:672
-#: core/validators.py:174
-#: core/validators.py:445
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "Jūsu norādītais fails ir tukšs."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Ievadiet veselu skaitli intervālā no -32,768 līdz 32,767."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Ievadiet pozitīvu skaitli."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Ievadiet veselu skaitli intervāla starp 0 un 32,767."
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/manipulators.py:308
-#: contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "un"
-
-#: db/models/fields/__init__.py:42
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:369
-msgid "This value must be an integer."
-msgstr "Vērtībai ir jābūt veselam skaitlim."
-
-#: db/models/fields/__init__.py:404
-msgid "This value must be either True or False."
-msgstr "Vērtībai jābūt True vai False."
-
-#: db/models/fields/__init__.py:425
-msgid "This field cannot be null."
-msgstr "Šis lauks nevar būt null"
-
-#: db/models/fields/__init__.py:459
-#: core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Ievadiet korektu datumu YYYY-MM-DD formātā."
-
-#: db/models/fields/__init__.py:528
-#: core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Ievadiet korektu datumu/laiku YYYY-MM-DD HH:MM formātā."
-
-#: db/models/fields/__init__.py:632
-msgid "Enter a valid filename."
-msgstr "Ievadiet korektu faila vārdu."
-
-#: db/models/fields/__init__.py:753
-msgid "This value must be either None, True or False."
-msgstr "Šai vērtībai jābūt None, True vai False."
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Lūdzu ievadiet korektu %s"
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "Atdaliet vairākus ID ar komatiem."
-
-#: db/models/fields/related.py:644
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-msgstr[1] ""
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arābu"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengāļu"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "Čehu"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "Velsas"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "Dāņu"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "Vācu"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "Grieķu"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "Angļu"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "Spaņu"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "Argentīniešu Spāņu"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "Somu"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "Franču"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr "Galīciešu"
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "Ungāru"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "Islandiešu"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "Itāļu"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "Japāņu"
-
-#: conf/global_settings.py:58
-msgid "Korean"
-msgstr "Koreiešu"
-
-#: conf/global_settings.py:59
-msgid "Kannada"
-msgstr "Kanāda"
-
-#: conf/global_settings.py:60
-msgid "Latvian"
-msgstr "Latviešu"
-
-#: conf/global_settings.py:61
-msgid "Macedonian"
-msgstr "Maķedoniešu"
-
-#: conf/global_settings.py:62
-msgid "Dutch"
-msgstr "Dāņu"
-
-#: conf/global_settings.py:63
-msgid "Norwegian"
-msgstr "Norvēģu"
-
-#: conf/global_settings.py:64
-msgid "Polish"
-msgstr "Poļu"
-
-#: conf/global_settings.py:65
-msgid "Portugese"
-msgstr "Portugāļu"
-
-#: conf/global_settings.py:66
-msgid "Brazilian"
-msgstr "Brazīliešu"
-
-#: conf/global_settings.py:67
-msgid "Romanian"
-msgstr "Rumāņu"
-
-#: conf/global_settings.py:68
-msgid "Russian"
-msgstr "Krievu"
-
-#: conf/global_settings.py:69
-msgid "Slovak"
-msgstr "Slovāku"
-
-#: conf/global_settings.py:70
-msgid "Slovenian"
-msgstr "Slovēņu"
-
-#: conf/global_settings.py:71
-msgid "Serbian"
-msgstr "Serbu"
-
-#: conf/global_settings.py:72
-msgid "Swedish"
-msgstr "Zviedru"
-
-#: conf/global_settings.py:73
-msgid "Tamil"
-msgstr "Tamiliešu"
-
-#: conf/global_settings.py:74
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:75
-msgid "Turkish"
-msgstr "Turku"
-
-#: conf/global_settings.py:76
-msgid "Ukrainian"
-msgstr "Ukraiņu"
-
-#: conf/global_settings.py:77
-msgid "Simplified Chinese"
-msgstr "Vienkāršā ķīniešu"
-
-#: conf/global_settings.py:78
-msgid "Traditional Chinese"
-msgstr "Tradicionālā ķīniešu"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras."
-
-#: core/validators.py:68
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras, svītras vai šķērssvītras."
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Šī vērtība var saturēt tikai burtus, numurus un apakšsvītras vai šķērssvītras."
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "Augšējā reģistra burti nav atļauti."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "Apakšējā reģistra burti nav atļauti."
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "Ievadiet tikai numurus, kas atdalīti ar komatiem."
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Ievadiet korektas e-pasta adreses, kas atdalītas ar komatiem."
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "Lūdzu ievadiet korektu IP adresi."
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "Tukšas vērtības nav atļautas."
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Ne ciparu simboli nav atļauti."
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "Šī vērtība nevar saturēt tikai ciparus."
-
-#: core/validators.py:120
-#: newforms/fields.py:128
-msgid "Enter a whole number."
-msgstr "Ievadiet veselus skaitļus."
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "Atļauti tikai alfabētiskie simboli."
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr "Gadam jabūt 1900 vai vēlākam."
-
-#: core/validators.py:143
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Nekorekts datums: %s"
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-msgstr "Ievadiet korektu laiku HH:MM formātā"
-
-#: core/validators.py:162
-#: newforms/fields.py:271
-msgid "Enter a valid e-mail address."
-msgstr "Ievadiet korektu e-pasta adresi."
-
-#: core/validators.py:178
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Augšupielādējiet korektu attēlu. Fails, ko Jūs augšupielādējāt nav attēls vai arī bojāts attēla fails."
-
-#: core/validators.py:185
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s nesatur korektu attēlu."
-
-#: core/validators.py:189
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefona numuriem jābūt XXX-XXX-XXXX formātā. \"%s\" is nekorekts."
-
-#: core/validators.py:197
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s nenorāda uz korektu QuickTime video."
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "Reāls URL obligāts."
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Korekts HTML ir obligāts. Specifiskās kļūdas:\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Slikti formēts XML: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Nekorekts URL: %s"
-
-#: core/validators.py:244
-#: core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s ir salauzta saite."
-
-#: core/validators.py:252
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Ievadiet korektu ASV štata abriviatūru."
-
-#: core/validators.py:266
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Seko saviem vārdiem! Vārds %s nav atļauts šeit."
-msgstr[1] "Seko saviem vārdiem! Vārdi %s nav atļauts šeit."
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Laukam jāsaskan ar %s lauku."
-
-#: core/validators.py:292
-msgid "Please enter something for at least one field."
-msgstr "Lūdzu ievadiet kaut ko vismaz vienā laukā."
-
-#: core/validators.py:301
-#: core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "Lūdzu ievadiet abus laukus vai atstājiet abus tukšus."
-
-#: core/validators.py:320
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Šis lauks ir jāaizpilda, ja %(field)s ir vienāds %(value)s"
-
-#: core/validators.py:333
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Šis lauks ir jāaizpilda, ja %(field)s nav vienāds %(value)s"
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "Duplicētas vērtības nav atļautas."
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Šai vērtībai jābūt starp %(lower)s un %(upper)s."
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Šai vērtībai jābūt vismaz %s."
-
-#: core/validators.py:371
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Šai vērtība nedrīkst pārsniegt %s."
-
-#: core/validators.py:407
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Šai vērtībai jābūt %s pakāpei."
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "Lūdzu ievadiet korektu decimālu numuru."
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
-msgstr[1] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
-
-#: core/validators.py:425
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
-msgstr[1] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu %s."
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata %s."
-msgstr[1] "Lūdzu ievadiet korektu decimālu numuru ar maksimālu ciparu skaitu aiz komata %s."
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Pārliecinieties, ka jūsu augšupielādētais fails ir vismaz %s baiti liels."
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Pārliecinieties, ka jūsu augšupielādētais fails ir maksimums %s baiti liels."
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "Šī faila formāts ir nekorekts."
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "Šis lauks ir nekorekts."
-
-#: core/validators.py:507
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nevar neko no %s"
-
-#: core/validators.py:510
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s atgrieza nekorektu Content-Type headeri '%(contenttype)s'."
-
-#: core/validators.py:543
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Lūdzu aiztaisiet neaiztaisīto %(tag)s tagu no rindas nr %(line)s. (Rinda sākas ar \"%(start)s\".)"
-
-#: core/validators.py:547
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:552
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:557
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:561
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:566
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr ""
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s tika veiksmīgi izveidots."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s tika veiksmīgi dzēsts."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s tika dzēsts."
-
-#: newforms/models.py:165
-#: newforms/fields.py:364
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izvēlaties pareizu izvēli. Jūsu izvēlētais objekts neietilpst pieejamo sarakstā."
-
-#: newforms/models.py:182
-#: newforms/fields.py:380
-#: newforms/fields.py:456
-msgid "Enter a list of values."
-msgstr "Ievadiet sarakstu ar vērtībām."
-
-#: newforms/models.py:188
-#: newforms/fields.py:389
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Izvēlieties pareizu izvēli. %s nav pieejamo izvēļu sarakstā."
-
-#: newforms/fields.py:103
-#: newforms/fields.py:256
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "Vērtībai jasatur ne vairāk, kā %d rakstzīmju."
-
-#: newforms/fields.py:105
-#: newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "Vērtībai jasatur vismaz %d rakstzīmju."
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Šai vērtībai jabūt mazākai vai vienādai ar %s."
-
-#: newforms/fields.py:132
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Vērtībai jabūt lielākai vai vienādai ar %s."
-
-#: newforms/fields.py:165
-msgid "Enter a valid date."
-msgstr "Ievadiet korektu datumu."
-
-#: newforms/fields.py:192
-msgid "Enter a valid time."
-msgstr "Ievadiet korektu laiku."
-
-#: newforms/fields.py:228
-msgid "Enter a valid date/time."
-msgstr "Ievadiet korektu datumu/laiku."
-
-#: newforms/fields.py:242
-msgid "Enter a valid value."
-msgstr "Ievadiet korektu vērtību."
-
-#: newforms/fields.py:289
-#: newforms/fields.py:311
-msgid "Enter a valid URL."
-msgstr "Ievadiet korektu adresi."
-
-#: newforms/fields.py:313
-msgid "This URL appears to be a broken link."
-msgstr "Šī adrese ir bojāta."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "st"
-msgstr "saits"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "nd"
-msgstr "un"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "viens"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "divi"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "trīs"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "četri"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "pieci"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "seši"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "septiņi"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "astoņi"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "deviņi"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "novirzīt(redirect) no"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Tam jābūt absolūtajam ceļam, ieskaitot domēna vārdu. Piemēram: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "novirzīt(redirect) uz"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Tas ir vai nu absolūtais ceļš (kā pirms tam) vai pilnais URL, kas sākas ar 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "novirzīt"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "novirzījumi"
-
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:166
-msgid "object ID"
-msgstr "objekta ID"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "virsraksts"
-
-#: contrib/comments/models.py:69
-#: contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "komentārs"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "reitings #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "reitings #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "reitings #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "reitings #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "reitings #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "reitings #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "reitings #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "reitings #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "korekts reitings"
-
-#: contrib/comments/models.py:83
-#: contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "ievietošanas datums/laiks"
-
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:170
-msgid "is public"
-msgstr "publisks"
-
-#: contrib/comments/models.py:85
-#: contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP adrese"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "idzēsts"
-
-#: contrib/comments/models.py:86
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Atķeksējiet, ja komentārs ir neatbilstošs. Paziņojums A \"Šis komentārs ir izdzēsts\" tiks parādīts tai vietā."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "komentāri"
-
-#: contrib/comments/models.py:131
-#: contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Satura objekts"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Pievienojis  %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "personas vārds"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip adrese"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "apstiprinājusi administrācija"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "brīvais komentārs"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "brīvie komentāri"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "rezultāts"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "rezultāta datums"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "karmas rezultāts"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "karmas rezultāti"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d reitingu publicējis %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Šo komentāru atzīmējis %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "atzīmēšanas datums"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "lietotāja atzīme"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "lietotāja atzīmes"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Atzīmējis %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "dzēšanas datums"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "moderācijas dzēšana"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "moderācijas dzēšanas"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Moderācijas dzēšana, veicis %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Anonīmie lietotāji nedrīkst balsot"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Invalīds komentāru ID"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Nedrīkst balsot par sevi"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Šis reiting ir obligāts jo Jūs ievietojāt vismaz vienu citu reitingu."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Šo komentāru ir ievietojis lietotājs, kas ievietojis mazāk kā %(count)s komentāru:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Šo komentāru ir ievietojis lietotājs, kas ievietojis mazāk kā %(count)s komentārus:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Šo komentāru ieviejis paviršs lietotājs:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Atļauti tikai POST izsaukumi"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Viens vai vairāki pieprasītie lauki netika ievadīti"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Kāds ir iejaucies komentāru formā (drošības traucējums)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Komentāru forma ir nekorekts 'target' parametrs -- objekta ID bija nepareizs"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Komentāru forma nenodrošināja 'preview' vai 'post'"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Lietotāja vārds:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Log out"
-msgstr "Izlogoties"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Parole:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Esat aizmirsis savu paroli?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Reitings"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Pieprasīts"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Neobligāts"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Ievietojiet fotogrāfiju"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentārs:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Pirmsskatīt komentāru"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Jūsu vārds:"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "domēna vārds"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "izvadāmais vārds"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "saits"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "saiti"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:70
-#: contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-#: contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Visi"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Jebkuršs datums"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Šodien"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Pēdējās 7 dienas"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Šomēnes"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Šogad"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "darbības laiks"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "objekta id"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "objekta attēlojunms"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "darbības atzīme"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "momainīt paziņojumu"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "žurnāla ieraksts"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "žurnāla ieraksti"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "Visi datumi"
-
-#: contrib/admin/views/auth.py:19
-#: contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi."
-
-#: contrib/admin/views/auth.py:24
-#: contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "Jūs varat labot to atkal zemāk."
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Pievienot lietotāju"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Paroles maiņa notikusi veiksmīgi."
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Paroles maiņa: %s"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Saita administrācija"
-
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Jūs varat pievienot vēl vienu %s zemāk."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Pievienot %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Pievienots %s."
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Izmainīts %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Izdzēsts %s"
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Neviens lauks nav izmainīts"
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" nomainīts sekmīgi."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi. Jūs to varat regiģēt zemāk."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Izmainīt %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr ""
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr ""
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" sekmīgi izdzēsts."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Vai esat pārliecināts?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "Izmainīt vēsturi: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "Izvēlēties %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "Izvēlēties %s lai izmainītu"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Datubāzes kļūda"
-
-#: contrib/admin/views/decorators.py:10
-#: contrib/auth/forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Lūdzu ievadiet lietotājvārdu un paroli. Atceraties ka abi lauki ir reģistrjūtīgi."
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Pieslēdzieties"
-
-#: contrib/admin/views/decorators.py:62
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Lūdzu pieslēdzieties vēlreiz, jo jūsu sesija ir novecojusi. Neuztraucieties: Jūsu ievadītie dati ir saglabāti."
-
-#: contrib/admin/views/decorators.py:69
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Izskatās, ka Jūsu pārlūks neatbalsta sīkdatnes (cookies). Lūdzu ieslēdziet sīkdatņu atbalstu, pārlādējiet lapu un mēģiniet vēlreiz."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Lietotājvārdi nevar saturēt simbolu '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Jūsu e-pasta adrese nav jūsu lietotājvārds. Lietojiet '%s' tā vietā."
-
-#: contrib/admin/views/doc.py:46
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr ""
-
-#: contrib/admin/views/doc.py:77
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "filtrs:"
-
-#: contrib/admin/views/doc.py:135
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "skats:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikācija %r netika atrasta"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr ""
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr ""
-
-#: contrib/admin/views/doc.py:183
-#: contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219
-#: contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "modelis:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "saistītie `%(label)s.%(name)s` objekti"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "visi %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr ""
-
-#: contrib/admin/views/doc.py:291
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303
-#: contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310
-#: contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "Vesels skaitlis"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Pareizs vai Nepareizs)"
-
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Virkne (līdz pat %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Ar komatu atdalīti veselie skaitļi"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Datums (bez laika)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Datums (ar laiku)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "E-pasta adrese"
-
-#: contrib/admin/views/doc.py:298
-#: contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "Faila ceļš"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Decimāls skaitlis"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Loģiskais (Pareizs vai Nepareizs)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Relācija uz vecāka modeli"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Telefona numurs"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Teksts"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "Laiks"
-
-#: contrib/admin/views/doc.py:315
-#: contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "ASV štats (divi augšējā reģistra burti)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML teksts"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Patreiz:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Nomainīt:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datums:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Laiks:"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentācija"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Change password"
-msgstr "Paroles maiņa"
-
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Sākums"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Pievienot %(name)s"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Pēc %(filter_title)s "
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "Vēsture"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Datums/laiks"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Lietotājs"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "darbība"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Šim objektam nav izmaiņu vēsture. Tas visdrīzāk nav pievienots izmantojot administrācijas saitu."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Aiziet!"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Rādīt visu"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django saita administrācija"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administrēšana"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Servera kļūda"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Servera kļūda (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Servera kļūda <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Ir notikusi kļūda. Tas ir paziņots saita administratoriem ar e-pasta starpniecību un visdrīzākajā laikā tiks izlabots. Paldies par sapratni."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Kaut kas nav kārtībā ar Jūsu datubāzes instalāciju. Pārliecinieties vai attiecīgās tabulas ir izveidotas un attiecīgajam lietotājam ir tiesības lasīt datubāzi."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeļi, kas pieejami %(name)s aplikācijā."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Pievienot"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Izmainīt"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Jums nav tiesības jebko labot."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Nesenās darbības"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Manas darbības"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nav pieejams"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Lapa nav atrasta"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Mēs atvainojamies, bet pieprasītā lapa nevar tikt atrasta."
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtrs"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Apskatīt saitā"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Lūdzu izlabojiet kļūdu zemāk"
-msgstr[1] "Lūdzu izlabojiet kļūdas zemāk"
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Sakārtošana"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Sakārtojums:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Dzēst"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Izdzēšot objektu %(object_name)s '%(escaped_object)s' tiks dzēsti visi saistītie objekti , bet Jums nav tiesību dzēst sekojošus objektu tipus:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s \"%(escaped_object)s\"? Tiks dzēsti  asrī sekojoši saistītie objekti:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Jā, es esmu pārliecināts"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Sveicināti,"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Saglabāt kā jaunu"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Saglabāt un pievienot vēl vienu"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Saglabāt un turpināt labošanu"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Saglabāt"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Ievadiet jaunu paroli lietotājam <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Parole"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Parole (vēlreiz)"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Ievadot tādu pašu paroli, kā augstāk, pārbaudei."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Lietotāja vārds"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Paroles maiņa"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Paroles nomaiņa sekmīga"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Jūsu parole ir nomainīta."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Paroles pārstatīšana(reset)"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "Esat aizmirsuši savu paroli? Ievadiet e-pasta adresi zemāk un mēs pārstatīsim Jūsu paroli un aizsūtīsim jaunu pa e-pastu."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-pasta adrese:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Paroles pārstatīšana"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Paldies par pavadīto laiku māja lapā."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Pieslēgties vēlreiz"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Paroles pārstatīšana sekmīga"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Mēs aizsūtījām pa e-pastu jaunu paroli, ko Jūs esat apstiprinājis. Jūs to drīzumā saņemsiet."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Drošības nolūkos ievadiet veco paroli un pēc tam ievadiet Jūsu jauno paroli divreiz lai mēs varētu pārbaudīt, vai tā ir uzrakstīta pareizi."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Vecā parole:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Jaunā parole:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Apstiprināt paroli:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Nomainīt manu paroli"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Jūs esat saņēmuši šo e-pastu sakarā ar Jūsu pieprasīto paroles pārstatīšanu"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "Jūsu lietotāja kontam %(site_name)s saitā"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Jūsu jaunais parole ir: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Jūs vienmēr varat nomainīt šo paroli aizejot uz šo lapu:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Jūsu lietotājvārds, ja gadījumā Jūs esat to aizmirsis:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Paldies par mūsu saita lietošanu!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s komanda"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Grāmatzīmes"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dokumentācijas grāmatzīmes"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Dokumentācija šai lapai"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Pārvieto jūs no jebkuras lapas dokumentācijā uz skatu, kas ģenerē šo lapu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Parādīt objekta ID"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Parāda content-type un unikālo ID lapām, kas atspoguļo vientuļu objektu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Labot šo objektu (patreizējā logā)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Pāriet uz admininstrācijas lapu tām lapām, kas atspoguļo vientuļu objektu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Labot šo lapu (jaunā logā)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Tāpat kā iepriekš, tikai atver administrācijas lapu jaunā logā."
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "python modeļa klases nosaukums"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "satura tips"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "satura tips"
-
-#: contrib/auth/views.py:40
-msgid "Logged out"
-msgstr "Izlogojies"
-
-#: contrib/auth/models.py:44
-#: contrib/auth/models.py:64
-msgid "name"
-msgstr "nosaukums"
-
-#: contrib/auth/models.py:46
-msgid "codename"
-msgstr "kods"
-
-#: contrib/auth/models.py:49
-msgid "permission"
-msgstr "tiesība"
-
-#: contrib/auth/models.py:50
-#: contrib/auth/models.py:65
-msgid "permissions"
-msgstr "tiesības"
-
-#: contrib/auth/models.py:68
-msgid "group"
-msgstr "grupa"
-
-#: contrib/auth/models.py:69
-#: contrib/auth/models.py:109
-msgid "groups"
-msgstr "grupas"
-
-#: contrib/auth/models.py:99
-msgid "username"
-msgstr "lietotāja vārds"
-
-#: contrib/auth/models.py:99
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr ""
-
-#: contrib/auth/models.py:100
-msgid "first name"
-msgstr "vārds"
-
-#: contrib/auth/models.py:101
-msgid "last name"
-msgstr "uzvārds"
-
-#: contrib/auth/models.py:102
-msgid "e-mail address"
-msgstr "e-pasta adrese"
-
-#: contrib/auth/models.py:103
-msgid "password"
-msgstr "parole"
-
-#: contrib/auth/models.py:103
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr ""
-
-#: contrib/auth/models.py:104
-msgid "staff status"
-msgstr "personāla statuss"
-
-#: contrib/auth/models.py:104
-msgid "Designates whether the user can log into this admin site."
-msgstr "Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā."
-
-#: contrib/auth/models.py:105
-msgid "active"
-msgstr "aktīvs"
-
-#: contrib/auth/models.py:105
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Nosaka, ka lietotājs var pieslēgties Django administrācijas lapai. Ieteicams atcelt šo izvēli nevis dzēst lietotājus."
-
-#: contrib/auth/models.py:106
-msgid "superuser status"
-msgstr "superlietotāja statuss"
-
-#: contrib/auth/models.py:106
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr ""
-
-#: contrib/auth/models.py:107
-msgid "last login"
-msgstr "pēdējoreiz pieslēdzies"
-
-#: contrib/auth/models.py:108
-msgid "date joined"
-msgstr "datums, kad pievienojies"
-
-#: contrib/auth/models.py:110
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Papildus manuāli piešķirtajām atļaujām, šis lietotājs papildus iegūs visas atļaujas, kas piešķirtas grupām, kurās lietotājs atrodas."
-
-#: contrib/auth/models.py:111
-msgid "user permissions"
-msgstr "lietotāja atļaujas"
-
-#: contrib/auth/models.py:115
-msgid "user"
-msgstr "lietotājs"
-
-#: contrib/auth/models.py:116
-msgid "users"
-msgstr "lietotāji"
-
-#: contrib/auth/models.py:122
-msgid "Personal info"
-msgstr "Personīgā informācija"
-
-#: contrib/auth/models.py:123
-msgid "Permissions"
-msgstr "Atļaujas"
-
-#: contrib/auth/models.py:124
-msgid "Important dates"
-msgstr "Svarīgi datumi"
-
-#: contrib/auth/models.py:125
-msgid "Groups"
-msgstr "Grupas"
-
-#: contrib/auth/models.py:269
-msgid "message"
-msgstr "ziņojums"
-
-#: contrib/auth/models.py:282
-msgid "AnonymousUser"
-msgstr "Anonīms lietotājs"
-
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Lietotājs ar šādu lietotāja vārdu jau eksistē."
-
-#: contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Izskatās, ka Jūsu pārlūks neatbalsta cookies. Cookies ir obligātas, lai pieslēgtos."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Šis konts ir neaktīvs."
-
-#: contrib/auth/forms.py:85
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr ""
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Abi \"Jaunā parole\" lauki nesakrīt."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Jūsu iepriekšējā parole tika ievadīta nekorekti. Lūdzu ievadiet to atkārtoti."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "Ievadiet pasta indeksu. Atstarpe ir nepieciešama starp abām pasta indeksa daļām."
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Ievadiet pasta indeksu XXXXX-XXX formātā."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefona numuriem jābūt XXX-XXXX-XXXX formātā."
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "Šis lauks drīkst saturēt tikai skaitļus."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Šī lauka vērtībai jabūt vismaz 11 cipariem vai 14 simboliem."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "Šim laukam jasastāv vismaz no 14 cipariem."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Ievadiet pasta indeksu, kurš sastāv no 4 cipariem."
-
-#: contrib/localflavor/fr/forms.py:17
-#: contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Ievadiet pasta indeksu formātā XXXXX."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburga"
-
-#: contrib/localflavor/de/de_states.py:11
-#, fuzzy
-msgid "Hessen"
-msgstr "sesija"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:60
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr "Ievadiet korektu vāciešu identifikācijas nummuru XXXXXXXXXXX-XXXXXXX-XXXXXXX-X formātā."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-#, fuzzy
-msgid "Iwate"
-msgstr "Datums:"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokija"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-#, fuzzy
-msgid "Shimane"
-msgstr "Izmainīt"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-#, fuzzy
-msgid "Ehime"
-msgstr "Laiks"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinava"
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Ievadiet pasta indeksu XXXXXXX vai XXX-XXXX formātā."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-#, fuzzy
-msgid "Berne"
-msgstr "lietotāja vārds"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-#, fuzzy
-msgid "Glarus"
-msgstr "Grupas"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-#, fuzzy
-msgid "Lucerne"
-msgstr "lietotāja vārds"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-#, fuzzy
-msgid "Thurgau"
-msgstr "Ceturdiena"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-#, fuzzy
-msgid "Zug"
-msgstr "aug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:18
-#: contrib/localflavor/no/forms.py:15
-msgid "Enter a zip code in the format XXXX."
-msgstr "Ievadiet pasta indeksu formātā XXXX."
-
-#: contrib/localflavor/ch/forms.py:90
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Lūdzu ievadiet korektu šveiciešu identifikācijas vai pases nummuru X1234567<0 vai 1234567890 formātā."
-
-#: contrib/localflavor/is_/forms.py:16
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Lūdzu ievadiet korektu islandiešu identifikācijas nummuru XXXXXX-XXXX formātā."
-
-#: contrib/localflavor/is_/forms.py:30
-msgid "The Icelandic identification number is not valid."
-msgstr "Islandiešu identifikācijas nummurs nav korekts."
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Ievadiet korektu pasta indeksu."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Ievadiet korektu sociālās drošības nummuru."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Ievadiet korektu VAT nummuru."
-
-#: contrib/localflavor/no/forms.py:36
-msgid "Enter a valid Norwegian social security number."
-msgstr "Lūdzu ievadiet korektu norvēģu sociālās drošības nummuru."
-
-#: contrib/localflavor/cl/forms.py:21
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Ievadiet korektu čīliešu RUT XX.XXX.XXX-X formātā."
-
-#: contrib/localflavor/cl/forms.py:26
-msgid "Enter valid a Chilean RUT"
-msgstr "Ievadiet korektu čīliešu RUT"
-
-#: contrib/localflavor/fi/forms.py:40
-#: contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr "Ievadiet korektu somu sociālās drošības nummuru."
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "sesijas atslēga"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "sesijas dati"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "beigu datums"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "sesija"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "sesijas"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Piemēram: '/about/contact/'. Pārliecinieties, ka esat ievietojuši sākuma un beigu slīpsvītras."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "virsraksts"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "saturs"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "ieslēgt komentārus"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "šablona nosaukums"
-
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Piemēram: 'flatpages/contact_page.html'. Ja tas nav norādīts, sistēma lietos  'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "reģistrācija obligāta"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ja tas ir atzīmēts, tikai lietotāji, kas ir pieslēgušies sistēmās redzēs šo lapu."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "vienkārša lapa"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "vienkāršas lapas"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Pirmdiena"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Otrdiena"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Trešdiena"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Ceturdiena"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Piektdiena"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sestdiena"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Svētdiena"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Janvāris"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Februāris"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "March"
-msgstr "Marts"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "April"
-msgstr "Aprīlis"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "May"
-msgstr "Maijs"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "June"
-msgstr "Jūnijs"
-
-#: utils/dates.py:15
-#: utils/dates.py:27
-msgid "July"
-msgstr "Jūlijs"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Augusts"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Septembris"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Oktobris"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Novembris"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Decembris"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "jūn"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "jūl"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "gads"
-msgstr[1] "gadi"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mēnesis"
-msgstr[1] "mēneši"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "nedēļa"
-msgstr[1] "nedēļas"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "diena"
-msgstr[1] "dienas"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "stunda"
-msgstr[1] "stundas"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minūte"
-msgstr[1] "minūtes"
-
-#: utils/timesince.py:40
-#, python-format
-msgid "%d milliseconds"
-msgstr "%d millisekundes"
-
-#: utils/timesince.py:41
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:47
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/dateformat.py:40
-#, fuzzy
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:41
-#, fuzzy
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:46
-#, fuzzy
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:47
-#, fuzzy
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "pusnakts"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "dienas vidus"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "DATE_FORMAT"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "DATETIME_FORMAT"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "TIME_FORMAT"
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "jā,nē,varbūt"
-
-#: template/defaultfilters.py:520
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:522
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:524
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:525
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
diff --git a/webapp/django/conf/locale/lv/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/lv/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 6f9a8a8..0000000
--- a/webapp/django/conf/locale/lv/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/lv/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/lv/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 2e1d307..0000000
--- a/webapp/django/conf/locale/lv/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,119 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-15 10:46+1100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Gatis Tomsons <gatis.tomsons@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Pieejams %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Izvēlēties visu"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Pievienot"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Izņemt"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Izvēlies %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Izvēlies un klikšķini"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Attīrīt visu"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Janvāris Februāris Marts Aprīlis Maijs Jūnijs Jūlijs Augusts Septembris Oktobris Novembris"
-"Decembris"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Svētdiena Pirmdiena Otrdiena Trešdiena Ceturtdiena Piektdiena Sestdiena"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M T W T F S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Tagad"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Pulkstens"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Izvēlieties laiku"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Pusnakts"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Pusdienas laiks"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Atcelt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Šodien"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalendārs"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Vakar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Rīt"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Parādīt"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Slēpt"
diff --git a/webapp/django/conf/locale/mk/LC_MESSAGES/django.mo b/webapp/django/conf/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 6dfd651..0000000
--- a/webapp/django/conf/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/mk/LC_MESSAGES/django.po b/webapp/django/conf/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 5e531a4..0000000
--- a/webapp/django/conf/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4353 +0,0 @@
-# translation of django.po to Macedonian
-#
-# Georgi Stanojevski <glisha@gmail.com>, 2006, 2007, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-06-18 12:26+0200\n"
-"PO-Revision-Date: 2008-06-28 16:36+0200\n"
-"Last-Translator: Georgi Stanojevski <glisha@gmail.com>\n"
-"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Арапски"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Бенгалски"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Бугарски"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "Каталански"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Чешки"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Велшки"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Дански"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Германски"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Грчки"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Англиски"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Шпански"
-
-#: conf/global_settings.py:55
-msgid "Argentinean Spanish"
-msgstr "Аргентиско шпански"
-
-#: conf/global_settings.py:56
-msgid "Basque"
-msgstr "Баскиски"
-
-#: conf/global_settings.py:57
-msgid "Persian"
-msgstr "Персиски"
-
-#: conf/global_settings.py:58
-msgid "Finnish"
-msgstr "Фински"
-
-#: conf/global_settings.py:59
-msgid "French"
-msgstr "Француски"
-
-#: conf/global_settings.py:60
-msgid "Irish"
-msgstr "Ирски"
-
-#: conf/global_settings.py:61
-msgid "Galician"
-msgstr "Галски"
-
-#: conf/global_settings.py:62
-msgid "Hungarian"
-msgstr "Унгарски"
-
-#: conf/global_settings.py:63
-msgid "Hebrew"
-msgstr "Еврејски"
-
-#: conf/global_settings.py:64
-msgid "Croatian"
-msgstr "Хрватски"
-
-#: conf/global_settings.py:65
-msgid "Icelandic"
-msgstr "Исландски"
-
-#: conf/global_settings.py:66
-msgid "Italian"
-msgstr "Италијански"
-
-#: conf/global_settings.py:67
-msgid "Japanese"
-msgstr "Јапонски"
-
-#: conf/global_settings.py:68
-msgid "Georgian"
-msgstr "Грузиски"
-
-#: conf/global_settings.py:69
-msgid "Korean"
-msgstr "Корејски"
-
-#: conf/global_settings.py:70
-msgid "Khmer"
-msgstr "Кмер"
-
-#: conf/global_settings.py:71
-msgid "Kannada"
-msgstr "Канада"
-
-#: conf/global_settings.py:72
-msgid "Latvian"
-msgstr "Латвиски"
-
-#: conf/global_settings.py:73
-msgid "Macedonian"
-msgstr "Македонски"
-
-#: conf/global_settings.py:74
-msgid "Dutch"
-msgstr "Холандски"
-
-#: conf/global_settings.py:75
-msgid "Norwegian"
-msgstr "Норвешки"
-
-#: conf/global_settings.py:76
-msgid "Polish"
-msgstr "Полски"
-
-#: conf/global_settings.py:77
-msgid "Portugese"
-msgstr "Португалкски"
-
-#: conf/global_settings.py:78
-msgid "Brazilian Portuguese"
-msgstr "Бразилско португалски"
-
-#: conf/global_settings.py:79
-msgid "Romanian"
-msgstr "Романски"
-
-#: conf/global_settings.py:80
-msgid "Russian"
-msgstr "Руски"
-
-#: conf/global_settings.py:81
-msgid "Slovak"
-msgstr "Словачки"
-
-#: conf/global_settings.py:82
-msgid "Slovenian"
-msgstr "Словенечки"
-
-#: conf/global_settings.py:83
-msgid "Serbian"
-msgstr "Српски"
-
-#: conf/global_settings.py:84
-msgid "Swedish"
-msgstr "Шведски"
-
-#: conf/global_settings.py:85
-msgid "Tamil"
-msgstr "Тамил"
-
-#: conf/global_settings.py:86
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:87
-msgid "Turkish"
-msgstr "Турски"
-
-#: conf/global_settings.py:88
-msgid "Ukrainian"
-msgstr "Украински"
-
-#: conf/global_settings.py:89
-msgid "Simplified Chinese"
-msgstr "Упростен кинески"
-
-#: conf/global_settings.py:90
-msgid "Traditional Chinese"
-msgstr "Традиционален кинески"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Од %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Сите"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Било кој датум"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Денеска"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Последните 7 дена"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Овој месец"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Оваа година"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Да"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Не"
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Непознато"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "време на акција"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "идентификационен број на објект"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "object repr"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "знакче за акција"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "измени ја пораката"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "ставка во записникот"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "ставки во записникот"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Страницата не е најдена"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Се извинуваме, но неможе да ја најдеме страницата која ја баравте."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Дома"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Грешка со серверот"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Грешка со серверот (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Грешка со серверот <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Имаше грешка. Истата беше пријавена на администраторите и ќе биде поправена "
-"во брзо време. Ви благодариме за вашето трпение."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Добредојдовте,"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Документација"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Промени лозинка"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Одјава"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Џанго администрација на сајт"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Џанго администрација"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Додади"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "Историја"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Погледни на сајтот"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Ве молам поправете ја грешката подолу."
-msgstr[1] "Ве молам поправете ги грешките подолу."
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Подредување"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Подреди:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Додади %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Избриши"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на "
-"поврзаните објекти, но со вашата сметка немате доволно привилегии да ги "
-"бришете следните типови на објекти:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Сигурне сте дека сакате да ги бришете %(object_name)s „%(escaped_object)s“? "
-"Сите овие ставки ќе бидат избришани:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Да, сигурен сум"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Од %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Филтер"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Достапни модели во апликацијата %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Измени"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Немате дозвола ништо да уредува."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Последни акции"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Мои акции"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Ништо не е достапно"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Нешто не е во ред со инсталацијата на базата на податоци. Потврдете дека "
-"соодветни табели во базата се направени и потврдете дека базата може да биде "
-"прочитана од соодветниот корисник."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Корисник:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Лозинка:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Најава"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Датум/час"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Корисник"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Акција"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j M Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Овој објект нема историја на измени. Најверојатно не бил додаден со админ "
-"сајтот."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Прикажи ги сите"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Оди"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 резултат"
-msgstr[1] "%(counter)s резултати"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "вкупно %(full_result_count)s"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Сними како нова"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Сними и додади уште"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Сними и продолжи со уредување"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Сними"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Прво, внесете корисничко име и лозинка. Потоа ќе можете да уредувате повеќе "
-"кориснички опции."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Корисник"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Лозинка"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Лозинка (повторно)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Заради верификација внесете ја истата лозинка како и горе."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Внесете нова лозинка за корисникот <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Обележувачи"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Обележувачи на документација"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">За да инсталирате обележувачи, влечете ја врската до "
-"вашата\n"
-"лента со алатки, или кликнете со десното копче  и додадете го во вашите \n"
-"обележувачи. Сега може да го изберете обележувачот од било која страница "
-"на \n"
-"сајтот. Имајте на ум дека за некои од овие обележувачи е потребно да го "
-"гледате \n"
-"сајтот од компјутер кој е означен како „внатрешен“ (разговарајте со вашиот \n"
-"администратор ако не сте сигурни).</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Документација за оваа страница"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Ве носи од било која страница од документацијата до погледот кој ја генерира "
-"таа страница."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Прикажи идентификационен број на објектот"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Го прикажува типот на содржината и уникатниот идентификационен број за "
-"страници  кои претставуваат единечен објект."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Уреди го овој објект (во овој прозорец)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Скокнува до админ страницата за страници кои претставуваат единечен објект."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Уреди го овој објект (во нов прозорец)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Како погоре, но ја отвара админ страницата во нов прозорец."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Ви благодариме што денеска поминавте квалитетно време со интернет страницава."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Логирајте се повторно"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Измена на лозинка"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Успешна промена на лозинката"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "Вашата лозинка беше сменета."
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Заради сигурност ве молам внесете ја вашата стара лозинка и потоа внесете ја "
-"новата двапати за да може да се потврди дека правилно сте ја искуцале."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Стара лозинка:"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Нова лозинка:"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Потврди лозинка:"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Промени ја мојата лозинка"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Ресетирање на лозинка"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Успешно е ресетирањето на лозинката"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Ви пративме нова лозинка на адресата која ја внесовте.Треба да ја примите за "
-"кратко време."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Ја добивата оваа порака бидејќи побаравте да се ресетира вашата лозинка"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "за корисничката сметка на %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Вашата нова лозинка е: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Чуствувајте се слободно да ја промените оваа лозинка преку оваа страница:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Вашето корисничко име, во случај да сте го заборавиле:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Ви благодариме што го користите овој сајт!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Тимот на %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Сте ја заборавиле вашата лозинка? Внесете ја вашата е-пошта подолу, ќе ја "
-"ресетираме вашата лозинка и новата ќе ви ја пратиме по е-пошта."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Е-пошта:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Ресетирај ја мојата лозинка"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Датум:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Време:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Моментално:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Измена:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Сите датуми"
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" беше успешно додаден."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Подолу можете повторно да го уредите."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Додади корисник"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Успешна промена на лозинката."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Промени лозинка: %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Ве молам внесете точно корисничко име и лозинка. Имајте на ум дека и во "
-"двете полиња се битни големите и малите букви."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Ве молам најавете се повторно бидејќи вашата сесија е истечена. Не се "
-"грижете. Вашите внесови беа зачувани."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Изгледа дека вашиот прелистувач не е конфигуриран да прифаќа колачиња. Ве "
-"молам овозможете ги колачињата, превчитајте ја страта и пробајте повторно."
-
-#: contrib/admin/views/decorators.py:89
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Вашата е-пошта не е вашето корисничко име. Пробајте со „%s“."
-
-#: contrib/admin/views/decorators.py:93
-msgid "Usernames cannot contain the '@' character."
-msgstr "Корисничките имиња неможе да го содржат „@“ знакот."
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "таг:"
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "филтер:"
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "поглед:"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "Не е најдена апликацијата %r"
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Моделот %(name)r не е најден во апликацијата %(label)r"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "поврзаниот`%(label)s.%(type)s` објект"
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "модел:"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "поврзани `%(label)s.%(name)s` објекти"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "сите %s"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "број на %s"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Полиња на %s објекти"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Цел број"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Логичка (или точно или неточно)"
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Збор (до %(max_length)s)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Целобројни вредности одделени со запирка"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Датум (без час)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Датум (со час)"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Децимален број"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "Адреса на е-пошта"
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Патека на датотека"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Децимален број"
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "ИП адреса"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Логичка (точно,неточно или празно)"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Релација со родителскиот модел"
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Телефонски број"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Текст"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Час"
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "Држава во САД (две големи букви)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "XML текст"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не изгледа дека е url објект"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Администрација на сајт"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Подолу можете да додате уште еден %s."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Додади %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Додадено %s."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "и"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Изменета %s."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Избришана %s."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Не беше изменето ниедно поле."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" беше успешно изменета."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" беше успешно додадена.Подолу можете повторно да ја "
-"уредите."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Измени %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Еден или повеќе %(fieldname)s во %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Еден или повеќе %(fieldname)s во %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" беше избришана успешно."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Сигурни сте?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Историја на измени: %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Изберет %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Изберете %s за измена"
-
-#: contrib/admin/views/main.py:765
-msgid "Database error"
-msgstr "Грешка во базата со податоци"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Двете полиња со лозинките не се совпаѓаат."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Веќе постои корисник со тоа корисничко име."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Не изгледа дека вашиот прелистувач има овозможено колачиња. Колачињата се "
-"потребни за да се најавите."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Оваа сметка е неактивна."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Нема регистрирано корисник со оваа адреса за е-пошта. Сигурни ли сте дека "
-"сте регистрирани?"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Ресетирање на лозинка на %s"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Двете нови лозинки не се совпаѓаат."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Не ја внесовте точно вашата стара лозинка. Ве молам внесете ја повторно."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "име"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "кодно име"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "привилегија"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "привилегии"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "група"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:148
-msgid "groups"
-msgstr "групи"
-
-#: contrib/auth/models.py:138
-msgid "username"
-msgstr "корисничко име"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Дозволени се најмногу 30 знаци. Дозволени се само алфанумерички знаци "
-"(букви, цифри и долна црта)."
-
-#: contrib/auth/models.py:139
-msgid "first name"
-msgstr "име"
-
-#: contrib/auth/models.py:140
-msgid "last name"
-msgstr "презиме"
-
-#: contrib/auth/models.py:141
-msgid "e-mail address"
-msgstr "е-пошта"
-
-#: contrib/auth/models.py:142
-msgid "password"
-msgstr "лозинка"
-
-#: contrib/auth/models.py:142
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Користете '[algo]$[salt]$[hexdigest]' или користете ја <a href=\"password/"
-"\">формата за промена на лозинката</a>."
-
-#: contrib/auth/models.py:143
-msgid "staff status"
-msgstr "статус на администраторите"
-
-#: contrib/auth/models.py:143
-msgid "Designates whether the user can log into this admin site."
-msgstr "Означува дали корисникот може да се логира во сајтот за администрација."
-
-#: contrib/auth/models.py:144
-msgid "active"
-msgstr "активен"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Означува дали корисникот треба да биде активен. Одштиклирајте го ова наместо да "
-"бришете корисници."
-
-#: contrib/auth/models.py:145
-msgid "superuser status"
-msgstr "статус на суперкорисник"
-
-#: contrib/auth/models.py:145
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Означува дека овој корисник ги има сите привилегии без експлицитно да се "
-"доделуваат сите."
-
-#: contrib/auth/models.py:146
-msgid "last login"
-msgstr "последна најава"
-
-#: contrib/auth/models.py:147
-msgid "date joined"
-msgstr "датум на зачленување"
-
-#: contrib/auth/models.py:149
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Како дополнување на рачно доделени привилегии, овој корисник ќе ги добие "
-"автоматски и сите привилегии за секоја група во која тој/таа членува."
-
-#: contrib/auth/models.py:150
-msgid "user permissions"
-msgstr "кориснички привилегии"
-
-#: contrib/auth/models.py:154
-msgid "user"
-msgstr "корисник"
-
-#: contrib/auth/models.py:155
-msgid "users"
-msgstr "корисници"
-
-#: contrib/auth/models.py:161
-msgid "Personal info"
-msgstr "Лични информации"
-
-#: contrib/auth/models.py:162
-msgid "Permissions"
-msgstr "Привилегии"
-
-#: contrib/auth/models.py:163
-msgid "Important dates"
-msgstr "Важни датуми"
-
-#: contrib/auth/models.py:164
-msgid "Groups"
-msgstr "Групи"
-
-#: contrib/auth/models.py:323
-msgid "message"
-msgstr "порака"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Одјавен"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
-msgid "object ID"
-msgstr "object ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "наслов"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
-msgid "comment"
-msgstr "коментар"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "популарност #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "популарност #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "популарност #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "популарност #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "популарност #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "популарност #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "популарност #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "популарност #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "е валидна популарност"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
-msgid "date/time submitted"
-msgstr "датум/време пријавен"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
-msgid "is public"
-msgstr "е јавен"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "е отстранет"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Штиклирајте го ова поле ако коментарот не е пригоден. Наместо него пораката "
-"„Овој коментар беше отстранет“ ќе биде прикажана."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "коментари"
-
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
-msgid "Content object"
-msgstr "Content објект"
-
-#: contrib/comments/models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Напишан од %(user)s на %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:178
-msgid "person's name"
-msgstr "име на личноста"
-
-#: contrib/comments/models.py:181
-msgid "ip address"
-msgstr "ип адреса"
-
-#: contrib/comments/models.py:183
-msgid "approved by staff"
-msgstr "одобрено од администраторите"
-
-#: contrib/comments/models.py:187
-msgid "free comment"
-msgstr "слободен коментар"
-
-#: contrib/comments/models.py:188
-msgid "free comments"
-msgstr "слободни коментари"
-
-#: contrib/comments/models.py:250
-msgid "score"
-msgstr "поени"
-
-#: contrib/comments/models.py:251
-msgid "score date"
-msgstr "датум поени"
-
-#: contrib/comments/models.py:255
-msgid "karma score"
-msgstr "карма поен"
-
-#: contrib/comments/models.py:256
-msgid "karma scores"
-msgstr "карма поени"
-
-#: contrib/comments/models.py:260
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d гласање за популарност од %(user)s"
-
-#: contrib/comments/models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Овој коментар беше означен од %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:285
-msgid "flag date"
-msgstr "датум на означување"
-
-#: contrib/comments/models.py:289
-msgid "user flag"
-msgstr "корисничка ознака"
-
-#: contrib/comments/models.py:290
-msgid "user flags"
-msgstr "кориснички ознаки"
-
-#: contrib/comments/models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "Означено од %r"
-
-#: contrib/comments/models.py:300
-msgid "deletion date"
-msgstr "датум на бришење"
-
-#: contrib/comments/models.py:303
-msgid "moderator deletion"
-msgstr "бришење од модератор"
-
-#: contrib/comments/models.py:304
-msgid "moderator deletions"
-msgstr "бришења од модератор"
-
-#: contrib/comments/models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Бришење од модератор од %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Ја заборавите вашата лозинка?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Популарност"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Потребно"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "По желба"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Објави фотографија"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Коментар:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Прегледај"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Вашето име:"
-
-#: contrib/comments/views/comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr ""
-"Ова гласање за популарност е потребно бидејќи внесовте најмалку уште едно "
-"друго."
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Овој коментар беше пратен од корисник кој пратил помалку од %(count)s "
-"коментар:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Овој коментар беше пратен од корисник кој пратил помалку од %(count)s "
-"коментари:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Овој коментар беше пратен од недоверлив корисник:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Дозволено е само POST"
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Едно или повеќе од потребните полиња не беше пополнето"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Некој ја променил формата за коментари (сигурносен прекршок)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Формата за коментар имаше неправилен „target“ параметар - идентификациониот "
-"број на објектот беше неправилен"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Формата за коментар не овозможи ниту „преглед“ ниту „праќање“"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Анонимните корисници неможе да гласаат"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Невалидно ИД на коментарот"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Нема гласање за самиот себе"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "има на класата на питон моделите"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "content type"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "content types"
-
-#: contrib/flatpages/models.py:9
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"На пр. „/za/kontakt/“. Осигурајте се да имате коса црта и на крајот и на "
-"почетокот."
-
-#: contrib/flatpages/models.py:10
-msgid "title"
-msgstr "наслов"
-
-#: contrib/flatpages/models.py:11
-msgid "content"
-msgstr "содржина"
-
-#: contrib/flatpages/models.py:12
-msgid "enable comments"
-msgstr "овозможи коментари"
-
-#: contrib/flatpages/models.py:13
-msgid "template name"
-msgstr "име на шаблонот"
-
-#: contrib/flatpages/models.py:14
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"На пр. „flatpages/kontakt.html'. Ако не го внесете ова, системот ќе користи "
-"„flatpages/default.html“."
-
-#: contrib/flatpages/models.py:15
-msgid "registration required"
-msgstr "потребна е регистрација"
-
-#: contrib/flatpages/models.py:15
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ако ова е штиклирано, само најавените корисници ќе можат да ја гледаат оваа "
-"страница."
-
-#: contrib/flatpages/models.py:20
-msgid "flat page"
-msgstr "статична страница"
-
-#: contrib/flatpages/models.py:21
-msgid "flat pages"
-msgstr "статични страници"
-
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Напредни можности"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "st"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "nd"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f милион"
-msgstr[1] "%(value).1f милион"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f милијарда"
-msgstr[1] "%(value).1f милијарда"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f трилион"
-msgstr[1] "%(value).1f трилион"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "еден"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "два"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "три"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "четири"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "пет"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "шест"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "седум"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "осум"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "девет"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "денеска"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "утре"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "вчера"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Внесете поштенски број во форматот NNNN или ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Во ова поле смее да бидат само бројки."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Во ова поле смее да има 7 или 8 цифри."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Внесете правилен CUIT во XX-XXXXXXXX-X or XXXXXXXXXXXX формат."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Неправилен CUIT."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Внесете 4 цифрен поштенски број."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Внесете правилен поштенски број во форматот XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Телефонските броеви мора да бидат во XX-XXXX-XXXX форматот."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "Изберете правилна бразилска држава. Оваа држава не е од достапните држави."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Неправилен CPF број."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Во ова поле смее да има најмногу 11 цифри или 14 знаци."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Неправилен CNPJ број."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Во ова поле треба да има најмалку 14 цифри"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Внесете правилен поштенски број во формат XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Внесте правилен канадски број за осигурување во XXX-XXX-XXX форматот."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Женева"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Цирих"
-
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Внесете правилен поштенски број во форматот XXXX."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Внесете правилен швајцарски број на пасош во X1234567<0 или "
-" 1234567890 формат."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Внесете правилeн RUT за Чиле."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Внесете правилен RUT за Чиле. Форматот е Xx.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "RUT бројот за Чиле е невалиден."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Баден-Вуертемберг"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Баварија"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Берлин"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Бранденбург"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Бремен"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Хамбург"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Хесен"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Мекленбург - Западна Померанија"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Долна Саксонија"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Северна Рајна-Вестфалија"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Рајналенд-Палатинате"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Сарленд"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Саксонија"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Саксонија-Анхалт"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Шлесвиг-Холштајн"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Турингиа"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Внесете правилен поштенски број во формат XXXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Внесете правилен број на лична карта во Германија во XXXXXXXXXXX-XXXXXXX-"
-"XXXXXXX-X  форматот."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Авила"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Illes Balears"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Барцелона"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Caceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castello"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Кордоба"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaen"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Леон"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Луго"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Мадрид"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Малага"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Санта Круз и Тенерифе"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Севиља"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Толедо"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Валенсија"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Сарагоса"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Андалузија"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Арагон"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principality of Asturias"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Острови Балеарик"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Баскија"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Канарски острови"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Кастиља ла Манча"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Кастиња и Леон"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Каталонија"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Екстремадура"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Галиција"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Регион Мурција"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Foral Community of Navarre"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valencian Community"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Внесете поштенски број во опсег и формат 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr "Внесете правилен телефонски број во еден од формативе 6XXXXXXXX, 8XXXXXXXX или 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Ве молам внесете правиелн NIF, NIE или CIF."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Ве молам внесете валиден NIF или NIE."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Неправилна контролна сума за NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Неправилна контролна сума за NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Неправилна контролна сум за CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Внесете правилна банкарска сметка во формат XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Неправилна контролна сума за бројот на банкарската сметка."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Внесте правилен фински матичен број."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Внесете правилен поштенски број во форматот  XXXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Внесете валиден идентификационен број од Исланд. Форматот е XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Исландскиот идентификационент број е невалиден."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Внесете правилен поштенски број."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Внесете правилен осигурителен број."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Внесете правилен даночен број."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Внесете поштенски број во форматот XXXXXXX или XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Хокаидо"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Аомори"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Ивате"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Мијаги"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Акита"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Јамагата"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Фукушима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ибараки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Точиги"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Гунма"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Саитама"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Чиба"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Токио"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Канагава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Јаманаши"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Нагано"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Нигита"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Тојама"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ишикава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Фукуи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Гифу"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Шизоука"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Аичи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Мие"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Шига"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Кјото"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Осака"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Хиого"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Нара"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Вакајама"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Тотори"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Шимане"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Окајама"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Хирошима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Јамагучи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Токушима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Кагава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Еиме"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Кочи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Фукуока"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Сага"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Нагасаки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Кумамото"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Оита"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Мијазаки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Кагошима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Окинава"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Баја Калифорнија"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Кампеш"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Чиапас"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Колима"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Дуранго"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Гуереро"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Хидалго"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Џалиско"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Estado de México"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Куантана Ро"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Синалоа"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "Сан Луис Потоси"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Сонора"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Табаско"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Тамаулипас"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Веракруз"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Јукатан"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Зацатекас"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Внесете правилен поштенски код"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Внесете валиден телефонски број"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Внесете валиден осигурителен број"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Дренте"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Флеволанд"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Фраисланд"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Гелдерланд"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Гронинген"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Лимбург"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Утрехт"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Зиланд"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Ве молам внесете правилен норвешки матичен број."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Во ова поле мора да се внесат 8 цифри."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Во ова поле се потребни 11 цифри."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "Националниот идентификационен број се состои од 11 цифири."
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Погрешна проверка за Националниот идентификационен број."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Внесете даночен број (NIP) во форматот XXX-XXX-XX-XX или XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Даночниот број (NIP) е погрешен."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "Националниот бизнис регистрациски број (REGON) се состои од 7 или 9 цифри."
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Неправилна контролна сум за Националниот бизнис регистрационен број (REGON)."
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Внесете правилен поштенски број во формат XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Долна Силесиа"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Лублин"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Лубус"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Лодз"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Lesser Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Масовиа"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Ополе"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Субкарпатиа"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Подласи"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Померанија"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Силесиа"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Greater Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Западна Померанија"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Внесете поштенски број во форматот XXXXX или XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Банска Бистрица"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Банска Стиавница"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Бардејов"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Бановце над Бебраво"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Брезно"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Братислава I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Братислава II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Братислава III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Братислава IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Братислава V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Битка"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Кадка"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Детва"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Гелника"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Хлоховец"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Хумен"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Кезмарок"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Комарно"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Кошице I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Кошице II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Кошице III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Кошице IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Кошице - околина"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Крупина"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Левице"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Левока"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Луценец"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Мартин"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Наместово"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Нитра"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Партизанске"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Пезинок"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Полтар"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Попрад"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Пресов"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Пучов"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Ревука"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Рознава"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Рузомберок"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Сабинов"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Сенец"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Сеника"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Скалица"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Шнина"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Собранце"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Стара Љубовна"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Стропков"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Свидник"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Сала"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Тополчани"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Требисов"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Тренцин"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Трнава"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Тврдосин"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Злате Моравце"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Зволен"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Зарновица"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Зилина"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banska Bystrica region"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Братиславски регион"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Кошице регион"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Нитра регион"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Пресов регион"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Тренцин регион"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Трнава регион"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Зилина регион"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Внесете правилен поштенски код."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Бедфордшир"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Букингхамшир"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Чешир"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Кумбриа"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Дербишир"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Девон"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Дорсет"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Дурам"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "Источен Сасекс"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Есекс"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Поширок Лондон"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Поширок Манчестер"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Хемпшир"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Хертфордшир"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Кент"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Ланкашир"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Линколншир"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Мерсејсајд"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Норфолк"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "Северен Јоркшир"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Нортхамтоншир"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Нотингхамшир"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Оксфордшир"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Шропшир"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Сомерсет"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "Јужен Јоркшир"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Стафордшир"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Суфолк"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "Западен Мидландс"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "Западен Сасекс"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "Западен Јоркшир"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Вилтшир"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "County Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Гвент"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "Јужен Гламорга"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "Западен Гламорган"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Централна Шкотска"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Грампиан"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Англија"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Северна Ирска"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Шкотска"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Велс"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Внесете поштенски број во форматот XXXXX или XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Внесте правилен матичен број за САД во XXX-XX-XXXX форматот."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Внесете правилен јужно афрички број за идентификација"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Внесете правилен јужно афрички поштенски код"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Источен Кејп"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "пренасочи од"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ова треба да биде апсолутна патека без името на домејнот. На пр. „/nastani/"
-"prebaraj/“."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "пренасочи кон"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ова може да биде или апсолутна патека (како погоре) или цела адреса "
-"почувајќи со „http://“."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "пренасочување"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "пренасочувања"
-
-#: contrib/sessions/models.py:41
-msgid "session key"
-msgstr "клуч на сесијата"
-
-#: contrib/sessions/models.py:42
-msgid "session data"
-msgstr "податоци од сесијата"
-
-#: contrib/sessions/models.py:43
-msgid "expire date"
-msgstr "датум на истекување"
-
-#: contrib/sessions/models.py:48
-msgid "session"
-msgstr "сесија"
-
-#: contrib/sessions/models.py:49
-msgid "sessions"
-msgstr "сесии"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "домејн"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "име кое се прикажува"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr "сајт"
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr "сајтови"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Оваа вредност смее да има само букви, бројки или долни црти."
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "Оваа вредност смее да има само букви, бројки, долни црти, црти или коси црти."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Оваа вредност смее да содржи само букви, бројки, долни црти или црти."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Големи букви не се дозволени."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Мали букви не се дозволени."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Внесете само цифри одделени со запирки."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Внесете валидни адреси за е-пошта одделени со запирки."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Ве молам внесете валидна ИП адреса."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Празни вредности не се дозволени."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Ненумерички знаци не се дозволени тука."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Оваа вредност не смее да биде само од цифри."
-
-#: core/validators.py:128 newforms/fields.py:152
-msgid "Enter a whole number."
-msgstr "Внеси цел број."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Дозволени се само букви."
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Годината мора да биде 1900 или покасно."
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Неправилен датум: %s"
-
-#: core/validators.py:156 db/models/fields/__init__.py:548
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Внесете правилен датум во форматот ГГГГ-ММ-ДД."
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Внесете правилно време во форматот HH:MM."
-
-#: core/validators.py:165 db/models/fields/__init__.py:625
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Внесете правилен датум/време во форматот ГГГГ-ММ-ДД ЧЧ:ММ."
-
-#: core/validators.py:170 newforms/fields.py:403
-msgid "Enter a valid e-mail address."
-msgstr "Внесeте правилна адреса за е-пошта."
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Не беше пратена датотека. Проверете го типот на енкодирање на формата."
-
-#: core/validators.py:193 newforms/fields.py:459
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Качете валидна фотографија. Датотеката која ја качивте или не беше "
-"фотографија или беше расипана датотеката."
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Адресата %s не покажува кон валидна фотографија."
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Телефонските броеви мора да бидат во XXX-XXX-XXXX форматот. „%s“ не е "
-"валиден."
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Адресата „%s“ не покажува кон QuickTime видео."
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr "Задолжителна е правилна адреса."
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Задолжителен е правилен HTML. Грешките се:\n"
-"%s"
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Неправилно формиран XML: %s"
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Неправилна адреса: %s"
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Адресата %s е скршена врска."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Внесете правилна скратеница за држава во САД."
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Внимавајте на јазикот. Тука не е дозволен зборот %s."
-msgstr[1] "Внимавајте на јазикот. Тука не се дозволени зборовите %s."
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Ова поле мора да соодејствува со полето „%s“."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Ве молам внесете нешто во барем едно поле."
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Ве молам внесете во двете полиња или оставете ги двете празни."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Ова поле мора да биде зададено ако %(field)s е %(value)s"
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Ова поле мора да биде зададено ако %(field)s не е %(value)s"
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Дупликат вредности не се дозволени."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Оваа вредноста мора да биде помеѓу %(lower)s и %(upper)s."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Оваа вредноста мора да биде најмалку %s."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Оваа вредност не смее да биде поголема од %s."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Оваа вредноста мора да биде степен од %s."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Ве молам внесете правилен децимален број."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Ве молам внесете правилен децимален број со најмногу %s цифрa."
-msgstr[1] "Ве молам внесете правилен децимален број со најмногу %s вкупно цифри."
-
-#: core/validators.py:447
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Ве молам внесете правилен децимален број кој во целиот број има најмногу %s "
-"цифра."
-msgstr[1] ""
-"Ве молам внесете правилен децимален број кој во целиот број има најмногу %s "
-"цифри."
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Ве молам внесете правилен децимален број кој има најмногу %s децимална цифра."
-msgstr[1] "Ве молам внесете правилен децимален број кој има најмногу %s децимални цифри."
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Ве молам внесете правилен децимален број."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Потврдете дека качената датотека има најмалку %s бајти."
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Потврдете дека качената датотека има најмногу %s бајти."
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "Форматот за ова поле е грешен."
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "Ова поле не е правилно."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Неможев да извадам ништо од %s."
-
-#: core/validators.py:539
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "Адресата %(url)s врати неправилно заглавје Content-Type „%(contenttype)s“."
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Ве молам затворете го отворениот %(tag)s таг од линијата %(line)s. (линијата "
-"почнува со „%(start)s“.)"
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Некој текст  кој почнува на линијата %(line)s не е дозволен во тој контекст. "
-"(Линијата започнува со „%(start)s“.)"
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"„%(attr)s“ на линија %(line)s е неправилен атрибут. (линијата започнува со „%"
-"(start)s“.)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"„<%(tag)s>“ на линија %(line)s е неправилен таг. (линијата започнува со „%"
-"(start)s“.)"
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"На таг од линијата %(line)s му недостасува еден или повеќе од потребните "
-"атрибути (линијата започнува со „%(start)s“)."
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr "Атрибутот „%(attr)s“ на линијата %(line)s има неправилна вредност (линијата започнува со „%(start)s“)."
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s од овој тип %(type)s веќе постои за даденото %(field)s."
-
-#: db/models/fields/__init__.py:51
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s со ова %(fieldname)s веќе постои."
-
-#: db/models/fields/__init__.py:176 db/models/fields/__init__.py:348
-#: db/models/fields/__init__.py:780 db/models/fields/__init__.py:791
-#: newforms/fields.py:46 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Ова поле е задолжително."
-
-#: db/models/fields/__init__.py:448
-msgid "This value must be an integer."
-msgstr "Оваа вредност мора да биде цел број."
-
-#: db/models/fields/__init__.py:487
-msgid "This value must be either True or False."
-msgstr "Оваа вредност мора да биде или точно или неточно."
-
-#: db/models/fields/__init__.py:511
-msgid "This field cannot be null."
-msgstr "Оваа вредност неможе да биде null."
-
-#: db/models/fields/__init__.py:689
-msgid "This value must be a decimal number."
-msgstr "Оваа вредност мора да биде децимален број."
-
-#: db/models/fields/__init__.py:800
-msgid "Enter a valid filename."
-msgstr "Внесите правилно име на датотека."
-
-#: db/models/fields/__init__.py:981
-msgid "This value must be either None, True or False."
-msgstr "Оваа вредност мора да биде празна, точно или неточно."
-
-#: db/models/fields/related.py:94
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Ве молам внесете правилно %s."
-
-#: db/models/fields/related.py:746
-msgid "Separate multiple IDs with commas."
-msgstr "Одвојте ги идентификационите броеви со запирки."
-
-#: db/models/fields/related.py:748
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Држете го „Control“ или „Command“ на Мекинтош за да изберете повеќе од едно."
-
-#: db/models/fields/related.py:795
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Ве молам внесете правилен %(self)s идентификацион број. Оваа вредност %"
-"(value)r е неправилна."
-msgstr[1] ""
-"Ве молам внесете правилен %(self)s идентификацион број. Вредностите %(value)"
-"r се неправилни."
-
-#: newforms/fields.py:47
-msgid "Enter a valid value."
-msgstr "Внесете правилна вредност."
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Осигурајте се дека оваа вредност има најмногу %(max)d знаци (има %(length)d)."
-
-#: newforms/fields.py:125
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Осигурајте се дека оваа вредност има најмалку %(min)d знаци (има %(length)d)."
-
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Осигурајте се дека оваа вредност е помала или еднаква со %s."
-
-#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Осигурајте се дека оваа вредност е поголема или еднаква со %s."
-
-#: newforms/fields.py:181 newforms/fields.py:210
-msgid "Enter a number."
-msgstr "Внесете број."
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Осигурајте се дека нема вкупно повеќе од %s цифри."
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Осигурајте се дека нема повеќе од %s децимални места."
-
-#: newforms/fields.py:215
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Осигурајте се дека нема повеќе од %s цифри пред децималната запирка."
-
-#: newforms/fields.py:263 newforms/fields.py:750
-msgid "Enter a valid date."
-msgstr "Внесете правилен датум."
-
-#: newforms/fields.py:296 newforms/fields.py:751
-msgid "Enter a valid time."
-msgstr "Внесете правилно време."
-
-#: newforms/fields.py:335
-msgid "Enter a valid date/time."
-msgstr "Внесете правилен датум со време."
-
-#: newforms/fields.py:434
-msgid "No file was submitted."
-msgstr "Не беше пратена датотека."
-
-#: newforms/fields.py:435 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Пратената датотека е празна."
-
-#: newforms/fields.py:497
-msgid "Enter a valid URL."
-msgstr "Внесете правилна адреса."
-
-#: newforms/fields.py:498
-msgid "This URL appears to be a broken link."
-msgstr "Оваа адреса изгледа дека не е достапна."
-
-#: newforms/fields.py:559 newforms/models.py:299
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Изберете правилно. Тоа не е едно од можните избори."
-
-#: newforms/fields.py:598
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Внесете валиден избор. %(value)s не е еден од можните избори."
-
-#: newforms/fields.py:599 newforms/fields.py:661 newforms/models.py:365
-msgid "Enter a list of values."
-msgstr "Внесете листа на вредности."
-
-#: newforms/fields.py:779
-msgid "Enter a valid IPv4 address."
-msgstr "Внесeте правилна IPv4 адреса."
-
-#: newforms/models.py:366
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Внесете правилно. %s не е еден од достапните вредности."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Осигурајте се дека вашиот текст има помалку од %s знак."
-msgstr[1] "Осигурајте се дека вашиот текст има помалку од %s знаци."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Тука не се дозволени прекини на линија."
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Изберете правилно, %(data)s' не е во %(choices)s."
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Внесете цел број помеѓу -32,768 и 32,767."
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Внесете позитивен број."
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Внесете цел број помеѓу 0 и 32,767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "да, не, можеби"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d бајт"
-msgstr[1] "%(size)d бајти"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f КБ"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f МБ"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f ГБ"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "попладне"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "наутро"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "попладне"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "наутро"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "полноќ"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "пладне"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "понеделник"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "вторник"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "среда"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "четврток"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "петок"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "сабота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "недела"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "пон"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "вто"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "сре"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "чет"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "пет"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "саб"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "нед"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "јануари"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "февруари"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "март"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "април"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "мај"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "јуни"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "јули"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "август"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "септември"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "октомври"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "ноември"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "декември"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "јан"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "фев"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "мај"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "јун"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "јул"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "авг"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сеп"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ное"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дек"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "јан."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "фев."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "авг."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "сеп."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "окт."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "ное."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "дек."
-
-#: utils/text.py:127
-msgid "or"
-msgstr "или"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "година"
-msgstr[1] "години"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "месец"
-msgstr[1] "месеци"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "седмица"
-msgstr[1] "седмици"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "ден"
-msgstr[1] "дена"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "час"
-msgstr[1] "часа"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "минута"
-msgstr[1] "минути"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "минути"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:403
-msgid "DATE_FORMAT"
-msgstr "j M Y"
-
-#: utils/translation/trans_real.py:404
-msgid "DATETIME_FORMAT"
-msgstr "j M Y, P"
-
-#: utils/translation/trans_real.py:405
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:421
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:422
-msgid "MONTH_DAY_FORMAT"
-msgstr "F j"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s беше успешно создаден."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s беше успешно ажуриран."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s беше избришан."
-
diff --git a/webapp/django/conf/locale/mk/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/mk/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 200ddce..0000000
--- a/webapp/django/conf/locale/mk/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/mk/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/mk/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 122a189..0000000
--- a/webapp/django/conf/locale/mk/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,119 +0,0 @@
-# translation of djangojs.po to Macedonian
-#
-# Georgi Stanojevski <glisha@gmail.com>, 2006, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-15 10:53+1100\n"
-"PO-Revision-Date: 2007-02-24 13:49+0100\n"
-"Last-Translator: Georgi Stanojevski <glisha@gmail.com>\n"
-"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Достапно %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Избери ги сите"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Додади"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Отстрани"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Избрано %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Означете го вашиот избор/и и кликнете"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Исчисти ги сите"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Јануари Февруари Март Април Мај Јуни Јули Август Септември Октомври Ноември "
-"Декември"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Недела Понеделник Вторник Среда Четврток Петок Сабота"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "Н П В С Ч П С"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Сега"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Часовник"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Избери време"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Полноќ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 наутро"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Пладне"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Откажи"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Денеска"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Календар"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Вчера"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Утре"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Прикажи"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Скриј"
-
diff --git a/webapp/django/conf/locale/nl/LC_MESSAGES/django.mo b/webapp/django/conf/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index 5f1f10c..0000000
--- a/webapp/django/conf/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/nl/LC_MESSAGES/django.po b/webapp/django/conf/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 6d3d365..0000000
--- a/webapp/django/conf/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4548 +0,0 @@
-# Dutch translation for Django.
-# Copyright (C) 2008, Django Software Foundation
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-14 19:46+0200\n"
-"PO-Revision-Date: 2008-07-31 23:08+0200\n"
-"Last-Translator: Rudolph Froger <rudolphfroger@estrate.nl>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Arabisch"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Bengaals"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Bulgaars"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "Catalaans"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Tjechisch"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Welsh"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Deens"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Duits"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Grieks"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Engels"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Spaans"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "Ests"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Argentijns Spaans"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "Baskisch"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "Perzisch"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "Fins"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "Frans"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "Iers"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "Galicisch"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "Hongaars"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "Hebreews"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "Kroatisch"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "IJslands"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "Italiaans"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "Japans"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "Georgisch"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "Koreaans"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "Lets"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "Litouws"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "Macedonisch"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "Nederlands"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "Noors"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "Pools"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "Portugees"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "Braziliaans Portugees"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "Roemeens"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "Russisch"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "Slovaaks"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "Sloveens"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "Servisch"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "Zweeds"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "Telegu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "Turks"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "Oekraïens"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "Vereenvoudigd Chinees"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "Traditioneel Chinees"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Door %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Alle"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Elke datum"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Vandaag"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Laatste 7 dagen"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Deze maand"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Dit jaar"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Ja"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Nee"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Onbekend"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "actietijd"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "object-id"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "object-repr"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "actievlag"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "wijzig bericht"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "logregistratie"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "logregistraties"
-
-#: contrib/admin/options.py:143 contrib/admin/options.py:202
-msgid "None"
-msgstr "Geen"
-
-#: contrib/admin/options.py:407
-#, python-format
-msgid "Changed %s."
-msgstr "%s gewijzigd."
-
-#: contrib/admin/options.py:407 contrib/admin/options.py:417
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "en"
-
-#: contrib/admin/options.py:412
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" toegevoegd."
-
-#: contrib/admin/options.py:416
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s aangepast voor %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:421
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" verwijderd."
-
-#: contrib/admin/options.py:425
-msgid "No fields changed."
-msgstr "Geen velden gewijzigd."
-
-#: contrib/admin/options.py:486 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "De %(name)s \"%(obj)s\" is toegevoegd."
-
-#: contrib/admin/options.py:490 contrib/admin/options.py:523
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "U kunt dit hieronder weer bewerken."
-
-#: contrib/admin/options.py:500 contrib/admin/options.py:533
-#, python-format
-msgid "You may add another %s below."
-msgstr "U kunt hieronder de volgende %s toevoegen."
-
-#: contrib/admin/options.py:521
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Het wijzigen van %(name)s \"%(obj)s\" is geslaagd."
-
-#: contrib/admin/options.py:529
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "De %(name)s \"%(obj)s\" was toegevoegd. U kunt het hieronder wijzigen."
-
-#: contrib/admin/options.py:595
-#, python-format
-msgid "Add %s"
-msgstr "Toevoegen %s"
-
-#: contrib/admin/options.py:672
-#, python-format
-msgid "Change %s"
-msgstr "Wijzig %s"
-
-#: contrib/admin/options.py:703
-msgid "Database error"
-msgstr "Databasefout"
-
-#: contrib/admin/options.py:752
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "De verwijdering van %(name)s \"%(obj)s\" is geslaagd."
-
-#: contrib/admin/options.py:759
-msgid "Are you sure?"
-msgstr "Weet u het zeker?"
-
-#: contrib/admin/options.py:786
-#, python-format
-msgid "Change history: %s"
-msgstr "Wijzigingsgeschiedenis: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Voer een correcte gebruikersnaam en wachtwoord in. Let op, de velden zijn "
-"hoofdletter-gevoelig."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Uw sessie is verlopen, meld u opnieuw aan. Maakt u zich geen zorgen: Uw "
-"bijdrage is opgeslagen."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Het lijkt erop dat uw browser geen cookies accepteert. Zet het gebruik van "
-"cookies aan in uw browser, laad deze pagina nogmaals en probeer het opnieuw."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Gebruikersnamen mogen geen '@' teken bevatten."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Uw e-mailadres is niet uw gebruikersnaam. Probeer '%s' eens."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Sitebeheer"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Inloggen"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Eén of meer %(fieldname)s in %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Eén of meer %(fieldname)s in %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Tijd:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Huidige:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Wijziging:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Pagina niet gevonden"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Onze excuses, maar de gevraagde pagina bestaat niet."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Voorpagina"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverfout"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverfout (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfout <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Er is een fout opgetreden. Dit is inmiddels doorgegeven aan de sitebeheerder "
-"via e-mail en zal spoedig worden gerepareerd. Bedankt voor uw geduld."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Welkom,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentatie"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Wachtwoord wijzigen"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Afmelden"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django sitebeheer"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Djangobeheer"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Toevoegen"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Geschiedenis"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Toon op site"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Herstel de fout hieronder."
-msgstr[1] "Herstel de fouten hieronder."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s toevoegen"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Verwijderen"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Het verwijderen van %(object_name)s '%(escaped_object)s' zal ook "
-"gerelateerde objecten verwijderen. Echter u heeft geen rechten om de "
-"volgende typen objecten te verwijderen:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Weet u zeker dat u %(object_name)s \"%(escaped_object)s\" wilt verwijderen? "
-"Alle volgende objecten worden verwijderd:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Ja, ik weet het zeker"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Op %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Beschikbare modellen in de %(name)s toepassing."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Wijzigen"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "U heeft geen rechten om iets te wijzigen."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Recente acties"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mijn acties"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Geen beschikbaar"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Er is iets mis met de database. Verzeker u ervan dat de benodigde tabellen "
-"zijn aangemaakt en dat de database toegankelijk is voor de juiste gebruiker."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Gebruikersnaam:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Wachtwoord:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Datum/tijd"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Gebruiker"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Actie"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "d-n-Y H:i:s"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dit object heeft geen wijzigingsgeschiedenis. Het is mogelijk niet via de "
-"beheersite toegevoegd."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Alles tonen"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Zoek"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 resultaat"
-msgstr[1] "%(counter)s resultaten"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totaal"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Opslaan als nieuw item"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Opslaan en nieuw item"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Opslaan en opnieuw bewerken"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Opslaan"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Vul allereerst een gebruikersnaam en wachtwoord in. Vervolgens kunt u de "
-"andere opties instellen."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Gebruikersnaam"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Wachtwoord"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Wachtwoord (nogmaals)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Vul hetzelfde wachtwoord als hierboven in, ter bevestiging."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Geef een nieuw passwoord voor gebruiker <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Bedankt voor de aanwezigheid op de site vandaag."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Log opnieuw in"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Wachtwoordwijziging"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Wachtwoord wijzigen is geslaagd"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Uw wachtwoord is gewijzigd."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Vanwege de beveiliging moet u uw oude en twee keer een nieuw wachtwoord "
-"invoeren, zodat we kunnen controleren of er geen typefouten zijn gemaakt."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Oud wachtwoord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Nieuw wachtwoord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Bevestig wachtwoord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Wijzig mijn wachtwoord"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Wachtwoord hersteld"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Wachtwoord herstellen volooid"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Uw wachtwoord is ingesteld. U kunt nu verder gaan en inloggen."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Bevestiging wachtwoord herstellen"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Voer nieuw wachtwoord in"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Voer het nieuwe wachtwoord twee keer in, zodat we kunnen controleren of er "
-"geen typefouten zijn gemaakt."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Wachtwoord herstel geslaagd"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"De link voor het herstellen van het wachtwoord is ongeldig, misschien omdat "
-"de link al eens is gebruikt. Vraag opnieuw het wachtwoord herstellenaan."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Wachtwoord herstel geslaagd"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"We hebben u de instructies voor het instellen van een nieuw wachtwoord per e-"
-"mail gestuurd. U zou dit spoedig moeten ontvangen."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "U krijgt deze e-mail omdat u om een nieuw wachtwoord heeft gevraagd"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "voor uw gebruikersaccount op %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Gaat u naar de volgende pagina en kies een nieuw wachtwoord:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Uw gebruikersnaam, mocht u deze vergeten zijn:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Bedankt voor het gebruik van onze site!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Het %(site_name)s team"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Uw wachtwoord vergeten? Geef uw e-mailadres op en we sturen u per e-mail de "
-"instructies voor het instellen van een nieuw wachtwoord."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mailadres:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Herstel mijn wachtwoord"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Alle data"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Selecteer %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Selecteer %s om te wijzigen"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "site"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "sjabloon"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filter:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Toepassing %r niet gevonden"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r niet gevonden in toepassing %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "het gerelateerde `%(app_label)s.%(data_type)s` object"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "gerelateerde `%(app_label)s.%(object_name)s` objecten"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "alle %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "aantal %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Velden van %s objecten"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Geheel getal"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True danwel False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Karakterreeks (hooguit %(max_length)s)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Komma-gescheiden gehele getallen"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Datum (zonder tijd)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Datum (met tijd)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Decimaal getal"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-mailadres"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Bestandspad"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Decimaal getal"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP-adres"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (True, False of None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relatie tot oudermodel"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefoonnummer"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Tijd"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Staat van de VS (twee hoofdletters)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML-tekst"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s lijkt geen urlpattern-object te zijn"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Documentatie bookmarklets"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Om bookmarklets te installeren, sleep de link naar uw "
-"bladwijzers\n"
-"werkbalk, of rechtermuis klik op de link en voeg het toe aan de bladwijzer. "
-"Nu kan\n"
-"de bookmarklet vanuit elke pagina op de site worden gekozen. Let erop dat "
-"het soms\n"
-"noodzakelijk is dat de computer van waaruit de pagina wordt bekeken intern "
-"is.\n"
-"(Raadpleeg uw systeembeheerder of uw computer zich op het interne netwerk "
-"bevind).<p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Documentatie voor deze pagina"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Springt vanuit elke pagina naar de documentatie voor de view die gegenereerd "
-"wordt door die pagina"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Toon object-ID"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Toont het content-type en unieke ID voor pagina's die een enkel object "
-"voorstellen."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Bewerk dit object (huidig venster)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Gaat naar de beheerpagina voor pagina's die een enkel object weergeven."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Bewerk dit object (nieuwe pagina)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Zoals hierboven, maar opent de beheerpagina in een nieuw venster."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Persoonlijke informatie"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Rechten"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Belangrijke datums"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Groepen"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Gebruiker toevoegen"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Wachtwoord wijzigen is geslaagd"
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Wijzig wachtwoord: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Verplicht. 30 tekens of minder. Alleen alfanumerieke tekens (letters, "
-"cijfers en liggende strepen)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Deze waarde mag alleen letters, getallen en liggende strepen bevatten."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Bevestiging wachtwoord"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Een gebruiker met deze gebruikersnaam bestaat al."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "De twee ingevulde wachtwoorden zijn niet gelijk."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Dit account is inactief."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Het lijkt erop dat uw browser geen cookies accepteert. Om in te loggen "
-"moeten cookies worden geaccepteerd."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-mail"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Dat e-mailadres heeft geen gerelateerd gebruikersaccount. Weet u zeker dat u "
-"zich heeft geregistreerd?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Wachtwoord hersteld op %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Nieuw wachtwoord"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Nieuw wachtwoord bevestigen"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Oud wachtwoord"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Uw oude wachtwoord is niet correct ingevoerd. Voert u het alstublieft "
-"opnieuw in."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "naam"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "codenaam"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "recht"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "rechten"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "groep"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "groepen"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "gebruikersnaam"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "voornaam"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "achternaam"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "e-mailadres"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "wachtwoord"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Gebruik '[algo]$[salt]$[hexdigest]' of gebruik het<a href=\"password/"
-"\">wachtwoord wijzigen formulier</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "stafstatus"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Bepaalt of de gebruiker kan inloggen op deze beheersite."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "actief"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Bepaalt of deze gebruiker als actief dient te worden behandeld. U kunt dit "
-"uitvinken in plaats van een gebruiker te verwijderen."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "supergebruikerstatus"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Bepaalt dat deze gebruiker alle rechten heeft, zonder deze expliciet toe te "
-"wijzen."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "laatste inlog"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "datum toegetreden"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Bovenop de rechten welke handmatig zijn toegekend, krijgt deze gebruiker ook "
-"alle rechten van de groepen waar hij of zij deel van uitmaakt."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "gebruikersrechten"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "gebruiker"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "gebruikers"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "bericht"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Afmelden"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "object-ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "kop"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "opmerking"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "waardering #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "waardering #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "waardering #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "waardering #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "waardering #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "waardering #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "waardering #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "waardering #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "is een geldige waardering"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "datum/tijd toegevoegd"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "is openbaar"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "is verwijderd"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Kruis dit vak aan indien de opmerking niet gepast is. Een \"Dit commentaar "
-"is verwijderd\" bericht wordt dan getoond"
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "opmerkingen"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Inhoud-object"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Geplaatst door %(user)s op %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "naam van persoon"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "ip-adres"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "goedgekeurd door de staf"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "vrije opmerking"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "vrije opmerkingen"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "score"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "scoredatum"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "karmascore"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "karmascores"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d waardering door %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Deze opmerking is gemarkeerd door %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "markeerdatum"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "gebruikersmarkering"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "gebruikersmarkeringen"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Gemarkeerd door %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "verwijderingsdatum"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "verwijderd door moderator"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "verwijderd door moderator"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Verwijderd door moderator %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Uw wachtwoord vergeten?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Waarderingen"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Verplicht"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Optioneel"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Plaats een foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Opmerking:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Conceptopmerking"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Uw gebruikersnaam:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Deze waardering is verplicht omdat u tenminste één andere waardering hebt "
-"ingevoerd."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Deze opmerking is gepost door een gebruiker die minder dan %(count)s "
-"opmerking heeft gepost:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Deze opmerking is gepost door een gebruiker die minder dan %(count)s "
-"opmerkingen heeft gepost:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Deze opmerking is gepost door een twijfelachtige gebruiker:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Alleen POSTs zijn toegestaan"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Eén of meerdere verplichte velden zijn niet ingevuld"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Iemand heeft het opmerkingenformulier gewijzigd (beveilingsinbreuk)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Het opmerkingenformulier heeft een ongeldige 'target' parameter -- het "
-"object-ID was ongeldig"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Het opmerkingenformulier verschaft geen 'voorbeeld' of 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonieme gebruikers kunnen niet stemmen"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Ongeldige opmerkingen-ID"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Niet op uzelf stemmen"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "klassenaam van pythonmodel"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "inhoudstype"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "inhoudstypen"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Deze waarde mag alleen letters, cijfers, liggende strepen en schuine strepen "
-"bevatten."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Geavanceerde opties"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titel"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "inhoud"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "opmerkingen toestaan"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "sjabloonnaam"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Voorbeeld: 'flatpages/contact_page.html'. Als deze niet is opgegeven, dan "
-"wordt 'flatpages/default.html' gebruikt."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registratie verplicht"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Indien dit is aangekruist kunnen alleen ingelogde gebruikers deze pagina "
-"bekijken."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "platte pagina"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "platte pagina's"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Geen geometrische waarde opgegeven."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Ongeldige geometrie waarde."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Ongeldig geometrie type."
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljoen"
-msgstr[1] "%(value).1f miljoen"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljard"
-msgstr[1] "%(value).1f miljard"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f biljoen"
-msgstr[1] "%(value).1f biljoen"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "één"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "twee"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "drie"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "vier"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "vijf"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "zes"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "zeven"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "acht"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "negen"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "vandaag"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "morgen"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "gisteren"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Geef een postcode op volgens het NNNN of ANNNNAAA formaat."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Dit veld dient alleen cijfers te bevatten."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Dit veld dient 7 of 8 cijfers te zijn."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Geef een geldige CUIT op in het XX-XXXXXXXX-X of XXXXXXXXXXXX formaat."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Ongeldige CUIT."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Carinthia"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Lager Australië"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Hoger Australië"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburg"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Styria"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tirol"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Wenen"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Geef een postcode op in het formaat XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-"Geef een geldig Oostenrijks Sociaalnummer op in het XXX-XX-XXXX formaat."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Geef een vier cijferige postcode op."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Geef een postcode op in het formaat XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefoonnummers dienen volgens het XX-XXXX-XXXX formaat te zijn."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr "Selecteer een geldige braziliaanse staat. Uw keuze is niet geldig."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Ongeldig CPF nummer."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Dit veld dient maximaal 11 cijfers of 14 letters te bevatten."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Ongeldig CNPJ nummer."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Dit vereist minimaal 14 cijfers."
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Geef een postcode op in het formaat XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Geef een geldig Canadees Sociaal Verzekeringsnummer op volgens het XXX-XXX-"
-"XXX formaat."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stad"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Bern"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Genève"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Geef een geldig Zwitsers identiteits- of paspoortnummer op volgens het "
-"X1234567<0 of 1234567890 formaat"
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Geen een geldige Chileense RUT op."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Geef een geldige Chileense RUT op. Het formaat is XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "De Chileense RUT is ongeldig."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Beieren"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlijn"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Nedersaksen"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Noord Rijn-Westfalen"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rijnland-Palts"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saksen"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saksen-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Sleeswijk-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thüringen"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Geef een postcode op in het formaat XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Geef een geldig Duits identiteitsnummer op volgens het XXXXXXXXXXX-XXXXXXX-"
-"XXXXXXX-X formaat."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Avila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Balearen"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Caceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castello"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Cordoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaen"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Leon"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Malaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarre"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencië"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusië"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragon"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Prinsdom Asturië"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Balearen"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Baskenland"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Canarische Eilanden"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castilië-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castilië en León"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalonië"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicië"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Vul een postcode in volgens het 01XXX - 52XXX formaat."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Geef een geldig telefoonnummer op in één van de volgende formaten: "
-"6XXXXXXXX, 8XXXXXXXX of 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Geef een geldige NIF, NIE of CIF op."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Geef een geldige NIF of NIE op."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Ongeldig controlegetal voor NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Ongeldig controlegetal voor NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Ongeldig controlegetal voor CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Geef een geldig bankrekeningnummer op in het formaat XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Ongeldig controlegetal voor het bankrekeningnummer."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Geef een geldig Fins sociaal nummer op."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Geef een geldige postcode op in het formaat XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Geef een geldig IJslands identificatienummer op. Het formaat is XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Het IJslandse identificatienummer is niet geldig."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Geef een geldige postcode op."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Geef een geldig Sociaal Nummer op."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Geef een geldig BTW nummer op."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Geef een geldige postcode op in het formaat XXXXXXX of XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "de Staat Mexico"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:22
-msgid "Enter a valid postal code"
-msgstr "Geef een geldige postcode op"
-
-#: contrib/localflavor/nl/forms.py:53
-msgid "Enter a valid phone number"
-msgstr "Geef een geldig telefoonnummer op"
-
-#: contrib/localflavor/nl/forms.py:79
-msgid "Enter a valid SoFi number"
-msgstr "Geef een geldig SoFi nummer"
-
-#: contrib/localflavor/nl/forms.py:115
-msgid "Enter a valid Dutch bank account number"
-msgstr "Geef een geldig Nederlands bankrekeningnummer op"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Geef een geldig Noors Sociaal Nummer op."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Dit veld vereist 8 cijfers."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Dit veld vereist 11 cijfers."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "Het Nationaal Identificatie Nummer bestaat uit 11 cijfers."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Verkeerd controlecijfer voor het Nationaal Identificatie Nummer."
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Geef een fiscaal nummer (NIP) op volgens het formaat XXX-XXX-XX-XX or XX-XX-"
-"XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Verkeerd controlecijfer voor het fiscaal nummer (NIP)."
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"Het Nationaal Zakelijk Registratie Nummer (REGON) bestaat uit 7 of 9 cijfers."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-"Verkeerd controlecijfer op het Nationaal Zakelijk Registratie Nummer (REGON)."
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Geef een postcode op in het formaat XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Neder-Silezië"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Klein-Polen"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpatia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Groot-Polen"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "West Pomerania"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Geef een geldige CIF op."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Geef een geldige CNP op."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-"Geef een geldige IBAN volgens het ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formaat"
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Telefoonnummers moeten volgens het XXXX-XXXXXX formaat te zijn."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Geef een geldige postcode in het formaat XXXXXX"
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Geef een postcode op in het formaat XXXXX of XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Regio Banská Bystrica"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Regio Bratislava"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Regio Košice"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Regio Nitra"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Regio Prešov"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Regio Trenčín"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Regio Trnava"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Regio Žilina"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Geef een geldige postcode op."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall en de Scilly-Eilanden"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "Oost-Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Groot-Londen"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Groot-Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "Noord-Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "Zuid-Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West-Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West-Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West-Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "Graafschap Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "Graafschap Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "Graafschap Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "Graafschap Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "Graafschap Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "Graafschap Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "Zuid-Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West-Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Schotse-Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Centraal-Schotland"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries en Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkneyeilanden"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetlandeilanden"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Buiten-Hebriden"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Engeland"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Noord-Ierland"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Schotland"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Wales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Geef een geldige postcode op volgens het XXXXX of XXXXX-XXXX formaat."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Geef een geldig V.S. Sociaalnummer op in het XXX-XX-XXXX formaat."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Geef een geldig Zuid-Afrikaans identificatienummer op"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Geef een geldige Zuid-Afrikaanse postcode op"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Oost-Kaap"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Vrijstaat"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Noord-Kaap"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "Noordwest"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "West-Kaap"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "omgeleid via"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dit moet een absoluut pad zijn, zonder de domeinnaam. Bijvoorbeeld: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "omleiden naar"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dit kan een absoluut pad (zoals hierboven) zijn of een volledige URL "
-"beginnend met 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "omleiding"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "omleidingen"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "sessiesleutel"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "sessiegegevens"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "verloopdatum"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sessie"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sessies"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "domeinnaam"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "weergavenaam"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "sites"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Deze waarde mag alleen letters, cijfers, liggende strepen en "
-"verbindingsstrepen bevatten."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Hoofdletters zijn hier niet toegestaan."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Kleine letters zijn hier niet toegestaan."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Geef alleen cijfers op, gescheiden door komma's."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Geef geldige e-mailadressen op, gescheiden door komma's."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Geef een geldig IP-adres op."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Lege waarden zijn hier niet toegestaan."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Niet-numerieke karakters zijn hier niet toegestaan."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Deze waarde kan niet alleen uit cijfers bestaan."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Geef een geheel getal op."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Alleen alfabetische karakters zijn toegestaan"
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ongeldige datum: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Geef een geldige datum in JJJJ-MM-DD formaat."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Geef een geldige tijd in UU:MM formaat."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Geef geldige datum/tijd in JJJJ-MM-DD UU:MM formaat."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "Geef een geldig e-mailadres op."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Er was geen bestand verstuurd. Controleer het coderingstype van het "
-"formulier."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Bestand ongeldig. Het bestand dat is gegeven is geen afbeelding of is "
-"beschadigd."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "De URL %s wijst niet naar een geldige afbeelding."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefoonnummers moeten volgens het XXX-XXX-XXXX formaat zijn. \"%s\" is "
-"ongeldig."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "De URL %s wijst niet naar een geldige QuickTime video."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Een geldige URL is vereist."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Geldige HTML is vereist. De specifieke fouten zijn:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Foute XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Ongeldige URL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "De URL %s is niet een werkende link."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Geef een geldige afkorting van een staat in de VS."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pas op uw taalgebruik! Gebruik van %s niet toegestaan."
-msgstr[1] ""
-"Pas op uw taalgebruik! Gebruik van de woorden %s is niet toegestaan."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Dit veld moet overeenkomen met het '%s'-veld."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Voer tenminste één veld in."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Voer waarden in beide velden in of laat beide leeg."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Dit veld moet opgegeven worden indien %(field)s %(value)s is"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Dit veld moet worden opgegeven indien %(field)s niet %(value)s is"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Dubbele waarden zijn niet toegestaan."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "De waarde moet tussen %(lower)s en %(upper)s zijn."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "De waarde moet minimaal %s zijn."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "De waarde mag niet meer zijn dan %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "De waarde moet een macht van %s zijn."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Geef een geldig decimaal getal."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Geef een geldig decimaal getal met hooguit %s cijfer."
-msgstr[1] "Geef een geldig decimaal getal met hooguit %s cijfers."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfer "
-"heeft."
-msgstr[1] ""
-"Geef een geldig decimaal getal waarbij het gehele getal minimaal %s cijfers "
-"heeft."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Geef een decimaal getal met hooguit %s cijfer achter de komma."
-msgstr[1] "Geef een decimaal getal met hooguit %s cijfers achter de komma."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Geef een geldig decimaal getal."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Zorg ervoor dat het bestand minstens %s bytes groot is."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Zorg ervoor dat het bestand hoogstens %s bytes groot is."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Het formaat van dit veld is foutief."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Dit veld is ongeldig."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Kan niks ophalen van %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"De geretourneerde URL %(url)s bevat een ongeldige Content-Type '%"
-"(contenttype)s."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Sluit de niet gesloten %(tag)s tag op regel %(line)s. (Regel start met \"%"
-"(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Tekst beginnend op regel %(line)s is in deze context niet toegestaan. (Regel "
-"start met \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" op regel %(line)s is een ongeldig attribuut. (Regel start met "
-"\"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" op regel %(line)s is een ongeldige tag. (Regel start met \"%"
-"(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Een of meerdere attributen ontbreken bij een tag op regel %(line)s. (Regel "
-"start met \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"De \"%(attr)s\" attribuut op regel %(line)s heeft een ongeldige waarde. "
-"(Regel start met \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-"%(object)s van het type %(type)s bestaat al voor het gegeven %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s met deze %(fieldname)s bestaat al."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Dit veld is verplicht."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "De waarde moet een geheel getal zijn."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "De waarde moet of True (Waar) of False (Onwaar) zijn."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "Dit veld mag niet leeg zijn."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Geef geldige datum/tijd in JJJJ-MM-DD UU:MM[:ss[.uuuuuu]] formaat."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "De waarde moet een getal zijn."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "De waarde moet of None (leeg), True (Waar) of False (Onwaar) zijn."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Geef een geldige tijd in UU:MM[:ss[.uuuuuu]] formaat."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Geef een geldige bestandsnaam."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Geef een geldig %s veld."
-
-#: db/models/fields/related.py:759
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Houd \"Control\", of \"Command\" op een Mac, ingedrukt om meerdere te "
-"selecteren."
-
-#: db/models/fields/related.py:839
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Geef een geldig %(self)s IDs. De waarde %(value)r is ongeldig."
-msgstr[1] "Geef een geldig %(self)s IDs. De waarden %(value)r zijn ongeldig."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Geef een geldige waarde."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Zorg ervoor dat waarde korter is dan %(max)d tekens (huidige lengte %(length)"
-"d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Zorg ervoor dat uw tekst langer is dan %(min)d tekens (huidige lengte %"
-"(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Zorg ervoor dat de waarde kleiner of gelijk is aan %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Zorg ervoor de waarde groter of gelijk is aan %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Geef een getal op."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Zorg dat er minder dan %s cijfers zijn."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Zorg dat er minder dan %s cijfers na de komma zijn."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Zorg dat er minder dan %s cijfers voor de komma zijn."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "Geef een geldige datum op."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "Geef een geldige tijd op."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "Geef een geldige datum/tijd op."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "Geen bestand werd aangeboden."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Het gegeven bestand is leeg."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "Geef een geldige URL op."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "Deze URL lijkt niet te werken."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Selecteer een geldige keuze. %(value)s is geen beschikbare keuze."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Geef een lijst op met waardes."
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "Geef een geldig IPv4-adres op."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Selecteer een geldige keuze. Deze keuze is niet beschikbaar."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Selecteer een geldige keuze. %s is geen beschikbare keuze."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Zorg ervoor dat uw tekst korter is dan %s karakter."
-msgstr[1] "Zorg ervoor dat uw tekst korter is dan %s karakters."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Regeleindes zijn niet toegestaan."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Selecteer een geldige keuze; '%(data)s is niet in %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Geef een geheel getal op tussen -32.768 en 32.767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Geef een geheel getal op."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Geef een geheel getal op tussen 0 en 32.767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "ja,nee,misschien"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "middernacht"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "middag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "maandag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "dinsdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "woensdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "donderdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "vrijdag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "zaterdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "zondag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "ma"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "di"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "woe"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "don"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "vrij"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "zat"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "zon"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januari"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februari"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "maart"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "mei"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "augustus"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mrt"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mei"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "dec."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "of"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "jaar"
-msgstr[1] "jaren"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "maand"
-msgstr[1] "maanden"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "week"
-msgstr[1] "weken"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dag"
-msgstr[1] "dagen"
-
-# In the timesince context it is stilistically wrong to use the plural for hour in Dutch.
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "uur"
-msgstr[1] "uur"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuut"
-msgstr[1] "minuten"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuten"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j-n-Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j-n-Y H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j F"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "De %(verbose_name)s is succesvol aangemaakt."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "De %(verbose_name)s is succesvol aangepast."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "De %(verbose_name)s is verwijderd."
diff --git a/webapp/django/conf/locale/nl/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/nl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 22015ed..0000000
--- a/webapp/django/conf/locale/nl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/nl/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/nl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index e9a5d66..0000000
--- a/webapp/django/conf/locale/nl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,115 +0,0 @@
-# Dutch Javascript translations.
-# Copyright (C) 2006
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-27 10:34+0100\n"
-"PO-Revision-Date: 2008-02-27 11:22+0100\n"
-"Last-Translator: jdetaeye <jdetaeye@frepple.com>\n"
-"Language-Team: nl <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Beschikbare %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Kies allemaal"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Toevoegen"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Verwijderen"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Gekozen %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Selecteer uw keuze(s) en klik "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Allemaal verwijderen"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid "January February March April May June July August September October November December"
-msgstr "januari februari maart april mei juni juli augustus september oktober november december"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "Z M D W D V Z"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "zondag maandag dinsdag woensdag donderdag vrijdag zaterdag"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Tonen"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Verbergen"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Nu"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Klok"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Kies een tijd"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Middernacht"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 uur"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "12 uur"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Annuleren"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Vandaag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalender"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Gisteren"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Morgen"
-
diff --git a/webapp/django/conf/locale/no/LC_MESSAGES/django.mo b/webapp/django/conf/locale/no/LC_MESSAGES/django.mo
deleted file mode 100644
index 371dab5..0000000
--- a/webapp/django/conf/locale/no/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/no/LC_MESSAGES/django.po b/webapp/django/conf/locale/no/LC_MESSAGES/django.po
deleted file mode 100644
index e96f104..0000000
--- a/webapp/django/conf/locale/no/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4502 +0,0 @@
-# translation of django.po to norwegian
-# Copyright (C) 2005 and beyond
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:12+0200\n"
-"PO-Revision-Date: 2008-08-19 21:57+0200\n"
-"Last-Translator: Christian Mikalsen and Jon Lønne\n"
-"Language-Team: Norsk <no@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Arabisk"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Bengalsk"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Bulgarsk"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "Katalansk"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Tsjekkisk"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Walisisk"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Dansk"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Tysk"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Gresk"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Engelsk"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Spansk"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "Estisk"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Argentinsk spansk"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "Baskisk"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "Persisk"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "Finsk"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "Fransk"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "Irsk"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "Galisisk"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "Ungarsk"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "Hebraisk"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "Kroatisk"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "Islandsk"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "Italiensk"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "Japansk"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "Georgisk"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "Koreansk"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "Latvisk"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "Litauisk"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "Makedonsk"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "Nederlandsk"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "Norsk"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "Polsk"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "Portugisisk"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "Brasiliansk portugisisk"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "Rumensk"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "Russisk"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "Slovakisk"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "Slovensk"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "Serbisk"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "Svensk"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "Tyrkisk"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "Ukrainsk"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "Simplifisert kinesisk"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "Tradisjonell kinesisk"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Etter %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Alle"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Når som helst"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "I dag"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Siste syv dager"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Denne måneden"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "I år"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Ja"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Nei"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Ukjent"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "tid for handling"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "objekt-ID"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "objekt repr"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "handlingsflagg"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "endre melding"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "logginnlegg"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "logginnlegg"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "Ingen"
-
-#: contrib/admin/options.py:326
-#, python-format
-msgid "Changed %s."
-msgstr "Endret %s."
-
-#: contrib/admin/options.py:326 contrib/admin/options.py:336
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "og"
-
-#: contrib/admin/options.py:331
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Opprettet %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:335
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Endret %(list)s for %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:340
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Slettet %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:344
-msgid "No fields changed."
-msgstr "Ingen felt endret."
-
-#: contrib/admin/options.py:405 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" ble opprettet."
-
-#: contrib/admin/options.py:409 contrib/admin/options.py:442
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Du kan redigere videre nedenfor."
-
-#: contrib/admin/options.py:419 contrib/admin/options.py:452
-#, python-format
-msgid "You may add another %s below."
-msgstr "Du kan opprette ny %s under."
-
-#: contrib/admin/options.py:440
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ble endret."
-
-#: contrib/admin/options.py:448
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" ble endret. Du kan redigere det igjen under."
-
-#: contrib/admin/options.py:514
-#, python-format
-msgid "Add %s"
-msgstr "Opprett %s"
-
-#: contrib/admin/options.py:591
-#, python-format
-msgid "Change %s"
-msgstr "Rediger %s"
-
-#: contrib/admin/options.py:622
-msgid "Database error"
-msgstr "Databasefeil"
-
-#: contrib/admin/options.py:671
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" ble slettet."
-
-#: contrib/admin/options.py:678
-msgid "Are you sure?"
-msgstr "Er du sikker?"
-
-#: contrib/admin/options.py:705
-#, python-format
-msgid "Change history: %s"
-msgstr "Endringshistorikk: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Vennligst angi korrekt brukernavn og passord. Merk at det er forskjell på "
-"små og store bokstaver."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Du må logge inn igjen, fordi økten din har blitt tidsavbrutt. Slapp av, "
-"innlegget ditt ble lagret."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Det ser ut som om nettleseren din ikke støtter informasjonskapsler "
-"(cookies). Vennligst konfigurer nettleseren din og prøv igjen."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Brukernavnet kan ikke inneholde tegnet '@'."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "E-postadressen er ikke brukernavnet ditt, prøv '%s' isteden."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Nettstedsadministrasjon"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Logg inn"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "En eller flere %(fieldname)s i %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "En eller flere %(fieldname)s i %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Dato:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Tid:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Nå:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Endre:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Fant ikke siden"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Beklager, men siden du spør etter finnes ikke."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Hjem"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Tjenerfeil"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Tjenerfeil (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Tjenerfeil <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-"
-"post, og vil bli fikset snart. Takk for din tålmodighet."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Velkommen,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentasjon"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Endre passord"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Logg ut"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administrasjonsside"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-administrasjon"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Opprett"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Historikk"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Vis på nettside"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Vennligst korriger feilen under."
-msgstr[1] "Vennligst korriger feilene under."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Opprett %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtrering"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Slett"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Hvis du sletter %(object_name)s '%(escaped_object)s', vil også slette "
-"relaterte objekter, men du har ikke tillatelse til å slette følgende "
-"objekttyper:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Er du sikker på at du vil slette %(object_name)s \"%(escaped_object)s\"? "
-"Alle de følgende relaterte objektene vil bli slettet:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Ja, jeg er sikker"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Etter %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeller tilgjengelig i %(name)s-applikasjonen."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Endre"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Du har ikke rettigheter til å redigere noe."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Siste handlinger"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mine handlinger"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Ingen tilgjengelige"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Noe er galt med databaseinstallasjonen din. Sørg for at databasetabellene er "
-"opprettet og at brukeren har de nødvendige rettigheter."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Brukernavn:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Passord:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Dato/tid"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Bruker"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Handling"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "H:i, j. M Y"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dette objektet har ingen endringshistorikk. Det var sannsynligvis ikke "
-"opprettet med administrasjonssiden."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Vis alle"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Gå"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "Ett resultat"
-msgstr[1] "%(counter)s resultater"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totalt"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Lagre som ny"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Lagre og opprett ny"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Lagre og fortsett å redigere"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Lagre"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å "
-"endre flere brukerinnstillinger."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Brukernavn"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Passord"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Passord (gjenta)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Skriv inn det samme passordet som ovenfor, for verifisering."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Skriv inn et nytt passord for brukeren <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Takk for at du valgte å bruke kvalitetstid på nettstedet i dag."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logg inn igjen"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Endre passord"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Passord endret"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Ditt passord ble endret."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Venligst oppgi ditt gamle passord av sikkerhetsgrunner. Oppgi deretter "
-"ditt nye passord to ganger, slik at vi kan kontrollere at det er korrekt."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Gammelt passord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Nytt passord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Gjenta nytt passord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Endre passord"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Nullstill passord"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Passord nullstilt"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Passordet ditt er satt. Du kan nå logge inn."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Bekreftelse på nullstilt passord"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Oppgi nytt passord"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Venligst oppgi ditt nye passord to ganger, for å sikre at du oppgir det "
-"korrekt."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Passordet ble ikke nullstilt"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Nullstillingslinken er ugyldig, kanskje fordi den allerede har vært brukt. "
-"Vennligst nullstill passordet ditt på nytt."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Passordet ble nullstilt"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Vi har sendt deg en e-post med instruksjoner for nullstilling av passord. Du "
-"bør motta den om kort tid."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Du har mottatt denne e-posten fordi du har bedt om nullstilling av passordet "
-"ditt"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "for din konto på %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Vennligst gå til følgende side og velg et nytt passord:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Brukernavnet ditt, i tilfelle du har glemt det:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Takk for at du bruker siden vår!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Hilsen %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Glemt passordet ditt? Oppgi e-postadressen din under, så sender vi deg en e-"
-"post med instruksjoner for nullstilling av passord."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-postadresse:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Nullstill mitt passord"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Alle datoer"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Velg %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Velg %s du ønsker å redigere"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "nettside"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "mal"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filter:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Fant ikke applikasjonen %r"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Fant ikke modellen %(model_name)r i applikasjonen %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "det relaterte `%(app_label)s.%(data_type)s`-objektet"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "modell:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "relaterte `%(app_label)s.%(object_name)s`-objekter"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "alle %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "antall %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Felter på %s-objekter"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Heltall"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (True eller False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Tekst (opp til %(max_length)s tegn)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Heltall adskilt med komma"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Dato (uten tid)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Dato (med tid)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Desimaltall"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-postadresse"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Filsti"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Flyttall"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolsk (True, False eller None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relasjon til foreldermodell"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefonnummer"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Tid"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "Nettadresse"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stat (i USA, to store bokstaver)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML-tekst"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ser ikke ut til å være et urlpattern-objekt"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bokmerker"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentasjonsbokmerker"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">For å installere bokmerker, dra linken til verktøylinja\n"
-"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n"
-"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n"
-"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n"
-"(kontakt din systemadministrator hvis du er usikker på om maskinen din er "
-"\"intern\").</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentasjon for denne siden"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Hopp fra hvilken som helst side til dokumentasjonen for visningsfunksjonen "
-"som genererte den siden."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Vis objekt-ID"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Viser \"content-type\" og en unik ID for sider som representerer et enkelt "
-"objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Endre dette objektet (nåværende vindu)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Hopper til administrasjonssiden for sider som representerer et enkelt objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Endre dette objektet (nytt vindu)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Samme som over, men åpner administrasjonssiden i et nytt vindu."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Personlig informasjon"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Rettigheter"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Viktige datoer"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Grupper"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Opprett ny bruker"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Passordet er endret."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Endre passord: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Påkrevet. 30 tegn eller færre. Kun alfanumeriske tegn (bokstaver, tall og "
-"understreker)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Feltet kan kun inneholde bokstaver, nummer og understreker."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Passordbekreftelse"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Det eksisterer allerede en bruker med dette brukernavnet."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "De to passordfeltene er ikke like."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Denne kontoen er inaktiv."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Din nettleser ser ikke ut til å støtte informasjonskapsler (cookies). "
-"Informasjonskapsler er påkrevet for å logge inn."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-post"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Den oppgitte e-postadressen er ikke registrert hos oss. Er du sikker på at "
-"du er registrert?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Nullstilling av passord på %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Nytt passord"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Bekreft nytt passord"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Gammelt passord"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ditt gamle passord er galt. Vennligst prøv igjen."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "navn"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "kodenavn"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "rettighet"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "rettigheter"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "gruppe"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "grupper"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "brukernavn"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "fornavn"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "etternavn"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "e-postadresse"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "passord"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Bruk '[algo]$[salt]$[hexdigest]' eller <a href=\"password/\">endre passord-"
-"skjemaet</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "administrasjonsstatus"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Angir at brukeren kan logge inn på denne administrasjonssiden."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "aktiv"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Angir at denne brukeren er aktiv. Avmerk denne i stedet for å slette kontoen."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "superbruker"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Angir at denne brukeren har alle rettigheter uten å eksplisitt sette de."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "siste innlogging"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "registrert"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"I tillegg til de rettighetene som blir angitt manuelt, får brukeren også "
-"rettighetene til gruppene han/hun er med i."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "Brukerrettigheter"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "bruker"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "brukere"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "melding"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Logget ut"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "objekt-ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "overskrift"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "kommentar"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "rangering #1 "
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "rangering #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "rangering #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "rangering #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "rangering #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "rangering #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "rangering #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "rangering #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "er gyldig rangering"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "dato/tid for innsendelse"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "er tilgjengelig for alle"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "er fjernet"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Huk av denne hvis kommentaren er upassende. Meldingen \"Denne kommentaren "
-"har blitt fjernet\" vil bli vist i stedet."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "kommentarer"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Content-objekt"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Skrevet av %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "personens navn"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "IP-adresse"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "godkjent av moderator"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "åpen kommentar"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "åpne kommentarer"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "poeng"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "poengdato"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "karmapoeng"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "karmapoeng"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d rangering av %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Denne kommentaren er flagget av %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "flaggdato"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "brukerflagg"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "brukerflagg"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Flagg med %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "dato fjernet"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "fjernet av  moderator"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "fjernet av moderator"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Fjernet av moderator %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Har du glemt passordet ditt?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Rangeringer"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Påkrevet"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Valgfri"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Send et bilde"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Kommentar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Forhåndvis kommentar"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Ditt navn:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Denne rangeringen er påkrevet, fordi du har rangert tidligere."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Denne kommentaren var skrevet av en bruker som har skrevet mindre enn %"
-"(count)s kommentarer:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Denne kommentaren var skrevet av en bruker som har skrevet mindre enn %"
-"(count)s kommentarer:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Denne kommentaren er skrevet av en upålitelig bruker:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Kun POST er tillatt"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "En eller flere av feltene som er påkrevet ble ikke sendt"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Noen har endret på kommentarskjemaet (sikkerhetsbrudd)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Kommentarskjemaet hadde en ugyldig 'target'-verdi: objekt-IDen var ugyldig"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Kommentarskjemaet mangler 'preview'- eller 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonyme brukere kan ikke stemme"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Ugyldig kommentar-ID"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Du kan ikke stemme på deg selv"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "python-modell klassenavn"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "innholdstype"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "innholdstyper"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Eksempel: '/om/kontakt/'. Kontroller at det er en skråstrek foran og bak."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Dette feltet kan bare inneholde bokstaver, nummer, understreker, "
-"bindestreker eller skråstreker."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Avanserte innstillinger"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "tittel"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "innhold"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "tillat kommentarer"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "malnavn"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Eksempel: 'flatpages/kontakt_side.html'. Hvis denne ikke er gitt, vil "
-"'flatpages/default.html' bli brukt."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registrering kreves"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Hvis denne er krysset av, kan kun innloggede brukere se siden."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "flatside"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "flatsider"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Ingen geometriverdi oppgitt."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Ugyldig Geometry-verdi"
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Ugyldig Geometry-type"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f millioner"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milliard"
-msgstr[1] "%(value).1f milliarder"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billioner"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "én"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "to"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tre"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "fire"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "fem"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "seks"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "sju"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "åtte"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "ni"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "i dag"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "i morgen"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "i går"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Oppgi et postnummer på formen NNNN eller ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Feltet krever kun tall."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Ugyldig CUIT."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr ""
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Oppgi et postnummer på formen XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Oppgi et postnummer på formen XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefonnummeret må være i XXX-XXX-XXXX format."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr ""
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Oppgi et postnummer på formen XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Oppgi et postnummer på formen XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Oppgi et postnummer på formen XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Oppgi et gyldig postnummer."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Oppgi et gyldig italiensk personnummer."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Oppgi et gyldig VAT-nummer."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Oppgi et postnummer på formen XXXXXXX eller XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Oppgi et gyldig postnummer."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Oppgi et gyldig norsk personnummer."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Dette feltet krever åtte siffer."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Dette feltet krever 11 siffer."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Oppgi et postnummer på formen XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Telefonnummeret må være i XXXX-XXXXXX format."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Oppgi et postnummer på formen XXXXXX."
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Oppgi et postnummer på formen XXXXX or XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Oppgi et gyldig postnummer."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Oppgi et postnummer på formen XXXXX eller XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Oppgi et gyldig postnummer."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "omadresser fra"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dette bør være en fullstendig sti uten domenenavn. Eksempel: '/hendelser/"
-"finn/"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "omadresser til"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dette kan enten være en fullstendig sti (som over), eller en fullstendig "
-"nettadresse som starter med 'http://'"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "omadressering"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "omadresseringer"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "sesjonsnøkkel"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "sesjonsdata"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "utløpsdato"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sesjon"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sesjoner"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "domenenavn"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "visningsnavn"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "nettsider"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Feltet kan bare inneholde bokstaver, nummer, understreker eller "
-"bindestreker."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Store bokstaver er ikke tillatt her."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Små bokstaver er ikke tillatt her."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Oppgi kun tall adskilt med komma."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Oppgi gyldige e-postadresser adskilt med komma."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Vennligst oppgi en gyldig IP-adresse."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Feltet kan ikke være tomt."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Feltet kan kun bestå av tall."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Feltet kan ikke bare bestå av siffer."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Oppgi et heltall."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Kun bokstaver er tillatt her."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ugyldig dato: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Oppgi en gyldig dato på formen ÅÅÅÅ-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Oppgi tid på formen TT:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Oppgi dato og tid på formen ÅÅÅÅ-MM-DD TT:MM."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "Oppgi en gyldig e-postadresse."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ingen fil ble sendt. Sjekk \"encoding\"-typen på skjemaet."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Last opp et gyldig bilde. Filen du lastet opp var ødelagt eller ikke et "
-"bilde."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Nettadressen %s peker ikke på et gyldig bilde."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefonnummeret må være på formen XXX-XXX-XXXX. \"%s\" er ugyldig."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Nettadressen %s peker ikke på en gyldig QuickTime-video."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "En gyldig nettadresse er påkrevet."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Gyldig HTML er påkrevet. Feilene var:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Ikke velformet XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Ugyldig nettadresse: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Nettadressen %s fører til en side som ikke eksisterer."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Oppgi en gyldig amerikansk delstatsforkortelse."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pass munnen din! Ordet %s er ikke tillatt her."
-msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Feltet må være det samme som '%s'-feltet."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Vennligst oppgi noe i minst ett felt."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Vennligst oppgi noe i begge felter, eller la begge være blanke."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Feltet kreves hvis %(field)s er lik %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Feltet kreves hvis %(field)s ikke er lik %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Like verdier er ikke tillatt."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Verdien må være mellom %(lower)s og %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Verdien må minst være %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Verdien kan ikke være mer enn %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Verdien må være et kvadrat av %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Vennligst oppgi et gyldig desimaltall."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Oppgi et desimaltall med maks %s siffer."
-msgstr[1] "Oppgi et desimaltall med maks %s siffer."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Oppgi et desimaltall hvor heltallsdelen er maks %s siffer."
-msgstr[1] "Oppgi et desimaltall hvor heltallsdelen er maks %s siffer."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Oppgi et desimaltall med maks %s siffer bak komma."
-msgstr[1] "Oppgi et desimaltall med maks %s siffer bak komma."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Vennligst oppgi et gyldig flyttall."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Vær sikker på at filen du prøver å laste opp minst er %s bytes."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Vær sikker på at filen du prøver å laste opp ikke er mer enn %s bytes."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Formatet i dette feltet er feil."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Feltet er ugyldig."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Klarte ikke å hente noe fra %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"Nettadressen %(url)s returnerte den ugyldige Content-Type-headeren "
-"'%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Vennligst lukk taggen %(tag)s på linje %(line)s. (Linjen starer med "
-"\"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Deler av teksten som starter på linje %(line)s er ikke tillatt. (Linjen "
-"starter med \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" på linje %(line)s er et ugyldig attributt. (Linjen starter med "
-"\"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" på linje %(line)s er et ugyldig element. (Linjen starter med "
-"\"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Et element på linje %(line)s mangler et av de påkrevde attributtene. (Linjen "
-"starter med \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"\"%(attr)s\"-attributtet på linje %(line)s har en ugyldig verdi. (Linjen "
-"starter med \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s med %(type)s finnes allerede for angitt %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s med %(fieldname)s finnes allerede."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Feltet er påkrevet."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "Verdien må være et heltall."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "Verdien må være True eller False."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "Feltet kan ikke være tomt."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Oppgi dato og tid på formen ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "Verdien må være et desimaltall."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "Verdien må være None, True eller False."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Oppgi tiden på formen TT:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Oppgi et gyldig filnavn."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Vennligst oppgi en/et gyldig %s."
-
-#: db/models/fields/related.py:782
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hold nede \"Control\", eller \"Command\" på en Mac, for å velge mer enn en."
-
-#: db/models/fields/related.py:862
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Oppgi gyldige %(self)s-ID-er. Verdien %(value)r er ugyldig."
-msgstr[1] ""
-"Oppgi gyldige %(self)s-ID-er. Verdiene %(value)r er ugyldige."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Oppgi en gyldig verdi."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Verdien kan maksimalt ha %(max)d tegn (den er %(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Verdien må minimum ha %(min)d tegn (den er %(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Verdien må være mindre enn eller lik %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Verdien må være større enn eller lik %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Oppgi et tall."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Verdien kan ikke ha mer enn %s siffer totalt."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Verdien kan ikke ha mer enn %s desimaler."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Verdien kan ikke ha mer enn %s siffer foran komma."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "Oppgi en gyldig dato."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "Oppgi et gyldig tidspunkt."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "Oppgi gyldig dato og tidspunkt."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "Ingen fil ble sendt."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Filen er tom."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "Oppgi en gyldig nettadresse."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "Nettadressen fører til en side som ikke eksisterer."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Velg et gyldig valg. %(value)s er ikke et av de tilgjengelige valgene."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Oppgi en liste med verdier."
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "Oppgi en gyldig IPv4-adresse."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Velg et gyldig valg. Valget er ikke et av de tilgjengelige valgene."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Velg et gyldig valg. %s er ikke et av de tilgjengelige valgene."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Teksten er kortere enn %s tegn."
-msgstr[1] "Teksten er kortere enn %s tegn."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Linjeskift er ikke tillatt."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Velg et gyldig valg. '%(data)s' er ikke i %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Oppgi et heltall mellom -32768 og 32767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Oppgi et positivt heltall."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Oppgi et heltall mellom 0 og 32767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "ja,nei,kanskje"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "midnatt"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "12:00"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "mandag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "tirsdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "torsdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "fredag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "lørdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "søndag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "man"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "tirs"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ons"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "tors"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "lør"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "søn"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "desember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "des."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "eller"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "år"
-msgstr[1] "år"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "måned"
-msgstr[1] "måneder"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "uke"
-msgstr[1] "uker"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dag"
-msgstr[1] "dager"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "time"
-msgstr[1] "timer"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minutt"
-msgstr[1] "minutter"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutter"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "j. F Y"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "j. F Y H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j. F"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s ble opprettet."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s ble oppdatert."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s ble slettet."
diff --git a/webapp/django/conf/locale/no/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/no/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 45dbab2..0000000
--- a/webapp/django/conf/locale/no/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/no/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/no/LC_MESSAGES/djangojs.po
deleted file mode 100644
index cab59a3..0000000
--- a/webapp/django/conf/locale/no/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# translation of djangojs.po to norwegian
-# Copyright (C) 2005 and beyond
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2008-08-19 20:12+0200\n"
-"Last-Translator: Christian Mikalsen and Jon Lønne\n"
-"Language-Team: Norsk <no@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s er tilgjengelige"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Velg alle"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Ny"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Slett"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Valgte %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Velg ditt svaralternativ(er) og klikk "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Tøm"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar Mars April Mai Juni Juli August September Oktober November "
-"Desember"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M T O T F L"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Vis"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Skjul"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Nå"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Klokke"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Velg et klokkeslett"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Midnatt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "06:00"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "12:00"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "I dag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalender"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "I går"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "I morgen"
diff --git a/webapp/django/conf/locale/pl/LC_MESSAGES/django.mo b/webapp/django/conf/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index d615ced..0000000
--- a/webapp/django/conf/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/pl/LC_MESSAGES/django.po b/webapp/django/conf/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 4d65b05..0000000
--- a/webapp/django/conf/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4622 +0,0 @@
-# translation of django.po to Polish
-# Polish .po file.
-# This file is distributed under the same license as the django package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-25 09:09+0200\n"
-"PO-Revision-Date: 2008-02-25 15:53+0100\n"
-"Last-Translator: Piotr Lewandowski <piotr.lewandowski@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "arabski"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "bengalski"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "bułgarski"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "kataloński"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "czeski"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "walijski"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "duński"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "niemiecki"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "grecki"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "angielski"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "hiszpański"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "estoński"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "hiszpański argentyński"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "baskijski"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "perski"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "fiński"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "francuski"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "irlandzki"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "galicyjski"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "węgierski"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "hebrajski"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "chorwacki"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "islandzki"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "włoski"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "japoński"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "gruziński"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "koreański"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "khmerski"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "łotewski"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "litewski"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "macedoński"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "holenderski"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "norweski"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "polski"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "portugalski"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "brazylijski portugalski"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "rumuński"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "rosyjski"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "słowacki"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "słoweński"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "serbski"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "szwedzki"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "tamilski"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "turecki"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "ukraiński"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "chiński uproszczony"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "chiński tradycyjny"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Przez %s:</h3>\n"
-"</ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Wszystko"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Dowolna data"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Dzisiaj"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Ostatnie 7 dni"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Ten miesiąc"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Ten rok"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:389
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Tak"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:389
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Nie"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:389
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Nieznany"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "czas akcji"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "id obiektu"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "reprezentacja obiektu"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "flaga akcji"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "zmień wiadomość"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "log"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "logi"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "brak"
-
-#: contrib/admin/options.py:329
-#, python-format
-msgid "Changed %s."
-msgstr "Zmieniono %s"
-
-#: contrib/admin/options.py:329 contrib/admin/options.py:339
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "i"
-
-#: contrib/admin/options.py:334
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Dodano %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:338
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Zmieniono %(list)s w %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:343
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Usunięto %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:347
-msgid "No fields changed."
-msgstr "Żadne pole nie zmienione."
-
-#: contrib/admin/options.py:408 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" dodany pomyślnie."
-
-#: contrib/admin/options.py:412 contrib/admin/options.py:445
-#: contrib/auth/admin.py:56
-msgid "You may edit it again below."
-msgstr "Możesz ponownie edytować wpis poniżej."
-
-#: contrib/admin/options.py:422 contrib/admin/options.py:455
-#, python-format
-msgid "You may add another %s below."
-msgstr "Możesz dodać nowy wpis %s poniżej."
-
-#: contrib/admin/options.py:443
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" zostało pomyślnie zmienione."
-
-#: contrib/admin/options.py:451
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej."
-
-#: contrib/admin/options.py:517
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj %s"
-
-#: contrib/admin/options.py:595
-#, python-format
-msgid "Change %s"
-msgstr "Zmień %s"
-
-#: contrib/admin/options.py:627
-msgid "Database error"
-msgstr "Błąd bazy danych"
-
-#: contrib/admin/options.py:677
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" usunięty pomyślnie."
-
-#: contrib/admin/options.py:684
-msgid "Are you sure?"
-msgstr "Jesteś pewien?"
-
-#: contrib/admin/options.py:712
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia zmian: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma "
-"znaczenie."
-
-#: contrib/admin/sites.py:242 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Zaloguj się ponownie. Twoja sesja wygasła lecz twoje zgłoszenie zostało "
-"zapisane."
-
-#: contrib/admin/sites.py:249 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Twoja przeglądarka nie chce akceptować ciasteczek. Zmień jej ustawienia i "
-"spróbuj ponownie."
-
-#: contrib/admin/sites.py:265 contrib/admin/sites.py:271
-#: contrib/admin/views/decorators.py:94
-msgid "Usernames cannot contain the '@' character."
-msgstr "Nazwy użytkowników nie mogą zawierać znaku '@'."
-
-#: contrib/admin/sites.py:268 contrib/admin/views/decorators.py:90
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Podany adres e-mail nie jest Twoją nazwą użytkownika. Spróbuj '%s'."
-
-#: contrib/admin/sites.py:336
-msgid "Site administration"
-msgstr "Administracja stroną"
-
-#: contrib/admin/sites.py:358 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Zaloguj się"
-
-#: contrib/admin/sites.py:403
-#, python-format
-msgid "%s administration"
-msgstr "%s - administracja"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Jedno lub więcej %(fieldname)s w %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Jedno lub więcej %(fieldname)s w %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Czas:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Teraz:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Zmień:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Strona nie znaleziona"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Niestety, żądana strona nie została znaleziona."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/app_index.html:8
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Początek"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Błąd serwera"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Błąd serwera (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Błąd Serwera <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Wystąpił niespodziewany błąd. Raport został wysłany e-mailem "
-"administratorowi strony i powinien zostać wkrótce naprawiony. Dziękujemy za "
-"cierpliwość."
-
-#: contrib/admin/templates/admin/app_index.html:10
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Witaj,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentacja"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Zmiana hasła"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Wyloguj się"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Administracja stroną Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administracja Django"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Dodaj"
-
-#: contrib/admin/templates/admin/change_form.html:27
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Historia"
-
-#: contrib/admin/templates/admin/change_form.html:28
-msgid "View on site"
-msgstr "Pokaż na stronie"
-
-#: contrib/admin/templates/admin/change_form.html:38
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Proszę popraw poniższy błąd."
-msgstr[1] "Proszę popraw poniższe błędy."
-msgstr[2] "Proszę popraw poniższe błędy."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filtr"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:10
-#: contrib/admin/templates/admin/submit_line.html:4
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Usuń"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:16
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Skasowanie %(object_name)s '%(escaped_object)s' spowoduje usunięcie "
-"zależnych obiektów, lecz nie posiadasz uprawnień do usunięcia następujących "
-"typów obiektów:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:23
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Czy chcesz skasować %(object_name)s \"%(escaped_object)s\"? Następujące "
-"zależne obiekty zostaną skasowane:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:28
-msgid "Yes, I'm sure"
-msgstr "Tak, na pewno"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Używając %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modele dostępne w aplikacji %(name)s."
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Zmień"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Nie masz uprawnień by edytować cokolwiek."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Ostatnie akcje"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Moje akcje"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Brak"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Instalacja Twojej bazy danych jest niepoprawna. Upewnij się, że odpowiednie "
-"tabele zostały utworzone i odpowiedni użytkownik jest uprawniony do ich "
-"odczytu."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Nazwa użytkownika:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Hasło:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Data/czas"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Użytkownik"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Akcja"
-
-#: contrib/admin/templates/admin/object_history.html:24
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "Y-m-d H:i:s"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ten obiekt nie ma historii zmian. Najprawdopodobniej wpis ten nie został "
-"dodany poprzez panel administracyjny."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Pokaż wszystko"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Szukaj"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 wynik"
-msgstr[1] "%(counter)s wyniki"
-msgstr[2] "%(counter)s wyników"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s trafień"
-
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Zapisz"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Zapisz jako nowe"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Zapisz i dodaj nowe"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Zapisz i kontynuuj edycję"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Najpierw podaj nazwę użytkownika i hasło. Następnie będziesz mógł edytować "
-"więcej opcji użytkownika."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Nazwa użytkownika"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Hasło"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Hasło (powtórz)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Podaj powyższe hasło w celu weryfikacji."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Podaj nowe hasło dla użytkownika <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Dziękujemy za odwiedzenie serwisu."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Zaloguj ponownie"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Zmiana hasła"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Hasło zmienione"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Twoje hasło zostało zmienione."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "Podaj swoje stare hasło i dwa razy nowe."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Stare hasło:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Nowe hasło:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Potwierdź hasło:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Zmień hasło"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Zresetuj hasło"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Resetowanie hasła zakończone"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Twoje hasło zostało ustawione. Możesz się teraz zalogować."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Potwierdzenie zresetowania hasła"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Podaj nowe hasło"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Podaj dwukrotnie nowe hasło, by można było zweryfikować, czy zostało wpisane "
-"poprawnie."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Resetowanie hasła nieudane"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Link do resetowania hasła był niepoprawny, być może dlatego, że został już "
-"raz użyty. Możesz ponownie zażądać zresetowania hasła."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Udane resetowanie hasła"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Instrukcje dalszego postępowania zostały wysłane na podany adres e-mail. "
-"Powinieneś otrzymać je niebawem."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Otrzymałeś ten e-mail gdyż zażądałeś zresetowania hasła"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "dla twojego konta użytkownika na stronie %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Proszę, idź do podanej strony i wybierz nowe hasło:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Twoja nazwa użytkownika:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Dziękujemy za używanie naszej strony!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Zespół %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Zapomniałeś hasła? Podaj swój adres e-mail, a prześlemy Ci instrukcję, jak "
-"ustawić nowe hasło."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Adres e-mail:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Zresetuj moje hasło"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Wszystkie daty"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Zaznacz %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Zaznacz %s aby zmienić"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "strona"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "szablon"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filtr:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "widok:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacja %r nie została znaleziona"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r nie został znaleziony w aplikacji %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "powiązany obiekt `%(app_label)s.%(data_type)s`"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "powiązane obiekty `%(app_label)s.%(object_name)s`"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "wszystkie %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "liczba %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Pola obiektów %s"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Liczba całkowita"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Wartość logiczna (True, False - prawda lub fałsz)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Łańcuch (do %(max_length)s znaków)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Liczby całkowite rozdzielone przecinkami"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Data (bez godziny)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Data (z godziną)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Liczba dziesiętna"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "Adres e-mail"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Ścieżka do pliku"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Liczba zmiennoprzecinkowa"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "Adres IP"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relacja do modelu rodzica"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Numer telefonu"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Czas"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stan USA (dwie duże litery)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "Tekst XML"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nie jest obiektem urlpattern"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Zakładki"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Zakładki Dokumentacji"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Aby zainstalować skryptozakładki, przeciągnij łącze do "
-"paska zakładek\n"
-"lub kliknij prawym klawiszem na łączu i dodaj je do zakładek. Teraz możesz\n"
-"wybrać skryptozakładkę na dowolnej stronie serwisu. Uwaga: niektóre z tych "
-"skryptozakładek wymagają przeglądania serwisu z komputera\n"
-"\"wewnętrznego\" (skontaktuj się z administratorem systemu, jeśli nie jesteś "
-"pewien, czy ten komputer jest \"wewnętrznym\").</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentacja dla tej strony"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Przekierowuje z dowolnej strony do dokumentacji dla widoku, który ją "
-"generuje."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Pokaż ID obiektu"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Pokazuje typ i unikalne ID dla stron, które reprezentują pojedynczy obiekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Edytuj ten obiekt (bieżące okno)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Przeskok do panelu administratora dla stron reprezentujących pojedynczy "
-"obiekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Edytuj ten obiekt (nowe okno)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Jak wyżej, tyle że otwiera nowe okno."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Dane osobowe"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Uprawnienia"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Ważne daty"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Grupy"
-
-#: contrib/auth/admin.py:61
-msgid "Add user"
-msgstr "Dodaj użytkownika"
-
-#: contrib/auth/admin.py:87
-msgid "Password changed successfully."
-msgstr "Hasło zostało zmienione pomyślnie."
-
-#: contrib/auth/admin.py:93
-#, python-format
-msgid "Change password: %s"
-msgstr "Zmień hasło: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Wymagane. 30 znaków lub mniej. Tylko znaki alfanumeryczne (litery, cyfry i "
-"podkreślenia)."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "To pole może zawierać tylko litery, cyfry i podkreślenia."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Potwierdzenie hasła"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "Użytkownik o tej nazwie już istnieje."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "Hasła się nie zgadzają."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "To konto jest nieaktywne."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Twoja przeglądarka nie chce akceptować ciasteczek. Są one wymagane do "
-"zalogowania się."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-mail"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Ten adres e-mail nie ma przypisanego konta. Jesteś pewien, że "
-"zarejestrowałeś się?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Hasło zresetowane dla %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Nowe hasło"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Nowe hasło ponownie"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Stare hasło"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Podane stare hasło jest niepoprawne. Proszę podać je jeszcze raz."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "nazwa"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "nazwa kodowa"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "uprawnienie"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "uprawnienia"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "grupa"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "grupy"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "użytkownik"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "imię"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "nazwisko"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "adres e-mail"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "hasło"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Użyj '[algo]$[salt]$[hexdigest]' lub <a href=\"password/\">formularza zmiany "
-"hasła</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "w zespole"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Oznacza czy użytkownik może zalogować się do panelu admina."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "aktywny"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Oznacza czy użytkownika należy uważać za aktywnego. Odznacz to, zamiast "
-"usuwać konta."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "status administratora"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Oznacza, że ten użytkownik ma wszystkie uprawnienia bez jawnego "
-"przypisywania ich."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "ostatnio zalogowany"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "data przyłączenia"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Oprócz uprawnień przypisanych bezpośrednio użytkownikowi otrzyma on "
-"uprawnienia grup, do których należy."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "uprawnienia użytkownika"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "użytkownik"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "użytkownicy"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "wiadomość"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Wylogowany"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "ID obiektu"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "nagłówek"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "komentarz"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "ocena #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "ocena #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "ocena #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "ocena #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "ocena #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "ocena #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "ocena #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "ocena #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "jest poprawną oceną"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "data/czas dodania"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "publicznie dostępny"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "usunięty"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Zaznacz to pole jeżeli komentarz jest nieodpowiedni. Wyświetlony zostanie "
-"tekst \"Ten komentarz został usunięty\"."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "komentarze"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Obiekt treści"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Dodane przez %(user)s dnia %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "Nazwa osoby"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "adres IP"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "zaakceptowano"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "wolny komentarz"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "wolne komentarze"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "ilość punktów"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "data przyznania punktów"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "ilość punktów"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "wyniki"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d ocenę przez %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Komentarz oflagowany przez %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "data flagi"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "flaga użytkownika"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "flagi użytkownika"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Flaga %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "data skasowania"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "usunięcie moderatora"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "usunięcia moderatorów"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Usunięcie moderatora przez %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Zapomniałeś hasło?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Oceny"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Wymagane"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcjonalne"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Wyślij zdjęcie"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentarz:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Podgląd"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Twoje imię:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Ta ocena jest wymagana gdyż podałeś przynajmniej jedną inną ocenę."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Ten komentarz został wysłany przez użytkownika, który wysłał mniej niż %"
-"(count)s komentarz:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Ten komentarz został wysłany przez użytkownika, który wysłał mniej niż %"
-"(count)s komentarze:\n"
-"\n"
-"%(text)s"
-msgstr[2] ""
-"Ten komentarz został wysłany przez użytkownika, który wysłał mniej niż %"
-"(count)s komentarzy:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ten komentarz został dodany przez użytkownika::\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Dozwolone tylko POSTy"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Jedno lub więcej wymaganych pól nie zostało wypełnionych"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Ktoś próbował obejść zabezpieczenia formularza komentarzy (naruszenie "
-"bezpieczeństwa)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Formularz komentarza miał niepoprawny parametr 'target' -- ID obiektu było "
-"niepoprawne"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Formularz komentarza nie zapewnił obiektów 'preview' ani 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonimowi użytkownicy nie mogą głosować"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Błędny ID komentarza"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Nie można głosować na siebie"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "nazwa pythonowa modelu klasy"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "typ zawartości"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "typy zawartości"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i "
-"zamykający ukośnik."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"To pole może zawierać jedynie litery, cyfry, podkreślenia, myślniki i "
-"ukośniki."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Opcje zaawansowane"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "tytuł"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "zawartość"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "włącz komentarze"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nazwa szablonu"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Przykład: 'flatpages/contact_page.html'. Jeżeli nie zostanie podane, system "
-"użyje 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "wymagana rejestracja"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Jeżeli zaznaczone - tylko zalogowani użytkownicy będą mogli zobaczyć stronę."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "strona statyczna"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "strony statyczne"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr ""
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Błędna wartość geometrii"
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Błędny typ geometrii"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "-y"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "-szy"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "-gi"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "-ci"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f miliony"
-msgstr[2] "%(value).1f milionów"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliard"
-msgstr[1] "%(value).1f miliardy"
-msgstr[2] "%(value).1f miliardów"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilion"
-msgstr[1] "%(value).1f biliony"
-msgstr[2] "%(value).1f bilionów"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "jeden"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "dwa"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "trzy"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "cztery"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "pięć"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "sześć"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "siedem"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "osiem"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "dziewięć"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "dzisiaj"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "jutro"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "wczoraj"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Wpisz kod pocztowy w formacie NNNN lub ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "To pole może zawierać jedynie liczby."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "To pole musi zawierać 7 lub 8 cyfr."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Podaj poprawny numer CUIT w formacie XX-XXXXXXXX-X lub XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Niepoprawny CUIT"
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Karyntia"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Dolna Austria"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Górna Austria"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburg"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Styria"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tyrol"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Wiedeń"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Wpisz kod pocztowy w formacie XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-"Wpisz poprawny numer austriackiego ubezpieczenia w formacie XXXX XXXXXX."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Wpisz czterocyfrowy kod pocztowy."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Wpisz kod pocztowy w formacie XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Numery telefoniczne muszą być w formacie XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Wybierz poprawny brazylijski stan. Ten stan nie jest jednym z dostępnych "
-"stanów."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Błędny numer CPF."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "To pole nie może zawierać więcej niż 11 cyfr lub 14 znaków."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Błędny numer CNPJ."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "To pole musi zawierać co najmniej 14 cyfr"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Wpisz kod pocztowy w formacie XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Wpisz poprawny numer kanadyjskiego ubezpieczenia w formacie XXX-XXX-XXXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Argowia"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Bazylea-miasto"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Bazylea-okręg"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berno"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fryburg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Genewa"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Gryzonia"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerna"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Szafuza"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solura"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "Sankt Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Turgowia"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurych"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Podaj poprawny numer szwajcarskiego dowodu osobistego lub paszportu w "
-"formacie X1234567<0 lub 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Wpisz poprawny chilijski RUT."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Podaj poprawny chilijski RUT w formacie XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Podany chilijski RUT jest nieprawidłowy."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Badenia-Wirtembergia"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bawaria"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburgia"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Brema"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hesja"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Meklemburgia-Pomorze Zachodnie"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Dolna Saksonia"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Nadrenia Północna-Westfalia"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Nadrenia-Palatynat"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Kraj Saary"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saksonia"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saksonia-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Szlezwik-Holsztyn"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Turyngia"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Wpisz kod pocztowy w formacie XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Podaj poprawny numer niemieckiego dowodu osobistego w formacie XXXXXXXXXXX-"
-"XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arawa"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alicante"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Avila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Baleary"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Caceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Kadyks"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castellon"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Kordowa"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Gipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaen"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Leon"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madryt"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Malaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcja"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Nawarra"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturia"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanka"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Kantabria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segowia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sewilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Walencja"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Vizcaya"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Saragossa"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andaluzja"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragonia"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Asturia"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Baleary"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Kraj Basków"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Wyspy Kanaryjskie"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Kastylia-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Kastylia-Leon"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Katalonia"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Estremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicja"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Murcja"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Nawarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Walencja"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Wpisz kod pocztowy w zakresie i formacie 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Wpisz numer telefoniczny w formacie 6XXXXXXXX, 8XXXXXXXX lub 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Proszę wpisać poprawny numer NIF, NIE lub CIF."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Proszę wpisać poprawny numer NIF lub NIE."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Niepoprawna suma kontrolna NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Niepoprawna suma kontrolna NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Niepoprawna suma kontrolna CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Podaj poprawny numer konta bankowego w formacie XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Niepoprawna suma kontrolna numeru konta bankowego."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Wpis poprawny numer fińskiego ubezpieczenia socjalnego."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Wpisz kod pocztowy w formacie XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-"Podaj poprawny numer islandzkiego dowodu osobistego w formacie XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Numer islandzkiego dowodu osobistego jest błędny."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Wpisz poprawny kod pocztowy."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Wpisz poprawny numer ubezpieczenia socjalnego."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Wpisz poprawny numer VAT."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Wpisz kod pocztowy w formacie XXXXXXX lub XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokio"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroszima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Kalifornia Dolna"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Kalifornia Dolna Południowa"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Meksyk (miasto)"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Meksyk (stan)"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michocan"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo Leon"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Queretaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potasi"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Jukatan"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Wpisz poprawny kod pocztowy"
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Wpisz poprawny numer telefonu"
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Wpisz poprawny numer SoFi"
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drenthe"
-msgstr "Drenthe"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Fryzja"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Geldria"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburgia"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Brabancja Północna"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Holandia Północna"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zelandia"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Holandia Południowa"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Wpis poprawny numer norweskiego ubezpieczenia socjalnego."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "To pole musi zawierać 8 cyfr."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "To pole musi zawierać 11 cyfr."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "Numer PESEL składa się z 11 cyfr."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Błędna suma kontrolna numeru PESEL."
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Wpisz numer NIP w formacie XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Błędna suma kontrolna numeru NIP"
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "Numer REGON składa się z 7 lub 9 cyfr."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Błędna suma kontrolna numeru REGON"
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Wpisz kod pocztowy w formacie XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Dolnośląskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kujawsko-Pomorskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lubelskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubuskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Łódzkie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Małopolskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Mazowieckie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opolskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Podkarpackie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlaskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomorskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Śląskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Świętokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmińsko-Mazurskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Wielkopolskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Zachodniopomorskie"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Wpisz poprawny CIF."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Wpisz poprawny CNP."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "Podaj poprawny IBAN w formacie ROXX-XXXX-XXXX-XXXX-XXXX-XXXX"
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Numery telefoniczne muszą być w formacie XXXX-XXXXXX."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Wpisz kod pocztowy w formacie XXXXXX."
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Wpisz kod pocztowy w formacie XXXXX or XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Bańska Bystrzyca"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Bańska Szczawnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardiów"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratysława I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratysława II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratysława III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratysława IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratysława V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Czadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kieżmarek"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Koszyce I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Koszyce II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Koszyce III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Koszyce IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Koszyce - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Lewocza"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptowski Mikulasz"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Łuczeniec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Pieszczany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Poważska Bystrzyca"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Preszów"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Rużemberk"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Nowa Wieś Spiska"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubowla"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolczany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trenczyn"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnawa"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Twardoszyn"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zwoleń"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Żylina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Kraj bańskobystrzycki"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Kraj bratysławski"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Kraj koszycki"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Kraj nitrzański"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Kraj preszowski"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Kraj trenczyński"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Kraj trnawski"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Kraj żyliński"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Wpisz poprawny kod pocztowy."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Kornwalia i wyspy Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Wielki Londyn"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "Hrabstwo Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "Hrabstwo Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "Hrabstwo Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "Hrabstwo Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "Hrabstwo Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "Hrabstwo Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Scottish Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Central Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkady"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Szetlandy"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Hebrydy Zewnętrzne"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "Anglia"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Irlandia Północna"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Szkocja"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Walia"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Wpisz kod pocztowy w formacie XXXXX. lub XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Wpisz poprawny numer U.S. Social Security w formacie XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Wpisz poprawny południowoafrykański numer ID"
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Wpisz poprawny południowoafrykański kod pocztowy"
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Prowincja Przylądkowa Wschodnia"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Wolne Państwo"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Prowincja Przylądkowa Północna"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "Prowincja Północno-Zachodnia"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Prowincja Przylądkowa Zachodnia"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "przekieruj z"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "Podaj pełną ścieżkę bez nazwy domeny. Przykład: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "przekierowanie do"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "Ścieżka jak wyżej lub pełny URL z http://"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "przekieruj"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "przekierowania"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "klucz sesji"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "data sesji"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "data wygaśnięcia sesji"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sesja"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sesje"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "nazwa domeny"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "wyświetlana nazwa"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "strony"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i myślniki."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Wielkie litery nie są tutaj dozwolone."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Małe litery nie są tutaj dozwolone."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Wpisz tylko cyfry oddzielone przecinkami."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Wpisz poprawne adresy e-mail oddzielone przecinkami."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Proszę wpisać poprawny adres IP."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Proszę wypełnić te pola."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Tu mogą być tylko cyfry."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "To pole nie może zawierać jedynie cyfr."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Wpisz liczbę całkowitą."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Tutaj są dozwolone tylko litery."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Niepoprawna data: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:547
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Proszę wpisać poprawną datę w formacie RRRR-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Proszę wpisać poprawną godzinę w formacie HH:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Wprowadź poprawną datę i godzinę w formacie RRRR-MM-DD GG:MM."
-
-#: core/validators.py:166 forms/fields.py:423
-msgid "Enter a valid e-mail address."
-msgstr "Wprowadź poprawny adres e-mail."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:441
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza."
-
-#: core/validators.py:189 forms/fields.py:472
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Wgraj poprawny plik graficzny. Ten, który został wgrany, nie jest obrazem, "
-"albo jest uszkodzony."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "Odnośnik %s nie wskazuje na poprawny plik z obrazem."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Numery telefoniczne muszą być w formacie XXX-XXX-XXXX. \"%s\" jest "
-"niepoprawny."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "Odnośnik %s nie wskazuje na poprawne nagranie QuickTime video."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Wymagany jest poprawny URL."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Wymagany jest poprawny HTML. Błędy, które wystąpiły:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Nieprawidłowy format XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Niepoprawny odnośnik: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Odnośnik %s jest nieprawidłowy."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Wpisz poprawny kod stanu USA."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Nie wolno przeklinać! Słowo %s nie jest dozwolone."
-msgstr[1] "Nie wolno przeklinać! Słowa %s nie są dozwolone."
-msgstr[2] "Nie wolno przeklinać! Słowa %s nie są dozwolone."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "To pole musi pasować do pola '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Proszę uzupełnić przynajmniej jedno pole."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Proszę uzupełnić oba pola lub zostawić je puste."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "To pole musi być uzupełnione, jeśli %(field)s ma wartość %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-"To pole musi być uzupełnione, jeśli %(field)s ma wartość inną niż %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Duplikaty nie są dozwolone."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Ta wartość musi być pomiędzy %(lower)s a %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Ta wartość nie może być mniejsza od %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Ta wartość nie może być większa od %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Ta wartość musi być potęgą %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Proszę wpisać poprawną liczbę dziesiętną."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrze."
-msgstr[1] ""
-"Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrach."
-msgstr[2] ""
-"Proszę wpisać poprawną liczbę dziesiętną o nie więcej niż %s cyfrach."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfrę."
-msgstr[1] ""
-"Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfry."
-msgstr[2] ""
-"Proszę wpisać poprawną liczbę dziesiętną zawierającą nie więcej niż %s cyfr."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsca po "
-"przecinku."
-msgstr[1] ""
-"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po "
-"przecinku."
-msgstr[2] ""
-"Proszę wpisać poprawną liczbę dziesiętną z dokładnością do %s miejsc po "
-"przecinku."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Proszę wpisać poprawną liczbę rzeczywistą."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Upewnij się, że wgrany plik ma co najmniej %s bajtów."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Upewnij się, że wgrany plik ma co najwyżej %s bajtów."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Format tego pola jest nieprawidłowy."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "To pole jest nieprawidłowe."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nie można nic pobrać z %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL %(url)s zwrócił niepoprawny nagłówek Content-Type '%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Proszę zamknąć tag %(tag)s z linii %(line)s. (Linia zaczyna się od \"%(start)"
-"s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Część tekstu od linii %(line)s nie jest dozwolony w tym kontekście. (Linia "
-"zaczyna się od \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" w linii %(line)s jest niepoprawnym atrybutem. (Linia zaczyna "
-"się od \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" w linii %(line)s nie jest poprawnym tagiem. (Linia zaczyna się "
-"od \"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Tag w linii %(line)s nie posiada jednego lub więcej wymaganych atrybutów. "
-"(Linia zaczyna się od \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Atrybut \"%(attr)s\" w linii %(line)s ma niepoprawną wartość. (Linia zaczyna "
-"się od \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s z %(type)s już istnieje dla %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "Już istnieje %(optname)s z %(fieldname)s."
-
-#: db/models/fields/__init__.py:321 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "To pole jest wymagane."
-
-#: db/models/fields/__init__.py:435 db/models/fields/__init__.py:803
-msgid "This value must be an integer."
-msgstr "Ta wartość musi być liczbą całkowitą."
-
-#: db/models/fields/__init__.py:481
-msgid "This value must be either True or False."
-msgstr ""
-"Ta wartość musi być wartością logiczną (True, False - prawda lub fałsz)."
-
-#: db/models/fields/__init__.py:510
-msgid "This field cannot be null."
-msgstr "To pole nie może być puste."
-
-#: db/models/fields/__init__.py:619 db/models/fields/__init__.py:636
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr ""
-"Wprowadź poprawną datę i godzinę w formacie YYYY-MM-DD HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:692
-msgid "This value must be a decimal number."
-msgstr "Ta wartość musi być liczbą dziesiętną."
-
-#: db/models/fields/__init__.py:841
-msgid "This value must be either None, True or False."
-msgstr ""
-"Ta wartość musi być jedną z None (nic), True (prawda) lub False (fałsz)."
-
-#: db/models/fields/__init__.py:911
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i myślniki."
-
-#: db/models/fields/__init__.py:960 db/models/fields/__init__.py:973
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Proszę wpisać poprawną godzinę w formacie HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Wpisz poprawną nazwę pliku."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Proszę wpisać poprawne %s."
-
-#: db/models/fields/related.py:786
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Przytrzymaj wciśnięty klawisz \"Ctrl\" lub \"Command\" na Mac'u aby "
-"zaznaczyć więcej niż jeden wybór."
-
-#: db/models/fields/related.py:866
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Proszę podać poprawne identyfikatory %(self)s. Wartość %(value)r jest "
-"niepoprawna."
-msgstr[1] ""
-"Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są "
-"niepoprawne."
-msgstr[2] ""
-"Proszę podać poprawne identyfikatory %(self)s. Wartości %(value)r są "
-"niepoprawne."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Wpisz poprawną wartość."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Upewnij się, że ta wartość ma co najwyżej %(max)d znaków (ma długość %"
-"(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Upewnij się, że ta wartość ma co najmniej %(min)d znaków (ma długość %"
-"(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Upewnij się, że ta wartość jest mniejsza lub równa %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Upewnij się, że ta wartość jest większa lub równa %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Wpisz liczbę."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Upewnij się, że jest nie więcej niż %s cyfr."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Upewnij się, że jest nie więcej niż %s miejsc po przecinku."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Upewnij się, że jest nie więcej niż %s miejsc przed przecinkiem."
-
-#: forms/fields.py:282 forms/fields.py:804
-msgid "Enter a valid date."
-msgstr "Wpisz poprawną datę."
-
-#: forms/fields.py:316 forms/fields.py:805
-msgid "Enter a valid time."
-msgstr "Wpisz poprawną godzinę."
-
-#: forms/fields.py:355
-msgid "Enter a valid date/time."
-msgstr "Wpisz poprawną datę/godzinę."
-
-#: forms/fields.py:442
-msgid "No file was submitted."
-msgstr "Żaden plik nie został przesłany."
-
-#: forms/fields.py:443 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Wysłany plik jest pusty."
-
-#: forms/fields.py:533
-msgid "Enter a valid URL."
-msgstr "Wpisz poprawny URL."
-
-#: forms/fields.py:534
-msgid "This URL appears to be a broken link."
-msgstr "Ten odnośnik jest nieprawidłowy."
-
-#: forms/fields.py:602 forms/fields.py:653
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Wybierz poprawną wartość. %(value)s nie jest jednym z dostępnych wyborów."
-
-#: forms/fields.py:654 forms/fields.py:715 forms/models.py:531
-msgid "Enter a list of values."
-msgstr "Podaj listę wartości."
-
-#: forms/fields.py:833
-msgid "Enter a valid IPv4 address."
-msgstr "Wprowadź poprawny adres IPv4."
-
-#: forms/models.py:463
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów."
-
-#: forms/models.py:532
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Wybierz poprawną wartość. %s nie jest jednym z dostępnych wyborów."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Upewnij się, że tekst ma mniej niż %s znak."
-msgstr[1] "Upewnij się, że tekst ma mniej niż %s znaki."
-msgstr[2] "Upewnij się, że tekst ma mniej niż %s znaków."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Znaki nowej linii są tutaj niedopuszczalne."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Wybierz poprawną opcję; '%(data)s' nie jest wśród %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Proszę wpisać liczbę całkowitą z zakresu od -32 768 do 32 767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Proszę wpisać liczbę dodatnią."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Proszę wpisać liczbę całkowitą z zakresu od 0 do 32 767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "tak,nie,może"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajty"
-msgstr[2] "%(size)d bajtów"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "po południu"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "rano"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "po południu"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "rano"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "północ"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "południe"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Poniedziałek"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Wtorek"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Środa"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Czwartek"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Piątek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Niedziela"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Pon"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Wt"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Śr"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Czw"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Pi"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "So"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Nd"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Styczeń"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Luty"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Marzec"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "Kwiecień"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Czerwiec"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Lipiec"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Sierpień"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Wrzesień"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Październik"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Listopad"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Grudzień"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "sty"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "luty"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "marz"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "kwie"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "czerw"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "lip"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "sier"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "wrze"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "paź"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "list"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "gru"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Sty."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Lut."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Sier."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Wrz."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Paź."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Lis."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Gru."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "lub"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "rok"
-msgstr[1] "lata"
-msgstr[2] "lat"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "miesiąc"
-msgstr[1] "miesiące"
-msgstr[2] "miesięcy"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "tydzień"
-msgstr[1] "tygodnie"
-msgstr[2] "tygodni"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dzień"
-msgstr[1] "dni"
-msgstr[2] "dni"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "godzina"
-msgstr[1] "godziny"
-msgstr[2] "godzin"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuta"
-msgstr[1] "minuty"
-msgstr[2] "minut"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuty"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "Y-m-d"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "Y-m"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "m-d"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s zostało pomyślnie utworzone."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s zostało pomyślnie zmienione."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s zostało usunięte."
-
-#~ msgid "DATE_WITH_TIME_FULL"
-#~ msgstr "j F Y H:i:s"
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "Twoje nowe hasło to: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr "Możesz zmienić je na stronie:"
-
-#~ msgid "Ordering"
-#~ msgstr "Sortowanie"
-
-#~ msgid "Order:"
-#~ msgstr "Porządek:"
-
-#~ msgid "Added %s."
-#~ msgstr "Dodano %s"
-
-#~ msgid "Deleted %s."
-#~ msgstr "Skasowano %s"
-
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "Pola 'nowe hasło' nie zgadzają się."
-
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "Rok nie może być wcześniejszy niż 1900."
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "Oddziel identyfikatory przecinkami."
-
-#~ msgid "Brazilian"
-#~ msgstr "Brazylijski"
-
-#~ msgid "Gaeilge"
-#~ msgstr "Gaelicki"
-
-#~ msgid ""
-#~ "Enter a postcode. A space is required between the two postcode parts."
-#~ msgstr ""
-#~ "Wpisz kod pocztowy. Biały znak pomiędzy dwiema częściami kodu jest "
-#~ "wymagany."
-
-#~ msgid "AnonymousUser"
-#~ msgstr "UżytkownikAnonimowy"
-
-#~ msgid "%d milliseconds"
-#~ msgstr "%d milisekund"
diff --git a/webapp/django/conf/locale/pl/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/pl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 24d19bb..0000000
--- a/webapp/django/conf/locale/pl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/pl/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/pl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 07ab5c1..0000000
--- a/webapp/django/conf/locale/pl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,120 +0,0 @@
-# translation of djangojs.po to Polish
-# This file is distributed under the same license as the django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-19 07:28+0200\n"
-"PO-Revision-Date: 2007-03-12 11:42+0100\n"
-"Last-Translator: Jarek Zgoda <jarek.zgoda@gmail.com>\n"
-"Language-Team: Polish <pl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Dostępne %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Wybierz wszystko"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Dodaj"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Usuń"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Wybrano %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Zaznacz swój wybór i kliknij "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Wyczyść wszystko"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Styczeń Luty Marzec Kwiecień Maj Czerwiec Lipiec Sierpień Wrzesień "
-"Październik Listopad Grudzień"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "N Pn Wt Śr Cz Pt So"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Niedziela Poniedziałek Wtorek Środa Czwartek Piątek Sobota"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Pokaż"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Ukryj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Teraz"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Zegar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Wybierz czas"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Północ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 rano"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Południe"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Dzisiaj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalendarz"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Wczoraj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Jutro"
diff --git a/webapp/django/conf/locale/pt/LC_MESSAGES/django.mo b/webapp/django/conf/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 66632e8..0000000
--- a/webapp/django/conf/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/pt/LC_MESSAGES/django.po b/webapp/django/conf/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 203eec4..0000000
--- a/webapp/django/conf/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2128 +0,0 @@
-# Portuguese translation of Django.
-# Copyright (C) 2007 the Lawrence Journal-World
-# This file is distributed under the same license as the PACKAGE package.
-# Nuno Mariz <nmariz@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-03-15 15:43+0200\n"
-"PO-Revision-Date: 2007-03-16 10:00+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: pt_PT <nmariz@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID do objecto"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "título"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "comentário"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "avaliação #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "avaliação #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "avaliação #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "avaliação #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "avaliação #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "avaliação #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "avaliação #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "avaliação #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "é uma avaliação válida"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "data/hora de submissão"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "é público"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "Endereço IP"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "foi removido"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr "Seleccione esta opção se o comentário não é apropriado. Uma mensagem \"Este comentário foi removido\" será mostrada no seu lugar."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "comentários"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Objecto de conteúdo"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Colocado pelo utilizador %(user)s em %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "nome da pessoa"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "endereço ip"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "aprovado pela equipa"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "comentário livre"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "comentários livres"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "pontuação"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "data da pontuação"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "pontuação do karma"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "pontuações do karma"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "Avaliação %(score)d por %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"O utilizador %(user)s colocou uma flag neste comentário\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "data da flag"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "flag do utilizador"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "flags do utilizador"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Flag por %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "data de remoção"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "remoção pelo moderador"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "remoções pelo moderador"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Remoção de moderador %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Utilizadores anónimos não podem votar"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "ID de comentário inválido"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Não pode votar em si"
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Esta avaliação é obrigatória porque introduziu pelo menos uma outra avaliação."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Este comentário foi colocado por um utilizador que efectuou menos de %(count)s comentário:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Este comentário foi colocado por um utilizador que efectuou menos de %(count)s comentários:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentário foi colocado por um utilizador incompleto:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Apenas POSTs são autorizados"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Um ou mais campos obrigatórios não foram submetidos"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Alguém modificou o formulário de comentário (violação de segurança)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr "O formulário de comentário teve um parâmetro 'target' inválido -- o ID do objecto foi inválido"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "O formulário de comentário não forneceu nem 'preview' ou 'post'"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Utilizador:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Sair"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Palavra-passe:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Esqueceu-se da palavra-passe?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Avaliações"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obrigatório"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Colocar uma foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Comentário:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Pré-visualizar comentário"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "O seu nome:"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Por %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Todos"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Qualquer data"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Hoje"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Últimos 7 dias"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Este mês"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Este ano"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Sim"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Não"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "hora da acção"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id do objecto"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "repr do objecto"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "flag de acção"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "modificar mensagem"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "entrada de log"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "entradas de log"
-
-#: contrib/admin/templatetags/admin_list.py:230
-msgid "All dates"
-msgstr "Todas as datas"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "Por favor introduza o utilizador e palavra-passe correctos. Note que ambos os casos diferenciam maiúsculas e minúsculas."
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Entrar"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "Por favor autentique-se novamente, porque a sua sessão expirou. Não se preocupe: Os dados submetidos foram gravados."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr "Aparentemente o seu browser não está configurado para aceitar cookies. Por favor active os cookies, carrege novamente a página e volte a tentar."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Nomes de utilizador não podem conter o caracter '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "O seu endereço de e-mail não é o seu nome de utilizador. Tente usar '%s'."
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Administração do site"
-
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso."
-
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:22
-msgid "You may edit it again below."
-msgstr "Pode editá-lo(a) outra vez abaixo."
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Pode adicionar outro %s abaixo."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Adicionar %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Foi adicionado %s"
-
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "e"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Foi modificado %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Foi removido %s."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Nenhum campo foi modificado."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi modificado(a) com sucesso."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso. Pode voltar a editar novamente abaixo."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/views/main.py:473
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Um ou mais %(fieldname)s em %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:478
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Um ou mais %(fieldname)s em %(name)s:"
-
-#: contrib/admin/views/main.py:511
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi removido(a) com sucesso."
-
-#: contrib/admin/views/main.py:514
-msgid "Are you sure?"
-msgstr "Tem a certeza?"
-
-#: contrib/admin/views/main.py:536
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de modificações: %s"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s"
-msgstr "Seleccionar %s"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s para modificar"
-
-#: contrib/admin/views/main.py:758
-msgid "Database error"
-msgstr "Erro de base de dados"
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "filtro:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "ver:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "A aplicação %r não encontrada"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %r not found in app %r"
-msgstr "O Model %r não foi encontrado na aplicação %r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%s.%s` object"
-msgstr "o objecto `%s.%s` relacionado"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%s.%s` objects"
-msgstr "os objectos `%s.%s` relacionados"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "todos %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campos nos objectos %s"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "Inteiro"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Pode ser True ou False)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "String (até %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Inteiros separados por virgula"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Data (sem hora)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Data (com hora)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "Endereço de e-mail"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "Caminho do ficheiro"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Número décimal"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Pode ser True, False ou None)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Relação para o pai do model"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Número de telefone"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Texto"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "Hora"
-
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "Estado dos E.U.A (duas letras em maiúsculas)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "Texto XML"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s não parece ser um objecto urlpattern"
-
-#: contrib/admin/views/auth.py:28
-msgid "Add user"
-msgstr "Adicionar utilizador"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentação"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Modificar palavra-passe"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Início"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "História"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Utilizador"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Acção"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "Este objecto não tem histórico de modificações. Provavelmente não foi modificado via site de administração."
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Site de administração do Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administração do Django"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Erro do servidor"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Erro do servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Erro do servidor <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr "Ocorreu um erro. Foi reportado aos administradores do site via e-mail e deverá ser corrigido brevemente. Obrigado pela sua paciência."
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Página não encontrada"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Pedimos desculpa, mas a página solicitada não foi encontrada."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Models disponíveis na aplicação %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Adicionar"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Modificar"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Não tem permissão para modificar nada."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Acções Recentes"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "As minhas Acções"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nenhum disponível"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adicionar %(name)s"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "<a href=\"/password_reset/\">Esqueceu-se a sua palavra-passe?</a>"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Bem-vindo,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Remover"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-#, fuzzy
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr "A remoção de %(object_name)s '%(escaped_objects)s' resultará na remoção dos objectos relacionados, mas a sua conta não tem permissão de remoção dos seguintes tipos de objectos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr "Tem a certeza que deseja remover %(object_name)s \"%(escaped_object)s\"? Todos os items relacionados seguintes irão ser removidos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Sim, tenho a certeza"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Ir"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s no total"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todos"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtro"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Ver no site"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Por favor corrija o erro abaixo."
-msgstr[1] "Por favor corrija os erros abaixo."
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "Ordenação"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "Ordem:"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Gravar como novo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Gravar e adicionar outro"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Gravar e continuar a editar"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Gravar"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr "Passa-se algo de errado com a instalação da sua base de dados. Verifique se as tabelas da base de dados foram criadas apropriadamente e verifique se a base de dados pode ser lida pelo utilizador definido."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "Primeiro introduza o nome do utilizador e palavra-passe. Depois poderá editar mais opções do utilizador."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Utilizador"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Palavra-passe"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Palavra-passe (novamente)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Introduza a palavra-passe como acima, para verificação."
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Modificação de palavra-passe"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Palavra-passe modificada com sucesso"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "A sua palavra-passe foi modificada."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Reinicializar palavra-passe"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr "Esqueceu-se da palavra-passe? Introduza o seu email abaixo, e enviaremos a sua palavra-passe reinicializada para o seu e-mail."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Endereço de e-mail:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Reinicializar a minha palavra-passe"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Obrigado por ter gasto tempo de qualidade no Web site hoje."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Entrar novamente"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Palavra-passe reinicializada com sucesso"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr "Foi enviada uma nova palavra-passe nova para o e-mail que submeteu. Deverá estar a recebê-la brevemente."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "Por razões de segurança, por favor introduza a sua palavra-passe antiga e depois introduza a nova duas vezes para que possamos verificar se introduziu correctamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Palavra-passe antiga:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Nova password:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Confirmação da palavra-passe:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Modificar a minha palavra-passe"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Está a receber este e-mail porque requisitou a reinicialização da sua palavra-passe"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "para a sua conta de utilizador em %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "A sua nova palavra-chave é: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Tenha a liberdade de modificar esta palavra-passe através desta página:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "O seu nome de utilizador, no caso de se ter esquecido:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Obrigado pela sua visita ao nosso site!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "A equipa do %(site_name)s"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Itens do bookmark"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Documentação dos itens do bookmark"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar itens no bookmark, arraste o link para sua barra \n"
-"de bookmarks, ou clique com o lado direito do rato no link e adicione ao seus bookmarks. Agora pode \n"
-"seleccionar o link do bookmark de qualquer página no site. Note que alguns destes \n"
-"itens do bookmark requerem que visualize o site de um computador designado \n"
-"por \"internal\" (entre em contacto com o seu administrador de sistema se \n"
-"não tiver a certeza se o seu computador é \"internal\".</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Documentação desta página"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Vai de qualquer página para a documentação da view que gera essa página."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Mostrar o ID do objecto"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "Mostra o tipo de conteúdo e o ID único para as páginas que representam um único objecto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Editar este objecto (janela actual)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Vai para a página de admin para as páginas que representam um único objecto."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Editar este objecto (nova janela)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Tal como acima, mas abre a página de admin numa nova janela."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Actualmente:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redireccionar de"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "Isto deverá ser um caminho absoluto, excluindo o domínio. Exemplo: '/events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redireccionar para"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "Isto poderá ser um caminho absoluto (como acima) ou um URL completo começado por 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redireccionar"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redirecciona"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Exemplo: '/about/contact/'. Verifique se possui as barras no inicio e no fim."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titulo"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "conteúdo"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "permitir comentários"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "nome da template"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr "Exemplo: 'flatpages/contact_page.html'. Se não for fornecido, o sistema usará: 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "é necessário registo"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Se estiver seleccionado, apenas utilizadores autenticados poderão ver esta página."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "página plana"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "páginas planas"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "Saiu"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
-msgstr "nome"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "nome de código"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "permissão"
-
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
-msgstr "permissões"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "grupo"
-
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
-msgstr "grupos"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "utilizador"
-
-#: contrib/auth/models.py:90
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "Obrigatório. 30 caracteres ou menos. Apenas caracteres alfanúmericos (letras, números ou underscores)."
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "primeiro nome"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "último nome"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "endereço de e-mail"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "palavra-passe"
-
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "Use '[algo]$[salt]$[hexdigest]'"
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "status de equipa"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr "Define se o utilizador pode usar a administração do site."
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "activo"
-
-#: contrib/auth/models.py:96
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr "Define se este utiliador pode usar a adminstração do site. Não seleccione em vez de remover as contas."
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "Status de superuser"
-
-#: contrib/auth/models.py:97
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Define se este utilizador tem todas as permissões sem explicitamente as atribuir."
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "última entrada"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "data de registo"
-
-#: contrib/auth/models.py:101
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "Em adição às permissões definidas manualmente, este utilizador também terá todas as permissões atribuídas a cada grupo a que partence."
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "permissões do utilizador"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "utilizador"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "utilizadores"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "Informação pessoal"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "Permissões"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "Datas importantes"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:256
-msgid "message"
-msgstr "mensagem"
-
-#: contrib/auth/forms.py:52
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr "Aparentemente que o seu browser não está configurado para aceitar cookies. Os cookies são necessários para poder entrar."
-
-#: contrib/auth/forms.py:61
-msgid "This account is inactive."
-msgstr "Esta conta não está activa."
-
-#: contrib/contenttypes/models.py:20
-msgid "python model class name"
-msgstr "python model class name"
-
-#: contrib/contenttypes/models.py:23
-msgid "content type"
-msgstr "tipo de conteúdo"
-
-#: contrib/contenttypes/models.py:24
-msgid "content types"
-msgstr "tipos de conteúdos"
-
-#: contrib/sessions/models.py:51
-msgid "session key"
-msgstr "chave da sessão"
-
-#: contrib/sessions/models.py:52
-msgid "session data"
-msgstr "dados da sessão"
-
-#: contrib/sessions/models.py:53
-msgid "expire date"
-msgstr "data de expiração"
-
-#: contrib/sessions/models.py:57
-msgid "session"
-msgstr "sessão"
-
-#: contrib/sessions/models.py:58
-msgid "sessions"
-msgstr "sessões"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "nome do domínio"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "mostrar nome"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "site"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "sites"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Segunda-feira"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Terça-feira"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Quarta-feira"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Quinta-feira"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Sexta-feira"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Janeiro"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Fevereiro"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Junho"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Julho"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Setembro"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Outubro"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Dezembro"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "fev"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "out"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "dez"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Fev."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Set."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Out."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Dez."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "ano"
-msgstr[1] "anos"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mês"
-msgstr[1] "meses"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "semana"
-msgstr[1] "semanas"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dia"
-msgstr[1] "dias"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "horas"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minutos"
-
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
-
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr "F j"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Árabe"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengalês"
-
-#: conf/global_settings.py:41
-msgid "Czech"
-msgstr "Checo"
-
-#: conf/global_settings.py:42
-msgid "Welsh"
-msgstr "Galês"
-
-#: conf/global_settings.py:43
-msgid "Danish"
-msgstr "Dinamarquês"
-
-#: conf/global_settings.py:44
-msgid "German"
-msgstr "Alemão"
-
-#: conf/global_settings.py:45
-msgid "Greek"
-msgstr "Grego"
-
-#: conf/global_settings.py:46
-msgid "English"
-msgstr "Inglês"
-
-#: conf/global_settings.py:47
-msgid "Spanish"
-msgstr "Espanhol"
-
-#: conf/global_settings.py:48
-msgid "Argentinean Spanish"
-msgstr "Espanhol Argentino"
-
-#: conf/global_settings.py:49
-msgid "Finnish"
-msgstr "Filandês"
-
-#: conf/global_settings.py:50
-msgid "French"
-msgstr "Francês"
-
-#: conf/global_settings.py:51
-msgid "Galician"
-msgstr "Galaciano"
-
-#: conf/global_settings.py:52
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:53
-msgid "Hebrew"
-msgstr "Hebraico"
-
-#: conf/global_settings.py:54
-msgid "Icelandic"
-msgstr "Islandês"
-
-#: conf/global_settings.py:55
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:56
-msgid "Japanese"
-msgstr "Japonês"
-
-#: conf/global_settings.py:57
-msgid "Dutch"
-msgstr "Holandês"
-
-#: conf/global_settings.py:58
-msgid "Norwegian"
-msgstr "Norueguês"
-
-#: conf/global_settings.py:59
-msgid "Brazilian"
-msgstr "Brasileiro"
-
-#: conf/global_settings.py:60
-msgid "Romanian"
-msgstr "Romeno"
-
-#: conf/global_settings.py:61
-msgid "Russian"
-msgstr "Russo"
-
-#: conf/global_settings.py:62
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:63
-msgid "Slovenian"
-msgstr "Esloveno"
-
-#: conf/global_settings.py:64
-msgid "Serbian"
-msgstr "Sérvio"
-
-#: conf/global_settings.py:65
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:66
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:67
-msgid "Turkish"
-msgstr "Turco"
-
-#: conf/global_settings.py:68
-msgid "Ukrainian"
-msgstr "Ucraniano"
-
-#: conf/global_settings.py:69
-msgid "Simplified Chinese"
-msgstr "Chinês Simplificado"
-
-#: conf/global_settings.py:70
-msgid "Traditional Chinese"
-msgstr "Chinês Tradicional"
-
-#: core/validators.py:63
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor apenas poderá conter letras, números ou underscores."
-
-#: core/validators.py:67
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "Este valor apenas poderá conter letras, números, underscores ou traços."
-
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Este valor apenas poderá conter letras, números, undercores ou hífenes."
-
-#: core/validators.py:75
-msgid "Uppercase letters are not allowed here."
-msgstr "Letras em maiúsculas não são permitidas aqui."
-
-#: core/validators.py:79
-msgid "Lowercase letters are not allowed here."
-msgstr "Letras em minúsculas não são permitidas aqui."
-
-#: core/validators.py:86
-msgid "Enter only digits separated by commas."
-msgstr "Introduza apenas números separados por vírgulas."
-
-#: core/validators.py:98
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Introduza endereços de e-mail válidos separados por vírgulas."
-
-#: core/validators.py:102
-msgid "Please enter a valid IP address."
-msgstr "Por favor introduza um endereço IP válido."
-
-#: core/validators.py:106
-msgid "Empty values are not allowed here."
-msgstr "Valores em branco não são permitidos aqui."
-
-#: core/validators.py:110
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Caracteres não númericos não são permitidos aqui."
-
-#: core/validators.py:114
-msgid "This value can't be comprised solely of digits."
-msgstr "Este valor não pode ser constituido apenas por números."
-
-#: core/validators.py:119
-msgid "Enter a whole number."
-msgstr "Introduza um número inteiro."
-
-#: core/validators.py:123
-msgid "Only alphabetical characters are allowed here."
-msgstr "Apenas letras são válidas aqui."
-
-#: core/validators.py:138
-msgid "Year must be 1900 or later."
-msgstr "O ano deve ser 1900 ou superior."
-
-#: core/validators.py:142
-#, python-format
-msgid "Invalid date: %s."
-msgstr "Data inválida: %s."
-
-#: core/validators.py:146 db/models/fields/__init__.py:415
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Introduza uma data válida no formato AAAA-MM-DD."
-
-#: core/validators.py:151
-msgid "Enter a valid time in HH:MM format."
-msgstr "Introduza uma hora válida no formato HH:MM."
-
-#: core/validators.py:155 db/models/fields/__init__.py:477
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Introduza uma data/hora válida no formato AAAA-MM-DD HH:MM."
-
-#: core/validators.py:160
-msgid "Enter a valid e-mail address."
-msgstr "Introduza um endereço de e-mail válido."
-
-#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nenhum ficheiro foi submetido. Verifique o tipo de codificação do formulário."
-
-#: core/validators.py:176
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "Introduza uma imagem válida. O ficheiro que introduziu ou não é uma imagem ou está corrompido."
-
-#: core/validators.py:183
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "O URL %s não aponta para uma imagem válida."
-
-#: core/validators.py:187
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Os números de telefone deverão ser no formato XXX-XXX-XXXX. \"%s\" é inválido."
-
-#: core/validators.py:195
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "O URL %s não aponta para um QuickTime video válido."
-
-#: core/validators.py:199
-msgid "A valid URL is required."
-msgstr "É obrigatório um URL válido"
-
-#: core/validators.py:213
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"É obrigatório um HTML válido. Os erros específicos são:\n"
-"%s"
-
-#: core/validators.py:220
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formatado: %s"
-
-#: core/validators.py:230
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL inválido: %s"
-
-#: core/validators.py:234 core/validators.py:236
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "O URL %s é um link quebrado."
-
-#: core/validators.py:242
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introduza uma abreviação de um estado dos E.U.A. válido."
-
-#: core/validators.py:256
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Atenção à linguagem! A palavra %s não é permitida aqui."
-msgstr[1] "Atenção à linguagem! As palavras %s não são permitidas aqui."
-
-#: core/validators.py:263
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Este campo deve ser igual ao campo '%s'."
-
-#: core/validators.py:282
-msgid "Please enter something for at least one field."
-msgstr "Por favor preencha pelo menos um campo."
-
-#: core/validators.py:291 core/validators.py:302
-msgid "Please enter both fields or leave them both empty."
-msgstr "Por favor preencha ambos os campos ou deixe ambos vazios."
-
-#: core/validators.py:309
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Este campo deve ser preenchido se %(field)s for %(value)s"
-
-#: core/validators.py:321
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Este campo deve ser preenchido se %(field)s não é %(value)s"
-
-#: core/validators.py:340
-msgid "Duplicate values are not allowed."
-msgstr "Valores duplicados não são permitidos."
-
-#: core/validators.py:363
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Este valor deverá ser uma potência de %s."
-
-#: core/validators.py:374
-msgid "Please enter a valid decimal number."
-msgstr "Por favor introduza um número décimal válido."
-
-#: core/validators.py:378
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Por favor introduza um número décimal com um máximo de %s digito."
-msgstr[1] "Por favor introduza um número décimal com um máximo de %s digitos."
-
-#: core/validators.py:381
-#, python-format
-#, fuzzy
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Por favor introduza um número décimal com o máximo de % digito na parte inteira."
-msgstr[1] "Por favor introduza um número décimal com o máximo de % digitos na parte inteira."
-
-#: core/validators.py:384
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Por favor introduza um número décimal com o máximo de %s digito na parte décimal."
-msgstr[1] "Por favor introduza um número décimal com o máximo de %s digitos na parte décimal."
-
-#: core/validators.py:394
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Verifique que o ficheiro introduzido tem pelo menos %s bytes."
-
-#: core/validators.py:395
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Verifique se o ficheiro introduzido tem no máximo %s bytes."
-
-#: core/validators.py:412
-msgid "The format for this field is wrong."
-msgstr "O formato deste campo é errado."
-
-#: core/validators.py:427
-msgid "This field is invalid."
-msgstr "Este campo é inválido."
-
-#: core/validators.py:463
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Não foi possível extrair nada de %s."
-
-#: core/validators.py:466
-#, python-format
-#, fuzzy
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "O URL %(url)s devolveu um tipo de conteúdo inválido no header: '%s(contenttype)s'."
-
-#: core/validators.py:499
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr "Por favor feche a tag %(tag)s na linha %(line)s. (A linha começa por \"%(start)s\".)"
-
-#: core/validators.py:503
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr "Algum texto começado na linha %(line)s não é permitido nesse contexto. (A linha começa por \"%(start)s\".)"
-
-#: core/validators.py:508
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr "\"%(attr)s\" na linha %(line)s é um atributo inválido. (A linha começa por \"%(start)s\".)"
-
-#: core/validators.py:513
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr "\"<%(tag)s>\" na linha %(line)s é um tag inválida. (A linha começa por \"%(start)s\".)"
-
-#: core/validators.py:517
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr "Uma tag na linha %(line)s não tem um o mais atributos obrigatórios. (A linha começa por \"%(start)s\".)"
-
-#: core/validators.py:522
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr "O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (A linha começa por \"%(start)s\".)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "O(A) %(verbose_name)s foi criado(a) com sucesso."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "O(A) %(verbose_name)s foi actualizado(a) com sucesso."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "O(A) %(verbose_name)s foi removido(a)."
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "O(A) %(object)s com este %(type)s já existe para o(a) %(field)s fornecido."
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s com %(fieldname)s já existe."
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "Este campo é obrigatório."
-
-#: db/models/fields/__init__.py:340
-msgid "This value must be an integer."
-msgstr "Este campo deverá ser inteiro."
-
-#: db/models/fields/__init__.py:372
-msgid "This value must be either True or False."
-msgstr "Este valor deverá ser True ou False."
-
-#: db/models/fields/__init__.py:388
-msgid "This field cannot be null."
-msgstr "Este campo não pode ser nulo."
-
-#: db/models/fields/__init__.py:571
-msgid "Enter a valid filename."
-msgstr "Introduza um nome de ficheiro válido."
-
-#: db/models/fields/related.py:51
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Por favor introduza um %s válido."
-
-#: db/models/fields/related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr "Separe múltiplos IDs através de vírgulas."
-
-#: db/models/fields/related.py:620
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Mantenha pressionado o \"Control\", or \"Command\" no Mac, para seleccionar mais do que um."
-
-#: db/models/fields/related.py:664
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Por favor introduza IDs de %(self)s válidos. O valor %(value)r é inválido."
-msgstr[1] "Por favor introduza IDs de %(self)s válidos. Os valores %(value)r são inválidos."
-
-#: forms/__init__.py:381
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Verifique se o seu texto tem menos de %s caracter."
-msgstr[1] "Verifique se o seu texto tem menos de %s caracteres."
-
-#: forms/__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr "Quebras de linha não são permitas aqui."
-
-#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Seleccione uma opção válida; '%(data)s' não se encontra em %(choices)s."
-
-#: forms/__init__.py:663
-msgid "The submitted file is empty."
-msgstr "O ficheiro submetido encontra-se vazio."
-
-#: forms/__init__.py:719
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduza um número entre -32,768 e 32,767."
-
-#: forms/__init__.py:729
-msgid "Enter a positive number."
-msgstr "Introduza um número positivo."
-
-#: forms/__init__.py:739
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduza um número entre 0 e 32,767."
-
-#: template/defaultfilters.py:401
-msgid "yes,no,maybe"
-msgstr "sim,não,talvez"
diff --git a/webapp/django/conf/locale/pt/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/pt/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 26ad584..0000000
--- a/webapp/django/conf/locale/pt/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/pt/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/pt/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 130a75f..0000000
--- a/webapp/django/conf/locale/pt/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,108 +0,0 @@
-# Portuguese translation of Django.
-# Copyright (C) 2007 the Lawrence Journal-World
-# This file is distributed under the same license as the PACKAGE package.
-# Nuno Mariz <nmariz@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-03-15 11:51+0100\n"
-"PO-Revision-Date: 2007-03-16 10:01+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: pt_PT <nmariz@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Disponível %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Escolher todos"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Adicionar"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Remover"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Escolhido %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Seleccione a(s) sua(s) escolha(s) e clique "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Limpar tudo"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Domingo Segunda Terça Quarta Quinta Sexta Sábado"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D S T Q Q S S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Agora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Relógio"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Escolha a hora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Meia-noite"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Meio-dia"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Hoje"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Calendário"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Ontem"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Amanhã"
diff --git a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/webapp/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index f254e69..0000000
--- a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/webapp/django/conf/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index 5f4555a..0000000
--- a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4381 +0,0 @@
-# Português do Brasil translation of django.
-# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-31 21:44-0300\n"
-"PO-Revision-Date: 2008-03-31 21:59-0300\n"
-"Last-Translator: Guilherme Mesquita Gondim <semente@taurinus.org>\n"
-"Language-Team: Grupo de Localização para o Português <django-l10n-portuguese@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arábico"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Búlgaro"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "Catalão"
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "Tcheco"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "Galês"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Dinamarquês"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "Alemão"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "Grego"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "Inglês"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Espanhol"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Espanhol Argentino"
-
-#: conf/global_settings.py:51
-msgid "Basque"
-msgstr "Basco"
-
-#: conf/global_settings.py:52
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:53
-msgid "Finnish"
-msgstr "Finlandês"
-
-#: conf/global_settings.py:54
-msgid "French"
-msgstr "Francês"
-
-#: conf/global_settings.py:55
-msgid "Irish"
-msgstr "Irlandês"
-
-#: conf/global_settings.py:56
-msgid "Galician"
-msgstr "Galiciano"
-
-#: conf/global_settings.py:57
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:58
-msgid "Hebrew"
-msgstr "Hebraico"
-
-#: conf/global_settings.py:59
-msgid "Croatian"
-msgstr "Croata"
-
-#: conf/global_settings.py:60
-msgid "Icelandic"
-msgstr "Islandês"
-
-#: conf/global_settings.py:61
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:62
-msgid "Japanese"
-msgstr "Japonês"
-
-#: conf/global_settings.py:63
-msgid "Georgian"
-msgstr "Georgiana"
-
-#: conf/global_settings.py:64
-msgid "Korean"
-msgstr "Coreano"
-
-#: conf/global_settings.py:65
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:66
-msgid "Kannada"
-msgstr "Canarês"
-
-#: conf/global_settings.py:67
-msgid "Latvian"
-msgstr "Letão"
-
-#: conf/global_settings.py:68
-msgid "Macedonian"
-msgstr "Macedônio"
-
-#: conf/global_settings.py:69
-msgid "Dutch"
-msgstr "Neerlandês"
-
-#: conf/global_settings.py:70
-msgid "Norwegian"
-msgstr "Norueguês"
-
-#: conf/global_settings.py:71
-msgid "Polish"
-msgstr "Polaco"
-
-#: conf/global_settings.py:72
-msgid "Portugese"
-msgstr "Português"
-
-#: conf/global_settings.py:73
-msgid "Brazilian Portuguese"
-msgstr "Português Brasileiro"
-
-#: conf/global_settings.py:74
-msgid "Romanian"
-msgstr "Romeno"
-
-#: conf/global_settings.py:75
-msgid "Russian"
-msgstr "Russo"
-
-#: conf/global_settings.py:76
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:77
-msgid "Slovenian"
-msgstr "Esloveno"
-
-#: conf/global_settings.py:78
-msgid "Serbian"
-msgstr "Sérvio"
-
-#: conf/global_settings.py:79
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:80
-msgid "Tamil"
-msgstr "Tâmil"
-
-#: conf/global_settings.py:81
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:82
-msgid "Turkish"
-msgstr "Turco"
-
-#: conf/global_settings.py:83
-msgid "Ukrainian"
-msgstr "Ucraniano"
-
-#: conf/global_settings.py:84
-msgid "Simplified Chinese"
-msgstr "Chinês Simplificado"
-
-#: conf/global_settings.py:85
-msgid "Traditional Chinese"
-msgstr "Chinês Tradicional"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Por %s</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Todos"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Qualquer data"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Hoje"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Últimos 7 dias"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Este mês"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Este ano"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Sim"
-
-#: contrib/admin/filterspecs.py:147 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Não"
-
-#: contrib/admin/filterspecs.py:154 newforms/widgets.py:231
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: contrib/admin/models.py:18
-msgid "action time"
-msgstr "hora da ação"
-
-#: contrib/admin/models.py:21
-msgid "object id"
-msgstr "id do objeto"
-
-#: contrib/admin/models.py:22
-msgid "object repr"
-msgstr "repr do objeto"
-
-#: contrib/admin/models.py:23
-msgid "action flag"
-msgstr "flag de ação"
-
-#: contrib/admin/models.py:24
-msgid "change message"
-msgstr "modificar mensagem"
-
-#: contrib/admin/models.py:27
-msgid "log entry"
-msgstr "entrada de log"
-
-#: contrib/admin/models.py:28
-msgid "log entries"
-msgstr "entradas de log"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Página não encontrada"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Desculpe, mas a página requisitada não pode ser encontrada."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:37
-#: contrib/admin/templates/admin/change_form.html:12
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:5
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:4
-#: contrib/admin/templates/admin/auth/user/change_password.html:11
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Início"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Erro no servidor"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Erro no servidor (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Erro no Servidor <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Houve um erro. Este foi reportado aos administradores do site através do e-"
-"mail e deve ser corrigido em breve. Obrigado pela compreensão."
-
-#: contrib/admin/templates/admin/base.html:26
-msgid "Welcome,"
-msgstr "Bem vindo,"
-
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Documentação"
-
-#: contrib/admin/templates/admin/base.html:29
-#: contrib/admin/templates/admin/auth/user/change_password.html:14
-#: contrib/admin/templates/admin/auth/user/change_password.html:45
-msgid "Change password"
-msgstr "Alterar senha"
-
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Encerrar sessão"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Site de administração do Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administração do Django"
-
-#: contrib/admin/templates/admin/change_form.html:14
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Adicionar"
-
-#: contrib/admin/templates/admin/change_form.html:20
-#: contrib/admin/templates/admin/object_history.html:4
-msgid "History"
-msgstr "Histórico"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Ver no site"
-
-#: contrib/admin/templates/admin/change_form.html:31
-#: contrib/admin/templates/admin/auth/user/change_password.html:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Por favor, corrija o erro abaixo."
-msgstr[1] "Por favor, corrija os erros abaixo."
-
-#: contrib/admin/templates/admin/change_form.html:49
-msgid "Ordering"
-msgstr "Ordenação"
-
-#: contrib/admin/templates/admin/change_form.html:52
-msgid "Order:"
-msgstr "Ordem:"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adicionar %(name)s"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:8
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Apagar"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:13
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"A remoção de '%(object_name)s' %(escaped_object)s pode resultar na remoção "
-"de objetos relacionados, mas sua conta não tem a permissão para remoção dos "
-"seguintes tipos de objetos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:20
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Você tem certeza que quer remover o %(object_name)s \"%(escaped_object)s\"? "
-"Todos os seguintes itens relacionados serão removidos:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:25
-msgid "Yes, I'm sure"
-msgstr "Sim, tenho certeza"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Por %(filter_title)s "
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtro"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modelos disponíveis na aplicação %(name)s"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Modificar"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Você não tem permissão para edição."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Ações Recentes"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Minhas Ações"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nenhuma disponível"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Alguma coisa errada com a instalação do banco de dados. Certifique-se que as "
-"tabelas necessárias foram criadas e que o banco de dados pode ser acessado "
-"pelo usuário."
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Usuário:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Senha:"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:31
-msgid "Log in"
-msgstr "Acessar"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "User"
-msgstr "Usuário"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "Action"
-msgstr "Ação"
-
-#: contrib/admin/templates/admin/object_history.html:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:35
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto não tem um histórico de alterações. Ele provavelmente não foi "
-"adicionado por este site de administração."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar tudo"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Ir"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s total"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Salvar como novo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Salvar e adicionar outro"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Salvar e continuar editando"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Salvar"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primeiro, informe um nome de usuário e senha. Então, você será capaz de "
-"editar mais opções do usuário."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Usuário:"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-msgid "Password"
-msgstr "Senha:"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:38
-msgid "Password (again)"
-msgstr "Senha (novamente)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Enter the same password as above, for verification."
-msgstr "Informe a mesma senha digitada acima, para verificação."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Informe uma nova senha para o usuário <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Itens de bookmark"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Documentação de itens de bookmark"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar um item no bookmark, arraste o link para a \n"
-"barra de ferramentas de bookmarks, ou clique com o botão direito no link e\n"
-"adicione-o à barra de ferramentas. Agora você pode selecionar o item de\n"
-"bookmark de qualquer página do site. Lembre-se que alguns desses itens\n"
-"de bookmark requerem que você veja o site de um computador designado\n"
-"como \"interno\" (converse com seu administrador de sistemas se você não\n"
-"souber se seu computador é \"interno\").</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Documentação para esta página"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Leva você de qualquer página da documentação para a view que gera tal página."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Mostar ID de objeto"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Mostra o tipo de conteúdo e ID único para páginas que representam um objeto "
-"único."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (janela atual)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Vai para a página de administração que representam um objeto único."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nova janela)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Como acima, mas abre a página de administração em uma nova janela."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Obrigado por visitar nosso Web site hoje."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Acessar novamente"
-
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_form.html:5
-#: contrib/admin/templates/registration/password_change_form.html:9
-msgid "Password change"
-msgstr "Alterar senha"
-
-#: contrib/admin/templates/registration/password_change_done.html:5
-#: contrib/admin/templates/registration/password_change_done.html:9
-msgid "Password change successful"
-msgstr "Senha alterada com sucesso"
-
-#: contrib/admin/templates/registration/password_change_done.html:11
-msgid "Your password was changed."
-msgstr "Sua senha foi alterada."
-
-#: contrib/admin/templates/registration/password_change_form.html:11
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, informe sua senha antiga, por segurança, e então informe sua nova "
-"senha duas vezes para que possamos verificar se você digitou corretamente."
-
-#: contrib/admin/templates/registration/password_change_form.html:16
-msgid "Old password:"
-msgstr "Senha antiga:"
-
-#: contrib/admin/templates/registration/password_change_form.html:18
-msgid "New password:"
-msgstr "Nova senha:"
-
-#: contrib/admin/templates/registration/password_change_form.html:20
-msgid "Confirm password:"
-msgstr "Confirme a senha:"
-
-#: contrib/admin/templates/registration/password_change_form.html:22
-msgid "Change my password"
-msgstr "Alterar minha senha"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Recuperar senha"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Senha recuperada com sucesso"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Nós enviamos uma nova senha para o e-mail que você informou. Você deverá "
-"receber uma mensagem em breve."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Você está recebendo este e-mail porque você pediu uma nova senha"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "para sua conta em %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Sua nova senha é: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Sinta-se a vontade para alterar esta senha visitando esta página:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Seu nome de usuário, caso tenha esquecido:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Obrigado por usar nosso site!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Equipe do %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Esqueceu a senha? Digite seu e-mail abaixo e nós iremos enviar uma nova "
-"senha para você."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Endereço de e-mail:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Reinicializar minha senha"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Data:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Hora:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Atualmente:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Modificar:"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Todas as datas"
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:267
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado com sucesso."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-msgid "You may edit it again below."
-msgstr "Você pode editá-lo(a) de novo abaixo."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Adicionar usuário"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Senha modificada com sucesso."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Alterar senha: %s"
-
-#: contrib/admin/views/decorators.py:17 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Por favor entre usuário e senha corretos. Note que ambos os campos "
-"diferenciam maiúsculas e minúsculas."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Por favor acesse novamente, pois sua sessão expirou. Não se preocupe: Os "
-"dados enviados foram salvos."
-
-#: contrib/admin/views/decorators.py:76
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Parece que seu navegador não está configurado para aceitar cookies. Por "
-"favor habilite os cookies, recarregue esta página, e tente novamente."
-
-#: contrib/admin/views/decorators.py:90
-msgid "Usernames cannot contain the '@' character."
-msgstr "Nomes de usuário não podem conter o caractere '@'."
-
-#: contrib/admin/views/decorators.py:92
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Seu endereço de e-mail não é seu nome de usuário. Tente usar '%s'"
-
-#: contrib/admin/views/doc.py:48 contrib/admin/views/doc.py:50
-#: contrib/admin/views/doc.py:52
-msgid "tag:"
-msgstr "tag:"
-
-#: contrib/admin/views/doc.py:79 contrib/admin/views/doc.py:81
-#: contrib/admin/views/doc.py:83
-msgid "filter:"
-msgstr "filtro:"
-
-#: contrib/admin/views/doc.py:137 contrib/admin/views/doc.py:139
-#: contrib/admin/views/doc.py:141
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admin/views/doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicação %r não encontrada"
-
-#: contrib/admin/views/doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "O model %(name)r não encontrado na aplicação %(label)r"
-
-#: contrib/admin/views/doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "o objeto `%(label)s.%(type)s` relacionado"
-
-#: contrib/admin/views/doc.py:185 contrib/admin/views/doc.py:207
-#: contrib/admin/views/doc.py:221 contrib/admin/views/doc.py:226
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admin/views/doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "objetos `%(label)s.%(name)s` relacionados"
-
-#: contrib/admin/views/doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "todos %s"
-
-#: contrib/admin/views/doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#: contrib/admin/views/doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campos nos objetos %s"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:306 contrib/admin/views/doc.py:312
-#: contrib/admin/views/doc.py:313 contrib/admin/views/doc.py:315
-msgid "Integer"
-msgstr "Inteiro"
-
-#: contrib/admin/views/doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Lógico (Verdadeiro ou Falso)"
-
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (até %(max_length)s)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Comma-separated integers"
-msgstr "Inteiros separados por vírgula"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (without time)"
-msgstr "Data (sem hora)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Date (with time)"
-msgstr "Data/hora"
-
-#: contrib/admin/views/doc.py:299
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: contrib/admin/views/doc.py:300
-msgid "E-mail address"
-msgstr "Endereço de e-mail"
-
-#: contrib/admin/views/doc.py:301 contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:305
-msgid "File path"
-msgstr "Caminho do Arquivo"
-
-#: contrib/admin/views/doc.py:303
-msgid "Floating point number"
-msgstr "Número de ponto flutuante"
-
-#: contrib/admin/views/doc.py:307 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "Endereço IP:"
-
-#: contrib/admin/views/doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Lógico (Verdadeiro, Falso ou Nada)"
-
-#: contrib/admin/views/doc.py:310
-msgid "Relation to parent model"
-msgstr "Relação com o modelo pai"
-
-#: contrib/admin/views/doc.py:311
-msgid "Phone number"
-msgstr "Número de telefone"
-
-#: contrib/admin/views/doc.py:316
-msgid "Text"
-msgstr "Texto"
-
-#: contrib/admin/views/doc.py:317
-msgid "Time"
-msgstr "Hora"
-
-#: contrib/admin/views/doc.py:318 contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "Estado dos EUA (duas letras maiúsculas)"
-
-#: contrib/admin/views/doc.py:320
-msgid "XML text"
-msgstr "Texto XML"
-
-#: contrib/admin/views/doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s não aparenta ser um objeto urlpattern"
-
-#: contrib/admin/views/main.py:233
-msgid "Site administration"
-msgstr "Administração do Site"
-
-#: contrib/admin/views/main.py:280 contrib/admin/views/main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Você pode adicionar outro(a) %s abaixo."
-
-#: contrib/admin/views/main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Adicionar %s"
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Adicionado %s."
-
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-#: contrib/admin/views/main.py:348 core/validators.py:283
-#: db/models/manipulators.py:309
-msgid "and"
-msgstr "e"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado %s."
-
-#: contrib/admin/views/main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Excluído %s."
-
-#: contrib/admin/views/main.py:351
-msgid "No fields changed."
-msgstr "Nenhum campo modificado."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi modificado com sucesso."
-
-#: contrib/admin/views/main.py:362
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"O(A) %(name)s \"%(obj)s\" foi adicionado com sucesso. Você pode editá-lo(a) "
-"abaixo."
-
-#: contrib/admin/views/main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: contrib/admin/views/main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Um(a) ou mais %(fieldname)s em %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Um(a) ou mais %(fieldname)s em %(name)s:"
-
-#: contrib/admin/views/main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi excluído com sucesso."
-
-#: contrib/admin/views/main.py:527
-msgid "Are you sure?"
-msgstr "Você tem certeza?"
-
-#: contrib/admin/views/main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de Modificações: %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Selecione %s"
-
-#: contrib/admin/views/main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Selecione %s para modificar"
-
-#: contrib/admin/views/main.py:784
-msgid "Database error"
-msgstr "Erro na base de dados"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Os dois campos de senha não combinam."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Um usuário com este nome de usuário já existe."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Seu navegador Web não parece estar com os cookies habilitados. Cookies são "
-"requeridos para acessar."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Esta conta está inativa."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Este endereço de e-mail não está associado com uma conta de usuário.Você tem "
-"certeza que está registrado?"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Recuperar senha em %s"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Os dois campos 'nova senha' não conferem."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"A senha antiga foi digitada incorretamente. Por favor, informe a senha "
-"novamente."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:93
-msgid "name"
-msgstr "nome"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "apelido"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "permissão"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:94
-msgid "permissions"
-msgstr "permissões"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "grupo"
-
-#: contrib/auth/models.py:98 contrib/auth/models.py:141
-msgid "groups"
-msgstr "grupos"
-
-#: contrib/auth/models.py:131
-msgid "username"
-msgstr "usuário"
-
-#: contrib/auth/models.py:131
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Obrigatório. 30 caracteres ou menos. Apenas caracteres alfanuméricos(letras, "
-"dígitos e sublinhados (_) )"
-
-#: contrib/auth/models.py:132
-msgid "first name"
-msgstr "primeiro nome"
-
-#: contrib/auth/models.py:133
-msgid "last name"
-msgstr "último nome"
-
-#: contrib/auth/models.py:134
-msgid "e-mail address"
-msgstr "endereço de e-mail"
-
-#: contrib/auth/models.py:135
-msgid "password"
-msgstr "senha"
-
-#: contrib/auth/models.py:135
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Use '[algo]$[salt]$[hexdigest]' ou <a href=\"password/\"> Altere a senha</a>."
-
-#: contrib/auth/models.py:136
-msgid "staff status"
-msgstr "status da equipe"
-
-#: contrib/auth/models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "Permite ao usuário o acesso a este site de administração."
-
-#: contrib/auth/models.py:137
-msgid "active"
-msgstr "ativar"
-
-#: contrib/auth/models.py:137
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Permite ao usuário acessar este site de administração. Ao invés de excluir "
-"contas de usuário, desmarque isso."
-
-#: contrib/auth/models.py:138
-msgid "superuser status"
-msgstr "status de superusuário"
-
-#: contrib/auth/models.py:138
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Informa que este usuário tem todas as permissões sem atribuí-las "
-"explicitamente."
-
-#: contrib/auth/models.py:139
-msgid "last login"
-msgstr "último login"
-
-#: contrib/auth/models.py:140
-msgid "date joined"
-msgstr "data de registro"
-
-#: contrib/auth/models.py:142
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Em adição às permissões atribuídas manualmente, este usuário também terá "
-"todas as permissões dadas a cada grupo que participar."
-
-#: contrib/auth/models.py:143
-msgid "user permissions"
-msgstr "permissões do usuário"
-
-#: contrib/auth/models.py:147
-msgid "user"
-msgstr "usuário"
-
-#: contrib/auth/models.py:148
-msgid "users"
-msgstr "usuários"
-
-#: contrib/auth/models.py:154
-msgid "Personal info"
-msgstr "Informações pessoais"
-
-#: contrib/auth/models.py:155
-msgid "Permissions"
-msgstr "Permissões"
-
-#: contrib/auth/models.py:156
-msgid "Important dates"
-msgstr "Datas importantes"
-
-#: contrib/auth/models.py:157
-msgid "Groups"
-msgstr "Grupos"
-
-#: contrib/auth/models.py:316
-msgid "message"
-msgstr "mensagem"
-
-#: contrib/auth/views.py:47
-msgid "Logged out"
-msgstr "Sessão encerrada"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:176
-msgid "object ID"
-msgstr "id do objeto"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "título"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:177
-msgid "comment"
-msgstr "comentário"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "avaliação #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "avaliação #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "avaliação #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "avaliação #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "avaliação #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "avaliação #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "avaliação #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "avaliação #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "é uma avaliação válida"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:179
-msgid "date/time submitted"
-msgstr "data/hora de envio"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:180
-msgid "is public"
-msgstr "é público"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "foi removido"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Selecione esta opção se o comentário é inapropriado. A mensagem \"Este "
-"comentário foi removido\" será mostrada no lugar."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "comentários"
-
-#: contrib/comments/models.py:140 contrib/comments/models.py:222
-msgid "Content object"
-msgstr "Objeto de conteúdo"
-
-#: contrib/comments/models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s em %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:178
-msgid "person's name"
-msgstr "nome da pessoa"
-
-#: contrib/comments/models.py:181
-msgid "ip address"
-msgstr "endereço ip"
-
-#: contrib/comments/models.py:183
-msgid "approved by staff"
-msgstr "aprovado pela equipe"
-
-#: contrib/comments/models.py:187
-msgid "free comment"
-msgstr "comentário livre"
-
-#: contrib/comments/models.py:188
-msgid "free comments"
-msgstr "comentários livres"
-
-#: contrib/comments/models.py:250
-msgid "score"
-msgstr "pontuação"
-
-#: contrib/comments/models.py:251
-msgid "score date"
-msgstr "data de pontuação"
-
-#: contrib/comments/models.py:255
-msgid "karma score"
-msgstr "pontuação de karma"
-
-#: contrib/comments/models.py:256
-msgid "karma scores"
-msgstr "pontuações de karma"
-
-#: contrib/comments/models.py:260
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "Availação %(score)d por %(user)s"
-
-#: contrib/comments/models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"O usuário %(user)s colocou flags neste comentário:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:285
-msgid "flag date"
-msgstr "flag de data"
-
-#: contrib/comments/models.py:289
-msgid "user flag"
-msgstr "flag de usuário"
-
-#: contrib/comments/models.py:290
-msgid "user flags"
-msgstr "flags de usuário"
-
-#: contrib/comments/models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "Flag por %r"
-
-#: contrib/comments/models.py:300
-msgid "deletion date"
-msgstr "data de exclusão"
-
-#: contrib/comments/models.py:303
-msgid "moderator deletion"
-msgstr "Exclusão feita pelo moderador"
-
-#: contrib/comments/models.py:304
-msgid "moderator deletions"
-msgstr "Exclusões feitas pelo moderador"
-
-#: contrib/comments/models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Exclusao feita pelo moderador %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Esqueceu sua senha?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Avaliações"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Requerido"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcional"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Postar uma foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Comentário:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Pré-visualizar comentário"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Seu nome:"
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Esta avaliação é requerida porque você entrou com ao menos uma avaliação"
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Este comentário foi feito por um usuário que postou menos de %(count)s "
-"comentário:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Este comentário foi feito por um usuário que postou menos de %(count)s "
-"comentários:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Este comentário foi feito por um usuário incompleto:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:190
-#: contrib/comments/views/comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Somente POSTs são permitidos"
-
-#: contrib/comments/views/comments.py:194
-#: contrib/comments/views/comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Um ou mais dos campos requeridos não foram enviados"
-
-#: contrib/comments/views/comments.py:198
-#: contrib/comments/views/comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Alguém modificou o formulário de comentários (violação de segurança)"
-
-#: contrib/comments/views/comments.py:208
-#: contrib/comments/views/comments.py:295
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"O formulário de comentários teve um parâmetro 'target' inválido -- o ID do "
-"objeto é inválido"
-
-#: contrib/comments/views/comments.py:259
-#: contrib/comments/views/comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "O formulário de comentário não forneceu nem 'preview' nem 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Usuários anônimos não podem votar"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "ID de comentário inválido"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Você não pode votar em si mesmo"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "nome da classe model no python"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tipo de conteúdo"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "tipos de conteúdo"
-
-#: contrib/flatpages/models.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final."
-
-#: contrib/flatpages/models.py:10
-msgid "title"
-msgstr "título"
-
-#: contrib/flatpages/models.py:11
-msgid "content"
-msgstr "conteúdo"
-
-#: contrib/flatpages/models.py:12
-msgid "enable comments"
-msgstr "habilitar comentários"
-
-#: contrib/flatpages/models.py:13
-msgid "template name"
-msgstr "nome do modelo"
-
-#: contrib/flatpages/models.py:14
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemplo: 'flatpages/contact_page.html'. Se não for informado, será utilizado "
-"'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:15
-msgid "registration required"
-msgstr "registro obrigatório"
-
-#: contrib/flatpages/models.py:15
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Se estiver marcado, apenas usuários autenticados poderão ver a página."
-
-#: contrib/flatpages/models.py:20
-msgid "flat page"
-msgstr "página plana"
-
-#: contrib/flatpages/models.py:21
-msgid "flat pages"
-msgstr "páginas planas"
-
-#: contrib/flatpages/models.py:27
-msgid "Advanced options"
-msgstr "Opções avançadas"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr "º"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milhão"
-msgstr[1] "%(value).1f milhões"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f bilhão"
-msgstr[1] "%(value).1f bilhões"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilhão"
-msgstr[1] "%(value).1f trilhões"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "um"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "dois"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "três"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "quatro"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "cinco"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "seis"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "sete"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "oito"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "nove"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "hoje"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "amanhã"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "ontem"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Informe um código postal no formato NNNN ou ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Este campo requer somente números."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Este campo requer 7 ou 8 dígitos."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Informe um CUIT válido no formato XX-XXXXXXXX-X ou XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT inválido."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Informe um código postal de 4 dígitos."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Informe um código postal no formato XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Números de telefone devem estar no formato XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Selecione um estado brasileiro válido. O estado escolhido não é um dos "
-"estados disponíveis."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Número de CPF inválido."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Este campo requer no máximo 11 dígitos ou 14 caracteres."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Número de CNPJ inválido."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Este campo requer ao menos 14 dígitos"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Informe um código postal no formato XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Informe um número de Canadian Social Insurance válido no formato XXX-XXX-XXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:16 contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Informe um código postal no formato XXXX."
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Informe uma indentidade Suíça ou número de passaporte válido no formato "
-"X1234567<0 ou 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Informe um RUT chileno válido."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Informe um RUT chileno válido. O formato é XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "O RUT chileno não é válido."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Informe um código postal no formato XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Informe um número de cartão de identidade Alemã no formato XXXXXXXXXXX-"
-"XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Álava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alicante"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "Almería"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Ávila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Ilhas Baleares"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Cáceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cádiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castellón"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Cidade Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Córdoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "Corunha"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Gerunda"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipúscoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "Leão"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lérida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Málaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Múrcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Astúrias"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palência"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantábria"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segóvia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilhe"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Sória"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valência"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Biscaia"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Saragoça"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilha"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andaluzia"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragão"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principado das Astúrias"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Ilhas Baleares"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "País Basco"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Ilhas Canárias"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castela-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Cestela e Leão"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalunha"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galiza"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Região de Múrcia"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Comunidade Foral de Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Comunidade Valenciana"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Informe um código postal válido no intervalo e formato 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Informe um número de telefone válido em um destes formatos 6XXXXXXXX, "
-"8XXXXXXXX ou 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Por favor, informe um NIF, NIE OU CIF válido."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Por favor, informe um NIF ou FIE válido."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "O NIF é incorreto."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "O NIE é incorreto."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "O CIF é incorreto."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Por favor, informe um número de conta bancária válida no formato XXXX-XXXX-"
-"XX-XXXXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Número de conta bancária incorreto."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Informe um número de seguro social Finlandês válido."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Informe um código postal no formato XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Informe um número de identificação islandês válido."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "O número de identificação islandês não é válido."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Informe um código postal válido."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Informe um número de Segurança Social válido."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Informe um número IVA válido."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Informe um código postal no formato XXXXXXX ou XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Informe um código postal válido."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Informe um número de telefone válido."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Informe um número SoFi válido."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Informe um número de segurança social norueguês válido."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Este campo requer 8 dígitos."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Este campo requer 11 dígitos."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "O Número de Identificação Nacional consistem de 11 dígitos."
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Número de Identificação Nacional incorreto."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Informe um número de imposto (NIP) no formato XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "O Número de Identificação Tributária (NIP) é incorreto."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"O Número Nacional de Registro de Negócios (REGON) consiste em 7 ou 9 dígitos."
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "O Número Nacional de Registro de Negócios (REGON) é incorreto."
-
-#: contrib/localflavor/pl/forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Informe um código postal válido no formato XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Informe um código postal no formato XXXXX ou XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Informe um código postal válido."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Informe um código postal no formato XXXXX ou XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-"Informe um número de Seguro Social dos EUA válido no formato XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Informe um ID sul-africado válido."
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Informe um código postal sul-africado válido."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "redirecionar de"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Isso deve ser um caminho absoluto, excluindo o nome de domínio. Exemplo: '/"
-"eventos/busca/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "redirecionar para"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Isto pode ser um caminho absoluto (como acima) ou uma URL completa, "
-"começando com 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "redirecionar"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "redirecionamentos"
-
-#: contrib/sessions/models.py:41
-msgid "session key"
-msgstr "chave da sessão"
-
-#: contrib/sessions/models.py:42
-msgid "session data"
-msgstr "dados da sessão"
-
-#: contrib/sessions/models.py:43
-msgid "expire date"
-msgstr "data de expiração"
-
-#: contrib/sessions/models.py:48
-msgid "session"
-msgstr "sessão"
-
-#: contrib/sessions/models.py:49
-msgid "sessions"
-msgstr "sessões"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "nome do domínio"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "nome para exibição"
-
-#: contrib/sites/models.py:37
-msgid "site"
-msgstr "site"
-
-#: contrib/sites/models.py:38
-msgid "sites"
-msgstr "sites"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Este valor deve conter apenas letras, números e sublinhados (_)."
-
-#: core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Este valor deve conter apenas letras, números, sublinhados (_), travessões "
-"ou barras (/)."
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Este valor deve conter apenas letras, números, sublinhados (_) ou hífens."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Letras em maiúsculo não são permitidas aqui."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Letras em minúsculo não são permitidas aqui."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Informe apenas dígitos separados por vírgulas."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Informe endereços de email válidos separados por vírgulas."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Informe um endereço IP válido."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Valores em branco não são permitidos."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Caracteres não numéricos não são permitidos."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Este valor não pode conter apenas dígitos."
-
-#: core/validators.py:128 newforms/fields.py:152
-msgid "Enter a whole number."
-msgstr "Informe um número completo."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Apenas caracteres do alfabeto são permitidos aqui."
-
-#: core/validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "O ano deve ser superior a 1900"
-
-#: core/validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Data inválida: %s"
-
-#: core/validators.py:156 db/models/fields/__init__.py:527
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Informe uma data válida no formato AAAA-MM-DD."
-
-#: core/validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Informe uma hora válida no formato HH:MM."
-
-#: core/validators.py:165 db/models/fields/__init__.py:604
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Informe uma data/hora válida no formato AAAA-MM-DD HH:MM."
-
-#: core/validators.py:170 newforms/fields.py:403
-msgid "Enter a valid e-mail address."
-msgstr "Informe um endereço de email válido."
-
-#: core/validators.py:182 core/validators.py:474 newforms/fields.py:433
-#: oldforms/__init__.py:687
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nenhum arquivo enviado. Verifique o tipo de codificação do formulário."
-
-#: core/validators.py:193 newforms/fields.py:459
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está "
-"corrompido."
-
-#: core/validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "A URL %s não aponta para uma imagem válida."
-
-#: core/validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Números de telefone devem estar no formato XXX-XXX-XXXX.\"%s\" é inválido."
-
-#: core/validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "A URL %s não aponta para um vídeo QuickTime válido."
-
-#: core/validators.py:216
-msgid "A valid URL is required."
-msgstr "Uma URL válida é exigida."
-
-#: core/validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"HTML válido é exigido. Os erros específicos são:\n"
-"%s"
-
-#: core/validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "XML mal formado: %s"
-
-#: core/validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL inválida: %s"
-
-#: core/validators.py:259 core/validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "A URL %s é um link quebrado."
-
-#: core/validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Informe uma abreviação válida de estado dos E.U.A."
-
-#: core/validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Olha sua boca! A palavra %s não é permitida aqui."
-msgstr[1] "Olha sua boca! As palavras %s não são permitidas aqui."
-
-#: core/validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Este campo deve casar com o campo '%s'."
-
-#: core/validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Informe algo em pelo menos um campo."
-
-#: core/validators.py:316 core/validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Informe ambos os campos ou deixe ambos vazios."
-
-#: core/validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Este campo deve ser informado se o campo %(field)s for %(value)s."
-
-#: core/validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Este campo deve ser dado se o campo %(field)s não for %(value)s."
-
-#: core/validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Valores duplicados não são permitidos."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Este valor deve estar entre %(lower)s e %(upper)s."
-
-#: core/validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Este valor deve ser no mínimo %s."
-
-#: core/validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Este valor não deve ser maior que %s."
-
-#: core/validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Este valor deve ser uma potência de %s."
-
-#: core/validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Informe um número decimal válido."
-
-#: core/validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Por favor entre com um número decimal com no máximo %s dígito."
-msgstr[1] "Por favor entre com um número decimal com no máximo %s dígitos."
-
-#: core/validators.py:447
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Por favor informe um número decimal com a parte inteira de no máximo %s "
-"digito."
-msgstr[1] ""
-"Por favor informe um número decimal com a parte inteira de no máximo %s "
-"digitos."
-
-#: core/validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Por favor informe um número decimal com no máximo %s casa decimal."
-msgstr[1] ""
-"Por favor informe um número decimal com no máximo %s casas decimais."
-
-#: core/validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Informe um número de ponto flutuante válido."
-
-#: core/validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Verifique se o arquivo enviado tem pelo menos %s bytes."
-
-#: core/validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Verifique se o arquivo enviado tem no máximo %s bytes."
-
-#: core/validators.py:485
-msgid "The format for this field is wrong."
-msgstr "O formato deste campo está errado."
-
-#: core/validators.py:500
-msgid "This field is invalid."
-msgstr "Este campo é inválido."
-
-#: core/validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Não foi possível receber dados de %s."
-
-#: core/validators.py:539
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type "
-"inválido."
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%"
-"(start)s\".)"
-
-#: core/validators.py:576
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Algum texto começando na linha %(line)s não é permitido no contexto. (Linha "
-"começa com \"%(start)s\".)"
-
-#: core/validators.py:581
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" na linha %(line)s não é um atributo válido. (Linha começa com "
-"\"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%"
-"(start)s\".)"
-
-#: core/validators.py:590
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Uma tag na linha %(line)s não apresenta um ou mais atributos exigidos.(Linha "
-"começa com \"%(start)s\".)"
-
-#: core/validators.py:595
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"O atributo \"%(attr)s\" na linha %(line)s tem um valor inválido. (Linha "
-"começa com \"%(start)s\".)"
-
-#: db/models/manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s com este %(type)s já existe para o %(field)s dado."
-
-#: db/models/fields/__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s com este %(fieldname)s já existe."
-
-#: db/models/fields/__init__.py:161 db/models/fields/__init__.py:327
-#: db/models/fields/__init__.py:759 db/models/fields/__init__.py:770
-#: newforms/fields.py:46 oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Este campo é requerido."
-
-#: db/models/fields/__init__.py:427
-msgid "This value must be an integer."
-msgstr "Este valor deve ser um inteiro."
-
-#: db/models/fields/__init__.py:466
-msgid "This value must be either True or False."
-msgstr "Este valor deve ser True ou False."
-
-#: db/models/fields/__init__.py:490
-msgid "This field cannot be null."
-msgstr "Este campo não pode ser nulo."
-
-#: db/models/fields/__init__.py:668
-msgid "This value must be a decimal number."
-msgstr "Este valor deve ser um número decimal."
-
-#: db/models/fields/__init__.py:779
-msgid "Enter a valid filename."
-msgstr "Informe um nome de arquivo válido."
-
-#: db/models/fields/__init__.py:960
-msgid "This value must be either None, True or False."
-msgstr "Este valor deve ser None, True ou False."
-
-#: db/models/fields/related.py:93
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Por favor informe um %s válido."
-
-#: db/models/fields/related.py:701
-msgid "Separate multiple IDs with commas."
-msgstr "Separe IDs múltiplos com vírgulas."
-
-#: db/models/fields/related.py:703
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Mantenha pressionado \"Control\", ou \"Command\" no Mac para selecionar "
-"mais de uma opção."
-
-#: db/models/fields/related.py:750
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Por favor, informe IDs válidos para %(self)s. O valor %(value)r é inválido."
-msgstr[1] ""
-"Por favor, informe IDs válidos para %(self)s. Os valores %(value)r são "
-"inválidos."
-
-#: newforms/fields.py:47
-msgid "Enter a valid value."
-msgstr "Informe um valor válido."
-
-#: newforms/fields.py:124
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Certifique-se de que o valor tenha no máximo %(max)d caracteres (ele possui %"
-"(length)d)."
-
-#: newforms/fields.py:125
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Certifique-se de que o valor tenha no mínimo %(min)d caracteres (ele possui %"
-"(length)d)."
-
-#: newforms/fields.py:153 newforms/fields.py:182 newforms/fields.py:211
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Certifique-se que este valor seja menor ou igual a %s."
-
-#: newforms/fields.py:154 newforms/fields.py:183 newforms/fields.py:212
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Certifique-se que este valor seja maior ou igual a %s."
-
-#: newforms/fields.py:181 newforms/fields.py:210
-msgid "Enter a number."
-msgstr "Informe um número."
-
-#: newforms/fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Certifique-se de que não tenha mais de %s dígitos no total."
-
-#: newforms/fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Certifique-se de que não tenha mais de %s casa decimais."
-
-#: newforms/fields.py:215
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr ""
-"Certifique-se de que não tenha mais de %s dígitos antes do ponto decimal."
-
-#: newforms/fields.py:263 newforms/fields.py:751
-msgid "Enter a valid date."
-msgstr "Informe uma data válida."
-
-#: newforms/fields.py:296 newforms/fields.py:752
-msgid "Enter a valid time."
-msgstr "Informe uma hora válida."
-
-#: newforms/fields.py:335
-msgid "Enter a valid date/time."
-msgstr "Informe uma data/hora válida."
-
-#: newforms/fields.py:434
-msgid "No file was submitted."
-msgstr "Não foi enviado nenhum arquivo."
-
-#: newforms/fields.py:435 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "O arquivo enviado está vazio."
-
-#: newforms/fields.py:497
-msgid "Enter a valid URL."
-msgstr "Informe uma URL válida."
-
-#: newforms/fields.py:498
-msgid "This URL appears to be a broken link."
-msgstr "A URL %s aparenta ser um link quebrado."
-
-#: newforms/fields.py:560 newforms/models.py:299
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Faça uma escolha válida. Sua escolha não é uma das disponíveis."
-
-#: newforms/fields.py:599
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Faça uma escolha válida. %(value)s não está disponível."
-
-#: newforms/fields.py:600 newforms/fields.py:662 newforms/models.py:371
-msgid "Enter a list of values."
-msgstr "Informe uma lista de valores."
-
-#: newforms/fields.py:780
-msgid "Enter a valid IPv4 address."
-msgstr "Informe um endereço IPv4 válido."
-
-#: newforms/models.py:372
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Faça uma escolha válida. %s não está disponível."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Certifique-se de que seu texto tenha menos que %s caractere."
-msgstr[1] "Certifique-se de que seu texto tenha menos que %s caracteres."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Não são permitidas quebras de linha aqui."
-
-#: oldforms/__init__.py:512 oldforms/__init__.py:586 oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Selecione uma escolha válida; '%(data)s' não está em %(choices)s."
-
-#: oldforms/__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Informe um número inteiro entre -32.768 e 32.767"
-
-#: oldforms/__init__.py:755
-msgid "Enter a positive number."
-msgstr "Informe um número positivo"
-
-#: oldforms/__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Informe um número inteiro entre 0 e 32.767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "sim,não,talvez"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "meia noite"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "meio dia"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Segunda-feira"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Terça-feira"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Quarta-feira"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Quinta-feira"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Sexta-feira"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Seg"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Ter"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Qua"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Qui"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Sex"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Janeiro"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Fevereiro"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Junho"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Julho"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Setembro"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Outubro"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dezembro"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "fev"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "out"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dez"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Fev."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Set."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Out."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dez."
-
-#: utils/text.py:127
-msgid "or"
-msgstr "ou"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "ano"
-msgstr[1] "anos"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mês"
-msgstr[1] "meses"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "semana"
-msgstr[1] "semanas"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dia"
-msgstr[1] "dias"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "horas"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minutos"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minutos"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:403
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:404
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:405
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:421
-msgid "YEAR_MONTH_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:422
-msgid "MONTH_DAY_FORMAT"
-msgstr ""
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "O(A) %(verbose_name)s foi criado com sucesso."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "O(A) %(verbose_name)s foi atualizado com sucesso."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "O(A) %(verbose_name)s foi excluído."
diff --git a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 7aaab11..0000000
--- a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 0fe9f17..0000000
--- a/webapp/django/conf/locale/pt_BR/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,115 +0,0 @@
-# Português do Brasil translation of django.
-# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2008-08-01 12:27-0300\n"
-"Last-Translator: Rafael Jamur <rjamur@gmail.com>\n"
-"Language-Team: Grupo de Localização para o Português <django-l10n-portuguese@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s Disponíveis"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Escolher todos"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Adicionar"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Remover"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s escolhido(s)"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Selecione sua(s) escolha(s) e clique "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Limpar tudo"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid "January February March April May June July August September October November December"
-msgstr "Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Domingo Segunda Terça Quarta Quinta Sexta Sábado"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D S T Q Q S S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Agora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Relógio"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Escolha uma hora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Meia-noite"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 da manhã"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Meio-dia"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Hoje"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Calendário"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Ontem"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Amanhã"
-
-#: contrib/admin/media/js/admin/CollapsedFieldSets:34
-#: contrib/admin/media/js/admin/CollapsedFieldSets:72
-msgid "Show"
-msgstr "Mostrar"
-
-#: contrib/admin/media/js/admin/CollapsedFieldSets:63
-msgid "Hide"
-msgstr "Esconder"
-
diff --git a/webapp/django/conf/locale/ro/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index c4ca6e6..0000000
--- a/webapp/django/conf/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ro/LC_MESSAGES/django.po b/webapp/django/conf/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index cdbe7a4..0000000
--- a/webapp/django/conf/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4261 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-25 14:44+0300\n"
-"PO-Revision-Date: 2008-04-25 21:44+0200\n"
-"Last-Translator: \n"
-"Language-Team: Romanian <ro@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: .\conf\global_settings.py:39
-msgid "Arabic"
-msgstr "Araba"
-
-#: .\conf\global_settings.py:40
-msgid "Bengali"
-msgstr "Bengaleza"
-
-#: .\conf\global_settings.py:41
-msgid "Bulgarian"
-msgstr "Bulgara"
-
-#: .\conf\global_settings.py:42
-msgid "Catalan"
-msgstr "Catalana"
-
-#: .\conf\global_settings.py:43
-msgid "Czech"
-msgstr "Cehă"
-
-#: .\conf\global_settings.py:44
-msgid "Welsh"
-msgstr "Galeza"
-
-#: .\conf\global_settings.py:45
-msgid "Danish"
-msgstr "Daneza"
-
-#: .\conf\global_settings.py:46
-msgid "German"
-msgstr "Germană"
-
-#: .\conf\global_settings.py:47
-msgid "Greek"
-msgstr "Greaca"
-
-#: .\conf\global_settings.py:48
-msgid "English"
-msgstr "Engleză"
-
-#: .\conf\global_settings.py:49
-msgid "Spanish"
-msgstr "Spaniolă"
-
-#: .\conf\global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Spaniola argentiniana"
-
-#: .\conf\global_settings.py:51
-msgid "Basque"
-msgstr "Basca"
-
-#: .\conf\global_settings.py:52
-msgid "Persian"
-msgstr "Persana"
-
-#: .\conf\global_settings.py:53
-msgid "Finnish"
-msgstr "Finlandeza"
-
-#: .\conf\global_settings.py:54
-msgid "French"
-msgstr "Franceză"
-
-#: .\conf\global_settings.py:55
-msgid "Irish"
-msgstr "Irlandeza"
-
-#: .\conf\global_settings.py:56
-msgid "Galician"
-msgstr "Galiciană"
-
-#: .\conf\global_settings.py:57
-msgid "Hungarian"
-msgstr "Ungara"
-
-#: .\conf\global_settings.py:58
-msgid "Hebrew"
-msgstr "Ebraica"
-
-#: .\conf\global_settings.py:59
-msgid "Croatian"
-msgstr "Croata"
-
-#: .\conf\global_settings.py:60
-msgid "Icelandic"
-msgstr "Islandeza"
-
-#: .\conf\global_settings.py:61
-msgid "Italian"
-msgstr "Italiană"
-
-#: .\conf\global_settings.py:62
-msgid "Japanese"
-msgstr "Japoneza"
-
-#: .\conf\global_settings.py:63
-msgid "Georgian"
-msgstr "Georgiana"
-
-#: .\conf\global_settings.py:64
-msgid "Korean"
-msgstr "Koreana"
-
-#: .\conf\global_settings.py:65
-msgid "Khmer"
-msgstr "Khmera"
-
-#: .\conf\global_settings.py:66
-msgid "Kannada"
-msgstr "Limba kannada"
-
-#: .\conf\global_settings.py:67
-msgid "Latvian"
-msgstr "Letona"
-
-#: .\conf\global_settings.py:68
-msgid "Macedonian"
-msgstr "Macedoneana"
-
-#: .\conf\global_settings.py:69
-msgid "Dutch"
-msgstr "Olandeza"
-
-#: .\conf\global_settings.py:70
-msgid "Norwegian"
-msgstr "Norvegiană"
-
-#: .\conf\global_settings.py:71
-msgid "Polish"
-msgstr "Poloneza"
-
-#: .\conf\global_settings.py:72
-msgid "Portugese"
-msgstr "Portugheza"
-
-#: .\conf\global_settings.py:73
-msgid "Brazilian Portuguese"
-msgstr "Portugheza braziliana"
-
-#: .\conf\global_settings.py:74
-msgid "Romanian"
-msgstr "Romana"
-
-#: .\conf\global_settings.py:75
-msgid "Russian"
-msgstr "Rusă"
-
-#: .\conf\global_settings.py:76
-msgid "Slovak"
-msgstr "Slovaca"
-
-#: .\conf\global_settings.py:77
-msgid "Slovenian"
-msgstr "Slovena"
-
-#: .\conf\global_settings.py:78
-msgid "Serbian"
-msgstr "Sîrbă"
-
-#: .\conf\global_settings.py:79
-msgid "Swedish"
-msgstr "Suedeza"
-
-#: .\conf\global_settings.py:80
-msgid "Tamil"
-msgstr "Limba tamila"
-
-#: .\conf\global_settings.py:81
-msgid "Telugu"
-msgstr "Limba telugu"
-
-#: .\conf\global_settings.py:82
-msgid "Turkish"
-msgstr "Turca"
-
-#: .\conf\global_settings.py:83
-msgid "Ukrainian"
-msgstr "Ucraineana"
-
-#: .\conf\global_settings.py:84
-msgid "Simplified Chinese"
-msgstr "Chineză simplificată"
-
-#: .\conf\global_settings.py:85
-msgid "Traditional Chinese"
-msgstr "Chineza traditionala"
-
-#: .\contrib\admin\filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Dupa %s:</h3>\n"
-"<ul>\n"
-
-#: .\contrib\admin\filterspecs.py:74
-#: .\contrib\admin\filterspecs.py:92
-#: .\contrib\admin\filterspecs.py:147
-#: .\contrib\admin\filterspecs.py:173
-msgid "All"
-msgstr "tot"
-
-#: .\contrib\admin\filterspecs.py:113
-msgid "Any date"
-msgstr "orice data"
-
-#: .\contrib\admin\filterspecs.py:114
-msgid "Today"
-msgstr "Astazi"
-
-#: .\contrib\admin\filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Ultimele 7 zile"
-
-#: .\contrib\admin\filterspecs.py:119
-msgid "This month"
-msgstr "Luna aceasta"
-
-#: .\contrib\admin\filterspecs.py:121
-msgid "This year"
-msgstr "Anul acesta"
-
-#: .\contrib\admin\filterspecs.py:147
-#: .\newforms\widgets.py:231
-#: .\oldforms\__init__.py:592
-msgid "Yes"
-msgstr "Da"
-
-#: .\contrib\admin\filterspecs.py:147
-#: .\newforms\widgets.py:231
-#: .\oldforms\__init__.py:592
-msgid "No"
-msgstr "Nu"
-
-#: .\contrib\admin\filterspecs.py:154
-#: .\newforms\widgets.py:231
-#: .\oldforms\__init__.py:592
-msgid "Unknown"
-msgstr "Necunoscut"
-
-#: .\contrib\admin\models.py:18
-msgid "action time"
-msgstr "timp acţiune"
-
-#: .\contrib\admin\models.py:21
-msgid "object id"
-msgstr "id obiect"
-
-#: .\contrib\admin\models.py:22
-msgid "object repr"
-msgstr "repr obiect"
-
-#: .\contrib\admin\models.py:23
-msgid "action flag"
-msgstr "steguleţ acţiune"
-
-#: .\contrib\admin\models.py:24
-msgid "change message"
-msgstr "schimbă mesaj"
-
-#: .\contrib\admin\models.py:27
-msgid "log entry"
-msgstr "intrare log"
-
-#: .\contrib\admin\models.py:28
-msgid "log entries"
-msgstr "intrări log"
-
-#: .\contrib\admin\templates\admin\404.html.py:4
-#: .\contrib\admin\templates\admin\404.html.py:8
-msgid "Page not found"
-msgstr "Pagină inexistentă"
-
-#: .\contrib\admin\templates\admin\404.html.py:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ne pare rău, dar pagina cerută nu există."
-
-#: .\contrib\admin\templates\admin\500.html.py:4
-#: .\contrib\admin\templates\admin\base.html.py:37
-#: .\contrib\admin\templates\admin\change_form.html.py:12
-#: .\contrib\admin\templates\admin\change_list.html.py:5
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:5
-#: .\contrib\admin\templates\admin\invalid_setup.html.py:4
-#: .\contrib\admin\templates\admin\object_history.html.py:4
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:11
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3
-#: .\contrib\admin\templates\registration\logged_out.html.py:4
-#: .\contrib\admin\templates\registration\password_change_done.html.py:3
-#: .\contrib\admin\templates\registration\password_change_form.html.py:3
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:4
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:4
-msgid "Home"
-msgstr "Acasă"
-
-#: .\contrib\admin\templates\admin\500.html.py:4
-msgid "Server error"
-msgstr "Eroare de server"
-
-#: .\contrib\admin\templates\admin\500.html.py:6
-msgid "Server error (500)"
-msgstr "Eroare de server (500)"
-
-#: .\contrib\admin\templates\admin\500.html.py:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Eroare server <em>(500)</em>"
-
-#: .\contrib\admin\templates\admin\500.html.py:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "A apărut o eroare. Este raportată către administrator via emailşi va fi fixată în scurt timp. Mulţumim pentru înţelegere."
-
-#: .\contrib\admin\templates\admin\base.html.py:26
-msgid "Welcome,"
-msgstr "Bine ai venit,"
-
-#: .\contrib\admin\templates\admin\base.html.py:28
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3
-msgid "Documentation"
-msgstr "Documentatie"
-
-#: .\contrib\admin\templates\admin\base.html.py:29
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:14
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:45
-msgid "Change password"
-msgstr "Schimbă parola"
-
-#: .\contrib\admin\templates\admin\base.html.py:30
-#: .\contrib\comments\templates\comments\form.html.py:6
-msgid "Log out"
-msgstr "Deautentificare"
-
-#: .\contrib\admin\templates\admin\base_site.html.py:4
-msgid "Django site admin"
-msgstr "Administrare sit Django"
-
-#: .\contrib\admin\templates\admin\base_site.html.py:7
-msgid "Django administration"
-msgstr "Administrare Django"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:14
-#: .\contrib\admin\templates\admin\index.html.py:28
-msgid "Add"
-msgstr "Adaugă"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:20
-#: .\contrib\admin\templates\admin\object_history.html.py:4
-msgid "History"
-msgstr "Istoric"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:21
-msgid "View on site"
-msgstr "Vizualizeaza pe site"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:31
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:23
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Va rugam sa corectati eroarea de mai jos"
-msgstr[1] "Va rugam sa corectati erorile de mai jos"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:49
-msgid "Ordering"
-msgstr "Ordonate dupa"
-
-#: .\contrib\admin\templates\admin\change_form.html.py:52
-msgid "Order:"
-msgstr "Ordonare:"
-
-#: .\contrib\admin\templates\admin\change_list.html.py:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adaugă %(name)s"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:8
-#: .\contrib\admin\templates\admin\submit_line.html.py:3
-msgid "Delete"
-msgstr "Sterge"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:13
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Ştergînd %(object_name)s '%(escaped_object)s' va avea ca rezultat ştergerea şi a obiectelor ce au legătură, dar contul tău nu are permisiunea de a şterge următoarele tipuri de obiecte:"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:20
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Eşti sigur că vrei să ştergi %(object_name)s \"%(escaped_object)s\"? Următoarele componente asociate vor fi şterse:"
-
-#: .\contrib\admin\templates\admin\delete_confirmation.html.py:25
-msgid "Yes, I'm sure"
-msgstr "Da, sînt sigur"
-
-#: .\contrib\admin\templates\admin\filter.html.py:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Dupa %(filter_title)s "
-
-#: .\contrib\admin\templates\admin\filters.html.py:4
-msgid "Filter"
-msgstr "Filtru"
-
-#: .\contrib\admin\templates\admin\index.html.py:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modele disponibile in applicatia %(name)s"
-
-#: .\contrib\admin\templates\admin\index.html.py:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: .\contrib\admin\templates\admin\index.html.py:34
-msgid "Change"
-msgstr "Schimbă"
-
-#: .\contrib\admin\templates\admin\index.html.py:44
-msgid "You don't have permission to edit anything."
-msgstr "Nu ai drepturi de editare."
-
-#: .\contrib\admin\templates\admin\index.html.py:52
-msgid "Recent Actions"
-msgstr "Acţiuni Recente"
-
-#: .\contrib\admin\templates\admin\index.html.py:53
-msgid "My Actions"
-msgstr "Acţiunile Mele"
-
-#: .\contrib\admin\templates\admin\index.html.py:57
-msgid "None available"
-msgstr "Indisponibil"
-
-#: .\contrib\admin\templates\admin\invalid_setup.html.py:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Exista o problema cu baza de date. Verificati daca tabelele necesare din baza de date au fost create si verificati daca baza de date poate fi citita de utilizatorul potrivit."
-
-#: .\contrib\admin\templates\admin\login.html.py:17
-#: .\contrib\comments\templates\comments\form.html.py:6
-#: .\contrib\comments\templates\comments\form.html.py:8
-msgid "Username:"
-msgstr "Utilizator:"
-
-#: .\contrib\admin\templates\admin\login.html.py:20
-#: .\contrib\comments\templates\comments\form.html.py:8
-msgid "Password:"
-msgstr "Parola:"
-
-#: .\contrib\admin\templates\admin\login.html.py:25
-#: .\contrib\admin\views\decorators.py:31
-msgid "Log in"
-msgstr "Login"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:17
-msgid "Date/time"
-msgstr "Dată/oră"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:18
-msgid "User"
-msgstr "Utilizator"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:19
-msgid "Action"
-msgstr "Acţiune"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:25
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: .\contrib\admin\templates\admin\object_history.html.py:35
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Acest obiect nu are un istoric al schimbărilor. Probabil nu a fost adăugat prinintermediul acestui sit de administrare."
-
-#: .\contrib\admin\templates\admin\pagination.html.py:10
-msgid "Show all"
-msgstr "Arata tot/toate"
-
-#: .\contrib\admin\templates\admin\search_form.html.py:8
-msgid "Go"
-msgstr "Start"
-
-#: .\contrib\admin\templates\admin\search_form.html.py:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "Un rezultat"
-msgstr[1] "%(counter)s rezultate"
-
-#: .\contrib\admin\templates\admin\search_form.html.py:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s total"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:4
-msgid "Save as new"
-msgstr "Salvati ca nou"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:5
-msgid "Save and add another"
-msgstr "Salvati si adaugati altul"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:6
-msgid "Save and continue editing"
-msgstr "Salvati si continuati"
-
-#: .\contrib\admin\templates\admin\submit_line.html.py:7
-msgid "Save"
-msgstr "Salveaza"
-
-#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Intai introduceti un nume de utilizator si o parola. Apoi veti putea modifica mai multe optiuni de utilizator."
-
-#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:12
-msgid "Username"
-msgstr "Utilizator"
-
-#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:18
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:33
-msgid "Password"
-msgstr "Parola"
-
-#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:23
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:38
-msgid "Password (again)"
-msgstr "Parola (repeta)"
-
-#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:24
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:39
-msgid "Enter the same password as above, for verification."
-msgstr "Introduceti parola din nou pentru verificare."
-
-#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:27
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Introduceti o parola noua pentru utilizatorul <strong>%(username)s</strong>."
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3
-msgid "Bookmarklets"
-msgstr ""
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:18
-msgid "Documentation for this page"
-msgstr "Documentatie pentru aceasta pagina"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:19
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Te trimite de la orice pagina la documentatia pentru view-ul care genereaza acea pagina."
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:21
-msgid "Show object ID"
-msgstr "Arata ID-ul obiectului"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:22
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Arata tipul de continut si ID-ul unic pentru paginile care reprezinta un singur obiect."
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:24
-msgid "Edit this object (current window)"
-msgstr "Modifica acest obiect (in aceasta fereastra)"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Sare la pagina de administrare pentru pagini care reprezinta un singur obiect."
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:27
-msgid "Edit this object (new window)"
-msgstr "Modifica acest obiect (intr-o fereastra noua)"
-
-#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "La fel ca deasupra, dar deschide pagina de administrare intr-o fereastra noua"
-
-#: .\contrib\admin\templates\registration\logged_out.html.py:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Mulţumesc pentru petrecerea folositoare a timpului cu saitul astăzi."
-
-#: .\contrib\admin\templates\registration\logged_out.html.py:10
-msgid "Log in again"
-msgstr "Relogare"
-
-#: .\contrib\admin\templates\registration\password_change_done.html.py:3
-#: .\contrib\admin\templates\registration\password_change_form.html.py:3
-#: .\contrib\admin\templates\registration\password_change_form.html.py:5
-#: .\contrib\admin\templates\registration\password_change_form.html.py:9
-msgid "Password change"
-msgstr "Schimbă parola"
-
-#: .\contrib\admin\templates\registration\password_change_done.html.py:5
-#: .\contrib\admin\templates\registration\password_change_done.html.py:9
-msgid "Password change successful"
-msgstr "Schimbare reuşită a parolei"
-
-#: .\contrib\admin\templates\registration\password_change_done.html.py:11
-msgid "Your password was changed."
-msgstr "Parola a fost schimbată."
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:11
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Introdu te rog vechea parolă, pentru motive de siguranţă, şi apoi tastează noua parolă de două ori aşa încît putem verifica dacă ai tastat corect."
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:16
-msgid "Old password:"
-msgstr "Vechea parolă:"
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:18
-msgid "New password:"
-msgstr "Noua parolă:"
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:20
-msgid "Confirm password:"
-msgstr "Confirmă parola:"
-
-#: .\contrib\admin\templates\registration\password_change_form.html.py:22
-msgid "Change my password"
-msgstr "Schimbă-mi parola"
-
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:4
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:4
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:6
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:10
-msgid "Password reset"
-msgstr "Resetează parola"
-
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:6
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:10
-msgid "Password reset successful"
-msgstr "Parola resetată cu succes"
-
-#: .\contrib\admin\templates\registration\password_reset_done.html.py:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Am trimis o nouă parolă prin email la adresa furnizată. Ar trebuisă o primeşti în scurt timp."
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Ai primit acest email pentru că ai cerut o resetare a parolei"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "pentru contul tău la %(site_name)s"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Noua ta parolă este: %(new_password)s"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Poţi schmiba această parolă vizitînd această pagină:"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Numele tău utilizator, în caz că ai uitat:"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:13
-msgid "Thanks for using our site!"
-msgstr "Mulţumesc pentru folosirea saitului nostru!"
-
-#: .\contrib\admin\templates\registration\password_reset_email.html.py:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Echipa %(site_name)s"
-
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "Ai uitat parola? Introdu adresa de email mai jos, iar noi vom reseta parola şi-ţi vom trimite una nouă prin email."
-
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:16
-msgid "E-mail address:"
-msgstr "Adresa email:"
-
-#: .\contrib\admin\templates\registration\password_reset_form.html.py:16
-msgid "Reset my password"
-msgstr "Resetează-mi parola"
-
-#: .\contrib\admin\templates\widget\date_time.html.py:3
-msgid "Date:"
-msgstr "Data:"
-
-#: .\contrib\admin\templates\widget\date_time.html.py:4
-msgid "Time:"
-msgstr "Ora:"
-
-#: .\contrib\admin\templates\widget\file.html.py:2
-msgid "Currently:"
-msgstr "Current:"
-
-#: .\contrib\admin\templates\widget\file.html.py:3
-msgid "Change:"
-msgstr "Schimbă:"
-
-#: .\contrib\admin\templatetags\admin_list.py:257
-msgid "All dates"
-msgstr "Toate datele"
-
-#: .\contrib\admin\views\auth.py:20
-#: .\contrib\admin\views\main.py:267
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" a fost inserat cu succes."
-
-#: .\contrib\admin\views\auth.py:25
-#: .\contrib\admin\views\main.py:271
-#: .\contrib\admin\views\main.py:356
-msgid "You may edit it again below."
-msgstr "Va puteti edita datele din nou mai jos."
-
-#: .\contrib\admin\views\auth.py:31
-msgid "Add user"
-msgstr "Adaugă utilizator"
-
-#: .\contrib\admin\views\auth.py:58
-msgid "Password changed successfully."
-msgstr "Schimbare reuşită a parolei"
-
-#: .\contrib\admin\views\auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Schimbă parola: %s"
-
-#: .\contrib\admin\views\decorators.py:17
-#: .\contrib\auth\forms.py:60
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Va rugam sa introduceti username-ul si parola corecta. Aveti grija deoarececasutele sunt case sensitive."
-
-#: .\contrib\admin\views\decorators.py:69
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Va rugam sa va inregistrati din nou, deoarece sesiunea a expirat. Nu va faceti griji datele au fost salvate."
-
-#: .\contrib\admin\views\decorators.py:76
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Se pare ca browserul dumneavostra nu este configurat sa accepte cookies. Va rugam sa va setati browserul sa accepte cookies, dati un reload la pagina si incercati din nou."
-
-#: .\contrib\admin\views\decorators.py:90
-msgid "Usernames cannot contain the '@' character."
-msgstr "Username-ul nu are voie sa contina caracterul '@'."
-
-#: .\contrib\admin\views\decorators.py:92
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Adresa ta de e-mail nu este numele tau de utilizator. Incearca '%s' in schimb."
-
-#: .\contrib\admin\views\doc.py:48
-#: .\contrib\admin\views\doc.py:50
-#: .\contrib\admin\views\doc.py:52
-msgid "tag:"
-msgstr "tag:"
-
-#: .\contrib\admin\views\doc.py:79
-#: .\contrib\admin\views\doc.py:81
-#: .\contrib\admin\views\doc.py:83
-msgid "filter:"
-msgstr "filtru:"
-
-#: .\contrib\admin\views\doc.py:137
-#: .\contrib\admin\views\doc.py:139
-#: .\contrib\admin\views\doc.py:141
-msgid "view:"
-msgstr "view:"
-
-#: .\contrib\admin\views\doc.py:166
-#, python-format
-msgid "App %r not found"
-msgstr "Applicatia %r inexistenta"
-
-#: .\contrib\admin\views\doc.py:173
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modelul %(name)r nu a fost gasit in aplicatia %(label)r"
-
-#: .\contrib\admin\views\doc.py:185
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "obiectul `%(label)s.%(type)s` asociat"
-
-#: .\contrib\admin\views\doc.py:185
-#: .\contrib\admin\views\doc.py:207
-#: .\contrib\admin\views\doc.py:221
-#: .\contrib\admin\views\doc.py:226
-msgid "model:"
-msgstr "model:"
-
-#: .\contrib\admin\views\doc.py:216
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "obiectele `%(label)s.%(name)s` asociate"
-
-#: .\contrib\admin\views\doc.py:221
-#, python-format
-msgid "all %s"
-msgstr "toate %s"
-
-#: .\contrib\admin\views\doc.py:226
-#, python-format
-msgid "number of %s"
-msgstr "numarul de %s"
-
-#: .\contrib\admin\views\doc.py:231
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Campuri in %s obiecte"
-
-#: .\contrib\admin\views\doc.py:293
-#: .\contrib\admin\views\doc.py:304
-#: .\contrib\admin\views\doc.py:306
-#: .\contrib\admin\views\doc.py:312
-#: .\contrib\admin\views\doc.py:313
-#: .\contrib\admin\views\doc.py:315
-msgid "Integer"
-msgstr "Intreg"
-
-#: .\contrib\admin\views\doc.py:294
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (ori adevarat ori fals)"
-
-#: .\contrib\admin\views\doc.py:295
-#: .\contrib\admin\views\doc.py:314
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Sir de caractere (pana la %(max_length)s caractere)"
-
-#: .\contrib\admin\views\doc.py:296
-msgid "Comma-separated integers"
-msgstr "Numere intregi separate de virgule"
-
-#: .\contrib\admin\views\doc.py:297
-msgid "Date (without time)"
-msgstr "Data (fara ora)"
-
-#: .\contrib\admin\views\doc.py:298
-msgid "Date (with time)"
-msgstr "Data (cu ora)"
-
-#: .\contrib\admin\views\doc.py:299
-msgid "Decimal number"
-msgstr "Numar zecimal"
-
-#: .\contrib\admin\views\doc.py:300
-msgid "E-mail address"
-msgstr "Adresa email"
-
-#: .\contrib\admin\views\doc.py:301
-#: .\contrib\admin\views\doc.py:302
-#: .\contrib\admin\views\doc.py:305
-msgid "File path"
-msgstr "Calea fisierului"
-
-#: .\contrib\admin\views\doc.py:303
-msgid "Floating point number"
-msgstr "Numar cu virgula"
-
-#: .\contrib\admin\views\doc.py:307
-#: .\contrib\comments\models.py:89
-msgid "IP address"
-msgstr "adresa ip"
-
-#: .\contrib\admin\views\doc.py:309
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (adevarat, fals sau nici una)"
-
-#: .\contrib\admin\views\doc.py:310
-msgid "Relation to parent model"
-msgstr "Relatia cu un model parinte"
-
-#: .\contrib\admin\views\doc.py:311
-msgid "Phone number"
-msgstr "Numar de telefon"
-
-#: .\contrib\admin\views\doc.py:316
-msgid "Text"
-msgstr "Text"
-
-#: .\contrib\admin\views\doc.py:317
-msgid "Time"
-msgstr "Timp"
-
-#: .\contrib\admin\views\doc.py:318
-#: .\contrib\flatpages\models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: .\contrib\admin\views\doc.py:319
-msgid "U.S. state (two uppercase letters)"
-msgstr "Stat SUA (doua litere mari)"
-
-#: .\contrib\admin\views\doc.py:320
-msgid "XML text"
-msgstr "Text XML"
-
-#: .\contrib\admin\views\doc.py:346
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nu pare a fi un obiect urlpattern"
-
-#: .\contrib\admin\views\main.py:233
-msgid "Site administration"
-msgstr "Administrare site"
-
-#: .\contrib\admin\views\main.py:280
-#: .\contrib\admin\views\main.py:365
-#, python-format
-msgid "You may add another %s below."
-msgstr "Mai puteti adauga un alt %s mai jos."
-
-#: .\contrib\admin\views\main.py:298
-#, python-format
-msgid "Add %s"
-msgstr "Adaugă %s"
-
-#: .\contrib\admin\views\main.py:344
-#, python-format
-msgid "Added %s."
-msgstr "Adaugat %s."
-
-#: .\contrib\admin\views\main.py:344
-#: .\contrib\admin\views\main.py:346
-#: .\contrib\admin\views\main.py:348
-#: .\core\validators.py:283
-#: .\db\models\manipulators.py:309
-msgid "and"
-msgstr "si"
-
-#: .\contrib\admin\views\main.py:346
-#, python-format
-msgid "Changed %s."
-msgstr "Schimbă %s."
-
-#: .\contrib\admin\views\main.py:348
-#, python-format
-msgid "Deleted %s."
-msgstr "Am sters %s."
-
-#: .\contrib\admin\views\main.py:351
-msgid "No fields changed."
-msgstr "Nu s-a facut nicio schimbare."
-
-#: .\contrib\admin\views\main.py:354
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" au fost modificate cu succes."
-
-#: .\contrib\admin\views\main.py:362
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" au fost adaugate cu succes. Le puteti edita mai jos."
-
-#: .\contrib\admin\views\main.py:400
-#, python-format
-msgid "Change %s"
-msgstr "Schimbă %s"
-
-#: .\contrib\admin\views\main.py:487
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Unul sau mai multe %(fieldname)s in %(name)s: %(obj)s"
-
-#: .\contrib\admin\views\main.py:492
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Unul sau mai multe %(fieldname)s in %(name)s:"
-
-#: .\contrib\admin\views\main.py:524
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" au fost sterse cu succes."
-
-#: .\contrib\admin\views\main.py:527
-msgid "Are you sure?"
-msgstr "Sunteti sigur?"
-
-#: .\contrib\admin\views\main.py:549
-#, python-format
-msgid "Change history: %s"
-msgstr "Schimbari facute: %s"
-
-#: .\contrib\admin\views\main.py:583
-#, python-format
-msgid "Select %s"
-msgstr "Selecteaza %s"
-
-#: .\contrib\admin\views\main.py:583
-#, python-format
-msgid "Select %s to change"
-msgstr "Selecteaza %s pentru schimbare"
-
-#: .\contrib\admin\views\main.py:784
-msgid "Database error"
-msgstr "Erroare de baza de date"
-
-#: .\contrib\auth\forms.py:17
-#: .\contrib\auth\forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Cele doua campuri pentru parole nu au coincis."
-
-#: .\contrib\auth\forms.py:25
-msgid "A user with that username already exists."
-msgstr "Un utilizator cu acest nume de utilizator exista deja,"
-
-#: .\contrib\auth\forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Se pare ca browserul dumneavoastra nu suporta cookies. Aveti nevoie de un browser care suporta cookies ca sa va logati."
-
-#: .\contrib\auth\forms.py:62
-msgid "This account is inactive."
-msgstr "Acest cont este inactiv."
-
-#: .\contrib\auth\forms.py:84
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Acea adresa de e-mail nu are un nume de utilizator asociat. Sunteti sigur ca v-ati inregistrat?"
-
-#: .\contrib\auth\forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "Parola resetata pe %s"
-
-#: .\contrib\auth\forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Cele doua campuri 'parola noua' nu au coincis."
-
-#: .\contrib\auth\forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Parola veche a dumneavoastra a fost introdusa incorect. Va rugam introduceti-o din nou."
-
-#: .\contrib\auth\models.py:73
-#: .\contrib\auth\models.py:93
-msgid "name"
-msgstr "nume"
-
-#: .\contrib\auth\models.py:75
-msgid "codename"
-msgstr "nume cod"
-
-#: .\contrib\auth\models.py:78
-msgid "permission"
-msgstr "permisiune"
-
-#: .\contrib\auth\models.py:79
-#: .\contrib\auth\models.py:94
-msgid "permissions"
-msgstr "permisiuni"
-
-#: .\contrib\auth\models.py:97
-msgid "group"
-msgstr "grup"
-
-#: .\contrib\auth\models.py:98
-#: .\contrib\auth\models.py:141
-msgid "groups"
-msgstr "grupuri"
-
-#: .\contrib\auth\models.py:131
-msgid "username"
-msgstr "nume utilizator"
-
-#: .\contrib\auth\models.py:131
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Necesar. 30 de caractere sau mai putin. Doar caractere alfanumerice (litere, cifre, liniute de subliniere)."
-
-#: .\contrib\auth\models.py:132
-msgid "first name"
-msgstr "Prenume"
-
-#: .\contrib\auth\models.py:133
-msgid "last name"
-msgstr "Nume"
-
-#: .\contrib\auth\models.py:134
-msgid "e-mail address"
-msgstr "adresa email"
-
-#: .\contrib\auth\models.py:135
-msgid "password"
-msgstr "parola"
-
-#: .\contrib\auth\models.py:135
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Folositi '[algo]$[salt]$[hexdigest]' sau folositi <a href=\"password/\">formularul de schimbare a parolei</a>."
-
-#: .\contrib\auth\models.py:136
-msgid "staff status"
-msgstr "stare staff"
-
-#: .\contrib\auth\models.py:136
-msgid "Designates whether the user can log into this admin site."
-msgstr "Decide cînd utilizatorul se poate loga în acest sit de adminstrare."
-
-#: .\contrib\auth\models.py:137
-msgid "active"
-msgstr "activ"
-
-#: .\contrib\auth\models.py:137
-msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
-msgstr "Indica daca acest user va fi tratat ca activ sau nu. Deselecteaza-l in loc de a sterge conturi."
-
-#: .\contrib\auth\models.py:138
-msgid "superuser status"
-msgstr "stare superutilizator"
-
-#: .\contrib\auth\models.py:138
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Indica daca acest user are toate permisiile fara a le selecta explicit."
-
-#: .\contrib\auth\models.py:139
-msgid "last login"
-msgstr "ultima logare"
-
-#: .\contrib\auth\models.py:140
-msgid "date joined"
-msgstr "data aderării"
-
-#: .\contrib\auth\models.py:142
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Suplimentar permisiunilor manual alocate, acest utilizator va primi toate permisiunile alocate fiecărui grup din care el/ea face parte."
-
-#: .\contrib\auth\models.py:143
-msgid "user permissions"
-msgstr "permisiuni utilizator"
-
-#: .\contrib\auth\models.py:147
-msgid "user"
-msgstr "utilizator"
-
-#: .\contrib\auth\models.py:148
-msgid "users"
-msgstr "utilizatori"
-
-#: .\contrib\auth\models.py:154
-msgid "Personal info"
-msgstr "Informaţii personale"
-
-#: .\contrib\auth\models.py:155
-msgid "Permissions"
-msgstr "Permisiuni"
-
-#: .\contrib\auth\models.py:156
-msgid "Important dates"
-msgstr "Date importante"
-
-#: .\contrib\auth\models.py:157
-msgid "Groups"
-msgstr "Grupuri"
-
-#: .\contrib\auth\models.py:316
-msgid "message"
-msgstr "mesaj"
-
-#: .\contrib\auth\views.py:47
-msgid "Logged out"
-msgstr "Deautentificat"
-
-#: .\contrib\comments\models.py:71
-#: .\contrib\comments\models.py:176
-msgid "object ID"
-msgstr "id obiect"
-
-#: .\contrib\comments\models.py:72
-msgid "headline"
-msgstr "titlu"
-
-#: .\contrib\comments\models.py:73
-#: .\contrib\comments\models.py:95
-#: .\contrib\comments\models.py:177
-msgid "comment"
-msgstr "comentariu"
-
-#: .\contrib\comments\models.py:74
-msgid "rating #1"
-msgstr "rating #1"
-
-#: .\contrib\comments\models.py:75
-msgid "rating #2"
-msgstr "rating #2"
-
-#: .\contrib\comments\models.py:76
-msgid "rating #3"
-msgstr "rating #3"
-
-#: .\contrib\comments\models.py:77
-msgid "rating #4"
-msgstr "rating #4"
-
-#: .\contrib\comments\models.py:78
-msgid "rating #5"
-msgstr "rating #5"
-
-#: .\contrib\comments\models.py:79
-msgid "rating #6"
-msgstr "rating #6"
-
-#: .\contrib\comments\models.py:80
-msgid "rating #7"
-msgstr "rating #7"
-
-#: .\contrib\comments\models.py:81
-msgid "rating #8"
-msgstr "rating #8"
-
-#: .\contrib\comments\models.py:86
-msgid "is valid rating"
-msgstr "este rating valid"
-
-#: .\contrib\comments\models.py:87
-#: .\contrib\comments\models.py:179
-msgid "date/time submitted"
-msgstr "data/ora crearii"
-
-#: .\contrib\comments\models.py:88
-#: .\contrib\comments\models.py:180
-msgid "is public"
-msgstr "public"
-
-#: .\contrib\comments\models.py:90
-msgid "is removed"
-msgstr "sters"
-
-#: .\contrib\comments\models.py:90
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Bifeaza aceasta casuta daca comentariul nu este adecvat. Un mesaj de tipul \"Acest comentariu a fost sters\" va fi afisat in schimb."
-
-#: .\contrib\comments\models.py:96
-msgid "comments"
-msgstr "comentarii"
-
-#: .\contrib\comments\models.py:140
-#: .\contrib\comments\models.py:222
-msgid "Content object"
-msgstr "Obiect-referinta"
-
-#: .\contrib\comments\models.py:168
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postat de %(user)s la %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: .\contrib\comments\models.py:178
-msgid "person's name"
-msgstr "numele persoanei"
-
-#: .\contrib\comments\models.py:181
-msgid "ip address"
-msgstr "adresa ip"
-
-#: .\contrib\comments\models.py:183
-msgid "approved by staff"
-msgstr "aprobat de echipa"
-
-#: .\contrib\comments\models.py:187
-msgid "free comment"
-msgstr "permite comentariu fara inregistrare"
-
-#: .\contrib\comments\models.py:188
-msgid "free comments"
-msgstr "permite comentarii fara inregistrare"
-
-#: .\contrib\comments\models.py:250
-msgid "score"
-msgstr "punctaj"
-
-#: .\contrib\comments\models.py:251
-msgid "score date"
-msgstr "data punctajului"
-
-#: .\contrib\comments\models.py:255
-#, fuzzy
-msgid "karma score"
-msgstr "punctaj karmic"
-
-#: .\contrib\comments\models.py:256
-#, fuzzy
-msgid "karma scores"
-msgstr "punctaje karmice"
-
-#: .\contrib\comments\models.py:260
-#, fuzzy, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "Punctaj %(score)d atribuit de catre %(user)s"
-
-#: .\contrib\comments\models.py:277
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Acest comentariu a fost marcat de %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: .\contrib\comments\models.py:285
-msgid "flag date"
-msgstr "data marcarii"
-
-#: .\contrib\comments\models.py:289
-#, fuzzy
-msgid "user flag"
-msgstr "stegulet de utilizator"
-
-#: .\contrib\comments\models.py:290
-#, fuzzy
-msgid "user flags"
-msgstr "stegulete de utilizatori"
-
-#: .\contrib\comments\models.py:294
-#, python-format
-msgid "Flag by %r"
-msgstr "Marcajul lui %r"
-
-#: .\contrib\comments\models.py:300
-msgid "deletion date"
-msgstr "data stergerii"
-
-#: .\contrib\comments\models.py:303
-msgid "moderator deletion"
-msgstr "sters de moderator"
-
-#: .\contrib\comments\models.py:304
-msgid "moderator deletions"
-msgstr "sterse de moderator"
-
-#: .\contrib\comments\models.py:308
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Sters de moderatorul %r"
-
-#: .\contrib\comments\templates\comments\form.html.py:8
-msgid "Forgotten your password?"
-msgstr "Ai uitat parola?"
-
-#: .\contrib\comments\templates\comments\form.html.py:12
-msgid "Ratings"
-msgstr "Ratinguri"
-
-#: .\contrib\comments\templates\comments\form.html.py:12
-#: .\contrib\comments\templates\comments\form.html.py:23
-msgid "Required"
-msgstr "Necesar"
-
-#: .\contrib\comments\templates\comments\form.html.py:12
-#: .\contrib\comments\templates\comments\form.html.py:23
-msgid "Optional"
-msgstr "Optional"
-
-#: .\contrib\comments\templates\comments\form.html.py:23
-msgid "Post a photo"
-msgstr "Adauga o poza"
-
-#: .\contrib\comments\templates\comments\form.html.py:28
-#: .\contrib\comments\templates\comments\freeform.html.py:5
-msgid "Comment:"
-msgstr "Comentariu:"
-
-#: .\contrib\comments\templates\comments\form.html.py:35
-#: .\contrib\comments\templates\comments\freeform.html.py:10
-msgid "Preview comment"
-msgstr "Previzualizare comentariu"
-
-#: .\contrib\comments\templates\comments\freeform.html.py:4
-msgid "Your name:"
-msgstr "numele dumneavoastra"
-
-#: .\contrib\comments\views\comments.py:28
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Acest rating este necesar deoarece ai introdus cel putin un alt rating."
-
-#: .\contrib\comments\views\comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Acest comentariu a fost postat de un utilizator care a postat mai putin de %(count)s comentariu:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Acest comentariu a fost postat de un utilizator care a postat mai putin de %(count)s comentarii:\n"
-"\n"
-"%(text)s"
-
-#: .\contrib\comments\views\comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Acest comentariu a fost postat de un utilizator neordonat:\n"
-"\n"
-"%(text)s"
-
-#: .\contrib\comments\views\comments.py:190
-#: .\contrib\comments\views\comments.py:283
-msgid "Only POSTs are allowed"
-msgstr "Doar postarile sunt permise"
-
-#: .\contrib\comments\views\comments.py:194
-#: .\contrib\comments\views\comments.py:287
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Unul sau mai multe campuri necesare nu a fost completat"
-
-#: .\contrib\comments\views\comments.py:198
-#: .\contrib\comments\views\comments.py:289
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Cineva a modificat formularul de comentarii (incalcare a securitatii)"
-
-#: .\contrib\comments\views\comments.py:208
-#: .\contrib\comments\views\comments.py:295
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Formularul de comentariu a avut un parametru 'tinta' invalid -- ID-ul obiectului a fost invalid"
-
-#: .\contrib\comments\views\comments.py:259
-#: .\contrib\comments\views\comments.py:324
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Formularul de comentariu nu specifica nici 'previzualizare' nici 'postare'"
-
-#: .\contrib\comments\views\karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Utilizatorii anonimi nu pot vota"
-
-#: .\contrib\comments\views\karma.py:25
-msgid "Invalid comment ID"
-msgstr "Comentariu cu ID invalid"
-
-#: .\contrib\comments\views\karma.py:27
-msgid "No voting for yourself"
-msgstr "Nu poti vota pentru tine"
-
-#: .\contrib\contenttypes\models.py:67
-#, fuzzy
-msgid "python model class name"
-msgstr "nume clasa model python"
-
-#: .\contrib\contenttypes\models.py:71
-msgid "content type"
-msgstr "tip conţinut"
-
-#: .\contrib\contenttypes\models.py:72
-msgid "content types"
-msgstr "tipuri conţinute"
-
-#: .\contrib\flatpages\models.py:9
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Exemplu: '/about/contact'. Asiguraţi-vă că aveţi slash-uri la început şi la sfîrşit."
-
-#: .\contrib\flatpages\models.py:10
-msgid "title"
-msgstr "titlu"
-
-#: .\contrib\flatpages\models.py:11
-msgid "content"
-msgstr "conţinut"
-
-#: .\contrib\flatpages\models.py:12
-msgid "enable comments"
-msgstr "permite comentarii"
-
-#: .\contrib\flatpages\models.py:13
-msgid "template name"
-msgstr "nume şablon"
-
-#: .\contrib\flatpages\models.py:14
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Exemplu: 'flatpages/contact_page.html'. Dacă aceasta nu există, sistemul va folosi 'flatpages/default.html'."
-
-#: .\contrib\flatpages\models.py:15
-msgid "registration required"
-msgstr "necesită înregistrare"
-
-#: .\contrib\flatpages\models.py:15
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Dacă aceasta este bifată, numai utilizatorii logaţi vor putea vedea pagina."
-
-#: .\contrib\flatpages\models.py:20
-msgid "flat page"
-msgstr "pagina plată"
-
-#: .\contrib\flatpages\models.py:21
-msgid "flat pages"
-msgstr "pagini plate"
-
-#: .\contrib\flatpages\models.py:27
-msgid "Advanced options"
-msgstr "Optiuni avansate"
-
-#: .\contrib\humanize\templatetags\humanize.py:19
-msgid "th"
-msgstr "ul"
-
-#: .\contrib\humanize\templatetags\humanize.py:19
-msgid "st"
-msgstr "ul"
-
-#: .\contrib\humanize\templatetags\humanize.py:19
-msgid "nd"
-msgstr "lea"
-
-#: .\contrib\humanize\templatetags\humanize.py:19
-msgid "rd"
-msgstr "lea"
-
-#: .\contrib\humanize\templatetags\humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f milioane"
-
-#: .\contrib\humanize\templatetags\humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliard"
-msgstr[1] "%(value).1f miliarde"
-
-#: .\contrib\humanize\templatetags\humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f mie de miliarde"
-msgstr[1] "%(value).1f mii de miliarde"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "one"
-msgstr "unu"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "two"
-msgstr "doi"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "three"
-msgstr "trei"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "four"
-msgstr "patry"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "five"
-msgstr "cinci"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "six"
-msgstr "sase"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "seven"
-msgstr "sapte"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "eight"
-msgstr "opt"
-
-#: .\contrib\humanize\templatetags\humanize.py:73
-msgid "nine"
-msgstr "noua"
-
-#: .\contrib\humanize\templatetags\humanize.py:93
-msgid "today"
-msgstr "astazi"
-
-#: .\contrib\humanize\templatetags\humanize.py:95
-msgid "tomorrow"
-msgstr "maine"
-
-#: .\contrib\humanize\templatetags\humanize.py:97
-msgid "yesterday"
-msgstr "ieri"
-
-#: .\contrib\localflavor\ar\forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Introduceti un cod postal valid de forma NNNN sau ANNNNAAA."
-
-#: .\contrib\localflavor\ar\forms.py:49
-#: .\contrib\localflavor\br\forms.py:96
-#: .\contrib\localflavor\br\forms.py:135
-#: .\contrib\localflavor\pe\forms.py:23
-#: .\contrib\localflavor\pe\forms.py:51
-msgid "This field requires only numbers."
-msgstr "Acest camp accepta doar numere."
-
-#: .\contrib\localflavor\ar\forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Acest camp are nevoie de 7 sau 8 cifre."
-
-#: .\contrib\localflavor\ar\forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Introduceti un CUIT valid de forma XX-XXXXXXXX-X sau XXXXXXXXXXXX."
-
-#: .\contrib\localflavor\ar\forms.py:80
-msgid "Invalid CUIT."
-msgstr "CUIT invalid."
-
-#: .\contrib\localflavor\au\forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Introduceti un cod postal de 4 cifre."
-
-#: .\contrib\localflavor\br\forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Adaugati un cod postal de forma XXXXX-XXX."
-
-#: .\contrib\localflavor\br\forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Numerele de telefon trebuie să fie in format XXX-XXX-XXXX."
-
-#: .\contrib\localflavor\br\forms.py:58
-msgid "Select a valid brazilian state. That state is not one of the available states."
-msgstr "Selectati un stat brazilian valid. Acest stat nu se afla printre statele disponibile."
-
-#: .\contrib\localflavor\br\forms.py:94
-msgid "Invalid CPF number."
-msgstr "Numar CPF invalid."
-
-#: .\contrib\localflavor\br\forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Acest camp are nevoie de cel mult 11 cifre sau 14 caractere."
-
-#: .\contrib\localflavor\br\forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Numar CNPJ invalid."
-
-#: .\contrib\localflavor\br\forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Acest camd are nevoie de cel putin 14 cifre."
-
-#: .\contrib\localflavor\ca\forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Introduceti un cod postal de forma XXX XXX."
-
-#: .\contrib\localflavor\ca\forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr "Introduceti un numar canadia de asigurare sociala valid de forma XXX-XXX-XXX."
-
-#: .\contrib\localflavor\ch\ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: .\contrib\localflavor\ch\ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: .\contrib\localflavor\ch\ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: .\contrib\localflavor\ch\ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: .\contrib\localflavor\ch\ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Land"
-
-#: .\contrib\localflavor\ch\ch_states.py:10
-msgid "Berne"
-msgstr "Berna"
-
-#: .\contrib\localflavor\ch\ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: .\contrib\localflavor\ch\ch_states.py:12
-msgid "Geneva"
-msgstr "Geneva"
-
-#: .\contrib\localflavor\ch\ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: .\contrib\localflavor\ch\ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: .\contrib\localflavor\ch\ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: .\contrib\localflavor\ch\ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerna"
-
-#: .\contrib\localflavor\ch\ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: .\contrib\localflavor\ch\ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: .\contrib\localflavor\ch\ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: .\contrib\localflavor\ch\ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: .\contrib\localflavor\ch\ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: .\contrib\localflavor\ch\ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: .\contrib\localflavor\ch\ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: .\contrib\localflavor\ch\ch_states.py:24
-msgid "Thurgau"
-msgstr "JoiTurgovia"
-
-#: .\contrib\localflavor\ch\ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: .\contrib\localflavor\ch\ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: .\contrib\localflavor\ch\ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: .\contrib\localflavor\ch\ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: .\contrib\localflavor\ch\ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: .\contrib\localflavor\ch\ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: .\contrib\localflavor\ch\forms.py:16
-#: .\contrib\localflavor\no\forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Introduceti un cod postal de forma XXXX."
-
-#: .\contrib\localflavor\ch\forms.py:64
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Introduceti un numar elvetian de identitate sau pasaport, valid, de forma X1234567<0 sau 1234567890."
-
-#: .\contrib\localflavor\cl\forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Introduceti RUT chilian valid."
-
-#: .\contrib\localflavor\cl\forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Introduceti un RUT chilian valid. Formatul este XX.XXX.XXX-X."
-
-#: .\contrib\localflavor\cl\forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "RUT-ul chilean nu este valid."
-
-#: .\contrib\localflavor\de\de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: .\contrib\localflavor\de\de_states.py:6
-msgid "Bavaria"
-msgstr "Bavaria"
-
-#: .\contrib\localflavor\de\de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: .\contrib\localflavor\de\de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: .\contrib\localflavor\de\de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: .\contrib\localflavor\de\de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: .\contrib\localflavor\de\de_states.py:11
-msgid "Hessen"
-msgstr "Hessa"
-
-#: .\contrib\localflavor\de\de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Pomerania Inferioara"
-
-#: .\contrib\localflavor\de\de_states.py:13
-msgid "Lower Saxony"
-msgstr "Saxonia Inferioara"
-
-#: .\contrib\localflavor\de\de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Renania de Nord-Westfalia"
-
-#: .\contrib\localflavor\de\de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Renanina-Palatinat"
-
-#: .\contrib\localflavor\de\de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: .\contrib\localflavor\de\de_states.py:17
-msgid "Saxony"
-msgstr "Saxonia"
-
-#: .\contrib\localflavor\de\de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saxonia-Anhalt"
-
-#: .\contrib\localflavor\de\de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: .\contrib\localflavor\de\de_states.py:20
-msgid "Thuringia"
-msgstr "Turingia"
-
-#: .\contrib\localflavor\de\forms.py:14
-#: .\contrib\localflavor\fi\forms.py:12
-#: .\contrib\localflavor\fr\forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Introduceti un cod postal de forma XXXXX."
-
-#: .\contrib\localflavor\de\forms.py:41
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr "Introduceti un numar german de identitate valid, de forma XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: .\contrib\localflavor\es\es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: .\contrib\localflavor\es\es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: .\contrib\localflavor\es\es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: .\contrib\localflavor\es\es_provinces.py:8
-msgid "Almeria"
-msgstr "Almeria"
-
-#: .\contrib\localflavor\es\es_provinces.py:9
-msgid "Avila"
-msgstr "Avila"
-
-#: .\contrib\localflavor\es\es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: .\contrib\localflavor\es\es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Insulele Baleare"
-
-#: .\contrib\localflavor\es\es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: .\contrib\localflavor\es\es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: .\contrib\localflavor\es\es_provinces.py:14
-msgid "Caceres"
-msgstr "Caceres"
-
-#: .\contrib\localflavor\es\es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cadiz"
-
-#: .\contrib\localflavor\es\es_provinces.py:16
-msgid "Castello"
-msgstr "Castello"
-
-#: .\contrib\localflavor\es\es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: .\contrib\localflavor\es\es_provinces.py:18
-msgid "Cordoba"
-msgstr "Cordoba"
-
-#: .\contrib\localflavor\es\es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruna"
-
-#: .\contrib\localflavor\es\es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: .\contrib\localflavor\es\es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: .\contrib\localflavor\es\es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: .\contrib\localflavor\es\es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: .\contrib\localflavor\es\es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: .\contrib\localflavor\es\es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: .\contrib\localflavor\es\es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: .\contrib\localflavor\es\es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaen"
-
-#: .\contrib\localflavor\es\es_provinces.py:28
-msgid "Leon"
-msgstr "Leon"
-
-#: .\contrib\localflavor\es\es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: .\contrib\localflavor\es\es_provinces.py:30
-#: .\contrib\localflavor\es\es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: .\contrib\localflavor\es\es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: .\contrib\localflavor\es\es_provinces.py:32
-#: .\contrib\localflavor\es\es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: .\contrib\localflavor\es\es_provinces.py:33
-msgid "Malaga"
-msgstr "Malaga"
-
-#: .\contrib\localflavor\es\es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: .\contrib\localflavor\es\es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarra"
-
-#: .\contrib\localflavor\es\es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: .\contrib\localflavor\es\es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturias"
-
-#: .\contrib\localflavor\es\es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: .\contrib\localflavor\es\es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: .\contrib\localflavor\es\es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: .\contrib\localflavor\es\es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: .\contrib\localflavor\es\es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: .\contrib\localflavor\es\es_provinces.py:43
-#: .\contrib\localflavor\es\es_regions.py:11
-msgid "Cantabria"
-msgstr "Cantabria"
-
-#: .\contrib\localflavor\es\es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: .\contrib\localflavor\es\es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilia"
-
-#: .\contrib\localflavor\es\es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: .\contrib\localflavor\es\es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: .\contrib\localflavor\es\es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: .\contrib\localflavor\es\es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: .\contrib\localflavor\es\es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: .\contrib\localflavor\es\es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: .\contrib\localflavor\es\es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Bizkaia"
-
-#: .\contrib\localflavor\es\es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: .\contrib\localflavor\es\es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: .\contrib\localflavor\es\es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: .\contrib\localflavor\es\es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: .\contrib\localflavor\es\es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusia"
-
-#: .\contrib\localflavor\es\es_regions.py:6
-msgid "Aragon"
-msgstr "Aragon"
-
-#: .\contrib\localflavor\es\es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Principatul Asturiei"
-
-#: .\contrib\localflavor\es\es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Insulele Baleare"
-
-#: .\contrib\localflavor\es\es_regions.py:9
-msgid "Basque Country"
-msgstr "Tara Bascilor"
-
-#: .\contrib\localflavor\es\es_regions.py:10
-msgid "Canary Islands"
-msgstr "Insulele Canare"
-
-#: .\contrib\localflavor\es\es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Castile-La Mancha"
-
-#: .\contrib\localflavor\es\es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Castilia si Leon"
-
-#: .\contrib\localflavor\es\es_regions.py:14
-msgid "Catalonia"
-msgstr "Catalonia"
-
-#: .\contrib\localflavor\es\es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: .\contrib\localflavor\es\es_regions.py:16
-msgid "Galicia"
-msgstr "Galicia"
-
-#: .\contrib\localflavor\es\es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Regiunea Murcia"
-
-#: .\contrib\localflavor\es\es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Comunitatea Forala Navara"
-
-#: .\contrib\localflavor\es\es_regions.py:21
-msgid "Valencian Community"
-msgstr "Comunitatea Valencia"
-
-#: .\contrib\localflavor\es\forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Introduceti un cod postal valid in intervalul si de forma 01XXX - 52XXX."
-
-#: .\contrib\localflavor\es\forms.py:39
-msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
-msgstr "Introduceti un numa de telefon valid intr-unul dintre formatele 6XXXXXXXX, 8XXXXXXXX sau 9XXXXXXXX."
-
-#: .\contrib\localflavor\es\forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Introduceţi vă rog un NIF, NIE sau CIF valid."
-
-#: .\contrib\localflavor\es\forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Introduceti va rog un NIF sau NIE valid."
-
-#: .\contrib\localflavor\es\forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Suma de control invalda pentru NIF."
-
-#: .\contrib\localflavor\es\forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Suma de control invalida pentru NIE."
-
-#: .\contrib\localflavor\es\forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Suma de control invalida pentru CIF."
-
-#: .\contrib\localflavor\es\forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr "Introduceti un numar de cont bancar valid de forma XXXX-XXXX-XX-XXXXXXXXXX."
-
-#: .\contrib\localflavor\es\forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Suma de control invalida pentru numarul de cont bancar."
-
-#: .\contrib\localflavor\fi\forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Introduceti un numar finlandez de securitate sociala valid."
-
-#: .\contrib\localflavor\in_\forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Introduceti un cod postal de forma XXXXXXX."
-
-#: .\contrib\localflavor\is_\forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Introduceti un numa islandez de autentificare valid. Formatul este XXXXXX-XXXX."
-
-#: .\contrib\localflavor\is_\forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Numarul islandez de identificare nu este valid."
-
-#: .\contrib\localflavor\it\forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Introduceti un cod postal valid."
-
-#: .\contrib\localflavor\it\forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Introduceti un numar de securitate sociala valid."
-
-#: .\contrib\localflavor\it\forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Introduceti un numar VAT valid."
-
-#: .\contrib\localflavor\jp\forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Introduceti un cod postal de forma XXXXXXX sau XXX-XXXX."
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ishikawa"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagoshima"
-
-#: .\contrib\localflavor\jp\jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: .\contrib\localflavor\mx\mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: .\contrib\localflavor\mx\mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: .\contrib\localflavor\mx\mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: .\contrib\localflavor\mx\mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: .\contrib\localflavor\mx\mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: .\contrib\localflavor\mx\mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: .\contrib\localflavor\mx\mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: .\contrib\localflavor\mx\mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: .\contrib\localflavor\mx\mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Districtul Federal"
-
-#: .\contrib\localflavor\mx\mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: .\contrib\localflavor\mx\mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: .\contrib\localflavor\mx\mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: .\contrib\localflavor\mx\mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: .\contrib\localflavor\mx\mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: .\contrib\localflavor\mx\mx_states.py:26
-msgid "Estado de MÃ©xico"
-msgstr "Statul Mexico"
-
-#: .\contrib\localflavor\mx\mx_states.py:27
-msgid "MichoacÃ¡n"
-msgstr "MichoacÃ¡n"
-
-#: .\contrib\localflavor\mx\mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: .\contrib\localflavor\mx\mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: .\contrib\localflavor\mx\mx_states.py:30
-msgid "Nuevo LeÃ³n"
-msgstr "Nuevo LeÃ³n"
-
-#: .\contrib\localflavor\mx\mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: .\contrib\localflavor\mx\mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: .\contrib\localflavor\mx\mx_states.py:33
-msgid "QuerÃ©taro"
-msgstr "QuerÃ©taro"
-
-#: .\contrib\localflavor\mx\mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: .\contrib\localflavor\mx\mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: .\contrib\localflavor\mx\mx_states.py:36
-msgid "San Luis PotosÃ­"
-msgstr "San Luis PotosÃ­"
-
-#: .\contrib\localflavor\mx\mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: .\contrib\localflavor\mx\mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: .\contrib\localflavor\mx\mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: .\contrib\localflavor\mx\mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: .\contrib\localflavor\mx\mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: .\contrib\localflavor\mx\mx_states.py:42
-msgid "YucatÃ¡n"
-msgstr "Yucatan"
-
-#: .\contrib\localflavor\mx\mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: .\contrib\localflavor\nl\forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Introduceti un cod postal valid"
-
-#: .\contrib\localflavor\nl\forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Introduceţi un număr îde telefon valid"
-
-#: .\contrib\localflavor\nl\forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Introduceti un numar SoFi valid"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:6
-msgid "Friesland"
-msgstr "Frizia"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Brabantul de Nord"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Olanda de Nord"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeelanda"
-
-#: .\contrib\localflavor\nl\nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Olanda de Sud"
-
-#: .\contrib\localflavor\no\forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Introduceti un numar norvegian de securitate sociala valid."
-
-#: .\contrib\localflavor\pe\forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Acest camp are nevoie de 8 cifre."
-
-#: .\contrib\localflavor\pe\forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Acest camp are nevoie de 11 cifre."
-
-#: .\contrib\localflavor\pl\forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr "Numarul National de Identificare contine 11 cifre."
-
-#: .\contrib\localflavor\pl\forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Suma de control gresita pentru Numarul National de Identificare."
-
-#: .\contrib\localflavor\pl\forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr "Introduceti un numar de taxa(NIP) de forma XXX-XXX-XX-XX sau XX-XX-XXX-XXX."
-
-#: .\contrib\localflavor\pl\forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Suma de control gresita pentru Numarul de Taxa (NIP)."
-
-#: .\contrib\localflavor\pl\forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr "Numarul National din Registrul pentru Afaceri (REGON) contine 7 sau 9 cifre."
-
-#: .\contrib\localflavor\pl\forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Suma de control gresita pentru Numarul National din Registrul pentru Afaceri (REGON)."
-
-#: .\contrib\localflavor\pl\forms.py:156
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Introduceti un cod postal de forma XX-XXX."
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Silezia Inferioara"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Polonia Mica"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Podcarpatia"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silezia"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Polonia Mare"
-
-#: .\contrib\localflavor\pl\pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "Pomerania Occidentala"
-
-#: .\contrib\localflavor\sk\forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Introduceti un cod postal de forma XXXXX or XXX XX."
-
-#: .\contrib\localflavor\sk\sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: .\contrib\localflavor\sk\sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: .\contrib\localflavor\sk\sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: .\contrib\localflavor\sk\sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: .\contrib\localflavor\sk\sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: .\contrib\localflavor\sk\sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: .\contrib\localflavor\sk\sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: .\contrib\localflavor\sk\sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: .\contrib\localflavor\sk\sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: .\contrib\localflavor\sk\sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: .\contrib\localflavor\sk\sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: .\contrib\localflavor\sk\sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: .\contrib\localflavor\sk\sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: .\contrib\localflavor\sk\sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: .\contrib\localflavor\sk\sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: .\contrib\localflavor\sk\sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: .\contrib\localflavor\sk\sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: .\contrib\localflavor\sk\sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: .\contrib\localflavor\sk\sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: .\contrib\localflavor\sk\sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: .\contrib\localflavor\sk\sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: .\contrib\localflavor\sk\sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: .\contrib\localflavor\sk\sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: .\contrib\localflavor\sk\sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: .\contrib\localflavor\sk\sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: .\contrib\localflavor\sk\sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: .\contrib\localflavor\sk\sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: .\contrib\localflavor\sk\sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: .\contrib\localflavor\sk\sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: .\contrib\localflavor\sk\sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: .\contrib\localflavor\sk\sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: .\contrib\localflavor\sk\sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: .\contrib\localflavor\sk\sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: .\contrib\localflavor\sk\sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: .\contrib\localflavor\sk\sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: .\contrib\localflavor\sk\sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: .\contrib\localflavor\sk\sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: .\contrib\localflavor\sk\sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: .\contrib\localflavor\sk\sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: .\contrib\localflavor\sk\sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: .\contrib\localflavor\sk\sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: .\contrib\localflavor\sk\sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: .\contrib\localflavor\sk\sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: .\contrib\localflavor\sk\sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: .\contrib\localflavor\sk\sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: .\contrib\localflavor\sk\sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: .\contrib\localflavor\sk\sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: .\contrib\localflavor\sk\sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: .\contrib\localflavor\sk\sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: .\contrib\localflavor\sk\sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: .\contrib\localflavor\sk\sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: .\contrib\localflavor\sk\sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: .\contrib\localflavor\sk\sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: .\contrib\localflavor\sk\sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: .\contrib\localflavor\sk\sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: .\contrib\localflavor\sk\sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: .\contrib\localflavor\sk\sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: .\contrib\localflavor\sk\sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: .\contrib\localflavor\sk\sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: .\contrib\localflavor\sk\sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: .\contrib\localflavor\sk\sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: .\contrib\localflavor\sk\sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: .\contrib\localflavor\sk\sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: .\contrib\localflavor\sk\sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: .\contrib\localflavor\sk\sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: .\contrib\localflavor\sk\sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: .\contrib\localflavor\sk\sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: .\contrib\localflavor\sk\sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: .\contrib\localflavor\sk\sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: .\contrib\localflavor\sk\sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: .\contrib\localflavor\sk\sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: .\contrib\localflavor\sk\sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: .\contrib\localflavor\sk\sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: .\contrib\localflavor\sk\sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: .\contrib\localflavor\sk\sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: .\contrib\localflavor\sk\sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: .\contrib\localflavor\sk\sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: .\contrib\localflavor\sk\sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: .\contrib\localflavor\sk\sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: .\contrib\localflavor\sk\sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banska Bystrica region"
-
-#: .\contrib\localflavor\sk\sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Regiunea Bratislava"
-
-#: .\contrib\localflavor\sk\sk_regions.py:10
-msgid "Kosice region"
-msgstr "Regiunea Kosice"
-
-#: .\contrib\localflavor\sk\sk_regions.py:11
-msgid "Nitra region"
-msgstr "Regiunea Nitra"
-
-#: .\contrib\localflavor\sk\sk_regions.py:12
-msgid "Presov region"
-msgstr "Regiunea Presov"
-
-#: .\contrib\localflavor\sk\sk_regions.py:13
-msgid "Trencin region"
-msgstr "Regiunea Trencin"
-
-#: .\contrib\localflavor\sk\sk_regions.py:14
-msgid "Trnava region"
-msgstr "Regiunea Trnava"
-
-#: .\contrib\localflavor\sk\sk_regions.py:15
-msgid "Zilina region"
-msgstr "Regiunea Zilina"
-
-#: .\contrib\localflavor\uk\forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Introduceti un cod postal valid."
-
-#: .\contrib\localflavor\uk\uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall si Insulele Scilly"
-
-#: .\contrib\localflavor\uk\uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: .\contrib\localflavor\uk\uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: .\contrib\localflavor\uk\uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: .\contrib\localflavor\uk\uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: .\contrib\localflavor\uk\uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: .\contrib\localflavor\uk\uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: .\contrib\localflavor\uk\uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:24
-msgid "Greater London"
-msgstr "Londra Mare"
-
-#: .\contrib\localflavor\uk\uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: .\contrib\localflavor\uk\uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: .\contrib\localflavor\uk\uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: .\contrib\localflavor\uk\uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: .\contrib\localflavor\uk\uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: .\contrib\localflavor\uk\uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: .\contrib\localflavor\uk\uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: .\contrib\localflavor\uk\uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: .\contrib\localflavor\uk\uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne si Wear"
-
-#: .\contrib\localflavor\uk\uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: .\contrib\localflavor\uk\uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: .\contrib\localflavor\uk\uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: .\contrib\localflavor\uk\uk_regions.py:55
-msgid "County Antrim"
-msgstr "Comitatul Antrim"
-
-#: .\contrib\localflavor\uk\uk_regions.py:56
-msgid "County Armagh"
-msgstr "Comitatul Armagh"
-
-#: .\contrib\localflavor\uk\uk_regions.py:57
-msgid "County Down"
-msgstr "Comitatul Down"
-
-#: .\contrib\localflavor\uk\uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "Comitatul Fermanagh"
-
-#: .\contrib\localflavor\uk\uk_regions.py:59
-msgid "County Londonderry"
-msgstr "Comitatul Londonderry"
-
-#: .\contrib\localflavor\uk\uk_regions.py:60
-msgid "County Tyrone"
-msgstr "Comitatul Tyrone"
-
-#: .\contrib\localflavor\uk\uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: .\contrib\localflavor\uk\uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: .\contrib\localflavor\uk\uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: .\contrib\localflavor\uk\uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: .\contrib\localflavor\uk\uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: .\contrib\localflavor\uk\uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: .\contrib\localflavor\uk\uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: .\contrib\localflavor\uk\uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: .\contrib\localflavor\uk\uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: .\contrib\localflavor\uk\uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Central Scotland"
-
-#: .\contrib\localflavor\uk\uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries si Galloway"
-
-#: .\contrib\localflavor\uk\uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: .\contrib\localflavor\uk\uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: .\contrib\localflavor\uk\uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: .\contrib\localflavor\uk\uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: .\contrib\localflavor\uk\uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: .\contrib\localflavor\uk\uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: .\contrib\localflavor\uk\uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: .\contrib\localflavor\uk\uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: .\contrib\localflavor\uk\uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: .\contrib\localflavor\uk\uk_regions.py:90
-msgid "England"
-msgstr "Anglia"
-
-#: .\contrib\localflavor\uk\uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Irlanda de Nord"
-
-#: .\contrib\localflavor\uk\uk_regions.py:92
-msgid "Scotland"
-msgstr "Scotia"
-
-#: .\contrib\localflavor\uk\uk_regions.py:93
-msgid "Wales"
-msgstr "Tara Galilor"
-
-#: .\contrib\localflavor\us\forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Introduceti un cod postal de forma XXXXX or XXXXX-XXXX."
-
-#: .\contrib\localflavor\us\forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Introduceti un numar SUA de Securitate Sociala de forma XXX-XX-XXXX format."
-
-#: .\contrib\localflavor\za\forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Introduceti un ID sud african valid"
-
-#: .\contrib\localflavor\za\forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Introduceti un cod postal sud african valid"
-
-#: .\contrib\localflavor\za\za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Eastern Cape"
-
-#: .\contrib\localflavor\za\za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: .\contrib\localflavor\za\za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: .\contrib\localflavor\za\za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: .\contrib\localflavor\za\za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: .\contrib\localflavor\za\za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: .\contrib\localflavor\za\za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: .\contrib\localflavor\za\za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: .\contrib\localflavor\za\za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: .\contrib\redirects\models.py:7
-msgid "redirect from"
-msgstr "redirectat de la "
-
-#: .\contrib\redirects\models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Aceasta ar trebui să fie o cale absolută, excluzînd numele de domeniu. Exemplu: '/evenimente/cautare/'."
-
-#: .\contrib\redirects\models.py:9
-msgid "redirect to"
-msgstr "redirectat la"
-
-#: .\contrib\redirects\models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Aceasta poate fi o cale absolută (ca mai sus) sau un URL începînd cu 'http://'."
-
-#: .\contrib\redirects\models.py:13
-msgid "redirect"
-msgstr "redirectare"
-
-#: .\contrib\redirects\models.py:14
-msgid "redirects"
-msgstr "redictări"
-
-#: .\contrib\sessions\models.py:41
-msgid "session key"
-msgstr "cheie sesiune"
-
-#: .\contrib\sessions\models.py:42
-msgid "session data"
-msgstr "date sesiune"
-
-#: .\contrib\sessions\models.py:43
-msgid "expire date"
-msgstr "data expirare"
-
-#: .\contrib\sessions\models.py:48
-msgid "session"
-msgstr "sesiune"
-
-#: .\contrib\sessions\models.py:49
-msgid "sessions"
-msgstr "sesiuni"
-
-#: .\contrib\sites\models.py:32
-msgid "domain name"
-msgstr "nume domeniu"
-
-#: .\contrib\sites\models.py:33
-msgid "display name"
-msgstr "nume afişat"
-
-#: .\contrib\sites\models.py:37
-msgid "site"
-msgstr "sit"
-
-#: .\contrib\sites\models.py:38
-msgid "sites"
-msgstr "sit"
-
-#: .\core\validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Această valoare trebuie să conţină numai litere, numere şi liniuţe de subliniere."
-
-#: .\core\validators.py:76
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Această valoare trebuie să conţină numai litere, numere, liniuţe de subliniere, slash-uri si dash-uri."
-
-#: .\core\validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Această valoare trebuie să conţină numai litere, numere, liniuţe de subliniere şi liniute."
-
-#: .\core\validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Literele mari nu sînt permise aici."
-
-#: .\core\validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Literele mici nu sînt permise aici."
-
-#: .\core\validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Introduceţi numai numere separate de virgule."
-
-#: .\core\validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Introduceţi adrese de email valide separate de virgule."
-
-#: .\core\validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Introduceţi vă rog o adresă IP validă."
-
-#: .\core\validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Valorile vide nu sînt permise aici."
-
-#: .\core\validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Caracterele ne-numerice nu sînt permise aici."
-
-#: .\core\validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Această valoare nu poate conţîne numai cifre."
-
-#: .\core\validators.py:128
-#: .\newforms\fields.py:152
-msgid "Enter a whole number."
-msgstr "Introduceţi un număr întreg."
-
-#: .\core\validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Numai caractere alfabetice sînt permise aici."
-
-#: .\core\validators.py:147
-msgid "Year must be 1900 or later."
-msgstr "Anul trebuie sa fie 1900 sau posterior."
-
-#: .\core\validators.py:151
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Data invalida: %s"
-
-#: .\core\validators.py:156
-#: .\db\models\fields\__init__.py:527
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Introduceţi o dată validă in format: AAAA-LL-ZZ."
-
-#: .\core\validators.py:161
-msgid "Enter a valid time in HH:MM format."
-msgstr "Introduceţi o oră în format OO:MM."
-
-#: .\core\validators.py:165
-#: .\db\models\fields\__init__.py:604
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Introduceţi o dată/oră validă în format AAAA-LL-ZZ OO:MM."
-
-#: .\core\validators.py:170
-#: .\newforms\fields.py:403
-msgid "Enter a valid e-mail address."
-msgstr "Introduceţi o adresă de email validă."
-
-#: .\core\validators.py:182
-#: .\core\validators.py:474
-#: .\newforms\fields.py:433
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nici un fisier nu a fost trimis. Verifica tipul fisierului."
-
-#: .\core\validators.py:193
-#: .\newforms\fields.py:459
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Încărcaţi o imagine validă. Fişierul încărcat nu era o imagine sau era o imagine coruptă."
-
-#: .\core\validators.py:200
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL-ul %s nu pointează către o imagine validă."
-
-#: .\core\validators.py:204
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Numerele de telefon trebuie să fie in format XXX-XXX-XXXX. \"%s\" e invalid."
-
-#: .\core\validators.py:212
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL-ul %s nu pointează către o imagine video QuickTime validă."
-
-#: .\core\validators.py:216
-msgid "A valid URL is required."
-msgstr "E necesar un URL valid."
-
-#: .\core\validators.py:230
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"E necesar cod HTML valid. Erorile specifice sînt:\n"
-"%s"
-
-#: .\core\validators.py:237
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Format XML invalid: %s"
-
-#: .\core\validators.py:254
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "URL invalid: %s"
-
-#: .\core\validators.py:259
-#: .\core\validators.py:261
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL-ul %s e invalid."
-
-#: .\core\validators.py:267
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Introduceţi o abreviere validă în U.S."
-
-#: .\core\validators.py:281
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Îngrijiţi-vă limbajul! Cuvîntul %s nu este permis aici."
-msgstr[1] "Îngrijiţi-vă limbajul! Cuvintele %s nu sînt permise aici."
-
-#: .\core\validators.py:288
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Acest camp trebuie sa fie identic cu '%s'."
-
-#: .\core\validators.py:307
-msgid "Please enter something for at least one field."
-msgstr "Va rog completati cel putin un camp."
-
-#: .\core\validators.py:316
-#: .\core\validators.py:327
-msgid "Please enter both fields or leave them both empty."
-msgstr "Vă rog comletaţi ambele cîmpuri sau lăsaţi-le goale pe ambele."
-
-#: .\core\validators.py:335
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Acest cîmp e necesar dacă %(field)s este %(value)s"
-
-#: .\core\validators.py:348
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Acest cîmp e necesar dacă %(field)s nu este %(value)s"
-
-#: .\core\validators.py:367
-msgid "Duplicate values are not allowed."
-msgstr "Valorile duplicate nu sînt permise."
-
-#: .\core\validators.py:382
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Aceasta valoare trebuie sa fie cuprinsa intre %(lower)s si %(upper)s."
-
-#: .\core\validators.py:384
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Această valoare trebuie să fie cel putin %s."
-
-#: .\core\validators.py:386
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Această valoare trebuie să nu fie mai mult de %s."
-
-#: .\core\validators.py:427
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Această valoare trebuie să fie o putere a lui %s."
-
-#: .\core\validators.py:437
-msgid "Please enter a valid decimal number."
-msgstr "Vă rog introduceţi un număr zecimal valid."
-
-#: .\core\validators.py:444
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Vă rog introduceţi un număr zecimal valid cu cel mult %s cifră."
-msgstr[1] "Vă rog introduceţi un număr zecimal valid cu cel mult %s cifre."
-
-#: .\core\validators.py:447
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Vă rog introduceţi un număr zecimal valid cu partea intreaga cel mult %s cifră."
-msgstr[1] "Vă rog introduceţi un număr zecimal valid cu partea intreaga cel mult %s cifre."
-
-#: .\core\validators.py:450
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Vă rog introduceţi un număr zecimal valid cu cel mult %s zecimală."
-msgstr[1] "Vă rog introduceţi un număr zecimal valid cu cel mult %s zecimale."
-
-#: .\core\validators.py:458
-msgid "Please enter a valid floating point number."
-msgstr "Vă rog introduceţi un număr cu virgula valid."
-
-#: .\core\validators.py:467
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Asigură-te că fişierul încărcact are cel puţin %s octeţi."
-
-#: .\core\validators.py:468
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Asigură-te că fişierul încărcact are cel mult %s octeţi."
-
-#: .\core\validators.py:485
-msgid "The format for this field is wrong."
-msgstr "Formatul acestui cîmp este invalid."
-
-#: .\core\validators.py:500
-msgid "This field is invalid."
-msgstr "Cîmpul este invalid."
-
-#: .\core\validators.py:536
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Nu pot prelua nimic de la %s."
-
-#: .\core\validators.py:539
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL-ul %(url)s a returnat un header Content-Type invalid '%(contenttype)s'."
-
-#: .\core\validators.py:572
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Te rog închide tagurile %(tag)s din linia %(line)s. ( Linia începe cu \"%(start)s\".)"
-
-#: .\core\validators.py:576
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Textul începînd cu linia %(line)s nu e permis în acest context. (Linia începînd cu \"%(start)s\".)"
-
-#: .\core\validators.py:581
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" în linia %(line)s e un atribut invalid. (Linia începînd cu \"%(start)s\".)"
-
-#: .\core\validators.py:586
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" în linia %(line)s este un tag invalid. (Linia începe cu \"%(start)s\"."
-
-#: .\core\validators.py:590
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "Unui tag din linia %(line)s îi lipseşte unul sau mai multe atribute. (Linia începe cu \"%(start)s\".)"
-
-#: .\core\validators.py:595
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "Atributul \"%(attr)s\" din linia %(line)s are o valoare invalidă. ( Linia începe cu \"%(start)s\".)"
-
-#: .\db\models\manipulators.py:308
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s de acest tip %(type)s exista deja pentru %(field)s dat."
-
-#: .\db\models\fields\__init__.py:52
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s cu acest %(fieldname)s exista deja."
-
-#: .\db\models\fields\__init__.py:161
-#: .\db\models\fields\__init__.py:327
-#: .\db\models\fields\__init__.py:759
-#: .\db\models\fields\__init__.py:770
-#: .\newforms\fields.py:46
-#: .\oldforms\__init__.py:374
-msgid "This field is required."
-msgstr "Campul acesta trebuie completat obligatoriu."
-
-#: .\db\models\fields\__init__.py:427
-msgid "This value must be an integer."
-msgstr "Această valoare trebuie să fie un numar intreg"
-
-#: .\db\models\fields\__init__.py:466
-msgid "This value must be either True or False."
-msgstr "Această valoare trebuie să fie ori falsa ori adevarata"
-
-#: .\db\models\fields\__init__.py:490
-msgid "This field cannot be null."
-msgstr "Cîmpul nu poate fi gol"
-
-#: .\db\models\fields\__init__.py:668
-msgid "This value must be a decimal number."
-msgstr "Această valoare trebuie să fie un numar zecimal."
-
-#: .\db\models\fields\__init__.py:779
-msgid "Enter a valid filename."
-msgstr "Introduceti un nume de fisier valid."
-
-#: .\db\models\fields\__init__.py:960
-msgid "This value must be either None, True or False."
-msgstr "Această valoare trebuie să fie falsa, adevarata sau nici una."
-
-#: .\db\models\fields\related.py:93
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Introduceti va rog un %s valid."
-
-#: .\db\models\fields\related.py:701
-msgid "Separate multiple IDs with commas."
-msgstr "Separă ID-urile multiple cu virgulă."
-
-#: .\db\models\fields\related.py:703
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr " Ţine apăsat \"Control\", sau \"Command\" pe un Mac, pentru a selectie multipla."
-
-#: .\db\models\fields\related.py:750
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Introduceti un ID valid pentru %(self)s. Valoarea %(value)r nu este valida."
-msgstr[1] "Introduceti ID-uri valide pentru %(self)s. Valorile %(value)r nu sunt valide."
-
-#: .\newforms\fields.py:47
-msgid "Enter a valid value."
-msgstr "Introduceti o valoare valida."
-
-#: .\newforms\fields.py:124
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Asigurati-va ca aceasta valoare are cel mult %(max)d caractere (are %(length)d)."
-
-#: .\newforms\fields.py:125
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Asigurati-va ca aceasta valoare are cel putin %(min)d caractere (are %(length)d)."
-
-#: .\newforms\fields.py:153
-#: .\newforms\fields.py:182
-#: .\newforms\fields.py:211
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Asigurati-va ca aceasta valoare este mai mica sau egala cu %s."
-
-#: .\newforms\fields.py:154
-#: .\newforms\fields.py:183
-#: .\newforms\fields.py:212
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Asigurati-va ca aceasta valoare este mai mare sau egala cu %s."
-
-#: .\newforms\fields.py:181
-#: .\newforms\fields.py:210
-msgid "Enter a number."
-msgstr "Introduceţi un număr."
-
-#: .\newforms\fields.py:213
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Asigurati-va ca nu exista mai mult de %s cifre in total."
-
-#: .\newforms\fields.py:214
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Asigurati-va ca nu exista mai mult de %s spatii zecimale."
-
-#: .\newforms\fields.py:215
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Asigurati-va ca nu exista mai mult de %s cifre inainte de virgula."
-
-#: .\newforms\fields.py:263
-#: .\newforms\fields.py:751
-msgid "Enter a valid date."
-msgstr "Introduceti o data valida."
-
-#: .\newforms\fields.py:296
-#: .\newforms\fields.py:752
-msgid "Enter a valid time."
-msgstr "Introduceti o ora valida."
-
-#: .\newforms\fields.py:335
-msgid "Enter a valid date/time."
-msgstr "Introduceti o data/ora valida."
-
-#: .\newforms\fields.py:434
-msgid "No file was submitted."
-msgstr "Nici un fisier nu a fost trimis."
-
-#: .\newforms\fields.py:435
-#: .\oldforms\__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Fisierul uploadat este gol"
-
-#: .\newforms\fields.py:497
-msgid "Enter a valid URL."
-msgstr "Introduceti un URL valid."
-
-#: .\newforms\fields.py:498
-msgid "This URL appears to be a broken link."
-msgstr "URL-ul e invalid."
-
-#: .\newforms\fields.py:560
-#: .\newforms\models.py:299
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Selectati o optiune valida. Aceasta optiune nu face parte din optiunile disponibile."
-
-#: .\newforms\fields.py:599
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Selectati o optiune valida. %(value)s nu face parte din optiunile disponibile."
-
-#: .\newforms\fields.py:600
-#: .\newforms\fields.py:662
-#: .\newforms\models.py:371
-msgid "Enter a list of values."
-msgstr "Introduceti o lista de valori."
-
-#: .\newforms\fields.py:780
-msgid "Enter a valid IPv4 address."
-msgstr "Introduceţi o adresă IPv4 valida."
-
-#: .\newforms\models.py:372
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Selectati o optiune valida. %s nu face parte din optiunile disponibile."
-
-#: .\oldforms\__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Asigurati-va ca textul dumneavoastra are mai putin de %s caracter."
-msgstr[1] "Asigurati-va ca textul dumneavoastra are mai putin de %s caractere."
-
-#: .\oldforms\__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Randurile noi nu sînt permise aici."
-
-#: .\oldforms\__init__.py:512
-#: .\oldforms\__init__.py:586
-#: .\oldforms\__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Selectati o optiune valida. '%(data)s' nu face parte din %(choices)s."
-
-#: .\oldforms\__init__.py:745
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Introduceţi un număr întreg cu valoare intre -32,768 si 32,767."
-
-#: .\oldforms\__init__.py:755
-msgid "Enter a positive number."
-msgstr "Introduceţi un număr pozitiv."
-
-#: .\oldforms\__init__.py:765
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Introduceţi un număr întreg cu valoare intre 0 si 32,767."
-
-#: .\template\defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "da,nu,poate"
-
-#: .\template\defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: .\template\defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: .\template\defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: .\template\defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: .\utils\dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: .\utils\dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: .\utils\dateformat.py:47
-msgid "PM"
-msgstr "PM"
-
-#: .\utils\dateformat.py:48
-msgid "AM"
-msgstr "AM"
-
-#: .\utils\dateformat.py:97
-msgid "midnight"
-msgstr "miezul noptii"
-
-#: .\utils\dateformat.py:99
-msgid "noon"
-msgstr "amiaza"
-
-#: .\utils\dates.py:6
-msgid "Monday"
-msgstr "Luni"
-
-#: .\utils\dates.py:6
-msgid "Tuesday"
-msgstr "Marţi"
-
-#: .\utils\dates.py:6
-msgid "Wednesday"
-msgstr "Miercuri"
-
-#: .\utils\dates.py:6
-msgid "Thursday"
-msgstr "Joi"
-
-#: .\utils\dates.py:6
-msgid "Friday"
-msgstr "Vineri"
-
-#: .\utils\dates.py:7
-msgid "Saturday"
-msgstr "Sîmbătă"
-
-#: .\utils\dates.py:7
-msgid "Sunday"
-msgstr "Duminică"
-
-#: .\utils\dates.py:10
-msgid "Mon"
-msgstr "Lun"
-
-#: .\utils\dates.py:10
-msgid "Tue"
-msgstr "Mar"
-
-#: .\utils\dates.py:10
-msgid "Wed"
-msgstr "Mie"
-
-#: .\utils\dates.py:10
-msgid "Thu"
-msgstr "Joi"
-
-#: .\utils\dates.py:10
-msgid "Fri"
-msgstr "Vin"
-
-#: .\utils\dates.py:11
-msgid "Sat"
-msgstr "Sam"
-
-#: .\utils\dates.py:11
-msgid "Sun"
-msgstr "Dum"
-
-#: .\utils\dates.py:18
-msgid "January"
-msgstr "Ianuarie"
-
-#: .\utils\dates.py:18
-msgid "February"
-msgstr "Februarie"
-
-#: .\utils\dates.py:18
-#: .\utils\dates.py:31
-msgid "March"
-msgstr "Martie"
-
-#: .\utils\dates.py:18
-#: .\utils\dates.py:31
-msgid "April"
-msgstr "Aprilie"
-
-#: .\utils\dates.py:18
-#: .\utils\dates.py:31
-msgid "May"
-msgstr "Mai"
-
-#: .\utils\dates.py:18
-#: .\utils\dates.py:31
-msgid "June"
-msgstr "Iunie"
-
-#: .\utils\dates.py:19
-#: .\utils\dates.py:31
-msgid "July"
-msgstr "Iulie"
-
-#: .\utils\dates.py:19
-msgid "August"
-msgstr "August"
-
-#: .\utils\dates.py:19
-msgid "September"
-msgstr "Septembrie"
-
-#: .\utils\dates.py:19
-msgid "October"
-msgstr "Octombrie"
-
-#: .\utils\dates.py:19
-msgid "November"
-msgstr "Noiembrie"
-
-#: .\utils\dates.py:20
-msgid "December"
-msgstr "Decembrie"
-
-#: .\utils\dates.py:23
-msgid "jan"
-msgstr "ian"
-
-#: .\utils\dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: .\utils\dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: .\utils\dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: .\utils\dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: .\utils\dates.py:23
-msgid "jun"
-msgstr "iun"
-
-#: .\utils\dates.py:24
-msgid "jul"
-msgstr "iul"
-
-#: .\utils\dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: .\utils\dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: .\utils\dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: .\utils\dates.py:24
-msgid "nov"
-msgstr "noi"
-
-#: .\utils\dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: .\utils\dates.py:31
-msgid "Jan."
-msgstr "Ian."
-
-#: .\utils\dates.py:31
-msgid "Feb."
-msgstr "Feb."
-
-#: .\utils\dates.py:32
-msgid "Aug."
-msgstr "Aug."
-
-#: .\utils\dates.py:32
-msgid "Sept."
-msgstr "Sept."
-
-#: .\utils\dates.py:32
-msgid "Oct."
-msgstr "Oct"
-
-#: .\utils\dates.py:32
-msgid "Nov."
-msgstr "Noi."
-
-#: .\utils\dates.py:32
-msgid "Dec."
-msgstr "Dec."
-
-#: .\utils\text.py:127
-msgid "or"
-msgstr "sau"
-
-#: .\utils\timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "an"
-msgstr[1] "ani"
-
-#: .\utils\timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "luna"
-msgstr[1] "luni"
-
-#: .\utils\timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "saptamana"
-msgstr[1] "saptamani"
-
-#: .\utils\timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "zi"
-msgstr[1] "zile"
-
-#: .\utils\timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "ora"
-msgstr[1] "ore"
-
-#: .\utils\timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minut"
-msgstr[1] "minute"
-
-#: .\utils\timesince.py:46
-msgid "minutes"
-msgstr "minute"
-
-#: .\utils\timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: .\utils\timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: .\utils\translation\trans_real.py:403
-msgid "DATE_FORMAT"
-msgstr "j N Y"
-
-#: .\utils\translation\trans_real.py:404
-msgid "DATETIME_FORMAT"
-msgstr "j N Y, H:i:s"
-
-#: .\utils\translation\trans_real.py:405
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
-
-#: .\utils\translation\trans_real.py:421
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: .\utils\translation\trans_real.py:422
-msgid "MONTH_DAY_FORMAT"
-msgstr "j F"
-
-#: .\views\generic\create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s a fost creat cu succes."
-
-#: .\views\generic\create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s a fost actualizat cu succes."
-
-#: .\views\generic\create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s a fost sters."
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "Ai <a href=\"/password_reset/\">uitat parola</a>?"
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Foloseste '[algo]$[salt]$[hexdigest]'"
-
-#, fuzzy
-#~ msgid "Comments"
-#~ msgstr "permite comentarii"
-#~ msgid "label"
-#~ msgstr "etichetă"
-#~ msgid "package"
-#~ msgstr "pachet"
-#~ msgid "packages"
-#~ msgstr "pachete"
-
-#, fuzzy
-#~ msgid "count"
-#~ msgstr "conţinut"
-
diff --git a/webapp/django/conf/locale/ro/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ro/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 0e594fa..0000000
--- a/webapp/django/conf/locale/ro/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ro/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ro/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 7c91fb2..0000000
--- a/webapp/django/conf/locale/ro/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,116 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 17:36+1000\n"
-"PO-Revision-Date: 2008-04-25 21:57+0200\n"
-"Last-Translator: \n"
-"Language-Team: Romanian <ro@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, fuzzy, perl-format
-msgid "Available %s"
-msgstr "%s disponibil"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Alege toate"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Adauga"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Sterge"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s ales"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Selectati-va alegera(ile) si dati click "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Elibereaza toate"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid "January February March April May June July August September October November December"
-msgstr "Ianuarie Februare Martie Aprilie Mai Iunie Iulie August Septembrie Octombrie Noiembrie Decembrie"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Duminica Luni Marti Miercuri Joi Vinery Sambata"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Acum"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Ceas"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Alege o ora"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Miezul noptii"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Amiaza"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Anuleaza"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Astazi"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Calendar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Ieri"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Maine"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Arata"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Ascunde"
-
diff --git a/webapp/django/conf/locale/ru/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 69aa8b8..0000000
--- a/webapp/django/conf/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ru/LC_MESSAGES/django.po b/webapp/django/conf/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 46f3fab..0000000
--- a/webapp/django/conf/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,3029 +0,0 @@
-# Translation of django.po to russian.
-# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-04 16:07+1300\n"
-"PO-Revision-Date: 2006-09-07 15:28+0300\n"
-"Last-Translator: Vasiliy Stavenko <stavenko@gmail.com>\n"
-"Language-Team: Dialcom Services <greg@dial.com.ru>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Poedit-Language: Russian\n"
-"X-Poedit-Country: RUSSIAN FEDERATION\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: oldforms/__init__.py:357 db/models/fields/__init__.py:117
-#: db/models/fields/__init__.py:274 db/models/fields/__init__.py:615
-#: db/models/fields/__init__.py:626 newforms/models.py:178
-#: newforms/fields.py:80 newforms/fields.py:378 newforms/fields.py:454
-#: newforms/fields.py:465
-msgid "This field is required."
-msgstr "Обязательное поле."
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Убедитесь, что длина вашего текста меньше %s символа."
-msgstr[1] "Убедитесь, что длина вашего текста меньше %s символов."
-msgstr[2] "Убедитесь, что длина вашего текста меньше %s символов."
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "Переносы строк здесь не допускаются."
-
-#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Выберите корректный вариант; '%(data)s' нет в %(choices)s."
-
-#: oldforms/__init__.py:577 newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Неизвестно"
-
-#: oldforms/__init__.py:577 newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Да"
-
-#: oldforms/__init__.py:577 newforms/widgets.py:180
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Нет"
-
-#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Не получен файл. Проверьте кодирование формы (encoding)."
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "Указанный файл пуст."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Введите целое число в диапазоне от -32768 до 32767."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Введите положительное число."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Введите целое число в диапазоне от 0 до 32767."
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s с типом %(type)s уже существует для данного %(field)s."
-
-#: db/models/manipulators.py:308 contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
-msgid "and"
-msgstr "и"
-
-#: db/models/fields/__init__.py:42
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s с %(fieldname)s уже существует."
-
-#: db/models/fields/__init__.py:369
-msgid "This value must be an integer."
-msgstr "Это значение должно быть целым числом."
-
-#: db/models/fields/__init__.py:404
-msgid "This value must be either True or False."
-msgstr "Значение должно либо True, либо False."
-
-#: db/models/fields/__init__.py:425
-msgid "This field cannot be null."
-msgstr "Это поле не может быть нулевым."
-
-#: db/models/fields/__init__.py:462 core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Вводите правильную дату в формате YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:531 core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Введите правильные дату/время в формате YYYY-MM-DD HH:MM."
-
-#: db/models/fields/__init__.py:635
-msgid "Enter a valid filename."
-msgstr "Укажите правильное имя файла."
-
-#: db/models/fields/__init__.py:756
-#, fuzzy
-msgid "This value must be either None, True or False."
-msgstr "Значение должно либо True, либо False."
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Пожалуйста, введите правильный %s."
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "Несколько значений ID разделите запятыми."
-
-#: db/models/fields/related.py:644
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Удерживайте \"Control\" (или \"Command\" на Mac) для выбора нескольких."
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Пожалуйста, введите корректный ID для %(self)s. Значение %(value)r "
-"недопустимо."
-msgstr[1] ""
-"Пожалуйста, введите корректные ID для %(self)s. Значения %(value)r "
-"недопустимы."
-msgstr[2] ""
-"Пожалуйста, введите корректные ID для %(self)s. Значения %(value)r "
-"недопустимы."
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Арабский"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Бенгальский"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "Каталанский"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "Чешский"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "Уэльский"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "Датский"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "Немецкий"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "Греческий"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "Английский"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "Испанский"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "Аргентинский испанский"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "Финский"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "Французский"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr "Галльский"
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "Венгерский"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr "Иврит"
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "Исландский"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "Итальянский"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "Японский"
-
-#: conf/global_settings.py:58
-msgid "Korean"
-msgstr "Корейский"
-
-#: conf/global_settings.py:59
-msgid "Kannada"
-msgstr "Каннада"
-
-#: conf/global_settings.py:60
-msgid "Latvian"
-msgstr "Латвийский"
-
-#: conf/global_settings.py:61
-msgid "Macedonian"
-msgstr "Македоский"
-
-#: conf/global_settings.py:62
-msgid "Dutch"
-msgstr "Голландский"
-
-#: conf/global_settings.py:63
-msgid "Norwegian"
-msgstr "Норвежский"
-
-#: conf/global_settings.py:64
-msgid "Polish"
-msgstr "Польский"
-
-#: conf/global_settings.py:65
-msgid "Portugese"
-msgstr "Португальский"
-
-#: conf/global_settings.py:66
-msgid "Brazilian"
-msgstr "Бразильский"
-
-#: conf/global_settings.py:67
-msgid "Romanian"
-msgstr "Румынский"
-
-#: conf/global_settings.py:68
-msgid "Russian"
-msgstr "Русский"
-
-#: conf/global_settings.py:69
-msgid "Slovak"
-msgstr "Словацкий"
-
-#: conf/global_settings.py:70
-msgid "Slovenian"
-msgstr "Словенский"
-
-#: conf/global_settings.py:71
-msgid "Serbian"
-msgstr "Сербский"
-
-#: conf/global_settings.py:72
-msgid "Swedish"
-msgstr "Шведский"
-
-#: conf/global_settings.py:73
-msgid "Tamil"
-msgstr "Тамиль"
-
-#: conf/global_settings.py:74
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:75
-msgid "Turkish"
-msgstr "Турецкий"
-
-#: conf/global_settings.py:76
-msgid "Ukrainian"
-msgstr "Украинский"
-
-#: conf/global_settings.py:77
-msgid "Simplified Chinese"
-msgstr "Упрощенный китайский"
-
-#: conf/global_settings.py:78
-msgid "Traditional Chinese"
-msgstr "Традиционный китайский"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Значение должно состоять только из букв, цифр и знаков подчеркивания."
-
-#: core/validators.py:68
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Значение должно состоять только из букв, цифр, знаков подчеркивания, тире "
-"или наклонной черты вправо."
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Значение должно состоять только из букв, цифр, знаков подчеркивания "
-"или тире."
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "Заглавные буквы недопустимы."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "Строчные буквы здесь недопустимы."
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "Введите цифры, разделённые запятыми."
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Введите правильные адреса электронной почты, разделённые запятыми."
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "Пожалуйста, введите правильный IP-адрес."
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "Пустое значение здесь недопустимо."
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Нецифровые символы здесь недопустимы."
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "Это значение не может быть составлено только из цифр."
-
-#: core/validators.py:120 newforms/fields.py:128
-msgid "Enter a whole number."
-msgstr "Введите целое число."
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "Здесь разрешены только алфавитные символы."
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr "Год должен быть больше или равен 1900"
-
-#: core/validators.py:143
-msgid "Invalid date: %s"
-msgstr "неправильная дата: %s"
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-msgstr "Введите правильное время в формате HH:MM."
-
-#: core/validators.py:162 newforms/fields.py:273
-msgid "Enter a valid e-mail address."
-msgstr "Укажите правильный адрес электронной почты."
-
-#: core/validators.py:178
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Загрузите реальное изображение. Файл, который вы загрузили, не является "
-"изображением или был поврежден."
-
-#: core/validators.py:185
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s не указывает на реальное изображение."
-
-#: core/validators.py:189
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Телефонные номера должен быть в формате XXX-XXX-XXXX. \"%s\" неверен."
-
-#: core/validators.py:197
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s не указывает на реальное видео QuickTime."
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "Правильный URL обязателен."
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Правильный HTML обязателен. Специфичные ошибки:\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Неверный формат XML: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Неверный URL: %s"
-
-#: core/validators.py:244 core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s - сломанная ссылка."
-
-#: core/validators.py:252
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Введите правильную аббревиатуру штата США."
-
-#: core/validators.py:266
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Следите за своими словами! Слово %s здесь запрещено."
-msgstr[1] "Следите за своими словами! Слова %s здесь запрещены."
-msgstr[2] "Следите за своими словами! Слова %s здесь запрещены."
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Это поле должно совпадать с полем '%s'."
-
-#: core/validators.py:292
-msgid "Please enter something for at least one field."
-msgstr "Пожалуйста, заполните хотя бы одно поле."
-
-#: core/validators.py:301 core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "Пожалуйста, заполните оба поля или оставьте их оба пустыми."
-
-#: core/validators.py:320
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Это поле должно быть заполнено, если %(field)s равно %(value)s"
-
-#: core/validators.py:333
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Это поле должно быть заполнено, если %(field)s не равно %(value)s"
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "Двойные значения запрещены."
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Это значение должно быть больше %(lower)s и меньше %(upper)s."
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Это значение должно быть не меньше %s."
-
-#: core/validators.py:371
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Это значение не должно быть больше %s."
-
-#: core/validators.py:407
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Это значение должно быть степенью %s."
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "Пожалуйста, введите корректное десятичное число."
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-"Пожалуйста, введите корректное десятичное число максимально с %s знаком."
-msgstr[1] ""
-"Пожалуйста, введите корректное десятичное число максимально с %s знаками."
-msgstr[2] ""
-"Пожалуйста, введите корректное десятичное число максимально с %s знаками."
-
-#: core/validators.py:425
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Пожалуйста, введите корректное десятичное число с целой частью из  %s знака."
-msgstr[1] ""
-"Пожалуйста, введите корректное десятичное число с целой частью из %s знаков."
-msgstr[2] ""
-"Пожалуйста, введите корректное десятичное число с целой частью из %s знаков."
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Пожалуйста, введите корректное десятичное число максимально с %s знаком "
-"после запятой."
-msgstr[1] ""
-"Пожалуйста, введите корректное десятичное число максимально с %s знаками "
-"после запятой."
-msgstr[2] ""
-"Пожалуйста, введите корректное десятичное число максимально с %s знаками "
-"после запятой."
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Убедитесь, что загруженный файл не меньше %s байт."
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Убедитесь, что загруженный файл не больше %s байт."
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "Формат этого поля неверен."
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "Это поле неверно."
-
-#: core/validators.py:507
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Невозможно получить ничего с %s."
-
-#: core/validators.py:510
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s вернул неверный заголовок Content-Type '%(contenttype)s'."
-
-#: core/validators.py:543
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Пожалуйста, закройте незакрытый тэг %(tag)s на строке %(line)s. (Строка "
-"начинается с \"%(start)s\".)"
-
-#: core/validators.py:547
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Что-то из текста, начинающегося на строке %(line)s, недопустимо в том "
-"контексте. (Строка начинается с \"%(start)s\".)"
-
-#: core/validators.py:552
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" на строке %(line)s - неправильный атрибут. (Строка начинается с "
-"\"%(start)s\".)"
-
-#: core/validators.py:557
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" на строке %(line)s - неправильный тег. (Строка начинается с \"%"
-"(start)s\".)"
-
-#: core/validators.py:561
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"В теге на строке %(line)s не хватает одного или более обязательных "
-"атрибутов. (Строка начинается с \"%(start)s\".)"
-
-#: core/validators.py:566
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Атрибут \"%(attr)s\" на строке %(line)s имеет недопустимое значение. (Строка "
-"начинается с \"%(start)s\".)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Объект %(verbose_name)s был успешно создан."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Объект %(verbose_name)s был успешно изменен."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Объект %(verbose_name)s был успешно удален."
-
-#: newforms/models.py:165 newforms/fields.py:366
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Выберите корректный вариант. Вашего варианта нет среди допустимых"
-
-#: newforms/models.py:182 newforms/fields.py:382 newforms/fields.py:458
-msgid "Enter a list of values."
-msgstr "Укажите список занчений."
-
-#: newforms/models.py:188 newforms/fields.py:391
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Выберите корректный вариант.  %s нет среди допустимых значений."
-
-#: newforms/fields.py:103 newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "Убедитесь, что значение содержит менее %d символов."
-
-#: newforms/fields.py:105 newforms/fields.py:260
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "Убедитесь, что значение содержит более %d символов."
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Убедитесь что это значение меньше или равно %s."
-
-#: newforms/fields.py:132
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Убедитесь что это значение больше или равно %s"
-
-#: newforms/fields.py:166
-msgid "Enter a valid date."
-msgstr "Укажите дату  правильно."
-
-#: newforms/fields.py:194
-msgid "Enter a valid time."
-msgstr "Укажите время  правильно."
-
-#: newforms/fields.py:230
-msgid "Enter a valid date/time."
-msgstr "Укажите дату и время  правильно."
-
-#: newforms/fields.py:244
-msgid "Enter a valid value."
-msgstr "Укажите значение правильно"
-
-#: newforms/fields.py:291 newforms/fields.py:313
-msgid "Enter a valid URL."
-msgstr "Укажите правильный URL"
-
-#: newforms/fields.py:315
-msgid "This URL appears to be a broken link."
-msgstr "Этот URL похоже сломанная ссылка."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f миллион"
-msgstr[1] "%(value).1f миллиона"
-msgstr[2] "%(value).1f миллионов"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f миллиард"
-msgstr[1] "%(value).1f миллиарда"
-msgstr[2] "%(value).1f миллиардов"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f триллион"
-msgstr[1] "%(value).1f триллиона"
-msgstr[2] "%(value).1f триллионов"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "один"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "два"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "три"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "четыре"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "пять"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "шесть"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "семь"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "восемь"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "девять"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "Перенаправить от"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Это должен быть абсолютный путь без доменного имени. Пример: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "Перенаправить на"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Это должен быть абсолютный путь (как выше) или полный URL, начинающийся с "
-"'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "Перенаправление"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "Перенаправления"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID объекта"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "Заголовок"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "Комментарий"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "рейтинг №1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "рейтинг №2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "рейтинг №3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "рейтинг №4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "рейтинг №5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "рейтинг №6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "рейтинг №7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "рейтинг №8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "Допустимый рейтинг"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "Дата/время добавления"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "Публичный"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP-адрес"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "Удален"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Отметьте, если комментарий нежелателен. Сообщение \"Этот комментарий был "
-"удалён\" будет показано взамен."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "Комментарии"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Объект содержимого"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Добавил %(user)s %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "Имя человека"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "IP-адрес:"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "Одобрено администрацией"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "Свободный комментарий"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "Свободные комментарии"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "Счёт"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "Время счёта"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "Кармический счёт"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "Кармические счета"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d рейтинг пользователя %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Этот комментарий был отмечен пользователем %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "Дата отметки"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "Отметка пользователя"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "Отметки пользователя"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Отмечен %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "Дата удаления"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "Удаление модератором"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "Удаления модератором"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Удаления модератора %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Анонимный пользователь не может голосовать"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Неверный ID комментария"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Нельзя голосовать за себя"
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-"Этот рейтинг обязателен, так как вы уже ввели как минимум еще один рейтинг."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Этот комментарий сделан пользователем, который отправил меньше %(count)s "
-"комментария:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Этот комментарий сделан пользователем, который отправил меньше %(count)s "
-"комментариев:\n"
-"\n"
-"%(text)s"
-msgstr[2] ""
-"Этот комментарий сделан пользователем, который отправил меньше %(count)s "
-"комментариев:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Коментарий был добавлен недоверенным пользователем:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Разрешены только POSTы"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Одно или больше обязательных полей не были заполнены"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Кто-то вмешался в форму комментария (нарушение безопасности)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Форма комментария имела неверный параметр 'target' -- ID объекта неверен"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Форма комментария не предоставила ни 'предпросмотр', ни 'отправить'"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Имя пользователя:"
-
-#: contrib/comments/templates/comments/freeform.html:5
-#: contrib/comments/templates/comments/form.html:28
-msgid "Comment:"
-msgstr "Комментарий:"
-
-#: contrib/comments/templates/comments/freeform.html:10
-#: contrib/comments/templates/comments/form.html:35
-msgid "Preview comment"
-msgstr "Предпросмотр комментария"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Имя:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Выход"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Пароль:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Забыли свой пароль?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Рейтинги"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Обязательное"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Необязательное"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Добавить фотографию"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "Доменное имя"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "Выводимое имя"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "Сайт"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "Сайты"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>По %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Все"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "За любую дату"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Сегодня"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Последние 7 дней"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "В этом месяце"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "В этом году"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "Время действия"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id обьекта"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "Представление обьекта"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "Отметка действия"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "Изменить сообщение"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "Журнальная запись"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "Журнальные записи"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "Все даты"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Пожалуйста, введите верные имя пользователя и пароль. Помните, оба поля "
-"чувствительны к регистру."
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Вход"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Пожалуйста, войдите снова, поскольку ваша сессия устарела. Не беспокойтесь: "
-"введенные вами данные сохранены."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Похоже, ваш броузер не настроен на прием cookies. Пожалуйства, включите "
-"cookie, перезагрузите страницу и попытайтесь снова."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Имя пользователя не может включать символ '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Ваш адрес электронной почты не является вашим именем пользователя. "
-"Попробуйте '%s' взамен."
-
-#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" был успешно добавлен."
-
-#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "Ниже можно снова редактировать его"
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Добавить пользователя"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Пароль успешно обновлен"
-
-#: contrib/admin/views/auth.py:64
-msgid "Change password: %s"
-msgstr "Изменение пароля: %s"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Администрирование сайта"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Вы можете добавить %s внизу."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "Добавить %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "Добавлен %s."
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "Изменен %s."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "Удален %s."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Ни одно поле не изменено."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" был успешно изменен."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" был успешно добавлен. Ниже можно снова редактировать "
-"его."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "Изменить %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Один или более  %(fieldname)s в %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Один или более %(fieldname)s в %(name)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" был успешно удален."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Вы уверены?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "История изменений: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "Выберите %s"
-
-#: contrib/admin/views/main.py:573
-msgid "Select %s to change"
-msgstr "Выберите %s для изменения"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Ошибка базы данных"
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "Тэг:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "Фильтр:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "Приложение %r не найдено"
-
-#: contrib/admin/views/doc.py:171
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Модель %(name) не найдена в приложении %(label)r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "зависимый `%(label)s.%(type)s` объект"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "модель:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "зависимые `%(label)s.%(name)s` объекты"
-
-#: contrib/admin/views/doc.py:219
-msgid "all %s"
-msgstr "все %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "количество %s"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Поля для %s объектов"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "Целое"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Логическое (True или False)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Строка (до %(maxlength)s символов)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Целые, разделенные запятыми"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Дата (без указания времени)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Дата (с указанием времени)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "Адрес электронной почты"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "Путь к файлу"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Десятичное число"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Логическое (True, False или None)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Связь с родительской моделью"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Номер телефона"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Текст"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "Время"
-
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "Штат США (две заглавные буквы)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "Текст XML"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не похож на объект urlpattern"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Современно:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Изменить:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Дата:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Время:"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Документация"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Изменение пароля"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Начало"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "История"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Дата/время"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Пользователь"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Действие"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j N Y H:i"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Данный обьект не имеет истории изменений. Возможно, он был добавлен не через "
-"данный административный сайт."
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Добавить %(name)s"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " По %(filter_title)s "
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Ошибка сервера"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Ошибка сервера (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Ошибка сервера <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Произошла ошибка. Отчет об ошибке отправлен администраторам сайта по "
-"электронной почте, ошибка должна быть вскоре исправлена. Благодарим вас на "
-"терпение и помощь."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Неправильно настроена ваша даза данных. Убедитесь в том что соответсвующие  "
-"таблицы базы данных были созданы, а также в что что база данных читаема для "
-"соответсвующим пользователем."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Вперёд"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 результат"
-msgstr[1] "%(counter)s результата"
-msgstr[2] "%(counter)s результатов"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s всего"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Показать всё"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Административный сайт Django"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Администрирование Django"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Фильтр"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Страница не найдена"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "К сожалению, запрашиваемая вами страница не найдена."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Модели доступны в приложении %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Добавить"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Изменить"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Недостаточно прав для редактирования."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Последние действия"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Мои действия"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Недоступно"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Смотреть сайт"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Пожалуйста, исправьте ошибку ниже."
-msgstr[1] "Пожалуйста, исправьте ошибки ниже."
-msgstr[2] "Пожалуйста, исправьте ошибки ниже."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Очерёдность"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Порядок:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Добро пожаловать,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Удалить"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#,  python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Удаление %(object_name)s '%(escaped_object)s' приведет к удалению  "
-"связанных объектов, но ваша учетная запись не имеет прав для удаления "
-"следующих типов объектов:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#,  python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Вы уверены, что хотите удалить %(object_name)s \"%(escaped_object)s\"? Все следующие "
-"связанные объекты также будут удалены:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Да, я уверен"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Сохранить как новое"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Сохранить и добавить другое"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Сохранить и продолжить редактирование"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Сохранить"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Введите новый пароль для пользователя <strong>%(username)s</strong>"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Пароль"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Пароль (еще раз)"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Введите тот же пароль что и сверху, для верификации"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Сначала введите имя пользователя и пароль. Затем вы сможете "
-"редактировать больше опций"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Имя"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Изменение пароля"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Пароль успешно обновлен"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Ваш пароль был изменен."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Сброс пароля"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Забыли пароль? Введите свой адрес электронной почты ниже, мы очистим ваш "
-"старый пароль и вышлем вам по e-mail новый."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Адрес электронной почты:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Очистка пароля"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Благодарим за проведенное вами сегодня время на этом сайте."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Повторный вход"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Успешная очистка пароля"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Мы отправили новый пароль по указанному вами адресу электронной почты. "
-"Вскоре вы его получите."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"В целях безопасности, пожалуйста, введите свой старый пароль, затем - новый "
-"пароль дважды, с тем, чтобы мы могли убедиться в правильности написания."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Старый пароль:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Новый пароль:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Подтвердите пароль:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Изменение пароля"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Вы получили это сообщение, потому что была запрошена очистка пароля"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "Для вашей учетной записи на %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Ваш новый пароль: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Вы всегда можете изменить этот пароль, перейдя на страницу:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Ваше имя, на случай если вы его забыли:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Спасибо за посещение нашего сайта!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Команда сайта %(site_name)s"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Закладки"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Закладки документации"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Для установки закладок перетащите ссылку к себе на панель\n"
-"закладок или щелкните правой кнопкой мыши по ссылке и добавьте ее в "
-"закладки. Теперь у вас есть возможность\n"
-"выбрать закладку с любой страницы сайта. Обратите внимание: некоторые из "
-"этих\n"
-"закладок требуют, чтобы вы просматривали сайт с компьютера, определенного\n"
-"как \"внутренний\" (уточните у своего системного администратора, если не "
-"уверены, является ли\n"
-"ваш компьютер \"внутренним\").</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Документация по данной странице"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Перенаправляет вас с любой страницы к документации view, который генерирует "
-"эту страницу."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Показать ID обьекта"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Показывает тип наполнения и уникальный ID для страниц, представляющих один "
-"объект."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Редактировать данный обьект (в текущем окне)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Перейдет на административную страницу для страниц, представляющих один "
-"объект."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Редактировать данный обьект (в новом окне)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "То же что и выше, но откроет административную страницу в новом окне."
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "имя класса python модуля"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "Тип содержимого"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "Типы содержимого"
-
-#: contrib/auth/views.py:40
-msgid "Logged out"
-msgstr "Не авторизован"
-
-#: contrib/auth/models.py:44 contrib/auth/models.py:64
-msgid "name"
-msgstr "Имя"
-
-#: contrib/auth/models.py:46
-msgid "codename"
-msgstr "Кодовое название"
-
-#: contrib/auth/models.py:49
-msgid "permission"
-msgstr "Право"
-
-#: contrib/auth/models.py:50 contrib/auth/models.py:65
-msgid "permissions"
-msgstr "Права"
-
-#: contrib/auth/models.py:68
-msgid "group"
-msgstr "Группа"
-
-#: contrib/auth/models.py:69 contrib/auth/models.py:109
-msgid "groups"
-msgstr "Группы"
-
-#: contrib/auth/models.py:99
-msgid "username"
-msgstr "Имя пользователя"
-
-#: contrib/auth/models.py:99
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Необходимое поле. 30  символов или менее. Используйте только цифры, буквы "
-"и нижнее подчеркивание."
-
-#: contrib/auth/models.py:100
-msgid "first name"
-msgstr "Имя"
-
-#: contrib/auth/models.py:101
-msgid "last name"
-msgstr "Фамилия"
-
-#: contrib/auth/models.py:102
-msgid "e-mail address"
-msgstr "Адрес электронной почты"
-
-#: contrib/auth/models.py:103
-msgid "password"
-msgstr "Пароль"
-
-#: contrib/auth/models.py:103
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Используйте '[algo]$[salt]$[hexdigest]' или <a href=\"password/\">change "
-"форма смены пароля</a>."
-
-#: contrib/auth/models.py:104
-msgid "staff status"
-msgstr "Статус персонала"
-
-#: contrib/auth/models.py:104
-msgid "Designates whether the user can log into this admin site."
-msgstr "Отметьте, если пользователь может входить в админ. часть сайта."
-
-#: contrib/auth/models.py:105
-msgid "active"
-msgstr "Активный"
-
-#: contrib/auth/models.py:105
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Отметьте, если пользователь может входить в админ. часть сайта. Убирайте эту "
-"отметку вместо удаления аккаунта."
-
-#: contrib/auth/models.py:106
-msgid "superuser status"
-msgstr "Статус суперпользователя"
-
-#: contrib/auth/models.py:106
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Указывает, что пользователь имеет все права без явного их назначения"
-
-#: contrib/auth/models.py:107
-msgid "last login"
-msgstr "Последний вход"
-
-#: contrib/auth/models.py:108
-msgid "date joined"
-msgstr "Дата регистрации"
-
-#: contrib/auth/models.py:110
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"В добавление к правам, присвоенным вручную, этот пользователь получит все "
-"права групп, к которым он принадлежит."
-
-#: contrib/auth/models.py:111
-msgid "user permissions"
-msgstr "права пользователя"
-
-#: contrib/auth/models.py:115
-msgid "user"
-msgstr "Пользователь"
-
-#: contrib/auth/models.py:116
-msgid "users"
-msgstr "Пользователи"
-
-#: contrib/auth/models.py:122
-msgid "Personal info"
-msgstr "Персональная информация"
-
-#: contrib/auth/models.py:123
-msgid "Permissions"
-msgstr "Права"
-
-#: contrib/auth/models.py:124
-msgid "Important dates"
-msgstr "Важные даты"
-
-#: contrib/auth/models.py:125
-msgid "Groups"
-msgstr "Группы"
-
-#: contrib/auth/models.py:269
-msgid "message"
-msgstr "Сообщение"
-
-#: contrib/auth/models.py:282
-msgid "AnonymousUser"
-msgstr "Анонимный пользователь"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Два поля с паролями не соответствуют"
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Пользователь с этим именем уже существует."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr "У вашего браузера не включены cookies. Cookies необходимы для входа."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Это учетная запись не активна"
-
-#: contrib/auth/forms.py:85
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Этот адрес электронной почты не связан ни с одной учетной записью. Вы уверены "
-"что вы зарегистрированы?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Два поля 'Новый пароль' не одинаковы."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ваш старый пароль введен неправильно. пожалуйста введите правильно."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "Укажите почтовый код. Необходим пробел между двумя частями почтового кода"
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Введите Zip код в формате XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Телефонные номера должен быть в формате XX-XXXX-XXXX. "
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "Это поле требует только числа."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Это поле требует 11 цифр или 14 символов."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr "неправильный CPF номер"
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "Это поле требует не меньше 14 цифр."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr "Неправильный CNPJ номер."
-
-#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Укажите zip код в формате XXXXX."
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Укажите почтовый код в формате XXXXXXX или XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Хоккаидо"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Аомори"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Иватэ"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Мияги"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Акита"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Ямагата"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Фукушима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ибакари"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Точиги"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Гунма"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Сайтама"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Чиба"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Токио"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Канагава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Яманаши"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Нагано"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Ниигата"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Тояма"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ишикава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Фукуй"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Гифу"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Шизуока"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Айчи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Ми"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Шига"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Киото"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Осака"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Хиого"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Нара"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Вакаяма"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Тоттори"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Шимане"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Окаяма"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Хиросима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Ямагучи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Токушима"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Кагава"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ехиме"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Кочи"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Фукуока"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Сага"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Нагасаки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Миязаки"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Кагосима"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Окинава"
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Укажите 4 цифровой почтовый код."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-#, fuzzy
-msgid "Berlin"
-msgstr "Бразильский"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-#, fuzzy
-msgid "Hamburg"
-msgstr "авг"
-
-#: contrib/localflavor/de/de_states.py:11
-#, fuzzy
-msgid "Hessen"
-msgstr "Сообщение"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Укажите правильный zip код"
-
-#: contrib/localflavor/it/forms.py:41
-#, fuzzy
-msgid "Enter a valid Social Security number."
-msgstr "Укажите правильное имя файла."
-
-#: contrib/localflavor/it/forms.py:68
-#, fuzzy
-msgid "Enter a valid VAT number."
-msgstr "Укажите правильное имя файла."
-
-#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18
-#, fuzzy
-msgid "Enter a zip code in the format XXXX."
-msgstr "Введите правильное время в формате HH:MM."
-
-#: contrib/localflavor/no/forms.py:36
-#, fuzzy
-msgid "Enter a valid Norwegian social security number."
-msgstr "Пожалуйста, введите корректное десятичное число."
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-#, fuzzy
-msgid "Enter a valid Finnish social security number."
-msgstr "Укажите правильное имя файла."
-
-#: contrib/localflavor/is_/forms.py:16
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Укажите правильный исландский идентификатор. Формат XXXXXX-XXXX"
-
-#: contrib/localflavor/is_/forms.py:30
-msgid "The Icelandic identification number is not valid."
-msgstr "Исландский идентификационный номер не правилен"
-
-#: contrib/localflavor/cl/forms.py:21
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:26
-#, fuzzy
-msgid "Enter valid a Chilean RUT"
-msgstr "Укажите правильное имя файла."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-#, fuzzy
-msgid "Berne"
-msgstr "Имя пользователя"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-#, fuzzy
-msgid "Glarus"
-msgstr "Группы"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-#, fuzzy
-msgid "Lucerne"
-msgstr "Имя пользователя"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-#, fuzzy
-msgid "Thurgau"
-msgstr "Четверг"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-#, fuzzy
-msgid "Zug"
-msgstr "авг"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:90
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "Ключ сессии"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "Данные сессии"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "Дата окончания"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "Сессия"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "Сессии"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Пример: '/about/contact/'. Убедитесь что вставили завершающий слэш."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "Заголовок"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "Содержимое"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "Активировать комментарии"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "Имя шаблона"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Пример: 'flatpages/contact_page'. Если этот файл не присутствует, система "
-"будет использовать 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "Регистрация обязательна"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Если отмечено, только вошедшие пользователи смогут видеть страницу."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "Простая страница"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "Простые страницы"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Понедельник"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Вторник"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Среда"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Четверг"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Пятница"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Суббота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Воскресенье"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Январь"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Февраль"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Сентябрь"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Октябрь"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Ноябрь"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Декабрь"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "янв"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "фев"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "мар"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "апр"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "май"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "июнь"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "июль"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "авг"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "сен"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "окт"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "нояб"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "дек"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "янв."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "фев."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "авг."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "сен."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "окт."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "нояб."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "дек."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "год"
-msgstr[1] "года"
-msgstr[2] "лет"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "месяц"
-msgstr[1] "месяца"
-msgstr[2] "месяцев"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "неделя"
-msgstr[1] "недели"
-msgstr[2] "недель"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "день"
-msgstr[1] "дня"
-msgstr[2] "дней"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "час"
-msgstr[1] "часа"
-msgstr[2] "часов"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "минута"
-msgstr[1] "минуты"
-msgstr[2] "минут"
-
-#: utils/timesince.py:40
-#, python-format
-msgid "%d milliseconds"
-msgstr "%d милисекунд"
-
-#: utils/timesince.py:41
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr ""
-
-#: utils/timesince.py:47
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ""
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "полночь"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "полдень"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "d.m.Y"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "d.m.Y H:i"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "d.m.Y"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr "d.m.Y"
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "да,нет,может быть"
-
-#: template/defaultfilters.py:520
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-msgstr[1] "%(size)d байта"
-msgstr[2] "%(size)d байт"
-
-#: template/defaultfilters.py:522
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f Кб"
-
-#: template/defaultfilters.py:524
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f Мб"
-
-#: template/defaultfilters.py:525
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f Гб"
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "Вы <a href=\"/password_reset/\">забыли пароль</a>?"
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Используйте '[algo]$[salt]$[hexdigest]'"
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Подтверждение пароля"
diff --git a/webapp/django/conf/locale/ru/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ru/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index a57a57e..0000000
--- a/webapp/django/conf/locale/ru/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ru/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ru/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 2e032c2..0000000
--- a/webapp/django/conf/locale/ru/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,111 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-03-01 17:11+0300\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Доступные %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Выбрать все"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Добавить"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Удалить"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Выбранные %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Выберите и нажмите "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Очистить всё"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь "
-"Декабрь"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "В П В С Ч П С"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Сейчас"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Часы"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Выберите время"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Полночь"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6 часов"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Полдень"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "Отмена"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Сегодня"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Календарь"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Вчера"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Завтра"
diff --git a/webapp/django/conf/locale/sk/LC_MESSAGES/django.mo b/webapp/django/conf/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index b52cb26..0000000
--- a/webapp/django/conf/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sk/LC_MESSAGES/django.po b/webapp/django/conf/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 1e5bf89..0000000
--- a/webapp/django/conf/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,3385 +0,0 @@
-# translation of django.po to Slovak
-#
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-24 09:56-0400\n"
-"PO-Revision-Date: 2007-06-22 20:54-0400\n"
-"Last-Translator: Vlado <vlado@labath.org>\n"
-"Language-Team: Slovak <sk@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: oldforms/__init__.py:369 db/models/fields/__init__.py:152
-#: db/models/fields/__init__.py:309 db/models/fields/__init__.py:706
-#: db/models/fields/__init__.py:717 newforms/models.py:187
-#: newforms/fields.py:92 newforms/fields.py:440 newforms/fields.py:516
-#: newforms/fields.py:527
-msgid "This field is required."
-msgstr "Toto pole je povinné."
-
-#: oldforms/__init__.py:404
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Uisite sa, že text je kratší ako %s znak."
-msgstr[1] "Uisite sa, že text je kratší ako %s znakov."
-
-#: oldforms/__init__.py:409
-msgid "Line breaks are not allowed here."
-msgstr "Zalomenia riadkov nie sú povolené."
-
-#: oldforms/__init__.py:507 oldforms/__init__.py:581 oldforms/__init__.py:620
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Vyberte platnú možnosť; '%(data)s' nie je v %(choices)s."
-
-#: oldforms/__init__.py:587 newforms/widgets.py:181
-#: contrib/admin/filterspecs.py:152
-msgid "Unknown"
-msgstr "Neznámy"
-
-#: oldforms/__init__.py:587 newforms/widgets.py:181
-#: contrib/admin/filterspecs.py:145
-msgid "Yes"
-msgstr "Áno"
-
-#: oldforms/__init__.py:587 newforms/widgets.py:181
-#: contrib/admin/filterspecs.py:145
-msgid "No"
-msgstr "Nie"
-
-#: oldforms/__init__.py:682 core/validators.py:181 core/validators.py:461
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Súbor nebol odoslaný. Skontrolujte atribút 'enctype' encoding vo formulári."
-
-#: oldforms/__init__.py:684
-msgid "The submitted file is empty."
-msgstr "Odoslaný súbor je prázdný."
-
-#: oldforms/__init__.py:740
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Zadajte celé číslo s hodnotou medzi -32768 a 32767."
-
-#: oldforms/__init__.py:750
-msgid "Enter a positive number."
-msgstr "Zadajte celé kladné číslo."
-
-#: oldforms/__init__.py:760
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Zadajte celé číslo s hodnotou medzi 0 a 32767."
-
-#: db/models/manipulators.py:309
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s s %(type)s už existuje pre prvok  %(field)s."
-
-#: db/models/manipulators.py:310 contrib/admin/views/main.py:342
-#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346
-msgid "and"
-msgstr "a"
-
-#: db/models/fields/__init__.py:48
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s s %(fieldname)s už existuje."
-
-#: db/models/fields/__init__.py:404
-msgid "This value must be an integer."
-msgstr "Táto hodnota musí byť celé číslo."
-
-#: db/models/fields/__init__.py:439
-msgid "This value must be either True or False."
-msgstr "Táto hodnota musí byť True alebo False."
-
-#: db/models/fields/__init__.py:460
-msgid "This field cannot be null."
-msgstr "Toto pole nemôže obsahovať null."
-
-#: db/models/fields/__init__.py:494 core/validators.py:155
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Zadajte platný dátum vo formáte RRRR-MM-DD."
-
-#: db/models/fields/__init__.py:563 core/validators.py:164
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Zadajte platný dátum a čas vo formáte RRRR-MM-DD HH:MM."
-
-#: db/models/fields/__init__.py:623
-msgid "This value must be a decimal number."
-msgstr "Táto hodnota musí byť desiatkove číslo."
-
-#: db/models/fields/__init__.py:726
-msgid "Enter a valid filename."
-msgstr "Zadajte platný názov súboru."
-
-#: db/models/fields/__init__.py:851
-msgid "This value must be either None, True or False."
-msgstr "Táto hodnota musí byť buď None, True alebo False."
-
-#: db/models/fields/related.py:55
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Prosím, zadajte platné %s."
-
-#: db/models/fields/related.py:661
-msgid "Separate multiple IDs with commas."
-msgstr "Oddeľte viacnásobné ID čiarkami."
-
-#: db/models/fields/related.py:663
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Ak chcete vybrať viacero možností, podržte \"Control\" alebo \"Command\" na "
-"Mac-u."
-
-#: db/models/fields/related.py:710
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Prosím, vložte platné %(self)s ID. Hodnota %(value)r je neplatná."
-msgstr[1] ""
-"Prosím, vložte platné %(self)s ID-čka. Hodnoty %(value)r sú neplatné."
-
-#: conf/global_settings.py:38
-msgid "Arabic"
-msgstr "Arabsky"
-
-#: conf/global_settings.py:39
-msgid "Bengali"
-msgstr "Bengálsky"
-
-#: conf/global_settings.py:40
-msgid "Bulgarian"
-msgstr "Bulharský"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "Katalánsky"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "Česky"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "Welšsky"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "Dánsky"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "Nemecky"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "Grécky"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "Anglicky"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "Španielsky"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "Argentínska španielčina"
-
-#: conf/global_settings.py:50
-msgid "Persian"
-msgstr "Perzský"
-
-#: conf/global_settings.py:51
-msgid "Finnish"
-msgstr "Fínsky"
-
-#: conf/global_settings.py:52
-msgid "French"
-msgstr "Francúzsky"
-
-#: conf/global_settings.py:53
-msgid "Galician"
-msgstr "Galicijsky"
-
-#: conf/global_settings.py:54
-msgid "Hungarian"
-msgstr "Maďarsky"
-
-#: conf/global_settings.py:55
-msgid "Hebrew"
-msgstr "Hebrejsky"
-
-#: conf/global_settings.py:56
-msgid "Icelandic"
-msgstr "Islandsky"
-
-#: conf/global_settings.py:57
-msgid "Italian"
-msgstr "Taliansky"
-
-#: conf/global_settings.py:58
-msgid "Japanese"
-msgstr "Japonsky"
-
-#: conf/global_settings.py:59
-msgid "Korean"
-msgstr "Korejský"
-
-#: conf/global_settings.py:60
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:61
-msgid "Latvian"
-msgstr "Lotyšsky"
-
-#: conf/global_settings.py:62
-msgid "Macedonian"
-msgstr "Mecedónsky"
-
-#: conf/global_settings.py:63
-msgid "Dutch"
-msgstr "Holandsky"
-
-#: conf/global_settings.py:64
-msgid "Norwegian"
-msgstr "Nórsky"
-
-#: conf/global_settings.py:65
-msgid "Polish"
-msgstr "Poľsky"
-
-#: conf/global_settings.py:66
-msgid "Portugese"
-msgstr "Portugalsky"
-
-#: conf/global_settings.py:67
-msgid "Brazilian"
-msgstr "Brazílsky"
-
-#: conf/global_settings.py:68
-msgid "Romanian"
-msgstr "Rumunsky"
-
-#: conf/global_settings.py:69
-msgid "Russian"
-msgstr "Rusky"
-
-#: conf/global_settings.py:70
-msgid "Slovak"
-msgstr "Slovensky"
-
-#: conf/global_settings.py:71
-msgid "Slovenian"
-msgstr "Slovinsky"
-
-#: conf/global_settings.py:72
-msgid "Serbian"
-msgstr "Srbsky"
-
-#: conf/global_settings.py:73
-msgid "Swedish"
-msgstr "Švédsky"
-
-#: conf/global_settings.py:74
-msgid "Tamil"
-msgstr "Tamilsky"
-
-#: conf/global_settings.py:75
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:76
-msgid "Turkish"
-msgstr "Turecky"
-
-#: conf/global_settings.py:77
-msgid "Ukrainian"
-msgstr "Ukrajinsky"
-
-#: conf/global_settings.py:78
-msgid "Simplified Chinese"
-msgstr "Čínsky (zjednodušene)"
-
-#: conf/global_settings.py:79
-msgid "Traditional Chinese"
-msgstr "Čínsky (tradične)"
-
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Táto hodnota môže obsahovať len písmená, číslice a podčiarkovníky."
-
-#: core/validators.py:75
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Táto hodnota môže obsahovať len písmena, číslice, podčiarkovniky, pomlčky a "
-"lomítka."
-
-#: core/validators.py:79
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Táto hodnota môže obsahovať len písmená, číslice, počiarkovníky a pomlčky."
-
-#: core/validators.py:83
-msgid "Uppercase letters are not allowed here."
-msgstr "Veľké písmená nie sú povolené."
-
-#: core/validators.py:87
-msgid "Lowercase letters are not allowed here."
-msgstr "Malé písmena nie sú povolené."
-
-#: core/validators.py:94
-msgid "Enter only digits separated by commas."
-msgstr "Zadávajte len číslice oddelené čiarkami."
-
-#: core/validators.py:106
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Zadajte platné e-mailové adresy oddelené čiarkami."
-
-#: core/validators.py:110
-msgid "Please enter a valid IP address."
-msgstr "Prosím, zadajte platnú IP adresu."
-
-#: core/validators.py:114
-msgid "Empty values are not allowed here."
-msgstr "Prázdne hodnoty tu nie sú povolené."
-
-#: core/validators.py:118
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Iné ako numerické znaky tu nie sú povolené."
-
-#: core/validators.py:122
-msgid "This value can't be comprised solely of digits."
-msgstr "Táto hodnota nemôže byť čisto numerická."
-
-#: core/validators.py:127 newforms/fields.py:141
-msgid "Enter a whole number."
-msgstr "Zadajte celé číslo."
-
-#: core/validators.py:131
-msgid "Only alphabetical characters are allowed here."
-msgstr "Tu sú povolené len alfanumerické znaky."
-
-#: core/validators.py:146
-msgid "Year must be 1900 or later."
-msgstr "Rok musí byť 1900 alebo neskôr."
-
-#: core/validators.py:150
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Neplatný dátum: %s"
-
-#: core/validators.py:160
-msgid "Enter a valid time in HH:MM format."
-msgstr "Zadajte platný čas vo formáte HH:MM."
-
-#: core/validators.py:169 newforms/fields.py:335
-msgid "Enter a valid e-mail address."
-msgstr "Zadajte platnú e-mailovú adresu."
-
-#: core/validators.py:185
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Nahrajte platný obrázok. Súbor, ktorý ste odoslali nebol obrázkový formát "
-"alebo bol poškodený."
-
-#: core/validators.py:192
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s neodkazuje na platný obrázok."
-
-#: core/validators.py:196
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefónne číslo musí mať formát XXX-XXX-XXXX. Číslo \"%s\" je neplatné."
-
-#: core/validators.py:204
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s neodkazuje na platné QuickTime video."
-
-#: core/validators.py:208
-msgid "A valid URL is required."
-msgstr "Je požadovaná platná adresa URL."
-
-#: core/validators.py:222
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"HTML kód musí zodpovedať špecifikácii. Zistené chyby sú:\n"
-"%s"
-
-#: core/validators.py:229
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Chybné XML nezodpovedajúce definícii: %s"
-
-#: core/validators.py:246
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Neplatná adresa URL: %s"
-
-#: core/validators.py:251 core/validators.py:253
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "Odkaz na URL %s je neplatný."
-
-#: core/validators.py:259
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Zadajte platnú skratku štátu USA."
-
-#: core/validators.py:273
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Vyjadrujte sa slušne! Slovo %s tu nie je dovolené použivať."
-msgstr[1] "Vyjadrujte sa slušne! Slová %s tu nie je dovolené použivať."
-
-#: core/validators.py:280
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Toto pole sa musí zhodovať s poľom '%s'. "
-
-#: core/validators.py:299
-msgid "Please enter something for at least one field."
-msgstr "Prosím, vyplňte aspoň jedno pole."
-
-#: core/validators.py:308 core/validators.py:319
-msgid "Please enter both fields or leave them both empty."
-msgstr "Prosím, vyplňte buď obidve polia, alebo ich nechajte prázdne."
-
-#: core/validators.py:327
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Toto pole musí byť vyplnené ak, %(field)s je %(value)s"
-
-#: core/validators.py:340
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Toto pole musí byť vyplnené, ak %(field)s nie je %(value)s"
-
-#: core/validators.py:359
-msgid "Duplicate values are not allowed."
-msgstr "Duplicitné hodnoty nie sú povolené."
-
-#: core/validators.py:374
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Táto hodnota musí byť medzi %(lower)s a %(upper)s."
-
-#: core/validators.py:376
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Táto hodnota musí byť prinajmenšom %s."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Táto hodnota musí byť väčšia ako %s."
-
-#: core/validators.py:414
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Táto hodnota musí byť mocninou  %s."
-
-#: core/validators.py:424
-msgid "Please enter a valid decimal number."
-msgstr "Prosím, vložte platné desatinné číslo. "
-
-#: core/validators.py:431
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Prosím, vložte platné desatinné číslo. "
-msgstr[1] "Prosím, vložte platné desatinné čísla. "
-
-#: core/validators.py:434
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Prosím vlož platné desatinné číslo s najviac %s číslicou. "
-msgstr[1] "Prosím vlož platné desatinné číslo s najviac %s číslicami."
-
-#: core/validators.py:437
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Prosím, vložte platné desatinné číslo s najviac %s desatinným miestom. "
-msgstr[1] ""
-"Prosím, vložte platné desatinné číslo s najviac %s desatinnými miestamy. "
-
-#: core/validators.py:445
-msgid "Please enter a valid floating point number."
-msgstr "Prosím, vložte platné  číslo s pohyblivou desatinnou čiarkou. "
-
-#: core/validators.py:454
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Uistite sa, že posielaný súbor nemá menej ako %s bajtov."
-
-#: core/validators.py:455
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Uistite sa, že posielaný súbor nemá viac ako %s bajtov."
-
-#: core/validators.py:472
-msgid "The format for this field is wrong."
-msgstr "Formát pre toto pole je chybný."
-
-#: core/validators.py:487
-msgid "This field is invalid."
-msgstr "Toto pole nie je platné."
-
-#: core/validators.py:523
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Z %s nič neprišlo."
-
-#: core/validators.py:526
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"Adresa URL %(url)s vrátila v hlavičke neplatný Content-Type '%(contenttype)"
-"s'."
-
-#: core/validators.py:559
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Prosím, uzatvorte tag %(tag)s na riadku %(line)s. (Riadok začína s \"%(start)"
-"s\".)"
-
-#: core/validators.py:563
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Text začínajúci na riadku %(line)s nie je povolený v tomto kontexte. (Riadok "
-"začína s \"%(start)s\".)"
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" na riadku %(line)s je neplatný atribút. (Riadok začína s \"%"
-"(start)s\".)"
-
-#: core/validators.py:573
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" na riadku %(line)s je neplatný tag. (Riadok začína s \"%(start)"
-"s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"V tagu na riadku %(line)s chýba jeden alebo viac atribútov. (Riadok začína s "
-"\"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Atribút \"%(attr)s\" na riadku %(line)s má neplatnú hodnotu. (Riadok začína "
-"s \"%(start)s\".)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "Objekt %(verbose_name)s bol úspešne vytvorený."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "Objekt %(verbose_name)s bol úspešne zmenený."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "Objekt %(verbose_name)s bol zmazaný."
-
-#: newforms/models.py:174 newforms/fields.py:428
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Vyberte platnú možnosť. Vybraná položka nepatrí medzi platné možnosti."
-
-#: newforms/models.py:191 newforms/fields.py:444 newforms/fields.py:520
-msgid "Enter a list of values."
-msgstr "Vložte zoznam hodnôt."
-
-#: newforms/models.py:197 newforms/fields.py:450
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Vyberte platnú možnost. %s nepatrí medzi dostupné možnosti."
-
-#: newforms/fields.py:116
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Uistite sa, že hodnota má najviac %d znakov( teraz má %(length)d)."
-
-#: newforms/fields.py:118
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Uistite sa, že zadaná hodnota nemá menej ako %d znakov ( teraz má %(length)d)."
-
-#: newforms/fields.py:143 newforms/fields.py:166 newforms/fields.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Uistite sa, že táto hodnota je menšia alebo rovná %s."
-
-#: newforms/fields.py:145 newforms/fields.py:168 newforms/fields.py:198
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Uistite sa, že hodnota je väčšia alebo rovná %s."
-
-#: newforms/fields.py:164 newforms/fields.py:191
-msgid "Enter a number."
-msgstr "Zadajte číslo."
-
-#: newforms/fields.py:200
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Zabezpečte aby výraz nemal  celkom viac ako %s číslic ."
-
-#: newforms/fields.py:202
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Zabezpečte aby nebolo viac ako %s desatinných miest."
-
-#: newforms/fields.py:204
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Zabezpečte aby nebolo viac ako %s číslic pred desatinnou bodkou."
-
-#: newforms/fields.py:237 newforms/fields.py:560
-msgid "Enter a valid date."
-msgstr "Zadajte platný dátum."
-
-#: newforms/fields.py:264 newforms/fields.py:562
-msgid "Enter a valid time."
-msgstr "Zadajte platný čas."
-
-#: newforms/fields.py:300
-msgid "Enter a valid date/time."
-msgstr "Zadajte platný dátum a čas."
-
-#: newforms/fields.py:313
-msgid "Enter a valid value."
-msgstr "Zadajte platnú hodnotu."
-
-#: newforms/fields.py:353 newforms/fields.py:375
-msgid "Enter a valid URL."
-msgstr "Zadajte platnú adresu URL."
-
-#: newforms/fields.py:377
-msgid "This URL appears to be a broken link."
-msgstr "Odkaz na URL neexistuje."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr "st"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr "nd"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milión"
-msgstr[1] "%(value).1f milión"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliarda"
-msgstr[1] "%(value).1f miliarda"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilión"
-msgstr[1] "%(value).1f bilión"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "jeden"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "dva"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "tri"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "štyri"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "päť"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "šesť"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "sedem"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "osem"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "deväť"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "presmerovať z"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Tu by sa mala použiť absolútna cesta bez názvu domény. Napríklad: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "presmerovať na "
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Tu môže byť buď absolútna cesta (ako je uvedené vyššie) alebo úplná adresa "
-"URL začínajúca s 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "presmerovanie"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "presmerovania"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID objektu"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "nadpis"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "komentár"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "hodnotenie #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "hodnotenie #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "hodnotenie #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "hodnotenie #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "hodnotenie #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "hodnotenie #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "hodnotenie #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "hodnotenie #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "je platné hodnotenie"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "dátum a čas odoslania"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "je verejný"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:306
-msgid "IP address"
-msgstr "IP adresa"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "je vymazaný"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Zaškrtnite toto pole, ak je komentár nevhodný. Správa \"Tento komenár bol "
-"zmazaný\" sa bude zobrazovať namiesto neho."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "komentáre"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Obsah objektu"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Pridaný užívateľom %(user)s dňa %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "meno osoby"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip adresa"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "schválený  zamestnancom"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "voľný komentár"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "voľné komentáre"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "stav skóre"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "dátum stavu skóre"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "karma"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "karma"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d od hodnotiteľa %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Tento komentár bol označený užívateľom  %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "označený dátum"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "uživateľský príznak"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "užívateľské príznaky"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr " %r návestie"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "dátum zmazania"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "zmazania moderátorom"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "Zmazané moderátorom"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Zmazanané moderátorom %r"
-
-#: contrib/comments/views/karma.py:20
-msgid "Anonymous users cannot vote"
-msgstr "Hlasovať môžu len prihlásení užívatelia"
-
-#: contrib/comments/views/karma.py:24
-msgid "Invalid comment ID"
-msgstr "Chybné ID komentára"
-
-#: contrib/comments/views/karma.py:26
-msgid "No voting for yourself"
-msgstr "Nemôžete hlasovať za samého seba"
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Toto hlasovanie je nevyhnutné, lebo súvisí s predchádzjúcou voľbou."
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Tento komentár je od užívateľa, ktorý  poslal menej ako  %(count)s "
-"príspevok\n"
-"%(text)s"
-msgstr[1] ""
-"Tento komentár je od užívateľa, ktorý poslal menej ako  %(count)s "
-"príspevkov .\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Tento komentár je od užívateľa, ktorý sa rád vyjadruje v náznakoch:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:281
-msgid "Only POSTs are allowed"
-msgstr "Dovolené sú len POST"
-
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:285
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Jedno alebo viac povinných polí nebolo vložených"
-
-#: contrib/comments/views/comments.py:197
-#: contrib/comments/views/comments.py:287
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Niekto sa pokúšal manipulovať s formulárom komentára (porušenie bezpečnosti)"
-
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:293
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Formulár komentára ma chybný 'target' parameter  -- ID objektu je neplatné"
-
-#: contrib/comments/views/comments.py:258
-#: contrib/comments/views/comments.py:322
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-"Formulár komentára neobsahuje ani jednu z možností 'náhľad' alebo 'odoslať'."
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Tvoje meno:"
-
-#: contrib/comments/templates/comments/freeform.html:5
-#: contrib/comments/templates/comments/form.html:28
-msgid "Comment:"
-msgstr "Komentár:"
-
-#: contrib/comments/templates/comments/freeform.html:10
-#: contrib/comments/templates/comments/form.html:35
-msgid "Preview comment"
-msgstr "Náhľad komentára"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Meno:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Odhlásenie"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Heslo:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Zabudli ste heslo?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Hodnotenia"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Požadované"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Nepovinné"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Pošli foto"
-
-#: contrib/sites/models.py:15
-msgid "domain name"
-msgstr "názov domény"
-
-#: contrib/sites/models.py:16
-msgid "display name"
-msgstr "zobrazené meno"
-
-#: contrib/sites/models.py:20
-msgid "site"
-msgstr "web"
-
-#: contrib/sites/models.py:21
-msgid "sites"
-msgstr "weby"
-
-#: contrib/admin/filterspecs.py:42
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Od %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:72 contrib/admin/filterspecs.py:90
-#: contrib/admin/filterspecs.py:145 contrib/admin/filterspecs.py:171
-msgid "All"
-msgstr "Všetko"
-
-#: contrib/admin/filterspecs.py:111
-msgid "Any date"
-msgstr "Lubovoľný  dátum"
-
-#: contrib/admin/filterspecs.py:112
-msgid "Today"
-msgstr "Dnes"
-
-#: contrib/admin/filterspecs.py:115
-msgid "Past 7 days"
-msgstr "Posledných 7 dní"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This month"
-msgstr "Tento mesiac"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This year"
-msgstr "Tento rok"
-
-#: contrib/admin/models.py:17
-msgid "action time"
-msgstr "čas udalosti"
-
-#: contrib/admin/models.py:20
-msgid "object id"
-msgstr "id objektu"
-
-#: contrib/admin/models.py:21
-msgid "object repr"
-msgstr "objekt repr"
-
-#: contrib/admin/models.py:22
-msgid "action flag"
-msgstr "príznak udalosti"
-
-#: contrib/admin/models.py:23
-msgid "change message"
-msgstr "zmeniť zprávu"
-
-#: contrib/admin/models.py:26
-msgid "log entry"
-msgstr "záznam priebehu"
-
-#: contrib/admin/models.py:27
-msgid "log entries"
-msgstr "záznamy priebehu"
-
-#: contrib/admin/templatetags/admin_list.py:254
-msgid "All dates"
-msgstr "Všetky dátumy"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Prosím, zadajte užívateľské meno a heslo. Rešpektujte  malé a veľké písmená."
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Prihlásenie"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Vaša session vypršala. Prosím, príhlaste sa znovu. Nemusíte sa obávať, vaše "
-"údaje boli uchované."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Vyzerá to tak, že váš prehliadač nemá povolené cookies. Prosím, povoľte si "
-"cookies a skúste znova načítať stránku."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Užívateľské meno nemože obsahovať znak '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Vaša e-mailová adresa nie je užívateľským menom. Skúste použiť meno '%s'."
-
-#: contrib/admin/views/auth.py:20 contrib/admin/views/main.py:264
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Objekt  %(name)s \"%(obj)s\" bol úspešne pridaný."
-
-#: contrib/admin/views/auth.py:25 contrib/admin/views/main.py:268
-#: contrib/admin/views/main.py:354
-msgid "You may edit it again below."
-msgstr "Môžete pokračovať v zmenách."
-
-#: contrib/admin/views/auth.py:31
-msgid "Add user"
-msgstr "Pridať užívateľa"
-
-#: contrib/admin/views/auth.py:58
-msgid "Password changed successfully."
-msgstr "Heslo bolo úspešne zmenené."
-
-#: contrib/admin/views/auth.py:65
-#, python-format
-msgid "Change password: %s"
-msgstr "Zmeniť heslo: %s"
-
-#: contrib/admin/views/main.py:230
-msgid "Site administration"
-msgstr "Administrácia"
-
-#: contrib/admin/views/main.py:278 contrib/admin/views/main.py:363
-#, python-format
-msgid "You may add another %s below."
-msgstr "Môžete pokračovať v pridávaní ďaľších %s."
-
-#: contrib/admin/views/main.py:296
-#, python-format
-msgid "Add %s"
-msgstr "Pridaj %s"
-
-#: contrib/admin/views/main.py:342
-#, python-format
-msgid "Added %s."
-msgstr "Bol pridaný %s."
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Changed %s."
-msgstr "Bol zmenený %s"
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "Deleted %s."
-msgstr "Bol vymazaný %s."
-
-#: contrib/admin/views/main.py:349
-msgid "No fields changed."
-msgstr "Polia neboli zmenené."
-
-#: contrib/admin/views/main.py:352
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Objekt %(name)s \"%(obj)s\" boli úspešne zmenený."
-
-#: contrib/admin/views/main.py:360
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Objekt %(name)s \"%(obj)s\" bol úspešne zmenený. Ďalšie zmeny môžeš urobiť "
-"zase nižšie."
-
-#: contrib/admin/views/main.py:398
-#, python-format
-msgid "Change %s"
-msgstr "Zmeniť %s"
-
-#: contrib/admin/views/main.py:483
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Jeden alebo viac %(fieldname)s v %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:488
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Jeden alebo viac %(fieldname)s v %(name)s:"
-
-#: contrib/admin/views/main.py:520
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne vymazaný."
-
-#: contrib/admin/views/main.py:523
-msgid "Are you sure?"
-msgstr "Ste si istý?"
-
-#: contrib/admin/views/main.py:545
-#, python-format
-msgid "Change history: %s"
-msgstr "Zmeniť históriu: %s"
-
-#: contrib/admin/views/main.py:579
-#, python-format
-msgid "Select %s"
-msgstr "Výber %s"
-
-#: contrib/admin/views/main.py:579
-#, python-format
-msgid "Select %s to change"
-msgstr "Ktorý %s sa má zmeniť?"
-
-#: contrib/admin/views/main.py:780
-msgid "Database error"
-msgstr "Chyba databázy"
-
-#: contrib/admin/views/doc.py:47 contrib/admin/views/doc.py:49
-#: contrib/admin/views/doc.py:51
-msgid "tag:"
-msgstr "označovač:"
-
-#: contrib/admin/views/doc.py:78 contrib/admin/views/doc.py:80
-#: contrib/admin/views/doc.py:82
-msgid "filter:"
-msgstr ""
-
-#: contrib/admin/views/doc.py:136 contrib/admin/views/doc.py:138
-#: contrib/admin/views/doc.py:140
-msgid "view:"
-msgstr "prehľad:"
-
-#: contrib/admin/views/doc.py:165
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikáciu %r sa nepodarilo nájsť."
-
-#: contrib/admin/views/doc.py:172
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Model %(name)r sa nenachádza v aplikácii %(label)r"
-
-#: contrib/admin/views/doc.py:184
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "Prepojenie na objekt `%(label)s.%(type)s`"
-
-#: contrib/admin/views/doc.py:184 contrib/admin/views/doc.py:206
-#: contrib/admin/views/doc.py:220 contrib/admin/views/doc.py:225
-msgid "model:"
-msgstr ""
-
-#: contrib/admin/views/doc.py:215
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "súvisiace objekty `%(label)s.%(name)s`"
-
-#: contrib/admin/views/doc.py:220
-#, python-format
-msgid "all %s"
-msgstr "všetky %s"
-
-#: contrib/admin/views/doc.py:225
-#, python-format
-msgid "number of %s"
-msgstr "počet %s"
-
-#: contrib/admin/views/doc.py:230
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Polia objektu %s"
-
-#: contrib/admin/views/doc.py:292 contrib/admin/views/doc.py:303
-#: contrib/admin/views/doc.py:305 contrib/admin/views/doc.py:311
-#: contrib/admin/views/doc.py:312 contrib/admin/views/doc.py:314
-msgid "Integer"
-msgstr "Celé číslo"
-
-#: contrib/admin/views/doc.py:293
-msgid "Boolean (Either True or False)"
-msgstr "Logická hodnota (True alebo False)"
-
-#: contrib/admin/views/doc.py:294 contrib/admin/views/doc.py:313
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Dĺžka reťazca (maximálne do %(maxlength)s znakov)"
-
-#: contrib/admin/views/doc.py:295
-msgid "Comma-separated integers"
-msgstr "Celé čísla oddelené čiarkou"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (without time)"
-msgstr "Dátum (bez času)"
-
-#: contrib/admin/views/doc.py:297
-msgid "Date (with time)"
-msgstr "Dátum (a čas)"
-
-#: contrib/admin/views/doc.py:298
-msgid "Decimal number"
-msgstr "Desatinné číslo"
-
-#: contrib/admin/views/doc.py:299
-msgid "E-mail address"
-msgstr "E-mailová adresa"
-
-#: contrib/admin/views/doc.py:300 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:304
-msgid "File path"
-msgstr "Cesta k súboru"
-
-#: contrib/admin/views/doc.py:302
-msgid "Floating point number"
-msgstr "Císlo s pohyblivou čiarkou"
-
-#: contrib/admin/views/doc.py:308
-msgid "Boolean (Either True, False or None)"
-msgstr "Logická hodnota (True, False alebo None)"
-
-#: contrib/admin/views/doc.py:309
-msgid "Relation to parent model"
-msgstr "Má vzťah k nadradenému modelu"
-
-#: contrib/admin/views/doc.py:310
-msgid "Phone number"
-msgstr "Číslo telefónu"
-
-#: contrib/admin/views/doc.py:315
-msgid "Text"
-msgstr "Text"
-
-#: contrib/admin/views/doc.py:316
-msgid "Time"
-msgstr "Čas"
-
-#: contrib/admin/views/doc.py:317 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:318
-msgid "U.S. state (two uppercase letters)"
-msgstr "Štát USA (dve veľké písmena)"
-
-#: contrib/admin/views/doc.py:319
-msgid "XML text"
-msgstr "XML text"
-
-#: contrib/admin/views/doc.py:345
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nie je urlpattern objekt"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Aktuálne:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Zmeniť:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Dátum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Čas:"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentácia"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Zmeniť heslo"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Začiatok"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "História"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Dátum a čas"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Uživateľ"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Udalosť"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "DATE_WITH_TIME_FULL"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Tento object nemá históriu vykonaných zmien. Možno nebol pridaný "
-"prostredníctvom tohoto administračného rozhrania."
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Pridať %(name)s"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Podľa %(filter_title)s "
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Chyba servera"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Chyba servera (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Chyba servera <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Vznikla neočakávaná chyba. Prostredníctvom e-mailu bol o nej informovaný "
-"správca a dá sa predpokladať, že bude v krátkej dobe odstránená. Ďakujeme za "
-"pochopenie."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"S inštaláciou alebo nastavením vašej databázy nie je niečo v poriadku. "
-"Uistite sa, že ste vytvorili potrebné databázové tabuľky. Taktiež "
-"skontrolujte, či má systémový užívateľ, pod ktorým beží aplikácia, právo na "
-"prístup k databáze a čítanie súborov databázy."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Choď"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 výsledok"
-msgstr[1] "%(counter)s výsledkov"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s spolu"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Zobraziť všetky"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administrácia"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administrácia Django"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Stránka nebola nájdená"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ľutujeme, ale požadovaná stránka nebola nájdená."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modely dostupné v aplikácii %(name)s."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Pridať"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Zmeniť"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Nemáte právo na vykonávanie zmien."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Posledné udalosti"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Moje udalosti"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Nedostupné"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Pozrieť na stránke"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Prosím, opravte chybu uvedenú nižšie."
-msgstr[1] "Prosím, opravte chyby uvedené nižšie."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Radenie"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Poradie:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Vitajte,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Vymazať"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Zmazanie objektu %(object_name)s '%(escaped_object)s' by spôsobilo zmazanie "
-"súvisiacich objektov, avšak vaše užívateľské práva vám neumožňujú zmazať "
-"nasledujúce typy objektov:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ste si istý, že chcete zmazať objekt %(object_name)s \"%(escaped_object)s\"? "
-"Zmazané budú aj všetky tieto súvisiace objekty:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Áno, som si istý"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Uložiť ako nový"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Uložiť a pridať ďaľší"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Uložiť a pokračovať v zmenách"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Uložiť"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Zadajte nové heslo pre užívateľa <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Heslo"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Heslo (potvrdiť)"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Znova zadajte heslo kvôli overeniu."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Najskôr zadajte užívateľské meno a heslo. Neskôr budete môcť upraviť ostatné "
-"užívateľské nastavnia."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Užívateľské meno"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Zmena heslo"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Heslo bolo úspešne zmenené"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Vaše heslo bolo zmenené."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Obnovenie hesla"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Zabudli ste svoje heslo? Zadajte svoju e-mailovú adresu, na ktorú vám bude "
-"zaslané nové heslo."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mailová adresa:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Obnova môjho hesla"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Ďakujeme vám, za čas strávený na našich stránkach."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Prihlásiť sa znovu"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Heslo bolo úspešne obnovené"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Bolo vám zaslané nové heslo na uvedenú adresu. Mali by ste ho obdržať v "
-"najbližšej dobe."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Z bezpečnostných dôvodov zadajte najskôr staré heslo a potom dva krát nové "
-"heslo, tak aby sa mohlo overiť, či nevznikol preklep."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Staré heslo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Nové heslo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Potvrdenie hesla:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Zmeň svoje heslo"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Dostali ste túto správu, lebo ste si vyžiadali obnovu hesla."
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "pre váš užívateľský účet na %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Vaše nové heslo je: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Heslo si kľudne môžete zmeniť na tejto stránke:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše užívateľské meno, pre prípad, že ste zabudli:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Ďakujeme vám, že využívate služby našej stránky!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Tím %(site_name)s"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Záložky"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dokumentácia záložiek"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Ak chete nainštalovať záložky, pretiahnite linku do vášho "
-"panela so záložkami\n"
-"alebo kliknite pravým tlačidlom myši na linku a pridajte ju do svojich "
-"záložiek.\n"
-"Následne môžete záložky použiť na stránkach. Všimnite si, že použitie "
-"niektorých záložiek vyžaduje, aby bol váš počítač pridaný do zoznamu "
-"INTERNAL_IPS. Ak nie ste si istý, že ste v tomto zozname, oslovte vášho "
-"administrátora.</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Dokumentácia k tejto stránke"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Skočte z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa táto "
-"stránka generuje."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Zobraziť ID objektu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "Zobrazuje content-type a ID stránok, ktoré reprezentujú jediný objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Editácia tohoto objektu (v aktuálnom okne)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Skočiť na stránku admina, ktorá reprezentuje tento jeden objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Editácia tohoto objektu (v novom okne)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "To isté ako predtým, akurát otvorí administračnú stránku v novom okne."
-
-#: contrib/contenttypes/models.py:37
-msgid "python model class name"
-msgstr "pythonové meno triedy modelu"
-
-#: contrib/contenttypes/models.py:40
-msgid "content type"
-msgstr "typ obsahu"
-
-#: contrib/contenttypes/models.py:41
-msgid "content types"
-msgstr "typy obsahu"
-
-#: contrib/auth/views.py:41
-msgid "Logged out"
-msgstr "Odhlásený"
-
-#: contrib/auth/models.py:51 contrib/auth/models.py:71
-msgid "name"
-msgstr "meno"
-
-#: contrib/auth/models.py:53
-msgid "codename"
-msgstr "codename"
-
-#: contrib/auth/models.py:56
-msgid "permission"
-msgstr "povolenie"
-
-#: contrib/auth/models.py:57 contrib/auth/models.py:72
-msgid "permissions"
-msgstr "práva"
-
-#: contrib/auth/models.py:75
-msgid "group"
-msgstr "skupina"
-
-#: contrib/auth/models.py:76 contrib/auth/models.py:116
-msgid "groups"
-msgstr "skupiny"
-
-#: contrib/auth/models.py:106
-msgid "username"
-msgstr "užívateľské meno"
-
-#: contrib/auth/models.py:106
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Povinná položka s dĺžkou 30 znakov alebo menej. Povolené sú len "
-"alfanumerické znaky (písmená, čísla a podtržník)."
-
-#: contrib/auth/models.py:107
-msgid "first name"
-msgstr "krstné meno"
-
-#: contrib/auth/models.py:108
-msgid "last name"
-msgstr "priezvisko"
-
-#: contrib/auth/models.py:109
-msgid "e-mail address"
-msgstr "e-mailová adresa"
-
-#: contrib/auth/models.py:110
-msgid "password"
-msgstr "heslo"
-
-#: contrib/auth/models.py:110
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Použite '[algo]$[salt]$[hexdigest]' alebo <a href=\"password/\">formulár na "
-"zmenu hesla</a>."
-
-#: contrib/auth/models.py:111
-msgid "staff status"
-msgstr "zamestnanec"
-
-#: contrib/auth/models.py:111
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Určuje, či má užívateľ oprávnenie prihlásiť sa do administračnej časti."
-
-#: contrib/auth/models.py:112
-msgid "active"
-msgstr "aktívny"
-
-#: contrib/auth/models.py:112
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Určuje, či je účet aktívny. Odškrtnite, ak chcete deaktivovať užívateľský "
-"účet."
-
-#: contrib/auth/models.py:113
-msgid "superuser status"
-msgstr "superužívateľ"
-
-#: contrib/auth/models.py:113
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Určuje, či užívateľ získava automaticky všetky práva aj bez priameho "
-"priradenia."
-
-#: contrib/auth/models.py:114
-msgid "last login"
-msgstr "naposledy prihlásený"
-
-#: contrib/auth/models.py:115
-msgid "date joined"
-msgstr "dátum registrácie"
-
-#: contrib/auth/models.py:117
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Okrem ručne zadaných práv bude mať užívateľ aj všetky práva prislúchajúce "
-"skupinám, v ktorých sa nachádza."
-
-#: contrib/auth/models.py:118
-msgid "user permissions"
-msgstr "užívateľské práva"
-
-#: contrib/auth/models.py:122
-msgid "user"
-msgstr "uživateľ"
-
-#: contrib/auth/models.py:123
-msgid "users"
-msgstr "užívatelia"
-
-#: contrib/auth/models.py:129
-msgid "Personal info"
-msgstr "Osobné údaje"
-
-#: contrib/auth/models.py:130
-msgid "Permissions"
-msgstr "Práva"
-
-#: contrib/auth/models.py:131
-msgid "Important dates"
-msgstr "Dôležité dátumy"
-
-#: contrib/auth/models.py:132
-msgid "Groups"
-msgstr "Skupiny"
-
-#: contrib/auth/models.py:274
-msgid "message"
-msgstr "správa"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Pole hesla a jeho potvrdenie sa nezhodujú."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Užívateľ s týmto užívateľským menom už existuje."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Váš prehliadač nemá povolené cookies. Cookies sú potrebné pre úspešné "
-"prihlásenie."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Účet je deaktivovaný."
-
-#: contrib/auth/forms.py:84
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"K danej e-mailovej adrese neexistuje užívateľský účet. Ste si istý, že ste "
-"sa zaregistrovali?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Pole nového hesla a jeho potvrdenie sa nezhodujú."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaše staré heslo nebolo zadané správne. Prosím, zadajte heslo znova."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr ""
-"Zadajte britský poštový kód (PSČ). Medzera medzi dvomi časťami kódu je "
-"povinná."
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Vložte poštové smerovacie číslo v tvare XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefónne číslo musí mať formát XX-XXXX-XXXX. "
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "Toto pole je môže obsahovať len čísla."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Toto pole môže mať najviac 11 čisiel  alebo 14 písmen."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr "Chybné CPF číslo."
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "Toto pole vyžaduje minimale 14 číslic."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr "Chybné CNJP číslo."
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Vložte 4 čísla poštového smerovacieho čísla."
-
-#: contrib/localflavor/fr/forms.py:17 contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Vložte poštové smerovacie číslo v tvare XXXXX."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Zadajte americký poštový kód (ZIP) vo formáte XXXXX alebo XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Vložte platné U.S. číslo sociálneho poistenia vo formáte XXX-XX-XXXX."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavórsko"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlín"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:60
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Zadajte poštové smerovacie číslo v tvare XXXXXXX alebo XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:18 contrib/localflavor/no/forms.py:14
-msgid "Enter a zip code in the format XXXX."
-msgstr "Vložte poštové smerovacie číslo v tvare XXXX."
-
-#: contrib/localflavor/ch/forms.py:90
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Zadajte platné Islanské číslo v tvare XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:31
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Zadajte platné poštové smerovacie číslo."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Vložte platné číslo sociálneho poistenia ."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Zadajte platné VAT číslo."
-
-#: contrib/localflavor/no/forms.py:35
-msgid "Enter a valid Norwegian social security number."
-msgstr ""
-"Vložte platné nórske číslo sociálneho poistenia (social security number)."
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/forms.py:32
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Zadajte poštové smerovacie číslo v tvare XXXXX alebo XXX-XX."
-
-#: contrib/localflavor/cl/forms.py:32
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:37
-msgid "Enter valid a Chilean RUT"
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr ""
-"Vložte platné fínske číslo sociálneho poistenia (social security number)."
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "kľúč session"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "údaje session"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "dátum vypršania platnosti"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "session"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "sessions"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Príklad: '/about/contact/'. Uistite sa, že adresa obsahuje na začiatku a na "
-"konci.lomítka."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "názov"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "obsah"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "povoliť komentáre"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "názov šablóny"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Príklad: 'flatpages/contact_page'. Ak táto šablóna neexistuje, systém "
-"použije  'flatpages/default'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "je vyžadovaná registrácia"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ak je zaškrtnuté, tak sa stránka zobrazí len prihlásenému užívateľovi."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "statická stránka"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "statické stránky"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Pondelok"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Utorok"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Streda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Štvrtok"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Piatok"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Nedeľa"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Január"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Február"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Marec"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "Apríl"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Máj"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Jún"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Júl"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Október"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "December"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "máj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jún"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "júl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "rok"
-msgstr[1] "roky"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mesiac"
-msgstr[1] "mesiacov"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "týždeň"
-msgstr[1] "týždňov"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "deň"
-msgstr[1] "dni"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hodina"
-msgstr[1] "hodín"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minúta"
-msgstr[1] "minúty"
-
-#: utils/timesince.py:39
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr ""
-
-#: utils/timesince.py:45
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ""
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "polnoc"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "poludnie"
-
-#: utils/translation/trans_real.py:391
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:392
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:393
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:409
-msgid "YEAR_MONTH_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:410
-msgid "MONTH_DAY_FORMAT"
-msgstr ""
-
-#: template/defaultfilters.py:485
-msgid "yes,no,maybe"
-msgstr "áno,nie,možno"
-
-#: template/defaultfilters.py:514
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:516
-#, python-format
-msgid "%.1f KB"
-msgstr ""
-
-#: template/defaultfilters.py:518
-#, python-format
-msgid "%.1f MB"
-msgstr ""
-
-#: template/defaultfilters.py:519
-#, python-format
-msgid "%.1f GB"
-msgstr ""
-
-#~ msgid "AnonymousUser"
-#~ msgstr "Neregistrovaný užívateľ"
diff --git a/webapp/django/conf/locale/sk/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/sk/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 0682827..0000000
--- a/webapp/django/conf/locale/sk/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sk/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/sk/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d65ac78..0000000
--- a/webapp/django/conf/locale/sk/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,116 +0,0 @@
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-04-01 19:21+0200\n"
-"PO-Revision-Date: 2007-04-03 21:48+0200\n"
-"Last-Translator:  <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Možný %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Vybrať všetko"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Pridať"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Vymazať"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Vybrané %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Vyberte položku a kliknite"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Odstrániť vybrané"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Január Február Marec Apríl Máj Jún Júl August September Október November "
-"December"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Nedeľa Pondelok Utorok Streda Štvrtok Piatok Sobota"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "N P U S Š P S"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Zobraziť"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Skryť"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Práve teraz"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Hodiny"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Vybrať čas"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Polnoc"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 ráno"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Poludnie"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Zrušiť"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Dnes"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalendár"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Včera"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Zajtra"
-
diff --git a/webapp/django/conf/locale/sl/LC_MESSAGES/django.mo b/webapp/django/conf/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index e7865e4..0000000
--- a/webapp/django/conf/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sl/LC_MESSAGES/django.po b/webapp/django/conf/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 2796ddb..0000000
--- a/webapp/django/conf/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2967 +0,0 @@
-# translation of django.po to Slovenian
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-02 13:55+0200\n"
-"PO-Revision-Date: 2007-07-02 14:47+0100\n"
-"Last-Translator: Gasper Koren <skrat@owca.info>\n"
-"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.2\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s s tem %(type)s že obstaja za dane %(field)s."
-
-#: db/models/manipulators.py:308
-#: contrib/admin/views/main.py:340
-#: contrib/admin/views/main.py:342
-#: contrib/admin/views/main.py:344
-msgid "and"
-msgstr "in"
-
-#: db/models/fields/related.py:54
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Prosimo, vnesite veljaven %s."
-
-#: db/models/fields/related.py:640
-msgid "Separate multiple IDs with commas."
-msgstr "Več ID-jev ločite z vejicami."
-
-#: db/models/fields/related.py:642
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Držite \"Control\" (ali \"Command\" na Mac-u), za izbiro več kot enega."
-
-#: db/models/fields/related.py:689
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Prosimo, vnesite veljavne %(self)s ID-e. Vrednost %(value)r ni veljavna."
-msgstr[1] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r nista veljavni."
-msgstr[2] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r niso veljavne."
-msgstr[3] "Prosimo, vnesite veljavne %(self)s ID-je. Vrednosti %(value)r niso veljavne."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s s tem %(fieldname)s že obstaja."
-
-#: db/models/fields/__init__.py:126
-#: db/models/fields/__init__.py:283
-#: db/models/fields/__init__.py:680
-#: db/models/fields/__init__.py:691
-#: oldforms/__init__.py:357
-#: newforms/fields.py:87
-#: newforms/fields.py:444
-#: newforms/fields.py:523
-#: newforms/fields.py:534
-#: newforms/models.py:185
-msgid "This field is required."
-msgstr "To polje je obvezno"
-
-#: db/models/fields/__init__.py:378
-msgid "This value must be an integer."
-msgstr "Ta vrednost mora biti celo število."
-
-#: db/models/fields/__init__.py:413
-msgid "This value must be either True or False."
-msgstr "Ta vrednost mora biti \"True\" ali \"False\"."
-
-#: db/models/fields/__init__.py:434
-msgid "This field cannot be null."
-msgstr "To polje ne more biti prazno."
-
-#: db/models/fields/__init__.py:468
-#: core/validators.py:149
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Vnesite veljavni datum v zapisu YYYY-MM-DD (leto-mesec-dan)."
-
-#: db/models/fields/__init__.py:537
-#: core/validators.py:158
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Vnesite veljavni datum/čas v zapisu YYYY-MM-DD HH:MM (leto-mesec-dan ura:minuta)"
-
-#: db/models/fields/__init__.py:597
-msgid "This value must be a decimal number."
-msgstr "Ta vrednost mora biti decimalno število."
-
-#: db/models/fields/__init__.py:700
-msgid "Enter a valid filename."
-msgstr "Vnesite veljavno ime datoteke."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "Ta vrednost mora biti None, True ali False."
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arabščina"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengalski"
-
-#: conf/global_settings.py:41
-msgid "Bulgarian"
-msgstr "Bolgarščina"
-
-#: conf/global_settings.py:42
-msgid "Catalan"
-msgstr "Katalonščina"
-
-#: conf/global_settings.py:43
-msgid "Czech"
-msgstr "Češki"
-
-#: conf/global_settings.py:44
-msgid "Welsh"
-msgstr "Valežanski"
-
-#: conf/global_settings.py:45
-msgid "Danish"
-msgstr "Danski"
-
-#: conf/global_settings.py:46
-msgid "German"
-msgstr "Nemški"
-
-#: conf/global_settings.py:47
-msgid "Greek"
-msgstr "Grški"
-
-#: conf/global_settings.py:48
-msgid "English"
-msgstr "Angleški"
-
-#: conf/global_settings.py:49
-msgid "Spanish"
-msgstr "Španski"
-
-#: conf/global_settings.py:50
-msgid "Argentinean Spanish"
-msgstr "Španščina (Argentina)"
-
-#: conf/global_settings.py:51
-msgid "Persian"
-msgstr "Perzijščina"
-
-#: conf/global_settings.py:52
-msgid "Finnish"
-msgstr "Finščina"
-
-#: conf/global_settings.py:53
-msgid "French"
-msgstr "Francoski"
-
-#: conf/global_settings.py:54
-msgid "Galician"
-msgstr "Galičanski"
-
-#: conf/global_settings.py:55
-msgid "Hungarian"
-msgstr "Madžarski"
-
-#: conf/global_settings.py:56
-msgid "Hebrew"
-msgstr "Hebrejski"
-
-#: conf/global_settings.py:57
-msgid "Icelandic"
-msgstr "Islandski"
-
-#: conf/global_settings.py:58
-msgid "Italian"
-msgstr "Italijanski"
-
-#: conf/global_settings.py:59
-msgid "Japanese"
-msgstr "Japonski"
-
-#: conf/global_settings.py:60
-msgid "Korean"
-msgstr "Korejščina"
-
-#: conf/global_settings.py:61
-msgid "Kannada"
-msgstr "Kanareščina"
-
-#: conf/global_settings.py:62
-msgid "Latvian"
-msgstr "Latvijščina"
-
-#: conf/global_settings.py:63
-msgid "Macedonian"
-msgstr "Makedonščina"
-
-#: conf/global_settings.py:64
-msgid "Dutch"
-msgstr "Nizozemski"
-
-#: conf/global_settings.py:65
-msgid "Norwegian"
-msgstr "Norveški"
-
-#: conf/global_settings.py:66
-msgid "Polish"
-msgstr "Poljščina"
-
-#: conf/global_settings.py:67
-msgid "Portugese"
-msgstr "Portugalščina"
-
-#: conf/global_settings.py:68
-msgid "Brazilian"
-msgstr "Brazilski"
-
-#: conf/global_settings.py:69
-msgid "Romanian"
-msgstr "Romunski"
-
-#: conf/global_settings.py:70
-msgid "Russian"
-msgstr "Ruski"
-
-#: conf/global_settings.py:71
-msgid "Slovak"
-msgstr "Slovaški"
-
-#: conf/global_settings.py:72
-msgid "Slovenian"
-msgstr "Slovenski"
-
-#: conf/global_settings.py:73
-msgid "Serbian"
-msgstr "Srbski"
-
-#: conf/global_settings.py:74
-msgid "Swedish"
-msgstr "Švedski"
-
-#: conf/global_settings.py:75
-msgid "Tamil"
-msgstr "Tamilščina"
-
-#: conf/global_settings.py:76
-msgid "Telugu"
-msgstr "Teluščina"
-
-#: conf/global_settings.py:77
-msgid "Turkish"
-msgstr "Turščina"
-
-#: conf/global_settings.py:78
-msgid "Ukrainian"
-msgstr "Ukrajinski"
-
-#: conf/global_settings.py:79
-msgid "Simplified Chinese"
-msgstr "Poenostavljeni kitajski"
-
-#: conf/global_settings.py:80
-msgid "Traditional Chinese"
-msgstr "Tradicionalni kitajski"
-
-#: core/validators.py:65
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Ta vrednost mora vsebovati le črke, števila in podčrtaje (_)."
-
-#: core/validators.py:69
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Ta vrednost mora vsebovati le črke, števila, podčrtaje, poševnice ali pomišljaje."
-
-#: core/validators.py:73
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Ta vrednost mora vsebovati le črke, števila, podčrtaje ali pomišljaje."
-
-#: core/validators.py:77
-msgid "Uppercase letters are not allowed here."
-msgstr "Velike tiskane črke niso dovoljene."
-
-#: core/validators.py:81
-msgid "Lowercase letters are not allowed here."
-msgstr "Majhne tiskane črke niso dovoljene."
-
-#: core/validators.py:88
-msgid "Enter only digits separated by commas."
-msgstr "Vnesite samo števila, ločena z vejicami."
-
-#: core/validators.py:100
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Vnesite veljavne e-mail naslove, ločene z vejicami."
-
-#: core/validators.py:104
-msgid "Please enter a valid IP address."
-msgstr "Prosimo, vnesite veljavni IP naslov."
-
-#: core/validators.py:108
-msgid "Empty values are not allowed here."
-msgstr "Prazne vrednosti tu niso dovoljene."
-
-#: core/validators.py:112
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Nenumerični znaki tukaj niso dovoljne."
-
-#: core/validators.py:116
-msgid "This value can't be comprised solely of digits."
-msgstr "Ta vrednost ne sme vsebovati le števk."
-
-#: core/validators.py:121
-#: newforms/fields.py:135
-msgid "Enter a whole number."
-msgstr "Vnesite celo število."
-
-#: core/validators.py:125
-msgid "Only alphabetical characters are allowed here."
-msgstr "Tukaj so dovoljene samo črke."
-
-#: core/validators.py:140
-msgid "Year must be 1900 or later."
-msgstr "Leto mora biti 1900 ali kasnejše."
-
-#: core/validators.py:144
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Nepravilen datum: %s"
-
-#: core/validators.py:154
-msgid "Enter a valid time in HH:MM format."
-msgstr "Vnesite veljavni čas v zapisu HH:MM (ura:minuta)."
-
-#: core/validators.py:163
-#: newforms/fields.py:339
-msgid "Enter a valid e-mail address."
-msgstr "Vnesite veljaven e-mail."
-
-#: core/validators.py:175
-#: core/validators.py:453
-#: oldforms/__init__.py:672
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Datoteka ni bila poslana. Preveite nabor znakov v formi."
-
-#: core/validators.py:179
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Naložite veljavno sliko. Naložena datoteka ni bila slika ali pa je bila le-ta okvarjena."
-
-#: core/validators.py:186
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s ne kaže na veljavno sliko."
-
-#: core/validators.py:190
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefonska številka mora biti v zapisu XXX-XXX-XXXX. \"%s\" ni vredu."
-
-#: core/validators.py:198
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s ne kaže na veljavni QuickTime video."
-
-#: core/validators.py:202
-msgid "A valid URL is required."
-msgstr "Potreben je veljaven URL naslov."
-
-#: core/validators.py:216
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Potreben je veljaven HTML. Trenutni ima sledeče napake:\n"
-"%s"
-
-#: core/validators.py:223
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Nepravilen XML: %s"
-
-#: core/validators.py:240
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Neveljaven URL naslov: %s"
-
-#: core/validators.py:245
-#: core/validators.py:247
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL povezava %s ne deluje."
-
-#: core/validators.py:253
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Vnesi veljavno okrajšavo za ameriško zvezno državo."
-
-#: core/validators.py:267
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pazite na jezik! Beseda %s tu ni dovoljena."
-msgstr[1] "Pazite na jezik! Besedi %s tu nista dovoljeni."
-msgstr[2] "Pazite na jezik! Besede %s tu niso dovoljene."
-msgstr[3] "Pazite na jezik! Besede %s tu niso dovoljene."
-
-#: core/validators.py:274
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "To polje mora ustrezati polju '%s'."
-
-#: core/validators.py:293
-msgid "Please enter something for at least one field."
-msgstr "Prosim, vnesite nekaj v vsaj eno izmed polj."
-
-#: core/validators.py:302
-#: core/validators.py:313
-msgid "Please enter both fields or leave them both empty."
-msgstr "Prosimo, izpolnite obe polji ali pa pustite obe prazni."
-
-#: core/validators.py:321
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "To polje mora biti podano, če je %(field)s %(value)s"
-
-#: core/validators.py:334
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "To polje mora biti podano, če ni %(field)s %(value)s"
-
-#: core/validators.py:353
-msgid "Duplicate values are not allowed."
-msgstr "Podvojitve niso dovoljene."
-
-#: core/validators.py:368
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Ta vrednost mora biti med %(lower)s in %(upper)s."
-
-#: core/validators.py:370
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Ta vrednost mora biti vsaj %s."
-
-#: core/validators.py:372
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Ta vrednost mora biti manjša od %s."
-
-#: core/validators.py:408
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Ta vrednost mora biti potenca od %s."
-
-#: core/validators.py:417
-msgid "Please enter a valid decimal number."
-msgstr "Prosim vnesite veljavno decimalno število."
-
-#: core/validators.py:423
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Prosimo, vnesite veljavno decimalno število z največ %s števko."
-msgstr[1] "Prosimo, vnesite veljavno decimalno število z največ %s števkama."
-msgstr[2] "Prosimo, vnesite veljavno decimalno število z največ %s števkami."
-msgstr[3] "Prosimo, vnesite veljavno decimalno število z največ %s števkami."
-
-#: core/validators.py:426
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Prosimo, vnesite veljavno decimalno število s celim številom z največ %s števko."
-msgstr[1] "PProsimo, vnesite veljavno decimalno število s celim številom z največ %s števkama."
-msgstr[2] "Prosimo, vnesite veljavno decimalno število s celim številom z največ %s števkami."
-msgstr[3] "Prosimo, vnesite veljavno decimalno število s celim številom z največ %s števkami."
-
-#: core/validators.py:429
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnim mestom."
-msgstr[1] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnima mestoma."
-msgstr[2] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
-msgstr[3] "Prosimo, vnesite veljavno decimalno število z največ %s decimalnimi mesti."
-
-#: core/validators.py:437
-msgid "Please enter a valid floating point number."
-msgstr "Prosim vnesite veljavno decimalno število."
-
-#: core/validators.py:446
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Prosimo, poskrbite, da bo naložena datoteka velika vsaj %s bajtov."
-
-#: core/validators.py:447
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Poskrbite, da bo naložena datoteka velika največ %s bajtov."
-
-#: core/validators.py:464
-msgid "The format for this field is wrong."
-msgstr "Format za to polje je napačen."
-
-#: core/validators.py:479
-msgid "This field is invalid."
-msgstr "To polje ni veljavno."
-
-#: core/validators.py:515
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Iz %s nisem mogel pridobiti ničesar."
-
-#: core/validators.py:518
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s je vrnil neveljavni Content-Type '%(contenttype)s'."
-
-#: core/validators.py:551
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Prosimo, zaprite %(tag)s oznako v vrstici %(line)s. (Vrstica se začne z \"%(start)s\".)"
-
-#: core/validators.py:555
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Tekst z začetka vrstice %(line)s ni dovoljen v tem kontekstu. (Vrstica se začne z \"%(start)s\".)"
-
-#: core/validators.py:560
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "\"%(attr)s\" v vrstici %(line)s je neveljaven atribut. (Vrstica se začne z \"%(start)s\".)"
-
-#: core/validators.py:565
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "\"<%(tag)s>\" v vrstici %(line)s je neveljavna oznaka. (Vrstica se začne z \"%(start)s\".)"
-
-#: core/validators.py:569
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "Oznaki v vrstici %(line)s manjka eden ali več zahtevanih parametrov. (Vrstica se začne z \"%(start)s\".)"
-
-#: core/validators.py:574
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "Parameter \"%(attr)s\" v vrstici %(line)s vsebuje neveljavno vrednost. (Vrstica se začne z \"%(start)s\".)"
-
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "Gesli se ne ujemata."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Uporabnik s tem uporabniškim imenom že obstaja."
-
-#: contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Izgleda, da vaš brskalnik nima omogočenih piškotkov. Piškotki so potrebni za prijavo."
-
-#: contrib/auth/forms.py:60
-#: contrib/admin/views/decorators.py:10
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Prosimo, vnesite veljavno uporabniško ime in geslo. Opomba: obe polji upoštevata velikost črk."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Ta uporabniški račun ni aktiven."
-
-#: contrib/auth/forms.py:84
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Tega e-mail naslova ni mogoče pripisati nobenemu uporabniku. Ali ste prepričani, da ste registrirani?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "Vrednosti v poljih 'novo geslo' se ne ujemata."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaše staro geslo ni pravilno. Prosim, poskusite ponovno."
-
-#: contrib/auth/models.py:49
-#: contrib/auth/models.py:69
-msgid "name"
-msgstr "ime"
-
-#: contrib/auth/models.py:51
-msgid "codename"
-msgstr "kodno ime"
-
-#: contrib/auth/models.py:54
-msgid "permission"
-msgstr "dovoljenje"
-
-#: contrib/auth/models.py:55
-#: contrib/auth/models.py:70
-msgid "permissions"
-msgstr "dovoljenja"
-
-#: contrib/auth/models.py:73
-msgid "group"
-msgstr "skupina"
-
-#: contrib/auth/models.py:74
-#: contrib/auth/models.py:114
-msgid "groups"
-msgstr "skupine"
-
-#: contrib/auth/models.py:104
-msgid "username"
-msgstr "uporabniško ime"
-
-#: contrib/auth/models.py:104
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Zahtevano. 30 znakov ali manj. Samo alfanumerični znaki (črke, števke un opdčrtaji)."
-
-#: contrib/auth/models.py:105
-msgid "first name"
-msgstr "ime"
-
-#: contrib/auth/models.py:106
-msgid "last name"
-msgstr "priimek"
-
-#: contrib/auth/models.py:107
-msgid "e-mail address"
-msgstr "e-mail naslov"
-
-#: contrib/auth/models.py:108
-msgid "password"
-msgstr "geslo"
-
-#: contrib/auth/models.py:108
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Uporabite '[algo]$[salt]$[hexdigest]' ali <a href=\"password/\">obrazec za spremembo gesla</a>."
-
-#: contrib/auth/models.py:109
-msgid "staff status"
-msgstr "status osebja"
-
-#: contrib/auth/models.py:109
-msgid "Designates whether the user can log into this admin site."
-msgstr "Določi, če se sme uporabnik prijaviti v to administracijsko stran."
-
-#: contrib/auth/models.py:110
-msgid "active"
-msgstr "aktiven"
-
-#: contrib/auth/models.py:110
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "Določi, če se sme uporabnik prijaviti v Django admin. Odstranite to možnost namesto da brišete račune."
-
-#: contrib/auth/models.py:111
-msgid "superuser status"
-msgstr "status superuporabnika"
-
-#: contrib/auth/models.py:111
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Uporabnik bo imel vse pravice brez posamičnega dodeljevanja pravic."
-
-#: contrib/auth/models.py:112
-msgid "last login"
-msgstr "zadnja prijava"
-
-#: contrib/auth/models.py:113
-msgid "date joined"
-msgstr "član od"
-
-#: contrib/auth/models.py:115
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Poleg ročno določenih dovoljenj bo ta uporabnik dobil tudi vsa dovoljenja, ki pripadajo skupinam, katerih član je."
-
-#: contrib/auth/models.py:116
-msgid "user permissions"
-msgstr "uporabniška dovoljenja"
-
-#: contrib/auth/models.py:120
-msgid "user"
-msgstr "uporabnik"
-
-#: contrib/auth/models.py:121
-msgid "users"
-msgstr "uporabniki"
-
-#: contrib/auth/models.py:127
-msgid "Personal info"
-msgstr "Osebni podatki"
-
-#: contrib/auth/models.py:128
-msgid "Permissions"
-msgstr "Dovoljenja"
-
-#: contrib/auth/models.py:129
-msgid "Important dates"
-msgstr "Pomembni datumi"
-
-#: contrib/auth/models.py:130
-msgid "Groups"
-msgstr "Skupine"
-
-#: contrib/auth/models.py:272
-msgid "message"
-msgstr "sporočilo"
-
-#: contrib/auth/models.py:285
-msgid "AnonymousUser"
-msgstr "AnonimniUporabnik"
-
-#: contrib/auth/views.py:40
-msgid "Logged out"
-msgstr "Odjavljen"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "čas dejanja"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id objekta"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "predstavitev objekta"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "zastavica dejanja"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "spremeni sporočilo"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "vnos v dnevniku"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "vnosi v dnevniku"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Avtor: %s</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70
-#: contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-#: contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Vse"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Kadarkoli"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Danes"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Zadnjih 7 dni"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Ta mesec"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Letos"
-
-#: contrib/admin/filterspecs.py:143
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:181
-msgid "Yes"
-msgstr "Da"
-
-#: contrib/admin/filterspecs.py:143
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:181
-msgid "No"
-msgstr "Ne"
-
-#: contrib/admin/filterspecs.py:150
-#: oldforms/__init__.py:577
-#: newforms/widgets.py:181
-msgid "Unknown"
-msgstr "Neznano"
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Prijavite se"
-
-#: contrib/admin/views/decorators.py:62
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Vaša seja je pretekla; prosimo da se ponovno prijavite. Brez skrbi, vaše objave so varno shranjene."
-
-#: contrib/admin/views/decorators.py:69
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Izgleda, da vaš brskalnik nima podpore za piškotke. Prosimo, vključite piškotke, osvežite stran in poskusite še enkrat."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Uporabniška imena ne smejo vsebovati znaka '@'."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Vaš e-main naslov ni vaše uporabniško ime. Poskusite uporabiti '%s'."
-
-#: contrib/admin/views/main.py:228
-msgid "Site administration"
-msgstr "Administracija strani"
-
-#: contrib/admin/views/main.py:262
-#: contrib/admin/views/auth.py:19
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" je bil uspešno dodan."
-
-#: contrib/admin/views/main.py:266
-#: contrib/admin/views/main.py:352
-#: contrib/admin/views/auth.py:24
-msgid "You may edit it again below."
-msgstr "Vsebino lahko znova uredite spodaj."
-
-#: contrib/admin/views/main.py:276
-#: contrib/admin/views/main.py:361
-#, python-format
-msgid "You may add another %s below."
-msgstr "Spodaj lahko dodate še en %s."
-
-#: contrib/admin/views/main.py:294
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj %s"
-
-#: contrib/admin/views/main.py:340
-#, python-format
-msgid "Added %s."
-msgstr "Dodan %s."
-
-#: contrib/admin/views/main.py:342
-#, python-format
-msgid "Changed %s."
-msgstr "Spremenjen %s."
-
-#: contrib/admin/views/main.py:344
-#, python-format
-msgid "Deleted %s."
-msgstr "Izbrisn %s."
-
-#: contrib/admin/views/main.py:347
-msgid "No fields changed."
-msgstr "Nobeno polje ni bilo spremenjeno."
-
-#: contrib/admin/views/main.py:350
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" je bil uspešno spremenjeno."
-
-#: contrib/admin/views/main.py:358
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" je bil uspešno dodano. Ponovno ga lahko urejdite spodaj."
-
-#: contrib/admin/views/main.py:396
-#, python-format
-msgid "Change %s"
-msgstr "Spremeni %s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Eden ali več %(fieldname)s v %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:486
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Eden ali več %(fieldname)s v %(name)s:"
-
-#: contrib/admin/views/main.py:518
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" je bilo uspešno izbrisan."
-
-#: contrib/admin/views/main.py:521
-msgid "Are you sure?"
-msgstr "Ste prepričani?"
-
-#: contrib/admin/views/main.py:543
-#, python-format
-msgid "Change history: %s"
-msgstr "Zgodovina sprememb: %s"
-
-#: contrib/admin/views/main.py:577
-#, python-format
-msgid "Select %s"
-msgstr "Izberite %s"
-
-#: contrib/admin/views/main.py:577
-#, python-format
-msgid "Select %s to change"
-msgstr "Izberite %s, ki ga želite spremeniti"
-
-#: contrib/admin/views/main.py:772
-msgid "Database error"
-msgstr "Napaka baze podatkov"
-
-#: contrib/admin/views/doc.py:46
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "značka:"
-
-#: contrib/admin/views/doc.py:77
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "filter:"
-
-#: contrib/admin/views/doc.py:135
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "pogled:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacije %r ni mogoče najti"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "Modela %(name)r ni v aplikaciji %(label)r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "povezani `%(label)s.%(type)s` objekti"
-
-#: contrib/admin/views/doc.py:183
-#: contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219
-#: contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "povezani `%(label)s.%(name)s` objekti"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "vse %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "števolo %s"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Polja na %s objektih"
-
-#: contrib/admin/views/doc.py:291
-#: contrib/admin/views/doc.py:302
-#: contrib/admin/views/doc.py:304
-#: contrib/admin/views/doc.py:310
-#: contrib/admin/views/doc.py:311
-#: contrib/admin/views/doc.py:313
-msgid "Integer"
-msgstr "Celo število (integer)"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True ali False)"
-
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:312
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Niz (vse do %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Z vejico ločena cela števila (integer)"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Datum (brez ure)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Datum (z uro)"
-
-#: contrib/admin/views/doc.py:297
-msgid "Decimal number"
-msgstr "Decimalno število"
-
-#: contrib/admin/views/doc.py:298
-msgid "E-mail address"
-msgstr "E-mail naslov"
-
-#: contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:300
-#: contrib/admin/views/doc.py:303
-msgid "File path"
-msgstr "Pot do datoteke"
-
-#: contrib/admin/views/doc.py:301
-msgid "Floating point number"
-msgstr "Decimalno število"
-
-#: contrib/admin/views/doc.py:305
-#: contrib/comments/models.py:85
-msgid "IP address"
-msgstr "IP naslov"
-
-#: contrib/admin/views/doc.py:307
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (True, False ali None)"
-
-#: contrib/admin/views/doc.py:308
-msgid "Relation to parent model"
-msgstr "Razmerje s starševskim modelom"
-
-#: contrib/admin/views/doc.py:309
-msgid "Phone number"
-msgstr "Telefonska številka"
-
-#: contrib/admin/views/doc.py:314
-msgid "Text"
-msgstr "Besedilo"
-
-#: contrib/admin/views/doc.py:315
-msgid "Time"
-msgstr "Čas"
-
-#: contrib/admin/views/doc.py:316
-#: contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL (spletni naslov)"
-
-#: contrib/admin/views/doc.py:317
-msgid "U.S. state (two uppercase letters)"
-msgstr "Koda ameriške zvezne države (dve veliki črki)"
-
-#: contrib/admin/views/doc.py:318
-msgid "XML text"
-msgstr "XML besedilo"
-
-#: contrib/admin/views/doc.py:344
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ne izgleda veljaven urlpattern objekt"
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Dodaj uporabnika"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Geslo je bilo uspešno spremenjeno"
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Spremeni geslo: %s"
-
-#: contrib/admin/templatetags/admin_list.py:249
-msgid "All dates"
-msgstr "Vsi datumi"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Prikaži vse"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Change password"
-msgstr "Spremeni geslo"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Odjava"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-msgid "Home"
-msgstr "Domov"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Izbriši"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Izbris %(object_name)s '%(escaped_object)s' bi pomenil izbris povezanih objektov, vendar nimate dovoljenja za izbris naslednjih tipov objektov:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Ste prepričani, da želite izbrisati %(object_name)s \"%(escaped_object)s\"? Vsi naslednji povezani elementi bodo izbrisani:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Ja, sem prepričan"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Strani ni mogoče najti"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Opravičujemo se, a zahtevane strani ni mogoče najti."
-
-#: contrib/admin/templates/admin/change_form.html:15
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "Dodaj"
-
-#: contrib/admin/templates/admin/change_form.html:21
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Zgodovina"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Poglej na strani"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Prosimo, odpravite sledečo napako."
-msgstr[1] "Prosimo, odpravite sledeči napaki."
-msgstr[2] "Prosimo, odpravite sledeče napake."
-msgstr[3] "Prosimo, odpravite sledeče napake."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Razvrščanje"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Razvrsti:"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Po %(filter_title)s "
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Shrani kot novo"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Shrani in dodaj še eno"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Shrani in nadaljuj z urejanjem"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Shrani"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj %(name)s"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeli na voljo v %(name)s aplikaciji"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Spremeni"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "Nimate dovoljenja za urejanje česar koli."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Zadnja dejanja"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Moja dejanja"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Ni na voljo"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Vmesnik za administracijo Django strani"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administracija"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Datum/čas"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Uporabnik"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Dejanje"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Ta objekt nima zgodovine sprememb. Verjetno ni bil dodan preko te strani za administracijo."
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Napaka strežnika"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Napaka strežnika (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Napaka strežnika <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Prišlo je do nepričakovane napake. Administrator je preko e-pošte prejel obvestilo o napaki in jo bo v kratkem odpravil. Hvala za potrpljenje."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Nekaj je narobe z namestitvijo vaše podatkovne baze. Preverite, da so bile ustvarjene prave tabele v podatkovni bazi in da je dostop do branja baze omogočen pravemu uporabniku."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Pojdi"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s rezultat"
-msgstr[1] "%(counter)s rezultata"
-msgstr[2] "%(counter)s rezultati"
-msgstr[3] "%(counter)s rezultatov"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s skupno"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/login.html:17
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Uporabniško ime:"
-
-#: contrib/admin/templates/admin/login.html:20
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Geslo:"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Dobrodošli,"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Najprej vpišite uporabniško ime in geslo, nato boste lahko urejali druge lastnosti uporabnika."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Uporabniško ime"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-msgid "Password"
-msgstr "Geslo"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Password (again)"
-msgstr "Geslo (ponovno)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Za preverjanje vpišite enako geslo kot zgoraj."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Vpišite novo geslo za uporabnika <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Zaznamkice"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Dokumentacijske zaznamkice"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Za inštalacijo zaznamkic povlečite povezavo v orodno vrstico\n"
-"z zaznamki, ali kliknite z desno miškino tipko na povezavo in jo dodajte med zaznamke. Zdaj lahko izberete zaznamkico s katerekoli strani tega spletnega mesta. Opomba: nekatere izmed teh strani lahko gledate le z računalnika, ki je označen kot \"notranji\" (v kolikor niste prepričani, če je vaš računalnik označen kot \"notranji\" se obrnite na sistemskega administratorja).</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Dokumentacija te strani"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Skok na stran z dokumentacijo za pogled (view), ki generira trenutno stran."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Pokaži ID objekta"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Pokaže content-type in unikatni ID za strani, ki predstavljajo en objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Uredi objekt (v trenutnem oknu)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Skok na administracijsko stran za vse strani, ki predstavljajo en objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Uredi ta objekt (v novem oknu)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kot zgoraj, le da odpre administracijsko stran v novem oknu."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Ura:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Trenutno:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Sprememba:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Ponastavitev gesla"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "Ste pozabili geslo? Vnesite vaš e-mail naslov in poslali vam bomo novo geslo."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "Naslov e-pošte:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Ponastavi moje geslo"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Ta e-mail ste dobili, ker ste zahtevali ponastavitev gesla"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "za vaš uporabniški račun na %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Vaše novo geslo je: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Geslo lahko spremenite z obiskom strani:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše uporabniško ime (za vsak primer):"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Hvala, ker uporabljate našo stran!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Ekipa strani %(site_name)s"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala, ker ste si danes vzeli nekaj časa za to spletno stran."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ponovna prijava"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Ponastavitev gesla je uspela"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Po e-pošti smo vam poslali novo geslo. Morali bi ga prejeti v kratkem"
-
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:4
-msgid "Password change"
-msgstr "Sprememba gesla"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Prosim, vnesite vaše staro geslo (zaradi varnosti) in nato še dvakrat novo (da preverimo, da se niste zatipkali)"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Staro geslo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Novo geslo:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Potrditev gesla:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Spremeni moje geslo"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Sprememba gesla je uspela"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Vaše geslo je bilo spremenjeno."
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "domena"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "prikazno ime"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "stran"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "strani"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "st"
-msgstr "st"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "nd"
-msgstr "nd"
-
-#: contrib/humanize/templatetags/humanize.py:17
-#, fuzzy
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milijon"
-msgstr[1] "%(value).1f milijona"
-msgstr[2] "%(value).1f milijoni"
-msgstr[3] "%(value).1f milijonov"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f bilijon"
-msgstr[1] "%(value).1f bilijona"
-msgstr[2] "%(value).1f bilijoni"
-msgstr[3] "%(value).1f bilijonov"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triljon"
-msgstr[1] "%(value).1f triljona"
-msgstr[2] "%(value).1f triljoni"
-msgstr[3] "%(value).1f triljonov"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "ena"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "dva"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "tri"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "štiri"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "pet"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "šest"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "sedem"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "osem"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "devet"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Primer: '/about/contact/'. Preverite ali vsebuje / (poševnico) na začetku in koncu vnosa."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "naslov"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "vsebina"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "omogoči komentarje"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "ime predloge"
-
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Primer: 'flatpages/contact_page.html'. Če to polje ni izpolnjeno, bo sistem uporabil 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "obvezna registracija"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Če je to polje izbrano, si bodo to stran lahko ogledali le prijavljeni uporabniki."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "enostavna stran"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "enostavne strani"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "preusmeritev iz"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Ta pot mora biti absolutna, brez imena domene. Primer: '/events/search'"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "preusmeri na"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "To je lahko absolutna pot (kot zgoraj) ali popoln URL naslov (ki se začne s 'http://')"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "preusmeritev"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "preusmeritve"
-
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:166
-msgid "object ID"
-msgstr "ID objekta"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "naslov"
-
-#: contrib/comments/models.py:69
-#: contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "komentar"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "rating #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "rating #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "rating #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "rating #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "rating #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "rating #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "rating #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "rating #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "je veljavni rating"
-
-#: contrib/comments/models.py:83
-#: contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "datum/čas vnosa"
-
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:170
-msgid "is public"
-msgstr "je javno"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "je odstranjen/-a"
-
-#: contrib/comments/models.py:86
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Odkljukaj, če je komentar neprimeren. Namesto komentarja bo vidno obvestilo \"Ta komentar je bil odstranjen\"."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "komentarji"
-
-#: contrib/comments/models.py:131
-#: contrib/comments/models.py:207
-msgid "Content object"
-msgstr "Objekt z vsebino"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Poslal uporabnik %(user)s ob %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "ime osebe"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip naslov"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "osebje je potrdilo"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "anonimen komentar"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "anonimni komentarji"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "ocena"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "datum ocene"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "karma točke"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "karma točke"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "oceno %(score)d podelil %(user)s"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Komentar je z zastavico označil %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "datum označitve (zastavice)"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "uporabniška zastavica"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "uporabniške zastavice"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "Avtor zastavice je %r"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "datum izbrisa"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "izbris s strani moderatorja"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "izbrisi s strani moderatorja"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Izbris opravil moderator %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Anonimni uporabniki ne morejo glasovati"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Neveljavni ID komentarja"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Ni mogoče glasovati zase"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "To oceno moraš podati, ker si podal vsaj še eno drugo oceno."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarjev:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarja:\n"
-"\n"
-"%(text)s"
-msgstr[2] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarje:\n"
-"\n"
-"%(text)s"
-msgstr[3] ""
-"Ta komentar je poslal uporabnik, ki je do zdaj poslal manj kot %(count)s komentarjev:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ta komentar je poslal sumljiv uporabnik:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Dovoljena je le POST metoda"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Eno ali več obveznih polj ni vpisanih"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Nekdo se je poigraval z obrazcem za komentarje (varnostna kršitev)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Obrazec s komentarji ima neveljavni parameter 'target' -- ID objekta je neveljaven."
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Obrazec s komentarji ni podal niti 'preview' niti 'post' akcije."
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Ste pozabili geslo?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Ocene"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obvezno"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Neobvezno"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Objavi sliko"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Predogled komentarja"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Vaše ime:"
-
-#: contrib/localflavor/au/forms.py:18
-msgid "Enter a 4 digit post code."
-msgstr "Vnesite 4-mestno poštno številko."
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Vnesite poštno številko v zapisu XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefonska številka mora biti v zapisu XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:72
-msgid "This field requires only numbers."
-msgstr "To polje lahko vsebuje samo številke."
-
-#: contrib/localflavor/br/forms.py:74
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "To polje zahteva največ 11 števk ali 14 znakov."
-
-#: contrib/localflavor/br/forms.py:84
-msgid "Invalid CPF number."
-msgstr "Nepravilna CPF številka."
-
-#: contrib/localflavor/br/forms.py:106
-msgid "This field requires at least 14 digits"
-msgstr "To polje mora vsebovati vsaj 14 števk."
-
-#: contrib/localflavor/br/forms.py:116
-msgid "Invalid CNPJ number."
-msgstr "Nepravilna CNPJ številka."
-
-#: contrib/localflavor/ch/forms.py:18
-#: contrib/localflavor/no/forms.py:15
-msgid "Enter a zip code in the format XXXX."
-msgstr "Vnesite veljavno poštno številko v obliki XXXX."
-
-#: contrib/localflavor/ch/forms.py:90
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr "Vpišite veljavno številko švicarske osebne izkaznice ali potenga lista v zapisu X1234567<0 ali 1234567890"
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel (mesto)"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel (dežela)"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Berne"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Ženeva"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubuenden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Lucerne"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchatel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "St. Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zurich"
-
-#: contrib/localflavor/cl/forms.py:21
-msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Vpišite veljaven čilenski RUT v zapisu XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:26
-msgid "Enter valid a Chilean RUT"
-msgstr "Vnesite veljaven čilski RUT"
-
-#: contrib/localflavor/de/forms.py:16
-#: contrib/localflavor/fi/forms.py:14
-#: contrib/localflavor/fr/forms.py:17
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Vnesite veljavno poštno številko v obliki XXXXX."
-
-#: contrib/localflavor/de/forms.py:60
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr "Vpišite veljavno številko nemške osebne izkaznice v zapisu XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bavarska"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Western Pomerania"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Lower Saxony"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Severno porenje - Westfalija"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhineland-Palatinate"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Posarje"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Saxony"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Saška-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thuringia"
-
-#: contrib/localflavor/fi/forms.py:40
-#: contrib/localflavor/fi/forms.py:45
-msgid "Enter a valid Finnish social security number."
-msgstr "Vnesite veljavno številko finskega socialnega zavarovanja."
-
-#: contrib/localflavor/it/forms.py:16
-msgid "Enter a valid zip code."
-msgstr "Vnesite veljavno poštno številko."
-
-#: contrib/localflavor/it/forms.py:41
-msgid "Enter a valid Social Security number."
-msgstr "Vnesite veljavno številko socialnega zavarovanja."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Vnesite veljavno davčno (VAT) številko."
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Vpišite poštno številko v zapisu XXXXXXX or XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Jamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Točigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Čiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokio"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Jamanaši"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Išikava"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Šizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Šiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kjoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hjogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Vakajama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Šimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okajama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hirošima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Jamaguči"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokušima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Koči"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kumamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "Kagošima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinava"
-
-#: contrib/localflavor/no/forms.py:36
-msgid "Enter a valid Norwegian social security number."
-msgstr "Vnesite veljavno številko norveškega socialnega zavarovanja."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "Vpišite poštno številko. Med dvema deloma poštne številke je obvezen presledek."
-
-#: contrib/localflavor/us/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Vnesite poštno številko v zapisu XXXXX ali XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Vpišite veljavno številko ameriškega socialnega zavarovanja v zapisu XXX-XX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:16
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Vpišite pravilno islandsko identifikacijsko številko v zapisu XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:30
-msgid "The Icelandic identification number is not valid."
-msgstr "Islandska identifikacijska številka ni pravilna."
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "ključ seje"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "podatki seje"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "čaz izteka"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "seja"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "seje"
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "python ime razreda modela"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "tip vsebine"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "tipi vsebine"
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Poskrbite, da bo tekst krajši od %s znaka."
-msgstr[1] "Poskrbite, da bo tekst krajši od %s znakov."
-msgstr[2] "Poskrbite, da bo tekst krajši od %s znakov."
-msgstr[3] "Poskrbite, da bo tekst krajši od %s znakov."
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "Prelomi vrstice tu niso dovoljeni."
-
-#: oldforms/__init__.py:498
-#: oldforms/__init__.py:571
-#: oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Izberite veljavno možnost; '%(data)s' ni v %(choices)s."
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "Poslana datoteka je prazna."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Vnesite celo število med -32.768 in 32.767."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Vnesite pozitivno število."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Vnesite celo število med 0 in 32.767."
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s je bil uspešno ustvarjen."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s je bil uspešno posodobljen."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s je bil uspešno izbrisan."
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ponedeljek"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "torek"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "sreda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "četrtek"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "petek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "nedelja"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "March"
-msgstr "marec"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "June"
-msgstr "junij"
-
-#: utils/dates.py:15
-#: utils/dates.py:27
-msgid "July"
-msgstr "julij"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "avgust"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "avg"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "avg."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "sep."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "dec."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "leto"
-msgstr[1] "leti"
-msgstr[2] "leta"
-msgstr[3] "let"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mesec"
-msgstr[1] "meseca"
-msgstr[2] "meseci"
-msgstr[3] "mesecev"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "teden"
-msgstr[1] "tedna"
-msgstr[2] "tedni"
-msgstr[3] "tednov"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dan"
-msgstr[1] "dneva"
-msgstr[2] "dnevi"
-msgstr[3] "dni"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "ura"
-msgstr[1] "uri"
-msgstr[2] "ure"
-msgstr[3] "ur"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuta"
-msgstr[1] "minuti"
-msgstr[2] "minute"
-msgstr[3] "minut"
-
-#: utils/timesince.py:40
-#, python-format
-msgid "%d milliseconds"
-msgstr "%d milisekund"
-
-#: utils/timesince.py:41
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:47
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "polnoč"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "poldne"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "da,ne,morda"
-
-#: template/defaultfilters.py:520
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajta"
-msgstr[2] "%(size)d bajti"
-msgstr[3] "%(size)d bajtov"
-
-#: template/defaultfilters.py:522
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:524
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:525
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: newforms/fields.py:110
-#: newforms/fields.py:324
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "Poskrbite, da bo imela ta vrednost največ %d znakov."
-
-#: newforms/fields.py:112
-#: newforms/fields.py:326
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "Poskrbite, da bo imela ta vrednost vsaj %d znakov."
-
-#: newforms/fields.py:137
-#: newforms/fields.py:160
-#: newforms/fields.py:192
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Poskrbite, da bo imela ta vrednost manj manj kot ali natanko %s znakov."
-
-#: newforms/fields.py:139
-#: newforms/fields.py:162
-#: newforms/fields.py:194
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Poskrbite, da bo ta vrednost večja ali kvečjemu enaka %s."
-
-#: newforms/fields.py:158
-#: newforms/fields.py:186
-msgid "Enter a number."
-msgstr "Vnesite število."
-
-#: newforms/fields.py:196
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Poskrbite, da skupno ne bo več kot %s števil."
-
-#: newforms/fields.py:198
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Poskrbite, da skupno ne bo več kot %s decimalnih mest."
-
-#: newforms/fields.py:200
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Poskrbite, da ne bo več kot %s števil pred decimalno piko."
-
-#: newforms/fields.py:233
-#: newforms/fields.py:567
-msgid "Enter a valid date."
-msgstr "Vnesite veljaven datum."
-
-#: newforms/fields.py:260
-#: newforms/fields.py:569
-msgid "Enter a valid time."
-msgstr "Vnesite veljaven čas."
-
-#: newforms/fields.py:296
-msgid "Enter a valid date/time."
-msgstr "Vnesite veljaven datum/čas."
-
-#: newforms/fields.py:310
-msgid "Enter a valid value."
-msgstr "Vnesite veljavno vrednost."
-
-#: newforms/fields.py:357
-#: newforms/fields.py:379
-msgid "Enter a valid URL."
-msgstr "Vnesite veljavne URL naslov."
-
-#: newforms/fields.py:381
-msgid "This URL appears to be a broken link."
-msgstr "Izgleda, da povezava na ta URL ne deluje."
-
-#: newforms/fields.py:432
-#: newforms/models.py:172
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izberite veljavno možnost. Te možnosti ni med možnimi izbirami."
-
-#: newforms/fields.py:448
-#: newforms/fields.py:527
-#: newforms/models.py:189
-msgid "Enter a list of values."
-msgstr "Vnesite seznam vrednosti."
-
-#: newforms/fields.py:457
-#: newforms/models.py:195
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Izberite veljavno možnost. %s ni med možnimi izbirami."
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "Ste <a href=\"/password_reset/\">pozabili geslo</a>?"
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Uporabi '[algo]$[salt]$[hexdigest]'"
-#~ msgid "Comment"
-#~ msgstr "Komentar"
-#~ msgid "Comments"
-#~ msgstr "Komentarji"
-#~ msgid "String (up to 50)"
-#~ msgstr "Niz (do 50 znakov)"
-#~ msgid "label"
-#~ msgstr "oznaka"
-#~ msgid "package"
-#~ msgstr "paket"
-#~ msgid "packages"
-#~ msgstr "paketi"
-#~ msgid "Slovene"
-#~ msgstr "Slovensko"
-
diff --git a/webapp/django/conf/locale/sl/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/sl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 14d7ffe..0000000
--- a/webapp/django/conf/locale/sl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sl/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/sl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 8ad259a..0000000
--- a/webapp/django/conf/locale/sl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright (C) 2007
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-02 13:55+0200\n"
-"PO-Revision-Date: 2007-07-02 13:56+0100\n"
-"Last-Translator: Gasper Koren <skrat@owca.info>\n"
-"Language-Team: SLOVENIAN <lugos-slo@lugos.si>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Slovenian\n"
-"X-Poedit-Country: SLOVENIA\n"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid "January February March April May June July August September October November December"
-msgstr "Januar Februar Marec April Maj Junij Julij Avgust September Oktober November December"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "N P T S Č P S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Nedelja Ponedeljek Torek Sreda Četrtek Petek Sobota"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Možne %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Izberi vse"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Dodaj"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Odstrani"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Izberite %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Izberite in kliknite"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Izbriši vse"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Sedaj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "URA"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Izberite čas"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Polnoč"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "Ob 6h"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Opoldne"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Prekliči"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Danes"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Koledar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Včeraj"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Jutri"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Prikaži"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Skrij"
-
diff --git a/webapp/django/conf/locale/sr/LC_MESSAGES/django.mo b/webapp/django/conf/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 89e36aa..0000000
--- a/webapp/django/conf/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sr/LC_MESSAGES/django.po b/webapp/django/conf/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index b893452..0000000
--- a/webapp/django/conf/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4504 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-29 12:06+0200\n"
-"PO-Revision-Date: 2008-07-29 12:52+0100\n"
-"Last-Translator: Nebojsa Djordjevic <djnesh@gmail.com>\n"
-"Language-Team: Nesh <djnesh@gmail.com> & Petar <petar.maric@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Poedit-Country: YUGOSLAVIA\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"X-Poedit-Basepath: ../../../../\n"
-"X-Poedit-Language: Serbian\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Arapski"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Bengalski"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Bugarski"
-
-#: conf/global_settings.py:47
-#, fuzzy
-msgid "Catalan"
-msgstr "Italijanski"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Češki"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Welšski"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Danski"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Nemački"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Grčki"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Engleski"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Španski"
-
-#: conf/global_settings.py:55
-#, fuzzy
-msgid "Estonian"
-msgstr "Rumunski"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Španski (Argentina)"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "Baskijski"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "Persijski"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "Finski"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "Francuski"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "Irski"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "Galski"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "Mađarski"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "Hebrejski"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "Hrvatski"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "Islandski"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "Italijanski"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "Japanski"
-
-#: conf/global_settings.py:69
-#, fuzzy
-msgid "Georgian"
-msgstr "Nemački"
-
-#: conf/global_settings.py:70
-#, fuzzy
-msgid "Korean"
-msgstr "Norveški"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "Kmerski"
-
-# wtf?
-#: conf/global_settings.py:72
-#, fuzzy
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "Latvijski"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "Litvanijski"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "Makedonski"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "Holandski"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "Norveški"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "Poljski"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "Portugalski"
-
-#: conf/global_settings.py:80
-#, fuzzy
-msgid "Brazilian Portuguese"
-msgstr "Brazilski"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "Rumunski"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "Ruski"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "Slovački"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "Slovenački"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "Srpski"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "Švedski"
-
-#: conf/global_settings.py:87
-#, fuzzy
-msgid "Tamil"
-msgstr ""
-
-#: conf/global_settings.py:88
-#, fuzzy
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "Turski"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "Ukrajinski"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "Kineski (pojednostavljen)"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "Tradicionalni Kineski"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Po %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74
-#: contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147
-#: contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Sve"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Bilo koji datum"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Danas"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "U zadnjih 7 dana"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Ovoga meseca"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Ove godine"
-
-#: contrib/admin/filterspecs.py:147
-#: forms/widgets.py:379
-#: oldforms/__init__.py:592
-msgid "Yes"
-msgstr "Da"
-
-#: contrib/admin/filterspecs.py:147
-#: forms/widgets.py:379
-#: oldforms/__init__.py:592
-msgid "No"
-msgstr "Ne"
-
-#: contrib/admin/filterspecs.py:154
-#: forms/widgets.py:379
-#: oldforms/__init__.py:592
-msgid "Unknown"
-msgstr "Nepoznato"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "vreme aktivnosti"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "id objekta"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "opis objekta"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "oznaka aktivnosti"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "opis izmene"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "unos u dnevniku izmena"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "unosi u dnevniku izmena"
-
-#: contrib/admin/options.py:161
-#: contrib/admin/options.py:180
-msgid "None"
-msgstr "None"
-
-#: contrib/admin/options.py:347
-#: contrib/auth/admin.py:37
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Uspešno dodat %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:351
-#: contrib/admin/options.py:419
-#: contrib/auth/admin.py:42
-msgid "You may edit it again below."
-msgstr "Možete ga ponovo izmeniti."
-
-#: contrib/admin/options.py:361
-#: contrib/admin/options.py:428
-#, python-format
-msgid "You may add another %s below."
-msgstr "Možete dodati još jedan %s."
-
-#: contrib/admin/options.py:395
-#, python-format
-msgid "Changed %s."
-msgstr "Izmenjen %s."
-
-#: contrib/admin/options.py:395
-#: contrib/admin/options.py:405
-#: core/validators.py:279
-#: db/models/manipulators.py:305
-msgid "and"
-msgstr "i"
-
-#: contrib/admin/options.py:400
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Dodato %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:404
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Promenjeno %(list)s za %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:409
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Obrisano %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:414
-msgid "No fields changed."
-msgstr "Nijedno polje nije izmenjeno."
-
-#: contrib/admin/options.py:417
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Uspešno izmenjen: %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:425
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" je uspešno dodat. Možete ga ponovo izmeniti."
-
-#: contrib/admin/options.py:506
-#, python-format
-msgid "Add %s"
-msgstr "Dodajte %s"
-
-#: contrib/admin/options.py:568
-#, python-format
-msgid "Change %s"
-msgstr "Izmeni %s"
-
-#: contrib/admin/options.py:598
-msgid "Database error"
-msgstr "Greška u bazi podataka"
-
-#: contrib/admin/options.py:647
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Uspešno obrisan: %(name)s \"%(obj)s\"."
-
-#: contrib/admin/options.py:653
-msgid "Are you sure?"
-msgstr "Da li ste sigurni?"
-
-#: contrib/admin/options.py:680
-#, python-format
-msgid "Change history: %s"
-msgstr "Istorija izmena: %s"
-
-#: contrib/admin/sites.py:18
-#: contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:70
-#: contrib/comments/views/comments.py:56
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "Unesite ispravno korisničko ime i šifru. Napomena: oba polja prave razliku između velikih i malih slova."
-
-#: contrib/admin/sites.py:233
-#: contrib/admin/views/decorators.py:68
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "Ponovo se prijavite pošto je vaša sesija istekla. Ne brinite, vaši podaci su sačuvani."
-
-#: contrib/admin/sites.py:240
-#: contrib/admin/views/decorators.py:75
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "Vaš internet čitač nije prihvatio \"cookie\". Nakon aktiviranja odgovarajuće opcije ponovo učitajte stranu."
-
-#: contrib/admin/sites.py:254
-#: contrib/admin/sites.py:260
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Korisnička imena ne mogu sadržati karakter '@'."
-
-#: contrib/admin/sites.py:257
-#: contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Vaše korisničko ime nije data e-mail adresa. Pokušajte sa '%s'."
-
-#: contrib/admin/sites.py:325
-msgid "Site administration"
-msgstr "Administracija sajta"
-
-#: contrib/admin/sites.py:347
-#: contrib/admin/templates/admin/login.html:27
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Prijavite se"
-
-#: contrib/admin/util.py:126
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Jedno ili više %(fieldname)s u %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:131
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Jedan ili više %(fieldname)s u %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Vreme:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Trenutno:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Izmenite:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Strana nije pronađena"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Tražena strana ne postoji."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "Početna strana"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Greška na serveru"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Greška na serveru (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Greška na serveru <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Dogodila se greška koja je prijavljena administratorima."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Dobrodošli,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Izmenite lozinku"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Odjavite se"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administracija sajta"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administracija"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Dodajte"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Istorija"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Pogledaj na sajtu"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Ispravite dole navedenu grešku."
-msgstr[1] "Ispravite dole navedene greške."
-msgstr[2] "Ispravite dole navedene greške."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodajte %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Obrišite"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Brisanjem %(object_name)s  '%(escaped_object)s' došlo bi do brisanja pridruženih objekata, ali nemate prava da brišete sledeće objekte:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Da li ste sigurni da želite da obrišete %(object_name)s \"%(escaped_object)s\"? Takođe će biti obrisani sledeći pridruženi objekti:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Da, siguran sam"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Po %(filter_title)s"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Dostupni modeli u aplikaciji %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Izmenite"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Nemate prava da vršite izmene."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Poslednje aktivnosti"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Moje aktivnosti"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Bez aktivnosti"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Nešto nije u redu sa vašom istalacijom baze podataka. Proverite da li su sve tabele kreirane i čitljive od strane definisanog korisnika."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Korisničko ime:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Lozinka:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Datum/vreme"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Korisnik"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Aktivnost"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "j. N Y, H:i"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Ovaj objekat nema istoriju promena. Najverovatnije nije dodat korišćenjem administracije sajta."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Prikaži sve"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Nađi"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 rezultat"
-msgstr[1] "%(counter)s rezultata"
-msgstr[2] "%(counter)s rezultata"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s ukupno"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Snimite kao novi"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Snimite i dodaj još jedan"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Snimite i nastavite sa izmenama"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Snimite"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Prvo unesite korisničko ime i lozinku da bi ste mogli menjati ostale opcije za korisnika."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:12
-#: contrib/auth/forms.py:49
-msgid "Username"
-msgstr "Korisničko ime"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:15
-#: contrib/auth/forms.py:50
-#: contrib/auth/forms.py:166
-msgid "Password"
-msgstr "Lozinka"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:167
-msgid "Password (again)"
-msgstr "Lozinka (ponovo)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Zbog provere, ponovite lozinku."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Unesite novu lozinku za korisnika <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Dokumentacioni \"bookmarklets\""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Da bi ste instalirali \"bookmarklet\", odvucite link u vaše \"bookmark\"-e, ili kliknite desnim tasterom i dodajte ga. Sada možete da izaberete \"bookmark\" sa bilo koje strane na sajtu. Napomena: pristup nekima od strana mora biti sa kompjutera čija je IP adresa označena kao \"internal\" (kontaktirajte sistem administratora ako niste sigurni da li je vaš IP označen kao \"internal\").</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentacija za ovu stranu"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "Skače sa bilo koje strane na stranu sa dokumentacijom za \"view\" koji generiše tu stranu."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Prikažite ID objekta"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "Prikazuje \"content-type\" i jedinstveni ID strane koje predstavlja jedan objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Izmena objekta (u aktivnom prozoru)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Skače na admin stranu za strane koje predstavljaju objekt."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Izmeni objekat (novi prozor)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kao iznad, samo otvara admin stranu u novom prozoru."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala Vam na poseti."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Prijavite se ponovo"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Izmenite lozinku"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Lozinka je uspešno izmenjena"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Vaša lozinka je izmenjena."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "Unesite staru lozinku, nakon toga unesite novu lozinku dva puta, radi provere ispravnosti unosa."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Stara lozinka:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Nova lozinka:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Potvrdite novu lozinku:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Izmenite moju lozinku"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Resetovanje lozinke"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Vaša lozinka je uspešno resetovana"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Nova lozinka vam je poslata na zadatu e-mail adresu. E-mail bi trebao da stigne u narednih nekoliko minuta."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Primili ste ovaj e-mail jer ste zatražili resetovanje lozinke"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "za vaš korisnički nalog na %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Vaša nova lozinka je: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Lozinku možete izmeniti na sledećoj strani:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše korisničko ime, u slučaju da ste zaboravili:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Hvala Vam na poseti!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s tim"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "Zaboravili ste svoju lozinku? Unesite vašu e-mail adresu i dobićete novu lozinku na dati e-mail."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail adresa:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Resetujte moju lozinku"
-
-#: contrib/admin/templatetags/admin_list.py:257
-msgid "All dates"
-msgstr "Svi datumi"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Izaberite %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Izaberite %s za izmenu"
-
-#: contrib/admindocs/views.py:53
-#: contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr ""
-
-#: contrib/admindocs/views.py:87
-#: contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr ""
-
-#: contrib/admindocs/views.py:153
-#: contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr ""
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacija %r nije nađena"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r nije nađen u aplikaciji %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "povezani `%(app_label)s.%(data_type)s` objekti"
-
-#: contrib/admindocs/views.py:206
-#: contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242
-#: contrib/admindocs/views.py:247
-msgid "model:"
-msgstr ""
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "povezani `%(app_label)s.%(object_name)s` objekti"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "svi %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "broj %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Polja u %s objekata"
-
-#: contrib/admindocs/views.py:317
-#: contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330
-#: contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337
-#: contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Ceo broj"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Logička vrednost (Tačno ili Netačno)"
-
-#: contrib/admindocs/views.py:319
-#: contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Niz karaktera (maksimalno %(max_length)s karaktera)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Brojevi razdvojeni zarezima"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Datum (bez vremena)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Datum (sa vremenom)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Decimalni broj"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-mail adresa"
-
-#: contrib/admindocs/views.py:325
-#: contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Putanja do datoteke"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr ""
-
-#: contrib/admindocs/views.py:331
-#: contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP adresa"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Logička vrednost (Tačno, Netačno ili prazno)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relacija ka nadređenom objektu"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefonski broj"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Tekst"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Vreme"
-
-#: contrib/admindocs/views.py:342
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S. država (dva VELIKA slova)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML tekst"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nije urlpattern objekt"
-
-#: contrib/auth/admin.py:17
-msgid "Personal info"
-msgstr "Lične informacije"
-
-#: contrib/auth/admin.py:18
-msgid "Permissions"
-msgstr "Dozvole"
-
-#: contrib/auth/admin.py:19
-msgid "Important dates"
-msgstr "Važni datumi"
-
-#: contrib/auth/admin.py:20
-msgid "Groups"
-msgstr "Grupe"
-
-#: contrib/auth/admin.py:47
-msgid "Add user"
-msgstr "Dodajte korisnika"
-
-#: contrib/auth/forms.py:13
-#: contrib/auth/models.py:134
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "Obavezno. 30 ili manje karaktera. Samo slova, brojevi i donja crta \"_\"."
-
-# nesh: Ovo je opis za stari SlugField
-#: contrib/auth/forms.py:14
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Ovo polje može sadržati samo slova, brojeve i donju crtu (_)."
-
-#: contrib/auth/forms.py:16
-msgid "Password confirmation"
-msgstr "Potvrdite lozinku"
-
-#: contrib/auth/forms.py:28
-msgid "A user with that username already exists."
-msgstr "Korisnik već postoji."
-
-#: contrib/auth/forms.py:34
-#: contrib/auth/forms.py:153
-#: contrib/auth/forms.py:178
-msgid "The two password fields didn't match."
-msgstr "Polja za lozinku nisu ista."
-
-#: contrib/auth/forms.py:72
-#: contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Neaktivni nalog."
-
-#: contrib/auth/forms.py:77
-#: contrib/comments/views/comments.py:49
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "Vaš internet čitač nije prihvatio \"cookie\". \"Cookie\" podrška je potrebna da bi ste mogli da se prijavite."
-
-#: contrib/auth/forms.py:90
-msgid "E-mail"
-msgstr "E-mail"
-
-#: contrib/auth/forms.py:99
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "Ova e-mail adresa nije povezana sa nijednim korisničkim nalogom. Da li ste sigurni da ste registrovani?"
-
-#: contrib/auth/forms.py:124
-#, python-format
-msgid "Password reset on %s"
-msgstr "Resetovanje lozinke za %s"
-
-#: contrib/auth/forms.py:131
-msgid "Old password"
-msgstr "Stara lozinka"
-
-#: contrib/auth/forms.py:132
-msgid "New password"
-msgstr "Nova lozinka"
-
-#: contrib/auth/forms.py:133
-msgid "New password confirmation"
-msgstr "Potvrda nove lozinke"
-
-#: contrib/auth/forms.py:145
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Pogrešna stara lozinka. Unesite je ponovo."
-
-#: contrib/auth/models.py:73
-#: contrib/auth/models.py:93
-msgid "name"
-msgstr "ime"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "šifra dozvole"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "dozvola"
-
-#: contrib/auth/models.py:79
-#: contrib/auth/models.py:94
-msgid "permissions"
-msgstr "dozvole"
-
-#: contrib/auth/models.py:97
-msgid "group"
-msgstr "grupa"
-
-#: contrib/auth/models.py:98
-#: contrib/auth/models.py:144
-msgid "groups"
-msgstr "grupe"
-
-#: contrib/auth/models.py:134
-msgid "username"
-msgstr "korisničko ime"
-
-#: contrib/auth/models.py:135
-msgid "first name"
-msgstr "ime"
-
-#: contrib/auth/models.py:136
-msgid "last name"
-msgstr "prezime"
-
-#: contrib/auth/models.py:137
-msgid "e-mail address"
-msgstr "e-mail adresa"
-
-#: contrib/auth/models.py:138
-msgid "password"
-msgstr "lozinka"
-
-#: contrib/auth/models.py:138
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "Koristite '[algo]$[salt]$[hexdigest]' ili <a href=\"password/\">promeni lozinku</a>."
-
-#: contrib/auth/models.py:139
-msgid "staff status"
-msgstr "dozvoljen pristup administraciji sajta"
-
-#: contrib/auth/models.py:139
-msgid "Designates whether the user can log into this admin site."
-msgstr "Da li korisnik ima pristup administratorskom delu sajta."
-
-#: contrib/auth/models.py:140
-msgid "active"
-msgstr "aktivan"
-
-#: contrib/auth/models.py:140
-msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
-msgstr "Označava aktivne korisnike. Koristite umesto brisanja naloga."
-
-#: contrib/auth/models.py:141
-msgid "superuser status"
-msgstr "da li je korisnik administrator"
-
-#: contrib/auth/models.py:141
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "Označava korisnike koji imaju sva prava."
-
-#: contrib/auth/models.py:142
-msgid "last login"
-msgstr "vreme poslednje posete"
-
-#: contrib/auth/models.py:143
-msgid "date joined"
-msgstr "datum otvaranja naloga"
-
-#: contrib/auth/models.py:145
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "Uz ručno dodata prava, korisnik će dobiti sva prava iz grupa kojima pripada."
-
-#: contrib/auth/models.py:146
-msgid "user permissions"
-msgstr "korisničke dozvole"
-
-#: contrib/auth/models.py:150
-msgid "user"
-msgstr "korisnik"
-
-#: contrib/auth/models.py:151
-msgid "users"
-msgstr "korisnici"
-
-#: contrib/auth/models.py:306
-msgid "message"
-msgstr "poruka"
-
-#: contrib/auth/views.py:49
-msgid "Logged out"
-msgstr "Odjavljeni ste"
-
-#: contrib/auth/views.py:116
-msgid "Password changed successfully."
-msgstr "Lozinka je uspešno izmenjena."
-
-#: contrib/auth/views.py:122
-#, python-format
-msgid "Change password: %s"
-msgstr "Izmenite lozinku: %s"
-
-#: contrib/comments/models.py:71
-#: contrib/comments/models.py:164
-msgid "object ID"
-msgstr "ID objekta"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "naslov"
-
-#: contrib/comments/models.py:73
-#: contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "komentar"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "ocena #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "ocena #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "ocena #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "ocena #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "ocena #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "ocena #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "ocena #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "ocena #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "da li je ocena validna"
-
-#: contrib/comments/models.py:87
-#: contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "datum/vreme slanja"
-
-#: contrib/comments/models.py:88
-#: contrib/comments/models.py:168
-msgid "is public"
-msgstr "da li je javni"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "da li je obrisan"
-
-#: contrib/comments/models.py:90
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "Izaberite ako je komentar neodgovarajući. Biće ispisano \"Ovaj komentar je obrisan\" umesto teksta komentara."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "komentari"
-
-#: contrib/comments/models.py:128
-#: contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Objekat sa sadržajem"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Poslao %(user)s dana %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "ime"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "ip adresa"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "odobreno od strane moderatora"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "slobodan komentar"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "slobodni komentari"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "rezultat"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "datum rezultata"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "\"karma\" rezultat"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "\"karma\" rezultati"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "Ocena %(score)d od strane %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Ovaj komentar je označen od %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "datum označavanja"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "korisnička oznaka"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "korisničke oznake"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "%r je označio"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "datum brisanja"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "brisanje od strane moderatora"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "brisanja od strane moderatora"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Obrisao moderator %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Zaboravili ste lozinku?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Ocene"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obavezan unos"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opcioni unos"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Pošaljite sliku"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Komentar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Pregled komentara"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Vaše ime:"
-
-# nesh: grrrrr, ala je rogobatno
-# petar: malo sam ga izmenio da bude jasniji
-#: contrib/comments/views/comments.py:76
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "Ova ocena je obavezna pošto ste uneli bar jednu ocenu."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
-"\n"
-"%(text)s"
-msgstr[2] ""
-"Ovaj komentar je poslat od korisnika koji je poslao manje od %(count)s komentara:\n"
-"\n"
-"%(text)s"
-
-# nesh: skethcy???
-# petar: Pojma nemam sta im to znaci
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Komentar je poslat od strane \"sketchy\" korisnika:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Jedino je POST dozvoljen"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Jedno ili više obaveznih polja nije poslato"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Neko je menjao formu za komentare (povreda sigurnosti)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "Forma komentara ima neispravni 'target' parametar -- ID objekta je neispravan"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Ovaj komentar nije koristio ni 'preview' ni 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonimni korisnici ne mogu da glasaju"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Neispravan ID komentara"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Ne možete glasati sami za sebe"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "naziv python modula"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "tipovi sadržaja"
-
-#: contrib/flatpages/admin.py:9
-msgid "Advanced options"
-msgstr "Napredne opcije"
-
-#: contrib/flatpages/models.py:9
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Primer: '/o-nama/kontakt/'. Proverite da li ste uneli '/' na početku i na kraju."
-
-#: contrib/flatpages/models.py:10
-msgid "title"
-msgstr "naslov"
-
-#: contrib/flatpages/models.py:11
-msgid "content"
-msgstr "sadržaj"
-
-#: contrib/flatpages/models.py:12
-msgid "enable comments"
-msgstr "omogućite komentare"
-
-#: contrib/flatpages/models.py:13
-msgid "template name"
-msgstr "naziv templejta"
-
-#: contrib/flatpages/models.py:14
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "Primer: 'flatpages/kontakt-stranica.html'. Ako ne zadate sistem će koristiti 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:15
-msgid "registration required"
-msgstr "samo za registrovane korisnike"
-
-#: contrib/flatpages/models.py:15
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ako izaberete ovu opciju samo prijavljeni korisnici će imati pristup datoj strani."
-
-#: contrib/flatpages/models.py:20
-msgid "flat page"
-msgstr "statična strana"
-
-#: contrib/flatpages/models.py:21
-msgid "flat pages"
-msgstr "statične strane"
-
-# th/rd se ne koriste kod nas
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr ""
-
-# vidi "th"
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr ""
-
-# vidi "th"
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr ""
-
-# vidi "th"
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f miliona"
-msgstr[2] "%(value).1f miliona"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milijarda"
-msgstr[1] "%(value).1f milijarde"
-msgstr[2] "%(value).1f milijardi"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilion"
-msgstr[1] "%(value).1f biliona"
-msgstr[2] "%(value).1f biliona"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "jedan"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "dva"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tri"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "četiri"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "pet"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "šest"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "sedam"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "osam"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "devet"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "danas"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "sutra"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "juče"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:49
-#: contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135
-#: contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "U ovo polje se mogu uneti samo brojevi."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Morate unete 7 ili 8 cifara."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/ar/forms.py:80
-#, fuzzy
-msgid "Invalid CUIT."
-msgstr "Neispravan URL: %s"
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:10
-#, fuzzy
-msgid "Styria"
-msgstr "Srpski"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr ""
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr ""
-
-#: contrib/localflavor/at/forms.py:20
-#: contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-#, fuzzy
-msgid "Enter a zip code in the format XXXX."
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr ""
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:21
-#, fuzzy
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-# nesh: tel. brojevi su u američkom formatu, ovo se ionako neće koristiti u i18n delu
-#: contrib/localflavor/br/forms.py:30
-#, fuzzy
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
-
-#: contrib/localflavor/br/forms.py:58
-msgid "Select a valid brazilian state. That state is not one of the available states."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr ""
-
-#: contrib/localflavor/br/forms.py:136
-#, fuzzy
-msgid "This field requires at least 14 digits"
-msgstr "Obavezno polje."
-
-#: contrib/localflavor/ca/forms.py:17
-#, fuzzy
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:10
-#, fuzzy
-msgid "Berne"
-msgstr "korisničko ime"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:13
-#, fuzzy
-msgid "Glarus"
-msgstr "Grupe"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:16
-#, fuzzy
-msgid "Lucerne"
-msgstr "korisničko ime"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:24
-#, fuzzy
-msgid "Thurgau"
-msgstr "Četvrtak"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr ""
-
-#: contrib/localflavor/ch/ch_states.py:29
-#, fuzzy
-msgid "Zug"
-msgstr "avg"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr ""
-
-#: contrib/localflavor/ch/forms.py:64
-msgid "Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:29
-#, fuzzy
-msgid "Enter a valid Chilean RUT."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr ""
-
-#: contrib/localflavor/cl/forms.py:31
-#, fuzzy
-msgid "The Chilean RUT is not valid."
-msgstr "Neispravno polje."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:7
-#, fuzzy
-msgid "Berlin"
-msgstr "Brazilski"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:11
-#, fuzzy
-msgid "Hessen"
-msgstr "poruka"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr ""
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr ""
-
-#: contrib/localflavor/de/forms.py:14
-#: contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-#, fuzzy
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-#: contrib/localflavor/de/forms.py:41
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format."
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:22
-#, fuzzy
-msgid "Granada"
-msgstr "Nemački"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:26
-#, fuzzy
-msgid "Huesca"
-msgstr "Utorak"
-
-#: contrib/localflavor/es/es_provinces.py:27
-#, fuzzy
-msgid "Jaen"
-msgstr "Jan."
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:38
-#, fuzzy
-msgid "Palencia"
-msgstr "Galski"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:44
-#, fuzzy
-msgid "Segovia"
-msgstr "Slovenački"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:46
-#, fuzzy
-msgid "Soria"
-msgstr "Srpski"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:50
-#, fuzzy
-msgid "Valencia"
-msgstr "Galski"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr ""
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:14
-#, fuzzy
-msgid "Catalonia"
-msgstr "Italijanski"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:16
-#, fuzzy
-msgid "Galicia"
-msgstr "Galski"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr ""
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:39
-msgid "Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:66
-#, fuzzy
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Unesite ispravnu IP adresu."
-
-#: contrib/localflavor/es/forms.py:67
-#, fuzzy
-msgid "Please enter a valid NIF or NIE."
-msgstr "Unesite ispravan %s."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:142
-msgid "Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr ""
-
-#: contrib/localflavor/fi/forms.py:28
-#, fuzzy
-msgid "Enter a valid Finnish social security number."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/in_/forms.py:14
-#, fuzzy
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid "Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr ""
-
-#: contrib/localflavor/it/forms.py:14
-#, fuzzy
-msgid "Enter a valid zip code."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/it/forms.py:43
-#, fuzzy
-msgid "Enter a valid Social Security number."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/it/forms.py:68
-#, fuzzy
-msgid "Enter a valid VAT number."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-#, fuzzy
-msgid "Shimane"
-msgstr "Izmenite"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-#, fuzzy
-msgid "Ehime"
-msgstr "Vreme"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr ""
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:15
-#, fuzzy
-msgid "Campeche"
-msgstr "Češki"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de MÃ©xico"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "MichoacÃ¡n"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo LeÃ³n"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "QuerÃ©taro"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:35
-#, fuzzy
-msgid "Sinaloa"
-msgstr "Slovački"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis PotosÃ­"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "YucatÃ¡n"
-msgstr ""
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr ""
-
-#: contrib/localflavor/nl/forms.py:21
-#, fuzzy
-msgid "Enter a valid postal code"
-msgstr "Unesite ispravnu e-mail adresu."
-
-#: contrib/localflavor/nl/forms.py:52
-#, fuzzy
-msgid "Enter a valid phone number"
-msgstr "Unesite celi broj."
-
-#: contrib/localflavor/nl/forms.py:78
-#, fuzzy
-msgid "Enter a valid SoFi number"
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-#, fuzzy
-msgid "Drente"
-msgstr "Obrišite"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-#, fuzzy
-msgid "Gelderland"
-msgstr "Nemački"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr ""
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-#, fuzzy
-msgid "Utrecht"
-msgstr "Francuski"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-#, fuzzy
-msgid "Zeeland"
-msgstr "Islandski"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr ""
-
-#: contrib/localflavor/no/forms.py:33
-#, fuzzy
-msgid "Enter a valid Norwegian social security number."
-msgstr "Unesite ispravan decimalni broj."
-
-#: contrib/localflavor/pe/forms.py:24
-#, fuzzy
-msgid "This field requires 8 digits."
-msgstr "Obavezno polje."
-
-#: contrib/localflavor/pe/forms.py:52
-#, fuzzy
-msgid "This field requires 11 digits."
-msgstr "Obavezno polje."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "National Identification Number consists of 11 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:40
-msgid "Wrong checksum for the National Identification Number."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:73
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:113
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr ""
-
-#: contrib/localflavor/pl/forms.py:156
-#, fuzzy
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-#, fuzzy
-msgid "Opole"
-msgstr "Opcioni unos"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-#, fuzzy
-msgid "Pomerania"
-msgstr "Rumunski"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-#, fuzzy
-msgid "Silesia"
-msgstr "Slovenački"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr ""
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr ""
-
-#: contrib/localflavor/ro/forms.py:19
-#, fuzzy
-msgid "Enter a valid CIF."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/ro/forms.py:56
-#, fuzzy
-msgid "Enter a valid CNP."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr ""
-
-# nesh: tel. brojevi su u američkom formatu, ovo se ionako neće koristiti u i18n delu
-#: contrib/localflavor/ro/forms.py:171
-#, fuzzy
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
-
-#: contrib/localflavor/ro/forms.py:194
-#, fuzzy
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:23
-#, fuzzy
-msgid "Galanta"
-msgstr "Galski"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-#, fuzzy
-msgid "Gelnica"
-msgstr "Galski"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:42
-#, fuzzy
-msgid "Martin"
-msgstr "Ocene"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:65
-#, fuzzy
-msgid "Senica"
-msgstr "Slovenački"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-#, fuzzy
-msgid "Skalica"
-msgstr "Galski"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:76
-#, fuzzy
-msgid "Trencin"
-msgstr "Francuski"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr ""
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr ""
-
-#: contrib/localflavor/uk/forms.py:21
-#, fuzzy
-msgid "Enter a valid postcode."
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:44
-#, fuzzy
-msgid "Surrey"
-msgstr "Trenutno:"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:75
-#, fuzzy
-msgid "Borders"
-msgstr "Red:"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:79
-#, fuzzy
-msgid "Grampian"
-msgstr "Nemački"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:81
-#, fuzzy
-msgid "Lothian"
-msgstr "Prijavite se"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr ""
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr ""
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr ""
-
-#: contrib/localflavor/za/forms.py:20
-#, fuzzy
-msgid "Enter a valid South African ID number"
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/za/forms.py:54
-#, fuzzy
-msgid "Enter a valid South African postal code"
-msgstr "Unesite ispravno ime fajla."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr ""
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "preusmeri od"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "Unesite apsolutnu putanju bez imena domena. Primer: '/dogadjaji/pretraga/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "preusmeri ka"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "Može biti apsolutna putanja (kao gore) ili puni URL koji počinje sa 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "Preusmeravanje"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "Preusmeravanja"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "ključ sesije"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "podaci sesije"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "datum prestanka važenja sesije"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "sesija"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sesije"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "ime domena"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "naziv"
-
-#: contrib/sites/models.py:38
-msgid "site"
-msgstr "sajt"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "sajtovi"
-
-#: core/validators.py:76
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "Ovo polje može sadržati samo slova, brojeve, donju crtu (_), crtu (-) i kose crte."
-
-#: core/validators.py:80
-#, fuzzy
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Ovo polje može sadržati samo slova, brojeve, donju crtu (_), crtu (-) i kose crte."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Velika slova nisu dozvoljena."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Mala slova nisu dozvoljena."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Unesite brojeve razdvojene zarezima."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Unesite ispravne e-mail adrese razdvojene zarezima."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Unesite ispravnu IP adresu."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Prazne vrednosti nisu dozvoljene."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Ovde možete uneti samo brojeve."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Podatak se ne može sastojati samo od brojeva."
-
-#: core/validators.py:128
-#: forms/fields.py:158
-msgid "Enter a whole number."
-msgstr "Unesite celi broj."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Ovde možete koristiti samo slova."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Neispravan datum: %s"
-
-#: core/validators.py:152
-#: db/models/fields/__init__.py:574
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Unesite ispravan datum u YYYY-MM-DD formatu."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Unesite ispravno vreme u HH:MM formatu."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Unesite ispravan datum i vreme u YYYY-MM-DD HH:MM formatu."
-
-#: core/validators.py:166
-#: forms/fields.py:409
-msgid "Enter a valid e-mail address."
-msgstr "Unesite ispravnu e-mail adresu."
-
-#: core/validators.py:178
-#: core/validators.py:470
-#: forms/fields.py:427
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Fajl nije poslat, proverite tip enkoding form-a."
-
-#: core/validators.py:189
-#: forms/fields.py:467
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "Pošaljite ispravnu sliku. Fajl koji ste poslali ili nije slika ili je sam fajl oštećen."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s ne pokazuje na ispravnu sliku"
-
-# nesh: tel. brojevi su u američkom formatu, ovo se ionako neće koristiti u i18n delu
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefonski brojevi moraju biti u formatu XXX-XXX-XXXX. \"%s\" je neispravan."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s ne pokazuje na ispravni QuickTime video fajl."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "Unesite ispravan URL."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Unesite ispravan HTML. Greške su:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Neispravan XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Neispravan URL: %s"
-
-#: core/validators.py:255
-#: core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s je neispravan link."
-
-# nesh: Ni ovo nije interesantno za i18n
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Unesite ispravnu skraćenicu za U.S. državu."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pripazi na jezik! %s reč nije ovde dozvoljena."
-msgstr[1] "Pripazi na jezik! %s reči nisu ovde dozvoljene."
-msgstr[2] "Pripazi na jezik! %s reči nisu ovde dozvoljene."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Ovo polje mora biti jednako sa poljem '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Morate popuniti barem jedno polje."
-
-#: core/validators.py:312
-#: core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Popunite oba polja ili oba ostavite prazna."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Ovo polje mora biti uneto ako polje %(field)s ima vrednost %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Ovo polje mora biti uneto ako polje %(field)s nema vrednost %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Duple vrednosti nisu dozvoljene."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Vrednost mora biti između %(lower)s i %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Vrednost mora biti najmanje %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Vrednost ne sme biti veća od %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Vrednost mora biti stepena %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Unesite ispravan decimalni broj."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Unesite ispravan decimalni broj sa %s cifrom."
-msgstr[1] "Unesite ispravan decimalni broj sa %s cifre."
-msgstr[2] "Unesite ispravan decimalni broj sa %s cifara."
-
-#: core/validators.py:443
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Unesite ispravan decimalni broj sa celim delom od najviše %s cifre."
-msgstr[1] "Unesite ispravan decimalni broj sa celim delom od najviše %s cifre."
-msgstr[2] "Unesite ispravan decimalni broj sa celim delom od najviše %s cifara."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Unesite decimalni broj sa najviše %s decimalnim mestom."
-msgstr[1] "Unesite decimalni broj sa najviše %s decimalna mesta."
-msgstr[2] "Unesite decimalni broj sa najviše %s decimalnih mesta."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Unesite ispravan decimalni broj."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Veličina fajla mora biti najmanje %s bajtova."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Veličina fajla mora biti najviše %s bajtova."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Pogrešan format polja."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Neispravno polje."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Ništa nije moglo da se skine sa URL-a %s."
-
-#: core/validators.py:535
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "Sa URL-a %(url)s se vratio pogrešan Content-Type header '%(contenttype)s'."
-
-#: core/validators.py:568
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "Zatvorite nezatvoren tag \"%(tag)s\" iz reda %(line)s. (Red počinje sa \"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "Tekst koji počinje u redu %(line)s nije dozvoljen u ovom kontekstu. (Red počinje sa \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "Atribut \"%(attr)s\" u red %(line)s je neispravan. (Red počinje sa \"%(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "Tag \"<%(tag)s>\" u redu %(line)s je neispravan. (Red počinje \"%(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "Tag-u u redu %(line)s nedostaje jedan ili više atributa. (Red počinje sa \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "Atribut \"%(attr)s\" u redu %(line)s ima neispravnu vrednost. (Red počinje sa \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s sa ovim tipom %(type)s već postoji za polje %(field)s."
-
-#: db/models/fields/__init__.py:47
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s sa ovim %(fieldname)s već postoji."
-
-#: db/models/fields/__init__.py:175
-#: db/models/fields/__init__.py:348
-#: db/models/fields/__init__.py:797
-#: db/models/fields/__init__.py:808
-#: forms/fields.py:52
-#: oldforms/__init__.py:374
-msgid "This field is required."
-msgstr "Obavezno polje."
-
-#: db/models/fields/__init__.py:462
-msgid "This value must be an integer."
-msgstr "Vrednost mora biti celi broj."
-
-#: db/models/fields/__init__.py:508
-msgid "This value must be either True or False."
-msgstr "Vrednost mora biti True ili False."
-
-#: db/models/fields/__init__.py:537
-msgid "This field cannot be null."
-msgstr "Polje ne može sadržati praznu vrednost."
-
-#: db/models/fields/__init__.py:639
-#: db/models/fields/__init__.py:656
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[ss[.uuuuuu]] format."
-msgstr "Unesite ispravan datum i vreme u YYYY-MM-DD HH:MM[ss[.uuuuuu]] formatu."
-
-#: db/models/fields/__init__.py:712
-msgid "This value must be a decimal number."
-msgstr "Vrednost mora biti decimalni broj."
-
-#: db/models/fields/__init__.py:817
-msgid "Enter a valid filename."
-msgstr "Unesite ispravno ime fajla."
-
-#: db/models/fields/__init__.py:1018
-msgid "This value must be either None, True or False."
-msgstr "Vrednost mora biti None, True ili False."
-
-#: db/models/fields/__init__.py:1133
-#: db/models/fields/__init__.py:1146
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Unesite ispravno vreme u HH:MM[:ss[.uuuuuu]]  formatu."
-
-#: db/models/fields/related.py:93
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Unesite ispravan %s."
-
-#: db/models/fields/related.py:730
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Koristite \"Ctrl\" (PC) ili \"Jabuku\" (Mek) da bi ste selektovali više stavki."
-
-#: db/models/fields/related.py:774
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
-msgstr[1] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
-msgstr[2] "Unesite validne %(self)s ID-ove. Vrednost %(value)r je neispravna."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Unesite ispravnu vrednost."
-
-#: forms/fields.py:130
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr "Proverite dužinu, maksimum je %(max)d karaktera (dobijeno %(length)d)."
-
-#: forms/fields.py:131
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr "Proverite dužinu, minimum je %(min)d karaktera (dobijeno %(length)d)."
-
-#: forms/fields.py:159
-#: forms/fields.py:188
-#: forms/fields.py:217
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Vrednost mora biti manja ili jednaka %s."
-
-#: forms/fields.py:160
-#: forms/fields.py:189
-#: forms/fields.py:218
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Proverite da li je vrednost veća ili jednaka %s."
-
-#: forms/fields.py:187
-#: forms/fields.py:216
-msgid "Enter a number."
-msgstr "Unesite broj."
-
-#: forms/fields.py:219
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Proverite da nema više od %s cifara."
-
-#: forms/fields.py:220
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Proverite da nema više od %s decimalnih mesta."
-
-#: forms/fields.py:221
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Proverite da nema više od %s cifara u celom delu."
-
-#: forms/fields.py:269
-#: forms/fields.py:799
-msgid "Enter a valid date."
-msgstr "Unesite ispravan datum."
-
-#: forms/fields.py:302
-#: forms/fields.py:800
-msgid "Enter a valid time."
-msgstr "Unesite ispravno vreme."
-
-#: forms/fields.py:341
-msgid "Enter a valid date/time."
-msgstr "Unesite ispravan datum i vreme."
-
-#: forms/fields.py:428
-msgid "No file was submitted."
-msgstr "Fajl nije poslat."
-
-#: forms/fields.py:429
-#: oldforms/__init__.py:693
-msgid "The submitted file is empty."
-msgstr "Poslati fajl je prazan."
-
-#: forms/fields.py:528
-msgid "Enter a valid URL."
-msgstr "Unesite ispravan URL."
-
-#: forms/fields.py:529
-msgid "This URL appears to be a broken link."
-msgstr "URL je neispravan link."
-
-#: forms/fields.py:597
-#: forms/fields.py:648
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Izaberite validnu opciju. %(value)s nije među njima."
-
-#: forms/fields.py:649
-#: forms/fields.py:710
-#: forms/models.py:581
-msgid "Enter a list of values."
-msgstr "Unesite listu vrednosti."
-
-#: forms/fields.py:828
-msgid "Enter a valid IPv4 address."
-msgstr "Unesite IPv4 adresu."
-
-#: forms/models.py:514
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izaberite validnu opciju. Izabrana opcija nije validna."
-
-#: forms/models.py:582
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Izaberite validnu opciju. Opcija %s nije validna."
-
-#: oldforms/__init__.py:409
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Tekst mora imati manje od %s slova."
-msgstr[1] "Tekst mora imati manje od %s slova."
-msgstr[2] "Tekst mora imati manje od %s slova."
-
-#: oldforms/__init__.py:414
-msgid "Line breaks are not allowed here."
-msgstr "Novi redovi ovde nisu dozvoljeni."
-
-#: oldforms/__init__.py:512
-#: oldforms/__init__.py:586
-#: oldforms/__init__.py:625
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Izaberite validnu opciju: '%(data)s' nije u %(choices)s."
-
-#: oldforms/__init__.py:754
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Unesite celi broj između -32,768 i 32,767."
-
-#: oldforms/__init__.py:764
-msgid "Enter a positive number."
-msgstr "Unesite pozitivan broj."
-
-#: oldforms/__init__.py:774
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Unesite celi broj između 0 i 32,767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "da,ne,možda"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajta"
-msgstr[2] "%(size)d bajtova"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr ""
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr ""
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr ""
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "popodne"
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "prepodne"
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "popodne"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "prepodne"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "ponoć"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "podne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Ponedeljak"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Utorak"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Sreda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Četvrtak"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Petak"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Subota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Nedelja"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Pon"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Uto"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Sre"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Čet"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Pet"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sub"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Ned"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:18
-#: utils/dates.py:31
-msgid "June"
-msgstr "Jun"
-
-#: utils/dates.py:19
-#: utils/dates.py:31
-msgid "July"
-msgstr "Jul"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Avgust"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Septembar"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktobar"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Novembar"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Decembar"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "avg"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Avg."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "ili"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "godina"
-msgstr[1] "godine"
-msgstr[2] "godina"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mesec"
-msgstr[1] "meseca"
-msgstr[2] "meseci"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "nedelja"
-msgstr[1] "nedelje"
-msgstr[2] "nedelja"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dan"
-msgstr[1] "dana"
-msgstr[2] "dana"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "sat"
-msgstr[1] "sata"
-msgstr[2] "sati"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minut"
-msgstr[1] "munuta"
-msgstr[2] "minuta"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuta"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(type)s: %(number)d"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(type)s: %(number)d"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "D, d.m.Y."
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "d.m.Y. H:i:s"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i:s"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "m.Y."
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "d.m."
-
-#: views/generic/create_update.py:129
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s uspešno kreiran."
-
-#: views/generic/create_update.py:172
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s uspešno promenjen."
-
-#: views/generic/create_update.py:214
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s je obrisan."
-
-#~ msgid "Added %s."
-#~ msgstr "Dodat %s"
-#~ msgid "Deleted %s."
-#~ msgstr "Obrisan %s."
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr ""
-#~ "Da li ste <a href=\"/password_reset/\">zaboravili vašu lozinku?</a>?"
-#~ msgid "Ordering"
-#~ msgstr "Redosled"
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "Koristite '[algo]$[salt]$[hexdigest]'"
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "Odvojite višestruke ID-ove zarezima."
-#~ msgid "Comment"
-#~ msgstr "Komentar"
-#~ msgid "Comments"
-#~ msgstr "Komentari"
-#~ msgid "String (up to 50)"
-#~ msgstr "Niz karaktera (maksimalno 50 karaktera)"
-#~ msgid "label"
-#~ msgstr "labela"
-#~ msgid "package"
-#~ msgstr "paket"
-#~ msgid "packages"
-#~ msgstr "paketi"
-#~ msgid "Error in Template"
-#~ msgstr "Greška u templejtu"
-#~ msgid ""
-#~ "\n"
-#~ "In template %(name)s, error at line %(line)s:\n"
-#~ msgstr ""
-#~ "\n"
-#~ "U templejtu %(name)s, greška u redu %(line)s:\n"
-
-#, fuzzy
-#~ msgid "count"
-#~ msgstr "sadržaj"
-
diff --git a/webapp/django/conf/locale/sr/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 1de8977..0000000
--- a/webapp/django/conf/locale/sr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sr/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/sr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c1338be..0000000
--- a/webapp/django/conf/locale/sr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,120 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-07-29 12:07+0200\n"
-"PO-Revision-Date: 2008-07-29 12:53+0100\n"
-"Last-Translator: Nebojsa Djordjevic <djnesh@gmail.com>\n"
-"Language-Team: Nesh <djnesh@gmail.com> & Petar <petar.maric@gmail.com> <sr@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Country: YUGOSLAVIA\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Poedit-Language: Serbian\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Dostupno %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Izaberite sve"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Dodajte"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Izbacite"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Izabrano %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Izaberite potrebno i kliknite"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Obrišite sve"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid "January February March April May June July August September October November December"
-msgstr "Januar Februar Mart April Maj Jun Jul Avgust Septembar Oktobar Novembar Decembar"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "N P U S Č P S"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Nedelja Ponedeljak Utorak Sreda Četvrtak Petak Subota"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Prikaži"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Sakrij"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Sada"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Sat"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Izaberite vreme"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Ponoć"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "6 sati"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Podne"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Poništi"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "Danas"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalendar"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "Juče"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "Sutra"
-
diff --git a/webapp/django/conf/locale/sv/LC_MESSAGES/django.mo b/webapp/django/conf/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index b4870c7..0000000
--- a/webapp/django/conf/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sv/LC_MESSAGES/django.po b/webapp/django/conf/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 3d0a437..0000000
--- a/webapp/django/conf/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,4570 +0,0 @@
-# Swedish translation of Django
-# Copyright (C) 2005-2007
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-19 01:28+0200\n"
-"PO-Revision-Date: 2008-05-26 11:15+0200\n"
-"Last-Translator: Ludvig Ericson <ludvig.ericson@gmail.com>\n"
-"Language-Team: Django I18N <Django-I18N@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Language: Swedish\n"
-"X-Poedit-Country: SWEDEN\n"
-
-#: conf/global_settings.py:44
-msgid "Arabic"
-msgstr "Arabiska"
-
-#: conf/global_settings.py:45
-msgid "Bengali"
-msgstr "Bengaliska"
-
-#: conf/global_settings.py:46
-msgid "Bulgarian"
-msgstr "Bulgariska"
-
-#: conf/global_settings.py:47
-msgid "Catalan"
-msgstr "Katalanska"
-
-#: conf/global_settings.py:48
-msgid "Czech"
-msgstr "Tjeckiska"
-
-#: conf/global_settings.py:49
-msgid "Welsh"
-msgstr "Walesiska"
-
-#: conf/global_settings.py:50
-msgid "Danish"
-msgstr "Danska"
-
-#: conf/global_settings.py:51
-msgid "German"
-msgstr "Tyska"
-
-#: conf/global_settings.py:52
-msgid "Greek"
-msgstr "Grekiska"
-
-#: conf/global_settings.py:53
-msgid "English"
-msgstr "Engelska"
-
-#: conf/global_settings.py:54
-msgid "Spanish"
-msgstr "Spanska"
-
-#: conf/global_settings.py:55
-msgid "Estonian"
-msgstr "Estländska"
-
-#: conf/global_settings.py:56
-msgid "Argentinean Spanish"
-msgstr "Argentisk Spanska"
-
-#: conf/global_settings.py:57
-msgid "Basque"
-msgstr "Baskiska"
-
-#: conf/global_settings.py:58
-msgid "Persian"
-msgstr "Persiska"
-
-#: conf/global_settings.py:59
-msgid "Finnish"
-msgstr "Finska"
-
-#: conf/global_settings.py:60
-msgid "French"
-msgstr "Franska"
-
-#: conf/global_settings.py:61
-msgid "Irish"
-msgstr "Irländska"
-
-#: conf/global_settings.py:62
-msgid "Galician"
-msgstr "Galisiska"
-
-#: conf/global_settings.py:63
-msgid "Hungarian"
-msgstr "Ungerska"
-
-#: conf/global_settings.py:64
-msgid "Hebrew"
-msgstr "Hebreiska"
-
-#: conf/global_settings.py:65
-msgid "Croatian"
-msgstr "Kroatiska"
-
-#: conf/global_settings.py:66
-msgid "Icelandic"
-msgstr "Isländska"
-
-#: conf/global_settings.py:67
-msgid "Italian"
-msgstr "Italienska"
-
-#: conf/global_settings.py:68
-msgid "Japanese"
-msgstr "Japanska"
-
-#: conf/global_settings.py:69
-msgid "Georgian"
-msgstr "Georgiska"
-
-#: conf/global_settings.py:70
-msgid "Korean"
-msgstr "Koreanska"
-
-#: conf/global_settings.py:71
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:72
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:73
-msgid "Latvian"
-msgstr "Lettiska"
-
-#: conf/global_settings.py:74
-msgid "Lithuanian"
-msgstr "Lettiska"
-
-#: conf/global_settings.py:75
-msgid "Macedonian"
-msgstr "Makedonska"
-
-#: conf/global_settings.py:76
-msgid "Dutch"
-msgstr "Holländska"
-
-#: conf/global_settings.py:77
-msgid "Norwegian"
-msgstr "Norska"
-
-#: conf/global_settings.py:78
-msgid "Polish"
-msgstr "Polska"
-
-#: conf/global_settings.py:79
-msgid "Portugese"
-msgstr "Portugisiska"
-
-#: conf/global_settings.py:80
-msgid "Brazilian Portuguese"
-msgstr "Brasiliensk portugisiska"
-
-#: conf/global_settings.py:81
-msgid "Romanian"
-msgstr "Rumänska"
-
-#: conf/global_settings.py:82
-msgid "Russian"
-msgstr "Ryska"
-
-#: conf/global_settings.py:83
-msgid "Slovak"
-msgstr "Slovakiska"
-
-#: conf/global_settings.py:84
-msgid "Slovenian"
-msgstr "Slovenska"
-
-#: conf/global_settings.py:85
-msgid "Serbian"
-msgstr "Serbiska"
-
-#: conf/global_settings.py:86
-msgid "Swedish"
-msgstr "Svenska"
-
-#: conf/global_settings.py:87
-msgid "Tamil"
-msgstr "Tamilska"
-
-#: conf/global_settings.py:88
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:89
-msgid "Turkish"
-msgstr "Turkiska"
-
-#: conf/global_settings.py:90
-msgid "Ukrainian"
-msgstr "Ukrainska"
-
-#: conf/global_settings.py:91
-msgid "Simplified Chinese"
-msgstr "Förenklad Kinesiska"
-
-#: conf/global_settings.py:92
-msgid "Traditional Chinese"
-msgstr "Traditionell Kinesiska"
-
-#: contrib/admin/filterspecs.py:44
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>Av %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:74 contrib/admin/filterspecs.py:92
-#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173
-msgid "All"
-msgstr "Alla"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Any date"
-msgstr "Alla datum"
-
-#: contrib/admin/filterspecs.py:114
-msgid "Today"
-msgstr "Idag"
-
-#: contrib/admin/filterspecs.py:117
-msgid "Past 7 days"
-msgstr "Senaste 7 dagarna"
-
-#: contrib/admin/filterspecs.py:119
-msgid "This month"
-msgstr "Denna månad"
-
-#: contrib/admin/filterspecs.py:121
-msgid "This year"
-msgstr "Detta år"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Yes"
-msgstr "Ja"
-
-#: contrib/admin/filterspecs.py:147 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "No"
-msgstr "Nej"
-
-#: contrib/admin/filterspecs.py:154 forms/widgets.py:379
-#: oldforms/__init__.py:588
-msgid "Unknown"
-msgstr "Okänt"
-
-#: contrib/admin/models.py:19
-msgid "action time"
-msgstr "händelsetid"
-
-#: contrib/admin/models.py:22
-msgid "object id"
-msgstr "objektets id"
-
-#: contrib/admin/models.py:23
-msgid "object repr"
-msgstr "objektets beskrivning"
-
-#: contrib/admin/models.py:24
-msgid "action flag"
-msgstr "händelseflagga"
-
-#: contrib/admin/models.py:25
-msgid "change message"
-msgstr "ändra meddelande"
-
-#: contrib/admin/models.py:28
-msgid "log entry"
-msgstr "loggpost"
-
-#: contrib/admin/models.py:29
-msgid "log entries"
-msgstr "loggposter"
-
-#: contrib/admin/options.py:56 contrib/admin/options.py:115
-msgid "None"
-msgstr "Inget"
-
-#: contrib/admin/options.py:326
-#, python-format
-msgid "Changed %s."
-msgstr "Ändrade %s."
-
-#: contrib/admin/options.py:326 contrib/admin/options.py:336
-#: core/validators.py:279 db/models/manipulators.py:305
-msgid "and"
-msgstr "och"
-
-#: contrib/admin/options.py:331
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Lade till %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:335
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Ändrade %(list)s på %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:340
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Tog bort %(name)s \"%(object)s\"."
-
-#: contrib/admin/options.py:344
-msgid "No fields changed."
-msgstr "Inga fält ändrade."
-
-#: contrib/admin/options.py:405 contrib/auth/admin.py:50
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" lades till."
-
-#: contrib/admin/options.py:409 contrib/admin/options.py:442
-#: contrib/auth/admin.py:55
-msgid "You may edit it again below."
-msgstr "Du kan ändra det igen nedanför."
-
-#: contrib/admin/options.py:419 contrib/admin/options.py:452
-#, python-format
-msgid "You may add another %s below."
-msgstr "Du kan lägga till ytterligare %s nedanför."
-
-#: contrib/admin/options.py:440
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ändrades."
-
-#: contrib/admin/options.py:448
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" lades till. Du kan redigera objektet igen nedanför."
-
-#: contrib/admin/options.py:514
-#, python-format
-msgid "Add %s"
-msgstr "Lägg till %s"
-
-#: contrib/admin/options.py:591
-#, python-format
-msgid "Change %s"
-msgstr "Ändra %s"
-
-#: contrib/admin/options.py:622
-msgid "Database error"
-msgstr "Databasfel"
-
-#: contrib/admin/options.py:671
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" togs bort."
-
-#: contrib/admin/options.py:678
-msgid "Are you sure?"
-msgstr "Är du säker?"
-
-#: contrib/admin/options.py:705
-#, python-format
-msgid "Change history: %s"
-msgstr "Ändringshistorik: %s"
-
-#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:16
-#: contrib/auth/forms.py:72 contrib/comments/views/comments.py:56
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Var god ange ett korrekt användarnamn och lösenord. Tänk på att skilja "
-"mellan gemener och versaler."
-
-#: contrib/admin/sites.py:238 contrib/admin/views/decorators.py:68
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Du måste logga in igen eftersom din session har förfallit. Oroa dig inte: "
-"Din data har sparats."
-
-#: contrib/admin/sites.py:245 contrib/admin/views/decorators.py:75
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Det verkar som att din webläsare inte är konfigurerad att acceptera cookies. "
-"Aktivera cookies, ladda om denna sida och försök igen."
-
-#: contrib/admin/sites.py:259 contrib/admin/sites.py:265
-#: contrib/admin/views/decorators.py:92
-msgid "Usernames cannot contain the '@' character."
-msgstr "Användarnamn får inte innehålla '@'-tecknet."
-
-#: contrib/admin/sites.py:262 contrib/admin/views/decorators.py:88
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Din e-postadress är inte ditt användarnamn. Försök med '%s' istället."
-
-#: contrib/admin/sites.py:330
-msgid "Site administration"
-msgstr "Webbplatsadministration"
-
-#: contrib/admin/sites.py:352 contrib/admin/templates/admin/login.html:27
-#: contrib/admin/templates/registration/password_reset_complete.html:14
-#: contrib/admin/views/decorators.py:30
-msgid "Log in"
-msgstr "Logga in"
-
-#: contrib/admin/util.py:138
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Ett eller flera %(fieldname)s i %(name)s: %(obj)s"
-
-#: contrib/admin/util.py:143
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Ett eller flera %(fieldname)s i %(name)s:"
-
-#: contrib/admin/widgets.py:65
-msgid "Date:"
-msgstr "Datum:"
-
-#: contrib/admin/widgets.py:65
-msgid "Time:"
-msgstr "Tid:"
-
-#: contrib/admin/widgets.py:89
-msgid "Currently:"
-msgstr "Aktuell:"
-
-#: contrib/admin/widgets.py:89
-msgid "Change:"
-msgstr "Ändra:"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Sidan kunde inte hittas"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Vi beklagar men den begärda sidan hittades inte."
-
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/change_form.html:17
-#: contrib/admin/templates/admin/change_list.html:8
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/auth/user/change_password.html:10
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Hem"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Serverfel"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Serverfel (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfel <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ett fel har uppstått. Administratören har meddelats via e-post och felet bör "
-"vara åtgärdat inom kort. Tack för visat tålamod."
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Välkommen,"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:13
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-msgid "Change password"
-msgstr "Ändra lösenord"
-
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/comments/templates/comments/form.html:6
-msgid "Log out"
-msgstr "Logga ut"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django webbplatsadministration"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-administration"
-
-#: contrib/admin/templates/admin/change_form.html:19
-#: contrib/admin/templates/admin/index.html:29
-msgid "Add"
-msgstr "Lägg till"
-
-#: contrib/admin/templates/admin/change_form.html:26
-#: contrib/admin/templates/admin/object_history.html:5
-msgid "History"
-msgstr "Historik"
-
-#: contrib/admin/templates/admin/change_form.html:27
-msgid "View on site"
-msgstr "Visa på webbplats"
-
-#: contrib/admin/templates/admin/change_form.html:37
-#: contrib/admin/templates/admin/auth/user/change_password.html:22
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Rätta till felet nedan."
-msgstr[1] "Rätta till felen nedan."
-
-#: contrib/admin/templates/admin/change_list.html:16
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lägg till %(name)s"
-
-#: contrib/admin/templates/admin/change_list.html:26
-msgid "Filter"
-msgstr "Filter"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/edit_inline/tabular.html:15
-msgid "Delete"
-msgstr "Ta bort"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:15
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att "
-"relaterade objekt togs bort, men ditt konto har inte rättigheter att ta bort "
-"följande objekttyper:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:22
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Är du säker på att du vill ta bort %(object_name)s \"%(escaped_object)s\"? "
-"Följande relaterade objekt kommer att tas bort:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:27
-msgid "Yes, I'm sure"
-msgstr "Ja, jag är säker"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Av %(filter_title)s "
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "Modeller tillgängliga i applikationen %(name)s."
-
-#: contrib/admin/templates/admin/index.html:19
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:35
-msgid "Change"
-msgstr "Ändra"
-
-#: contrib/admin/templates/admin/index.html:45
-msgid "You don't have permission to edit anything."
-msgstr "Du har inte rättigheter att redigera något."
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "Recent Actions"
-msgstr "Senaste Händelser"
-
-#: contrib/admin/templates/admin/index.html:54
-msgid "My Actions"
-msgstr "Mina händelser"
-
-#: contrib/admin/templates/admin/index.html:58
-msgid "None available"
-msgstr "Inga tillgängliga"
-
-#: contrib/admin/templates/admin/invalid_setup.html:7
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Någonting är fel med din databasinstallation. Se till att de rätta "
-"databastabellerna har skapats och att databasen är läsbar av rätt användare."
-
-#: contrib/admin/templates/admin/login.html:19
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-msgid "Username:"
-msgstr "Användarnamn:"
-
-#: contrib/admin/templates/admin/login.html:22
-#: contrib/comments/templates/comments/form.html:8
-msgid "Password:"
-msgstr "Lösenord:"
-
-#: contrib/admin/templates/admin/object_history.html:16
-msgid "Date/time"
-msgstr "Datum tid"
-
-#: contrib/admin/templates/admin/object_history.html:17
-msgid "User"
-msgstr "Användare"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Action"
-msgstr "Händelse"
-
-#: contrib/admin/templates/admin/object_history.html:24
-msgid "DATE_WITH_TIME_FULL"
-msgstr "Y-m-d H:i:s"
-
-#: contrib/admin/templates/admin/object_history.html:32
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Detta objekt har ingen ändringshistorik. Det lades antagligen inte till via "
-"denna administrationssida."
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Visa alla"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Sök"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 resultat"
-msgstr[1] "%(counter)s resultat"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totalt"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Spara som ny"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Spara och lägg till ny"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Spara och fortsätt redigera"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Spara"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Ange först ett användarnamn och ett lösenord. Efter det kommer du att få "
-"fler användaralternativ."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:13
-#: contrib/auth/forms.py:14 contrib/auth/forms.py:51
-msgid "Username"
-msgstr "Användarnamn"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:20
-#: contrib/admin/templates/admin/auth/user/change_password.html:33
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:52 contrib/auth/forms.py:176
-msgid "Password"
-msgstr "Lösenord"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:26
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/auth/forms.py:177
-msgid "Password (again)"
-msgstr "Lösenord (igen)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:27
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "Fyll i samma lösenord som ovan för verifiering."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:26
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Ange nytt lösenord för användare <strong>%(username)s</strong>."
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tack för att du spenderade lite kvalitetstid med webbplatsen idag."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logga in igen"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Ändra lösenord"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Lösenordet ändrades"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Ditt lösenord har ändrats."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Var god fyll i ditt gamla lösenord för säkerhets skull och skriv sedan in "
-"ditt nya lösenord två gånger så vi kan kontrollera att du skrev det rätt."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Gammalt lösenord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-#: contrib/admin/templates/registration/password_reset_confirm.html:18
-msgid "New password:"
-msgstr "Nytt lösenord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-#: contrib/admin/templates/registration/password_reset_confirm.html:20
-msgid "Confirm password:"
-msgstr "Bekräfta lösenord:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-#: contrib/admin/templates/registration/password_reset_confirm.html:21
-msgid "Change my password"
-msgstr "Ändra mitt lösenord"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:4
-#: contrib/admin/templates/registration/password_reset_confirm.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "Nollställ lösenord"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:6
-#: contrib/admin/templates/registration/password_reset_complete.html:10
-msgid "Password reset complete"
-msgstr "Nollställning av lösenord klar"
-
-#: contrib/admin/templates/registration/password_reset_complete.html:12
-msgid "Your password has been set.  You may go ahead and log in now."
-msgstr "Ditt lösenord har ändrats.  Du kan nu logga in."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:4
-msgid "Password reset confirmation"
-msgstr "Bekräftelse av lösenordsnollställning"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:12
-msgid "Enter new password"
-msgstr "Fyll i lösenord"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:14
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Var god fyll i ditt nya lösenord två gånger så vi kan kontrollera att du "
-"skrev det rätt."
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:26
-msgid "Password reset unsuccessful"
-msgstr "Lösenordsnollställning misslyckad"
-
-#: contrib/admin/templates/registration/password_reset_confirm.html:28
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used.  Please request a new password reset."
-msgstr ""
-"Länken för lösenordsnollställning var felaktig, möjligen därför att den "
-"redan använts.  Var god skicka en ny nollställningsförfrågan."
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Lösenordsnollställning lyckades"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed you instructions for setting your password to the e-mail "
-"address you submitted. You should be receiving it shortly."
-msgstr ""
-"Vi har skickat ett e-postmeddelande med instruktioner för att ändra ditt "
-"lösenord till den e-postaddress du angivit. Det bör anlända inom kort."
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr ""
-"Du får detta e-postbrev eftersom du bad om att få lösenordet nollställt"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "för ditt användarkonto på %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-msgid "Please go to the following page and choose a new password:"
-msgstr "Var god gå till följande sida och välj ett nytt lösenord:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:9
-msgid "Your username, in case you've forgotten:"
-msgstr "Ditt användarnamn (i fall du skulle ha glömt det):"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Thanks for using our site!"
-msgstr "Tack för att du använder vår webbplats!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s-teamet"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
-"instructions for setting a new one."
-msgstr ""
-"Glömt ditt lösenord? Fyll i din e-postadress nedan så skickar vi ett e-"
-"postmeddelande med instruktioner för hur du ställer in ett nytt."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-postadress:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Nollställ mitt lösenord"
-
-#: contrib/admin/templatetags/admin_list.py:284
-msgid "All dates"
-msgstr "Alla datum"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s"
-msgstr "Välj %s"
-
-#: contrib/admin/views/main.py:65
-#, python-format
-msgid "Select %s to change"
-msgstr "Välj %s att ändra"
-
-#: contrib/admin/views/template.py:36 contrib/sites/models.py:38
-msgid "site"
-msgstr "webbplats"
-
-#: contrib/admin/views/template.py:38
-msgid "template"
-msgstr "mall"
-
-#: contrib/admindocs/views.py:53 contrib/admindocs/views.py:55
-#: contrib/admindocs/views.py:57
-msgid "tag:"
-msgstr "tagg:"
-
-#: contrib/admindocs/views.py:87 contrib/admindocs/views.py:89
-#: contrib/admindocs/views.py:91
-msgid "filter:"
-msgstr "filter:"
-
-#: contrib/admindocs/views.py:153 contrib/admindocs/views.py:155
-#: contrib/admindocs/views.py:157
-msgid "view:"
-msgstr "vy:"
-
-#: contrib/admindocs/views.py:187
-#, python-format
-msgid "App %r not found"
-msgstr "Applikation %r hittades inte"
-
-#: contrib/admindocs/views.py:194
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modell %(model_name)r hittades inte i applikation %(app_label)r"
-
-#: contrib/admindocs/views.py:206
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "det relaterade `%(app_label)s.%(data_type)s`-objektet"
-
-#: contrib/admindocs/views.py:206 contrib/admindocs/views.py:228
-#: contrib/admindocs/views.py:242 contrib/admindocs/views.py:247
-msgid "model:"
-msgstr "modell:"
-
-#: contrib/admindocs/views.py:237
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "relaterade `%(app_label)s.%(object_name)s`-objekt"
-
-#: contrib/admindocs/views.py:242
-#, python-format
-msgid "all %s"
-msgstr "alla %s"
-
-#: contrib/admindocs/views.py:247
-#, python-format
-msgid "number of %s"
-msgstr "antal %s"
-
-#: contrib/admindocs/views.py:253
-#, python-format
-msgid "Fields on %s objects"
-msgstr "Fält på %s objekt"
-
-#: contrib/admindocs/views.py:317 contrib/admindocs/views.py:328
-#: contrib/admindocs/views.py:330 contrib/admindocs/views.py:336
-#: contrib/admindocs/views.py:337 contrib/admindocs/views.py:339
-msgid "Integer"
-msgstr "Heltal"
-
-#: contrib/admindocs/views.py:318
-msgid "Boolean (Either True or False)"
-msgstr "Boolesk (antingen True eller False)"
-
-#: contrib/admindocs/views.py:319 contrib/admindocs/views.py:338
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Sträng (upp till %(max_length)s)"
-
-#: contrib/admindocs/views.py:320
-msgid "Comma-separated integers"
-msgstr "Komma-separerade heltal"
-
-#: contrib/admindocs/views.py:321
-msgid "Date (without time)"
-msgstr "Datum (utan tid)"
-
-#: contrib/admindocs/views.py:322
-msgid "Date (with time)"
-msgstr "Datum (med tid)"
-
-#: contrib/admindocs/views.py:323
-msgid "Decimal number"
-msgstr "Decimaltal"
-
-#: contrib/admindocs/views.py:324
-msgid "E-mail address"
-msgstr "E-postadress"
-
-#: contrib/admindocs/views.py:325 contrib/admindocs/views.py:326
-#: contrib/admindocs/views.py:329
-msgid "File path"
-msgstr "Sökväg till fil"
-
-#: contrib/admindocs/views.py:327
-msgid "Floating point number"
-msgstr "Flyttal"
-
-#: contrib/admindocs/views.py:331 contrib/comments/models.py:89
-msgid "IP address"
-msgstr "IP-adress"
-
-#: contrib/admindocs/views.py:333
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolesk (antingen True, False eller None)"
-
-#: contrib/admindocs/views.py:334
-msgid "Relation to parent model"
-msgstr "Relation till förälder-modell"
-
-#: contrib/admindocs/views.py:335
-msgid "Phone number"
-msgstr "Telefonnummer"
-
-#: contrib/admindocs/views.py:340
-msgid "Text"
-msgstr "Text"
-
-#: contrib/admindocs/views.py:341
-msgid "Time"
-msgstr "Tid"
-
-#: contrib/admindocs/views.py:342 contrib/flatpages/admin.py:8
-#: contrib/flatpages/models.py:8
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admindocs/views.py:343
-msgid "U.S. state (two uppercase letters)"
-msgstr "Delstat i USA (två versaler)"
-
-#: contrib/admindocs/views.py:344
-msgid "XML text"
-msgstr "XML-text"
-
-#: contrib/admindocs/views.py:370
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s verkar inte vara ett urlpattern-objekt"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Smarta bokmärken"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4
-msgid "Documentation bookmarklets"
-msgstr "Smarta bokmärken för dokumentation"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">För att installera smarta bokmärken, dra länken till din\n"
-"verktygsrad med bokmärken, eller högerklicka på länken och lägg till den\n"
-"till dina bokmärken. Nu kan du välja det smarta bokmärket från alla sidor\n"
-"på webbplatsen. Observera att några av dessa smarta bokmärken kräver att du "
-"besöker\n"
-"sidan från en dator som är \"intern\" (kontakta din systemadministratör\n"
-"om du inte är säker på om din dator är \"intern\").</p>\n"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18
-msgid "Documentation for this page"
-msgstr "Dokumentation för denna sida"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Förflyttar dig från valfri sida till dokumentationen för vyn som genererar "
-"den sidan."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21
-msgid "Show object ID"
-msgstr "Visa objektets ID"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Visa innehållstypen och det unika ID-numret för sidor som representerar ett "
-"enskilt objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24
-msgid "Edit this object (current window)"
-msgstr "Redigera detta objekt (aktuellt fönster)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Hoppar till administrationssidan för sidor som representerar ett enskilt "
-"objekt."
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27
-msgid "Edit this object (new window)"
-msgstr "Redigera detta objekt (nytt fönster)"
-
-#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28
-msgid "As above, but opens the admin page in a new window."
-msgstr "Som ovan, men öppnar administrationssidan i ett nytt fönster."
-
-#: contrib/auth/admin.py:21
-msgid "Personal info"
-msgstr "Personlig information"
-
-#: contrib/auth/admin.py:22
-msgid "Permissions"
-msgstr "Rättigheter"
-
-#: contrib/auth/admin.py:23
-msgid "Important dates"
-msgstr "Viktiga datum"
-
-#: contrib/auth/admin.py:24
-msgid "Groups"
-msgstr "Grupper"
-
-#: contrib/auth/admin.py:60
-msgid "Add user"
-msgstr "Lägg till användare"
-
-#: contrib/auth/admin.py:85
-msgid "Password changed successfully."
-msgstr "Lösenordet ändrades."
-
-#: contrib/auth/admin.py:91
-#, python-format
-msgid "Change password: %s"
-msgstr "Ändra lösenord: %s"
-
-#: contrib/auth/forms.py:15 contrib/auth/models.py:137
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Obligatorisk. 30 tecken eller färre. Endast bokstäver, siffror eller "
-"understreck."
-
-#: contrib/auth/forms.py:16 core/validators.py:72
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Detta värde får endast innehålla bokstäver, siffror och understreck."
-
-#: contrib/auth/forms.py:18
-msgid "Password confirmation"
-msgstr "Lösenordsbekräftelse"
-
-#: contrib/auth/forms.py:30
-msgid "A user with that username already exists."
-msgstr "En användare med det användarnamnet finns redan."
-
-#: contrib/auth/forms.py:36 contrib/auth/forms.py:146
-#: contrib/auth/forms.py:188
-msgid "The two password fields didn't match."
-msgstr "De två lösenordsfälten stämde inte överens."
-
-#: contrib/auth/forms.py:74 contrib/comments/views/comments.py:58
-msgid "This account is inactive."
-msgstr "Detta konto är inaktivt."
-
-#: contrib/auth/forms.py:79 contrib/comments/views/comments.py:49
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Din webbläsare verkar inte tillåta cookies. Cookies behövs för att kunna "
-"logga in."
-
-#: contrib/auth/forms.py:92
-msgid "E-mail"
-msgstr "E-postadress"
-
-#: contrib/auth/forms.py:101
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Den e-postadressen är inte associerad med något användarkonto. Är du säker "
-"på att du har registrerat dig?"
-
-#: contrib/auth/forms.py:126
-#, python-format
-msgid "Password reset on %s"
-msgstr "Lösenord nollställt för %s"
-
-#: contrib/auth/forms.py:134
-msgid "New password"
-msgstr "Nytt lösenord"
-
-#: contrib/auth/forms.py:135
-msgid "New password confirmation"
-msgstr "Bekräfta nytt lösenord"
-
-#: contrib/auth/forms.py:160
-msgid "Old password"
-msgstr "Gammalt lösenord"
-
-#: contrib/auth/forms.py:168
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen."
-
-#: contrib/auth/models.py:73 contrib/auth/models.py:96
-msgid "name"
-msgstr "namn"
-
-#: contrib/auth/models.py:75
-msgid "codename"
-msgstr "kodnamn"
-
-#: contrib/auth/models.py:78
-msgid "permission"
-msgstr "rättighet"
-
-#: contrib/auth/models.py:79 contrib/auth/models.py:97
-msgid "permissions"
-msgstr "rättigheter"
-
-#: contrib/auth/models.py:100
-msgid "group"
-msgstr "grupp"
-
-#: contrib/auth/models.py:101 contrib/auth/models.py:147
-msgid "groups"
-msgstr "grupper"
-
-#: contrib/auth/models.py:137
-msgid "username"
-msgstr "användarnamn"
-
-#: contrib/auth/models.py:138
-msgid "first name"
-msgstr "förnamn"
-
-#: contrib/auth/models.py:139
-msgid "last name"
-msgstr "efternamn"
-
-#: contrib/auth/models.py:140
-msgid "e-mail address"
-msgstr "e-postadress"
-
-#: contrib/auth/models.py:141
-msgid "password"
-msgstr "lösenord"
-
-#: contrib/auth/models.py:141
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"Använd '[algo]$[salt]$[hexdigest]' eller använd <a href=\"password/\">Ändra "
-"lösenord-formuläret</a>."
-
-#: contrib/auth/models.py:142
-msgid "staff status"
-msgstr "personalstatus"
-
-#: contrib/auth/models.py:142
-msgid "Designates whether the user can log into this admin site."
-msgstr "Avgör om användaren kan logga in på denna adminsida."
-
-#: contrib/auth/models.py:143
-msgid "active"
-msgstr "aktiv"
-
-#: contrib/auth/models.py:143
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Anger om användaren skall betraktas som aktiv. Avmarkera detta istället för "
-"att ta bort konton."
-
-#: contrib/auth/models.py:144
-msgid "superuser status"
-msgstr "superanvändare"
-
-#: contrib/auth/models.py:144
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Anger att denna användare har alla rättigheter utan att uttryckligen "
-"tilldela dem."
-
-#: contrib/auth/models.py:145
-msgid "last login"
-msgstr "senaste inloggning"
-
-#: contrib/auth/models.py:146
-msgid "date joined"
-msgstr "registreringsdatum"
-
-#: contrib/auth/models.py:148
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Förutom de rättigheterna som utdelas manuellt så kommer användaren dessutom "
-"få samma rättigheter som de grupper där han/hon är medlem."
-
-#: contrib/auth/models.py:149
-msgid "user permissions"
-msgstr "användarättigheter"
-
-#: contrib/auth/models.py:153
-msgid "user"
-msgstr "användare"
-
-#: contrib/auth/models.py:154
-msgid "users"
-msgstr "användare"
-
-#: contrib/auth/models.py:309
-msgid "message"
-msgstr "meddelande"
-
-#: contrib/auth/views.py:50
-msgid "Logged out"
-msgstr "Utloggad"
-
-#: contrib/comments/models.py:71 contrib/comments/models.py:164
-msgid "object ID"
-msgstr "objektets ID"
-
-#: contrib/comments/models.py:72
-msgid "headline"
-msgstr "rubrik"
-
-#: contrib/comments/models.py:73 contrib/comments/models.py:95
-#: contrib/comments/models.py:165
-msgid "comment"
-msgstr "kommentar"
-
-#: contrib/comments/models.py:74
-msgid "rating #1"
-msgstr "betyg #1"
-
-#: contrib/comments/models.py:75
-msgid "rating #2"
-msgstr "betyg #2"
-
-#: contrib/comments/models.py:76
-msgid "rating #3"
-msgstr "betyg #3"
-
-#: contrib/comments/models.py:77
-msgid "rating #4"
-msgstr "betyg #4"
-
-#: contrib/comments/models.py:78
-msgid "rating #5"
-msgstr "betyg #5"
-
-#: contrib/comments/models.py:79
-msgid "rating #6"
-msgstr "betyg #6"
-
-#: contrib/comments/models.py:80
-msgid "rating #7"
-msgstr "betyg #7"
-
-#: contrib/comments/models.py:81
-msgid "rating #8"
-msgstr "betyg #8"
-
-#: contrib/comments/models.py:86
-msgid "is valid rating"
-msgstr "är ett giltigt betyg"
-
-#: contrib/comments/models.py:87 contrib/comments/models.py:167
-msgid "date/time submitted"
-msgstr "skickat datum/tid"
-
-#: contrib/comments/models.py:88 contrib/comments/models.py:168
-msgid "is public"
-msgstr "är offentlig"
-
-#: contrib/comments/models.py:90
-msgid "is removed"
-msgstr "är borttaget"
-
-#: contrib/comments/models.py:90
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Bocka för denna ruta om kommentaren är olämplig. Ett \"Denna kommentar har "
-"tagits bort\"-meddelande kommer visas istället."
-
-#: contrib/comments/models.py:96
-msgid "comments"
-msgstr "kommentarer"
-
-#: contrib/comments/models.py:128 contrib/comments/models.py:199
-msgid "Content object"
-msgstr "Innehållsobjekt"
-
-#: contrib/comments/models.py:156
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Inlagt av %(user)s %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:166
-msgid "person's name"
-msgstr "personens namn"
-
-#: contrib/comments/models.py:169
-msgid "ip address"
-msgstr "IP-adress"
-
-#: contrib/comments/models.py:171
-msgid "approved by staff"
-msgstr "godkänd av personal"
-
-#: contrib/comments/models.py:175
-msgid "free comment"
-msgstr "fri kommentar"
-
-#: contrib/comments/models.py:176
-msgid "free comments"
-msgstr "fria kommentarer"
-
-#: contrib/comments/models.py:227
-msgid "score"
-msgstr "poäng"
-
-#: contrib/comments/models.py:228
-msgid "score date"
-msgstr "poäng tilldelad"
-
-#: contrib/comments/models.py:232
-msgid "karma score"
-msgstr "karmapoäng"
-
-#: contrib/comments/models.py:233
-msgid "karma scores"
-msgstr "karmapoäng"
-
-#: contrib/comments/models.py:237
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "Betyg %(score)d av %(user)s"
-
-#: contrib/comments/models.py:254
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Denna kommentar flaggades av %(user)s:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:262
-msgid "flag date"
-msgstr "flaggdatum"
-
-#: contrib/comments/models.py:266
-msgid "user flag"
-msgstr "användarflagga"
-
-#: contrib/comments/models.py:267
-msgid "user flags"
-msgstr "användarflaggor"
-
-#: contrib/comments/models.py:271
-#, python-format
-msgid "Flag by %r"
-msgstr "Flaggad av %r"
-
-#: contrib/comments/models.py:277
-msgid "deletion date"
-msgstr "borttagningsdatum"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "borttaget av moderator"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "borttagna av moderator"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "Borttaget av moderator %r"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Glömt ditt lösenord?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Betyg"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Obligatorisk"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Valfri"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Lägg till foto"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Kommentar:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Förhandsgranska kommentar"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "Ditt namn:"
-
-#: contrib/comments/views/comments.py:76
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Detta betyg krävs eftersom du har fyllt i minst ett annat betyg."
-
-#: contrib/comments/views/comments.py:160
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Denna kommentar postades av en användare som har postat färre än %(count)s "
-"kommentar:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Denna kommentar postades av en användare som har postat färre än %(count)s "
-"kommentarer:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:165
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Denna kommentar postades av en oseriös användare:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:238
-#: contrib/comments/views/comments.py:331
-msgid "Only POSTs are allowed"
-msgstr "Endast POST är tillåtet"
-
-#: contrib/comments/views/comments.py:242
-#: contrib/comments/views/comments.py:335
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Ett eller flera av de obligatoriska fälten skickades inte"
-
-#: contrib/comments/views/comments.py:246
-#: contrib/comments/views/comments.py:337
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "Någon har manipulerat kommentarformuläret (säkerhetsintrång)"
-
-#: contrib/comments/views/comments.py:256
-#: contrib/comments/views/comments.py:343
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Kommentarformuläret hade en ogiltig 'target'-parameter -- objektets ID var "
-"ogiltigt"
-
-#: contrib/comments/views/comments.py:307
-#: contrib/comments/views/comments.py:372
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr ""
-"Kommentarformuläret tillhandahöll varken 'förhandsgranska' eller 'post'"
-
-#: contrib/comments/views/karma.py:21
-msgid "Anonymous users cannot vote"
-msgstr "Anonyma användare får inte rösta"
-
-#: contrib/comments/views/karma.py:25
-msgid "Invalid comment ID"
-msgstr "Ogiltigt kommentar-ID"
-
-#: contrib/comments/views/karma.py:27
-msgid "No voting for yourself"
-msgstr "Du får inte rösta på dig själv"
-
-#: contrib/contenttypes/models.py:67
-msgid "python model class name"
-msgstr "python klassnamn för modell"
-
-#: contrib/contenttypes/models.py:71
-msgid "content type"
-msgstr "innehålls typ"
-
-#: contrib/contenttypes/models.py:72
-msgid "content types"
-msgstr "innehålls typer"
-
-#: contrib/flatpages/admin.py:9
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exempel: '/om/kontakt/'. Se till att ha inledande och avslutande snedstreck."
-
-#: contrib/flatpages/admin.py:11 core/validators.py:76
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Detta värde får endast innehålla bokstäver, siffror, understreck, "
-"bindestreck eller snedstreck."
-
-#: contrib/flatpages/admin.py:22
-msgid "Advanced options"
-msgstr "Avancerade inställningar"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "titel"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "innehåll"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "aktivera kommentarer"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "mallnamn"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exempel: 'sidor/kontaktsida.html'. Om detta inte fylls i kommer systemet att "
-"använda 'flatpages/default.html'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "registrering krävs"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Om detta bockas för kommer endast inloggade användare kunna se sidan."
-
-#: contrib/flatpages/models.py:19
-msgid "flat page"
-msgstr "statisk sida"
-
-#: contrib/flatpages/models.py:20
-msgid "flat pages"
-msgstr "statiska sidor"
-
-#: contrib/gis/forms/fields.py:10
-msgid "No geometry value provided."
-msgstr "Inget geometriskt värde angivet."
-
-#: contrib/gis/forms/fields.py:11
-msgid "Invalid Geometry value."
-msgstr "Ogiltigt Geometri-värde."
-
-#: contrib/gis/forms/fields.py:12
-msgid "Invalid Geometry type."
-msgstr "Ogiltig Geometri-typ"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "th"
-msgstr ":a"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "st"
-msgstr ":a"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "nd"
-msgstr ":e"
-
-#: contrib/humanize/templatetags/humanize.py:19
-msgid "rd"
-msgstr ":e"
-
-#: contrib/humanize/templatetags/humanize.py:51
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljon"
-msgstr[1] "%(value).1f miljoner"
-
-#: contrib/humanize/templatetags/humanize.py:54
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value)1.f miljard"
-msgstr[1] "%(value)1.f miljarder"
-
-#: contrib/humanize/templatetags/humanize.py:57
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value)1.f biljon"
-msgstr[1] "%(value)1.f biljoner"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "one"
-msgstr "ett"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "two"
-msgstr "två"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "three"
-msgstr "tre"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "four"
-msgstr "fyra"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "five"
-msgstr "fem"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "six"
-msgstr "sex"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "seven"
-msgstr "sju"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "eight"
-msgstr "åtta"
-
-#: contrib/humanize/templatetags/humanize.py:73
-msgid "nine"
-msgstr "nio"
-
-#: contrib/humanize/templatetags/humanize.py:93
-msgid "today"
-msgstr "idag"
-
-#: contrib/humanize/templatetags/humanize.py:95
-msgid "tomorrow"
-msgstr "imorgon"
-
-#: contrib/humanize/templatetags/humanize.py:97
-msgid "yesterday"
-msgstr "igår"
-
-#: contrib/localflavor/ar/forms.py:27
-msgid "Enter a postal code in the format NNNN or ANNNNAAA."
-msgstr "Fyll i ett postnummer med formatet NNNN eller ANNNNAAA."
-
-#: contrib/localflavor/ar/forms.py:49 contrib/localflavor/br/forms.py:96
-#: contrib/localflavor/br/forms.py:135 contrib/localflavor/pe/forms.py:23
-#: contrib/localflavor/pe/forms.py:51
-msgid "This field requires only numbers."
-msgstr "Detta fält kräver enbart siffror."
-
-#: contrib/localflavor/ar/forms.py:50
-msgid "This field requires 7 or 8 digits."
-msgstr "Detta fält kräver 7 eller 8 sifrror."
-
-#: contrib/localflavor/ar/forms.py:79
-msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format."
-msgstr "Fyll i ett giltigt CUIT med formatet XX-XXXXXXXX-X eller XXXXXXXXXXXX."
-
-#: contrib/localflavor/ar/forms.py:80
-msgid "Invalid CUIT."
-msgstr "Felaktigt CUIT."
-
-#: contrib/localflavor/at/at_states.py:5
-msgid "Burgenland"
-msgstr "Burgenland"
-
-#: contrib/localflavor/at/at_states.py:6
-msgid "Carinthia"
-msgstr "Kärnten"
-
-#: contrib/localflavor/at/at_states.py:7
-msgid "Lower Austria"
-msgstr "Niederösterreich"
-
-#: contrib/localflavor/at/at_states.py:8
-msgid "Upper Austria"
-msgstr "Oberösterreich"
-
-#: contrib/localflavor/at/at_states.py:9
-msgid "Salzburg"
-msgstr "Salzburg"
-
-#: contrib/localflavor/at/at_states.py:10
-msgid "Styria"
-msgstr "Steiermark"
-
-#: contrib/localflavor/at/at_states.py:11
-msgid "Tyrol"
-msgstr "Tyrolen"
-
-#: contrib/localflavor/at/at_states.py:12
-msgid "Vorarlberg"
-msgstr "Vorarlberg"
-
-#: contrib/localflavor/at/at_states.py:13
-msgid "Vienna"
-msgstr "Wien"
-
-#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:16
-#: contrib/localflavor/no/forms.py:12
-msgid "Enter a zip code in the format XXXX."
-msgstr "Fyll i postnummer med formatet XXXX."
-
-#: contrib/localflavor/at/forms.py:48
-msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format."
-msgstr "Fyll i ett giltigt Österrikiskt personnummer i formatet XXXX XXXXXX."
-
-#: contrib/localflavor/au/forms.py:16
-msgid "Enter a 4 digit post code."
-msgstr "Fyll i ett fyrsiffrigt postnummer."
-
-#: contrib/localflavor/br/forms.py:21
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "Fyll i ett postnummer med formatet XXXXX-XXX."
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "Telefonnummer måste vara i formatet XX-XXXX-XXXX."
-
-#: contrib/localflavor/br/forms.py:58
-msgid ""
-"Select a valid brazilian state. That state is not one of the available "
-"states."
-msgstr ""
-"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga "
-"alternativ."
-
-#: contrib/localflavor/br/forms.py:94
-msgid "Invalid CPF number."
-msgstr "Ogiltigt CPF-nummer."
-
-#: contrib/localflavor/br/forms.py:95
-msgid "This field requires at most 11 digits or 14 characters."
-msgstr "Detta fält kräver högst 11 siffror eller 14 bokstäver."
-
-#: contrib/localflavor/br/forms.py:134
-msgid "Invalid CNPJ number."
-msgstr "Ogiltigt CNPJ-nummer."
-
-#: contrib/localflavor/br/forms.py:136
-msgid "This field requires at least 14 digits"
-msgstr "Detta fält kräver minst 14 sifrror"
-
-#: contrib/localflavor/ca/forms.py:17
-msgid "Enter a postal code in the format XXX XXX."
-msgstr "Fyll i ett postnummer med formatet XXX XXX."
-
-#: contrib/localflavor/ca/forms.py:88
-msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format."
-msgstr ""
-"Fyll i ett giltigt Kanadensiskt \"social insurance number\" med formatet XXX-"
-"XXX-XXX."
-
-#: contrib/localflavor/ch/ch_states.py:5
-msgid "Aargau"
-msgstr "Aargau"
-
-#: contrib/localflavor/ch/ch_states.py:6
-msgid "Appenzell Innerrhoden"
-msgstr "Appenzell Innerrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:7
-msgid "Appenzell Ausserrhoden"
-msgstr "Appenzell Ausserrhoden"
-
-#: contrib/localflavor/ch/ch_states.py:8
-msgid "Basel-Stadt"
-msgstr "Basel-Stadt"
-
-#: contrib/localflavor/ch/ch_states.py:9
-msgid "Basel-Land"
-msgstr "Basel-Landschaft"
-
-#: contrib/localflavor/ch/ch_states.py:10
-msgid "Berne"
-msgstr "Bern"
-
-#: contrib/localflavor/ch/ch_states.py:11
-msgid "Fribourg"
-msgstr "Fribourg"
-
-#: contrib/localflavor/ch/ch_states.py:12
-msgid "Geneva"
-msgstr "Genève"
-
-#: contrib/localflavor/ch/ch_states.py:13
-msgid "Glarus"
-msgstr "Glarus"
-
-#: contrib/localflavor/ch/ch_states.py:14
-msgid "Graubuenden"
-msgstr "Graubünden"
-
-#: contrib/localflavor/ch/ch_states.py:15
-msgid "Jura"
-msgstr "Jura"
-
-#: contrib/localflavor/ch/ch_states.py:16
-msgid "Lucerne"
-msgstr "Luzern"
-
-#: contrib/localflavor/ch/ch_states.py:17
-msgid "Neuchatel"
-msgstr "Neuchâtel"
-
-#: contrib/localflavor/ch/ch_states.py:18
-msgid "Nidwalden"
-msgstr "Nidwalden"
-
-#: contrib/localflavor/ch/ch_states.py:19
-msgid "Obwalden"
-msgstr "Obwalden"
-
-#: contrib/localflavor/ch/ch_states.py:20
-msgid "Schaffhausen"
-msgstr "Schaffhausen"
-
-#: contrib/localflavor/ch/ch_states.py:21
-msgid "Schwyz"
-msgstr "Schwyz"
-
-#: contrib/localflavor/ch/ch_states.py:22
-msgid "Solothurn"
-msgstr "Solothurn"
-
-#: contrib/localflavor/ch/ch_states.py:23
-msgid "St. Gallen"
-msgstr "Sankt Gallen"
-
-#: contrib/localflavor/ch/ch_states.py:24
-msgid "Thurgau"
-msgstr "Thurgau"
-
-#: contrib/localflavor/ch/ch_states.py:25
-msgid "Ticino"
-msgstr "Ticino"
-
-#: contrib/localflavor/ch/ch_states.py:26
-msgid "Uri"
-msgstr "Uri"
-
-#: contrib/localflavor/ch/ch_states.py:27
-msgid "Valais"
-msgstr "Valais"
-
-#: contrib/localflavor/ch/ch_states.py:28
-msgid "Vaud"
-msgstr "Vaud"
-
-#: contrib/localflavor/ch/ch_states.py:29
-msgid "Zug"
-msgstr "Zug"
-
-#: contrib/localflavor/ch/ch_states.py:30
-msgid "Zurich"
-msgstr "Zürich"
-
-#: contrib/localflavor/ch/forms.py:64
-msgid ""
-"Enter a valid Swiss identity or passport card number in X1234567<0 or "
-"1234567890 format."
-msgstr ""
-"Fyll i ett giltigt Schweiziskt ID- eller passkortnummer med formatet "
-"X1234567<0 eller 1234567890."
-
-#: contrib/localflavor/cl/forms.py:29
-msgid "Enter a valid Chilean RUT."
-msgstr "Fyll i ett giltigt chilenskt RUT"
-
-#: contrib/localflavor/cl/forms.py:30
-msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X."
-msgstr "Fyll i ett giltigt chilenskt RUT. Formatet är XX.XXX.XXX-X."
-
-#: contrib/localflavor/cl/forms.py:31
-msgid "The Chilean RUT is not valid."
-msgstr "Det chilenska RUT:et var inte giltigt."
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "Bayern"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "Berlin"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "Bremen"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "Hamburg"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "Hessen"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "Mecklenburg-Vorpommern"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "Nedre Sachsen"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "Nordrhein-Westfalen"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "Rhenlandet"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "Saarland"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "Sachsen"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "Sachsen-Anhalt"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "Thüringen"
-
-#: contrib/localflavor/de/forms.py:14 contrib/localflavor/fi/forms.py:12
-#: contrib/localflavor/fr/forms.py:15
-msgid "Enter a zip code in the format XXXXX."
-msgstr "Fyll i ett postnummer med formatet XXXXX."
-
-#: contrib/localflavor/de/forms.py:41
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format."
-msgstr ""
-"Fyll i ett giltigt tyskt ID-kortnummer med formatet XXXXXXXXXXX-XXXXXXX-"
-"XXXXXXX-X."
-
-#: contrib/localflavor/es/es_provinces.py:5
-msgid "Arava"
-msgstr "Arava"
-
-#: contrib/localflavor/es/es_provinces.py:6
-msgid "Albacete"
-msgstr "Albacete"
-
-#: contrib/localflavor/es/es_provinces.py:7
-msgid "Alacant"
-msgstr "Alacant"
-
-#: contrib/localflavor/es/es_provinces.py:8
-msgid "Almeria"
-msgstr "AlmeriaAlmería"
-
-#: contrib/localflavor/es/es_provinces.py:9
-msgid "Avila"
-msgstr "Ávila"
-
-#: contrib/localflavor/es/es_provinces.py:10
-msgid "Badajoz"
-msgstr "Badajoz"
-
-#: contrib/localflavor/es/es_provinces.py:11
-msgid "Illes Balears"
-msgstr "Illes Balears"
-
-#: contrib/localflavor/es/es_provinces.py:12
-msgid "Barcelona"
-msgstr "Barcelona"
-
-#: contrib/localflavor/es/es_provinces.py:13
-msgid "Burgos"
-msgstr "Burgos"
-
-#: contrib/localflavor/es/es_provinces.py:14
-msgid "Caceres"
-msgstr "Cáceres"
-
-#: contrib/localflavor/es/es_provinces.py:15
-msgid "Cadiz"
-msgstr "Cádiz"
-
-#: contrib/localflavor/es/es_provinces.py:16
-msgid "Castello"
-msgstr "Castellón"
-
-#: contrib/localflavor/es/es_provinces.py:17
-msgid "Ciudad Real"
-msgstr "Ciudad Real"
-
-#: contrib/localflavor/es/es_provinces.py:18
-msgid "Cordoba"
-msgstr "Córdoba"
-
-#: contrib/localflavor/es/es_provinces.py:19
-msgid "A Coruna"
-msgstr "A Coruña"
-
-#: contrib/localflavor/es/es_provinces.py:20
-msgid "Cuenca"
-msgstr "Cuenca"
-
-#: contrib/localflavor/es/es_provinces.py:21
-msgid "Girona"
-msgstr "Girona"
-
-#: contrib/localflavor/es/es_provinces.py:22
-msgid "Granada"
-msgstr "Granada"
-
-#: contrib/localflavor/es/es_provinces.py:23
-msgid "Guadalajara"
-msgstr "Guadalajara"
-
-#: contrib/localflavor/es/es_provinces.py:24
-msgid "Guipuzkoa"
-msgstr "Guipuzkoa"
-
-#: contrib/localflavor/es/es_provinces.py:25
-msgid "Huelva"
-msgstr "Huelva"
-
-#: contrib/localflavor/es/es_provinces.py:26
-msgid "Huesca"
-msgstr "Huesca"
-
-#: contrib/localflavor/es/es_provinces.py:27
-msgid "Jaen"
-msgstr "Jaén"
-
-#: contrib/localflavor/es/es_provinces.py:28
-msgid "Leon"
-msgstr "León"
-
-#: contrib/localflavor/es/es_provinces.py:29
-msgid "Lleida"
-msgstr "Lleida"
-
-#: contrib/localflavor/es/es_provinces.py:30
-#: contrib/localflavor/es/es_regions.py:17
-msgid "La Rioja"
-msgstr "La Rioja"
-
-#: contrib/localflavor/es/es_provinces.py:31
-msgid "Lugo"
-msgstr "Lugo"
-
-#: contrib/localflavor/es/es_provinces.py:32
-#: contrib/localflavor/es/es_regions.py:18
-msgid "Madrid"
-msgstr "Madrid"
-
-#: contrib/localflavor/es/es_provinces.py:33
-msgid "Malaga"
-msgstr "Málaga"
-
-#: contrib/localflavor/es/es_provinces.py:34
-msgid "Murcia"
-msgstr "Murcia"
-
-#: contrib/localflavor/es/es_provinces.py:35
-msgid "Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_provinces.py:36
-msgid "Ourense"
-msgstr "Ourense"
-
-#: contrib/localflavor/es/es_provinces.py:37
-msgid "Asturias"
-msgstr "Asturien"
-
-#: contrib/localflavor/es/es_provinces.py:38
-msgid "Palencia"
-msgstr "Palencia"
-
-#: contrib/localflavor/es/es_provinces.py:39
-msgid "Las Palmas"
-msgstr "Las Palmas"
-
-#: contrib/localflavor/es/es_provinces.py:40
-msgid "Pontevedra"
-msgstr "Pontevedra"
-
-#: contrib/localflavor/es/es_provinces.py:41
-msgid "Salamanca"
-msgstr "Salamanca"
-
-#: contrib/localflavor/es/es_provinces.py:42
-msgid "Santa Cruz de Tenerife"
-msgstr "Santa Cruz de Tenerife"
-
-#: contrib/localflavor/es/es_provinces.py:43
-#: contrib/localflavor/es/es_regions.py:11
-msgid "Cantabria"
-msgstr "Kantabrien"
-
-#: contrib/localflavor/es/es_provinces.py:44
-msgid "Segovia"
-msgstr "Segovia"
-
-#: contrib/localflavor/es/es_provinces.py:45
-msgid "Seville"
-msgstr "Sevilla"
-
-#: contrib/localflavor/es/es_provinces.py:46
-msgid "Soria"
-msgstr "Soria"
-
-#: contrib/localflavor/es/es_provinces.py:47
-msgid "Tarragona"
-msgstr "Tarragona"
-
-#: contrib/localflavor/es/es_provinces.py:48
-msgid "Teruel"
-msgstr "Teruel"
-
-#: contrib/localflavor/es/es_provinces.py:49
-msgid "Toledo"
-msgstr "Toledo"
-
-#: contrib/localflavor/es/es_provinces.py:50
-msgid "Valencia"
-msgstr "Valencia"
-
-#: contrib/localflavor/es/es_provinces.py:51
-msgid "Valladolid"
-msgstr "Valladolid"
-
-#: contrib/localflavor/es/es_provinces.py:52
-msgid "Bizkaia"
-msgstr "Biscaya"
-
-#: contrib/localflavor/es/es_provinces.py:53
-msgid "Zamora"
-msgstr "Zamora"
-
-#: contrib/localflavor/es/es_provinces.py:54
-msgid "Zaragoza"
-msgstr "Zaragoza"
-
-#: contrib/localflavor/es/es_provinces.py:55
-msgid "Ceuta"
-msgstr "Ceuta"
-
-#: contrib/localflavor/es/es_provinces.py:56
-msgid "Melilla"
-msgstr "Melilla"
-
-#: contrib/localflavor/es/es_regions.py:5
-msgid "Andalusia"
-msgstr "Andalusien"
-
-#: contrib/localflavor/es/es_regions.py:6
-msgid "Aragon"
-msgstr "Aragonien"
-
-#: contrib/localflavor/es/es_regions.py:7
-msgid "Principality of Asturias"
-msgstr "Asturien"
-
-#: contrib/localflavor/es/es_regions.py:8
-msgid "Balearic Islands"
-msgstr "Balearerna"
-
-#: contrib/localflavor/es/es_regions.py:9
-msgid "Basque Country"
-msgstr "Baskien"
-
-#: contrib/localflavor/es/es_regions.py:10
-msgid "Canary Islands"
-msgstr "Kanarieöarna"
-
-#: contrib/localflavor/es/es_regions.py:12
-msgid "Castile-La Mancha"
-msgstr "Kastilien-La Mancha"
-
-#: contrib/localflavor/es/es_regions.py:13
-msgid "Castile and Leon"
-msgstr "Kastilien och Leon"
-
-#: contrib/localflavor/es/es_regions.py:14
-msgid "Catalonia"
-msgstr "Katalonien"
-
-#: contrib/localflavor/es/es_regions.py:15
-msgid "Extremadura"
-msgstr "Extremadura"
-
-#: contrib/localflavor/es/es_regions.py:16
-msgid "Galicia"
-msgstr "Galicien"
-
-#: contrib/localflavor/es/es_regions.py:19
-msgid "Region of Murcia"
-msgstr "Murciaregionen"
-
-#: contrib/localflavor/es/es_regions.py:20
-msgid "Foral Community of Navarre"
-msgstr "Navarra"
-
-#: contrib/localflavor/es/es_regions.py:21
-msgid "Valencian Community"
-msgstr "Valenciaregionen"
-
-#: contrib/localflavor/es/forms.py:19
-msgid "Enter a valid postal code in the range and format 01XXX - 52XXX."
-msgstr "Fyll i ett giltigt postnummer i serien och med formatet 01XXX - 52XXX."
-
-#: contrib/localflavor/es/forms.py:39
-msgid ""
-"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or "
-"9XXXXXXXX."
-msgstr ""
-"Fyll i ett giltigt telefonnummer med ett av formaten: 6XXXXXXXX, 8XXXXXXXX "
-"eller 9XXXXXXXX."
-
-#: contrib/localflavor/es/forms.py:66
-msgid "Please enter a valid NIF, NIE, or CIF."
-msgstr "Var god fyll i en giltig NIF, NIE, eller CIF."
-
-#: contrib/localflavor/es/forms.py:67
-msgid "Please enter a valid NIF or NIE."
-msgstr "Var god fyll i giltigt NIF eller NIE."
-
-#: contrib/localflavor/es/forms.py:68
-msgid "Invalid checksum for NIF."
-msgstr "Ogiltig kontrollsumma för NIF."
-
-#: contrib/localflavor/es/forms.py:69
-msgid "Invalid checksum for NIE."
-msgstr "Ogiltig kontrollsumma för NIE."
-
-#: contrib/localflavor/es/forms.py:70
-msgid "Invalid checksum for CIF."
-msgstr "Ogiltig kontrollsumma för CIF."
-
-#: contrib/localflavor/es/forms.py:142
-msgid ""
-"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX."
-msgstr ""
-"Var god fyll i ett giltigt bankkontonummer i XXXX-XXXX-XX-XXXXXXXXXX-format."
-
-#: contrib/localflavor/es/forms.py:143
-msgid "Invalid checksum for bank account number."
-msgstr "Ogiltig kontrollsumma för bankkontonummer."
-
-#: contrib/localflavor/fi/forms.py:28
-msgid "Enter a valid Finnish social security number."
-msgstr "Fyll i ett giltigt finskt personnummer."
-
-#: contrib/localflavor/in_/forms.py:14
-msgid "Enter a zip code in the format XXXXXXX."
-msgstr "Fyll i ett postnummer med formatet XXXXXXX."
-
-#: contrib/localflavor/is_/forms.py:17
-msgid ""
-"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
-msgstr "Fyll i ett giltigt isländskt personnummer. Formatet är XXXXXX-XXXX."
-
-#: contrib/localflavor/is_/forms.py:18
-msgid "The Icelandic identification number is not valid."
-msgstr "Det isländska personnumret är inte giltigt."
-
-#: contrib/localflavor/it/forms.py:14
-msgid "Enter a valid zip code."
-msgstr "Fyll i ett giltigt postnummer."
-
-#: contrib/localflavor/it/forms.py:43
-msgid "Enter a valid Social Security number."
-msgstr "Fyll i ett giltigt personnummer."
-
-#: contrib/localflavor/it/forms.py:68
-msgid "Enter a valid VAT number."
-msgstr "Fyll i ett giltigt VAT-nummer."
-
-#: contrib/localflavor/jp/forms.py:17
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "Fyll i ett postnummer med formatet XXXXXXX eller XXX-XXXX."
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "Hokkaido"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "Aomori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "Iwate"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "Miyagi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "Akita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "Yamagata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "Fukushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "Ibaraki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "Tochigi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "Gunma"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "Saitama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "Chiba"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "Tokyo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "Kanagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "Yamanashi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "Nagano"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "Niigata"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "Toyama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "Ischikawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "Fukui"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "Gifu"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "Shizuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "Aichi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "Mie"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "Shiga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "Kyoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "Osaka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "Hyogo"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "Nara"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "Wakayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "Tottori"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "Shimane"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "Okayama"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "Hiroshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "Yamaguchi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "Tokushima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "Kagawa"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "Ehime"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "Kochi"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "Fukuoka"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "Saga"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "Nagasaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "Kuamoto"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "Oita"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "Miyazaki"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "kagoshima"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "Okinawa"
-
-#: contrib/localflavor/mx/mx_states.py:12
-msgid "Aguascalientes"
-msgstr "Aguascalientes"
-
-#: contrib/localflavor/mx/mx_states.py:13
-msgid "Baja California"
-msgstr "Baja California"
-
-#: contrib/localflavor/mx/mx_states.py:14
-msgid "Baja California Sur"
-msgstr "Baja California Sur"
-
-#: contrib/localflavor/mx/mx_states.py:15
-msgid "Campeche"
-msgstr "Campeche"
-
-#: contrib/localflavor/mx/mx_states.py:16
-msgid "Chihuahua"
-msgstr "Chihuahua"
-
-#: contrib/localflavor/mx/mx_states.py:17
-msgid "Chiapas"
-msgstr "Chiapas"
-
-#: contrib/localflavor/mx/mx_states.py:18
-msgid "Coahuila"
-msgstr "Coahuila"
-
-#: contrib/localflavor/mx/mx_states.py:19
-msgid "Colima"
-msgstr "Colima"
-
-#: contrib/localflavor/mx/mx_states.py:20
-msgid "Distrito Federal"
-msgstr "Distrito Federal"
-
-#: contrib/localflavor/mx/mx_states.py:21
-msgid "Durango"
-msgstr "Durango"
-
-#: contrib/localflavor/mx/mx_states.py:22
-msgid "Guerrero"
-msgstr "Guerrero"
-
-#: contrib/localflavor/mx/mx_states.py:23
-msgid "Guanajuato"
-msgstr "Guanajuato"
-
-#: contrib/localflavor/mx/mx_states.py:24
-msgid "Hidalgo"
-msgstr "Hidalgo"
-
-#: contrib/localflavor/mx/mx_states.py:25
-msgid "Jalisco"
-msgstr "Jalisco"
-
-#: contrib/localflavor/mx/mx_states.py:26
-msgid "Estado de México"
-msgstr "Mexikanska staten"
-
-#: contrib/localflavor/mx/mx_states.py:27
-msgid "Michoacán"
-msgstr "Michoacán"
-
-#: contrib/localflavor/mx/mx_states.py:28
-msgid "Morelos"
-msgstr "Morelos"
-
-#: contrib/localflavor/mx/mx_states.py:29
-msgid "Nayarit"
-msgstr "Nayarit"
-
-#: contrib/localflavor/mx/mx_states.py:30
-msgid "Nuevo León"
-msgstr "Nuevo León"
-
-#: contrib/localflavor/mx/mx_states.py:31
-msgid "Oaxaca"
-msgstr "Oaxaca"
-
-#: contrib/localflavor/mx/mx_states.py:32
-msgid "Puebla"
-msgstr "Puebla"
-
-#: contrib/localflavor/mx/mx_states.py:33
-msgid "Querétaro"
-msgstr "Querétaro"
-
-#: contrib/localflavor/mx/mx_states.py:34
-msgid "Quintana Roo"
-msgstr "Quintana Roo"
-
-#: contrib/localflavor/mx/mx_states.py:35
-msgid "Sinaloa"
-msgstr "Sinaloa"
-
-#: contrib/localflavor/mx/mx_states.py:36
-msgid "San Luis Potosí"
-msgstr "San Luis Potosí"
-
-#: contrib/localflavor/mx/mx_states.py:37
-msgid "Sonora"
-msgstr "Sonora"
-
-#: contrib/localflavor/mx/mx_states.py:38
-msgid "Tabasco"
-msgstr "Tabasco"
-
-#: contrib/localflavor/mx/mx_states.py:39
-msgid "Tamaulipas"
-msgstr "Tamaulipas"
-
-#: contrib/localflavor/mx/mx_states.py:40
-msgid "Tlaxcala"
-msgstr "Tlaxcala"
-
-#: contrib/localflavor/mx/mx_states.py:41
-msgid "Veracruz"
-msgstr "Veracruz"
-
-#: contrib/localflavor/mx/mx_states.py:42
-msgid "Yucatán"
-msgstr "Yucatán"
-
-#: contrib/localflavor/mx/mx_states.py:43
-msgid "Zacatecas"
-msgstr "Zacatecas"
-
-#: contrib/localflavor/nl/forms.py:21
-msgid "Enter a valid postal code"
-msgstr "Fyll i ett giltigt postnummer."
-
-#: contrib/localflavor/nl/forms.py:52
-msgid "Enter a valid phone number"
-msgstr "Fyll i ett giltigt telefonnummer."
-
-#: contrib/localflavor/nl/forms.py:78
-msgid "Enter a valid SoFi number"
-msgstr "Fyll i ett giltigt SoFi-nummer."
-
-#: contrib/localflavor/nl/nl_provinces.py:4
-msgid "Drente"
-msgstr "Drente"
-
-#: contrib/localflavor/nl/nl_provinces.py:5
-msgid "Flevoland"
-msgstr "Flevoland"
-
-#: contrib/localflavor/nl/nl_provinces.py:6
-msgid "Friesland"
-msgstr "Friesland"
-
-#: contrib/localflavor/nl/nl_provinces.py:7
-msgid "Gelderland"
-msgstr "Gelderland"
-
-#: contrib/localflavor/nl/nl_provinces.py:8
-msgid "Groningen"
-msgstr "Groningen"
-
-#: contrib/localflavor/nl/nl_provinces.py:9
-msgid "Limburg"
-msgstr "Limburg"
-
-#: contrib/localflavor/nl/nl_provinces.py:10
-msgid "Noord-Brabant"
-msgstr "Noord-Brabant"
-
-#: contrib/localflavor/nl/nl_provinces.py:11
-msgid "Noord-Holland"
-msgstr "Noord-Holland"
-
-#: contrib/localflavor/nl/nl_provinces.py:12
-msgid "Overijssel"
-msgstr "Overijssel"
-
-#: contrib/localflavor/nl/nl_provinces.py:13
-msgid "Utrecht"
-msgstr "Utrecht"
-
-#: contrib/localflavor/nl/nl_provinces.py:14
-msgid "Zeeland"
-msgstr "Zeeland"
-
-#: contrib/localflavor/nl/nl_provinces.py:15
-msgid "Zuid-Holland"
-msgstr "Zuid-Holland"
-
-#: contrib/localflavor/no/forms.py:33
-msgid "Enter a valid Norwegian social security number."
-msgstr "Fyll i ett giltigt norskt personnummer."
-
-#: contrib/localflavor/pe/forms.py:24
-msgid "This field requires 8 digits."
-msgstr "Detta fält kräver 8 sifrror."
-
-#: contrib/localflavor/pe/forms.py:52
-msgid "This field requires 11 digits."
-msgstr "Detta fält kräver 11 sifrror."
-
-#: contrib/localflavor/pl/forms.py:38
-msgid "National Identification Number consists of 11 digits."
-msgstr "\"National Identification Number\" består av 11 siffror."
-
-#: contrib/localflavor/pl/forms.py:39
-msgid "Wrong checksum for the National Identification Number."
-msgstr "Fel kontrollsumma för \"National Identification Number\""
-
-#: contrib/localflavor/pl/forms.py:71
-msgid ""
-"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX."
-msgstr ""
-"Fyll i ett skattenummer (NIP) med formatet XXX-XXX-XX-XX eller XX-XX-XXX-XXX."
-
-#: contrib/localflavor/pl/forms.py:72
-msgid "Wrong checksum for the Tax Number (NIP)."
-msgstr "Fel kontrollsumma för skattenumret (NIP)."
-
-#: contrib/localflavor/pl/forms.py:111
-msgid "National Business Register Number (REGON) consists of 7 or 9 digits."
-msgstr ""
-"\"National Business Register Number\" (REGON) består av 7 eller 9 siffror."
-
-#: contrib/localflavor/pl/forms.py:112
-msgid "Wrong checksum for the National Business Register Number (REGON)."
-msgstr "Fel kontrollsumma för \"National Business Register Number\" (REGON)."
-
-#: contrib/localflavor/pl/forms.py:155
-msgid "Enter a postal code in the format XX-XXX."
-msgstr "Fyll i ett postnummer med formatet XX-XXX."
-
-#: contrib/localflavor/pl/pl_voivodeships.py:8
-msgid "Lower Silesia"
-msgstr "Lower Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:9
-msgid "Kuyavia-Pomerania"
-msgstr "Kuyavia-Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:10
-msgid "Lublin"
-msgstr "Lublin"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:11
-msgid "Lubusz"
-msgstr "Lubusz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:12
-msgid "Lodz"
-msgstr "Lodz"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:13
-msgid "Lesser Poland"
-msgstr "Lesser Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:14
-msgid "Masovia"
-msgstr "Masovia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:15
-msgid "Opole"
-msgstr "Opole"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:16
-msgid "Subcarpatia"
-msgstr "Subcarpatia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:17
-msgid "Podlasie"
-msgstr "Podlasie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:18
-msgid "Pomerania"
-msgstr "Pomerania"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:19
-msgid "Silesia"
-msgstr "Silesia"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:20
-msgid "Swietokrzyskie"
-msgstr "Swietokrzyskie"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:21
-msgid "Warmia-Masuria"
-msgstr "Warmia-Masuria"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:22
-msgid "Greater Poland"
-msgstr "Greater Poland"
-
-#: contrib/localflavor/pl/pl_voivodeships.py:23
-msgid "West Pomerania"
-msgstr "West Pomerania"
-
-#: contrib/localflavor/ro/forms.py:19
-msgid "Enter a valid CIF."
-msgstr "Fyll i ett giltigt CIF."
-
-#: contrib/localflavor/ro/forms.py:56
-msgid "Enter a valid CNP."
-msgstr "Fyll i ett giltigt CNP."
-
-#: contrib/localflavor/ro/forms.py:141
-msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format"
-msgstr "Fyll i ett giltigt IBAN med formatet ROXX-XXXX-XXXX-XXXX-XXXX-XXXX."
-
-#: contrib/localflavor/ro/forms.py:171
-msgid "Phone numbers must be in XXXX-XXXXXX format."
-msgstr "Telefonnummer måste vara i formatet XXXX-XXXXXX."
-
-#: contrib/localflavor/ro/forms.py:194
-msgid "Enter a valid postal code in the format XXXXXX"
-msgstr "Fyll i ett postnummer med formatet XXX XXX."
-
-#: contrib/localflavor/sk/forms.py:30
-msgid "Enter a postal code in the format XXXXX or XXX XX."
-msgstr "Fyll i ett postnummer med formatet XXXXX eller XXX XX."
-
-#: contrib/localflavor/sk/sk_districts.py:8
-msgid "Banska Bystrica"
-msgstr "Banska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:9
-msgid "Banska Stiavnica"
-msgstr "Banska Stiavnica"
-
-#: contrib/localflavor/sk/sk_districts.py:10
-msgid "Bardejov"
-msgstr "Bardejov"
-
-#: contrib/localflavor/sk/sk_districts.py:11
-msgid "Banovce nad Bebravou"
-msgstr "Banovce nad Bebravou"
-
-#: contrib/localflavor/sk/sk_districts.py:12
-msgid "Brezno"
-msgstr "Brezno"
-
-#: contrib/localflavor/sk/sk_districts.py:13
-msgid "Bratislava I"
-msgstr "Bratislava I"
-
-#: contrib/localflavor/sk/sk_districts.py:14
-msgid "Bratislava II"
-msgstr "Bratislava II"
-
-#: contrib/localflavor/sk/sk_districts.py:15
-msgid "Bratislava III"
-msgstr "Bratislava III"
-
-#: contrib/localflavor/sk/sk_districts.py:16
-msgid "Bratislava IV"
-msgstr "Bratislava IV"
-
-#: contrib/localflavor/sk/sk_districts.py:17
-msgid "Bratislava V"
-msgstr "Bratislava V"
-
-#: contrib/localflavor/sk/sk_districts.py:18
-msgid "Bytca"
-msgstr "Bytca"
-
-#: contrib/localflavor/sk/sk_districts.py:19
-msgid "Cadca"
-msgstr "Cadca"
-
-#: contrib/localflavor/sk/sk_districts.py:20
-msgid "Detva"
-msgstr "Detva"
-
-#: contrib/localflavor/sk/sk_districts.py:21
-msgid "Dolny Kubin"
-msgstr "Dolny Kubin"
-
-#: contrib/localflavor/sk/sk_districts.py:22
-msgid "Dunajska Streda"
-msgstr "Dunajska Streda"
-
-#: contrib/localflavor/sk/sk_districts.py:23
-msgid "Galanta"
-msgstr "Galanta"
-
-#: contrib/localflavor/sk/sk_districts.py:24
-msgid "Gelnica"
-msgstr "Gelnica"
-
-#: contrib/localflavor/sk/sk_districts.py:25
-msgid "Hlohovec"
-msgstr "Hlohovec"
-
-#: contrib/localflavor/sk/sk_districts.py:26
-msgid "Humenne"
-msgstr "Humenne"
-
-#: contrib/localflavor/sk/sk_districts.py:27
-msgid "Ilava"
-msgstr "Ilava"
-
-#: contrib/localflavor/sk/sk_districts.py:28
-msgid "Kezmarok"
-msgstr "Kezmarok"
-
-#: contrib/localflavor/sk/sk_districts.py:29
-msgid "Komarno"
-msgstr "Komarno"
-
-#: contrib/localflavor/sk/sk_districts.py:30
-msgid "Kosice I"
-msgstr "Kosice I"
-
-#: contrib/localflavor/sk/sk_districts.py:31
-msgid "Kosice II"
-msgstr "Kosice II"
-
-#: contrib/localflavor/sk/sk_districts.py:32
-msgid "Kosice III"
-msgstr "Kosice III"
-
-#: contrib/localflavor/sk/sk_districts.py:33
-msgid "Kosice IV"
-msgstr "Kosice IV"
-
-#: contrib/localflavor/sk/sk_districts.py:34
-msgid "Kosice - okolie"
-msgstr "Kosice - okolie"
-
-#: contrib/localflavor/sk/sk_districts.py:35
-msgid "Krupina"
-msgstr "Krupina"
-
-#: contrib/localflavor/sk/sk_districts.py:36
-msgid "Kysucke Nove Mesto"
-msgstr "Kysucke Nove Mesto"
-
-#: contrib/localflavor/sk/sk_districts.py:37
-msgid "Levice"
-msgstr "Levice"
-
-#: contrib/localflavor/sk/sk_districts.py:38
-msgid "Levoca"
-msgstr "Levoca"
-
-#: contrib/localflavor/sk/sk_districts.py:39
-msgid "Liptovsky Mikulas"
-msgstr "Liptovsky Mikulas"
-
-#: contrib/localflavor/sk/sk_districts.py:40
-msgid "Lucenec"
-msgstr "Lucenec"
-
-#: contrib/localflavor/sk/sk_districts.py:41
-msgid "Malacky"
-msgstr "Malacky"
-
-#: contrib/localflavor/sk/sk_districts.py:42
-msgid "Martin"
-msgstr "Martin"
-
-#: contrib/localflavor/sk/sk_districts.py:43
-msgid "Medzilaborce"
-msgstr "Medzilaborce"
-
-#: contrib/localflavor/sk/sk_districts.py:44
-msgid "Michalovce"
-msgstr "Michalovce"
-
-#: contrib/localflavor/sk/sk_districts.py:45
-msgid "Myjava"
-msgstr "Myjava"
-
-#: contrib/localflavor/sk/sk_districts.py:46
-msgid "Namestovo"
-msgstr "Namestovo"
-
-#: contrib/localflavor/sk/sk_districts.py:47
-msgid "Nitra"
-msgstr "Nitra"
-
-#: contrib/localflavor/sk/sk_districts.py:48
-msgid "Nove Mesto nad Vahom"
-msgstr "Nove Mesto nad Vahom"
-
-#: contrib/localflavor/sk/sk_districts.py:49
-msgid "Nove Zamky"
-msgstr "Nove Zamky"
-
-#: contrib/localflavor/sk/sk_districts.py:50
-msgid "Partizanske"
-msgstr "Partizanske"
-
-#: contrib/localflavor/sk/sk_districts.py:51
-msgid "Pezinok"
-msgstr "Pezinok"
-
-#: contrib/localflavor/sk/sk_districts.py:52
-msgid "Piestany"
-msgstr "Piestany"
-
-#: contrib/localflavor/sk/sk_districts.py:53
-msgid "Poltar"
-msgstr "Poltar"
-
-#: contrib/localflavor/sk/sk_districts.py:54
-msgid "Poprad"
-msgstr "Poprad"
-
-#: contrib/localflavor/sk/sk_districts.py:55
-msgid "Povazska Bystrica"
-msgstr "Povazska Bystrica"
-
-#: contrib/localflavor/sk/sk_districts.py:56
-msgid "Presov"
-msgstr "Presov"
-
-#: contrib/localflavor/sk/sk_districts.py:57
-msgid "Prievidza"
-msgstr "Prievidza"
-
-#: contrib/localflavor/sk/sk_districts.py:58
-msgid "Puchov"
-msgstr "Puchov"
-
-#: contrib/localflavor/sk/sk_districts.py:59
-msgid "Revuca"
-msgstr "Revuca"
-
-#: contrib/localflavor/sk/sk_districts.py:60
-msgid "Rimavska Sobota"
-msgstr "Rimavska Sobota"
-
-#: contrib/localflavor/sk/sk_districts.py:61
-msgid "Roznava"
-msgstr "Roznava"
-
-#: contrib/localflavor/sk/sk_districts.py:62
-msgid "Ruzomberok"
-msgstr "Ruzomberok"
-
-#: contrib/localflavor/sk/sk_districts.py:63
-msgid "Sabinov"
-msgstr "Sabinov"
-
-#: contrib/localflavor/sk/sk_districts.py:64
-msgid "Senec"
-msgstr "Senec"
-
-#: contrib/localflavor/sk/sk_districts.py:65
-msgid "Senica"
-msgstr "Senica"
-
-#: contrib/localflavor/sk/sk_districts.py:66
-msgid "Skalica"
-msgstr "Skalica"
-
-#: contrib/localflavor/sk/sk_districts.py:67
-msgid "Snina"
-msgstr "Snina"
-
-#: contrib/localflavor/sk/sk_districts.py:68
-msgid "Sobrance"
-msgstr "Sobrance"
-
-#: contrib/localflavor/sk/sk_districts.py:69
-msgid "Spisska Nova Ves"
-msgstr "Spisska Nova Ves"
-
-#: contrib/localflavor/sk/sk_districts.py:70
-msgid "Stara Lubovna"
-msgstr "Stara Lubovna"
-
-#: contrib/localflavor/sk/sk_districts.py:71
-msgid "Stropkov"
-msgstr "Stropkov"
-
-#: contrib/localflavor/sk/sk_districts.py:72
-msgid "Svidnik"
-msgstr "Svidnik"
-
-#: contrib/localflavor/sk/sk_districts.py:73
-msgid "Sala"
-msgstr "Sala"
-
-#: contrib/localflavor/sk/sk_districts.py:74
-msgid "Topolcany"
-msgstr "Topolcany"
-
-#: contrib/localflavor/sk/sk_districts.py:75
-msgid "Trebisov"
-msgstr "Trebisov"
-
-#: contrib/localflavor/sk/sk_districts.py:76
-msgid "Trencin"
-msgstr "Trencin"
-
-#: contrib/localflavor/sk/sk_districts.py:77
-msgid "Trnava"
-msgstr "Trnava"
-
-#: contrib/localflavor/sk/sk_districts.py:78
-msgid "Turcianske Teplice"
-msgstr "Turcianske Teplice"
-
-#: contrib/localflavor/sk/sk_districts.py:79
-msgid "Tvrdosin"
-msgstr "Tvrdosin"
-
-#: contrib/localflavor/sk/sk_districts.py:80
-msgid "Velky Krtis"
-msgstr "Velky Krtis"
-
-#: contrib/localflavor/sk/sk_districts.py:81
-msgid "Vranov nad Toplou"
-msgstr "Vranov nad Toplou"
-
-#: contrib/localflavor/sk/sk_districts.py:82
-msgid "Zlate Moravce"
-msgstr "Zlate Moravce"
-
-#: contrib/localflavor/sk/sk_districts.py:83
-msgid "Zvolen"
-msgstr "Zvolen"
-
-#: contrib/localflavor/sk/sk_districts.py:84
-msgid "Zarnovica"
-msgstr "Zarnovica"
-
-#: contrib/localflavor/sk/sk_districts.py:85
-msgid "Ziar nad Hronom"
-msgstr "Ziar nad Hronom"
-
-#: contrib/localflavor/sk/sk_districts.py:86
-msgid "Zilina"
-msgstr "Zilina"
-
-#: contrib/localflavor/sk/sk_regions.py:8
-msgid "Banska Bystrica region"
-msgstr "Banska Bystrica-regionen"
-
-#: contrib/localflavor/sk/sk_regions.py:9
-msgid "Bratislava region"
-msgstr "Bratislava-regionen"
-
-#: contrib/localflavor/sk/sk_regions.py:10
-msgid "Kosice region"
-msgstr "Kosice-regionen"
-
-#: contrib/localflavor/sk/sk_regions.py:11
-msgid "Nitra region"
-msgstr "Nitra-regionen"
-
-#: contrib/localflavor/sk/sk_regions.py:12
-msgid "Presov region"
-msgstr "Presov-regionen"
-
-#: contrib/localflavor/sk/sk_regions.py:13
-msgid "Trencin region"
-msgstr "Trencin-regionen"
-
-#: contrib/localflavor/sk/sk_regions.py:14
-msgid "Trnava region"
-msgstr "Trnava-regionen"
-
-#: contrib/localflavor/sk/sk_regions.py:15
-msgid "Zilina region"
-msgstr "Zilina-regionen"
-
-#: contrib/localflavor/uk/forms.py:21
-msgid "Enter a valid postcode."
-msgstr "Fyll i ett giltigt postnummer."
-
-#: contrib/localflavor/uk/uk_regions.py:11
-msgid "Bedfordshire"
-msgstr "Bedfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:12
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:14
-msgid "Cheshire"
-msgstr "Cheshire"
-
-#: contrib/localflavor/uk/uk_regions.py:15
-msgid "Cornwall and Isles of Scilly"
-msgstr "Cornwall and Isles of Scilly"
-
-#: contrib/localflavor/uk/uk_regions.py:16
-msgid "Cumbria"
-msgstr "Cumbria"
-
-#: contrib/localflavor/uk/uk_regions.py:17
-msgid "Derbyshire"
-msgstr "Derbyshire"
-
-#: contrib/localflavor/uk/uk_regions.py:18
-msgid "Devon"
-msgstr "Devon"
-
-#: contrib/localflavor/uk/uk_regions.py:19
-msgid "Dorset"
-msgstr "Dorset"
-
-#: contrib/localflavor/uk/uk_regions.py:20
-msgid "Durham"
-msgstr "Durham"
-
-#: contrib/localflavor/uk/uk_regions.py:21
-msgid "East Sussex"
-msgstr "East Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:22
-msgid "Essex"
-msgstr "Essex"
-
-#: contrib/localflavor/uk/uk_regions.py:23
-msgid "Gloucestershire"
-msgstr "Gloucestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:24
-msgid "Greater London"
-msgstr "Greater London"
-
-#: contrib/localflavor/uk/uk_regions.py:25
-msgid "Greater Manchester"
-msgstr "Greater Manchester"
-
-#: contrib/localflavor/uk/uk_regions.py:26
-msgid "Hampshire"
-msgstr "Hampshire"
-
-#: contrib/localflavor/uk/uk_regions.py:27
-msgid "Hertfordshire"
-msgstr "Hertfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:28
-msgid "Kent"
-msgstr "Kent"
-
-#: contrib/localflavor/uk/uk_regions.py:29
-msgid "Lancashire"
-msgstr "Lancashire"
-
-#: contrib/localflavor/uk/uk_regions.py:30
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:31
-msgid "Lincolnshire"
-msgstr "Lincolnshire"
-
-#: contrib/localflavor/uk/uk_regions.py:32
-msgid "Merseyside"
-msgstr "Merseyside"
-
-#: contrib/localflavor/uk/uk_regions.py:33
-msgid "Norfolk"
-msgstr "Norfolk"
-
-#: contrib/localflavor/uk/uk_regions.py:34
-msgid "North Yorkshire"
-msgstr "North Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:35
-msgid "Northamptonshire"
-msgstr "Northamptonshire"
-
-#: contrib/localflavor/uk/uk_regions.py:36
-msgid "Northumberland"
-msgstr "Northumberland"
-
-#: contrib/localflavor/uk/uk_regions.py:37
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-#: contrib/localflavor/uk/uk_regions.py:38
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:39
-msgid "Shropshire"
-msgstr "Shropshire"
-
-#: contrib/localflavor/uk/uk_regions.py:40
-msgid "Somerset"
-msgstr "Somerset"
-
-#: contrib/localflavor/uk/uk_regions.py:41
-msgid "South Yorkshire"
-msgstr "South Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:42
-msgid "Staffordshire"
-msgstr "Staffordshire"
-
-#: contrib/localflavor/uk/uk_regions.py:43
-msgid "Suffolk"
-msgstr "Suffolk"
-
-#: contrib/localflavor/uk/uk_regions.py:44
-msgid "Surrey"
-msgstr "Surrey"
-
-#: contrib/localflavor/uk/uk_regions.py:45
-msgid "Tyne and Wear"
-msgstr "Tyne and Wear"
-
-#: contrib/localflavor/uk/uk_regions.py:46
-msgid "Warwickshire"
-msgstr "Warwickshire"
-
-#: contrib/localflavor/uk/uk_regions.py:47
-msgid "West Midlands"
-msgstr "West Midlands"
-
-#: contrib/localflavor/uk/uk_regions.py:48
-msgid "West Sussex"
-msgstr "West Sussex"
-
-#: contrib/localflavor/uk/uk_regions.py:49
-msgid "West Yorkshire"
-msgstr "West Yorkshire"
-
-#: contrib/localflavor/uk/uk_regions.py:50
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-#: contrib/localflavor/uk/uk_regions.py:51
-msgid "Worcestershire"
-msgstr "Worcestershire"
-
-#: contrib/localflavor/uk/uk_regions.py:55
-msgid "County Antrim"
-msgstr "County Antrim"
-
-#: contrib/localflavor/uk/uk_regions.py:56
-msgid "County Armagh"
-msgstr "County Armagh"
-
-#: contrib/localflavor/uk/uk_regions.py:57
-msgid "County Down"
-msgstr "County Down"
-
-#: contrib/localflavor/uk/uk_regions.py:58
-msgid "County Fermanagh"
-msgstr "County Fermanagh"
-
-#: contrib/localflavor/uk/uk_regions.py:59
-msgid "County Londonderry"
-msgstr "County Londonderry"
-
-#: contrib/localflavor/uk/uk_regions.py:60
-msgid "County Tyrone"
-msgstr "County Tyrone"
-
-#: contrib/localflavor/uk/uk_regions.py:64
-msgid "Clwyd"
-msgstr "Clwyd"
-
-#: contrib/localflavor/uk/uk_regions.py:65
-msgid "Dyfed"
-msgstr "Dyfed"
-
-#: contrib/localflavor/uk/uk_regions.py:66
-msgid "Gwent"
-msgstr "Gwent"
-
-#: contrib/localflavor/uk/uk_regions.py:67
-msgid "Gwynedd"
-msgstr "Gwynedd"
-
-#: contrib/localflavor/uk/uk_regions.py:68
-msgid "Mid Glamorgan"
-msgstr "Mid Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:69
-msgid "Powys"
-msgstr "Powys"
-
-#: contrib/localflavor/uk/uk_regions.py:70
-msgid "South Glamorgan"
-msgstr "South Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:71
-msgid "West Glamorgan"
-msgstr "West Glamorgan"
-
-#: contrib/localflavor/uk/uk_regions.py:75
-msgid "Borders"
-msgstr "Borders"
-
-#: contrib/localflavor/uk/uk_regions.py:76
-msgid "Central Scotland"
-msgstr "Central Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:77
-msgid "Dumfries and Galloway"
-msgstr "Dumfries and Galloway"
-
-#: contrib/localflavor/uk/uk_regions.py:78
-msgid "Fife"
-msgstr "Fife"
-
-#: contrib/localflavor/uk/uk_regions.py:79
-msgid "Grampian"
-msgstr "Grampian"
-
-#: contrib/localflavor/uk/uk_regions.py:80
-msgid "Highland"
-msgstr "Highland"
-
-#: contrib/localflavor/uk/uk_regions.py:81
-msgid "Lothian"
-msgstr "Lothian"
-
-#: contrib/localflavor/uk/uk_regions.py:82
-msgid "Orkney Islands"
-msgstr "Orkney Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:83
-msgid "Shetland Islands"
-msgstr "Shetland Islands"
-
-#: contrib/localflavor/uk/uk_regions.py:84
-msgid "Strathclyde"
-msgstr "Strathclyde"
-
-#: contrib/localflavor/uk/uk_regions.py:85
-msgid "Tayside"
-msgstr "Tayside"
-
-#: contrib/localflavor/uk/uk_regions.py:86
-msgid "Western Isles"
-msgstr "Western Isles"
-
-#: contrib/localflavor/uk/uk_regions.py:90
-msgid "England"
-msgstr "England"
-
-#: contrib/localflavor/uk/uk_regions.py:91
-msgid "Northern Ireland"
-msgstr "Nordirland"
-
-#: contrib/localflavor/uk/uk_regions.py:92
-msgid "Scotland"
-msgstr "Scotland"
-
-#: contrib/localflavor/uk/uk_regions.py:93
-msgid "Wales"
-msgstr "Wales"
-
-#: contrib/localflavor/us/forms.py:16
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "Fyll i ett postnummer med formatet XXXXX eller XXXXX-XXXX."
-
-#: contrib/localflavor/us/forms.py:54
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "Fyll i ett giltigt amerikanskt personnummer i formatet XXX-XX-XXXX."
-
-#: contrib/localflavor/za/forms.py:20
-msgid "Enter a valid South African ID number"
-msgstr "Fyll i ett giltigt Sydafrikanskt ID-nummer."
-
-#: contrib/localflavor/za/forms.py:54
-msgid "Enter a valid South African postal code"
-msgstr "Fyll i ett giltigt Afrikanskt postnummer."
-
-#: contrib/localflavor/za/za_provinces.py:4
-msgid "Eastern Cape"
-msgstr "Eastern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:5
-msgid "Free State"
-msgstr "Free State"
-
-#: contrib/localflavor/za/za_provinces.py:6
-msgid "Gauteng"
-msgstr "Gauteng"
-
-#: contrib/localflavor/za/za_provinces.py:7
-msgid "KwaZulu-Natal"
-msgstr "KwaZulu-Natal"
-
-#: contrib/localflavor/za/za_provinces.py:8
-msgid "Limpopo"
-msgstr "Limpopo"
-
-#: contrib/localflavor/za/za_provinces.py:9
-msgid "Mpumalanga"
-msgstr "Mpumalanga"
-
-#: contrib/localflavor/za/za_provinces.py:10
-msgid "Northern Cape"
-msgstr "Northern Cape"
-
-#: contrib/localflavor/za/za_provinces.py:11
-msgid "North West"
-msgstr "North West"
-
-#: contrib/localflavor/za/za_provinces.py:12
-msgid "Western Cape"
-msgstr "Western Cape"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "omdirigera från"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Detta bör vara en absolut sökväg utan domännamnet. Exempel: '/handelser/"
-"sok/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "omdirigera till"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Detta kan vara antingen en absolut sökväg (som ovan) eller en fullständig "
-"URL som börjar med 'http://'."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "omdirigera"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "omdirigeringar"
-
-#: contrib/sessions/models.py:45
-msgid "session key"
-msgstr "sessionsnyckel"
-
-#: contrib/sessions/models.py:47
-msgid "session data"
-msgstr "sessionsdata"
-
-#: contrib/sessions/models.py:48
-msgid "expire date"
-msgstr "utgångsdatum"
-
-#: contrib/sessions/models.py:53
-msgid "session"
-msgstr "session"
-
-#: contrib/sessions/models.py:54
-msgid "sessions"
-msgstr "sessioner"
-
-#: contrib/sites/models.py:32
-msgid "domain name"
-msgstr "domännamn"
-
-#: contrib/sites/models.py:33
-msgid "display name"
-msgstr "visningsnamn"
-
-#: contrib/sites/models.py:39
-msgid "sites"
-msgstr "webbplatser"
-
-#: core/validators.py:80
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr ""
-"Detta värde får endast innehålla bokstäver, siffror, understreck eller "
-"bindestreck."
-
-#: core/validators.py:84
-msgid "Uppercase letters are not allowed here."
-msgstr "Versaler är inte tillåtna här."
-
-#: core/validators.py:88
-msgid "Lowercase letters are not allowed here."
-msgstr "Gemener är inte tillåtna här."
-
-#: core/validators.py:95
-msgid "Enter only digits separated by commas."
-msgstr "Fyll enbart i siffror separerade med kommatecken."
-
-#: core/validators.py:107
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Fyll i giltiga e-postadresser separerade med kommatecken."
-
-#: core/validators.py:111
-msgid "Please enter a valid IP address."
-msgstr "Var god fyll i en giltig IP-adress."
-
-#: core/validators.py:115
-msgid "Empty values are not allowed here."
-msgstr "Tomma värden är inte tillåtna här."
-
-#: core/validators.py:119
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Icke-numeriska tecken är inte tillåtna här."
-
-#: core/validators.py:123
-msgid "This value can't be comprised solely of digits."
-msgstr "Detta värde kan inte enbart bestå av siffror."
-
-#: core/validators.py:128 forms/fields.py:161
-msgid "Enter a whole number."
-msgstr "Fyll i ett heltal."
-
-#: core/validators.py:132
-msgid "Only alphabetical characters are allowed here."
-msgstr "Endast bokstäver är tillåtna här."
-
-#: core/validators.py:147
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Ogiltigt datum: %s"
-
-#: core/validators.py:152 db/models/fields/__init__.py:546
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Fyll i ett giltigt datum med formatet ÅÅÅÅ-MM-DD."
-
-#: core/validators.py:157
-msgid "Enter a valid time in HH:MM format."
-msgstr "Fyll i ett giltigt klockslag med formatet TT:MM."
-
-#: core/validators.py:161
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "Fyll i en giltig tidpunkt med formatet ÅÅÅÅ-MM-DD TT:MM."
-
-#: core/validators.py:166 forms/fields.py:422
-msgid "Enter a valid e-mail address."
-msgstr "Fyll i en giltig e-postadress."
-
-#: core/validators.py:178 core/validators.py:470 forms/fields.py:440
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ingen fil skickades. Kontrollera kodningnstypen i formuläret."
-
-#: core/validators.py:189 forms/fields.py:471
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Ladda upp en giltig bild. Filen du laddade upp var antingen ingen bild eller "
-"en korrupt bild."
-
-#: core/validators.py:196
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL:en %s pekar inte på en giltig bild."
-
-#: core/validators.py:200
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Telefonnummer måste vara angivna med formatet XXX-XXX-XXXX. \"%s\" är "
-"ogiltigt."
-
-#: core/validators.py:208
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL:en %s pekar inte på en giltig QuickTime-video."
-
-#: core/validators.py:212
-msgid "A valid URL is required."
-msgstr "En giltig URL krävs."
-
-#: core/validators.py:226
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Giltig HTML krävs. Specifika fel är:\n"
-"%s"
-
-#: core/validators.py:233
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Felaktigt formaterad XML: %s"
-
-#: core/validators.py:250
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Felaktig URL: %s"
-
-#: core/validators.py:255 core/validators.py:257
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL:en %s är en trasig länk."
-
-#: core/validators.py:263
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Fyll i en giltig förkortning för en amerikansk delstat."
-
-#: core/validators.py:277
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Akta din tunga! Ordet %s är inte tillåtet här."
-msgstr[1] "Akta din tunga! Orden %s är inte tillåtna här."
-
-#: core/validators.py:284
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Detta fält måste matcha fältet '%s'."
-
-#: core/validators.py:303
-msgid "Please enter something for at least one field."
-msgstr "Var god fyll i minst ett fält."
-
-#: core/validators.py:312 core/validators.py:323
-msgid "Please enter both fields or leave them both empty."
-msgstr "Fyll antingen i båda fälten eller lämna båda tomma."
-
-#: core/validators.py:331
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Detta fält måste anges om %(field)s är %(value)s"
-
-#: core/validators.py:344
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Detta fält måste anges om %(field)s inte är %(value)s"
-
-#: core/validators.py:363
-msgid "Duplicate values are not allowed."
-msgstr "Dubbletter är inte tillåtna."
-
-#: core/validators.py:378
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Detta värde måste vara mellan %(lower)s och %(upper)s."
-
-#: core/validators.py:380
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Detta värde måste vara minst %s."
-
-#: core/validators.py:382
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "Detta värde får inte vara mer än %s."
-
-#: core/validators.py:423
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Detta värde måste vara en potens av %s."
-
-#: core/validators.py:433
-msgid "Please enter a valid decimal number."
-msgstr "Fyll i ett giltigt decimaltal."
-
-#: core/validators.py:440
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Fyll i ett giltigt decimaltal med som mest %s siffra totalt."
-msgstr[1] "Fyll i ett giltigt decimaltal med som mest %s siffror totalt."
-
-#: core/validators.py:443
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-"Fyll i ett giltigt decimaltal med en heltalsdel med som mest %s siffra."
-msgstr[1] ""
-"Fyll i ett giltigt decimaltal med en heltalsdel med som mest %s siffror."
-
-#: core/validators.py:446
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "Fyll i ett giltigt decimaltal med som mest %s decimal."
-msgstr[1] "Fyll i ett giltigt decimaltal med som mest %s decimaler."
-
-#: core/validators.py:454
-msgid "Please enter a valid floating point number."
-msgstr "Fyll i ett giltigt flyttal."
-
-#: core/validators.py:463
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Se till att filen du laddade upp är minst %s byte stor."
-
-#: core/validators.py:464
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Se till att filen du laddade upp är som mest %s byte stor."
-
-#: core/validators.py:481
-msgid "The format for this field is wrong."
-msgstr "Formatet för detta fält är fel."
-
-#: core/validators.py:496
-msgid "This field is invalid."
-msgstr "Detta fält är ogiltigt."
-
-#: core/validators.py:532
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "Kunde inte hämta något från %s."
-
-#: core/validators.py:535
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-"URL:en %(url)s returnerade den ogiltiga Content-Type headern '%(contenttype)"
-"s'."
-
-#: core/validators.py:568
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Var god avsluta den oavslutade taggen %(tag)s på rad %(line)s. (Raden börjar "
-"med \"%(start)s\".)"
-
-#: core/validators.py:572
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"En del text som börjar på rad %(line)s är inte tillåten i det sammanhanget. "
-"(Raden börjar med \"%(start)s\".)"
-
-#: core/validators.py:577
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"%(attr)s\" på rad %(line)s är ett ogiltigt attribut. (Raden börjar med \"%"
-"(start)s\".)"
-
-#: core/validators.py:582
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"\"<%(tag)s>\" på rad %(line)s är en ogiltig tagg. (Raden börjar med \"%"
-"(start)s\".)"
-
-#: core/validators.py:586
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"En tagg på rad %(line)s saknar en eller flera obligatoriska attribut. (Raden "
-"börjar med \"%(start)s\".)"
-
-#: core/validators.py:591
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"Attributet \"%(attr)s\" på rad %(line)s har ett ogiltigt värde. (Raden "
-"börjar med \"%(start)s\".)"
-
-#: db/models/manipulators.py:304
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(object)s med typen %(type)s finns redan för %(field)s."
-
-#: db/models/fields/__init__.py:46
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s med detta %(fieldname)s finns redan."
-
-#: db/models/fields/__init__.py:320 db/models/fields/files.py:168
-#: db/models/fields/files.py:179 forms/fields.py:52 oldforms/__init__.py:370
-msgid "This field is required."
-msgstr "Detta fält måste fyllas i."
-
-#: db/models/fields/__init__.py:434
-msgid "This value must be an integer."
-msgstr "Detta värde måste vara ett heltal."
-
-#: db/models/fields/__init__.py:480
-msgid "This value must be either True or False."
-msgstr "Detta värde måste vara antingen True eller False."
-
-#: db/models/fields/__init__.py:509
-msgid "This field cannot be null."
-msgstr "Detta fält får inte vara null."
-
-#: db/models/fields/__init__.py:611 db/models/fields/__init__.py:628
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format."
-msgstr "Fyll i en giltig tidpunkt med formatet ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:684
-msgid "This value must be a decimal number."
-msgstr "Detta värde måste vara ett decimaltal."
-
-#: db/models/fields/__init__.py:825
-msgid "This value must be either None, True or False."
-msgstr "Detta värde måste vara antingen None, True eller False."
-
-#: db/models/fields/__init__.py:937 db/models/fields/__init__.py:950
-msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format."
-msgstr "Fyll i ett giltigt klockslag med formatet TT:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/files.py:188
-msgid "Enter a valid filename."
-msgstr "Fyll i ett giltigt filnamn."
-
-#: db/models/fields/related.py:92
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Var god fyll i giltig %s."
-
-#: db/models/fields/related.py:776
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Håll ner \"Control\" eller \"Command\" på en Mac för att välja fler än en."
-
-#: db/models/fields/related.py:856
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Var god och fyll giltiga %(self)s ID-nummer. Värdet %(value)r är ogiltigt."
-msgstr[1] ""
-"Var god och fyll giltiga %(self)s ID-nummer. Värdena %(value)r är ogiltiga."
-
-#: forms/fields.py:53
-msgid "Enter a valid value."
-msgstr "Fyll i ett giltigt värde."
-
-#: forms/fields.py:133
-#, python-format
-msgid "Ensure this value has at most %(max)d characters (it has %(length)d)."
-msgstr ""
-"Kontrollera att detta värde har högst %(max)d tecken (det har %(length)d)."
-
-#: forms/fields.py:134
-#, python-format
-msgid "Ensure this value has at least %(min)d characters (it has %(length)d)."
-msgstr ""
-"Kontrollera att detta värde har minst %(min)d tecken (det har %(length)d)."
-
-#: forms/fields.py:162 forms/fields.py:191 forms/fields.py:220
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "Kontrollera att detta värde är mindre eller lika med %s."
-
-#: forms/fields.py:163 forms/fields.py:192 forms/fields.py:221
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "Kontrollera att detta värde är mer eller lika med %s."
-
-#: forms/fields.py:190 forms/fields.py:219
-msgid "Enter a number."
-msgstr "Fyll i ett tal."
-
-#: forms/fields.py:222
-#, python-format
-msgid "Ensure that there are no more than %s digits in total."
-msgstr "Kontrollera att det inte finns mer än totalt %s siffror."
-
-#: forms/fields.py:223
-#, python-format
-msgid "Ensure that there are no more than %s decimal places."
-msgstr "Kontrollera att det inte finns mer än %s decimaler."
-
-#: forms/fields.py:224
-#, python-format
-msgid "Ensure that there are no more than %s digits before the decimal point."
-msgstr "Kontrollera att det inte finns mer än %s siffror före decimaltecknet."
-
-#: forms/fields.py:282 forms/fields.py:803
-msgid "Enter a valid date."
-msgstr "Fyll i ett giltigt datum."
-
-#: forms/fields.py:315 forms/fields.py:804
-msgid "Enter a valid time."
-msgstr "Fyll i en giltig tid."
-
-#: forms/fields.py:354
-msgid "Enter a valid date/time."
-msgstr "Fyll i ett giltigt datum/tid."
-
-#: forms/fields.py:441
-msgid "No file was submitted."
-msgstr "Ingen fil skickades."
-
-#: forms/fields.py:442 oldforms/__init__.py:689
-msgid "The submitted file is empty."
-msgstr "Den skickade filen är tom."
-
-#: forms/fields.py:532
-msgid "Enter a valid URL."
-msgstr "Fyll i en giltig URL."
-
-#: forms/fields.py:533
-msgid "This URL appears to be a broken link."
-msgstr "Denna URL verkar vara en trasig länk."
-
-#: forms/fields.py:601 forms/fields.py:652
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Välj ett giltigt alternativ. %(value)s finns inte bland tillgängliga "
-"alternativ."
-
-#: forms/fields.py:653 forms/fields.py:714 forms/models.py:528
-msgid "Enter a list of values."
-msgstr "Fyll i en lista med värden."
-
-#: forms/fields.py:832
-msgid "Enter a valid IPv4 address."
-msgstr "Fyll i en giltig IPv4 adress."
-
-#: forms/models.py:461
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga "
-"alternativ."
-
-#: forms/models.py:529
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr ""
-"Välj ett giltigt alternativ. %s finns inte bland tillgängliga alternativ."
-
-#: oldforms/__init__.py:405
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Se till att din text är kortare än %s tecken."
-msgstr[1] "Se till att din text är kortare än %s tecken."
-
-#: oldforms/__init__.py:410
-msgid "Line breaks are not allowed here."
-msgstr "Radbrytningar är inte tillåtna här."
-
-#: oldforms/__init__.py:508 oldforms/__init__.py:582 oldforms/__init__.py:621
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Välj ett giltigt alternativ; '%(data)s' finns inte bland %(choices)s."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Fyll i ett heltal mellan -32768 och 32767."
-
-#: oldforms/__init__.py:760
-msgid "Enter a positive number."
-msgstr "Fyll i ett positivt tal."
-
-#: oldforms/__init__.py:770
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Fyll i ett heltal mellan 0 och 32767."
-
-#: template/defaultfilters.py:698
-msgid "yes,no,maybe"
-msgstr "ja,nej,kanske"
-
-#: template/defaultfilters.py:729
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d byte"
-
-#: template/defaultfilters.py:731
-#, python-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-#: template/defaultfilters.py:733
-#, python-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
-
-#: template/defaultfilters.py:734
-#, python-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
-
-#: utils/dateformat.py:41
-msgid "p.m."
-msgstr "e.m."
-
-#: utils/dateformat.py:42
-msgid "a.m."
-msgstr "f.m."
-
-#: utils/dateformat.py:47
-msgid "PM"
-msgstr "FM"
-
-#: utils/dateformat.py:48
-msgid "AM"
-msgstr "EM"
-
-#: utils/dateformat.py:97
-msgid "midnight"
-msgstr "midnatt"
-
-#: utils/dateformat.py:99
-msgid "noon"
-msgstr "middag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Måndag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Tisdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Onsdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Torsdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Fredag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Lördag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Söndag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Mån"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Tis"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ons"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Tors"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Lör"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Sön"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januari"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februari"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:18 utils/dates.py:31
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:19 utils/dates.py:31
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Augusti"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "December"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:31
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:32
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:32
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:32
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:32
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:32
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/text.py:128
-msgid "or"
-msgstr "eller"
-
-#: utils/timesince.py:21
-msgid "year"
-msgid_plural "years"
-msgstr[0] "år"
-msgstr[1] "år"
-
-#: utils/timesince.py:22
-msgid "month"
-msgid_plural "months"
-msgstr[0] "månad"
-msgstr[1] "månader"
-
-#: utils/timesince.py:23
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "vecka"
-msgstr[1] "veckor"
-
-#: utils/timesince.py:24
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dag"
-msgstr[1] "dagar"
-
-#: utils/timesince.py:25
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "timme"
-msgstr[1] "timmar"
-
-#: utils/timesince.py:26
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minut"
-msgstr[1] "minuter"
-
-#: utils/timesince.py:46
-msgid "minutes"
-msgstr "minuter"
-
-#: utils/timesince.py:51
-#, python-format
-msgid "%(number)d %(type)s"
-msgstr "%(number)d %(type)s"
-
-#: utils/timesince.py:57
-#, python-format
-msgid ", %(number)d %(type)s"
-msgstr ", %(number)d %(type)s"
-
-#: utils/translation/trans_real.py:401
-msgid "DATE_FORMAT"
-msgstr "Y-m-d"
-
-#: utils/translation/trans_real.py:402
-msgid "DATETIME_FORMAT"
-msgstr "Y-m-d H:i"
-
-#: utils/translation/trans_real.py:403
-msgid "TIME_FORMAT"
-msgstr "H:i"
-
-#: utils/translation/trans_real.py:419
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:420
-msgid "MONTH_DAY_FORMAT"
-msgstr "j F"
-
-#: views/generic/create_update.py:114
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s skapades."
-
-#: views/generic/create_update.py:156
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s uppdaterades."
-
-#: views/generic/create_update.py:198
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s togs bort."
-
-#~ msgid "Your new password is: %(new_password)s"
-#~ msgstr "Ditt nya lösenord är: %(new_password)s"
-
-#~ msgid "Feel free to change this password by going to this page:"
-#~ msgstr ""
-#~ "Du är välkommen att ändra detta lösenord genom att gå till denna sida:"
-
-#~ msgid "Ordering"
-#~ msgstr "Sortering"
-
-#~ msgid "Order:"
-#~ msgstr "Sortera:"
-
-#~ msgid "Added %s."
-#~ msgstr "Lade till %s."
-
-#~ msgid "Deleted %s."
-#~ msgstr "Tog bort %s."
-
-#~ msgid "The two 'new password' fields didn't match."
-#~ msgstr "De två 'nytt lösenord'-fälten stämde inte överens."
-
-#~ msgid "Year must be 1900 or later."
-#~ msgstr "Årtal måste vara 1900 eller senare."
-
-#~ msgid "Separate multiple IDs with commas."
-#~ msgstr "Separera flera ID-nummer med kommatecken."
-
-#~ msgid "Brazilian"
-#~ msgstr "Brasilianska"
-
-#~ msgid "Gaeilge"
-#~ msgstr "Gaeliska"
diff --git a/webapp/django/conf/locale/sv/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/sv/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index d931eb9..0000000
--- a/webapp/django/conf/locale/sv/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/sv/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/sv/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 73ad0b5..0000000
--- a/webapp/django/conf/locale/sv/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,121 +0,0 @@
-# Swedish translation of Django
-# Copyright (C) 2005
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-19 01:28+0200\n"
-"PO-Revision-Date: 2008-02-01 15:32+0100\n"
-"Last-Translator: Ludvig Ericson <ludvig.ericson@gmail.com>\n"
-"Language-Team: Django I18N <Django-I18N@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
-"X-Poedit-Language: Swedish\n"
-"X-Poedit-Country: SWEDEN\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Tillgängliga %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Markera alla"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Lägg till"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Ta bort"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Valda %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Gör dina val och klicka på "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Ta bort alla"
-
-#: contrib/admin/media/js/calendar.js:24
-#: contrib/admin/media/js/dateparse.js:32
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januari Februari Mars April Maj Juni Juli Augusti September Oktober November "
-"December"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "S M T O T F L"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Söndag Måndag Tisdag Onsdag Torsdag Fredag Lördag"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr "Visa"
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr "Göm"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr "Nu"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr "Klocka"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr "Välj en tidpunkt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr "Midnatt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr "06:00"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr "Middag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr "I dag"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr "Kalender"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr "I går"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr "I morgon"
diff --git a/webapp/django/conf/locale/ta/LC_MESSAGES/django.mo b/webapp/django/conf/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index ea0fab5..0000000
--- a/webapp/django/conf/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ta/LC_MESSAGES/django.po b/webapp/django/conf/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 6833255..0000000
--- a/webapp/django/conf/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2136 +0,0 @@
-# translation of django-new.po to tamil
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# PONNUSAMY.A <ponnusamy.simpleman@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-25 15:43+0200\n"
-"PO-Revision-Date: 2007-03-15 16:48+0530\n"
-"Last-Translator: PONNUSAMY <ponnusamy.simpleman@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language-Team: tamil <tamilinix@yahoogroups.com>\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=n>1;"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "அடையாளம்"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "தலையங்கம்"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "குறிப்பு"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "#1 தரவரிசை"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "#2 தரவரிசை"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "#3 தரவரிசை"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "#4 தரவரிசை"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "#5 தரவரிசை"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "#6 தரவரிசை"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "#7 தரவரிசை"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "#8 தரவரிசை"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "அங்கீகரிக்கப்பட்ட தரவரிசை"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "தேதி/நேரம் சமர்ப்பிக்கப்பட்டுள்ளது"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "பொதுவானது"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP விலாசம்"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "நீக்கபட்டது"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr "குறிப்பு சரியாக இல்லையென்றால் இந்த பெட்டியில் குறியிடவும். இதற்கு பதிலாக \"இந்த குறிப்பு நீக்கபட்டது\" காண்பிக்கபடும்."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "குறிப்பு"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "பொருள் அடக்க object"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s ஆல் %(date)s இல் அளிக்கப்பட்டது \n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "நபரின் பெயர்"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip விலாசம்"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "பணியாளர்களால் அனுமதிக்கப்பட்டது"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "சுதந்தரமான குறிப்பு"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "சுதந்தரமான குறிப்புகள்"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "மதிப்பீடு "
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "மதிப்பீட்டு தேதி"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "கர்மா மதிப்பீடு"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "கர்மா மதிப்பீடு"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(user)s ஈட்டய %(score)d "
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"இந்த குறிப்பு %(user)s ஆல் குறிக்கபட்டது:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "குறியின் தேதி"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "பயனாளர் குறி"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "பயனாளர் குறிகள்"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "%r ஆல் குறிக்கப்பட்டது"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "நீக்கப்பட்ட தேதி"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "மட்டொறுத்தால் நீக்கப்பட்டது"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "மட்டொறுத்தர்களால் நீக்கப்பட்டது"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "மட்டொறுத்தால் நீக்கப்பட்டது %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "அடையாளம் இல்லாத பயனாளறால் வாக்களிக்க முடியாது"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "செல்லாத குறிப்பு ID"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "உங்களை நீங்களே தேர்வு செய்து கொள்ள முடியாது"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "இந்த தரவரிசை தேவைப்படுகிறது ஏனெனில் மற்றொரு தரவரிசை அளிக்கப்பட்டு விட்டதால்"
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"இந்த குறிப்பானது குறைவாக அளித்த பயனாளரால் %(count)s "
-"அளிக்கப்பட்டது:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"இந்த குறிப்பானது குறைவாக அளித்த பயனாளர்களால் %(count)s"
-" அளிக்கப்பட்டது:\n"
-"\n"
-"%(text)s"
-
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"முழுமையான விவரங்களை அளிக்காத பயனாளரால் கொடுக்கப்பட்டது:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "POSTகளுக்கு மட்டும் அனுமதி உண்டு"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "ஒன்று அல்லது ஒன்றிற்கு மேற்ப்பட்ட புலங்கள் சமற்பிக்கப்படவில்லை"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "எவறோ குறிப்புறையைச்  சேதப்படுத்திவிட்டர்கள் (பாதுகாப்பு மீறல்)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr "குறிப்புறை படிவத்தில் முறையான இலக்கு அளவுருக்கவில்லை -- object ID முறையானதாக இல்லை"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "குறிப்பு படிவம் முன்னோட்டம் அல்லது பிற்பட்டதை வழங்குவது இல்லை"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "பயனர் பெயர்:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "வெளியேறு"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "கடவுச்சொல்:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "கடவுச்சொல்லை மறந்துவிட்டீரா?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "விகிதம்"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "தேவைப்படுகிறது"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "விருப்பத்தேர்வு"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "புகைப்படத்தை அனுப்பு"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "விவரம்:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "குறிப்பை முன்னேற்றமிடு"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "உங்கள் பெயர்:"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3> %s ஆல்:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "அனைத்தும்"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "எந்த தேதியும்"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "இன்று"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "கடந்த 7 நாட்களில்"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "இந்த மாதம்"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "இந்த வருடம்"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "ஆம்"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "இல்லை"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "தெரியாத"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "செயல் நேரம்"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "பொருள் அடையாளம்"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "பொருள் உருவகித்தம்"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "செயர்குறி"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "செய்தியை மாற்று"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "புகுபதிவு உள்ளீடு"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "புகுபதிவு உள்ளீடுகள்"
-
-#: contrib/admin/templatetags/admin_list.py:230
-msgid "All dates"
-msgstr "அனைத்து தேதியும்"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "தயவுசெய்து சரியான பயனர்ப்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிடவும். இரண்டும் எழுத்துவகையைச் சார்ந்தது."
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "உள்ளே போ"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "தயவுசெய்து மறுபடியும் புகுபதிவு செய்க. ஏனென்றால் காலம் முடிவடைந்தது. கவலை படவேண்டாம்: உங்களுடைய அனுப்புதல் சேமிக்கப்பட்டுள்ளது."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr "உங்களுடைய உலாவி தற்கால நிரல்களை அமதிக்காதவாறு உள்ளமைக்கப் பட்டவாறு தெரிகிறது. தயவுசெய்து தற்காலிக நிரலை செயல்பட செய்து, பக்கத்தை மறுபடி உள் வாங்கவும். "
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "பயனர் பெயர் '@' குறியீட்டை கொண்டிருக்க முடியாது."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "உங்கள் மின் அஞ்சல் முகவரி உங்கள் பயனர் பெயராக இல்லை. '%s'யை முயற்சி செய்யவும்."
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "இணைய மேலான்மை"
-
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாகச் சேர்க்கப்பட்டது."
-
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:22
-msgid "You may edit it again below."
-msgstr "நீங்கள் மறுபடியும் தொகுக்க முடியும். "
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "நீங்கள் மற்ற %s யை கீழே சேர்க்க முடியும்."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "%s யை சேர்க்க"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s சேர்க்கப்பட்டுள்ளது."
-
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "மற்றும்"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "%s மாற்றபட்டுள்ளது."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s அழிக்கப்பட்டது."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "எந்த புலமும் மாறவில்லை."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக மாற்றப்பட்டது."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக சேர்க்கப்பட்டுள்ளது. நீங்கள் கீழே தொகுக்க முடியும்."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "%s யை மாற்று"
-
-#: contrib/admin/views/main.py:473
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "%(name)s ல் உள்ள %(fieldname)s: %(obj)s"
-
-#: contrib/admin/views/main.py:478
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "%(name)s ல் உள்ள %(fieldname)s:"
-
-#: contrib/admin/views/main.py:511
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக அழிக்கப்பட்டுள்ளது."
-
-#: contrib/admin/views/main.py:514
-msgid "Are you sure?"
-msgstr "உறுதியாக சொல்கிறீர்களா?"
-
-#: contrib/admin/views/main.py:536
-#, python-format
-msgid "Change history: %s"
-msgstr "வரலாற்றை மாற்று: %s"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s"
-msgstr "%s யை தேர்ந்தெடு"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s to change"
-msgstr "%s யை மாற்ற தேர்ந்தெடு"
-
-#: contrib/admin/views/main.py:758
-msgid "Database error"
-msgstr "தகவல்சேமிப்பு  பிழை"
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "ஒட்டு:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "வடிகட்டி:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "நோற்றமிடு:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "பக்கம் %r இல்லை"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %r not found in app %r"
-msgstr "மாதரி %r பக்கம் %rல் இல்லை "
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%s.%s` object"
-msgstr "சம்மந்தப்பட்ட '%s.%s' பொருள்"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "மாதிரி:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%s.%s` objects"
-msgstr "மாதரி %s பக்கம் %s ல் இல்லை"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "அனைத்து %s "
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "எண்ணிக்கை %s"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "புலத்தின் %s பொருள்"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "முழு எண்"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "பூலியன் (சரி அல்லது தவறு)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "உரை (%(maxlength)s வரைக்கும்)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "கமாவாள் பிரிக்கப்பட்ட முழு எண்"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "தேதி (நேரமில்லாமல்)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "தேதி (நேரமுடன்)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "மின் அஞ்சல்"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "கோப்புப் பாதை"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "தசம எண்கள்"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "இலக்கு முறை (சரி, தவறு அல்லது ஒன்றும் இல்லை)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "ஆதி மாதிரிக்கு தொடர்புடையது"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "தொலைபேசி எண்"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "உரை"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "நேரம்"
-
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "U.S. மாநிலம் (இரண்டு மேல் எழுத்துவகை எழுத்து"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML உரை"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s -ல் urlpattern தோன்றுவதில்லை"
-
-#: contrib/admin/views/auth.py:28
-msgid "Add user"
-msgstr "புதிய பயனர்"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "ஆவனமாக்கம்"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "கடவுச்சொல்லை மாற்று"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "வீடு"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "வரலாறு"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "தேதி/நேரம் "
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "பயனர்"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "செயல்"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "தேதியும் முழு நேரமும்"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"இந்த பொருள் மாற்று வரலாற்றில் இல்லை"
-"ஒரு வேளை நிர்வாகத்தளத்தின் மூலம் சேர்க்கப்படாமலிருக்கலாம்"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "டிஜாங்ஙோ தள நிர்வாகி"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "டிஜாங்ஙோ நிர்வாகம் "
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "சேவகன் பிழை"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "சேவையகம் தவறு(500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "சேவையகம் பிழை<em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"தவறு ஏற்பட்டுள்ளது"
-"வலைத்தள நிர்வாகிக்கு மின்னஞ்சல் அனுப்பப்பட்டுள்ளது. விரைவில் சரி செய்யப்படும். உங்களது பொறுமைக்கு நன்றி"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "பக்கத்தைக் காணவில்லை"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "நீங்கள் விரும்பிய பக்கத்தை காண இயலவில்லை,அதற்காக நாங்கள் வருந்துகிறோம்."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "செயலியில் கிடைக்கக் கூடிய  %(name)s  மாதிரிகள்"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "சேர்க்க"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "மாற்றுக"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "உங்களுக்கு மாற்றுவதற்குரிய உரிமையில்லை"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "தற்போதைய செயல்கள்"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "எனது செயல்கள்"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "எதுவும் கிடைக்கவில்லை"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s சேர்க்க"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "நீங்கள் தங்களது கடவுச்சொல்லை  <a href=\"/password_reset/\"> மறந்து விட்டீர்களா?"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "நல்வரவு,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "நீக்குக"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr "நீக்கும் '%(escaped_object)s' ஆனது %(object_name)s தொடர்புடைய மற்றவற்றையும் நீக்கும். ஆனால்  அதை நீக்குவதற்குரிய  உரிமை  உங்களுக்கு  இல்லை"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"நீங்கள் இந்த \"%(escaped_object)s\" %(object_name)s நீக்குவதில் நிச்சயமா?"
-"தொடர்புடைய மற்றவையும் நீக்கப்படும். "
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "ஆம், எனக்கு உறுதி"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s ஆல்"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "செல்"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 விடை"
-msgstr[1] "%(counter)s விடைகள்"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s மொத்தம்"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "எல்லாவற்றையும் காட்டு"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "வடிகட்டி"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "தளத்தில் பார்"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "கீழே உள்ள தவறுயைத் திருத்துக"
-msgstr[1] "கீழே உள்ள தவறுகளைத் திருத்துக"
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr "வரிசைப்படுத்துதல்"
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr "வரிசைப்படுத்து:"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "புதியதாக சேமி"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "சேமித்து இன்னுமொன்றைச் சேர்"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "சேமித்து மாற்றத்தை தொடருக"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "சேமிக்க"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr "உங்களுடைய தகவல்சேமிப்பகத்தை  நிறுவுவதில் சில தவறுகள் உள்ளது. அதற்கு இணையான தகவல்சேமிப்பு அட்டவணையை" "தயாரிக்கவும். மேலும் பயனர் படிக்கும்  படியான தகவல்சேமிப்பகத்தை உருவாக்கவும்."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "முதலில்,பயனர்ப்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிடவும்.அதன் பிறகு தான் நீங்கள் உங்கள் பெயரின் விவரங்களை திருத்த முடியும்"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "பயனர்ப்பெயர்"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "கடவுச்சொல்"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "கடவுச்சொல்(மறுபடியும்)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "மேலே அதே கடவுச்சொல்லை உள்ளிடவும், சரிபார்ப்பதற்காக ."
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "கடவுச்சொல் மாற்று"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "வெற்றிகரமாக கடவுச்சொல் மாற்றபட்டது"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "உங்களுடைய கடவுச்சொல் மாற்றபட்டது"
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "கடவுச்சொல்லை மாற்றியமை"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"கடவுச்சொல்லை மறந்துவிட்டீரா? உங்களது மின்னஞ்சல்  முகவரியை உள்ளிடுக,அதன் பிறகு உங்கள் கடவுச்சொல்"
-" மாற்றியமைக்கப்பட்டு உங்களது மின்னஞ்சல்  முகவரிக்கு அனுப்பப்படும்"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "மின்அஞ்சல் முகவரி:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "எனது கடவுச்சொல்லை மாற்றியமை"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "வலைத்தளத்தில் உங்களது பொன்னான நேரத்தை செலவழித்தமைக்கு மிகுந்த நன்றி"
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "மீண்டும் உள்ளே பதிவு செய்யவும்"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "கடவுச்சொல் மாற்றியமைத்தல் வெற்றி"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"கடவுச்சொல்லை  மறந்து விட்டால் உங்களது மின்னஞ்சல்  முகவரியை உள்ளிடுக புதிய கடவுச்சொல்  "
-"உங்களது மின்னஞ்சல்  முகவரிக்கு அனுப்பப்பட்டுள்ளது. விரைவில் அது உங்களுக்கு கிடைக்கும்"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "பாதுகாப்பு காரணங்களுக்காக , முதலில் உங்களது பழைய கடவுச்சொல்லை உள்ளிடுக. அதன் பிறகு புதிய கடவுச்சொல்லை இரு முறை உள்ளிடுக.  இது உங்களது உள்ளிடுதலை சரிபார்க்க உதவும். "
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "பழைய கடவுச்சொல் :"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "புதிய கடவுச்சொல்:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "கடவுச்சொலின் மாற்றத்தை உறுதிப்படுத்து:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "கடவுச் சொல்லை மாற்றவும்"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "கடவுச்சொல்லை மாற்றியமைக்க நீங்கள் கேட்டதனால் உங்களுக்கு இந்த மின்னஞ்சல் அனுப்பப்பட்டுள்ளது"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "%(site_name)s -இல் உள்ள உங்களது பயனாளர் கணக்கு"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "உங்களது  புதிய  கடவுச்சொல் : %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "கடவுச்சொல்லை மாற்றியமைக்க நீங்கள் இந்த பக்கத்திற்கு தாராளமாக போகலாம்."
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "உங்களது பயனாளர் பெயர், நீங்கள் மறந்திருந்தால்:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "எங்களது வலைத்தளத்தை பயன் படுத்தியதற்கு மிகுந்த நன்றி"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "இந்த %(site_name)s -இன்  குழு"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "புத்தகக்குறிகள்"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "ஆவணமாக்கக் குறியீடுகள்"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\"> புத்தக குறியீடுகளை நிறுவ இந்த இணைப்பினை புத்தகக்குறியீட்டுப் \n"
-"பட்டைக்கு இழுக்கவும். அல்லது வலது கிளிக் செய்து புத்தகக்குறியீடுகளில் சேர்க்கவும். \n"
-" இனி தளத்தில் எந்தப் பக்கத்தில் இருந்தும் புத்தகக்குறியீட்டினை தேர்வுசெய்ய முடியும். \n"
-" நீங்கள் இந்த தளத்தை  \"internal\" என  குறிக்கப்பட்ட கணிணியில் இருந்து மட்டுமே \n"
-" ஒருசில புத்தகக்குறிகளை செயல்படுத்தமுடியும்\n "
-" உங்களுக்கு, கணிணி  \"internal\" என உறுதி செய்ய கணிணிமேளாலரை அணுகவும்.</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "இந்த பக்கத்திற்கான ஆவணம்"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "எந்த ஒரு பக்கத்திலிருந்தும் ஆவணப்பக்கத்தை பார்வையிடுதல், அந்த பக்கத்தை உருவாக்குகிறது."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "object ID-ஐ காட்டு"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "ஒரே object-ஐ குறிக்கும் பக்கங்களின் பொருளடக்க வகை மற்றும் unique ID-ஐ   காட்டுகிறது."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "இதை திருத்துக (தற்போதைய சாளரம்)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ஒரே object-ஐ குறிக்கும் பக்கங்களைக் காண மேலாளர் பக்கத்திற்கு செல்க."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "இதை திருத்துக. (புதிய சாளரம்)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "மேளாலர் பக்கத்தை முன்பு கண்டதுபோல், ஆனால் புதிய சாளரத்தில் திறக்கிறது."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "தேதி:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "நேரம்:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "தற்போது:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "மாற்று:"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "லிருந்து திசைமாற்று"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"இது ஒரு முழுமையான பாதையாக இருக்கவேண்டும். "
-"இணையத்தளப்பெயராக இருக்கக்கூடாது. உதாரணம்:'/"
-"events/search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "திரும்ப அனுப்பு"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "இது முழுமையான பாதையாக (மேலே உள்ளது போல) அல்லது  \"http\"//\" என தொடங்கும் வலை  முகவரியாக இருக்கலாம்."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "திரும்ப அனுப்பு"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "திரும்ப அனுப்புகிறது. "
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "உதாரணம்: '/about/contact/'. முன்னும் பின்னும் '/' உள்ளதை உறுதி செய்க."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "தலைப்பு"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "பொருளடக்கம்"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "விமர்சனங்களை செயலாக்கு"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "வார்ப்புரு பெயர்"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr "உதாரணம்  'flatpages/contact_page'. இது இல்லையெனில் 'flatpages/default' என்பதே பயன்படுத்தப்படும்.ப்படும்."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "முன்பதிவு தேவை"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "இது தெரிவு செய்யப்பட்டிருந்தால், உள்நுழைந்த பயனர்கள் மட்டுமே இந்தப் பக்கத்தை பார்க்க முடியும்."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "எளிய பக்கம்"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "எளிய பக்கங்கள்"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "வெளியே வந்துவீட்டீர்"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
-msgstr "பெயர்"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "குறிமுறை பெயர்"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "அனுமதி"
-
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
-msgstr "அனுமதிகள்"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "குழு"
-
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
-msgstr "குழுக்கள்"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "பயனர் பெயர்"
-
-#: contrib/auth/models.py:90
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "தேவை. 30 எழுத்துகள் அல்லது கொஞ்சம். அகர வரிசை எழுத்துக்கள் மட்டுமே ( எழுத்துகள்,எண்கள்,அன்டர்ஸ்கோர்). "
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "முதல் பெயர்"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "கடைசி பெயர்"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "மின்னஞ்சல் முகவரி"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "கடவுச்சொல்"
-
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr "பயன்படுத்து '[algo]$[salt]$[hexdigest]'"
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "பணியாளர் நிலை"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr "பயனர், 'மேலாளலர்' பக்கத்தில் நுழைவதை முடிவு செய்கிறது"
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "செயல்படும்"
-
-#: contrib/auth/models.py:96
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"பயனர்,டிஜாங்ஙோ 'மேலாளலர்' பக்கத்தில் நுழைவதை முடிவு செய்கிறது . இதை தேர்வு செய்யப்படாத கணக்கு உடனடியாக"
-"அழிக்கப்படும்"
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "மேலாளர் இருப்பு நிலை"
-
-#: contrib/auth/models.py:97
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "இந்த பயனருக்கு எல்லா அங்கீகாரங்களும் வழங்கப்படவில்லை."
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "கடைசி உள்நுழைவு"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "சேர்ந்த தேதி"
-
-#: contrib/auth/models.py:101
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "பயனர் தனது அனுமதிகளோடு ,தான் உள்ள குழுவினது அனுமதிகளையும் பெறுவார்."
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "பயனர் அனுமதிகள்"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "பயனர்"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "பயனர்கள்"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "தனிப்பட்ட விவரம்"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "அனுமதிகள்"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "முக்கியமான தேதிகள்"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "குழுக்கள்"
-
-#: contrib/auth/models.py:256
-msgid "message"
-msgstr "செய்தி"
-
-#: contrib/auth/forms.py:52
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr " உங்கள் இணைய உலாவியில்  குக்கிகள்  செயலாக்கம் பெறவில்லை. உள்நுழைவதற்கு குக்கிகள் அவசியம்."
-
-#: contrib/auth/forms.py:61
-msgid "This account is inactive."
-msgstr "இந்த கணக்கு செயல்பட துவங்கவில்லை"
-
-#: contrib/contenttypes/models.py:20
-msgid "python model class name"
-msgstr "python model class name"
-
-#: contrib/contenttypes/models.py:23
-msgid "content type"
-msgstr "பொருளடக்க வகை"
-
-#: contrib/contenttypes/models.py:24
-msgid "content types"
-msgstr "பொருளடக்க வகைகள்"
-
-#: contrib/sessions/models.py:51
-msgid "session key"
-msgstr "அமர்வு குறியீ"
-
-#: contrib/sessions/models.py:52
-msgid "session data"
-msgstr "அமர்வு தகவல்"
-
-#: contrib/sessions/models.py:53
-msgid "expire date"
-msgstr "காலாவதியாகும் தேதி"
-
-#: contrib/sessions/models.py:57
-msgid "session"
-msgstr "அமர்வு"
-
-#: contrib/sessions/models.py:58
-msgid "sessions"
-msgstr "அமர்வுகள்"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "களப் பெயர்"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "காட்டும்  பெயர்"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "வலைத்தளம்"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "வலைத்தளங்கள்"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "திங்கள்"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "செவ்வாய்"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "புதன்"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "வியாழன்"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "வெள்ளி"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "சனி"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ஞாயிறு"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "ஜனவரி"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "பிப்ரவரி"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "மார்ச்"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "ஏப்ரல்"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "மே"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "ஜூன்"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "ஜூலை"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "ஆகஸ்டு"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "செப்டம்பர்"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "அக்டோபர்"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "நவம்பர்"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "டிசம்பர்"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "ஜன"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "பிப்"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "மார்"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "ஏப்"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "மே"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "ஜூன்"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "ஜூலை"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "ஆக"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "செப்"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "அக்"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "நவ"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "டிச"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "ஜன."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "பிப்."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "ஆக."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "செப்."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "அக்."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "நவ."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "டிச."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "வருடம்"
-msgstr[1] "வருடங்கள்"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "மாதம்"
-msgstr[1] "மாதங்கள்"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "வாரம்"
-msgstr[1] "வாரங்கள்"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "நாள்"
-msgstr[1] "நாட்கள்"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "மணி"
-msgstr[1] "மணி"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "நிமிடம்"
-msgstr[1] "நிமிடங்கள்"
-
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr "தேதி_முறை"
-
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr "தேதிநேரம்_முறை"
-
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr "நேரம்_முறை"
-
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr "வருடம்_மாதம்_முறை"
-
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr "மாதம்_நாள்_முறை"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "அரபிக்"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "பெங்காலி"
-
-#: conf/global_settings.py:41
-msgid "Czech"
-msgstr "செக்"
-
-#: conf/global_settings.py:42
-msgid "Welsh"
-msgstr "வெல்ஸ்"
-
-#: conf/global_settings.py:43
-msgid "Danish"
-msgstr "டேனிஷ்"
-
-#: conf/global_settings.py:44
-msgid "German"
-msgstr "ஜெர்மன்"
-
-#: conf/global_settings.py:45
-msgid "Greek"
-msgstr "கிரேக்கம்"
-
-#: conf/global_settings.py:46
-msgid "English"
-msgstr "ஆங்கிலம்"
-
-#: conf/global_settings.py:47
-msgid "Spanish"
-msgstr "ஸ்பானிஷ்"
-
-#: conf/global_settings.py:48
-msgid "Argentinean Spanish"
-msgstr "அர்ஜெண்டியன் ஸ்பானிஷ் "
-
-#: conf/global_settings.py:49
-msgid "Finnish"
-msgstr "பீனீஷ்"
-
-#: conf/global_settings.py:50
-msgid "French"
-msgstr "ப்ரென்சு"
-
-#: conf/global_settings.py:51
-msgid "Galician"
-msgstr "கலீஷீயன்"
-
-#: conf/global_settings.py:52
-msgid "Hungarian"
-msgstr "ஹங்கேரியன்"
-
-#: conf/global_settings.py:53
-msgid "Hebrew"
-msgstr "ஹீப்ரு"
-
-#: conf/global_settings.py:54
-msgid "Icelandic"
-msgstr "ஐஸ்லான்டிக்"
-
-#: conf/global_settings.py:55
-msgid "Italian"
-msgstr "இத்தாலியன்"
-
-#: conf/global_settings.py:56
-msgid "Japanese"
-msgstr "ஜப்பானிய"
-
-#: conf/global_settings.py:57
-msgid "Dutch"
-msgstr "டச்சு"
-
-#: conf/global_settings.py:58
-msgid "Norwegian"
-msgstr "நார்வீசியன்"
-
-#: conf/global_settings.py:59
-msgid "Brazilian"
-msgstr "பிரேசிலியன்"
-
-#: conf/global_settings.py:60
-msgid "Romanian"
-msgstr "ரோமானியன்"
-
-#: conf/global_settings.py:61
-msgid "Russian"
-msgstr "ரஷ்யன்"
-
-#: conf/global_settings.py:62
-msgid "Slovak"
-msgstr "சுலோவாக்"
-
-#: conf/global_settings.py:63
-msgid "Slovenian"
-msgstr "ஸ்லோவேனியன்"
-
-#: conf/global_settings.py:64
-msgid "Serbian"
-msgstr "செர்பியன்"
-
-#: conf/global_settings.py:65
-msgid "Swedish"
-msgstr "சுவிடிஷ்"
-
-#: conf/global_settings.py:66
-msgid "Tamil"
-msgstr "தமிழ்"
-
-#: conf/global_settings.py:67
-msgid "Turkish"
-msgstr "துருக்கிஷ்"
-
-#: conf/global_settings.py:68
-msgid "Ukrainian"
-msgstr "உக்ரேனியன்"
-
-#: conf/global_settings.py:69
-msgid "Simplified Chinese"
-msgstr "எளிய சீன மொழி"
-
-#: conf/global_settings.py:70
-msgid "Traditional Chinese"
-msgstr "மரபு சீன மொழி"
-
-#: core/validators.py:63
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "இந்த மதிப்பு எழுத்துகள், எண்கள் மேலும் அன்டர்ஸ்கோர் உள்ளடக்க வேண்டும். "
-
-#: core/validators.py:67
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "இந்த மதிப்பு எழுத்துகள், எண்கள், அன்டர்ஸ்கோர், டஷ் அல்லது சலஷ் மற்றும் உள்ளடக்க வேண்டும்"
-
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "இந்த மதிப்பு எழுத்துகள், எண்கள், அன்டர்ஸ்கோர் டஷ் அல்லது கைப்பன் மற்றும் உள்ளடக்க வேண்டும்"
-
-#: core/validators.py:75
-msgid "Uppercase letters are not allowed here."
-msgstr "பெரிய எழுத்துகளுக்கு இங்கு அனுமதி இல்லை"
-
-#: core/validators.py:79
-msgid "Lowercase letters are not allowed here."
-msgstr "சிறிய எழுத்துகளுக்கு இங்கு அனுமதி இல்லை"
-
-#: core/validators.py:86
-msgid "Enter only digits separated by commas."
-msgstr "இங்கு எண்களை மட்டுமே எழுதவும் காமவாள் தனிமைபடுத்தவும் "
-
-#: core/validators.py:98
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "காற்புள்ளிகளால் தனிமைப்படுத்திய முறையான e முகவரிகள் மட்டும் எழுதவும்"
-
-#: core/validators.py:102
-msgid "Please enter a valid IP address."
-msgstr "தயவு செய்து முறையான ஐ.பி முகவரி மட்டும் எழுதவும்"
-
-#: core/validators.py:106
-msgid "Empty values are not allowed here."
-msgstr "காலியான மதிப்புக்கள் அனுமதி இல்லை"
-
-#: core/validators.py:110
-msgid "Non-numeric characters aren't allowed here."
-msgstr "எண் வடிவமில்லாத எழுத்துக்கள் அனுமதி இல்லை"
-
-#: core/validators.py:114
-msgid "This value can't be comprised solely of digits."
-msgstr "இந்த மதிப்பு இலக்கங்கள் மட்டுமே கொண்டதாக இருக்க கூடாது"
-
-#: core/validators.py:119
-msgid "Enter a whole number."
-msgstr "முழு எண் மட்டுமே எழுதவும்"
-
-#: core/validators.py:123
-msgid "Only alphabetical characters are allowed here."
-msgstr "அகர வரிசை எழுத்துக்கள் மட்டுமே அனுமதி உன்டு"
-
-#: core/validators.py:138
-msgid "Year must be 1900 or later."
-msgstr "வருடம் கண்டிப்பாக 1900 அல்லது அதற்கு மேல்"
-
-#: core/validators.py:142
-#, python-format
-msgid "Invalid date: %s."
-msgstr "முறையல்லாத தேதி: %s"
-
-#: core/validators.py:146 db/models/fields/__init__.py:415
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "வவவவ-மாமா-நாநா என்ற அமைப்பில் உள்ள முறையான தேதி மட்டுமே எழுதவும்"
-
-#: core/validators.py:151
-msgid "Enter a valid time in HH:MM format."
-msgstr "மம-நிநி என்ற அமைப்பில் உள்ள முறையான நேரம் மட்டுமே எழுதவும்"
-
-#: core/validators.py:155 db/models/fields/__init__.py:477
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "வவவவ-மாமா-நாநா மம-நிநி என்ற அமைப்பில் உள்ள முறையான தேதி/நேரம் மட்டுமே எழுதவும்"
-
-#: core/validators.py:160
-msgid "Enter a valid e-mail address."
-msgstr "முறையான e முகவரிகள் மட்டும் எழுதவும்"
-
-#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "அந்த பக்கத்தின் encoding வகையைப் பரிசோதிக்க.கோப்பு சமர்பிக்கப் பட்டவில்லை "
-
-#: core/validators.py:176
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "முறையான படம் மட்டுமே பதிவேற்றம் செய்யவும். நீங்கள் பதிவேற்றம் செய்த கோப்பு படம் அள்ளாத அல்லது கெட்டுப்போன கோப்பாகும்"
-
-#: core/validators.py:183
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "%s என்ற இணையதள முகவரி சரியான படத்தைச் சுட்டவில்லை"
-
-#: core/validators.py:187
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "தொலைபேசி எண்கள் XXX-XXX-XXXX என்ற அமைப்பில் இருக்க வேண்டும். \"%s\" என்பது முறையள்ள"
-
-#: core/validators.py:195
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "%s என்ற இணையதள முகவரி முறையான குயிக் டைம் படக்காட்சியைச் சுட்டவில்லை"
-
-#: core/validators.py:199
-msgid "A valid URL is required."
-msgstr "முறையான இணையதள முகவரி தேவை"
-
-#: core/validators.py:213
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"முறையான இணையதள முகவரி தேவை. குறிப்பிடத்தக்கத் தவறுகளாவன:\n"
-"%s"
-
-#: core/validators.py:220
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "முறைப்படுத்தப்படாத XML: %s"
-
-#: core/validators.py:230
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "முறைப்படுத்தப்படாத இணையதள முகவறி: %s"
-
-#: core/validators.py:234 core/validators.py:236
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "%s என்ற இணையதள முகவரி உடைந்துள்ளது"
-
-#: core/validators.py:242
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "முறையான U.S மாநில பெயர் சுருக்கம் எழுதவும்"
-
-#: core/validators.py:256
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "வார்த்தைகளை அளன்து பேசுங்கள்! %s என்ற வார்த்தை இங்கு அனுமதி இல்லை"
-msgstr[1] "வார்த்தைகளை அளந்து பேசுங்கள்! %s என்ற வார்த்தைகள் இங்கு அனுமதி இல்லை"
-
-#: core/validators.py:263
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "இந்த புலம் %s என்ற புலத்துடன் ஒத்திறுக்க வேண்டும்"
-
-#: core/validators.py:282
-msgid "Please enter something for at least one field."
-msgstr "தயவு செய்து ஒரு புலத்திலாவது ஏதாவது எழுதவும்"
-
-#: core/validators.py:291 core/validators.py:302
-msgid "Please enter both fields or leave them both empty."
-msgstr "தயவு செய்து இரு புலங்கலையும் நிரப்பவும் அல்லது இரண்டையும் காலியாக விடவும்"
-
-#: core/validators.py:309
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "%(field)s, %(value)s ஆக இருந்தால் இந்த புலம் இருக்க வேண்டும்"
-
-#: core/validators.py:321
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "%(field)s, %(value)s ஆக இல்லை என்றால் இந்த புலம் இருக்க வேண்டும்"
-
-#: core/validators.py:340
-msgid "Duplicate values are not allowed."
-msgstr "போலியான மதிப்புகள் அனுமதி இல்லை"
-
-#: core/validators.py:363
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "இந்த மதிப்பு %s இன் அடுக்காக இருக்க வேன்டும்"
-
-#: core/validators.py:374
-msgid "Please enter a valid decimal number."
-msgstr "தயவுசெய்து முறையான பதின்ம எண்ணை நுழைக்கவும்"
-
-#: core/validators.py:378
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "தயவுசெய்து முறையான பதின்ம எண்களுடன் %s மொத்த இலக்கத்தை நுழைக்கவும்"
-msgstr[1] "தயவுசெய்து முறையான பதின்ம எண்களுடன் %s மொத்த இலக்கங்களையும் நுழைக்கவும்"
-
-#: core/validators.py:381
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "அதிகபட்சம் %s எண்ணை உள்ள பதின்ம எண்ணை நுழை."
-msgstr[1] "அதிகபட்சம் %s எண்கள் உள்ள பதின்ம எண்ணை நுழை."
-
-#: core/validators.py:384
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "அதிகபட்சம் %s புள்ளி இடம் உள்ள பதின்ம எண்ணை  நுழை"
-msgstr[1] "அதிகபட்சம் %s புள்ளி இடங்கள் உள்ள பதின்ம எண்ணை  நுழை"
-
-#: core/validators.py:394
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "மேல்ஏற்று செய்யப்பட்ட கோப்பு குறைந்தபட்சம்  %s  பைட்டுகள் உள்ளனவா என சரி பார்க்கவும்"
-
-#: core/validators.py:395
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "மேல்ஏற்று செய்யப்பட்ட கோப்பு அதிகபட்சம்  %s  பைட்டுகள் உள்ளனவா என சரி பார்க்கவும்."
-
-#: core/validators.py:412
-msgid "The format for this field is wrong."
-msgstr "புலனுடைய அமைப்பு தவறு"
-
-#: core/validators.py:427
-msgid "This field is invalid."
-msgstr "இந்த புலம் செல்லாது.ள"
-
-#: core/validators.py:463
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "%s இருந்து எதுவும் எடுக்க முடியவில்லை"
-
-#: core/validators.py:466
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "வலைமனை %(url)s என்பது செல்லாத உள்ளடக்க-வகை தலைப்பான  '%(contenttype)s' ஐ திருப்பி தந்துள்ளது."
-
-#: core/validators.py:499
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr "%(line)s கோடு லிருந்து மூடாத %(tag)s டாகை மூடு. ( வரி,\"%(start)s\"வுடன் துவங்குகின்றது)"
-
-#: core/validators.py:503
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr "வரி %(line)s இல் உள்ள  சில உரைகள் இருப்பதற்கு அனுமதி இல்லை.( வரி,\"%(start)s\"வுடன் துவங்குகின்றது)"
-
-#: core/validators.py:508
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr "வரி %(line)s இல் உள்ள  \"%(attr)s\" என்பது தவறான பண்பாகும.( வரி,\"%(start)s\"வுடன் துவங்குகின்றது)"
-
-#: core/validators.py:513
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr "வரி %(line)s இல் உள்ள \"<%(tag)s>\" என்பது தவறான ஒட்டாகும் .( வரி,\"%(start)s\"வுடன் துவங்குகின்றது)"
-
-#: core/validators.py:517
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr "வரி %(line)s இல் உள்ள ஒட்டு இன பண்புகள்  தேவைப்படுகின்றன.(வரி,\"%(start)s\" வுடன் துவங்குகின்றது)"
-
-#: core/validators.py:522
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr "வரி %(line)s இல் உள்ள \"%(attr)s\"  பண்பின் மதிப்பு தவறானது.(வரி \"%(start)s\" இருந்து ஆரம்பம்)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s வெற்றிகரமாக சேர்க்கப்பட்டு விட்டது"
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s வெற்றிகரமாக மாற்றபட்டு விட்டது"
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s நீக்கப்பட்டுள்ளது"
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(type)s உடன் உள்ள %(object)s ஏற்கனவே %(field)s கொடுக்கப்பட்டு  உள்ளது"
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(fieldname)s உடன் உள்ள %(optname)s ஏற்கனவே உள்ளது"
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "இந்த  புலத்தில் மதிப்பு தேவை"
-
-#: db/models/fields/__init__.py:340
-msgid "This value must be an integer."
-msgstr "இந்த மதிப்பு முழுவெண்ணாக இருக்க வேண்டும"
-
-#: db/models/fields/__init__.py:372
-msgid "This value must be either True or False."
-msgstr "இந்த மதிப்பு சரி அல்லது தவறாக இருக்க வேண்டும்"
-
-#: db/models/fields/__init__.py:388
-msgid "This field cannot be null."
-msgstr "இந்த புலம் காலியாக இருக்கக் கூடாது"
-
-#: db/models/fields/__init__.py:571
-msgid "Enter a valid filename."
-msgstr "முறையான கோப்புப் பெயரை எழுதவும்"
-
-#: db/models/fields/related.py:51
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "தயவு செய்து முறையான %s எழுதவும்"
-
-#: db/models/fields/related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr "பன்மையிலுள்ள அடையாளங்களை காற்புள்ளிகளால் பிரிக்கவும்"
-
-#: db/models/fields/related.py:620
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Mac இல், ஒன்றுக்கு மேற்பட்டவற்றை தேர்வு செய்ய \"Control\" அல்லது \"Command\" ஐ அழுத்தவும்"
-
-#: db/models/fields/related.py:664
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "தயவு செய்து முறையான %(self)s அடையாளங்களை எழுதவும். %(value)r என்ற மதிப்பு முறையானதல்ல."
-msgstr[1] "தயவு செய்து முறையான %(self)s அடையாளங்களை எழுதவும். %(value)r என்ற மதிப்புகள் முறையானதல்ல."
-
-#: forms/__init__.py:381
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "உங்கள் உரை %s ஐ விட குறைவான எழுத்து உடையது என்று உறுதி செய்து கொள்ளுங்கள்"
-msgstr[1] "உங்கள் உரை %s ஐ விட குறைவான எழுத்துகள் உடையது என்று உறுதி செய்து கொள்ளுங்கள்"
-
-#: forms/__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr "வரி உடைவுகள் அனுமதி இல்லை"
-
-#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "முறையான விருப்பத்தைத் தேர்வு செய்யவும்; '%(data)s என்பது %(choices)s இல் இல்லை"
-
-#: forms/__init__.py:663
-msgid "The submitted file is empty."
-msgstr "சமர்பிக்கப் பட்ட கோப்புக் காலியாக உள்ளது"
-
-#: forms/__init__.py:719
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "-32,768 மற்றும் 32,767 க்கு நடுவில் ஒரு முழு எண்ணை எழுதவும்"
-
-#: forms/__init__.py:729
-msgid "Enter a positive number."
-msgstr "ஒரு நேர்க்குறி எண்ணை எழுதவும்"
-
-#: forms/__init__.py:739
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "0 மற்றும் 32,767 க்கு நடுவில் ஒரு முழு எண்ணை எழுதவும்"
-
-#: template/defaultfilters.py:401
-msgid "yes,no,maybe"
-msgstr "ஆம், இல்லை, இருக்கலாம்"
-
diff --git a/webapp/django/conf/locale/ta/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/ta/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b78b610..0000000
--- a/webapp/django/conf/locale/ta/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/ta/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/ta/LC_MESSAGES/djangojs.po
deleted file mode 100644
index f60e945..0000000
--- a/webapp/django/conf/locale/ta/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,112 +0,0 @@
-# translation of djangojs.po to tamil
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# PONNUSAMY.A <ponnusamy.simpleman@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-12-09 11:51+0100\n"
-"PO-Revision-Date: 2007-03-14 16:40+0530\n"
-"Last-Translator: PONNUSAMY <ponnusamy.simpleman@gmail.com>\n"
-"Language-Team: tamil <tamilinix@yahoogroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "%s இருக்கிறதா "
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "எல்லாவற்றையும் தேர்ந்த்தெடுக்க"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "சேர்க்க"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "அழிக்க"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "%s தேர்ந்த்தெடுக்கப்பட்ட"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "தேவையானவற்றை தேர்ந்த்தெடுத்து கிளிக் செய்க"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "எல்லாவற்றையும் அழிக்க "
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"ஜனவரி பிப்ரவரி மார்ச் ஏப்ரல் மே ஜூன் ஜூலை ஆகஸ்டு செப்டம்பர் அக்டோபர் நவம்பர் "
-"டிசம்பர்"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "ஞாயிறு திங்கள் செவ்வாய் புதன்  வியாழன் வெள்ளி சனி "
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "ஞா தி செ பு வி வெ ச"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "இப்பொழுது "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "கடிகாரம் "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "ஒரு நேரத்தை தேர்ந்த்தெடுக்க  "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "நடு இரவு "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "காலை 6 மணி  "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "மதியம் "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "வேண்டாம் "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "இன்று "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "நாள்காட்டி  "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "நேற்று "
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "நாளை"
-
diff --git a/webapp/django/conf/locale/te/LC_MESSAGES/django.mo b/webapp/django/conf/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 1541b23..0000000
--- a/webapp/django/conf/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/te/LC_MESSAGES/django.po b/webapp/django/conf/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index f0bb7a6..0000000
--- a/webapp/django/conf/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2109 +0,0 @@
-# translation of django.po to Telugu
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-25 15:43+0200\n"
-"PO-Revision-Date: 2007-05-19 12:44+0530\n"
-"Last-Translator: pavithran <pavithran.s@gmail.com>\n"
-"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=n>1;"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "వస్తువు ఐడి"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "ముఖ్య అంశం"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "వ్యాఖ్యానము"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "రేటింగ్ #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "రేటింగ్ #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "రేటింగ్ #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "రేటింగ్ #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "రేటింగ్ #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "రేటింగ్ #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "రేటింగ్ #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "రేటింగ్ #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "సరైన  రేటింగ్"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "తేది /వేళ సమర్పించినది"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "బహిరంగమయినది"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "ఐపి అడ్రస్"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "తీసివేయబడినది"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr " ఈ వ్యాఖ్యానము సరిగ్గా లేదని తోచినచో ఈ  డబ్బా ని చెక్ చేయండి "
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "వ్యాఖ్యానములు"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "వస్తువు లోనిది"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "వ్యక్తి పేరు"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ఐపి అడ్రస్"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr " అధికారుల చేత ఆమోదించబడినది"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "నిరాటంకమైన వ్యాఖ్యానము"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "నిరాటంకము గావ్యాఖ్యానములు"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "స్కొర్"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "స్కొర్  తేది"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "కర్మ  స్కొర్"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "కర్మ  స్కొరులు"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(score)d కి     %(user)s  రేటింగ్"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"%(user)s చేత చేయబడ్డ  వ్యాఖ్యానములు:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "ఫ్లాగ్ తేది "
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "యూజర్ ఫ్లాగ్"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "యూజర్ ఫ్లాగులు"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "%r యొక్క ఫ్లాగ్"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "తీసివేసిన  తారీఖు"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "మొదరేటర్  చేత తీసివేయబడినది "
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "మొదరేటర్  చేత తీసివేయబడినవి"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "మొదరేటర్ తీసివేసిన %r"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "అపరిచిత  యూజర్లు వోటు వేయలేరు"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "సరికాని  వ్యాఖ్యానము ఐడి"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "మీకు వోటు హక్కు లేదు"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "ఈ రేటింగ్ అవసరం  ఎం దుకంటే మీరు ఒక్కసారైన రేటింగ్ ఇచ్చారు"
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"ఈ  వ్యాఖ్యానము చేసిన యూజర్  %(count)s లు కన్న తక్కువ  సమర్పించాడు  "
-"వ్యాఖ్యానము:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"ఈ  వ్యాఖ్యానము చేసిన యూజర్  %(count)s లు కన్న తక్కువ  సమర్పించాడు"
-"వ్యాఖ్యానములు:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"ఈ  వ్యాఖ్యానము స్కెచి  యూజర్ చేసాడు  :\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "ఇక్కడ సమర్పణలు మాత్రమే అంగీకరిస్తాము"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ ఫీల్డస్  సమర్పించలేదు"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "ఎవరో వ్యాఖ్యానము ఫార్మ్ ని గెలికారు (భద్రత కి భంగం) "
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"వ్యాఖ్యానము ఫార్మ్ లో  చెల్లని  'టార్గెట్ ' పారామీటర్ , ఆ వస్తువు ఐడి "
-"చెల్లదు"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "వ్యాఖ్యానము ఫార్మ్ లో 'ప్రివ్యీవ్'  కాని 'పోస్ట్'  ఇవ్వలేదు "
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "యూజర్ పేరు"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "లాగ్ ఔట్"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "పాస్ వర్డ్"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "పాస్ వర్డ్ మర్చిపోయారా?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "రేటింగులు"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "అవసరము"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "మీ ఇష్టం"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "ఫొటొ  పెట్టండి"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "వ్యాఖ్యానము"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "వ్యాఖ్యానము ని ప్రివ్యీవ్ చేయండి"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "మీ పేరు"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3> %s తో:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "అన్నీ"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "ఏ రోజైన"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "ఈ రోజు"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "గత  7 రోజుల గా"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "ఈ నెల"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "ఈ  సంవత్సరము"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "అవును"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "కాదు"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "తెలియనది"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "పని సమయము "
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "వస్తువు"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "వస్తువు"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "పని ఫ్లాగ్"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "సందేశము ని మార్చంది"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "లాగ్ ఎంట్రీ"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "లాగ్ ఎంట్రీలు"
-
-#: contrib/admin/templatetags/admin_list.py:230
-msgid "All dates"
-msgstr "అన్నీ  రోజులు"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:59
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "దయచేసి సరైన  యూజర్ పేరు పాస్ వర్డ్ ఇవ్వండి"
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "లాగ్ ఇన్"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "దయచేసి మళ్ళీ  లాగ్ ఇన్ అవ్వండి ఎందుకంటే మీ సేస్సన్  ముగిసింది . బాధపడకండి మీ సమర్పన దాచిపెట్టాము"
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr "మీ  బ్రౌజర్ పై కుకీస్ అంగీకరించేటట్లు చేయలేదు . దయ చేసి  కుకీస్ ఎనేబల్ చేసి ,మళ్ళీ ట్రై చేయండి"
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "యూజర్ పేరు లో  '@' అక్షరము ఉందకూడడు"
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "మీ ఈ మెయిల్ అడ్రస్   మీ యూజర్ పేరు కాదు . '%s' ఇచ్చి చూడండి "
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "సైట్ నిర్వాహన"
-
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:17
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\"జయప్రదంగా కలపబడ్డడి"
-
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:22
-msgid "You may edit it again below."
-msgstr "మీరు  మళ్ళీ దీనినీ  క్రింద మార్చవచ్చు"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "మీరు ఇంకొక   %s ని  క్రింద జత చేయొచ్చు"
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "%s ని జత చేయండి "
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s కలపబడ్డడి"
-
-#: contrib/admin/views/main.py:335 contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "ఇంకా"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr " %s మార్చబడిండి"
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s తీసివేయబడ్డడి"
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "ఫీల్డ్స్  ఏమి మార్చబడలేదు"
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" జయప్రదంగా మార్చబడిండి"
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" జయప్రదంగా కలపబడ్డడి  .మీరు  మళ్ళీ దీనినీ  క్రింద మార్చవచ్చు"
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "%s ని మార్చంది"
-
-#: contrib/admin/views/main.py:473
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ  %(name)s లో  %(fieldname)s  : %(obj)s "
-
-#: contrib/admin/views/main.py:478
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ   %(name)s లో  %(fieldname)s"
-
-#: contrib/admin/views/main.py:511
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\"జయప్రదంగా తీసివేయబడ్డడి"
-
-#: contrib/admin/views/main.py:514
-msgid "Are you sure?"
-msgstr "మీరు కచ్చితంగా ఉన్నారా?"
-
-#: contrib/admin/views/main.py:536
-#, python-format
-msgid "Change history: %s"
-msgstr "మార్చబడిన పురాణము: %s"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s"
-msgstr "%s ని ఎన్నుకోండి"
-
-#: contrib/admin/views/main.py:570
-#, python-format
-msgid "Select %s to change"
-msgstr "%s ని మార్చటానికి  ఎన్నుకోండి"
-
-#: contrib/admin/views/main.py:758
-msgid "Database error"
-msgstr "డాటాబేస్ ఎర్రర్ "
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "టాగ్"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "ఫిల్టర్"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "చూడు:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "%rఎప్ప్ దొరకలేడు"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %r not found in app %r"
-msgstr "%r ఎప్ప్  లో %r మొడల్ దొరకలేడు"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%s.%s` object"
-msgstr "సంబంధించిన `%s.%s` వస్తువు "
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "మొడల్:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%s.%s` objects"
-msgstr "సంబంధించిన  `%s.%s` వస్తువులు"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "ఆన్నీ  %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s వస్తువులలో ఫీల్డ్స్   "
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "అంకె"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "కామా  తో విడడీసిన  సంఖ్య"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "తేది (సమయం లేకుండా)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "తేది (సమయం తో)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "ఈ మెయిల్  అడ్రస్  "
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "ఫైల్   పాత్"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr ""
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "పేరంట్ మొడల్ యొక్క రిలేషన్ "
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "ఫోన్ నంబరు"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "టెక్స్ట"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "వేళ"
-
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr ""
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "అమెరికా రాజ్యము"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "ఎక్స్  ఎమ్   ఎల్"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: contrib/admin/views/auth.py:28
-msgid "Add user"
-msgstr "యూజర్ ని జత చేయండి"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "పాస్ వర్డ్ మార్చుకోండి"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "ఇల్లు"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "పురాణము"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "తేది/వేళ"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "యూజర్"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "పని"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr ""
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "డ్జాంగొ యొక్క నిర్వాహనదారులు"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "డ్జాంగొ నిర్వాహన"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "సర్వర్ తప్పు"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "సర్వర్ తప్పు (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "సర్వర్ తప్పు <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr "తప్పు  జరిగిండి .  దానిని  నిర్వాహనాధికారులు కి ఈ మెయిల్  చేయబడ్డడి,మీ ఓపిక కి ధన్యవాదములు"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "పేజి  దొరకలేదు"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "క్షమించండి మీరు కోరిన పేజి దొరకలేడు"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "మొడల్ లు %(name)s లో  దొరికే అప్ప్లికేషన్"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "జత చేయి"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "మార్చు"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "మీకు ఏది మార్చటానికి అధికారము లేదు"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "ఈ మధ్య చేసిన పనులు"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "నా పనులు"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "ఏమి  దొరకలేదు"
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s జత చేయు"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "మీరు<a href=\"/password_reset/\">పాస్ వర్డ మర్చిపోయారా? "
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "సుస్వాగతం"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "తీసివేయి"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "అవును "
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "వెళ్లు"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "అన్నీ చూడండి"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "సైట్ లో చూడండి"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "క్రింద ఉన్న తప్పు  సరిదిద్దుకోండి"
-msgstr[1] "క్రింద ఉన్న తప్పులు  సరిదిద్దుకోండి"
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "కొత్త దాని లా దాచు"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "దాచి కొత్త దానిని కలపండి"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "దాచి  మార్చుటా ఉందండి"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "దాచు"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "యూజర్ పేరు"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "పాస్ వర్డ్"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "పాస్ వర్డ్ (మళ్ళీ)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "ఇందాక పాస్ వర్డ్ మళ్ళీ ఇవ్వండి పరిశీలన కోసము"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "పాస్ వర్డ్ మార్పు"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "పాస్ వర్డ్ మార్పు జయప్రదమైండి "
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "మీ    పాస్ వర్డ్  మార్చబడిండి"
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "పాస్ వర్డ్ రీసెట్"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr "పాస్ వర్డ్ మర్చిపోయారా? మీ ఈ మెయిల్ అడ్రస్ ఇవ్వండి , మీ  పాస్ వర్డ్ రీసెట్ చేసి మీకు  కొత్తది ఈ మెయిల్ చేస్తాము "
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "ఈ మెయిల్ అడ్రస్"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "నా పాస్ వర్డ్ రీసెట్ చేయండి"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "మళ్ళీ లాగ్ ఇన్ అవ్వండి"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "పాస్ వర్డ్ రీసెట్  జయప్రదమైండి"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr "మీరు ఇచ్చిన ఈ మెయిల్ అడ్రస్  కి  కొత్త  పాస్ వర్డ్ ఈ మెయిల్ చేసాము.మీరు తొందర లో దానిని అందుకుంటారు ."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "దయచేసి  రక్షన కోసము, మీ పాత  పాస్ వర్డ్  ఇవ్వండి  ,  కొత్త పాస్ వర్డ్  రెండు సార్లు ఇవ్వండి , ఎం దుకంటే మీరు తప్పు ఇస్తే  సరిచేయటానికి "
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "పాత  పాస్ వర్డ్ "
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "కొత్త పాస్ వర్డ్"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "పాస్ వర్డ్ పక్కా చేయండి"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "నా పాస్ వర్డ్ మార్చండి"
-
-#: contrib/admin/templates/registration/password_reset_.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "మీరు ఈ ఈ మెయిల్ అందుకున్నారు,   ఎందుకంటే పాస్ వర్డ్ రీసెట్ కోసము కోరారు"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr ""
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "మీ  కొత్త పాస్ వర్డ్ : %(new_password)s "
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "నిస్సందేహము గా ఈ పేజి క్ కి వెళ్ళి పాస్ వర్డ్  మార్చుకోండి "
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "మీ యూజర్ పేరు, ఒక వేళ మర్చిపోయి ఉంటే "
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "మా సైట్  వాడినందుకు ధన్యవాదములు!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "వస్తువు ఇడి చూడండి"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "వస్తువు ని మార్చండి (ప్రస్తుత విండొ)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "వస్తువు ని మార్చండి(కొత్త విండొ) "
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "తారీఖు"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "వేళ:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "ఇప్పుడు"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "మార్చు"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr ""
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr ""
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr ""
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr ""
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "పట్టము"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr ""
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr ""
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr ""
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr "Example: 'flatpages/contact_page.html'.ఇది ఇవ్వకపోతే సిస్టం " " 'flatpages/default.html' ని వాడుకుంటడి"
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "నమొదు చేయటము అవసరం"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "ఇది చెక్ చేసి ఉంటే కేవలం లాగ్గడ్ ఇన్ యూజర్లు పేజి చూడలేస్తారు"
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr ""
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr ""
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "లాగ్గడ్ ఔట్"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
-msgstr "పేరు"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr ""
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "అనుమతి"
-
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
-msgstr "అనుమతులు"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "గుంపు"
-
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
-msgstr "గుంపులు"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "యూజర్ పేరు"
-
-#: contrib/auth/models.py:90
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "పేరు"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "ఇంటి పేరు"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "ఈ మెయిల్  అడ్రస్"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "పాస్ వర్డ్"
-
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr ""
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "ఉద్యోగస్తుల  స్థితి"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "చురుకు గా"
-
-#: contrib/auth/models.py:96
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr ""
-
-#: contrib/auth/models.py:97
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "గత లాగిన్"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "చేరిన తారీఖు"
-
-#: contrib/auth/models.py:101
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "యూజర్  అనుమతులు"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "యూజర్"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "యూజర్లు"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "పర్సనల్ సమాచారం  "
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "అనుమతులు"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "ముఖ్యమైన తారీఖులు"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "గుంపులు"
-
-#: contrib/auth/models.py:256
-msgid "message"
-msgstr "సమాచారం"
-
-#: contrib/auth/forms.py:52
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-
-#: contrib/auth/forms.py:61
-msgid "This account is inactive."
-msgstr ""
-
-#: contrib/contenttypes/models.py:20
-msgid "python model class name"
-msgstr "పైతాన్ మొడల్ క్లాస్  పేరు"
-
-#: contrib/contenttypes/models.py:23
-msgid "content type"
-msgstr ""
-
-#: contrib/contenttypes/models.py:24
-msgid "content types"
-msgstr ""
-
-#: contrib/sessions/models.py:51
-msgid "session key"
-msgstr ""
-
-#: contrib/sessions/models.py:52
-msgid "session data"
-msgstr ""
-
-#: contrib/sessions/models.py:53
-msgid "expire date"
-msgstr ""
-
-#: contrib/sessions/models.py:57
-msgid "session"
-msgstr ""
-
-#: contrib/sessions/models.py:58
-msgid "sessions"
-msgstr ""
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr ""
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "కనిపిచ్చే పేరు"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "సైట్"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "సైట్లు"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "సోమవారము"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "మంగళవారము"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "బుధవారము"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "గురువారము"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "శుక్రవారము"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "శనివారము"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ఆదివారము"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "జాన్వరి "
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "ఫిబ్రవరి"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "మార్చి"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "ఎప్రిల్"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "మే"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "జూను"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "జులై"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "ఆగష్టు"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "సెప్టెంబర్"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "అక్టోబర్"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "నవంబర్"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "డిసెంబర్"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "జాన్"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "ఫిబ్"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "మార్"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "ఎప్ర్"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "మే"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "జూన్"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "జుల్"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "ఆగ్"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "సెప్"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "అక్ట్"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "నవ్"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "డిస్"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "జాన్"
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "ఫిబ్"
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "ఆగ్"
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "సెప్"
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "అక్ట్"
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "నవ్"
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "డిస్"
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "సంవత్సరం"
-msgstr[1] "సంవత్సరాలు"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "నెల"
-msgstr[1] "నెలలు"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "వారం"
-msgstr[1] "వారాలు"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "రోజు"
-msgstr[1] "రోజులు"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "గంటలు"
-msgstr[1] "గంట"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "నిముషం"
-msgstr[1] "నిముషాలు"
-
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr ""
-
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr ""
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "ఆరబిక్"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "బెంగాలి"
-
-#: conf/global_settings.py:41
-msgid "Czech"
-msgstr "క్జెఖ్"
-
-#: conf/global_settings.py:42
-msgid "Welsh"
-msgstr "వెల్శ్"
-
-#: conf/global_settings.py:43
-msgid "Danish"
-msgstr "డానిశ్"
-
-#: conf/global_settings.py:44
-msgid "German"
-msgstr "జెర్మన్"
-
-#: conf/global_settings.py:45
-msgid "Greek"
-msgstr "గ్రీక్"
-
-#: conf/global_settings.py:46
-msgid "English"
-msgstr "ఆంగ్లము"
-
-#: conf/global_settings.py:47
-msgid "Spanish"
-msgstr "స్పానిష్"
-
-#: conf/global_settings.py:48
-msgid "Argentinean Spanish"
-msgstr "అర్జంటీనా స్పానిష్"
-
-#: conf/global_settings.py:49
-msgid "Finnish"
-msgstr "ఫీన్నిష్"
-
-#: conf/global_settings.py:50
-msgid "French"
-msgstr "ఫ్రెంచ్"
-
-#: conf/global_settings.py:51
-msgid "Galician"
-msgstr "గలిసియన్"
-
-#: conf/global_settings.py:52
-msgid "Hungarian"
-msgstr "హంగారియన్"
-
-#: conf/global_settings.py:53
-msgid "Hebrew"
-msgstr "హెబ్రివ్"
-
-#: conf/global_settings.py:54
-msgid "Icelandic"
-msgstr "ఐస్ లాండిక్"
-
-#: conf/global_settings.py:55
-msgid "Italian"
-msgstr "ఇటాలియవ్"
-
-#: conf/global_settings.py:56
-msgid "Japanese"
-msgstr "జపనీస్"
-
-#: conf/global_settings.py:57
-msgid "Dutch"
-msgstr "డట్చ్"
-
-#: conf/global_settings.py:58
-msgid "Norwegian"
-msgstr "నార్వీజియన్"
-
-#: conf/global_settings.py:59
-msgid "Brazilian"
-msgstr "బ్రజీలియన్"
-
-#: conf/global_settings.py:60
-msgid "Romanian"
-msgstr "రొమానియన్"
-
-#: conf/global_settings.py:61
-msgid "Russian"
-msgstr "రస్సెన్"
-
-#: conf/global_settings.py:62
-msgid "Slovak"
-msgstr "స్లొవాక్"
-
-#: conf/global_settings.py:63
-msgid "Slovenian"
-msgstr "స్లొవానియన్"
-
-#: conf/global_settings.py:64
-msgid "Serbian"
-msgstr "సెర్బియన్"
-
-#: conf/global_settings.py:65
-msgid "Swedish"
-msgstr "స్వీడిష్"
-
-#: conf/global_settings.py:66
-msgid "Tamil"
-msgstr "తమిళ్"
-
-#: conf/global_settings.py:67
-msgid "Turkish"
-msgstr "టర్కిశ్"
-
-#: conf/global_settings.py:68
-msgid "Ukrainian"
-msgstr "యుక్రానియన్"
-
-#: conf/global_settings.py:69
-msgid "Simplified Chinese"
-msgstr "వాడుక చైనీస్"
-
-#: conf/global_settings.py:70
-msgid "Traditional Chinese"
-msgstr "గ్రాంధిక  చైనీస్"
-
-#: core/validators.py:63
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "ఈ విలువ   లో అక్షరాలు, అంకెలు ఇంకా అండర్ స్కోర్లు ఉందాలి"
-
-#: core/validators.py:67
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "ఈ విలువ   లో అక్షరాలు, అంకెలు , అండర్ స్కోర్లు ,డాష్ లు లేక స్లాష్ లు ఉందాలి"
-
-#: core/validators.py:71
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "ఈ విలువ   లో అక్షరాలు, అంకెలు , అండర్ స్కోర్లు  లేక హైఫన్లు  ఉందాలి"
-
-#: core/validators.py:75
-msgid "Uppercase letters are not allowed here."
-msgstr ""
-
-#: core/validators.py:79
-msgid "Lowercase letters are not allowed here."
-msgstr ""
-
-#: core/validators.py:86
-msgid "Enter only digits separated by commas."
-msgstr "కామాల తో అంకెలు విడడీసి ఇవ్వండి "
-
-#: core/validators.py:98
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "కామాల తో విడతీసి  సరైన ఈ మెయిల్  అడ్రస్ ఇవ్వండి"
-
-#: core/validators.py:102
-msgid "Please enter a valid IP address."
-msgstr "దయచేసి సరైన ఐపి అడ్రస్ ఇవ్వండి "
-
-#: core/validators.py:106
-msgid "Empty values are not allowed here."
-msgstr "ఇక్కడ కాళీ విలువలు అనుమతించబడవు "
-
-#: core/validators.py:110
-msgid "Non-numeric characters aren't allowed here."
-msgstr "అంకెలు కాని చిహ్నాలు అనుమతించబడవు"
-
-#: core/validators.py:114
-msgid "This value can't be comprised solely of digits."
-msgstr "ఈ విలువ లో ఉట్టి మాత్రమే ఉందకూడడు"
-
-#: core/validators.py:119
-msgid "Enter a whole number."
-msgstr "పూర్ణ సంఖ్య ఇవ్వండి"
-
-#: core/validators.py:123
-msgid "Only alphabetical characters are allowed here."
-msgstr "అక్షరాలు  అయిన చిహ్నాలు మాత్రమే  అనుమతించబడతాయి "
-
-#: core/validators.py:138
-msgid "Year must be 1900 or later."
-msgstr "సంవత్సరము 1900 లేక దాని తరువాత అయ్యి ఉందాలి "
-
-#: core/validators.py:142
-#, python-format
-msgid "Invalid date: %s."
-msgstr "సరికాని తారీఖు : %s."
-
-#: core/validators.py:146 db/models/fields/__init__.py:415
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr ""
-
-#: core/validators.py:151
-msgid "Enter a valid time in HH:MM format."
-msgstr ""
-
-#: core/validators.py:155 db/models/fields/__init__.py:477
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-
-#: core/validators.py:160
-msgid "Enter a valid e-mail address."
-msgstr "సరైన ఈ మెయిల్  అడ్రస్ ఇవ్వండి"
-
-#: core/validators.py:172 core/validators.py:401 forms/__init__.py:661
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: core/validators.py:176
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: core/validators.py:183
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr ""
-
-#: core/validators.py:187
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-
-#: core/validators.py:195
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr ""
-
-#: core/validators.py:199
-msgid "A valid URL is required."
-msgstr "సరైన  URL కావాలి"
-
-#: core/validators.py:213
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"సరైన  HTML ఇవ్వండి .ప్రత్యేకమైన తప్పులు :\n"
-"%s"
-
-#: core/validators.py:220
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr ""
-
-#: core/validators.py:230
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "సరికాని  URL: %s"
-
-#: core/validators.py:234 core/validators.py:236
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr ""
-
-#: core/validators.py:242
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "దయచేసి  సరైన అగ్ర రాజ్య  సంక్షేపము చేసిన  రాష్ట్రము పేరు ఇవ్వండి"
-
-#: core/validators.py:256
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:263
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "ఈ ఫీల్డ్  '%s' ఫీల్డ్ కి సరి తూగాలి"
-
-#: core/validators.py:282
-msgid "Please enter something for at least one field."
-msgstr "దయచేసి ఏదో  ఒకటి  ఏదో ఒక ఫీల్డ్ కి ఇవ్వండి "
-
-#: core/validators.py:291 core/validators.py:302
-msgid "Please enter both fields or leave them both empty."
-msgstr "దయచేసి రెండు ఫీల్డ్లలు ఇవ్వండి  లేకపోతే రెండు కాళీ గా వదిలేయండి   "
-
-#: core/validators.py:309
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "%(field)s %(value)s ఐతే ఈ ఫీల్డ్  ఇవ్వాలి  "
-
-#: core/validators.py:321
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "%(field)s %(value)s అవ్వకపోతే ఈ ఫీల్డ్  ఇవ్వాలి "
-
-#: core/validators.py:340
-msgid "Duplicate values are not allowed."
-msgstr "నకలీ విలువలు ఇక్కడ అనుమతించబడవు"
-
-#: core/validators.py:363
-#, python-format
-msgid "This value must be a power of %s."
-msgstr ""
-
-#: core/validators.py:374
-msgid "Please enter a valid decimal number."
-msgstr ""
-
-#: core/validators.py:378
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:381
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:384
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:394
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-
-#: core/validators.py:395
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-
-#: core/validators.py:412
-msgid "The format for this field is wrong."
-msgstr "ఈ ఫీల్డ్  ఫోర్మాట్ తప్పు"
-
-#: core/validators.py:427
-msgid "This field is invalid."
-msgstr "ఈ ఫీల్డ్ సరి కానిది"
-
-#: core/validators.py:463
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "%s నించి  ఏమి  రాబట్టలేము"
-
-#: core/validators.py:466
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-
-#: core/validators.py:499
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:503
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:508
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:513
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:517
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:522
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s జయప్రదంగా తయారయింది"
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s జయప్రదంగా  @@"
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s తీసివేయబడినది"
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(field)s లో %(object)s తో  %(type)s  ఉన్నాయి"
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s తో %(fieldname)s ముందే ఉన్నాయి ."
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "ఈ ఫీల్డ్ అవసరము"
-
-#: db/models/fields/__init__.py:340
-msgid "This value must be an integer."
-msgstr "ఈ  విలువ  లో  ఉందాలి"
-
-#: db/models/fields/__init__.py:372
-msgid "This value must be either True or False."
-msgstr "ఈ  విలువ  తప్పైన ఒప్పైన  ఉందాలి"
-
-#: db/models/fields/__init__.py:388
-msgid "This field cannot be null."
-msgstr "ఈ ఫీల్డ్ కాళీగా ఉందకూడడు      "
-
-#: db/models/fields/__init__.py:571
-msgid "Enter a valid filename."
-msgstr "దయచేసి సరైన దస్త్రం పేరు ఇవ్వండి."
-
-#: db/models/fields/related.py:51
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "దయచేసి సరైన %sఇవ్వండి."
-
-#: db/models/fields/related.py:618
-msgid "Separate multiple IDs with commas."
-msgstr "గుంపు    గా ఉన్న ఐడిల ను కామా తో విడడీయంది"
-
-#: db/models/fields/related.py:620
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "\"Control\" కాని  \"Command\" మాక్ లో  నొక్కి ఉంచండి  , ఒకటి కన్న ఎక్కువ ఎన్నుకోవటానికి"
-
-#: db/models/fields/related.py:664
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "దయచేసి సరైన  %(self)s ఐడిలు ఇవ్వండి.  "
-msgstr[1] ""
-
-#: forms/__init__.py:381
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "మీరు  ఇచ్చిన టెక్స్ట %s ఆక్షరము కన్న తక్కువ ఉందాలి"
-msgstr[1] "మీరు  ఇచ్చిన టెక్స్ట %s ఆక్షరములు కన్న తక్కువ ఉందాలి"
-
-#: forms/__init__.py:386
-msgid "Line breaks are not allowed here."
-msgstr "లైన్  బ్రేక్స్  కి ఇక్కడ  ఆనుమతి లేదు"
-
-#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "సరైనది ఎంచుకోండి;  %(choices)s లో  '%(data)s' లేవు  "
-
-#: forms/__init__.py:663
-msgid "The submitted file is empty."
-msgstr "మీరు సమర్పించిన  ఫైల్ కాళీగా ఉంది "
-
-#: forms/__init__.py:719
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr " -32,768 ఇంకా  32,767 మధ్యలో  ఒక    ఆంకె ఇవ్వండి"
-
-#: forms/__init__.py:729
-msgid "Enter a positive number."
-msgstr "ఒక    ధన సంఖ్య ఇవ్వండి"
-
-#: forms/__init__.py:739
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "0 ఇంకా  32,767 మధ్యలో  ఒక    పూర్ ఇవ్వండి"
-
-#: template/defaultfilters.py:401
-msgid "yes,no,maybe"
-msgstr "అవును, కాదు , ఏమొ"
-
diff --git a/webapp/django/conf/locale/te/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/te/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b8df70d..0000000
--- a/webapp/django/conf/locale/te/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/te/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/te/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 16f5f9f..0000000
--- a/webapp/django/conf/locale/te/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,110 +0,0 @@
-# translation of djangojs.po to Telugu
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# pavithran <pavithran.s@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-12-09 11:51+0100\n"
-"PO-Revision-Date: 2007-03-06 16:08+0530\n"
-"Last-Translator: pavithran <pavithran.s@gmail.com>\n"
-"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "ఆందుబాతులోఉన్న %s "
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "అన్నీ ఎన్నుకోండి"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "ఙత చేయి"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "తీసివేయండి"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "ఎన్నుకున్న %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "మీ ఇష్టాలు ఎన్నుకోండి"
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "అన్ని తీసివేయు"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "ఙాన్వరి ఫిబ్రవరి మార్చి ఎప్రిల్ మే ఙూను ఙులై ఆగష్టు సెప్టెంబర్ అక్టోబర్ నవంబర్ డిసెంబర్"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "ఆదివారము సోమవారము మంగళవారము బుధవారము గురువారము శుక్రవారము శనివారము"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "ఆ సో మం భు గు శు శ"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "ఇప్పుడు"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "గడియారము"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "ఒక సమయము ఎన్నుకోండి"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "ఆర్ధరాత్రి"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "6"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "మధ్యాహ్నము"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "రద్దు చేయు"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "ఈనాడు"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "కాలెండర్"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "నిన్న"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "రేపు"
-
diff --git a/webapp/django/conf/locale/tr/LC_MESSAGES/django.mo b/webapp/django/conf/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index bb3b1af..0000000
--- a/webapp/django/conf/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/tr/LC_MESSAGES/django.po b/webapp/django/conf/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 224cc7f..0000000
--- a/webapp/django/conf/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2473 +0,0 @@
-# translation of django.po to Turkish
-# This file is distributed under the same license as the Django package.
-# 
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-03-14 01:38+0200\n"
-"PO-Revision-Date: 2008-07-02 23:37+0200\n"
-"Last-Translator: Can Burak Çilingir <canburak@cs.bilgi.edu.tr>\n"
-"Language-Team: Turkish <bahadir@pardus.org.tr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: oldforms/__init__.py:357 db/models/fields/__init__.py:116
-#: db/models/fields/__init__.py:273 db/models/fields/__init__.py:609
-#: db/models/fields/__init__.py:620 newforms/models.py:177
-#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450
-#: newforms/fields.py:461
-msgid "This field is required."
-msgstr "Bu alan gerekli."
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Metnin %s karakterden az olmasına dikkat edin."
-msgstr[1] "Metnin %s karakterden az olmasına dikkat edin."
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "Burada birden fazla satır olamaz."
-
-#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr ""
-"Geçerli bir seçimde bulunun; %(choices)s değerleri içinde '%(data)s' yok."
-
-#: oldforms/__init__.py:577 newforms/widgets.py:170
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr "Bilinmiyor"
-
-#: oldforms/__init__.py:577 newforms/widgets.py:170
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Evet"
-
-#: oldforms/__init__.py:577 newforms/widgets.py:170
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Hayır"
-
-#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Dosya gönderilmedi. Formdaki kodlama türünü kontrol edin."
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "Gönderilen dosya boş."
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "-32,768 ve 32,767 arası bir sayı girin."
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "Pozitif tamsayı girin."
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "0 ve 32,767 arası bir sayı girin."
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(type)s ve %(field)s değerine sahip %(object)s kaydı zaten var."
-
-#: db/models/manipulators.py:308 contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
-msgid "and"
-msgstr "ve"
-
-#: db/models/fields/__init__.py:42
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(fieldname)s için %(optname)s değeri zaten seçilmiş."
-
-#: db/models/fields/__init__.py:366
-msgid "This value must be an integer."
-msgstr "Bu değer tamsayı olmalı."
-
-#: db/models/fields/__init__.py:401
-msgid "This value must be either True or False."
-msgstr "Bu değer True ya da False olabilir."
-
-#: db/models/fields/__init__.py:422
-msgid "This field cannot be null."
-msgstr "Bu alan boş bırakılamaz."
-
-#: db/models/fields/__init__.py:456 core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "YYYY-AA-GG formatında tarih girin."
-
-#: db/models/fields/__init__.py:525 core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "YYYY-AA-GG SS:DD formatında tarih girin."
-
-#: db/models/fields/__init__.py:629
-msgid "Enter a valid filename."
-msgstr "Geçerli bir dosya adı girin."
-
-#: db/models/fields/__init__.py:750
-msgid "This value must be either None, True or False."
-msgstr "Bu değer None, True ya da False olabilir."
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "Lütfen geçerli bir %s girin."
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "Birden fazla numarayı virgül ile ayırın."
-
-#: db/models/fields/related.py:644
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"\"Ctrl\" ve Mac'de \"Command\" tuşunu basılı tutarak birden fazla seçimde "
-"bulunabilirsiniz."
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-"Lütfen geçerli bir %(self)s numarası girin. %(value)r değeri geçersiz."
-msgstr[1] ""
-"Lütfen geçerli %(self)s numaraları girin. %(value)r değerleri geçersiz."
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "Arapça"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "Bengali Dili"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "Katalanca"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "Çekçe"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "Galce"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "Danca"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "Almanca"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "Yunanca"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "İngilizce"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "İspanyolca"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "Arjantin İspanyolcası"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "Fince"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "Fransızca"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr "Galler Dili"
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "Macarca"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr "İbranice"
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "İzlanda dili"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "İtalyanca"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "Japonca"
-
-#: conf/global_settings.py:58
-msgid "Kannada"
-msgstr "Kannada Dili"
-
-#: conf/global_settings.py:59
-msgid "Latvian"
-msgstr "Leton Dili"
-
-#: conf/global_settings.py:60
-msgid "Macedonian"
-msgstr "Makedonca"
-
-#: conf/global_settings.py:61
-msgid "Dutch"
-msgstr "Flamanca"
-
-#: conf/global_settings.py:62
-msgid "Norwegian"
-msgstr "Norveç Dili"
-
-#: conf/global_settings.py:63
-msgid "Polish"
-msgstr "Lehçe"
-
-#: conf/global_settings.py:64
-msgid "Brazilian"
-msgstr "Brezilya Dili"
-
-#: conf/global_settings.py:65
-msgid "Romanian"
-msgstr "Romence"
-
-#: conf/global_settings.py:66
-msgid "Russian"
-msgstr "Rusça"
-
-#: conf/global_settings.py:67
-msgid "Slovak"
-msgstr "Slovakça"
-
-#: conf/global_settings.py:68
-msgid "Slovenian"
-msgstr "Slovence"
-
-#: conf/global_settings.py:69
-msgid "Serbian"
-msgstr "Sırpça"
-
-#: conf/global_settings.py:70
-msgid "Swedish"
-msgstr "İsveççe"
-
-#: conf/global_settings.py:71
-msgid "Tamil"
-msgstr "Tamilce"
-
-#: conf/global_settings.py:72
-msgid "Telugu"
-msgstr "Telugu Dili"
-
-#: conf/global_settings.py:73
-msgid "Turkish"
-msgstr "Türkçe"
-
-#: conf/global_settings.py:74
-msgid "Ukrainian"
-msgstr "Ukraynaca"
-
-#: conf/global_settings.py:75
-msgid "Simplified Chinese"
-msgstr "Basiteştirilmiş Çince"
-
-#: conf/global_settings.py:76
-msgid "Traditional Chinese"
-msgstr "Gelenelsek Çince"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "Bu değer sadece karakter, rakam ve altçizgiden oluşabilir."
-
-#: core/validators.py:68
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Bu değer sadece harf, rakam, altçizgi, bölü ve ters bölüden oluşabilir."
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "Bu değer sadece harf, rakam, altçizgi veya çizgiden oluşabilir."
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "Burada büyük harf kullanılamaz."
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "Burada küçük harf kullanılamaz."
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "Sadece virgülle ayrılmış sayılar girin."
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Virgülle ayrılmış geçerli e-posta adresleri girin."
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "Lütfen geçerli bir IP adresi girin."
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "Burada boş değer kullanılamaz."
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "Burada numerik olmayan karakterler kullanılamaz."
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "Bu alanda sadece rakam kullanılamaz."
-
-#: core/validators.py:120 newforms/fields.py:126
-msgid "Enter a whole number."
-msgstr "Sayı girin."
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "Burada sadece alfabetik karakterler kullanılabilir."
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr "Yıl 1900 ya da sonrası olabilir."
-
-#: core/validators.py:143
-#, python-format
-msgid "Invalid date: %s"
-msgstr "Geçersiz tarih: %s"
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-msgstr "SS:DD formatında geçerli bir saat girin."
-
-#: core/validators.py:162 newforms/fields.py:269
-msgid "Enter a valid e-mail address."
-msgstr "Geçerli bir e-posta adresi girin."
-
-#: core/validators.py:178
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Geçerli bir resim girin. Gönderdiğiniz dosya resim değil, ya da bozuk bir "
-"dosya."
-
-#: core/validators.py:185
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "%s adresi geçerli bir resme işaret etmiyor."
-
-#: core/validators.py:189
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "Telefon numarası XXX-XXX-XXXX formatında olmalı. \"%s\" geçersiz."
-
-#: core/validators.py:197
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "%s adresi geçerli bir QuickTime dosyasına işaret etmiyor."
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "Geçerli bir URL gerekli."
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"Metnin geçerli bir HTML kodu olması gerekir. Hatalar:\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Geçersiz XML kodu: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Geçersiz adres: %s"
-
-#: core/validators.py:244 core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "%s kırık bir link."
-
-#: core/validators.py:252
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "Geçerli bir şehir kodu girin."
-
-#: core/validators.py:266
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Söylediğinize dikkat edin! %s kelimesi burada kullanılamaz."
-msgstr[1] "Söylediğinize dikkat edin! %s kelimeleri burada kullanılamaz."
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "Bu alan '%s' ile alanı ile uyuşmalı."
-
-#: core/validators.py:292
-msgid "Please enter something for at least one field."
-msgstr "Lütfen en az bir alana giriş yapın."
-
-#: core/validators.py:301 core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "Lütfen tüm alanları doldurun ya da hepsini boş bırakın."
-
-#: core/validators.py:320
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "Bu alan %(field)s alanı %(value)s değerine sahipse doldurulmalı."
-
-#: core/validators.py:333
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "Bu alan %(field)s alanı %(value)s değerine sahip değilse doldurulmalı."
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "Tekrarlanan değerler kabul edilmez."
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "Bu değer %(lower)s ve %(upper)s arasında olabilir."
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "Bu değer en az %s olabilir."
-
-#: core/validators.py:371
-#, python-format
-msgid "This value must be no more than %s."
-msgstr ""
-
-#: core/validators.py:407
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "Bu değer %s ya da kuvvetleri olabilir."
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "Lütfen geçerli bir ondalık sayı girin."
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "Lütfen en fazla %s basamaklı bir ondalık sayı girin."
-msgstr[1] "Lütfen en fazla %s basamaklı bir ondalık sayı girin."
-
-#: core/validators.py:425
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "Lütfen tamsayı kısmı en fazla %s basamaklı bir ondalık sayı girin."
-msgstr[1] "Lütfen tamsayı kısmı en fazla %s basamaklı bir ondalık sayı girin."
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-"Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin."
-msgstr[1] ""
-"Lütfen ondalıklı kısmı en fazla %s basamaklı bir ondalık sayı girin."
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "Gönderdiğiniz dosyanın en az %s byte uzunlukta olduğundan emin olun."
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "Gönderdiğiniz dosyanın en fazl %s byte uzunlukta olduğundan emin olun."
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "Bu alandaki veri formatı hatalı."
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "Alan geçersiz."
-
-#: core/validators.py:507
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "%s içinden hiçbirşey aktarılamıyor."
-
-#: core/validators.py:510
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "%(url)s adresi geçersiz içerik türü (%(contenttype)s) gönderdi."
-
-#: core/validators.py:543
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"Lütfen %(line)s. satırdaki kapatılmayan %(tag)s etiketini kapatın. (Satır, "
-"\"%(start)s\" ile başlıyor.)"
-
-#: core/validators.py:547
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s. satırda başlayan bazı kelimeler içerik olarak kabul edilmiyor. "
-"(Satır, \"%(start)s\" ile başlıyor.)"
-
-#: core/validators.py:552
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"%(line)s. satırdaki \"%(attr)s\" özelliği geçersiz. (Satır, \"%(start)s\" "
-"ile başlıyor.)"
-
-#: core/validators.py:557
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"%(line)s. satırdaki \"<%(tag)s>\" etiketi geçersiz. (Satır, \"%(start)s\" "
-"ile başlıyor.)"
-
-#: core/validators.py:561
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s. satırdaki bir etiket eksik ya da eklenmesi gereken özellikleri "
-"var. (Satır, \"%(start)s\" ile başlıyor.)"
-
-#: core/validators.py:566
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"%(line)s. satırdaki \"%(attr)s\" özelliği geçersiz bir değere sahip. (Satır, "
-"\"%(start)s\" ile başlıyor.)"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s başarıyla yaratıldı."
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s başarıyla güncellendi."
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s silindi."
-
-#: newforms/models.py:164 newforms/fields.py:360
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Geçerli bir seçimde bulunun; seçiminiz mevcut değerlerden birisi değil."
-
-#: newforms/models.py:181 newforms/fields.py:378 newforms/fields.py:454
-msgid "Enter a list of values."
-msgstr "Değer listesi giriniz."
-
-#: newforms/models.py:187 newforms/fields.py:387
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "Geçerli bir seçimde bulunun; %s mevcut değerlerden biri değil."
-
-#: newforms/fields.py:101 newforms/fields.py:254
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "Bu değer en fazla %d karakter olabilir."
-
-#: newforms/fields.py:103 newforms/fields.py:256
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "Bu değer en az %d arakter olabilir."
-
-#: newforms/fields.py:128
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr ""
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr ""
-
-#: newforms/fields.py:163
-msgid "Enter a valid date."
-msgstr "Geçerli bir tarih girin."
-
-#: newforms/fields.py:190
-msgid "Enter a valid time."
-msgstr "Geçerli bir zaman giriniz."
-
-#: newforms/fields.py:226
-msgid "Enter a valid date/time."
-msgstr "Geçerli bir tarih/zaman giriniz."
-
-#: newforms/fields.py:240
-msgid "Enter a valid value."
-msgstr "Geçerli bir değer girin."
-
-#: newforms/fields.py:287 newforms/fields.py:309
-msgid "Enter a valid URL."
-msgstr "Geçerli bir URL girin."
-
-#: newforms/fields.py:311
-msgid "This URL appears to be a broken link."
-msgstr "Bu URL kırık bir link gibi duruyor."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "."
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milyon"
-msgstr[1] "%(value).1f milyon"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milyar"
-msgstr[1] "%(value).1f milyar"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilyon"
-msgstr[1] "%(value).1f trilyon"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "bir"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "iki"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "üç"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "dört"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "beş"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "altı"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "yedi"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "sekiz"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "dokuz"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "eski adres"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Buraya tam dosya yolu, alan adı kullanılmadan yazılmalı. Örnek: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "yeni adres"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Buraya tam dosya yolu (yukarıdaki gibi), ya da 'http://' ile başlayan tam "
-"adres yazılmalı."
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "yönlendirme"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "yönlendirmeler"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "nesne no"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "başlık"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "yorum"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "reyting 1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "reyting 2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "reyting 3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "reyting 4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "reyting 5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "reyting 6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "reyting 7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "reyting 8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "geçerli reyting"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "gönderim tarihi/saati"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "görünürlük"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP adresi"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "silinmiş"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Yorum uygunsuz ise bu işareti kaldırın. \"Yorum silindi\" uyarısı "
-"görüntülenecek."
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "yorumlar"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "İçerik nesnesi"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(date)s tarihinde %(user)s göndermiş:\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "isim"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip adresi"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "yönetici onayı"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "serbest yorum"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "serbest yorumlar"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "puan"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "puan tarihi"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "karma puanı"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "karma puanları"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "%(user)s tarafından %(score)d puan"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Bu yorum %(user)s tarafından işaretlenmiş:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "işaretleme tarihi"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "kullanıcı işareti"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "kullanıcı işaretleri"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "%r tarafından işaret"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "silme tarihi"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "yönetici tarafından silinme"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "yönetici tarafından silinme"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "%s tarafından silme işlemi"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Kayıtsız kullanıcılar oy veremez"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Geçersiz yorum numarası"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Kendinize oy veremezsiniz"
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "Reyting gerekli, çünkü en az bir reyting tanımladınız."
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Bu yorum, %(count)s yorumdan daha az gönderide bulunmuş bir kullanıcıya "
-"ait:\n"
-"\n"
-"%(text)s"
-msgstr[1] ""
-"Bu yorum, %(count)s yorumdan daha az gönderide bulunmuş bir kullanıcıya "
-"ait:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"Bu yorum kusurlu bir kullanıcı tarafından gönderildi:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Sadece POST yapılabilir"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Bir ya da daha fazla gerekli alan doldurulmadı"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-"Birisi yorum gönderme formunu kötüye kullanmaya çalıştı (güvenlik ihlali)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Bu yorumun geçersiz bir 'hedef' parametresi var -- nesne narası geçersiz"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Yorum görüntülememe mi yoksa gönderme amaçlı mı belirsiz"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Kullanıcı:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Log out"
-msgstr "Çık"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Parola:"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "Parolanızı mı unuttunuz?"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "Reytingler"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "Gerekli"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "Opsiyonel"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "Resim gönder"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "Yorum:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "Yorumu görüntüle"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "İsminiz:"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "alan adı"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "görülen isim"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "site"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "siteler"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>%s nesnesine göre:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "Tümü"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Herhangi bir tarih"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Bugün"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "7 gün içinde"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Bu ay"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Bu yıl"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "işlem zamanı"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "nesne no"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "nesne kodu"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "işlem adı"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "mesajı değiştir"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "girişi kaydet"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "girişleri kaydet"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "Tüm tarihler"
-
-#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "\"%(obj)s\" isimli %(name)s eklendi."
-
-#: contrib/admin/views/auth.py:24 contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-msgid "You may edit it again below."
-msgstr "Tekrar düzenleyebilirsiniz."
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "Kullanıcı ekle"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "Parola başarı ile değiştirildi."
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "Parola değiştir: %s"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "Site yönetimi"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "Yeni bir %s ekleyebilirsiniz."
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "%s ekle"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s eklendi."
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "%s değiştirildi."
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s silindi."
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "Hiçbir alan değiştirilmedi."
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "\"%(obj)s\" isimli %(name)s değiştirildi."
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"\"%(obj)s\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz."
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "%s değiştir"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "%(name)s içinde bir ya da daha fazla %(fieldname)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "\"%(obj)s\" isimli %(name)s silindi."
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "Emin misiniz?"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "%s için değişiklik geçmişi:"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "%s seç"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "Değiştirilecek %s nesnesini seçin"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "Veritabanı hatası"
-
-#: contrib/admin/views/decorators.py:10 contrib/auth/forms.py:60
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-"Lütfen geçerli bir kullanıcı adı ve parola girin. Tüm alanlar büyük/küçük "
-"harf duyarlıdır."
-
-#: contrib/admin/views/decorators.py:24
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Giriş yap"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Oturumunuzun süresi geçti. Lütfen tekrar giriş yapın. Endişe etmeyin, "
-"gönderiniz kayıt edildi."
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Görünüşe göre tarayıcınız çerezleri kabul etmiyor. Çerez kullanımını aktif "
-"hale getirin ve sayfayı yeniden yükleyin."
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "Kullanıcı isminde '@' karakteri bulunamaz."
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "E-posta adresiniz kullanıcı adınız değil. '%s' kullanın."
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "etiket:"
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "filtre:"
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "view:"
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "%r uygulaması bulunamadı"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "%(name)r modeli %(label)r uygulamasında bulunamadı"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "ilgili `%(label)s.%(type)s` nesnesi"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "model:"
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "ilgili `%(label)s.%(name)s` nesneleri"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "tüm %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "%s sayısı"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s nesnesindeki alanlar"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "Tamsayı"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "Mantıksal (True ya da False)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Karakter disizi (en fazla %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "Virgülle ayrılmış tamsayılar"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "Tarih (saat yok)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "Tarih (saat var)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "E-posta adresi"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "Dosya yolu"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "Ondalık sayı:"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "Mantıksal (True, False, ya da None)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "Ana modelle ilişki"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "Telefon numarası"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "Metin"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "Saat"
-
-#: contrib/admin/views/doc.py:315 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr "URL"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "Şehir Kodu (iki karakter)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML metni"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s geçerli vir adres kalıbı değil"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Şimdiki:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "Değiştir:"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Tarih:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Saat:"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Dokümantasyon"
-
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-msgid "Change password"
-msgstr "Parola değiştir"
-
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Anasayfa"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s Ekle"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s nesnesine göre "
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "Geçmiş"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Tarih/saat"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Kullanıcı"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "İşlem"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "DATE_WITH_TIME_FULL"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Bu nesnenin işlem geçmişi yok. Muhtemelen yönetici sayfası dışında bir "
-"yerden eklendi."
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Git"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 sonuç"
-msgstr[1] "%(counter)s sonuç"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "toplam %(full_result_count)s"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Tümünü göster"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django site yöneticisi"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django yönetimi"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Sunucu hatası"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Sunucu hatası (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Sunucu Hatası <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Bir hata oluştu. Hata, e-psota ile site yöneticisine bildirildi ve kısa süre "
-"içinde çözülecktir. Sabrınız için teşekkürler."
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Veritabanı kurulumu ile ilgili bir problem var. İlgili veritabanı "
-"tablolarının kurulu olduğundan ve veritabanının ilgili kullanıcı tarafından "
-"okunabilir olduğundan emin olun."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "%(name)s uygulamasındaki modeller."
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Ekle"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Değiştir"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "İşlem yapmaya yetkiniz yok."
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Geçmiş İşlemler"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "İşlemlerim"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "Hiç yok"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Sayfa bulunamadı"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Üzgünüm, aradığınız sayfa bulunamadı."
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "Filtrele"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "Sitede görüntüle"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Lütfen aşağıdaki hatayı düzeltin."
-msgstr[1] "Lütfen aşağıdaki hataları düzeltin."
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "Sıralama:"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "Sıra:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Sil"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"'%(escaped_object)s' isimli %(object_name)s nesnesini silmek, bağlantılı "
-"nesnelerin silinmesini gerektiriyor, ancak aşağıdaki nesneleri silme "
-"yetkiniz yok."
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"\"%(escaped_object)s\" isimli %(object_name)s nesnesini silmek "
-"istediğinizdenemin misiniz? Aşağıdaki bağlantılı öğeler silinecek:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Evet, eminim"
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "Hoşgeldin,"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Yeni olarak kaydet"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Kaydet ve yeni bir tane ekle"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Kaydet ve düzenlemeye devam et"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Kaydet"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> için yeni parola girin."
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-msgid "Password"
-msgstr "Parola"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-msgid "Password (again)"
-msgstr "Parola (tekrar)"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-msgid "Enter the same password as above, for verification."
-msgstr "Onaylamak için, yukarıdaki parolanın aynısını girin."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Önce bir kullanıcı adı ve parola girin. Daha sonra daha fazla bilgi "
-"girebilirsiniz."
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "Kullanıcı"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Parola değişimi"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Parola değişimi başarılı"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Parolanız değiştirildi."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Parolayı sıfırla"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Parolanızı mı unuttunuz? E-posta adresinizi aşağıya girin, parolanızı "
-"sıfırlayalım ve e-posta adresinize gönderelim."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-posta adresi:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Parolamı sıfırla"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Web sitesinde zaman geçirdiğiniz için teşekkür ederiz."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Tekrar giriş yap"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Parola sıfırlandı."
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Yeni şifreniz, e-posta adresinize gönderildi, kısa süre içinde size "
-"ulaşacaktır."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Güvenliğiniz için, lütfen eski parolanızı girin, sonra da yeni şifrenizi iki "
-"kere girin ve böylece doğru yazdığınızdan emin olun."
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Eski parola:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Yeni parola:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Parolayı onayla:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Parolamı değiştir"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Bu e-postayı aldınız çünkü "
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr ""
-"%(site_name)s adresindeki kullanıcı hesabınız için parola sıfırlama "
-"talebinde bulundunuz."
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Yeni parolanız: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Parolanızı değiştirmek için bu adrese gidebilirsiniz:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "Unutma ihtimaline karşı, kullanıcı adınız:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Teşekkürler!"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s Ekibi"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "Kısayollar"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "Doküman kısayolları"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Kısayolları kullanabilmek için, bağlantıyı tarayıcınızdaki "
-"araç çubuğuna sürükleyin, ya da sağ tıklayıp sık kullanılan adresler "
-"listenize ekleyin. Bazı kısayollar, uygulamayı çalıştıran sunucu ile aynı "
-"adreste bulunan istemciler tarafından kullanılabilir.</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Bu sayfa için dokümantasyon"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Sizi, bu sayfayı üreten betiğin dokümantasyonuna yönlendirir."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Nesne numarasını göster"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Nesneyi düzenle (aynı pencerede)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Tek bir nesneyi temsil eden sayfaların yönetim sayfasını gösterir."
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Nesneyi düzenle (yeni pencerede)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Yukarıdaki gibi, ancak yönetim sayfasını yeni bir pencerede açar."
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "python model sınıfı"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "içerik türü"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "içerik türleri"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "Çıkış yapıldı"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
-msgstr "isim"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "takma ad"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "izin"
-
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
-msgstr "izinler"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "grup"
-
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
-msgstr "gruplar"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "kullanıcı adı"
-
-#: contrib/auth/models.py:90
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr ""
-"Gerekli. 30 karakter ya da da az olmalı. Alfanumerik (harf, rakam ve alt "
-"çizgi) karakterler kullanılabilir."
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "isim"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "soyisim"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "e-posta adresi"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "parola"
-
-#: contrib/auth/models.py:94
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr ""
-"'[algo]$[salt]$[hexdigest]' yazın ya da <a href=\"password/\">parola\n"
-"değiştir formunu kullanın</a>."
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "yönetici modu"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr "Kullanıcının yönetici sayfasına girip giremeyeceğini belirler."
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "aktif"
-
-#: contrib/auth/models.py:96
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Kullanıcının Django yönetim sayfasına girip giremeyeceğini belirler. "
-"Kullanıcı hesabı silmek yerine işareti kaldırın."
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "süper kullanıcı modu"
-
-#: contrib/auth/models.py:97
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Kullanıcının tek tek hak atamasına gerek kalmadan tüm haklara sahip olup "
-"olamayacağını belirler."
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "son ziyaret"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "kayıt tarihi"
-
-#: contrib/auth/models.py:101
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"Özel olarak atanmış hakların yanı sıra, kullanıcının üyesi olduğu grupların "
-"hakları alır."
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "kullanıcı izinleri"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "kullanıcı"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "kullanıcılar"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "Kişisel bilgiler"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "İzinler"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "Önemli tarihler"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "Gruplar"
-
-#: contrib/auth/models.py:258
-msgid "message"
-msgstr "mesaj"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "İki parola alanı uyuşmuyor."
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "Bu isimde bir kullanıcı zaten var."
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-"Web tarayıcınızın çerezleri desteklemediği görülüyor. Çerezler giriş için "
-"gerekli."
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "Bu hesap aktif değil."
-
-#: contrib/auth/forms.py:85
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr ""
-"Bu e-posta hesabıyla ilişkili kullanıcı bulunmuyor. Kayıtlı olduğunuzdan "
-"emin misiniz?"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "İki parola alanı uyuşmuyor."
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Eski parolanız hatalı. Lütfen tekrar girin."
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "Posta kodu girin. Posta kodunun iki kısmı arasında bir boşluk bırakın."
-
-#: contrib/localflavor/usa/forms.py:17
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "XXXXX ya da XXXXX-XXXX biçiminde bir posta kodu yazın."
-
-#: contrib/sessions/models.py:51
-msgid "session key"
-msgstr "oturum anahtarı"
-
-#: contrib/sessions/models.py:52
-msgid "session data"
-msgstr "oturum bilgisi"
-
-#: contrib/sessions/models.py:53
-msgid "expire date"
-msgstr "bitiş tarihi"
-
-#: contrib/sessions/models.py:57
-msgid "session"
-msgstr "oturum"
-
-#: contrib/sessions/models.py:58
-msgid "sessions"
-msgstr "oturumlar"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin "
-"olun."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "başlık"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "içerik"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "yorumlara izin ver"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "şablon adı"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem "
-"otomatik olarak 'flatpages/default.html' kullanacak."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "kayıt gerekli"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Bu seçili ise, sadece kayıtlı kullanıcılar sayfayı görüntüleyebilir."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "düz sayfa"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "düz sayfalar"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Pazartesi"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Salı"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Çarşamba"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Perşembe"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Cuma"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Cumartesi"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Pazar"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Ocak"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Şubat"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "Nisan"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Mayıs"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Haziran"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Temmuz"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Ağustos"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Eylül"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Ekim"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Kasım"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Aralık"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "oca"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "şub"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "nis"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "haz"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "tem"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "ağu"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "eyl"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "eki"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "kas"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "ara"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Oca."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Şub."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Ağu."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Eyl."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Eki."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Kas."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Ara."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "yıl"
-msgstr[1] "yıl"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "ay"
-msgstr[1] "ay"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "hafta"
-msgstr[1] "hafta"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "gün"
-msgstr[1] "gün"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "saat"
-msgstr[1] "saat"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "dakika"
-msgstr[1] "dakika"
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr "ö.s."
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr "ö.ö."
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr "ÖS"
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr "ÖÖ"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "gece yarısı"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "öğlen"
-
-#: utils/translation/trans_real.py:362
-msgid "DATE_FORMAT"
-msgstr "DATE_FORMAT"
-
-#: utils/translation/trans_real.py:363
-msgid "DATETIME_FORMAT"
-msgstr "DATETIME_FORMAT"
-
-#: utils/translation/trans_real.py:364
-msgid "TIME_FORMAT"
-msgstr "TIME_FORMAT"
-
-#: utils/translation/trans_real.py:380
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:381
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "evet,hayır,olabilir"
-
-#~ msgid ""
-#~ "Please enter a different %s. The one you entered is already being used "
-#~ "for %s."
-#~ msgstr ""
-#~ "Lütfen farklı bir %s girin. Girdiğiniz, %s tarihinde bir kez kullanılmış."
-
-#~ msgid "Use '[algo]$[salt]$[hexdigest]'"
-#~ msgstr "'[algo]$[salt]$[hexdigest]' formatında"
-
-#~ msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-#~ msgstr "<a href=\"/password_reset/\">Şifrenizi mi unuttunuz?</a>"
-
-#: contrib/auth/forms.py:107
-#, python-format
-msgid "Password reset on %s"
-msgstr "%s sitesindeki hesabınızın parolasının sıfırlanması"
diff --git a/webapp/django/conf/locale/tr/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/tr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 1748dfa..0000000
--- a/webapp/django/conf/locale/tr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/tr/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/tr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index cae1933f..0000000
--- a/webapp/django/conf/locale/tr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,112 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-30 01:31+0300\n"
-"PO-Revision-Date: 2006-09-30 01:31+0300\n"
-"Last-Translator: Bahadır Kandemir <bahadir@pardus.org.tr>\n"
-"Language-Team: Bahadır Kandemir <bahadir@pardus.org.tr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr "Mevcut %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "Hepsini seç"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "Ekle"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "Kaldır"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr "Seçilen %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "Seçiminizi yapın ve tıklayın "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "Hepsini temizle"
-
-#: contrib/admin/media/js/dateparse.js:26
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım "
-"Aralık"
-
-#: contrib/admin/media/js/dateparse.js:27
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "Pazar Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "P P S Ç P C C"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "Şimdi"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "Saat"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "Saat seçin"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "Geceyarısı"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "Sabah 6"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "Öğle"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "İptal"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "Bugün"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "Takvim"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "Dün"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "Yarın"
-
-msgid "Show"
-msgstr "Göster"
-
-msgid "Hide"
-msgstr "Gizle"
diff --git a/webapp/django/conf/locale/uk/LC_MESSAGES/django.mo b/webapp/django/conf/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index b6b4962..0000000
--- a/webapp/django/conf/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/uk/LC_MESSAGES/django.po b/webapp/django/conf/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 3b24145..0000000
--- a/webapp/django/conf/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1970 +0,0 @@
-# Django, ukrainian translation.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Denis Kuzmichyov <kuzmichyov@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:13+0200\n"
-"PO-Revision-Date: 2006-03-20 21:18+0300\n"
-"Last-Translator: Denis Kuzmichyov <kuzmichyov@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr ""
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr ""
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "коментар"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "рейтінг #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "рейтінг #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "рейтінг #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "рейтінг #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "рейтінг #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "рейтінг #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "рейтінг #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "рейтінг #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr ""
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "дата/час додання"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "публічний"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
-msgid "IP address"
-msgstr "IP адреса"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "видалений"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: contrib/comments/models.py:91
-#, fuzzy
-msgid "comments"
-msgstr "коментар"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr ""
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Додав %(user)s %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "Ім'я людини"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip адреса"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "схвалено адміністрацією"
-
-#: contrib/comments/models.py:176
-#, fuzzy
-msgid "free comment"
-msgstr "Вільний коментар"
-
-#: contrib/comments/models.py:177
-#, fuzzy
-msgid "free comments"
-msgstr "Вільні коментарі"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "рахунок"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr ""
-
-#: contrib/comments/models.py:237
-#, fuzzy
-msgid "karma score"
-msgstr "рахунок"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr ""
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr ""
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr ""
-
-#: contrib/comments/models.py:268
-#, fuzzy
-msgid "user flag"
-msgstr "Ознака користувача"
-
-#: contrib/comments/models.py:269
-#, fuzzy
-msgid "user flags"
-msgstr "Ознаки користувача"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr ""
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "Дата видалення"
-
-#: contrib/comments/models.py:280
-#, fuzzy
-msgid "moderator deletion"
-msgstr "Видалено модератором"
-
-#: contrib/comments/models.py:281
-#, fuzzy
-msgid "moderator deletions"
-msgstr "Видалено модератором"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr ""
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "Анонімний користувач не може голосувати"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "Невірний ID коментарю"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "Не можна голосувати за себе"
-
-#: contrib/comments/views/comments.py:28
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr ""
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"Цей коментар доданий користувачем, який додав меньше ніж %(count)s коментаря"
-msgstr[1] ""
-"Цей коментар доданий користувачем, який додав меньше ніж %(count)s коментарів"
-
-#: contrib/comments/views/comments.py:117
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-
-#: contrib/comments/views/comments.py:189
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "Тільки POST'и дозволені"
-
-#: contrib/comments/views/comments.py:193
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "Одне або більше обов'язкових полів не було заповнено"
-
-#: contrib/comments/views/comments.py:197
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr ""
-
-#: contrib/comments/views/comments.py:207
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr ""
-"Форма для коментарів мала невірний параметр 'target' -- ID об'єкту був "
-"невірний"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "Форма для коментарів не надавала ані 'переглянути', ні 'додати'"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "Ім'я:"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "Пароль:"
-
-#: contrib/comments/templates/comments/form.html:6
-#, fuzzy
-msgid "Forgotten your password?"
-msgstr "Змінити мій пароль"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Log out"
-msgstr "Вийти"
-
-#: contrib/comments/templates/comments/form.html:12
-#, fuzzy
-msgid "Ratings"
-msgstr "рейтінг #1"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:27
-#: contrib/comments/templates/comments/freeform.html:5
-#, fuzzy
-msgid "Comment:"
-msgstr "Коментар"
-
-#: contrib/comments/templates/comments/form.html:32
-#: contrib/comments/templates/comments/freeform.html:9
-#, fuzzy
-msgid "Preview comment"
-msgstr "Вільний коментар"
-
-#: contrib/comments/templates/comments/freeform.html:4
-#, fuzzy
-msgid "Your name:"
-msgstr "Ім'я користувача"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-msgid "All"
-msgstr "Всі"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "Будь-яка дата"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "Сьогодні"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "Останні 7 днів"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "Цього місяця"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "Цього року"
-
-#: contrib/admin/filterspecs.py:143
-msgid "Yes"
-msgstr "Так"
-
-#: contrib/admin/filterspecs.py:143
-msgid "No"
-msgstr "Ні"
-
-#: contrib/admin/filterspecs.py:150
-msgid "Unknown"
-msgstr ""
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "час дії"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "id об'єкту"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr ""
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "прапор дії"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "змінити повідомлення"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr ""
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr ""
-
-#: contrib/admin/templatetags/admin_list.py:228
-msgid "All dates"
-msgstr "Всі дати"
-
-#: contrib/admin/views/decorators.py:9 contrib/auth/forms.py:36
-#: contrib/auth/forms.py:41
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr ""
-
-#: contrib/admin/views/decorators.py:23
-#: contrib/admin/templates/admin/login.html:25
-msgid "Log in"
-msgstr "Увійти"
-
-#: contrib/admin/views/decorators.py:61
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr ""
-"Будь ласка, ввійдіть знову, ваша сесія скінчилася. Не хвилюйтеся: все що ви "
-"додавали збережено."
-
-#: contrib/admin/views/decorators.py:68
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr ""
-"Здається ваш броузер не сконфігурований приймати cookies. Будьласка "
-"увімкнить cookies, перезавантажте цю старінку і спробуйте знову"
-
-#: contrib/admin/views/decorators.py:82
-msgid "Usernames cannot contain the '@' character."
-msgstr "Ім'я не може містити '@' символ"
-
-#: contrib/admin/views/decorators.py:84
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr ""
-"Ваша e-mail адреса не є вашим ім'ям користувача. Замість спробуйте '%s'"
-
-#: contrib/admin/views/main.py:226
-msgid "Site administration"
-msgstr "Адміністрування сайта"
-
-#: contrib/admin/views/main.py:260
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" було додано успішно."
-
-#: contrib/admin/views/main.py:264 contrib/admin/views/main.py:348
-msgid "You may edit it again below."
-msgstr "Ви можете редагувати це знову внизу."
-
-#: contrib/admin/views/main.py:272 contrib/admin/views/main.py:357
-#, python-format
-msgid "You may add another %s below."
-msgstr "Ви можете додати інший %s внизу."
-
-#: contrib/admin/views/main.py:290
-#, python-format
-msgid "Add %s"
-msgstr "Додати %s"
-
-#: contrib/admin/views/main.py:336
-#, python-format
-msgid "Added %s."
-msgstr "Додано %s."
-
-#: contrib/admin/views/main.py:336 contrib/admin/views/main.py:338
-#: contrib/admin/views/main.py:340
-msgid "and"
-msgstr "та"
-
-#: contrib/admin/views/main.py:338
-#, python-format
-msgid "Changed %s."
-msgstr "Змінено %s."
-
-#: contrib/admin/views/main.py:340
-#, python-format
-msgid "Deleted %s."
-msgstr "Видалено %s."
-
-#: contrib/admin/views/main.py:343
-msgid "No fields changed."
-msgstr "Поля не змінені."
-
-#: contrib/admin/views/main.py:346
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" був успішно змінений."
-
-#: contrib/admin/views/main.py:354
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\"  був успішно доданий. Ви модете редагувати його знову "
-"внизу."
-
-#: contrib/admin/views/main.py:392
-#, python-format
-msgid "Change %s"
-msgstr "Змінити %s"
-
-#: contrib/admin/views/main.py:470
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "Одне або більше %(fieldname)s у %(name)s: %(obj)s"
-
-#: contrib/admin/views/main.py:475
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "Одне або більше %(fieldname)s у %(name)s:"
-
-#: contrib/admin/views/main.py:508
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" був видалений успышно."
-
-#: contrib/admin/views/main.py:511
-msgid "Are you sure?"
-msgstr "Ви упевнені?"
-
-#: contrib/admin/views/main.py:533
-#, python-format
-msgid "Change history: %s"
-msgstr "Історія змін: %s"
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s"
-msgstr "Вибрати %s"
-
-#: contrib/admin/views/main.py:565
-#, python-format
-msgid "Select %s to change"
-msgstr "Виберіть %s щоб змінити"
-
-#: contrib/admin/views/doc.py:277 contrib/admin/views/doc.py:286
-#: contrib/admin/views/doc.py:288 contrib/admin/views/doc.py:294
-#: contrib/admin/views/doc.py:295 contrib/admin/views/doc.py:297
-msgid "Integer"
-msgstr "Ціле"
-
-#: contrib/admin/views/doc.py:278
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:279 contrib/admin/views/doc.py:296
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "Рядок (до %(maxlength)s символів)"
-
-#: contrib/admin/views/doc.py:280
-msgid "Comma-separated integers"
-msgstr "Цілі розділені комою"
-
-#: contrib/admin/views/doc.py:281
-msgid "Date (without time)"
-msgstr "Дата (без часу)"
-
-#: contrib/admin/views/doc.py:282
-msgid "Date (with time)"
-msgstr "Дата (з часом)"
-
-#: contrib/admin/views/doc.py:283
-msgid "E-mail address"
-msgstr "E-mail адреса"
-
-#: contrib/admin/views/doc.py:284 contrib/admin/views/doc.py:287
-msgid "File path"
-msgstr ""
-
-#: contrib/admin/views/doc.py:285
-msgid "Decimal number"
-msgstr "Десяткове число"
-
-#: contrib/admin/views/doc.py:291
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:292
-msgid "Relation to parent model"
-msgstr "Відношення до батьківської моделі"
-
-#: contrib/admin/views/doc.py:293
-msgid "Phone number"
-msgstr "Телефонний номер"
-
-#: contrib/admin/views/doc.py:298
-msgid "Text"
-msgstr "Текст"
-
-#: contrib/admin/views/doc.py:299
-msgid "Time"
-msgstr "Час"
-
-#: contrib/admin/views/doc.py:300 contrib/flatpages/models.py:7
-msgid "URL"
-msgstr ""
-
-#: contrib/admin/views/doc.py:301
-msgid "U.S. state (two uppercase letters)"
-msgstr ""
-
-#: contrib/admin/views/doc.py:302
-msgid "XML text"
-msgstr "текст XML"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Documentation"
-msgstr "Документація"
-
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/base.html:23
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:3
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/model_index.html:5
-msgid "Change password"
-msgstr "Змінити пароль"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/base.html:28
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Home"
-msgstr "Домівка"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:20
-msgid "History"
-msgstr "Історія"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "Дата/час"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "Користувач"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "Дія"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Цей об'єкт немає історії змін. Напевно він був доданий не через сайт "
-"адміністрування."
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django сайт адміністрування"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django адміністрування"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "Помилка сервера"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "Помилка сервера (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "Помилка сервера <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Відбулася помилка. Її було повідомлено адміністраторам сайту e-mail'ом і "
-"вона повинна бути незабаром виправлена. Дякуємо за ваше терпіння."
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "Сторінка не знайдена"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ми шкодуємо, але сторінка яку ви запросили не знайдена."
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr ""
-
-#: contrib/admin/templates/admin/index.html:28
-#: contrib/admin/templates/admin/change_form.html:15
-msgid "Add"
-msgstr "Додати"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "Змінити"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "У вас немає дозволу редагувати будь-що"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "Недавні дії"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "Мої дії"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_list.html:11
-#, python-format
-msgid "Add %(name)s"
-msgstr "Додати %(name)s"
-
-#: contrib/admin/templates/admin/login.html:22
-msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
-msgstr "<a href=\"/password_reset/\">Забули ваш пароль</a>?"
-
-#: contrib/admin/templates/admin/base.html:23
-msgid "Welcome,"
-msgstr "Вітаємо,"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-#: contrib/admin/templates/admin/submit_line.html:3
-msgid "Delete"
-msgstr "Видалити"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(object)s' would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Видалення %(object_name)s '%(object)s' призводить до видалення пов'язаних "
-"об'єктів, але ваш рахунок не має дозволу видаляти наступні типи об'єктів:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of "
-"the following related items will be deleted:"
-msgstr ""
-"Ви впевнені що хочете видалити %(object_name)s \"%(object)s\"? Всі наступні "
-"пов'язані записи будуть видалені:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "Так, я впевнений"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(title)s "
-msgstr "За %(title)s"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "Уперед"
-
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "View on site"
-msgstr "Дивитися на сайті"
-
-#: contrib/admin/templates/admin/change_form.html:30
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "Будь ласка, виправте помилку, що зазначена нижче"
-msgstr[1] "Будь ласка, виправте помилки, що зазначені нижче"
-
-#: contrib/admin/templates/admin/change_form.html:48
-msgid "Ordering"
-msgstr ""
-
-#: contrib/admin/templates/admin/change_form.html:51
-msgid "Order:"
-msgstr ""
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "Зберегти як нове"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "Зберегти і додати інше"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "Зберегти і продовжити редагування"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "Зберегти"
-
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-msgid "Password change"
-msgstr "Зміна пароля"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "Зміна паролю успішна"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "Ваш пароль було змінено."
-
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-#: contrib/admin/templates/registration/password_reset_done.html:4
-msgid "Password reset"
-msgstr "Пароль перевстановлено"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr ""
-"Забули свій пароль? Введить свою e-mail адресу і ми перевстановимо ваш "
-"пароль і надішлемо вам новий поштою."
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail адреса:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "Перевстановіть мій пароль"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Дякуємо за проведений вами час із сайтом сьогодні."
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Увійти знову"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "Пароль перевстановлено успішно"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr ""
-"Ми надіслали новий пароль поштою на адресу, яку ви вказали. Незабаром ви "
-"повинні його отримати."
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Будь ласка введить ваш старий пароль, задля беспекі, та потім введить ваш "
-"новий пароль двічі, щоб ми могли перевірити що ви ввели його коректно"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "Старий пароль:"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "Новий пароль:"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "Підтвердіть пароль:"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "Змінити мій пароль"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "Ви отримали цього листа, тому що запросили перевстановлення паролю"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "для вашого рахунку користувача на сайті %(site_name)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "Ваш новий пароль: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "Ви можете вільно змінити цей пароль, перейшовши до цієї сторінки:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "У разі, якщо ви забули, ваше им'я:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "Дякуємо за користування нашим сайтом."
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "команда %(site_name)s "
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "Документіця для цієї сторінки"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "Показати ID об'єкту"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Показує content-type та унікальний ID для сторінок, які являють собою єдиний "
-"об'єкт"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "Редагувати цей об'єкт (поточне вікно)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "Редагувати цей об'єкт (нове вікно)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "Як і вище, але відкриває сторінку адміністрування у новому вікні."
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "Дата:"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "Час:"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "Зараз:"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr ""
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr ""
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Це повинно бути абсолютний шлях, виключаючи ім'я домену. Приклад: '/events/"
-"search/'."
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr ""
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Це може бути або абсолютний шлях (як вище), або повний URL, який починається "
-"з 'http://'."
-
-#: contrib/redirects/models.py:12
-msgid "redirect"
-msgstr ""
-
-#: contrib/redirects/models.py:13
-msgid "redirects"
-msgstr ""
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Приклад: '/about/contact/'. Переконайтеся у наявності слешу на початку та у "
-"кінці."
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "заголовок"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "зміст"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "ввімкнути коментарі"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "ім'я шаблона"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page'. If this isn't provided, the system will "
-"use 'flatpages/default'."
-msgstr ""
-"Приклад: 'flatpages/contact_page'. Якщо це не надано, система буда "
-"використовувати 'flatpages/default'."
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "потрібна регістрація"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Якщо тут відзначено, тільки користувачи, що увійшли будуть мати змогу "
-"переглядати цю сторінку."
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr ""
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "прості сторінки"
-
-#: contrib/auth/models.py:13 contrib/auth/models.py:26
-msgid "name"
-msgstr "ім'я"
-
-#: contrib/auth/models.py:15
-msgid "codename"
-msgstr ""
-
-#: contrib/auth/models.py:17
-#, fuzzy
-msgid "permission"
-msgstr "Дозвіл"
-
-#: contrib/auth/models.py:18 contrib/auth/models.py:27
-#, fuzzy
-msgid "permissions"
-msgstr "Дозвіл"
-
-#: contrib/auth/models.py:29
-#, fuzzy
-msgid "group"
-msgstr "Група"
-
-#: contrib/auth/models.py:30 contrib/auth/models.py:65
-#, fuzzy
-msgid "groups"
-msgstr "Групи"
-
-#: contrib/auth/models.py:55
-msgid "username"
-msgstr "Ім'я користувача"
-
-#: contrib/auth/models.py:56
-msgid "first name"
-msgstr "ім'я"
-
-#: contrib/auth/models.py:57
-msgid "last name"
-msgstr "прізвище"
-
-#: contrib/auth/models.py:58
-msgid "e-mail address"
-msgstr "e-mail адреса"
-
-#: contrib/auth/models.py:59
-msgid "password"
-msgstr "пароль"
-
-#: contrib/auth/models.py:59
-msgid "Use '[algo]$[salt]$[hexdigest]'"
-msgstr ""
-
-#: contrib/auth/models.py:60
-msgid "staff status"
-msgstr "статус персоналу"
-
-#: contrib/auth/models.py:60
-msgid "Designates whether the user can log into this admin site."
-msgstr "Визначає, чи може користувач увійти до цього сайту адміністрування."
-
-#: contrib/auth/models.py:61
-msgid "active"
-msgstr "активний"
-
-#: contrib/auth/models.py:62
-msgid "superuser status"
-msgstr "статус суперкористувача"
-
-#: contrib/auth/models.py:63
-msgid "last login"
-msgstr "Останній вхід"
-
-#: contrib/auth/models.py:64
-msgid "date joined"
-msgstr "дата приєднання"
-
-#: contrib/auth/models.py:66
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr ""
-"На додаток до прав які призначені вручну, цей користувач також отримує усі "
-"права, які має група в якій він є."
-
-#: contrib/auth/models.py:67
-#, fuzzy
-msgid "user permissions"
-msgstr "Дозвіл"
-
-#: contrib/auth/models.py:70
-#, fuzzy
-msgid "user"
-msgstr "Користувач"
-
-#: contrib/auth/models.py:71
-#, fuzzy
-msgid "users"
-msgstr "Користувачі"
-
-#: contrib/auth/models.py:76
-msgid "Personal info"
-msgstr "Персональна інформація"
-
-#: contrib/auth/models.py:77
-msgid "Permissions"
-msgstr "Дозвіл"
-
-#: contrib/auth/models.py:78
-msgid "Important dates"
-msgstr "Важливі дати"
-
-#: contrib/auth/models.py:79
-msgid "Groups"
-msgstr "Групи"
-
-#: contrib/auth/models.py:219
-#, fuzzy
-msgid "message"
-msgstr "Повідомлення"
-
-#: contrib/auth/forms.py:30
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr ""
-
-#: contrib/contenttypes/models.py:25
-msgid "python model class name"
-msgstr ""
-
-#: contrib/contenttypes/models.py:28
-msgid "content type"
-msgstr ""
-
-#: contrib/contenttypes/models.py:29
-msgid "content types"
-msgstr ""
-
-#: contrib/sessions/models.py:35
-msgid "session key"
-msgstr ""
-
-#: contrib/sessions/models.py:36
-msgid "session data"
-msgstr ""
-
-#: contrib/sessions/models.py:37
-msgid "expire date"
-msgstr ""
-
-#: contrib/sessions/models.py:41
-msgid "session"
-msgstr "сесія"
-
-#: contrib/sessions/models.py:42
-msgid "sessions"
-msgstr "сесії"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "доменне ім'я"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr ""
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "сайт"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "сайти"
-
-#: utils/translation.py:360
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation.py:361
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
-
-#: utils/translation.py:362
-msgid "TIME_FORMAT"
-msgstr "P"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Понеділок"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Вівторок"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Середа"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Четвер"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "П'ятниця"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Субота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Неділя"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "Січень"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "Лютий"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "Березень"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "Квітень"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "Травень"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "Червень"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "Липень"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "Серпень"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "Вересень"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "Жовтень"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "Листопад"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "Грудень"
-
-#: utils/dates.py:19
-#, fuzzy
-msgid "jan"
-msgstr "та"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:19
-#, fuzzy
-msgid "may"
-msgstr "день"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "Січ."
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "Лют."
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "Сер."
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "Вер."
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "Жов."
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "Лис."
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "Груд."
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "рік"
-msgstr[1] "рокі(в)"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "місяць"
-msgstr[1] "місяці(в)"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "день"
-msgstr[1] "дні(в)"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "година"
-msgstr[1] "годин(и)"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "хвилина"
-msgstr[1] "хвилин(и)"
-
-#: conf/global_settings.py:37
-msgid "Bengali"
-msgstr "Бенгалська"
-
-#: conf/global_settings.py:38
-msgid "Czech"
-msgstr "Чеська"
-
-#: conf/global_settings.py:39
-msgid "Welsh"
-msgstr "Валлійська"
-
-#: conf/global_settings.py:40
-msgid "Danish"
-msgstr "Датська"
-
-#: conf/global_settings.py:41
-msgid "German"
-msgstr "Німецька"
-
-#: conf/global_settings.py:42
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:43
-msgid "English"
-msgstr "Англійська"
-
-#: conf/global_settings.py:44
-msgid "Spanish"
-msgstr "Іспанська"
-
-#: conf/global_settings.py:45
-msgid "French"
-msgstr "Французька"
-
-#: conf/global_settings.py:46
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:47
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:48
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:49
-msgid "Icelandic"
-msgstr "Ісландська"
-
-#: conf/global_settings.py:50
-msgid "Italian"
-msgstr "Італійська"
-
-#: conf/global_settings.py:51
-msgid "Japanese"
-msgstr "Японська"
-
-#: conf/global_settings.py:52
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Norwegian"
-msgstr "Норвезька"
-
-#: conf/global_settings.py:54
-msgid "Brazilian"
-msgstr "Бразильска"
-
-#: conf/global_settings.py:55
-msgid "Romanian"
-msgstr "Румунська"
-
-#: conf/global_settings.py:56
-msgid "Russian"
-msgstr "Російська"
-
-#: conf/global_settings.py:57
-msgid "Slovak"
-msgstr "Словацька"
-
-#: conf/global_settings.py:58
-#, fuzzy
-msgid "Slovenian"
-msgstr "Словацька"
-
-#: conf/global_settings.py:59
-msgid "Serbian"
-msgstr "Сербська"
-
-#: conf/global_settings.py:60
-msgid "Swedish"
-msgstr "Шведська"
-
-#: conf/global_settings.py:61
-#, fuzzy
-msgid "Ukrainian"
-msgstr "Бразильска"
-
-#: conf/global_settings.py:62
-msgid "Simplified Chinese"
-msgstr "Китайська спрощена"
-
-#: conf/global_settings.py:63
-msgid "Traditional Chinese"
-msgstr "Китайська традиційна"
-
-#: core/validators.py:60
-msgid "This value must contain only letters, numbers and underscores."
-msgstr ""
-"Це значення може містити тільки літери, числа та символи підкреслювання"
-
-#: core/validators.py:64
-#, fuzzy
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr ""
-"Це значення може містити тільки літери, числа, символи підкреслювання та "
-"слеші."
-
-#: core/validators.py:72
-msgid "Uppercase letters are not allowed here."
-msgstr "Літери у верхньому регістрі тут неприпустимі."
-
-#: core/validators.py:76
-msgid "Lowercase letters are not allowed here."
-msgstr "Літери у нижньому регістрі тут неприпустимі."
-
-#: core/validators.py:83
-msgid "Enter only digits separated by commas."
-msgstr "Уведіть тільки цифри розділені комами."
-
-#: core/validators.py:95
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "Уведіть коректні e-mail адреси, розділені комами."
-
-#: core/validators.py:99
-msgid "Please enter a valid IP address."
-msgstr "Будь ласка уведіть коректу IP адресу."
-
-#: core/validators.py:103
-msgid "Empty values are not allowed here."
-msgstr "Порожні значенні тут не дозволені."
-
-#: core/validators.py:107
-msgid "Non-numeric characters aren't allowed here."
-msgstr ""
-
-#: core/validators.py:111
-msgid "This value can't be comprised solely of digits."
-msgstr ""
-
-#: core/validators.py:116
-msgid "Enter a whole number."
-msgstr "Уведіть ціле число."
-
-#: core/validators.py:120
-msgid "Only alphabetical characters are allowed here."
-msgstr "Тільки алфавітні символи дозволені тут."
-
-#: core/validators.py:124
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "Уведіть коректну дату у форматі РРРР-ММ-ДД."
-
-#: core/validators.py:128
-msgid "Enter a valid time in HH:MM format."
-msgstr "Уведіть коректий час у форматі ГГ:ХХ."
-
-#: core/validators.py:132 db/models/fields/__init__.py:468
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr ""
-
-#: core/validators.py:136
-msgid "Enter a valid e-mail address."
-msgstr "Уведіть коректну e-mail адресу."
-
-#: core/validators.py:148
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Завантажте коректний малюнок. Файл який ви завантажили був або не малюнок, "
-"або малюнок, який є зіпсованим."
-
-#: core/validators.py:155
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s не вказує на коректний малюнок."
-
-#: core/validators.py:159
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr ""
-"Телефонні номери мають бути у форматі XXX-XXX-XXXX. \"%s\" не є коректним."
-
-#: core/validators.py:167
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s не вказує на коректне відео у форматі QuickTime."
-
-#: core/validators.py:171
-msgid "A valid URL is required."
-msgstr ""
-
-#: core/validators.py:185
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-
-#: core/validators.py:192
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "Погано сформований XML: %s"
-
-#: core/validators.py:202
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "Невірний URL: %s"
-
-#: core/validators.py:206 core/validators.py:208
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s є пошкодженим посиланням."
-
-#: core/validators.py:214
-msgid "Enter a valid U.S. state abbreviation."
-msgstr ""
-
-#: core/validators.py:229
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:236
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr ""
-
-#: core/validators.py:255
-msgid "Please enter something for at least one field."
-msgstr ""
-
-#: core/validators.py:264 core/validators.py:275
-msgid "Please enter both fields or leave them both empty."
-msgstr ""
-
-#: core/validators.py:282
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr ""
-
-#: core/validators.py:294
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr ""
-
-#: core/validators.py:313
-msgid "Duplicate values are not allowed."
-msgstr ""
-
-#: core/validators.py:336
-#, python-format
-msgid "This value must be a power of %s."
-msgstr ""
-
-#: core/validators.py:347
-msgid "Please enter a valid decimal number."
-msgstr ""
-
-#: core/validators.py:349
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:352
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:362
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr ""
-
-#: core/validators.py:363
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr ""
-
-#: core/validators.py:376
-msgid "The format for this field is wrong."
-msgstr ""
-
-#: core/validators.py:391
-msgid "This field is invalid."
-msgstr ""
-
-#: core/validators.py:426
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr ""
-
-#: core/validators.py:429
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr ""
-
-#: core/validators.py:462
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:466
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:471
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:476
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-
-#: core/validators.py:480
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: core/validators.py:485
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-
-#: db/models/manipulators.py:302
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr ""
-
-#: db/models/fields/__init__.py:40
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
-#: db/models/fields/__init__.py:542 db/models/fields/__init__.py:553
-#: forms/__init__.py:346
-msgid "This field is required."
-msgstr "Це поле обов'язкове."
-
-#: db/models/fields/__init__.py:337
-msgid "This value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:369
-msgid "This value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:385
-#, fuzzy
-msgid "This field cannot be null."
-msgstr "Це поле обов'язкове."
-
-#: db/models/fields/__init__.py:562
-msgid "Enter a valid filename."
-msgstr ""
-
-#: db/models/fields/related.py:43
-#, python-format
-msgid "Please enter a valid %s."
-msgstr ""
-
-#: db/models/fields/related.py:579
-msgid "Separate multiple IDs with commas."
-msgstr ""
-
-#: db/models/fields/related.py:581
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: db/models/fields/related.py:625
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/__init__.py:380
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "Переконайтеся, що ваш текст меньше, ніж %s символ"
-msgstr[1] "Переконайтеся, що ваш текст меньше, ніж %s символів"
-
-#: forms/__init__.py:385
-msgid "Line breaks are not allowed here."
-msgstr "Символи нового рядку не дозволені тут."
-
-#: forms/__init__.py:480 forms/__init__.py:551 forms/__init__.py:589
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "Зробить коректний вибір; '%(data)s' немає у %(choices)s."
-
-#: forms/__init__.py:645
-msgid "The submitted file is empty."
-msgstr "Переданий файл порожній."
-
-#: forms/__init__.py:699
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "Уведіть ціле число між -32,768 та 32,768."
-
-#: forms/__init__.py:708
-msgid "Enter a positive number."
-msgstr "Уведіть позитивне число."
-
-#: forms/__init__.py:717
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "Уведіть ціле число між 0 та 32,767."
-
-#: template/defaultfilters.py:379
-msgid "yes,no,maybe"
-msgstr "так,ні,можливо"
-
-#~ msgid "Comments"
-#~ msgstr "Коментарі"
-
-#~ msgid "String (up to 50)"
-#~ msgstr "Рядок (до 50 символів)"
-
-#~ msgid "label"
-#~ msgstr "мітка"
-
-#~ msgid "package"
-#~ msgstr "пакунок"
-
-#~ msgid "packages"
-#~ msgstr "пакунки"
diff --git a/webapp/django/conf/locale/uk/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/uk/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index fae1fdc..0000000
--- a/webapp/django/conf/locale/uk/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/uk/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/uk/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 120d08d..0000000
--- a/webapp/django/conf/locale/uk/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 17:36+1000\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr ""
diff --git a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/django.mo b/webapp/django/conf/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 55e77f8..0000000
--- a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/django.po b/webapp/django/conf/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index fda4954..0000000
--- a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2636 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:10+0200\n"
-"PO-Revision-Date: 2008-04-10 11:57+0800\n"
-"Last-Translator: hutuworm <hutuworm@gmail.com>\n"
-"Language-Team: Simplified Chinese <limodou@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: CHINA\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "带有这个 %(type)s 的 %(object)s 对于给定的 %(field)s 已经存在了。"
-
-#: db/models/manipulators.py:308
-#: contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337
-#: contrib/admin/views/main.py:339
-msgid "and"
-msgstr "和"
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "请输入一个有效的 %s 。"
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "用逗号分隔多个ID。"
-
-#: db/models/fields/related.py:644
-msgid "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "按下 \"Control\"，或者在Mac上按 \"Command\" 来选择多个值。"
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural "Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "请输入有效的 %(self)s ID。值 %(value)r 无效。"
-
-#: db/models/fields/__init__.py:42
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s 带有 %(fieldname)s 已经存在。"
-
-#: db/models/fields/__init__.py:117
-#: db/models/fields/__init__.py:274
-#: db/models/fields/__init__.py:610
-#: db/models/fields/__init__.py:621
-#: oldforms/__init__.py:357
-#: newforms/fields.py:80
-#: newforms/fields.py:376
-#: newforms/fields.py:452
-#: newforms/fields.py:463
-#: newforms/models.py:178
-msgid "This field is required."
-msgstr "这个字段是必填项。"
-
-#: db/models/fields/__init__.py:367
-msgid "This value must be an integer."
-msgstr "这个值必须是一个整数。"
-
-#: db/models/fields/__init__.py:402
-msgid "This value must be either True or False."
-msgstr "这个值必须是 True 或 False。"
-
-#: db/models/fields/__init__.py:423
-msgid "This field cannot be null."
-msgstr "这个值不能为 null。"
-
-#: db/models/fields/__init__.py:457
-#: core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "输入一个 YYYY-MM-DD 格式的有效日期。"
-
-#: db/models/fields/__init__.py:526
-#: core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "输入一个 YYYY-MM-DD HH:MM 格式的有效日期/时间。"
-
-#: db/models/fields/__init__.py:630
-msgid "Enter a valid filename."
-msgstr "输入一个有效的文件名。"
-
-#: db/models/fields/__init__.py:751
-msgid "This value must be either None, True or False."
-msgstr "这个值必须是 None, True 或 False。"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "阿拉伯语"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "孟加拉语"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "加泰罗尼亚语"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "捷克语"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "威尔士语"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "丹麦语"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "德语"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "希腊语"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "英语"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "西班牙语"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "阿根廷的西班牙语"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "芬兰语"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "法语"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr "加利西亚语"
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "匈牙利语"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr "希伯来语"
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "冰岛语"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "意大利语"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "日语"
-
-#: conf/global_settings.py:58
-msgid "Kannada"
-msgstr "埃纳德语"
-
-#: conf/global_settings.py:59
-msgid "Latvian"
-msgstr "拉脱维亚语"
-
-#: conf/global_settings.py:60
-msgid "Macedonian"
-msgstr "马其顿语"
-
-#: conf/global_settings.py:61
-msgid "Dutch"
-msgstr "荷兰语"
-
-#: conf/global_settings.py:62
-msgid "Norwegian"
-msgstr "挪威语"
-
-#: conf/global_settings.py:63
-msgid "Polish"
-msgstr "波兰语"
-
-#: conf/global_settings.py:64
-msgid "Portugese"
-msgstr "葡萄牙语"
-
-#: conf/global_settings.py:65
-msgid "Brazilian"
-msgstr "巴西语"
-
-#: conf/global_settings.py:66
-msgid "Romanian"
-msgstr "罗马尼亚语"
-
-#: conf/global_settings.py:67
-msgid "Russian"
-msgstr "俄语"
-
-#: conf/global_settings.py:68
-msgid "Slovak"
-msgstr "斯洛伐克语"
-
-#: conf/global_settings.py:69
-msgid "Slovenian"
-msgstr "斯洛文尼亚语"
-
-#: conf/global_settings.py:70
-msgid "Serbian"
-msgstr "塞尔维亚语"
-
-#: conf/global_settings.py:71
-msgid "Swedish"
-msgstr "瑞典语"
-
-#: conf/global_settings.py:72
-msgid "Tamil"
-msgstr "泰米尔语"
-
-#: conf/global_settings.py:73
-msgid "Telugu"
-msgstr "泰卢固语"
-
-#: conf/global_settings.py:74
-msgid "Turkish"
-msgstr "土耳其语"
-
-#: conf/global_settings.py:75
-msgid "Ukrainian"
-msgstr "乌克兰语"
-
-#: conf/global_settings.py:76
-msgid "Simplified Chinese"
-msgstr "简体中文"
-
-#: conf/global_settings.py:77
-msgid "Traditional Chinese"
-msgstr "正体中文"
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "年"
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "月"
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "周"
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "天"
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "小时"
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "分钟"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "星期一"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "星期二"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "星期三"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "星期四"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "星期五"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "星期六"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "星期日"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "一月"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "二月"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:14
-#: utils/dates.py:27
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:15
-#: utils/dates.py:27
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "八月"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "九月"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "十月"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "十一月"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "十二月"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "一月"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "二月"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "三月"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "四月"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "五月"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "六月"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "七月"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "八月"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "九月"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "十月"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "十一月"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "十二月"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "一月"
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "二月"
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "八月"
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "九月"
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "十月"
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "十一月"
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "十二月"
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "午夜"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "中午"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "DATE_FORMAT"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "DATETIME_FORMAT"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "TIME_FORMAT"
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "YEAR_MONTH_FORMAT"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-msgstr "MONTH_DAY_FORMAT"
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "确保你输入的文本少于 %s 个字符。"
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "这里不允许换行符。"
-
-#: oldforms/__init__.py:498
-#: oldforms/__init__.py:571
-#: oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "选择一个有效的选项： '%(data)s' 不在 %(choices)s 中。"
-
-#: oldforms/__init__.py:577
-#: contrib/admin/filterspecs.py:150
-#: newforms/widgets.py:174
-msgid "Unknown"
-msgstr "未知"
-
-#: oldforms/__init__.py:577
-#: contrib/admin/filterspecs.py:143
-#: newforms/widgets.py:174
-msgid "Yes"
-msgstr "是"
-
-#: oldforms/__init__.py:577
-#: contrib/admin/filterspecs.py:143
-#: newforms/widgets.py:174
-msgid "No"
-msgstr "否"
-
-#: oldforms/__init__.py:672
-#: core/validators.py:174
-#: core/validators.py:445
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "未提交文件。请检查表单的编码类型。"
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "所提交的是空文件。"
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "输入在 -32,768 与 32,767 之间的一个整数。"
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "输入正整数。"
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "输入在 0 到 32,767 之间的一个整数。"
-
-#: contrib/localflavor/no/forms.py:15
-msgid "Enter a zip code in the format XXXX."
-msgstr "以 XXXX 的格式输入一个邮政编码。"
-
-#: contrib/localflavor/no/forms.py:36
-msgid "Enter a valid Norwegian social security number."
-msgstr "请输入一个有效的挪威社会保障号码。"
-
-#: contrib/localflavor/it/forms.py:14
-#: contrib/localflavor/fr/forms.py:17
-#: contrib/localflavor/fi/forms.py:14
-#: contrib/localflavor/de/forms.py:16
-msgid "Enter a zip code in the format XXXXX."
-msgstr "以 XXXXX 的格式输入一个邮政编码。"
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "以 XXXXXXX 或 XXX-XXXX 的格式输入一个邮政编码。"
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "北海道"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "青森"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "岩手"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "宫城"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "秋田"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "山形"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "福岛"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "茨城"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "枥木"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "群马"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "埼玉"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "千叶"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "东京"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "神奈川"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "山梨"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "长野"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "新舄"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "富山"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "石川"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "福井"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "岐阜"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "静冈"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "爱知"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "三重"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "滋贺"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "京都"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "大坂"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "兵库"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "奈良"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "和歌山"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "鸟取"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "岛根"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "冈山"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "广岛"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "山口"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "德岛"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "香川"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "爱媛"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "高知"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "福冈"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "佐贺"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "长崎"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "熊本"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "大分"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "宫崎"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "鹿儿岛"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "冲绳岛"
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "以 XXXXX-XXX 的格式输入一个邮政编码。"
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "电话号码必须为 XXX-XXX-XXXX 格式。"
-
-#: contrib/localflavor/fi/forms.py:40
-#: contrib/localflavor/fi/forms.py:46
-msgid "Enter a valid Finnish social security number."
-msgstr "输入一个有效的芬兰社会保障号码。"
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "输入一个邮政编码。前后两个部分之间必须有一个空格。"
-
-#: contrib/localflavor/de/forms.py:63
-msgid "Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format"
-msgstr "以 XXXXXXXXXXX-XXXXXXX-XXXXXXX-X 的格式输入一个有效的德国身份证号码。"
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "巴登符腾堡州"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "巴伐利亚"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "柏林"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "勃兰登堡"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "不来梅"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "汉堡"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "黑森州"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "梅克伦堡-西部米拉尼亚"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "下萨克森"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "北莱茵-威斯特法伦州"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "莱茵河法耳茨地区"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "萨尔州"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "萨克森"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "萨克森-安哈尔特"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "石勒苏益格-荷尔斯泰因"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "图林根州"
-
-#: contrib/localflavor/usa/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "以 XXXXX 或 XXXXX-XXX 的格式输入一个邮政编码。"
-
-#: contrib/localflavor/usa/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "以 XXX-XX-XXXX 的格式输入一个有效的美国社会保障号码。"
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "会话密钥"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "会话数据"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "过期时间"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "会话"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "会话"
-
-#: contrib/auth/forms.py:17
-#: contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "两个口令字段不一致。"
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "已存在一位使用该名字的用户。"
-
-#: contrib/auth/forms.py:53
-msgid "Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."
-msgstr "你的浏览器好象不允许使用cookie。登录需要使用cookie。"
-
-#: contrib/auth/forms.py:60
-#: contrib/admin/views/decorators.py:10
-msgid "Please enter a correct username and password. Note that both fields are case-sensitive."
-msgstr "请输入正确的用户名和口令。请注意两者都是大小写敏感的。"
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "该帐号未激活。"
-
-#: contrib/auth/forms.py:85
-msgid "That e-mail address doesn't have an associated user account. Are you sure you've registered?"
-msgstr "该电子邮件地址没有关联任何用户帐号。你确定已经注册过了？"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "两个'新口令'字段不一致。"
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "你的旧口令不正确。请重新输入。"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "退出登录"
-
-#: contrib/auth/models.py:38
-#: contrib/auth/models.py:57
-msgid "name"
-msgstr "名称"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "代码名称"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "权限"
-
-#: contrib/auth/models.py:43
-#: contrib/auth/models.py:58
-msgid "permissions"
-msgstr "权限"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "组"
-
-#: contrib/auth/models.py:61
-#: contrib/auth/models.py:100
-msgid "groups"
-msgstr "组"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "用户名"
-
-#: contrib/auth/models.py:90
-msgid "Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."
-msgstr "必填。不多于30个字符。只能用字母数字（字母、数字和下横线）"
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "名字"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "姓氏"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "e-mail 地址"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "口令"
-
-#: contrib/auth/models.py:94
-msgid "Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."
-msgstr "使用 '[algo]$[salt]$[hexdigest]' 或使用 <a href=\"password/\">修改密码表单</a>"
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "职员状态"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr "指明用户是否可以登录到这个管理站点。"
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "有效"
-
-#: contrib/auth/models.py:96
-msgid "Designates whether this user can log into the Django admin. Unselect this instead of deleting accounts."
-msgstr "指明用户是否可以登录到这个管理站点。以反选代替删除帐号。"
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "超级用户状态"
-
-#: contrib/auth/models.py:97
-msgid "Designates that this user has all permissions without explicitly assigning them."
-msgstr "指明用户是否可以登录到这个管理站点。"
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "上次登录"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "加入日期"
-
-#: contrib/auth/models.py:101
-msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."
-msgstr "除了手工设置权限以外，用户也会从其所在组获得赋予该组的所有权限。"
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "用户权限"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "用户"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "用户"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "个人信息"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "权限"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "重要日期"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "组"
-
-#: contrib/auth/models.py:258
-msgid "message"
-msgstr "消息"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr "th"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr "st"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr "nd"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr "rd"
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f 百万"
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f 十亿"
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f 万亿"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "一"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "二"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "三"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "四"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "五"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "六"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "七"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "八"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "九"
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "python 模型类名"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "内容类型"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "内容类型"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "重定向自"
-
-#: contrib/redirects/models.py:8
-msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'."
-msgstr "应该是一个绝对路径，不包括域名。例如：'/events/search/'。"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "重定向到"
-
-#: contrib/redirects/models.py:10
-msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'."
-msgstr "可以是绝对路径（同上）或以'http://'起始的全URL。"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "重定向"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "重定向"
-
-#: contrib/flatpages/models.py:7
-#: contrib/admin/views/doc.py:315
-msgid "URL"
-msgstr "URL"
-
-#: contrib/flatpages/models.py:8
-msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "例如：'/about/contact/'。请确保前导和结尾的斜杠。"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "标题"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "内容"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "允许评论"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "模板名称"
-
-#: contrib/flatpages/models.py:13
-msgid "Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."
-msgstr "例如：'flatpages/contact_page.html'。若未提供，系统将使用'flatpages/default.html'。"
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "请先注册"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "如果被选中，仅登录用户才可以查看此页。"
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "简单页面"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "简单页面"
-
-#: contrib/comments/models.py:67
-#: contrib/comments/models.py:166
-msgid "object ID"
-msgstr "对象ID"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "大字标题"
-
-#: contrib/comments/models.py:69
-#: contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "评论"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "等级 #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "等级 #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "等级 #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "等级 #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "等级 #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "等级 #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "等级 #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "等级 #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "是有效等级"
-
-#: contrib/comments/models.py:83
-#: contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "日期/时间已提交"
-
-#: contrib/comments/models.py:84
-#: contrib/comments/models.py:170
-msgid "is public"
-msgstr "公开"
-
-#: contrib/comments/models.py:85
-#: contrib/admin/views/doc.py:304
-msgid "IP address"
-msgstr "IP 地址"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "已删除"
-
-#: contrib/comments/models.py:86
-msgid "Check this box if the comment is inappropriate. A \"This comment has been removed\" message will be displayed instead."
-msgstr "若评论内容不妥，则选中这个检查框。该评论将被一条\"此评论已经被删除\"的消息所替换。"
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "评论"
-
-#: contrib/comments/models.py:131
-#: contrib/comments/models.py:207
-msgid "Content object"
-msgstr "内容对象"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"由 %(user)s 在 %(date)s 张贴\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "人名"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "IP 地址"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "由团队批准"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "自由评论"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "自由评论"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "得分"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "得分日期"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "Karma 得分"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "Karma 得分"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "被 %(user)s 评为 %(score)d"
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"此评论由 %(user)s 标记:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "标记日期"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "用户标志"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "用户标志"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "由 %r 标记"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "删除日期"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "管理员删除"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "管理员删除"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "被管理员 %r 删除"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr "用户名："
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Log out"
-msgstr "注销"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "口令："
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "忘记了你的口令？"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "等级"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "必须的"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "可选的"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "上传一张照片"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "评论："
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "预览评论"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "你的名字："
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "匿名用户不能投票"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "无效评论ID"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "不能给自已投票"
-
-#: contrib/comments/views/comments.py:27
-msgid "This rating is required because you've entered at least one other rating."
-msgstr "该等级必填，因为你已经输入了至少一个等级。"
-
-#: contrib/comments/views/comments.py:111
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"此评论由一个发表过少于 %(count)s 条评论的用户张贴:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"此评论由一个粗率的用户张贴：\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "只允许 POST"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "一个或多个必填字段没有提交"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "有人通过评论表单篡改（安全侵害）"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid "The comment form had an invalid 'target' parameter -- the object ID was invalid"
-msgstr "评论表单有一个无效的 'target' 参数 -- 对象 ID 无效"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "评论表单无法提供 '预览' 或 '张贴' 功能"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "域名"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "显示名称"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "站点"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "站点"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>以 %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70
-#: contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143
-#: contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "全部"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "任意日期"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "今天"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "前7天"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "本月"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "今年"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "动作时间"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "对象id"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "对象表示"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "动作标志"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "修改消息"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "日志记录"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "日志记录"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "所有日期"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "首页"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Documentation"
-msgstr "文档"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "书签"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Change password"
-msgstr "修改口令"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "文档书签"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">为了安装书签，将链接拖到你的书签工具条，\n"
-"或者鼠标右击链接，添加到你的书签中。现在你可以从这个站\n"
-"点的任何页面选择书签。注意，其中某些书签要求你在一台\n"
-"被指定为\"内部\"的计算机上查看（如果不确定你的计算机\n"
-"是否为\"内部\"的，不妨跟你的系统管理员沟通一下）。</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "关于本页面的文档"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid "Jumps you from any page to the documentation for the view that generates that page."
-msgstr "从任何页面跳转到生成该页面的view文档。"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "显示对象 ID"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid "Shows the content-type and unique ID for pages that represent a single object."
-msgstr "为那些展现单个对象的页面，显示 content-type 和唯一ID。"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "编辑该对象(当前窗口)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "跳转到用于展现单个对象的页面的管理页。"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "编辑该对象(新窗口)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "同上，但在新窗口中打开管理页面。"
-
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-msgid "Delete"
-msgstr "删除"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "保存为新的"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "保存并增加另一个"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "保存并继续编辑"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "保存"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "服务器错误"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "服务器错误(500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "服务器错误 <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "发生了一个错误。它已经通过电子邮件报告给站点管理员了，而且应该很快会得到解决。感谢您的耐心。"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " 以 %(filter_title)s"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "过滤器"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "你的数据库安装有误。确保已经创建了相应的数据库表，并确保数据库可被相关的用户读取。"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "执行"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 条结果"
-msgstr[1] "%(counter)s 条结果"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "总共 %(full_result_count)s"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-msgid "History"
-msgstr "历史"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "日期/时间"
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "用户"
-
-#: contrib/admin/templates/admin/object_history.html:20
-msgid "Action"
-msgstr "动作"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "DATE_WITH_TIME_FULL"
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "该对象没有变更历史记录。可能从未通过这个管理站点添加。"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid "Deleting the %(object_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "删除 %(object_name)s  '%(escaped_object)s' 会导致删除相关的对象，但你的帐号无权删除下列类型的对象："
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid "Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "你确认想要删除 %(object_name)s \"%(escaped_object)s\"？ 下列所有相关的项目都将被删除："
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "是的，我确定"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "显示全部"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "增加 %(name)s"
-
-#: contrib/admin/templates/admin/change_form.html:15
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "增加"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "在站点上查看"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "请修正下面的错误。"
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "排序中"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "排序："
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "欢迎，"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "页面没有找到"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "很报歉，请求页面无法找到。"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:24
-msgid "Log in"
-msgstr "登录"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "模型在 %(name)s 应用中可用。"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "修改"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "你无权修改任何东西。"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "最近动作"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "我的动作"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "无可用的"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django 站点管理员"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 管理"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "首先，输入一个用户名和口令。然后，你就可以编辑更多的用户选项。"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "用户名"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-msgid "Password"
-msgstr "口令"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Password (again)"
-msgstr "口令(重复)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr "为了校验，输入与上面相同的口令。"
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "为用户<strong>%(username)s</strong>输入一个新的口令。"
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "当前："
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "改动："
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "日期："
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "时间："
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "感谢您今天在本站花费了一些宝贵时间。"
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "重新登录"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "之所以收到这封邮件，是因为你请求了口令重设"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "在 %(site_name)s 你的用户帐号"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "你的新口令是： %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "到这个页面可以自由地修改口令："
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "你的用户名，如果已忘记的话："
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "感谢使用我们的站点！"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 团队"
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "口令重设"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "口令重设成功"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "我们已经按你所提交的邮箱地址发送了一个新的口令。你应该很快就能收到这封邮件。"
-
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:4
-msgid "Password change"
-msgstr "口令修改"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-msgstr "请输入你的旧口令，为了安全起见，接着要输入两遍新口令，以便我们校验你输入的是否正确。"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "旧口令："
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "新口令："
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "确认口令："
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "修改我的口令"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "口令修改成功"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "你的口令已修改。"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you."
-msgstr "忘记了你的口令？请在下面输入你的 e-mail 地址，我们将重设你的口令并将新口令通过邮件发送给你。"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "E-mail 地址："
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "重设我的口令"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "站点管理"
-
-#: contrib/admin/views/main.py:257
-#: contrib/admin/views/auth.py:19
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" 添加成功。"
-
-#: contrib/admin/views/main.py:261
-#: contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:24
-msgid "You may edit it again below."
-msgstr "你可以在下面再次编辑它。"
-
-#: contrib/admin/views/main.py:271
-#: contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "你可以在下面增加另一个 %s 。"
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "增加 %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s 已增加。"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "已修改 %s 。"
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s 已删除。"
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "没有字段被修改。"
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" 修改成功。"
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" 添加成功。你可以在下面再次编辑它。"
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "修改 %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "一个或多个 %(fieldname)s 在 %(name)s 中: %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "一个或多个 %(fieldname)s 在 %(name)s 中:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" 删除成功。"
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "你确认吗？"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "变更历史： %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "选择 %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "选择 %s 来修改"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "数据库错误"
-
-#: contrib/admin/views/decorators.py:62
-msgid "Please log in again, because your session has expired. Don't worry: Your submission has been saved."
-msgstr "请重新登录，因为你的会话已经过期。不用担心：你的提交已保存。"
-
-#: contrib/admin/views/decorators.py:69
-msgid "Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again."
-msgstr "似乎你的浏览器没有配置为接受 cookie 。请允许 cookie，重新装入本页面，再试一次。"
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "用户名不能包含 '@' 字符。"
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "你的 e-mail 地址不是你的用户名。换 '%s' 试试。"
-
-#: contrib/admin/views/doc.py:46
-#: contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "标签："
-
-#: contrib/admin/views/doc.py:77
-#: contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "过滤器："
-
-#: contrib/admin/views/doc.py:135
-#: contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "视图："
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "应用 %r 没有找到"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "在应用 %(label)r 里找不到模型 %(name)r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "相关的 `%(label)s.%(type)s` 对象"
-
-#: contrib/admin/views/doc.py:183
-#: contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219
-#: contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "模型："
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "相关的 `%(label)s.%(name)s` 对象"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "所有 %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "%s 的数量"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s 对象的字段"
-
-#: contrib/admin/views/doc.py:291
-#: contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303
-#: contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310
-#: contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "整数"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "布尔(True或False)"
-
-#: contrib/admin/views/doc.py:293
-#: contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "字符串(最长 %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "逗号分隔的整数"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "日期(无时间)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "日期(带时间)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "E-mail 地址"
-
-#: contrib/admin/views/doc.py:298
-#: contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "文件路径"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "小数"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "布尔值(True, False或None)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "与父模型的关系"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "电话号码"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "文本"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "时间"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "美国州名(两个大写字母)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML 文本"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s 似乎不是一个 urlpattern 对象"
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "新增用户"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr "口令修改成功。"
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "修改口令：%s"
-
-#: newforms/fields.py:103
-#: newforms/fields.py:256
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "确保你输入的文本至多 %d 个字符。"
-
-#: newforms/fields.py:105
-#: newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "确保你输入的文本至少 %d 个字符。"
-
-#: newforms/fields.py:128
-#: core/validators.py:120
-msgid "Enter a whole number."
-msgstr "输入整数。"
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "这个值必须小于或等于 %s。"
-
-#: newforms/fields.py:132
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "这个值必须小于或等于 %s。"
-
-#: newforms/fields.py:165
-msgid "Enter a valid date."
-msgstr "输入一个有效的日期。"
-
-#: newforms/fields.py:192
-msgid "Enter a valid time."
-msgstr "输入一个有效的时间。"
-
-#: newforms/fields.py:228
-msgid "Enter a valid date/time."
-msgstr "输入一个有效的日期/时间。"
-
-#: newforms/fields.py:242
-msgid "Enter a valid value."
-msgstr "输入一个有效的值。"
-
-#: newforms/fields.py:271
-#: core/validators.py:162
-msgid "Enter a valid e-mail address."
-msgstr "输入一个有效的 e-mail 地址。"
-
-#: newforms/fields.py:289
-#: newforms/fields.py:311
-msgid "Enter a valid URL."
-msgstr "输入一个有效的 URL。"
-
-#: newforms/fields.py:313
-msgid "This URL appears to be a broken link."
-msgstr "URL %s 似乎是一个已损坏的链接。"
-
-#: newforms/fields.py:362
-#: newforms/models.py:165
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "选择一个有效的选项： 该选择不在可用的选项中。"
-
-#: newforms/fields.py:380
-#: newforms/fields.py:456
-#: newforms/models.py:182
-msgid "Enter a list of values."
-msgstr "输入一系列值。"
-
-#: newforms/fields.py:389
-#: newforms/models.py:188
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "选择一个有效的选项： '%s' 不在可用的选项中。"
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "是、否、也许"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s 创建成功。"
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s 更新成功。"
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s 已被删除。"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "该值只能包含字母、数字和下划线。"
-
-#: core/validators.py:68
-msgid "This value must contain only letters, numbers, underscores, dashes or slashes."
-msgstr "该值只能包含字母、数字、下划线、反斜线和斜线。"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "该值只能包含字母、数字和下划线。"
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "这里不允许大写字母。"
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "这里不允许小写字母。"
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "只能输入用逗号分隔的数字。"
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "输入用逗号分隔的有效 e-mail 地址。"
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "请输入一个有效的 IP 地址。"
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "这里不允许输入空值。"
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "这里不允许非数字字符。"
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "该值不能全部由数字组成。"
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "这里只允许字母。"
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr "年份必须为1900之后。"
-
-#: core/validators.py:143
-#, python-format
-msgid "Invalid date: %s"
-msgstr "无效日期: %s"
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-msgstr "输入一个 HH:MM 格式的有效时间。"
-
-#: core/validators.py:178
-msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
-msgstr "请上传一张有效的图片。您所上传的文件不是图片或者是已损坏的图片。"
-
-#: core/validators.py:185
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s 所指向的并非有效图片。"
-
-#: core/validators.py:189
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "电话号码必须为 XXX-XXX-XXXX 格式。\"%s\"是无效的。"
-
-#: core/validators.py:197
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-msgstr "URL %s 所指向的并非有效 QuickTime 视频。"
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "需要一个有效的 URL。"
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"需要有效的 HTML。详细的错误是：\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "格式错误的 XML: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "无效 URL: %s"
-
-#: core/validators.py:244
-#: core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s 是一个损坏的链接。"
-
-#: core/validators.py:252
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "输入一个有效的美国州名缩写。"
-
-#: core/validators.py:266
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "注意言论！%s 不允许在这里出现。"
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "这个字段必须与 '%s' 字段相匹配。"
-
-#: core/validators.py:292
-msgid "Please enter something for at least one field."
-msgstr "请至少在一个字段上输入些什么。"
-
-#: core/validators.py:301
-#: core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "请输入两个字段或者两个字段都空着。"
-
-#: core/validators.py:320
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "如果 %(field)s 是 %(value)s 时这个字段必须给出"
-
-#: core/validators.py:333
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "如果 %(field)s 不是 %(value)s 时这个字段必须给出"
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "不允许重复值。"
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "这个值必须介于 %(lower)s 和 %(upper)s 之间。"
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "这个值必须至少为 %s"
-
-#: core/validators.py:371
-#, python-format
-msgid "This value must be no more than %s."
-msgstr "这个值不能大于 %s 。"
-
-#: core/validators.py:407
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "这个值必须是 %s 的乘方。"
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "请输入一个有效的小数。"
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural "Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "请输入一个有效的小数，最多 %s 个数字。 "
-
-#: core/validators.py:425
-#, python-format
-msgid "Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural "Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "请输入一个有效的小数，最多 %s 个数字。"
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural "Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "请输入一个有效的小数，最多 %s 个小数位。 "
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "请确保你上传的文件至少 %s 字节大。"
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "请确保你上传的文件至多 %s 字节大。"
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "该字段的格式不正确。"
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "该字段无效。"
-
-#: core/validators.py:507
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "不能从 %s 得到任何东西。"
-
-#: core/validators.py:510
-#, python-format
-msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s 返回了无效的 Content-Type 头 '%(contenttype)s'。"
-
-#: core/validators.py:543
-#, python-format
-msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)"
-msgstr "请关闭还处于打开状态的 %(tag)s 标签从第 %(line)s 行。(行开始于 \"%(start)s\"。)"
-
-#: core/validators.py:547
-#, python-format
-msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)"
-msgstr "从 %(line)s 行开始的一些文本，不允许出现在上下文中。(行开始于 \"%(start)s\"。)"
-
-#: core/validators.py:552
-#, python-format
-msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)"
-msgstr "在 %(line)s 行的\"%(attr)s\"是无效的属性。(行开始于 \"%(start)s\"。)"
-
-#: core/validators.py:557
-#, python-format
-msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)"
-msgstr "在 %(line)s 行的\"<%(tag)s>\"是无效的标签。(行开始于 \"%(start)s\"。)"
-
-#: core/validators.py:561
-#, python-format
-msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)"
-msgstr "在行 %(line)s 的标签少了一个或多个必填的属性。(行开始于 \"%(start)s\"。)"
-
-#: core/validators.py:566
-#, python-format
-msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)"
-msgstr "在行 %(line)s 的\"%(attr)s\"属性有一个无效的值。(行开始于 \"%(start)s\"。)"
-
diff --git a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 6d1bcc1..0000000
--- a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 46b3ed4..0000000
--- a/webapp/django/conf/locale/zh_CN/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,105 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-03-21 18:43+0800\n"
-"PO-Revision-Date: 2006-09-25 08:35+0800\n"
-"Last-Translator: limodou <limodou@gmail.com>\n"
-"Language-Team: limodou <limodou@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-msgid "Available %s"
-msgstr "可用 %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr "全选"
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr "增加"
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr "删除"
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-msgid "Chosen %s"
-msgstr "选中的 %s"
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr "选择并点击 "
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr "清除全部"
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid "January February March April May June July August September October November December"
-msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月"
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr "星期日 星期一 星期二 星期三 星期四 星期五 星期六"
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr "日 一 二 三 四 五 六"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:45
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80
-msgid "Now"
-msgstr "现在"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:48
-msgid "Clock"
-msgstr "时钟"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:77
-msgid "Choose a time"
-msgstr "选择一个时间"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Midnight"
-msgstr "午夜"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "6 a.m."
-msgstr "上午6点"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "Noon"
-msgstr "正午"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:168
-msgid "Cancel"
-msgstr "取消"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:111
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:162
-msgid "Today"
-msgstr "今天"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:114
-msgid "Calendar"
-msgstr "日历"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:160
-msgid "Yesterday"
-msgstr "昨天"
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:164
-msgid "Tomorrow"
-msgstr "明天"
-
diff --git a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/django.mo b/webapp/django/conf/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index e3dfa52..0000000
--- a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/django.po b/webapp/django/conf/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 1109545..0000000
--- a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,2690 +0,0 @@
-# zh_TW translation for Django.
-# Copyright (C) 2005-2007
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 10:13+0200\n"
-"PO-Revision-Date: 2007-04-05 01:32+1000\n"
-"Last-Translator: terryh <terryh.tp@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: db/models/manipulators.py:307
-#, python-format
-msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "含有 %(type)s 的 %(object)s 對給予的 %(field)s 已經存在了。"
-
-#: db/models/manipulators.py:308 contrib/admin/views/main.py:335
-#: contrib/admin/views/main.py:337 contrib/admin/views/main.py:339
-msgid "and"
-msgstr "和"
-
-#: db/models/fields/related.py:53
-#, python-format
-msgid "Please enter a valid %s."
-msgstr "請輸入正確的 %s。"
-
-#: db/models/fields/related.py:642
-msgid "Separate multiple IDs with commas."
-msgstr "用逗點分隔IDs"
-
-#: db/models/fields/related.py:644
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "按住 \"Control\", 或者在 Mac 上按 \"Command\", 以選取更多值"
-
-#: db/models/fields/related.py:691
-#, python-format
-msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid."
-msgid_plural ""
-"Please enter valid %(self)s IDs. The values %(value)r are invalid."
-msgstr[0] "請輸入有效的 %(self)s ID。輸入值 %(value)r 是錯誤的。"
-msgstr[1] ""
-
-#: db/models/fields/__init__.py:42
-#, python-format
-msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)s 有 %(fieldname)s 已經存在。"
-
-#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274
-#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621
-#: oldforms/__init__.py:357 newforms/fields.py:80 newforms/fields.py:376
-#: newforms/fields.py:452 newforms/fields.py:463 newforms/models.py:178
-msgid "This field is required."
-msgstr "這個欄位是必須的。"
-
-#: db/models/fields/__init__.py:367
-msgid "This value must be an integer."
-msgstr "這個值必須是整數。"
-
-#: db/models/fields/__init__.py:402
-msgid "This value must be either True or False."
-msgstr "這個值必須是 True 或 False。"
-
-#: db/models/fields/__init__.py:423
-msgid "This field cannot be null."
-msgstr "這個值不能是 null。"
-
-#: db/models/fields/__init__.py:457 core/validators.py:148
-msgid "Enter a valid date in YYYY-MM-DD format."
-msgstr "輸入一個 YYYY-MM-DD 格式的有效日期。"
-
-#: db/models/fields/__init__.py:526 core/validators.py:157
-msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
-msgstr "輸入一個 YYYY-MM-DD HH:MM 格式的有效日期/時間。"
-
-#: db/models/fields/__init__.py:630
-msgid "Enter a valid filename."
-msgstr "輸入一個有效的檔名。"
-
-#: db/models/fields/__init__.py:751
-msgid "This value must be either None, True or False."
-msgstr "這個值必須是 None, True 或 False。"
-
-#: conf/global_settings.py:39
-msgid "Arabic"
-msgstr "阿拉伯語"
-
-#: conf/global_settings.py:40
-msgid "Bengali"
-msgstr "孟加拉語"
-
-#: conf/global_settings.py:41
-msgid "Catalan"
-msgstr "嘉泰羅尼亞語"
-
-#: conf/global_settings.py:42
-msgid "Czech"
-msgstr "捷克語"
-
-#: conf/global_settings.py:43
-msgid "Welsh"
-msgstr "威爾斯語"
-
-#: conf/global_settings.py:44
-msgid "Danish"
-msgstr "丹麥語"
-
-#: conf/global_settings.py:45
-msgid "German"
-msgstr "德語"
-
-#: conf/global_settings.py:46
-msgid "Greek"
-msgstr "希臘語"
-
-#: conf/global_settings.py:47
-msgid "English"
-msgstr "英語"
-
-#: conf/global_settings.py:48
-msgid "Spanish"
-msgstr "西班牙語"
-
-#: conf/global_settings.py:49
-msgid "Argentinean Spanish"
-msgstr "阿根廷的西班牙語"
-
-#: conf/global_settings.py:50
-msgid "Finnish"
-msgstr "芬蘭語"
-
-#: conf/global_settings.py:51
-msgid "French"
-msgstr "法語"
-
-#: conf/global_settings.py:52
-msgid "Galician"
-msgstr "加里西亞語"
-
-#: conf/global_settings.py:53
-msgid "Hungarian"
-msgstr "匈牙利語"
-
-#: conf/global_settings.py:54
-msgid "Hebrew"
-msgstr "希伯來語"
-
-#: conf/global_settings.py:55
-msgid "Icelandic"
-msgstr "冰島語"
-
-#: conf/global_settings.py:56
-msgid "Italian"
-msgstr "義大利語"
-
-#: conf/global_settings.py:57
-msgid "Japanese"
-msgstr "日語"
-
-#: conf/global_settings.py:58
-msgid "Kannada"
-msgstr "坎那達語"
-
-#: conf/global_settings.py:59
-msgid "Latvian"
-msgstr "拉脫維亞語"
-
-#: conf/global_settings.py:60
-msgid "Macedonian"
-msgstr "馬其頓語"
-
-#: conf/global_settings.py:61
-msgid "Dutch"
-msgstr "荷蘭語"
-
-#: conf/global_settings.py:62
-msgid "Norwegian"
-msgstr "挪威語"
-
-#: conf/global_settings.py:63
-msgid "Polish"
-msgstr "波蘭嶼"
-
-#: conf/global_settings.py:64
-msgid "Portugese"
-msgstr "葡萄牙語"
-
-#: conf/global_settings.py:65
-msgid "Brazilian"
-msgstr "巴西語"
-
-#: conf/global_settings.py:66
-msgid "Romanian"
-msgstr "羅馬尼亞語"
-
-#: conf/global_settings.py:67
-msgid "Russian"
-msgstr "俄語"
-
-#: conf/global_settings.py:68
-msgid "Slovak"
-msgstr "斯洛伐克語"
-
-#: conf/global_settings.py:69
-msgid "Slovenian"
-msgstr "斯洛維尼亞語"
-
-#: conf/global_settings.py:70
-msgid "Serbian"
-msgstr "塞爾維亞語"
-
-#: conf/global_settings.py:71
-msgid "Swedish"
-msgstr "瑞典語"
-
-#: conf/global_settings.py:72
-msgid "Tamil"
-msgstr "坦米爾語"
-
-#: conf/global_settings.py:73
-msgid "Telugu"
-msgstr "泰盧固語"
-
-#: conf/global_settings.py:74
-msgid "Turkish"
-msgstr "土耳其語"
-
-#: conf/global_settings.py:75
-msgid "Ukrainian"
-msgstr "烏克蘭語"
-
-#: conf/global_settings.py:76
-msgid "Simplified Chinese"
-msgstr "簡體中文"
-
-#: conf/global_settings.py:77
-msgid "Traditional Chinese"
-msgstr "繁體中文"
-
-#: utils/timesince.py:12
-msgid "year"
-msgid_plural "years"
-msgstr[0] "年"
-msgstr[1] ""
-
-#: utils/timesince.py:13
-msgid "month"
-msgid_plural "months"
-msgstr[0] "月"
-msgstr[1] ""
-
-#: utils/timesince.py:14
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "週"
-msgstr[1] ""
-
-#: utils/timesince.py:15
-msgid "day"
-msgid_plural "days"
-msgstr[0] "天"
-msgstr[1] ""
-
-#: utils/timesince.py:16
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "小時"
-msgstr[1] ""
-
-#: utils/timesince.py:17
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "分鐘"
-msgstr[1] ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "星期一"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "星期二"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "星期三"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "星期四"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "星期五"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "星期六"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "星期日"
-
-#: utils/dates.py:14
-msgid "January"
-msgstr "一月"
-
-#: utils/dates.py:14
-msgid "February"
-msgstr "二月"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:14 utils/dates.py:27
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:15 utils/dates.py:27
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:15
-msgid "August"
-msgstr "八月"
-
-#: utils/dates.py:15
-msgid "September"
-msgstr "九月"
-
-#: utils/dates.py:15
-msgid "October"
-msgstr "十月"
-
-#: utils/dates.py:15
-msgid "November"
-msgstr "十一月"
-
-#: utils/dates.py:16
-msgid "December"
-msgstr "十二月"
-
-#: utils/dates.py:19
-msgid "jan"
-msgstr "一月"
-
-#: utils/dates.py:19
-msgid "feb"
-msgstr "二月"
-
-#: utils/dates.py:19
-msgid "mar"
-msgstr "三月"
-
-#: utils/dates.py:19
-msgid "apr"
-msgstr "四月"
-
-#: utils/dates.py:19
-msgid "may"
-msgstr "五月"
-
-#: utils/dates.py:19
-msgid "jun"
-msgstr "六月"
-
-#: utils/dates.py:20
-msgid "jul"
-msgstr "七月"
-
-#: utils/dates.py:20
-msgid "aug"
-msgstr "八月"
-
-#: utils/dates.py:20
-msgid "sep"
-msgstr "九月"
-
-#: utils/dates.py:20
-msgid "oct"
-msgstr "十月"
-
-#: utils/dates.py:20
-msgid "nov"
-msgstr "十一月"
-
-#: utils/dates.py:20
-msgid "dec"
-msgstr "十二月"
-
-#: utils/dates.py:27
-msgid "Jan."
-msgstr "一月"
-
-#: utils/dates.py:27
-msgid "Feb."
-msgstr "二月"
-
-#: utils/dates.py:28
-msgid "Aug."
-msgstr "八月"
-
-#: utils/dates.py:28
-msgid "Sept."
-msgstr "九月"
-
-#: utils/dates.py:28
-msgid "Oct."
-msgstr "十月"
-
-#: utils/dates.py:28
-msgid "Nov."
-msgstr "十一月"
-
-#: utils/dates.py:28
-msgid "Dec."
-msgstr "十二月"
-
-#: utils/dateformat.py:40
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:41
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:46
-msgid "PM"
-msgstr ""
-
-
-#: utils/dateformat.py:47
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:95
-msgid "midnight"
-msgstr "午夜"
-
-#: utils/dateformat.py:97
-msgid "noon"
-msgstr "中午"
-
-#: utils/translation/trans_real.py:358
-msgid "DATE_FORMAT"
-msgstr "N j, Y"
-
-#: utils/translation/trans_real.py:359
-msgid "DATETIME_FORMAT"
-msgstr "N j, Y, P"
-
-#: utils/translation/trans_real.py:360
-msgid "TIME_FORMAT"
-msgstr "P"
-
-
-#: utils/translation/trans_real.py:376
-msgid "YEAR_MONTH_FORMAT"
-msgstr "F Y"
-
-#: utils/translation/trans_real.py:377
-msgid "MONTH_DAY_FORMAT"
-
-msgstr "F j"
-
-#: oldforms/__init__.py:392
-#, python-format
-msgid "Ensure your text is less than %s character."
-msgid_plural "Ensure your text is less than %s characters."
-msgstr[0] "確定你輸入的文字少於 %s 個字。"
-msgstr[1] ""
-
-#: oldforms/__init__.py:397
-msgid "Line breaks are not allowed here."
-msgstr "這裡不允許斷行"
-
-#: oldforms/__init__.py:498 oldforms/__init__.py:571 oldforms/__init__.py:610
-#, python-format
-msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "選擇一個有效的選項: '%(data)s' 不在 %(choices)s 中。"
-
-#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:150
-#: newforms/widgets.py:174
-msgid "Unknown"
-msgstr "未知"
-
-#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143
-#: newforms/widgets.py:174
-msgid "Yes"
-msgstr "是"
-
-#: oldforms/__init__.py:577 contrib/admin/filterspecs.py:143
-#: newforms/widgets.py:174
-msgid "No"
-msgstr "否"
-
-#: oldforms/__init__.py:672 core/validators.py:174 core/validators.py:445
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "没有檔案被提交。請檢查表單的編碼類型。"
-
-#: oldforms/__init__.py:674
-msgid "The submitted file is empty."
-msgstr "提交的檔案是空的。"
-
-#: oldforms/__init__.py:730
-msgid "Enter a whole number between -32,768 and 32,767."
-msgstr "輸入 -32,768 到 32,768 之間的一個整數。"
-
-#: oldforms/__init__.py:740
-msgid "Enter a positive number."
-msgstr "輸入正整數。"
-
-#: oldforms/__init__.py:750
-msgid "Enter a whole number between 0 and 32,767."
-msgstr "輸入 0 到 32,768 之間的一個整數。"
-
-#: contrib/localflavor/no/forms.py:15
-msgid "Enter a zip code in the format XXXX."
-msgstr "用 XXXX 的格式輸入郵遞區號。"
-
-#: contrib/localflavor/no/forms.py:36
-msgid "Enter a valid Norwegian social security number."
-msgstr "請輸入一個有效的挪威身份證號碼。"
-
-#: contrib/localflavor/it/forms.py:14 contrib/localflavor/fr/forms.py:17
-#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16
-msgid "Enter a zip code in the format XXXXX."
-msgstr "用 XXXXX 的格式輸入郵遞區號。"
-
-#: contrib/localflavor/jp/forms.py:21
-msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
-msgstr "用 XXXXXXX 或 XXX-XXXX 的格式輸入郵遞區號。"
-
-#: contrib/localflavor/jp/jp_prefectures.py:4
-msgid "Hokkaido"
-msgstr "北海道"
-
-#: contrib/localflavor/jp/jp_prefectures.py:5
-msgid "Aomori"
-msgstr "青森"
-
-#: contrib/localflavor/jp/jp_prefectures.py:6
-msgid "Iwate"
-msgstr "岩手"
-
-#: contrib/localflavor/jp/jp_prefectures.py:7
-msgid "Miyagi"
-msgstr "宮城縣"
-
-#: contrib/localflavor/jp/jp_prefectures.py:8
-msgid "Akita"
-msgstr "秋田"
-
-#: contrib/localflavor/jp/jp_prefectures.py:9
-msgid "Yamagata"
-msgstr "山形"
-
-#: contrib/localflavor/jp/jp_prefectures.py:10
-msgid "Fukushima"
-msgstr "福島"
-
-#: contrib/localflavor/jp/jp_prefectures.py:11
-msgid "Ibaraki"
-msgstr "茨城"
-
-#: contrib/localflavor/jp/jp_prefectures.py:12
-msgid "Tochigi"
-msgstr "櫪木"
-
-#: contrib/localflavor/jp/jp_prefectures.py:13
-msgid "Gunma"
-msgstr "群馬"
-
-#: contrib/localflavor/jp/jp_prefectures.py:14
-msgid "Saitama"
-msgstr "埼玉"
-
-#: contrib/localflavor/jp/jp_prefectures.py:15
-msgid "Chiba"
-msgstr "千葉"
-
-#: contrib/localflavor/jp/jp_prefectures.py:16
-msgid "Tokyo"
-msgstr "東京"
-
-#: contrib/localflavor/jp/jp_prefectures.py:17
-msgid "Kanagawa"
-msgstr "神奈川"
-
-#: contrib/localflavor/jp/jp_prefectures.py:18
-msgid "Yamanashi"
-msgstr "山梨"
-
-#: contrib/localflavor/jp/jp_prefectures.py:19
-msgid "Nagano"
-msgstr "長野"
-
-#: contrib/localflavor/jp/jp_prefectures.py:20
-msgid "Niigata"
-msgstr "新瀉"
-
-#: contrib/localflavor/jp/jp_prefectures.py:21
-msgid "Toyama"
-msgstr "富山"
-
-#: contrib/localflavor/jp/jp_prefectures.py:22
-msgid "Ishikawa"
-msgstr "石川"
-
-#: contrib/localflavor/jp/jp_prefectures.py:23
-msgid "Fukui"
-msgstr "福井"
-
-#: contrib/localflavor/jp/jp_prefectures.py:24
-msgid "Gifu"
-msgstr "岐阜"
-
-#: contrib/localflavor/jp/jp_prefectures.py:25
-msgid "Shizuoka"
-msgstr "靜岡"
-
-#: contrib/localflavor/jp/jp_prefectures.py:26
-msgid "Aichi"
-msgstr "愛知"
-
-#: contrib/localflavor/jp/jp_prefectures.py:27
-msgid "Mie"
-msgstr "三重"
-
-#: contrib/localflavor/jp/jp_prefectures.py:28
-msgid "Shiga"
-msgstr "滋賀"
-
-#: contrib/localflavor/jp/jp_prefectures.py:29
-msgid "Kyoto"
-msgstr "京都"
-
-#: contrib/localflavor/jp/jp_prefectures.py:30
-msgid "Osaka"
-msgstr "大阪"
-
-#: contrib/localflavor/jp/jp_prefectures.py:31
-msgid "Hyogo"
-msgstr "兵庫"
-
-#: contrib/localflavor/jp/jp_prefectures.py:32
-msgid "Nara"
-msgstr "奈良"
-
-#: contrib/localflavor/jp/jp_prefectures.py:33
-msgid "Wakayama"
-msgstr "和歌山"
-
-#: contrib/localflavor/jp/jp_prefectures.py:34
-msgid "Tottori"
-msgstr "鳥取"
-
-#: contrib/localflavor/jp/jp_prefectures.py:35
-msgid "Shimane"
-msgstr "島根"
-
-#: contrib/localflavor/jp/jp_prefectures.py:36
-msgid "Okayama"
-msgstr "岡山"
-
-#: contrib/localflavor/jp/jp_prefectures.py:37
-msgid "Hiroshima"
-msgstr "廣島"
-
-#: contrib/localflavor/jp/jp_prefectures.py:38
-msgid "Yamaguchi"
-msgstr "山口"
-
-#: contrib/localflavor/jp/jp_prefectures.py:39
-msgid "Tokushima"
-msgstr "德島"
-
-#: contrib/localflavor/jp/jp_prefectures.py:40
-msgid "Kagawa"
-msgstr "香川"
-
-#: contrib/localflavor/jp/jp_prefectures.py:41
-msgid "Ehime"
-msgstr "愛媛縣"
-
-#: contrib/localflavor/jp/jp_prefectures.py:42
-msgid "Kochi"
-msgstr "高知"
-
-#: contrib/localflavor/jp/jp_prefectures.py:43
-msgid "Fukuoka"
-msgstr "福岡"
-
-#: contrib/localflavor/jp/jp_prefectures.py:44
-msgid "Saga"
-msgstr "左賀"
-
-#: contrib/localflavor/jp/jp_prefectures.py:45
-msgid "Nagasaki"
-msgstr "長崎"
-
-#: contrib/localflavor/jp/jp_prefectures.py:46
-msgid "Kumamoto"
-msgstr "熊本"
-
-#: contrib/localflavor/jp/jp_prefectures.py:47
-msgid "Oita"
-msgstr "大分"
-
-#: contrib/localflavor/jp/jp_prefectures.py:48
-msgid "Miyazaki"
-msgstr "宫崎"
-
-#: contrib/localflavor/jp/jp_prefectures.py:49
-msgid "Kagoshima"
-msgstr "鹿兒島"
-
-#: contrib/localflavor/jp/jp_prefectures.py:50
-msgid "Okinawa"
-msgstr "琉球"
-
-#: contrib/localflavor/br/forms.py:18
-msgid "Enter a zip code in the format XXXXX-XXX."
-msgstr "用 XXXXX-XXX 的格式輸入郵遞區號。"
-
-#: contrib/localflavor/br/forms.py:30
-msgid "Phone numbers must be in XX-XXXX-XXXX format."
-msgstr "電話號碼必須是 XX-XXXX-XXXX 格式。"
-
-#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:46
-msgid "Enter a valid Finnish social security number."
-msgstr "請輸入一個有效的芬蘭身份證號碼。"
-
-#: contrib/localflavor/uk/forms.py:18
-msgid "Enter a postcode. A space is required between the two postcode parts."
-msgstr "輸入郵政區號。兩組的必須要有空格"
-
-#: contrib/localflavor/de/forms.py:63
-msgid ""
-"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
-"format"
-msgstr ""
-"以 XXXXXXXXXXX-XXXXXXX-XXXXXXX-X 的格式輸入一個有效的德國身份證號碼。"
-
-
-#: contrib/localflavor/de/de_states.py:5
-msgid "Baden-Wuerttemberg"
-msgstr "巴登符騰堡"
-
-#: contrib/localflavor/de/de_states.py:6
-msgid "Bavaria"
-msgstr "巴伐利亞"
-
-#: contrib/localflavor/de/de_states.py:7
-msgid "Berlin"
-msgstr "柏林"
-
-#: contrib/localflavor/de/de_states.py:8
-msgid "Brandenburg"
-msgstr "勃蘭登堡"
-
-#: contrib/localflavor/de/de_states.py:9
-msgid "Bremen"
-msgstr "布萊梅"
-
-#: contrib/localflavor/de/de_states.py:10
-msgid "Hamburg"
-msgstr "漢堡"
-
-#: contrib/localflavor/de/de_states.py:11
-msgid "Hessen"
-msgstr "黑森"
-
-#: contrib/localflavor/de/de_states.py:12
-msgid "Mecklenburg-Western Pomerania"
-msgstr "梅克倫堡-前波莫瑞"
-
-#: contrib/localflavor/de/de_states.py:13
-msgid "Lower Saxony"
-msgstr "下薩克森"
-
-#: contrib/localflavor/de/de_states.py:14
-msgid "North Rhine-Westphalia"
-msgstr "北萊茵-威斯特法倫"
-
-#: contrib/localflavor/de/de_states.py:15
-msgid "Rhineland-Palatinate"
-msgstr "萊茵蘭-普法爾茨"
-
-#: contrib/localflavor/de/de_states.py:16
-msgid "Saarland"
-msgstr "薩爾蘭"
-
-#: contrib/localflavor/de/de_states.py:17
-msgid "Saxony"
-msgstr "薩克森"
-
-#: contrib/localflavor/de/de_states.py:18
-msgid "Saxony-Anhalt"
-msgstr "薩克森-安哈爾特"
-
-#: contrib/localflavor/de/de_states.py:19
-msgid "Schleswig-Holstein"
-msgstr "石勒蘇益格-荷爾斯泰因"
-
-#: contrib/localflavor/de/de_states.py:20
-msgid "Thuringia"
-msgstr "圖林根"
-
-#: contrib/localflavor/usa/forms.py:18
-msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
-msgstr "以 XXXXX 或 XXXXX-XXX 的格式輸入一個郵遞區號。"
-
-#: contrib/localflavor/usa/forms.py:51
-msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
-msgstr "以 XXX-XX-XXXX 的格式輸入一有效的美国身份證字號。"
-
-#: contrib/sessions/models.py:68
-msgid "session key"
-msgstr "session 鍵值"
-
-#: contrib/sessions/models.py:69
-msgid "session data"
-msgstr "session 資料"
-
-#: contrib/sessions/models.py:70
-msgid "expire date"
-msgstr "到期日期"
-
-#: contrib/sessions/models.py:74
-msgid "session"
-msgstr "session"
-
-#: contrib/sessions/models.py:75
-msgid "sessions"
-msgstr "sessions"
-
-#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
-msgid "The two password fields didn't match."
-msgstr "兩個密碼欄位不同。"
-
-#: contrib/auth/forms.py:25
-msgid "A user with that username already exists."
-msgstr "一個相同名稱的使用者已經存在。"
-
-#: contrib/auth/forms.py:53
-msgid ""
-"Your Web browser doesn't appear to have cookies enabled. Cookies are "
-"required for logging in."
-msgstr "你的Web瀏覽器好象不允許使用cookie。登入時需要使用cookie。"
-
-#: contrib/auth/forms.py:60 contrib/admin/views/decorators.py:10
-msgid ""
-"Please enter a correct username and password. Note that both fields are case-"
-"sensitive."
-msgstr "請輸入有效的使用者名稱與密碼。請注意兩個欄位都有分大小寫"
-
-#: contrib/auth/forms.py:62
-msgid "This account is inactive."
-msgstr "這個帳戶未啟用"
-
-#: contrib/auth/forms.py:85
-msgid ""
-"That e-mail address doesn't have an associated user account. Are you sure "
-"you've registered?"
-msgstr "這個電子郵件地址没有和任何用户帳號有關聯。你確定你已經註冊了？"
-
-#: contrib/auth/forms.py:117
-msgid "The two 'new password' fields didn't match."
-msgstr "兩個'新密碼'欄位不一致"
-
-#: contrib/auth/forms.py:124
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "你的舊密碼不正確。請重新輸入。"
-
-#: contrib/auth/views.py:39
-msgid "Logged out"
-msgstr "登出"
-
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
-msgid "name"
-msgstr "名稱"
-
-#: contrib/auth/models.py:40
-msgid "codename"
-msgstr "代碼"
-
-#: contrib/auth/models.py:42
-msgid "permission"
-msgstr "權限"
-
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
-msgid "permissions"
-msgstr "權限"
-
-#: contrib/auth/models.py:60
-msgid "group"
-msgstr "群組"
-
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
-msgid "groups"
-msgstr "群組"
-
-#: contrib/auth/models.py:90
-msgid "username"
-msgstr "使用者名稱"
-
-#: contrib/auth/models.py:90
-msgid ""
-"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
-"digits and underscores)."
-msgstr "必須。不超過30。只能用能字母數字與底線(字母、數字和底線)。"
-
-#: contrib/auth/models.py:91
-msgid "first name"
-msgstr "名字"
-
-#: contrib/auth/models.py:92
-msgid "last name"
-msgstr "姓氏"
-
-#: contrib/auth/models.py:93
-msgid "e-mail address"
-msgstr "電子郵件地址"
-
-#: contrib/auth/models.py:94
-msgid "password"
-msgstr "密碼"
-
-#: contrib/auth/models.py:94
-msgid ""
-"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
-"password form</a>."
-msgstr "使用 '[algo]$[salt]$[hexdigest]' 或是 <a href=\"password/\">修改密碼表單</a>."
-
-#: contrib/auth/models.py:95
-msgid "staff status"
-msgstr "工作人員狀態"
-
-#: contrib/auth/models.py:95
-msgid "Designates whether the user can log into this admin site."
-msgstr "指定是否使用者可以登入此管理網站。"
-
-#: contrib/auth/models.py:96
-msgid "active"
-msgstr "活動中"
-
-#: contrib/auth/models.py:96
-msgid ""
-"Designates whether this user can log into the Django admin. Unselect this "
-"instead of deleting accounts."
-msgstr "指定是否使用者可以登入此管理網站。用取消選擇來取代刪除帳號。"
-
-#: contrib/auth/models.py:97
-msgid "superuser status"
-msgstr "超級使用者狀態"
-
-#: contrib/auth/models.py:97
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "指定是否使用者可以登入到這個管理網站"
-
-#: contrib/auth/models.py:98
-msgid "last login"
-msgstr "上次登入"
-
-#: contrib/auth/models.py:99
-msgid "date joined"
-msgstr "加入日期"
-
-#: contrib/auth/models.py:101
-msgid ""
-"In addition to the permissions manually assigned, this user will also get "
-"all permissions granted to each group he/she is in."
-msgstr "除了手動指定的權限之外，這個使用者也會得到其群組擁有的所有權限。"
-
-#: contrib/auth/models.py:102
-msgid "user permissions"
-msgstr "使用者權限"
-
-#: contrib/auth/models.py:105
-msgid "user"
-msgstr "使用者"
-
-#: contrib/auth/models.py:106
-msgid "users"
-msgstr "使用者"
-
-#: contrib/auth/models.py:111
-msgid "Personal info"
-msgstr "個人資訊"
-
-#: contrib/auth/models.py:112
-msgid "Permissions"
-msgstr "權限"
-
-#: contrib/auth/models.py:113
-msgid "Important dates"
-msgstr "重要日期"
-
-#: contrib/auth/models.py:114
-msgid "Groups"
-msgstr "群組"
-
-#: contrib/auth/models.py:258
-msgid "message"
-msgstr "訊息"
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "th"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "st"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "nd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:17
-msgid "rd"
-msgstr ""
-
-#: contrib/humanize/templatetags/humanize.py:47
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f 百萬"
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:50
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f 十億"
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:53
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f 兆"
-msgstr[1] ""
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "one"
-msgstr "一"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "two"
-msgstr "二"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "three"
-msgstr "三"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "four"
-msgstr "四"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "five"
-msgstr "五"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "six"
-msgstr "六"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "seven"
-msgstr "七"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "eight"
-msgstr "八"
-
-#: contrib/humanize/templatetags/humanize.py:68
-msgid "nine"
-msgstr "九"
-
-#: contrib/contenttypes/models.py:36
-msgid "python model class name"
-msgstr "python模組名稱"
-
-#: contrib/contenttypes/models.py:39
-msgid "content type"
-msgstr "內容類型"
-
-#: contrib/contenttypes/models.py:40
-msgid "content types"
-msgstr "內容類型"
-
-#: contrib/redirects/models.py:7
-msgid "redirect from"
-msgstr "重導向自"
-
-#: contrib/redirects/models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "應該是一個絕對路徑，不包括網域。例如：'/events/search/'。"
-
-#: contrib/redirects/models.py:9
-msgid "redirect to"
-msgstr "重導向到"
-
-#: contrib/redirects/models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "此可為一絕對路徑 (如上) 或一個以 'http://' 開頭的完整 URL。"
-
-#: contrib/redirects/models.py:13
-msgid "redirect"
-msgstr "重導向"
-
-#: contrib/redirects/models.py:14
-msgid "redirects"
-msgstr "重導向"
-
-#: contrib/flatpages/models.py:7 contrib/admin/views/doc.py:315
-msgid "URL"
-msgstr "URL"
-
-#: contrib/flatpages/models.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "例如： '/about/contact/'。開頭與結束都一定要有斜線。"
-
-#: contrib/flatpages/models.py:9
-msgid "title"
-msgstr "標題"
-
-#: contrib/flatpages/models.py:10
-msgid "content"
-msgstr "內容"
-
-#: contrib/flatpages/models.py:11
-msgid "enable comments"
-msgstr "啟用評論"
-
-#: contrib/flatpages/models.py:12
-msgid "template name"
-msgstr "模板名稱"
-
-#: contrib/flatpages/models.py:13
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr "例如： 'flatpages/contact_page'。如果沒有提供它，系統會使用 'flatpages/default.html'。"
-
-#: contrib/flatpages/models.py:14
-msgid "registration required"
-msgstr "需要註冊"
-
-#: contrib/flatpages/models.py:14
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "如果此項被選取，則只有登入的使用者可以檢視頁面。"
-
-#: contrib/flatpages/models.py:18
-msgid "flat page"
-msgstr "簡平頁面"
-
-#: contrib/flatpages/models.py:19
-msgid "flat pages"
-msgstr "簡平頁面"
-
-#: contrib/comments/models.py:67 contrib/comments/models.py:166
-msgid "object ID"
-msgstr "物件 ID"
-
-#: contrib/comments/models.py:68
-msgid "headline"
-msgstr "頭條"
-
-#: contrib/comments/models.py:69 contrib/comments/models.py:90
-#: contrib/comments/models.py:167
-msgid "comment"
-msgstr "評論"
-
-#: contrib/comments/models.py:70
-msgid "rating #1"
-msgstr "等級 #1"
-
-#: contrib/comments/models.py:71
-msgid "rating #2"
-msgstr "等級 #2"
-
-#: contrib/comments/models.py:72
-msgid "rating #3"
-msgstr "等級 #3"
-
-#: contrib/comments/models.py:73
-msgid "rating #4"
-msgstr "等級 #4"
-
-#: contrib/comments/models.py:74
-msgid "rating #5"
-msgstr "等級 #5"
-
-#: contrib/comments/models.py:75
-msgid "rating #6"
-msgstr "等級 #6"
-
-#: contrib/comments/models.py:76
-msgid "rating #7"
-msgstr "等級 #7"
-
-#: contrib/comments/models.py:77
-msgid "rating #8"
-msgstr "等級 #8"
-
-#: contrib/comments/models.py:82
-msgid "is valid rating"
-msgstr "是有效的等級"
-
-#: contrib/comments/models.py:83 contrib/comments/models.py:169
-msgid "date/time submitted"
-msgstr "日期/時間已發送"
-
-#: contrib/comments/models.py:84 contrib/comments/models.py:170
-msgid "is public"
-msgstr "是公開的"
-
-#: contrib/comments/models.py:85 contrib/admin/views/doc.py:289
-msgid "IP address"
-msgstr "IP 位址"
-
-#: contrib/comments/models.py:86
-msgid "is removed"
-msgstr "已移除"
-
-#: contrib/comments/models.py:86
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr "如果此評論不恰當則選取這個方塊，其將以 \"此評論已被移除\" 訊息取代。"
-
-#: contrib/comments/models.py:91
-msgid "comments"
-msgstr "評論"
-
-#: contrib/comments/models.py:131 contrib/comments/models.py:207
-msgid "Content object"
-msgstr "內容物件"
-
-#: contrib/comments/models.py:159
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"由 %(user)s 在 %(date)s 張貼\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: contrib/comments/models.py:168
-msgid "person's name"
-msgstr "人名"
-
-#: contrib/comments/models.py:171
-msgid "ip address"
-msgstr "ip 位址"
-
-#: contrib/comments/models.py:173
-msgid "approved by staff"
-msgstr "由工作人員核准"
-
-#: contrib/comments/models.py:176
-msgid "free comment"
-msgstr "自由評論"
-
-#: contrib/comments/models.py:177
-msgid "free comments"
-msgstr "自由評論"
-
-#: contrib/comments/models.py:233
-msgid "score"
-msgstr "分數"
-
-#: contrib/comments/models.py:234
-msgid "score date"
-msgstr "分數日期"
-
-#: contrib/comments/models.py:237
-msgid "karma score"
-msgstr "Karma 分數"
-
-#: contrib/comments/models.py:238
-msgid "karma scores"
-msgstr "Karma 分數"
-
-#: contrib/comments/models.py:242
-#, python-format
-msgid "%(score)d rating by %(user)s"
-msgstr "被 %(user)s 定級為 %(score)d "
-
-#: contrib/comments/models.py:258
-#, python-format
-msgid ""
-"This comment was flagged by %(user)s:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"此評論被 %(user)s 標識:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/models.py:265
-msgid "flag date"
-msgstr "標識日期"
-
-#: contrib/comments/models.py:268
-msgid "user flag"
-msgstr "使用者旗標"
-
-#: contrib/comments/models.py:269
-msgid "user flags"
-msgstr "使用者旗標"
-
-#: contrib/comments/models.py:273
-#, python-format
-msgid "Flag by %r"
-msgstr "被 %r 標識"
-
-#: contrib/comments/models.py:278
-msgid "deletion date"
-msgstr "刪除日期"
-
-#: contrib/comments/models.py:280
-msgid "moderator deletion"
-msgstr "仲裁刪除"
-
-#: contrib/comments/models.py:281
-msgid "moderator deletions"
-msgstr "仲裁刪除"
-
-#: contrib/comments/models.py:285
-#, python-format
-msgid "Moderator deletion by %r"
-msgstr "由 %r 仲裁刪除"
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:17
-msgid "Username:"
-msgstr ""
-
-#: contrib/comments/templates/comments/form.html:6
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Log out"
-msgstr "登出"
-
-#: contrib/comments/templates/comments/form.html:8
-#: contrib/admin/templates/admin/login.html:20
-msgid "Password:"
-msgstr "密碼"
-
-#: contrib/comments/templates/comments/form.html:8
-msgid "Forgotten your password?"
-msgstr "忘記密碼"
-
-#: contrib/comments/templates/comments/form.html:12
-msgid "Ratings"
-msgstr "等級"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Required"
-msgstr "必須的"
-
-#: contrib/comments/templates/comments/form.html:12
-#: contrib/comments/templates/comments/form.html:23
-msgid "Optional"
-msgstr "可選的"
-
-#: contrib/comments/templates/comments/form.html:23
-msgid "Post a photo"
-msgstr "上傳一張照片"
-
-#: contrib/comments/templates/comments/form.html:28
-#: contrib/comments/templates/comments/freeform.html:5
-msgid "Comment:"
-msgstr "評論:"
-
-#: contrib/comments/templates/comments/form.html:35
-#: contrib/comments/templates/comments/freeform.html:10
-msgid "Preview comment"
-msgstr "評論預覽"
-
-#: contrib/comments/templates/comments/freeform.html:4
-msgid "Your name:"
-msgstr "你的名字:"
-
-#: contrib/comments/views/karma.py:19
-msgid "Anonymous users cannot vote"
-msgstr "匿名使用者不可投票"
-
-#: contrib/comments/views/karma.py:23
-msgid "Invalid comment ID"
-msgstr "無效的評論 ID"
-
-#: contrib/comments/views/karma.py:25
-msgid "No voting for yourself"
-msgstr "不能投票給你自己"
-
-#: contrib/comments/views/comments.py:27
-msgid ""
-"This rating is required because you've entered at least one other rating."
-msgstr "此等級被要求是因為你至少輸入了一個其它的等級。"
-
-#: contrib/comments/views/comments.py:112
-#, python-format
-msgid ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comment:\n"
-"\n"
-"%(text)s"
-msgid_plural ""
-"This comment was posted by a user who has posted fewer than %(count)s "
-"comments:\n"
-"\n"
-"%(text)s"
-msgstr[0] ""
-"此評論由一個發表數少於 %(count)s 則評論的使用者張貼:\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:116
-#, python-format
-msgid ""
-"This comment was posted by a sketchy user:\n"
-"\n"
-"%(text)s"
-msgstr ""
-"此評論由一個膚淺的使用者張貼：\n"
-"\n"
-"%(text)s"
-
-#: contrib/comments/views/comments.py:188
-#: contrib/comments/views/comments.py:280
-msgid "Only POSTs are allowed"
-msgstr "只允許張貼"
-
-#: contrib/comments/views/comments.py:192
-#: contrib/comments/views/comments.py:284
-msgid "One or more of the required fields wasn't submitted"
-msgstr "一個或多個所需的欄位沒有送出"
-
-#: contrib/comments/views/comments.py:196
-#: contrib/comments/views/comments.py:286
-msgid "Somebody tampered with the comment form (security violation)"
-msgstr "有人篡改了評論表單 (違反保全)"
-
-#: contrib/comments/views/comments.py:206
-#: contrib/comments/views/comments.py:292
-msgid ""
-"The comment form had an invalid 'target' parameter -- the object ID was "
-"invalid"
-msgstr "此評論表單有一個無效的 'target' 參數 -- 物件 ID 是無效的"
-
-#: contrib/comments/views/comments.py:257
-#: contrib/comments/views/comments.py:321
-msgid "The comment form didn't provide either 'preview' or 'post'"
-msgstr "評論表格無法提供 '預覽' 或 '張貼' 功能"
-
-#: contrib/sites/models.py:10
-msgid "domain name"
-msgstr "網域名稱"
-
-#: contrib/sites/models.py:11
-msgid "display name"
-msgstr "顯示名稱"
-
-#: contrib/sites/models.py:15
-msgid "site"
-msgstr "網站"
-
-#: contrib/sites/models.py:16
-msgid "sites"
-msgstr "網站"
-
-#: contrib/admin/filterspecs.py:40
-#, python-format
-msgid ""
-"<h3>By %s:</h3>\n"
-"<ul>\n"
-msgstr ""
-"<h3>由 %s:</h3>\n"
-"<ul>\n"
-
-#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
-#: contrib/admin/filterspecs.py:143 contrib/admin/filterspecs.py:169
-msgid "All"
-msgstr "全部"
-
-#: contrib/admin/filterspecs.py:109
-msgid "Any date"
-msgstr "任何日期"
-
-#: contrib/admin/filterspecs.py:110
-msgid "Today"
-msgstr "今天"
-
-#: contrib/admin/filterspecs.py:113
-msgid "Past 7 days"
-msgstr "過去 7 天"
-
-#: contrib/admin/filterspecs.py:115
-msgid "This month"
-msgstr "本月"
-
-#: contrib/admin/filterspecs.py:117
-msgid "This year"
-msgstr "今年"
-
-#: contrib/admin/models.py:16
-msgid "action time"
-msgstr "動作時間"
-
-#: contrib/admin/models.py:19
-msgid "object id"
-msgstr "物件 id"
-
-#: contrib/admin/models.py:20
-msgid "object repr"
-msgstr "物件 repr"
-
-#: contrib/admin/models.py:21
-msgid "action flag"
-msgstr "動作旗標"
-
-#: contrib/admin/models.py:22
-msgid "change message"
-msgstr "變更訊息"
-
-#: contrib/admin/models.py:25
-msgid "log entry"
-msgstr "紀錄項目"
-
-#: contrib/admin/models.py:26
-msgid "log entries"
-msgstr "紀錄項目"
-
-#: contrib/admin/templatetags/admin_list.py:247
-msgid "All dates"
-msgstr "所有日期"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/admin/500.html:4
-#: contrib/admin/templates/admin/invalid_setup.html:4
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/delete_confirmation.html:6
-#: contrib/admin/templates/admin/change_list.html:6
-#: contrib/admin/templates/admin/change_form.html:13
-#: contrib/admin/templates/admin/base.html:30
-#: contrib/admin/templates/admin/auth/user/change_password.html:12
-#: contrib/admin/templates/registration/logged_out.html:4
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-msgid "Home"
-msgstr "首頁"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Documentation"
-msgstr "文件"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:3
-msgid "Bookmarklets"
-msgstr "書籤"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:4
-#: contrib/admin/templates/admin_doc/missing_docutils.html:4
-#: contrib/admin/templates/admin_doc/view_detail.html:4
-#: contrib/admin/templates/admin_doc/template_filter_index.html:5
-#: contrib/admin/templates/admin_doc/view_index.html:5
-#: contrib/admin/templates/admin_doc/template_tag_index.html:5
-#: contrib/admin/templates/admin_doc/model_detail.html:3
-#: contrib/admin/templates/admin_doc/model_index.html:5
-#: contrib/admin/templates/admin_doc/index.html:4
-#: contrib/admin/templates/admin_doc/template_detail.html:4
-#: contrib/admin/templates/admin/object_history.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:3
-#: contrib/admin/templates/admin/change_list.html:5
-#: contrib/admin/templates/admin/change_form.html:10
-#: contrib/admin/templates/admin/base.html:25
-#: contrib/admin/templates/admin/auth/user/change_password.html:9
-#: contrib/admin/templates/admin/auth/user/change_password.html:15
-#: contrib/admin/templates/admin/auth/user/change_password.html:46
-#: contrib/admin/templates/registration/password_change_form.html:3
-#: contrib/admin/templates/registration/password_change_done.html:3
-msgid "Change password"
-msgstr "變更密碼"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:5
-msgid "Documentation bookmarklets"
-msgstr "文件 bookmarklets"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:9
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site.  Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">要安裝 bookmarklet，把連結拖進你的書籤工具列，或右擊該連結"
-"後新增到你的書籤裡。現在你可以從網站的任何頁面來選擇 bookmarklet。注意其中某"
-"些 bookmarklet 要求你必須是從被稱為 \"內部\" 的電腦來檢視網站的 (如果你不確定"
-"你的電腦是否在 \"內部\"，那就和你的系統管理員談談)。</p>\n"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:19
-msgid "Documentation for this page"
-msgstr "本頁面的文件"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:20
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "讓你跳到用來產生該頁面之檢視的任何一頁文件。"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:22
-msgid "Show object ID"
-msgstr "顯示物件 ID"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:23
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "顯示用來表示單一物件的頁面 content-type 與唯一 ID。"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:25
-msgid "Edit this object (current window)"
-msgstr "編輯此物件 (目前視窗)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:26
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "跳到用來表示單一物件的管理頁面。"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:28
-msgid "Edit this object (new window)"
-msgstr "編輯此物件 (新視窗)"
-
-#: contrib/admin/templates/admin_doc/bookmarklets.html:29
-msgid "As above, but opens the admin page in a new window."
-msgstr "如上，但在新視窗裡開啟管理頁面。"
-
-#: contrib/admin/templates/admin/submit_line.html:3
-#: contrib/admin/templates/admin/delete_confirmation.html:9
-msgid "Delete"
-msgstr "刪除"
-
-#: contrib/admin/templates/admin/submit_line.html:4
-msgid "Save as new"
-msgstr "儲存為新的"
-
-#: contrib/admin/templates/admin/submit_line.html:5
-msgid "Save and add another"
-msgstr "儲存並新增另一個"
-
-#: contrib/admin/templates/admin/submit_line.html:6
-msgid "Save and continue editing"
-msgstr "儲存並繼續編輯"
-
-#: contrib/admin/templates/admin/submit_line.html:7
-msgid "Save"
-msgstr "儲存"
-
-#: contrib/admin/templates/admin/500.html:4
-msgid "Server error"
-msgstr "伺服器錯誤"
-
-#: contrib/admin/templates/admin/500.html:6
-msgid "Server error (500)"
-msgstr "伺服器錯誤 (500)"
-
-#: contrib/admin/templates/admin/500.html:9
-msgid "Server Error <em>(500)</em>"
-msgstr "伺服器錯誤 <em>(500)</em>"
-
-#: contrib/admin/templates/admin/500.html:10
-msgid ""
-"There's been an error. It's been reported to the site administrators via e-"
-"mail and should be fixed shortly. Thanks for your patience."
-msgstr "存在一個錯誤。它已經透過電子郵件回報給網站管理員了，並且應該很快被改正。謝謝你的關心。"
-
-#: contrib/admin/templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " 由 %(filter_title)s"
-
-#: contrib/admin/templates/admin/filters.html:4
-msgid "Filter"
-msgstr "過濾器"
-
-#: contrib/admin/templates/admin/invalid_setup.html:8
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr "你的資料庫安裝有錯誤。確定資料庫表格已經建立，並確定資料庫可被合適的使用者讀取。"
-
-#: contrib/admin/templates/admin/search_form.html:8
-msgid "Go"
-msgstr "去"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "1 result"
-msgid_plural "%(counter)s results"
-msgstr[0] "1 則结果"
-msgstr[1] "%(counter)s 則结果"
-
-#: contrib/admin/templates/admin/search_form.html:10
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "總共 %(full_result_count)s"
-
-#: contrib/admin/templates/admin/object_history.html:5
-#: contrib/admin/templates/admin/change_form.html:21
-
-msgid "History"
-msgstr "歷史"
-
-#: contrib/admin/templates/admin/object_history.html:18
-msgid "Date/time"
-msgstr "日期/時間"
-
-
-#: contrib/admin/templates/admin/object_history.html:19
-msgid "User"
-msgstr "使用者"
-
-#: contrib/admin/templates/admin/object_history.html:20
-
-msgid "Action"
-msgstr "動作"
-
-#: contrib/admin/templates/admin/object_history.html:26
-msgid "DATE_WITH_TIME_FULL"
-msgstr "N j, Y, P"
-
-
-#: contrib/admin/templates/admin/object_history.html:36
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "這個物件沒有變更的歷史。它可能不是透過這個管理網站新增的。"
-
-
-#: contrib/admin/templates/admin/delete_confirmation.html:14
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-
-"following types of objects:"
-msgstr ""
-"刪除 %(object_name)s '%(escaped_object)s' 會把相關的物件也刪除，不過你的帳號並沒有刪"
-"除以下型態物件的權限:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:21
-#, python-format
-msgid ""
-
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"你確定想要刪除 %(object_name)s \"%(escaped_object)s\"？以下所有的相關項目都會被刪除:"
-
-#: contrib/admin/templates/admin/delete_confirmation.html:26
-msgid "Yes, I'm sure"
-msgstr "是的，我確定"
-
-#: contrib/admin/templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "顯示全部"
-
-#: contrib/admin/templates/admin/change_list.html:12
-#, python-format
-msgid "Add %(name)s"
-msgstr "新增 %(name)s"
-
-#: contrib/admin/templates/admin/change_form.html:15
-#: contrib/admin/templates/admin/index.html:28
-msgid "Add"
-msgstr "新增"
-
-#: contrib/admin/templates/admin/change_form.html:22
-msgid "View on site"
-msgstr "在網站上檢視"
-
-#: contrib/admin/templates/admin/change_form.html:32
-#: contrib/admin/templates/admin/auth/user/change_password.html:24
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "请更正下面的錯誤。"
-
-#: contrib/admin/templates/admin/change_form.html:50
-msgid "Ordering"
-msgstr "排序中"
-
-#: contrib/admin/templates/admin/change_form.html:53
-msgid "Order:"
-msgstr "排序："
-
-#: contrib/admin/templates/admin/base.html:25
-msgid "Welcome,"
-msgstr "歡迎"
-
-#: contrib/admin/templates/admin/404.html:4
-#: contrib/admin/templates/admin/404.html:8
-msgid "Page not found"
-msgstr "頁面沒有找到"
-
-#: contrib/admin/templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "很抱歉，請求的頁面無法找到。"
-
-#: contrib/admin/templates/admin/login.html:25
-#: contrib/admin/views/decorators.py:24
-msgid "Log in"
-msgstr "登入"
-
-#: contrib/admin/templates/admin/index.html:17
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr "在 %(name)s 應用中模形可用。"
-
-#: contrib/admin/templates/admin/index.html:18
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: contrib/admin/templates/admin/index.html:34
-msgid "Change"
-msgstr "變更"
-
-#: contrib/admin/templates/admin/index.html:44
-msgid "You don't have permission to edit anything."
-msgstr "你沒有編輯任何東西的權限。"
-
-#: contrib/admin/templates/admin/index.html:52
-msgid "Recent Actions"
-msgstr "最近的動作"
-
-#: contrib/admin/templates/admin/index.html:53
-msgid "My Actions"
-msgstr "我的動作"
-
-#: contrib/admin/templates/admin/index.html:57
-msgid "None available"
-msgstr "沒有可用的"
-
-#: contrib/admin/templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django 網站管理"
-
-#: contrib/admin/templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 管理"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "首先，輸入一個使用者名稱和密碼。然後你可以編輯更多使用者選項。"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:12
-msgid "Username"
-msgstr "使用者名稱"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:18
-#: contrib/admin/templates/admin/auth/user/change_password.html:34
-msgid "Password"
-msgstr "密碼"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:23
-#: contrib/admin/templates/admin/auth/user/change_password.html:39
-msgid "Password (again)"
-msgstr "密碼(重複)"
-
-#: contrib/admin/templates/admin/auth/user/add_form.html:24
-#: contrib/admin/templates/admin/auth/user/change_password.html:40
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: contrib/admin/templates/admin/auth/user/change_password.html:28
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: contrib/admin/templates/widget/file.html:2
-msgid "Currently:"
-msgstr "目前"
-
-#: contrib/admin/templates/widget/file.html:3
-msgid "Change:"
-msgstr "修改"
-
-#: contrib/admin/templates/widget/date_time.html:3
-msgid "Date:"
-msgstr "日期"
-
-#: contrib/admin/templates/widget/date_time.html:4
-msgid "Time:"
-msgstr "時間"
-
-#: contrib/admin/templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "感謝你今天花了重要的時間留在本網站。"
-
-#: contrib/admin/templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "再次登入"
-
-#: contrib/admin/templates/registration/password_reset_email.html:2
-msgid "You're receiving this e-mail because you requested a password reset"
-msgstr "因為你要求重設密碼，所以收到了這封電子郵件"
-
-#: contrib/admin/templates/registration/password_reset_email.html:3
-#, python-format
-msgid "for your user account at %(site_name)s"
-msgstr "你在 %(site_name)s 裡的使用者帳號"
-
-#: contrib/admin/templates/registration/password_reset_email.html:5
-#, python-format
-msgid "Your new password is: %(new_password)s"
-msgstr "你的新密碼是: %(new_password)s"
-
-#: contrib/admin/templates/registration/password_reset_email.html:7
-msgid "Feel free to change this password by going to this page:"
-msgstr "放心地到此頁面變更密碼:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:11
-msgid "Your username, in case you've forgotten:"
-msgstr "你的使用者名稱，萬一你已經忘記的話:"
-
-#: contrib/admin/templates/registration/password_reset_email.html:13
-msgid "Thanks for using our site!"
-msgstr "感謝使用本網站！"
-
-#: contrib/admin/templates/registration/password_reset_email.html:15
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 團隊"
-
-
-#: contrib/admin/templates/registration/password_reset_done.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:4
-#: contrib/admin/templates/registration/password_reset_form.html:6
-#: contrib/admin/templates/registration/password_reset_form.html:10
-msgid "Password reset"
-msgstr "密碼重設"
-
-#: contrib/admin/templates/registration/password_reset_done.html:6
-#: contrib/admin/templates/registration/password_reset_done.html:10
-msgid "Password reset successful"
-msgstr "密碼成功地重設"
-
-#: contrib/admin/templates/registration/password_reset_done.html:12
-msgid ""
-"We've e-mailed a new password to the e-mail address you submitted. You "
-"should be receiving it shortly."
-msgstr "我們已經把新的密碼寄到你送出的電子郵件地址。你應該不久就能收到。"
-
-#: contrib/admin/templates/registration/password_change_form.html:4
-#: contrib/admin/templates/registration/password_change_form.html:6
-#: contrib/admin/templates/registration/password_change_form.html:10
-#: contrib/admin/templates/registration/password_change_done.html:4
-msgid "Password change"
-msgstr "密碼變更"
-
-#: contrib/admin/templates/registration/password_change_form.html:12
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "為了安全上的考慮，請輸入你的舊密碼，再輸入新密碼兩次，讓我們核驗你已正確地輸入。"
-
-#: contrib/admin/templates/registration/password_change_form.html:17
-msgid "Old password:"
-msgstr "舊密碼"
-
-#: contrib/admin/templates/registration/password_change_form.html:19
-msgid "New password:"
-msgstr "新密碼"
-
-#: contrib/admin/templates/registration/password_change_form.html:21
-msgid "Confirm password:"
-msgstr "確認密碼"
-
-#: contrib/admin/templates/registration/password_change_form.html:23
-msgid "Change my password"
-msgstr "變更我的密碼"
-
-#: contrib/admin/templates/registration/password_change_done.html:6
-#: contrib/admin/templates/registration/password_change_done.html:10
-msgid "Password change successful"
-msgstr "密碼成功地變更"
-
-#: contrib/admin/templates/registration/password_change_done.html:12
-msgid "Your password was changed."
-msgstr "你的密碼已變更。"
-
-#: contrib/admin/templates/registration/password_reset_form.html:12
-msgid ""
-"Forgotten your password? Enter your e-mail address below, and we'll reset "
-"your password and e-mail the new one to you."
-msgstr "忘記你的密碼了？在下面輸入你的電子郵件地址，我們就會重設你的密碼並把新的用電"
-"子郵件寄給你。"
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "E-mail address:"
-msgstr "電子郵件地址:"
-
-#: contrib/admin/templates/registration/password_reset_form.html:16
-msgid "Reset my password"
-msgstr "重設我的密碼"
-
-#: contrib/admin/views/main.py:223
-msgid "Site administration"
-msgstr "網站管理"
-
-#: contrib/admin/views/main.py:257 contrib/admin/views/auth.py:19
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" 已成功變更。"
-
-#: contrib/admin/views/main.py:261 contrib/admin/views/main.py:347
-#: contrib/admin/views/auth.py:24
-msgid "You may edit it again below."
-msgstr "你可以在下面再編輯一次。"
-
-#: contrib/admin/views/main.py:271 contrib/admin/views/main.py:356
-#, python-format
-msgid "You may add another %s below."
-msgstr "你可以在下面新增另一個 %s。"
-
-#: contrib/admin/views/main.py:289
-#, python-format
-msgid "Add %s"
-msgstr "新增 %s"
-
-#: contrib/admin/views/main.py:335
-#, python-format
-msgid "Added %s."
-msgstr "%s 已新增。"
-
-#: contrib/admin/views/main.py:337
-#, python-format
-msgid "Changed %s."
-msgstr "%s 已變更。"
-
-#: contrib/admin/views/main.py:339
-#, python-format
-msgid "Deleted %s."
-msgstr "%s 已删除。"
-
-#: contrib/admin/views/main.py:342
-msgid "No fields changed."
-msgstr "沒有欄位被變更。"
-
-#: contrib/admin/views/main.py:345
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: contrib/admin/views/main.py:353
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" 已成功變更。"
-
-#: contrib/admin/views/main.py:391
-#, python-format
-msgid "Change %s"
-msgstr "變更 %s"
-
-#: contrib/admin/views/main.py:476
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "在 %(name)s: 裡的一個或多個 %(fieldname)s %(obj)s"
-
-#: contrib/admin/views/main.py:481
-#, python-format
-msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "在 %(name)s 裡的一個或多個 %(fieldname)s:"
-
-#: contrib/admin/views/main.py:514
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" 已成功刪除。"
-
-#: contrib/admin/views/main.py:517
-msgid "Are you sure?"
-msgstr "你確定？"
-
-#: contrib/admin/views/main.py:539
-#, python-format
-msgid "Change history: %s"
-msgstr "變更歷史: %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s"
-msgstr "選擇 %s"
-
-#: contrib/admin/views/main.py:573
-#, python-format
-msgid "Select %s to change"
-msgstr "選擇 %s 來變更"
-
-#: contrib/admin/views/main.py:768
-msgid "Database error"
-msgstr "資料庫錯誤"
-
-#: contrib/admin/views/decorators.py:62
-msgid ""
-"Please log in again, because your session has expired. Don't worry: Your "
-"submission has been saved."
-msgstr "請再登入一次，因為你的 session 已經到期。不必擔心: 你的提交已被儲存。"
-
-#: contrib/admin/views/decorators.py:69
-msgid ""
-"Looks like your browser isn't configured to accept cookies. Please enable "
-"cookies, reload this page, and try again."
-msgstr "看起來你的瀏覽器沒有設定成允許 cookie。請啟用 cookie、重新載入此頁，然後再試一次"
-
-#: contrib/admin/views/decorators.py:83
-msgid "Usernames cannot contain the '@' character."
-msgstr "使用者名稱不能包含 '@' 字元。"
-
-#: contrib/admin/views/decorators.py:85
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "你的電子郵件地址不是你的使用者名稱。試著改用 '%s'。"
-
-#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
-#: contrib/admin/views/doc.py:50
-msgid "tag:"
-msgstr "標籤："
-
-#: contrib/admin/views/doc.py:77 contrib/admin/views/doc.py:79
-#: contrib/admin/views/doc.py:81
-msgid "filter:"
-msgstr "過濾器："
-
-#: contrib/admin/views/doc.py:135 contrib/admin/views/doc.py:137
-#: contrib/admin/views/doc.py:139
-msgid "view:"
-msgstr "視圖："
-
-#: contrib/admin/views/doc.py:164
-#, python-format
-msgid "App %r not found"
-msgstr "應用程式 %r 没有找到"
-
-#: contrib/admin/views/doc.py:171
-#, python-format
-msgid "Model %(name)r not found in app %(label)r"
-msgstr "在應用程式 %(label)r 裡找不到模型 %(name)r"
-
-#: contrib/admin/views/doc.py:183
-#, python-format
-msgid "the related `%(label)s.%(type)s` object"
-msgstr "相關的 `%(label)s.%(type)s` 物件"
-
-#: contrib/admin/views/doc.py:183 contrib/admin/views/doc.py:205
-#: contrib/admin/views/doc.py:219 contrib/admin/views/doc.py:224
-msgid "model:"
-msgstr "模型："
-
-#: contrib/admin/views/doc.py:214
-#, python-format
-msgid "related `%(label)s.%(name)s` objects"
-msgstr "相關的 `%(label)s.%(name)s` 物件"
-
-#: contrib/admin/views/doc.py:219
-#, python-format
-msgid "all %s"
-msgstr "所有 %s"
-
-#: contrib/admin/views/doc.py:224
-#, python-format
-msgid "number of %s"
-msgstr "%s 的数量"
-
-#: contrib/admin/views/doc.py:229
-#, python-format
-msgid "Fields on %s objects"
-msgstr "%s 物件的欄位"
-
-#: contrib/admin/views/doc.py:291 contrib/admin/views/doc.py:301
-#: contrib/admin/views/doc.py:303 contrib/admin/views/doc.py:309
-#: contrib/admin/views/doc.py:310 contrib/admin/views/doc.py:312
-msgid "Integer"
-msgstr "整數"
-
-#: contrib/admin/views/doc.py:292
-msgid "Boolean (Either True or False)"
-msgstr "布林值 (True 或 False)"
-
-#: contrib/admin/views/doc.py:293 contrib/admin/views/doc.py:311
-#, python-format
-msgid "String (up to %(maxlength)s)"
-msgstr "字串(最長 %(maxlength)s)"
-
-#: contrib/admin/views/doc.py:294
-msgid "Comma-separated integers"
-msgstr "逗號分隔的整數"
-
-#: contrib/admin/views/doc.py:295
-msgid "Date (without time)"
-msgstr "日期 (不包括時間)"
-
-#: contrib/admin/views/doc.py:296
-msgid "Date (with time)"
-msgstr "日期 (包括時間)"
-
-#: contrib/admin/views/doc.py:297
-msgid "E-mail address"
-msgstr "電子郵件地址"
-
-#: contrib/admin/views/doc.py:298 contrib/admin/views/doc.py:299
-#: contrib/admin/views/doc.py:302
-msgid "File path"
-msgstr "檔案路徑"
-
-#: contrib/admin/views/doc.py:300
-msgid "Decimal number"
-msgstr "小數"
-
-#: contrib/admin/views/doc.py:306
-msgid "Boolean (Either True, False or None)"
-msgstr "布林值 (True, False 或 None)"
-
-#: contrib/admin/views/doc.py:307
-msgid "Relation to parent model"
-msgstr "與父模型的關係"
-
-#: contrib/admin/views/doc.py:308
-msgid "Phone number"
-msgstr "電話號碼"
-
-#: contrib/admin/views/doc.py:313
-msgid "Text"
-msgstr "文字"
-
-#: contrib/admin/views/doc.py:314
-msgid "Time"
-msgstr "時間"
-
-#: contrib/admin/views/doc.py:316
-msgid "U.S. state (two uppercase letters)"
-msgstr "美國州名 (兩個大寫字母)"
-
-#: contrib/admin/views/doc.py:317
-msgid "XML text"
-msgstr "XML 文件"
-
-#: contrib/admin/views/doc.py:343
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s 似乎不是一個 urlpattern 物件"
-
-#: contrib/admin/views/auth.py:30
-msgid "Add user"
-msgstr "增加使用者"
-
-#: contrib/admin/views/auth.py:57
-msgid "Password changed successfully."
-msgstr ""
-
-#: contrib/admin/views/auth.py:64
-#, python-format
-msgid "Change password: %s"
-msgstr "密碼變更: %s"
-
-#: newforms/fields.py:103 newforms/fields.py:256
-#, python-format
-msgid "Ensure this value has at most %d characters."
-msgstr "確定你輸入的值最多有 %d 字。"
-
-#: newforms/fields.py:105 newforms/fields.py:258
-#, python-format
-msgid "Ensure this value has at least %d characters."
-msgstr "確定你輸入的值最少有 %d 字。"
-
-#: newforms/fields.py:128 core/validators.py:120
-msgid "Enter a whole number."
-msgstr "輸入整數"
-
-#: newforms/fields.py:130
-#, python-format
-msgid "Ensure this value is less than or equal to %s."
-msgstr "這個值必须小於或等於 %s。"
-
-#: newforms/fields.py:132
-#, python-format
-msgid "Ensure this value is greater than or equal to %s."
-msgstr "這個值必须大於或等於 %s。"
-
-#: newforms/fields.py:165
-msgid "Enter a valid date."
-msgstr "輸入有效的日期"
-
-#: newforms/fields.py:192
-msgid "Enter a valid time."
-msgstr "輸入有效的時間"
-
-#: newforms/fields.py:228
-msgid "Enter a valid date/time."
-msgstr "輸入有效的日期/時間"
-
-#: newforms/fields.py:242
-msgid "Enter a valid value."
-msgstr "輸入有效的值"
-
-#: newforms/fields.py:271 core/validators.py:162
-msgid "Enter a valid e-mail address."
-msgstr "輸入有效的電子郵件地址。"
-
-#: newforms/fields.py:289 newforms/fields.py:311
-msgid "Enter a valid URL."
-msgstr "輸入有效的URL"
-
-#: newforms/fields.py:313
-msgid "This URL appears to be a broken link."
-msgstr "URL似乎是是斷掉的連結。"
-
-#: newforms/fields.py:362 newforms/models.py:165
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "選擇有效的選項： 此選擇不在可用的选项中。"
-
-#: newforms/fields.py:380 newforms/fields.py:456 newforms/models.py:182
-msgid "Enter a list of values."
-msgstr "輸入一個列表的值"
-
-#: newforms/fields.py:389 newforms/models.py:188
-#, python-format
-msgid "Select a valid choice. %s is not one of the available choices."
-msgstr "選擇一個有效的選項： '%s' 不在可用的選項中。"
-
-#: template/defaultfilters.py:491
-msgid "yes,no,maybe"
-msgstr "是、否、也許"
-
-#: views/generic/create_update.py:43
-#, python-format
-msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)s 新增成功。"
-
-#: views/generic/create_update.py:117
-#, python-format
-msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)s 變更成功。"
-
-#: views/generic/create_update.py:184
-#, python-format
-msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)s 已被删除。"
-
-#: core/validators.py:64
-msgid "This value must contain only letters, numbers and underscores."
-msgstr "此值僅能包含字母、數字與底線。"
-
-#: core/validators.py:68
-msgid ""
-"This value must contain only letters, numbers, underscores, dashes or "
-"slashes."
-msgstr "此值僅能包含字母、數字、底線與斜線。"
-
-#: core/validators.py:72
-msgid "This value must contain only letters, numbers, underscores or hyphens."
-msgstr "此值僅能包含字母、數字、底線與連字號"
-
-#: core/validators.py:76
-msgid "Uppercase letters are not allowed here."
-msgstr "此處不允許大寫字母。"
-
-#: core/validators.py:80
-msgid "Lowercase letters are not allowed here."
-msgstr "此處不允許小寫字母。"
-
-#: core/validators.py:87
-msgid "Enter only digits separated by commas."
-msgstr "輸入以逗號分隔的數字。"
-
-#: core/validators.py:99
-msgid "Enter valid e-mail addresses separated by commas."
-msgstr "輸入以逗號分隔的有效電子郵件地址。"
-
-#: core/validators.py:103
-msgid "Please enter a valid IP address."
-msgstr "請輸入有效的 IP 位址。"
-
-#: core/validators.py:107
-msgid "Empty values are not allowed here."
-msgstr "此處不允許空值。"
-
-#: core/validators.py:111
-msgid "Non-numeric characters aren't allowed here."
-msgstr "此處不允許非數字字元。"
-
-#: core/validators.py:115
-msgid "This value can't be comprised solely of digits."
-msgstr "此值不能只以數字組成。"
-
-#: core/validators.py:124
-msgid "Only alphabetical characters are allowed here."
-msgstr "此處只允許字母。"
-
-#: core/validators.py:139
-msgid "Year must be 1900 or later."
-msgstr "年份必須是1900或之後"
-
-#: core/validators.py:143
-#, python-format
-msgid "Invalid date: %s"
-msgstr ""
-
-#: core/validators.py:153
-msgid "Enter a valid time in HH:MM format."
-
-msgstr "輸入 HH:MM 有效的時間格式。"
-
-#: core/validators.py:178
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "上傳一個有效的影像。你上傳的檔案不是影像，否則就是壞掉的圖。"
-
-#: core/validators.py:185
-#, python-format
-msgid "The URL %s does not point to a valid image."
-msgstr "URL %s 不是指向一個有效的圖片。"
-
-#: core/validators.py:189
-#, python-format
-msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
-msgstr "電話號碼必須是 XXX-XXX-XXXX 格式。\"%s\" 無效。"
-
-#: core/validators.py:197
-#, python-format
-msgid "The URL %s does not point to a valid QuickTime video."
-
-msgstr "URL %s 未指向有效的 QuickTime 視像。"
-
-#: core/validators.py:201
-msgid "A valid URL is required."
-msgstr "必須是有效的 URL。"
-
-
-#: core/validators.py:215
-#, python-format
-msgid ""
-"Valid HTML is required. Specific errors are:\n"
-"%s"
-msgstr ""
-"必須是有效的 HTML。具體的錯誤是:\n"
-"%s"
-
-#: core/validators.py:222
-#, python-format
-msgid "Badly formed XML: %s"
-msgstr "排列錯誤的 XML: %s"
-
-#: core/validators.py:239
-#, python-format
-msgid "Invalid URL: %s"
-msgstr "無效的 URL: %s"
-
-#: core/validators.py:244 core/validators.py:246
-#, python-format
-msgid "The URL %s is a broken link."
-msgstr "URL %s 是斷掉的連結。"
-
-#: core/validators.py:252
-msgid "Enter a valid U.S. state abbreviation."
-msgstr "輸入有效的 U.S. 州名簡稱。"
-
-#: core/validators.py:266
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "看住你的嘴！此處不允許 %s 這樣的字眼。"
-msgstr[1] ""
-
-#: core/validators.py:273
-#, python-format
-msgid "This field must match the '%s' field."
-msgstr "此欄位必須符合 '%s' 欄位。"
-
-#: core/validators.py:292
-msgid "Please enter something for at least one field."
-msgstr "請在至少一個欄位裡進行輸入。"
-
-#: core/validators.py:301 core/validators.py:312
-msgid "Please enter both fields or leave them both empty."
-msgstr "請輸入兩個欄位或全部留空。"
-
-#: core/validators.py:320
-#, python-format
-msgid "This field must be given if %(field)s is %(value)s"
-msgstr "如果 %(field)s 是 %(value)s 則此欄位必須給定。"
-
-#: core/validators.py:333
-#, python-format
-msgid "This field must be given if %(field)s is not %(value)s"
-msgstr "如果 %(field)s 不是 %(value)s 則此欄位必須給定。"
-
-#: core/validators.py:352
-msgid "Duplicate values are not allowed."
-msgstr "不允許重複值。"
-
-#: core/validators.py:367
-#, python-format
-msgid "This value must be between %(lower)s and %(upper)s."
-msgstr "這個值必須介於 %(lower)s 和 %(upper)s 之間。"
-
-#: core/validators.py:369
-#, python-format
-msgid "This value must be at least %s."
-msgstr "這個值需要至少為 %s 。"
-
-#: core/validators.py:371
-#, python-format
-
-msgid "This value must be no more than %s."
-msgstr "這個值不能大於 %s 。"
-
-#: core/validators.py:407
-#, python-format
-msgid "This value must be a power of %s."
-msgstr "此值必須是 %s 的乘方。"
-
-#: core/validators.py:418
-msgid "Please enter a valid decimal number."
-msgstr "請輸入有效的小數。"
-
-#: core/validators.py:422
-#, python-format
-msgid "Please enter a valid decimal number with at most %s total digit."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s total digits."
-msgstr[0] "請輸入最長 %s 位的有效小數。"
-msgstr[1] "請輸入最長 %s 位的有效小數。"
-
-#: core/validators.py:425
-#, python-format
-msgid ""
-"Please enter a valid decimal number with a whole part of at most %s digit."
-msgid_plural ""
-"Please enter a valid decimal number with a whole part of at most %s digits."
-msgstr[0] "請輸入最長 %s 位的有效小數。"
-msgstr[1] "請輸入最長 %s 位的有效小數。"
-
-
-#: core/validators.py:428
-#, python-format
-msgid "Please enter a valid decimal number with at most %s decimal place."
-msgid_plural ""
-"Please enter a valid decimal number with at most %s decimal places."
-msgstr[0] "請輸入小數最長 %s 位的有效小數。"
-msgstr[1] "請輸入小數最長 %s 位的有效小數。"
-
-#: core/validators.py:438
-#, python-format
-msgid "Make sure your uploaded file is at least %s bytes big."
-msgstr "確定你上傳的檔案至少有 %s 位元組。"
-
-#: core/validators.py:439
-#, python-format
-msgid "Make sure your uploaded file is at most %s bytes big."
-msgstr "確定你上傳的檔案最多是 %s 位元組。"
-
-#: core/validators.py:456
-msgid "The format for this field is wrong."
-msgstr "此欄位的格式錯誤。"
-
-#: core/validators.py:471
-msgid "This field is invalid."
-msgstr "此欄位錯誤"
-
-#: core/validators.py:507
-#, python-format
-msgid "Could not retrieve anything from %s."
-msgstr "無法從 %s 取得任何東西。"
-
-#: core/validators.py:510
-#, python-format
-msgid ""
-"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'."
-msgstr "URL %(url)s 傳回了無效的 Content-Type 標頭 '%(contenttype)s'。"
-
-#: core/validators.py:543
-#, python-format
-msgid ""
-"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "
-"\"%(start)s\".)"
-msgstr ""
-"請將第 %(line)s 行開始未封閉的 %(tag)s 標籤封閉起來 (行開始於 \"%(start)s"
-"\")。"
-
-#: core/validators.py:547
-#, python-format
-msgid ""
-"Some text starting on line %(line)s is not allowed in that context. (Line "
-"starts with \"%(start)s\".)"
-msgstr "該內容不允許某些從第 %(line)s 開始的文字 (行開始於 \"%(start)s\")。"
-
-#: core/validators.py:552
-#, python-format
-msgid ""
-"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%"
-"(start)s\".)"
-msgstr ""
-"第 \"%(line)s\" 的 \"%(attr)s\" 是無效的屬性 (行開始於 \"%(start)s\")。"
-
-#: core/validators.py:557
-#, python-format
-msgid ""
-"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%"
-"(start)s\".)"
-msgstr "第 %(line)s 行的 \"<%(tag)s>\" 是無效的標籤 (行開始於 \"%(start)s\")。"
-
-#: core/validators.py:561
-#, python-format
-msgid ""
-"A tag on line %(line)s is missing one or more required attributes. (Line "
-"starts with \"%(start)s\".)"
-msgstr ""
-"第 %(line)s 有一個標籤缺少了一個或更多必需的屬性 (行開始於 \"%(start)s\")。"
-
-#: core/validators.py:566
-#, python-format
-msgid ""
-"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line "
-"starts with \"%(start)s\".)"
-msgstr "第 \"%(line)s\" 的 \"%(attr)s\" 屬性是無效的值 (行開始於 \"%(start)s\")。"
diff --git a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.mo b/webapp/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index fae1fdc..0000000
--- a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.po b/webapp/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 120d08d..0000000
--- a/webapp/django/conf/locale/zh_TW/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,118 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 17:36+1000\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: contrib/admin/media/js/SelectFilter2.js:33
-#, perl-format
-msgid "Available %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:41
-msgid "Choose all"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:46
-msgid "Add"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:48
-msgid "Remove"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:53
-#, perl-format
-msgid "Chosen %s"
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:54
-msgid "Select your choice(s) and click "
-msgstr ""
-
-#: contrib/admin/media/js/SelectFilter2.js:59
-msgid "Clear all"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:32
-#: contrib/admin/media/js/calendar.js:24
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: contrib/admin/media/js/dateparse.js:33
-msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
-msgstr ""
-
-#: contrib/admin/media/js/calendar.js:25
-msgid "S M T W T F S"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:47
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:81
-msgid "Now"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:51
-msgid "Clock"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:78
-msgid "Choose a time"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:82
-msgid "Midnight"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:83
-msgid "6 a.m."
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84
-msgid "Noon"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
-msgid "Cancel"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
-msgid "Today"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:132
-msgid "Calendar"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:175
-msgid "Yesterday"
-msgstr ""
-
-#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
-msgid "Tomorrow"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
-msgid "Show"
-msgstr ""
-
-#: contrib/admin/media/js/admin/CollapsedFieldsets.js:63
-msgid "Hide"
-msgstr ""
diff --git a/webapp/django/conf/project_template/__init__.py b/webapp/django/conf/project_template/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/conf/project_template/__init__.py
+++ /dev/null
diff --git a/webapp/django/conf/project_template/manage.py b/webapp/django/conf/project_template/manage.py
deleted file mode 100755
index 5e78ea9..0000000
--- a/webapp/django/conf/project_template/manage.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-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)
diff --git a/webapp/django/conf/project_template/settings.py b/webapp/django/conf/project_template/settings.py
deleted file mode 100644
index bbf005d..0000000
--- a/webapp/django/conf/project_template/settings.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# Django settings for {{ project_name }} project.
-
-DEBUG = True
-TEMPLATE_DEBUG = DEBUG
-
-ADMINS = (
-    # ('Your Name', 'your_email@domain.com'),
-)
-
-MANAGERS = ADMINS
-
-DATABASE_ENGINE = ''           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
-DATABASE_NAME = ''             # Or path to database file if using sqlite3.
-DATABASE_USER = ''             # Not used with sqlite3.
-DATABASE_PASSWORD = ''         # Not used with sqlite3.
-DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
-DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
-
-# 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 media.
-# Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = ''
-
-# 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/"
-MEDIA_URL = ''
-
-# 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 = '/media/'
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = ''
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
-    'django.template.loaders.filesystem.load_template_source',
-    'django.template.loaders.app_directories.load_template_source',
-#     'django.template.loaders.eggs.load_template_source',
-)
-
-MIDDLEWARE_CLASSES = (
-    'django.middleware.common.CommonMiddleware',
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-)
-
-ROOT_URLCONF = '{{ project_name }}.urls'
-
-TEMPLATE_DIRS = (
-    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
-    # Always use forward slashes, even on Windows.
-    # Don't forget to use absolute paths, not relative paths.
-)
-
-INSTALLED_APPS = (
-    'django.contrib.auth',
-    'django.contrib.contenttypes',
-    'django.contrib.sessions',
-    'django.contrib.sites',
-)
diff --git a/webapp/django/conf/project_template/urls.py b/webapp/django/conf/project_template/urls.py
deleted file mode 100644
index 7c9fab9..0000000
--- a/webapp/django/conf/project_template/urls.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.conf.urls.defaults import *
-
-# Uncomment the next two lines to enable the admin:
-# from django.contrib import admin
-# admin.autodiscover()
-
-urlpatterns = patterns('',
-    # Example:
-    # (r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')),
-
-    # Uncomment the next line to enable admin documentation:
-    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
-
-    # Uncomment the next line to enable the admin:
-    # (r'^admin/(.*)', admin.site.root),
-)
diff --git a/webapp/django/conf/urls/__init__.py b/webapp/django/conf/urls/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/conf/urls/__init__.py
+++ /dev/null
diff --git a/webapp/django/conf/urls/defaults.py b/webapp/django/conf/urls/defaults.py
deleted file mode 100644
index 26cdd3e..0000000
--- a/webapp/django/conf/urls/defaults.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
-from django.core.exceptions import ImproperlyConfigured
-
-__all__ = ['handler404', 'handler500', 'include', 'patterns', 'url']
-
-handler404 = 'django.views.defaults.page_not_found'
-handler500 = 'django.views.defaults.server_error'
-
-include = lambda urlconf_module: [urlconf_module]
-
-def patterns(prefix, *args):
-    pattern_list = []
-    for t in args:
-        if isinstance(t, (list, tuple)):
-            t = url(prefix=prefix, *t)
-        elif isinstance(t, RegexURLPattern):
-            t.add_prefix(prefix)
-        pattern_list.append(t)
-    return pattern_list
-
-def url(regex, view, kwargs=None, name=None, prefix=''):
-    if type(view) == list:
-        # For include(...) processing.
-        return RegexURLResolver(regex, view[0], kwargs)
-    else:
-        if isinstance(view, basestring):
-            if not view:
-                raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex)
-            if prefix:
-                view = prefix + '.' + view
-        return RegexURLPattern(regex, view, kwargs, name)
-
diff --git a/webapp/django/conf/urls/i18n.py b/webapp/django/conf/urls/i18n.py
deleted file mode 100644
index 00e2d60..0000000
--- a/webapp/django/conf/urls/i18n.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('',
-    (r'^setlang/$', 'django.views.i18n.set_language'),
-)
diff --git a/webapp/django/conf/urls/shortcut.py b/webapp/django/conf/urls/shortcut.py
deleted file mode 100644
index 135f3be..0000000
--- a/webapp/django/conf/urls/shortcut.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('django.views',
-    (r'^(?P<content_type_id>\d+)/(?P<object_id>.*)/$', 'defaults.shortcut'),
-)
diff --git a/webapp/django/contrib/__init__.py b/webapp/django/contrib/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/admin/__init__.py b/webapp/django/contrib/admin/__init__.py
deleted file mode 100644
index 704dc58..0000000
--- a/webapp/django/contrib/admin/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
-from django.contrib.admin.options import StackedInline, TabularInline
-from django.contrib.admin.sites import AdminSite, site
-
-def autodiscover():
-    """
-    Auto-discover INSTALLED_APPS admin.py modules and fail silently when 
-    not present. This forces an import on them to register any admin bits they
-    may want.
-    """
-    import imp
-    from django.conf import settings
-    for app in settings.INSTALLED_APPS:
-        try:
-            imp.find_module("admin", __import__(app, {}, {}, [app.split(".")[-1]]).__path__)
-        except ImportError:
-            # there is no app admin.py, skip it
-            continue
-        __import__("%s.admin" % app)
diff --git a/webapp/django/contrib/admin/filterspecs.py b/webapp/django/contrib/admin/filterspecs.py
deleted file mode 100644
index d6a4a0b..0000000
--- a/webapp/django/contrib/admin/filterspecs.py
+++ /dev/null
@@ -1,179 +0,0 @@
-"""
-FilterSpec encapsulates the logic for displaying filters in the Django admin.
-Filters are specified in models with the "list_filter" option.
-
-Each filter subclass knows how to display a filter for a field that passes a
-certain test -- e.g. being a DateField or ForeignKey.
-"""
-
-from django.db import models
-from django.utils.encoding import smart_unicode, iri_to_uri
-from django.utils.translation import ugettext as _
-from django.utils.html import escape
-from django.utils.safestring import mark_safe
-import datetime
-
-class FilterSpec(object):
-    filter_specs = []
-    def __init__(self, f, request, params, model, model_admin):
-        self.field = f
-        self.params = params
-
-    def register(cls, test, factory):
-        cls.filter_specs.append((test, factory))
-    register = classmethod(register)
-
-    def create(cls, f, request, params, model, model_admin):
-        for test, factory in cls.filter_specs:
-            if test(f):
-                return factory(f, request, params, model, model_admin)
-    create = classmethod(create)
-
-    def has_output(self):
-        return True
-
-    def choices(self, cl):
-        raise NotImplementedError()
-
-    def title(self):
-        return self.field.verbose_name
-
-    def output(self, cl):
-        t = []
-        if self.has_output():
-            t.append(_(u'<h3>By %s:</h3>\n<ul>\n') % escape(self.title()))
-
-            for choice in self.choices(cl):
-                t.append(u'<li%s><a href="%s">%s</a></li>\n' % \
-                    ((choice['selected'] and ' class="selected"' or ''),
-                     iri_to_uri(choice['query_string']),
-                     choice['display']))
-            t.append('</ul>\n\n')
-        return mark_safe("".join(t))
-
-class RelatedFilterSpec(FilterSpec):
-    def __init__(self, f, request, params, model, model_admin):
-        super(RelatedFilterSpec, self).__init__(f, request, params, model, model_admin)
-        if isinstance(f, models.ManyToManyField):
-            self.lookup_title = f.rel.to._meta.verbose_name
-        else:
-            self.lookup_title = f.verbose_name
-        self.lookup_kwarg = '%s__%s__exact' % (f.name, f.rel.to._meta.pk.name)
-        self.lookup_val = request.GET.get(self.lookup_kwarg, None)
-        self.lookup_choices = f.rel.to._default_manager.all()
-
-    def has_output(self):
-        return len(self.lookup_choices) > 1
-
-    def title(self):
-        return self.lookup_title
-
-    def choices(self, cl):
-        yield {'selected': self.lookup_val is None,
-               'query_string': cl.get_query_string({}, [self.lookup_kwarg]),
-               'display': _('All')}
-        for val in self.lookup_choices:
-            pk_val = getattr(val, self.field.rel.to._meta.pk.attname)
-            yield {'selected': self.lookup_val == smart_unicode(pk_val),
-                   'query_string': cl.get_query_string({self.lookup_kwarg: pk_val}),
-                   'display': val}
-
-FilterSpec.register(lambda f: bool(f.rel), RelatedFilterSpec)
-
-class ChoicesFilterSpec(FilterSpec):
-    def __init__(self, f, request, params, model, model_admin):
-        super(ChoicesFilterSpec, self).__init__(f, request, params, model, model_admin)
-        self.lookup_kwarg = '%s__exact' % f.name
-        self.lookup_val = request.GET.get(self.lookup_kwarg, None)
-
-    def choices(self, cl):
-        yield {'selected': self.lookup_val is None,
-               'query_string': cl.get_query_string({}, [self.lookup_kwarg]),
-               'display': _('All')}
-        for k, v in self.field.choices:
-            yield {'selected': smart_unicode(k) == self.lookup_val,
-                    'query_string': cl.get_query_string({self.lookup_kwarg: k}),
-                    'display': v}
-
-FilterSpec.register(lambda f: bool(f.choices), ChoicesFilterSpec)
-
-class DateFieldFilterSpec(FilterSpec):
-    def __init__(self, f, request, params, model, model_admin):
-        super(DateFieldFilterSpec, self).__init__(f, request, params, model, model_admin)
-
-        self.field_generic = '%s__' % self.field.name
-
-        self.date_params = dict([(k, v) for k, v in params.items() if k.startswith(self.field_generic)])
-
-        today = datetime.date.today()
-        one_week_ago = today - datetime.timedelta(days=7)
-        today_str = isinstance(self.field, models.DateTimeField) and today.strftime('%Y-%m-%d 23:59:59') or today.strftime('%Y-%m-%d')
-
-        self.links = (
-            (_('Any date'), {}),
-            (_('Today'), {'%s__year' % self.field.name: str(today.year),
-                       '%s__month' % self.field.name: str(today.month),
-                       '%s__day' % self.field.name: str(today.day)}),
-            (_('Past 7 days'), {'%s__gte' % self.field.name: one_week_ago.strftime('%Y-%m-%d'),
-                             '%s__lte' % f.name: today_str}),
-            (_('This month'), {'%s__year' % self.field.name: str(today.year),
-                             '%s__month' % f.name: str(today.month)}),
-            (_('This year'), {'%s__year' % self.field.name: str(today.year)})
-        )
-
-    def title(self):
-        return self.field.verbose_name
-
-    def choices(self, cl):
-        for title, param_dict in self.links:
-            yield {'selected': self.date_params == param_dict,
-                   'query_string': cl.get_query_string(param_dict, [self.field_generic]),
-                   'display': title}
-
-FilterSpec.register(lambda f: isinstance(f, models.DateField), DateFieldFilterSpec)
-
-class BooleanFieldFilterSpec(FilterSpec):
-    def __init__(self, f, request, params, model, model_admin):
-        super(BooleanFieldFilterSpec, self).__init__(f, request, params, model, model_admin)
-        self.lookup_kwarg = '%s__exact' % f.name
-        self.lookup_kwarg2 = '%s__isnull' % f.name
-        self.lookup_val = request.GET.get(self.lookup_kwarg, None)
-        self.lookup_val2 = request.GET.get(self.lookup_kwarg2, None)
-
-    def title(self):
-        return self.field.verbose_name
-
-    def choices(self, cl):
-        for k, v in ((_('All'), None), (_('Yes'), '1'), (_('No'), '0')):
-            yield {'selected': self.lookup_val == v and not self.lookup_val2,
-                   'query_string': cl.get_query_string({self.lookup_kwarg: v}, [self.lookup_kwarg2]),
-                   'display': k}
-        if isinstance(self.field, models.NullBooleanField):
-            yield {'selected': self.lookup_val2 == 'True',
-                   'query_string': cl.get_query_string({self.lookup_kwarg2: 'True'}, [self.lookup_kwarg]),
-                   'display': _('Unknown')}
-
-FilterSpec.register(lambda f: isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField), BooleanFieldFilterSpec)
-
-# This should be registered last, because it's a last resort. For example,
-# if a field is eligible to use the BooleanFieldFilterSpec, that'd be much
-# more appropriate, and the AllValuesFilterSpec won't get used for it.
-class AllValuesFilterSpec(FilterSpec):
-    def __init__(self, f, request, params, model, model_admin):
-        super(AllValuesFilterSpec, self).__init__(f, request, params, model, model_admin)
-        self.lookup_val = request.GET.get(f.name, None)
-        self.lookup_choices = model_admin.queryset(request).distinct().order_by(f.name).values(f.name)
-
-    def title(self):
-        return self.field.verbose_name
-
-    def choices(self, cl):
-        yield {'selected': self.lookup_val is None,
-               'query_string': cl.get_query_string({}, [self.field.name]),
-               'display': _('All')}
-        for val in self.lookup_choices:
-            val = smart_unicode(val[self.field.name])
-            yield {'selected': self.lookup_val == val,
-                   'query_string': cl.get_query_string({self.field.name: val}),
-                   'display': val}
-FilterSpec.register(lambda f: True, AllValuesFilterSpec)
diff --git a/webapp/django/contrib/admin/helpers.py b/webapp/django/contrib/admin/helpers.py
deleted file mode 100644
index ba49f8b..0000000
--- a/webapp/django/contrib/admin/helpers.py
+++ /dev/null
@@ -1,141 +0,0 @@
-
-from django import forms
-from django.conf import settings
-from django.utils.html import escape
-from django.utils.safestring import mark_safe
-from django.utils.encoding import force_unicode
-from django.contrib.admin.util import flatten_fieldsets
-
-class AdminForm(object):
-    def __init__(self, form, fieldsets, prepopulated_fields):
-        self.form, self.fieldsets = form, fieldsets
-        self.prepopulated_fields = [{
-            'field': form[field_name],
-            'dependencies': [form[f] for f in dependencies]
-        } for field_name, dependencies in prepopulated_fields.items()]
-
-    def __iter__(self):
-        for name, options in self.fieldsets:
-            yield Fieldset(self.form, name, **options)
-
-    def first_field(self):
-        for bf in self.form:
-            return bf
-
-    def _media(self):
-        media = self.form.media
-        for fs in self:
-            media = media + fs.media
-        return media
-    media = property(_media)
-
-class Fieldset(object):
-    def __init__(self, form, name=None, fields=(), classes=(), description=None):
-        self.form = form
-        self.name, self.fields = name, fields
-        self.classes = u' '.join(classes)
-        self.description = description
-
-    def _media(self):
-        if 'collapse' in self.classes:
-            return forms.Media(js=['%sjs/admin/CollapsedFieldsets.js' % settings.ADMIN_MEDIA_PREFIX])
-        return forms.Media()
-    media = property(_media)
-
-    def __iter__(self):
-        for field in self.fields:
-            yield Fieldline(self.form, field)
-
-class Fieldline(object):
-    def __init__(self, form, field):
-        self.form = form # A django.forms.Form instance
-        if isinstance(field, basestring):
-            self.fields = [field]
-        else:
-            self.fields = field
-
-    def __iter__(self):
-        for i, field in enumerate(self.fields):
-            yield AdminField(self.form, field, is_first=(i == 0))
-
-    def errors(self):
-        return mark_safe(u'\n'.join([self.form[f].errors.as_ul() for f in self.fields]).strip('\n'))
-
-class AdminField(object):
-    def __init__(self, form, field, is_first):
-        self.field = form[field] # A django.forms.BoundField instance
-        self.is_first = is_first # Whether this field is first on the line
-        self.is_checkbox = isinstance(self.field.field.widget, forms.CheckboxInput)
-
-    def label_tag(self):
-        classes = []
-        if self.is_checkbox:
-            classes.append(u'vCheckboxLabel')
-            contents = force_unicode(escape(self.field.label))
-        else:
-            contents = force_unicode(escape(self.field.label)) + u':'
-        if self.field.field.required:
-            classes.append(u'required')
-        if not self.is_first:
-            classes.append(u'inline')
-        attrs = classes and {'class': u' '.join(classes)} or {}
-        return self.field.label_tag(contents=contents, attrs=attrs)
-
-class InlineAdminFormSet(object):
-    """
-    A wrapper around an inline formset for use in the admin system.
-    """
-    def __init__(self, inline, formset, fieldsets):
-        self.opts = inline
-        self.formset = formset
-        self.fieldsets = fieldsets
-
-    def __iter__(self):
-        for form, original in zip(self.formset.initial_forms, self.formset.get_queryset()):
-            yield InlineAdminForm(self.formset, form, self.fieldsets, self.opts.prepopulated_fields, original)
-        for form in self.formset.extra_forms:
-            yield InlineAdminForm(self.formset, form, self.fieldsets, self.opts.prepopulated_fields, None)
-
-    def fields(self):
-        for field_name in flatten_fieldsets(self.fieldsets):
-            yield self.formset.form.base_fields[field_name]
-
-    def _media(self):
-        media = self.opts.media + self.formset.media
-        for fs in self:
-            media = media + fs.media
-        return media
-    media = property(_media)
-
-class InlineAdminForm(AdminForm):
-    """
-    A wrapper around an inline form for use in the admin system.
-    """
-    def __init__(self, formset, form, fieldsets, prepopulated_fields, original):
-        self.formset = formset
-        self.original = original
-        self.show_url = original and hasattr(original, 'get_absolute_url')
-        super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields)
-
-    def pk_field(self):
-        return AdminField(self.form, self.formset._pk_field_name, False)
-
-    def deletion_field(self):
-        from django.forms.formsets import DELETION_FIELD_NAME
-        return AdminField(self.form, DELETION_FIELD_NAME, False)
-
-    def ordering_field(self):
-        from django.forms.formsets import ORDERING_FIELD_NAME
-        return AdminField(self.form, ORDERING_FIELD_NAME, False)
-
-class AdminErrorList(forms.util.ErrorList):
-    """
-    Stores all errors for the form/formsets in an add/change stage view.
-    """
-    def __init__(self, form, inline_formsets):
-        if form.is_bound:
-            self.extend(form.errors.values())
-            for inline_formset in inline_formsets:
-                self.extend(inline_formset.non_form_errors())
-                for errors_in_inline_form in inline_formset.errors:
-                    self.extend(errors_in_inline_form.values())
diff --git a/webapp/django/contrib/admin/media/css/base.css b/webapp/django/contrib/admin/media/css/base.css
deleted file mode 100644
index 9760d67..0000000
--- a/webapp/django/contrib/admin/media/css/base.css
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
-    DJANGO Admin
-    by Wilson Miner wilson@lawrence.com
-*/
-
-/* Block IE 5 */
-@import "null.css?\"\{";
-
-/* Import other styles */
-@import url('global.css');
-@import url('layout.css');
-
-/* Import patch for IE 6 Windows */
-/*\*/ @import "patch-iewin.css"; /**/
diff --git a/webapp/django/contrib/admin/media/css/changelists.css b/webapp/django/contrib/admin/media/css/changelists.css
deleted file mode 100644
index 4834be4..0000000
--- a/webapp/django/contrib/admin/media/css/changelists.css
+++ /dev/null
@@ -1,50 +0,0 @@
-@import url('base.css');
-
-/* CHANGELISTS */
-#changelist { position:relative; width:100%; }
-#changelist table { width:100%; }
-.change-list .filtered table { border-right:1px solid #ddd;  }
-.change-list .filtered { min-height:400px; }
-.change-list .filtered { background:white url(../img/admin/changelist-bg.gif) top right repeat-y !important; }
-.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:160px !important; width:auto !important; }
-.change-list .filtered table tbody th { padding-right:1em; }
-#changelist .toplinks { border-bottom:1px solid #ccc !important; }
-#changelist .paginator { color:#666; border-top:1px solid #eee; border-bottom:1px solid #eee; background:white url(../img/admin/nav-bg.gif) 0 180% repeat-x; overflow:hidden; }
-.change-list .filtered .paginator { border-right:1px solid #ddd; }
-
-/*  CHANGELIST TABLES  */
-#changelist table thead th { white-space:nowrap; }
-#changelist table tbody td { border-left: 1px solid #ddd; }
-#changelist table tfoot { color: #666; }
-
-/*  TOOLBAR  */
-#changelist #toolbar { padding:3px; border-bottom:1px solid #ddd; background:#e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x; color:#666; }
-#changelist #toolbar form input { font-size:11px; padding:1px 2px; }
-#changelist #toolbar form #searchbar { padding:2px; }
-#changelist #changelist-search img { vertical-align:middle; }
-
-/*  FILTER COLUMN  */
-#changelist-filter { position:absolute; top:0; right:0; z-index:1000; width:160px; border-left:1px solid #ddd; background:#efefef; margin:0; }
-#changelist-filter h2 { font-size:11px; padding:2px 5px; border-bottom:1px solid #ddd; }
-#changelist-filter h3 { font-size:12px; margin-bottom:0; }
-#changelist-filter ul { padding-left:0;margin-left:10px; }
-#changelist-filter li { list-style-type:none; margin-left:0; padding-left:0; }
-#changelist-filter a { color:#999; }
-#changelist-filter a:hover { color:#036; }
-#changelist-filter li.selected { border-left:5px solid #ccc; padding-left:5px;margin-left:-10px; }
-#changelist-filter li.selected a { color:#5b80b2 !important; }
-
-/*  DATE DRILLDOWN  */
-.change-list ul.toplinks { display:block; background:white url(../img/admin/nav-bg-reverse.gif) 0 -10px repeat-x; border-top:1px solid white; float:left;  padding:0 !important;  margin:0 !important; width:100%; }
-.change-list ul.toplinks li { float: left; width: 9em; padding:3px 6px; font-weight: bold; list-style-type:none; }
-.change-list ul.toplinks .date-back a { color:#999; }
-.change-list ul.toplinks .date-back a:hover { color:#036; }
-
-/* PAGINATOR */
-.paginator { font-size:11px; padding-top:10px; padding-bottom:10px; line-height:22px; margin:0; border-top:1px solid #ddd; }
-.paginator a:link, .paginator a:visited { padding:2px 6px; border:solid 1px #ccc; background:white; text-decoration:none; }
-.paginator a.showall { padding:0 !important; border:none !important; }
-.paginator a.showall:hover { color:#036 !important; background:transparent !important; }
-.paginator .end { border-width:2px !important; margin-right:6px; }
-.paginator .this-page { padding:2px 6px; font-weight:bold; font-size:13px; vertical-align:top; }
-.paginator a:hover { color:white; background:#5b80b2; border-color:#036; }
diff --git a/webapp/django/contrib/admin/media/css/dashboard.css b/webapp/django/contrib/admin/media/css/dashboard.css
deleted file mode 100644
index d277973..0000000
--- a/webapp/django/contrib/admin/media/css/dashboard.css
+++ /dev/null
@@ -1,10 +0,0 @@
-@import url('base.css');
-
-/* DASHBOARD */
-.dashboard .module table th { width:100%; }
-.dashboard .module table td { white-space:nowrap; }
-.dashboard .module table td a { display:block; padding-right:.6em; }
-
-/*  RECENT ACTIONS MODULE  */
-.module ul.actionlist { margin-left:0; }
-ul.actionlist li { list-style-type:none; }
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/media/css/forms.css b/webapp/django/contrib/admin/media/css/forms.css
deleted file mode 100644
index 234a21b..0000000
--- a/webapp/django/contrib/admin/media/css/forms.css
+++ /dev/null
@@ -1,83 +0,0 @@
-@import url('base.css');
-@import url('widgets.css');
-
-/* FORM ROWS */
-.form-row { overflow:hidden; padding:8px 12px; font-size:11px; border-bottom:1px solid #eee; }
-.form-row img, .form-row input { vertical-align:middle; }
-form .form-row p { padding-left:0; font-size:11px; }
-
-/* FORM LABELS */
-form h4 { margin:0 !important; padding:0 !important; border:none !important; }
-label { font-weight:normal !important; color:#666; font-size:12px; }
-label.inline { margin-left:20px; }
-.required label, label.required { font-weight:bold !important; color:#333 !important; }
-
-/* RADIO BUTTONS */
-form ul.radiolist li { list-style-type:none; }
-form ul.radiolist label { float:none; display:inline; }
-form ul.inline { margin-left:0; padding:0; }
-form ul.inline li { float:left; padding-right:7px; }
-
-/* ALIGNED FIELDSETS */
-.aligned label { display:block; padding:0 1em 3px 0; float:left; width:8em; }
-.aligned label.inline { display:inline; float:none; }
-.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { width:350px; }
-form .aligned p, form .aligned ul { margin-left:7em; padding-left:30px; }
-form .aligned table p { margin-left:0; padding-left:0; }
-form .aligned p.help { padding-left:38px; }
-.aligned .vCheckboxLabel { float:none !important; display:inline; padding-left:4px; }
-.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { width:610px; }
-.checkbox-row p.help { margin-left:0; padding-left:0 !important; }
-
-/* WIDE FIELDSETS */
-.wide label { width:15em !important; }
-form .wide p { margin-left:15em; }
-form .wide p.help { padding-left:38px; }
-.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { width:450px; }
-
-/* COLLAPSED FIELDSETS */
-fieldset.collapsed * { display:none; }
-fieldset.collapsed h2, fieldset.collapsed { display:block !important; }
-fieldset.collapsed h2 { background-image:url(../img/admin/nav-bg.gif); background-position:bottom left; color:#999; }
-fieldset.collapsed .collapse-toggle { padding:3px 5px !important; background:transparent; display:inline !important;}
-
-/* MONOSPACE TEXTAREAS */
-fieldset.monospace textarea { font-family:"Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace; }
-
-/* SUBMIT ROW */
-.submit-row { padding:5px 7px; text-align:right; background:white url(../img/admin/nav-bg.gif) 0 100% repeat-x; border:1px solid #ccc; margin:5px 0; }
-.submit-row input { margin:0 0 0 5px; }
-.submit-row p { margin-top:0.3em; }
-.submit-row .deletelink { background:url(../img/admin/icon_deletelink.gif) 0 50% no-repeat; padding-left:14px; }
-
-/* CUSTOM FORM FIELDS */
-.vSelectMultipleField { vertical-align:top !important; }
-.vCheckboxField { border:none; }
-.vDateField, .vTimeField { margin-right:2px; }
-.vURLField { width:30em; }
-.vLargeTextField, .vXMLLargeTextField { width:48em; }
-.flatpages-flatpage #id_content { height:40.2em; }
-.module table .vPositiveSmallIntegerField { width:2.2em; }
-.vTextField { width:20em; }
-.vIntegerField { width:5em; }
-
-/* x unsorted */
-.inline-group {padding:0; border:1px solid #ccc; margin:10px 0;}
-.inline-group .aligned label { width: 7em; }
-
-.inline-related {position:relative;}
-.inline-related h3 {margin: 0; color:#666; padding:3px 5px; font-size:11px; background:#e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x; border-bottom:1px solid #ddd;}
-.inline-related h3 span.delete {padding-left:20px; position:absolute; top:2px; right:10px;}
-.inline-related h3 span.delete label {margin-left:2px; font-size: 11px;}
-.inline-related fieldset {margin: 0; background:#fff; border: none; }
-.inline-related fieldset.module h3 { margin:0; padding:2px 5px 3px 5px; font-size:11px; text-align:left; font-weight:bold; background:#bcd; color:#fff; }
-.inline-related.tabular fieldset.module table {width:100%;}
-.last-related fieldset {border: none;}
-
-.inline-group .tabular tr.has_original td {padding-top:2em;}
-.inline-group .tabular tr td.original { padding:2px 0 0 0; width:0; _position:relative; }
-.inline-group .tabular th.original {width:0px; padding:0;}
-.inline-group .tabular td.original p {position:absolute; left:0; height:1.1em; padding:2px 7px; overflow:hidden; font-size:9px; font-weight:bold; color:#666; _width:700px;     }
-.inline-group ul.tools {padding:0; margin: 0; list-style:none;}
-.inline-group ul.tools li {display:inline; padding:0 5px;}
-.inline-group ul.tools a.add {background:url(../img/admin/icon_addlink.gif) 0 50% no-repeat; padding-left:14px;}
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/media/css/global.css b/webapp/django/contrib/admin/media/css/global.css
deleted file mode 100644
index fc2ab73..0000000
--- a/webapp/django/contrib/admin/media/css/global.css
+++ /dev/null
@@ -1,142 +0,0 @@
-body { margin:0; padding:0; font-size:12px; font-family:"Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; color:#333; background:#fff; }
-
-/* LINKS */
-a:link, a:visited { color: #5b80b2; text-decoration:none; }
-a:hover { color: #036; }
-a img { border:none; }
-a.section:link, a.section:visited { color: white; text-decoration:none; }
-
-/* GLOBAL DEFAULTS */
-p, ol, ul, dl { margin:.2em 0 .8em 0; }
-p { padding:0; line-height:140%; }
-
-h1,h2,h3,h4,h5 { font-weight:bold; }
-h1 { font-size:18px; color:#666; padding:0 6px 0 0; margin:0 0 .2em 0; }
-h2 { font-size:16px; margin:1em 0 .5em 0; }
-h2.subhead { font-weight:normal;margin-top:0; }
-h3 { font-size:14px; margin:.8em 0 .3em 0; color:#666; font-weight:bold; }
-h4 { font-size:12px; margin:1em 0 .8em 0; padding-bottom:3px; }
-h5 { font-size:10px; margin:1.5em 0 .5em 0; color:#666; text-transform:uppercase; letter-spacing:1px; }
-
-ul li { list-style-type:square; padding:1px 0; }
-ul.plainlist { margin-left:0 !important; }
-ul.plainlist li { list-style-type:none; }
-li ul { margin-bottom:0; }
-li, dt, dd { font-size:11px; line-height:14px; }
-dt { font-weight:bold; margin-top:4px; }
-dd { margin-left:0; }
-
-form { margin:0; padding:0; }
-fieldset { margin:0; padding:0; }
-
-blockquote { font-size:11px; color:#777; margin-left:2px; padding-left:10px; border-left:5px solid #ddd; }
-code, pre { font-family:"Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; background:inherit; color:#666; font-size:11px; }
-pre.literal-block { margin:10px; background:#eee; padding:6px 8px; }
-code strong { color:#930; }
-hr { clear:both; color:#eee; background-color:#eee; height:1px; border:none; margin:0; padding:0; font-size:1px; line-height:1px; }
-
-/* TEXT STYLES & MODIFIERS */
-.small { font-size:11px; }
-.tiny { font-size:10px; }
-p.tiny { margin-top:-2px; }
-.mini { font-size:9px; }
-p.mini { margin-top:-3px; }
-.help, p.help { font-size:10px !important; color:#999; }
-p img, h1 img, h2 img, h3 img, h4 img, td img { vertical-align:middle; }
-.quiet, a.quiet:link, a.quiet:visited { color:#999 !important;font-weight:normal !important; }
-.quiet strong { font-weight:bold !important; }
-.float-right { float:right; }
-.float-left { float:left; }
-.clear { clear:both; }
-.align-left { text-align:left; }
-.align-right { text-align:right; }
-.example { margin:10px 0; padding:5px 10px; background:#efefef; }
-.nowrap { white-space:nowrap; }
-
-/* TABLES */
-table { border-collapse:collapse; border-color:#ccc; }
-td, th { font-size:11px; line-height:13px; border-bottom:1px solid #eee; vertical-align:top; padding:5px; font-family:"Lucida Grande", Verdana, Arial, sans-serif; }
-th { text-align:left; font-size:12px; font-weight:bold; }
-thead th, 
-tfoot td { color:#666; padding:2px 5px; font-size:11px; background:#e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x; border-left:1px solid #ddd; border-bottom:1px solid #ddd; }
-tfoot td { border-bottom:none; border-top:1px solid #ddd; }
-thead th:first-child, 
-tfoot td:first-child { border-left:none !important; }
-thead th.optional { font-weight:normal !important; }
-fieldset table { border-right:1px solid #eee; }
-tr.row-label td { font-size:9px; padding-top:2px; padding-bottom:0; border-bottom:none; color:#666; margin-top:-1px; }
-tr.alt { background:#f6f6f6; }
-.row1 { background:#EDF3FE; }
-.row2 { background:white; }
-
-/* SORTABLE TABLES */
-thead th a:link, thead th a:visited { color:#666; display:block; }
-table thead th.sorted { background-position:bottom left !important; }
-table thead th.sorted a { padding-right:13px; }
-table thead th.ascending a { background:url(../img/admin/arrow-down.gif) right .4em no-repeat; }
-table thead th.descending a { background:url(../img/admin/arrow-up.gif) right .4em no-repeat; }
-
-/* ORDERABLE TABLES */
-table.orderable tbody tr td:hover { cursor:move; }
-table.orderable tbody tr td:first-child { padding-left:14px; background-image:url(../img/admin/nav-bg-grabber.gif); background-repeat:repeat-y; }
-table.orderable-initalized .order-cell, body>tr>td.order-cell { display:none; }
-
-/* FORM DEFAULTS */
-input, textarea, select { margin:2px 0; padding:2px 3px; vertical-align:middle; font-family:"Lucida Grande", Verdana, Arial, sans-serif; font-weight:normal; font-size:11px; }
-textarea { vertical-align:top !important; }
-input[type=text], input[type=password], textarea, select, .vTextField { border:1px solid #ccc; }
-
-/*  FORM BUTTONS  */
-input[type=submit], input[type=button], .submit-row input { background:white url(../img/admin/nav-bg.gif) bottom repeat-x; padding:3px; color:black; border:1px solid #bbb; border-color:#ddd #aaa #aaa #ddd; }
-input[type=submit]:active, input[type=button]:active { background-image:url(../img/admin/nav-bg-reverse.gif); background-position:top; }
-input[type=submit].default, .submit-row input.default { border:2px solid #5b80b2; background:#7CA0C7 url(../img/admin/default-bg.gif) bottom repeat-x; font-weight:bold; color:white; float:right; }
-input[type=submit].default:active { background-image:url(../img/admin/default-bg-reverse.gif); background-position:top; }
-
-/* MODULES */
-.module { border:1px solid #ccc; margin-bottom:5px; background:white; }
-.module p, .module ul, .module h3, .module h4, .module dl, .module pre { padding-left:10px; padding-right:10px; }
-.module blockquote { margin-left:12px; }
-.module ul, .module ol { margin-left:1.5em; }
-.module h3 { margin-top:.6em; }
-.module h2, .module caption, .inline-group h2 { margin:0; padding:2px 5px 3px 5px; font-size:11px; text-align:left; font-weight:bold; background:#7CA0C7 url(../img/admin/default-bg.gif) top left repeat-x; color:white; }
-.module table { border-collapse: collapse; }
-
-/* MESSAGES & ERRORS */
-ul.messagelist { padding:0 0 5px 0; margin:0; }
-ul.messagelist li { font-size:12px; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border-bottom:1px solid #ddd; color:#666; background:#ffc url(../img/admin/icon_success.gif) 5px .3em no-repeat; }
-.errornote { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid red; color:red;background:#ffc url(../img/admin/icon_error.gif) 5px .3em no-repeat; }
-ul.errorlist { margin:0 !important; padding:0 !important; }
-.errorlist li { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid red; color:white; background:red url(../img/admin/icon_alert.gif) 5px .3em no-repeat; }
-td ul.errorlist { margin:0 !important; padding:0 !important; }
-td ul.errorlist li { margin:0 !important; }
-.error { background:#ffc; }
-.error input, .error select { border:1px solid red; }
-div.system-message { background: #ffc; margin: 10px; padding: 6px 8px; font-size: .8em; }
-div.system-message p.system-message-title { padding:4px 5px 4px 25px; margin:0; color:red; background:#ffc url(../img/admin/icon_error.gif) 5px .3em no-repeat; }
-.description { font-size:12px; padding:5px 0 0 12px; }
-
-/* BREADCRUMBS */
-div.breadcrumbs { background:white url(../img/admin/nav-bg-reverse.gif) 0 -10px repeat-x; padding:2px 8px 3px 8px; font-size:11px;  color:#999;  border-top:1px solid white; border-bottom:1px solid #ccc; text-align:left; }
-
-/* ACTION ICONS */
-.addlink { padding-left:12px; background:url(../img/admin/icon_addlink.gif) 0 .2em no-repeat; }
-.changelink { padding-left:12px; background:url(../img/admin/icon_changelink.gif) 0 .2em no-repeat; }
-.deletelink { padding-left:12px; background:url(../img/admin/icon_deletelink.gif) 0 .25em no-repeat; }
-a.deletelink:link, a.deletelink:visited { color:#CC3434; }
-a.deletelink:hover { color:#993333; }
-
-/* OBJECT TOOLS */
-.object-tools { font-size:10px; font-weight:bold; font-family:Arial,Helvetica,sans-serif; padding-left:0; float:right; position:relative; margin-top:-2.4em; margin-bottom:-2em; }
-.form-row .object-tools { margin-top:5px; margin-bottom:5px; float:none; height:2em; padding-left:3.5em; }
-.object-tools li { display:block; float:left; background:url(../img/admin/tool-left.gif) 0 0 no-repeat; padding:0 0 0 8px; margin-left:2px; height:16px; }
-.object-tools li:hover { background:url(../img/admin/tool-left_over.gif) 0 0 no-repeat; }
-.object-tools a:link, .object-tools a:visited { display:block; float:left; color:white; padding:.1em 14px .1em 8px; height:14px; background:#999 url(../img/admin/tool-right.gif) 100% 0 no-repeat; }
-.object-tools a:hover, .object-tools li:hover a { background:#5b80b2 url(../img/admin/tool-right_over.gif) 100% 0 no-repeat; }
-.object-tools a.viewsitelink, .object-tools a.golink { background:#999 url(../img/admin/tooltag-arrowright.gif) top right no-repeat; padding-right:28px; }
-.object-tools a.viewsitelink:hover, .object-tools a.golink:hover { background:#5b80b2 url(../img/admin/tooltag-arrowright_over.gif) top right no-repeat; }
-.object-tools a.addlink { background:#999 url(../img/admin/tooltag-add.gif) top right no-repeat; padding-right:28px; }
-.object-tools a.addlink:hover { background:#5b80b2 url(../img/admin/tooltag-add_over.gif) top right no-repeat; }
-
-/* OBJECT HISTORY */
-table#change-history { width:100%; }
-table#change-history tbody th { width:16em; }
diff --git a/webapp/django/contrib/admin/media/css/layout.css b/webapp/django/contrib/admin/media/css/layout.css
deleted file mode 100644
index 17c5286..0000000
--- a/webapp/django/contrib/admin/media/css/layout.css
+++ /dev/null
@@ -1,29 +0,0 @@
-/* PAGE STRUCTURE */
-#container { position:relative; width:100%; min-width:760px; padding:0; }
-#content { margin:10px 15px; }
-#header { width:100%; }
-#content-main { float:left; width:100%; }
-#content-related { float:right; width:18em; position:relative; margin-right:-19em; }
-#footer { clear:both; padding:10px; }
-
-/*  COLUMN TYPES  */
-.colMS { margin-right:20em !important; }
-.colSM { margin-left:20em !important; }
-.colSM #content-related { float:left; margin-right:0; margin-left:-19em; }
-.colSM #content-main { float:right; }
-.popup .colM { width:95%; }
-.subcol { float:left; width:46%; margin-right:15px; }
-.dashboard #content { width:500px; }
-
-/*  HEADER  */
-#header { background:#417690; color:#ffc; overflow:hidden; }
-#header a:link, #header a:visited { color:white; }
-#header a:hover { text-decoration:underline; }
-#branding h1 { padding:0 10px; font-size:18px; margin:8px 0; font-weight:normal; color:#f4f379; }
-#branding h2 { padding:0 10px; font-size:14px; margin:-8px 0 8px 0; font-weight:normal; color:#ffc; }
-#user-tools { position:absolute; top:0; right:0; padding:1.2em 10px; font-size:11px; text-align:right; }
-
-/* SIDEBAR */
-#content-related h3 { font-size:12px; color:#666; margin-bottom:3px; }
-#content-related h4 { font-size:11px; }
-#content-related .module h2 { background:#eee url(../img/admin/nav-bg.gif) bottom left repeat-x; color:#666; }
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/media/css/login.css b/webapp/django/contrib/admin/media/css/login.css
deleted file mode 100644
index f904957..0000000
--- a/webapp/django/contrib/admin/media/css/login.css
+++ /dev/null
@@ -1,13 +0,0 @@
-@import url('base.css');
-@import url('layout.css');
-
-/* LOGIN FORM */
-body.login { background:#eee; }
-.login #container { background:white; border:1px solid #ccc; width:28em; min-width:300px; margin-left:auto; margin-right:auto; margin-top:100px; }
-.login #content-main { width:100%; }
-.login form { margin-top:1em; }
-.login .form-row { padding:4px 0; float:left; width:100%; }
-.login .form-row label { float:left; width:9em; padding-right:0.5em; line-height:2em; text-align:right; font-size:1em; color:#333; }
-.login .form-row #id_username, .login .form-row #id_password { width:14em; }
-.login span.help { font-size:10px; display:block; }
-.login .submit-row { clear:both; padding:1em 0 0 9.4em; }
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/media/css/null.css b/webapp/django/contrib/admin/media/css/null.css
deleted file mode 100644
index 1a93f22..0000000
--- a/webapp/django/contrib/admin/media/css/null.css
+++ /dev/null
@@ -1 +0,0 @@
-/* Nothing to see here. Dummy file to feed to the high pass filter which hides CSS from IE5/win. Details: http://tantek.com/CSS/Examples/highpass.html */
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/media/css/patch-iewin.css b/webapp/django/contrib/admin/media/css/patch-iewin.css
deleted file mode 100644
index 2de1305..0000000
--- a/webapp/django/contrib/admin/media/css/patch-iewin.css
+++ /dev/null
@@ -1,8 +0,0 @@
-* html #container { position:static; } /* keep header from flowing off the page */
-* html .colMS #content-related { margin-right:0; margin-left:10px; position:static; } /* put the right sidebars back on the page */
-* html .colSM #content-related { margin-right:10px; margin-left:-115px; position:static; } /* put the left sidebars back on the page */
-* html .form-row { height:1%; }
-* html .dashboard #content { width:768px; } /* proper fixed width for dashboard in IE6 */
-* html .dashboard #content-main { width:535px; } /* proper fixed width for dashboard in IE6 */
-* html #changelist-filter ul { margin-right:-10px; } /* fix right margin for changelist filters in IE6 */
-* html .change-list .filtered { height:400px; } /* IE ignores min-height, but treats height as if it were min-height */
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/media/css/rtl.css b/webapp/django/contrib/admin/media/css/rtl.css
deleted file mode 100644
index 900ddbd..0000000
--- a/webapp/django/contrib/admin/media/css/rtl.css
+++ /dev/null
@@ -1,51 +0,0 @@
-body { direction: rtl; }
-
-/* login styles */
-
-.login .form-row { float:right; }
-.login .form-row label { float:right; padding-left:0.5em; padding-right:0; text-align:left;}
-.login .submit-row { clear:both; padding:1em 9.4em 0 0; }
-
-
-/* global styles */
-th { text-align: right; }
-.module h2, .module caption { text-align: right; }
-.addlink, .changelink { padding-left:0px; padding-right:12px; background-position:100% 0.2em; }
-.deletelink { padding-left:0px; padding-right:12px; background-position:100% 0.25em; }
-.object-tools { float:left; }
-
-
-/* layout styles */
-#user-tools { right:auto; left:0; text-align:left; }
-div.breadcrumbs { text-align:right; }
-#content-main { float:right;}
-#content-related { float:left; margin-left:-19em; margin-right:auto;}
-.colMS { margin-left:20em !important; margin-right:10px !important;}
-
-/* dashboard styles */
-.dashboard .module table td a { padding-left:.6em; padding-right:12px; }
-
-/* changelists styles */
-.change-list .filtered { background:white url(../img/admin/changelist-bg_rtl.gif) top left repeat-y !important; }
-.change-list .filtered table { border-left:1px solid #ddd; border-right:0px none; }
-#changelist-filter { right:auto; left:0; border-left:0px none; border-right:1px solid #ddd;}
-.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:0px !important; margin-left:160px !important; }
-#changelist-filter li.selected { border-left:0px none; padding-left:0px; margin-left:0; border-right:5px solid #ccc; padding-right:5px;margin-right:-10px; }
-
-/* form styles */
-.aligned label { padding:0 0 3px 1em;  float:right; }
-.submit-row { text-align: left }
-.vDateField, .vTimeField { margin-left:2px; }
-form ul.inline li { float:right; padding-right:0; padding-left:7px; }
-input[type=submit].default, .submit-row input.default { float:left; }
-
-/* widget styles */
-.calendarnav-previous { top:0; left:auto; right:0; }
-.calendarnav-next { top:0; right:auto; left:0;}
-.calendar caption, .calendarbox h2 { text-align:center; }
-
-.selector { float: right;}
-.selector .selector-filter { text-align: right;}
-
-/* x unsorted */
-.inline-related h2 { text-align:right }
diff --git a/webapp/django/contrib/admin/media/css/widgets.css b/webapp/django/contrib/admin/media/css/widgets.css
deleted file mode 100644
index 67d9662..0000000
--- a/webapp/django/contrib/admin/media/css/widgets.css
+++ /dev/null
@@ -1,101 +0,0 @@
-/* SELECTOR (FILTER INTERFACE) */
-.selector { width:580px; float:left; }
-.selector select { width:270px; height:17.2em; }
-.selector-available, .selector-chosen { float:left; width:270px; text-align:center; margin-bottom:5px; }
-.selector-available h2, .selector-chosen h2 { border:1px solid #ccc; }
-.selector .selector-available h2 { background:white url(../img/admin/nav-bg.gif) bottom left repeat-x; color:#666; }
-.selector .selector-filter { background:white; border:1px solid #ccc; border-width:0 1px; padding:3px; color:#999; font-size:10px; margin:0; text-align:left; }
-.selector .selector-chosen .selector-filter { padding:4px 5px; }
-.selector .selector-available input { width:230px; }
-.selector ul.selector-chooser { float:left; width:22px; height:50px; background:url(../img/admin/chooser-bg.gif) top center no-repeat; margin:8em 3px 0 3px; padding:0; }
-.selector-chooser li { margin:0; padding:3px; list-style-type:none; }
-.selector select { margin-bottom:5px; margin-top:0; }
-.selector-add, .selector-remove { width:16px; height:16px; display:block; text-indent:-3000px; }
-.selector-add { background:url(../img/admin/selector-add.gif) top center no-repeat; margin-bottom:2px; }
-.selector-remove { background:url(../img/admin/selector-remove.gif) top center no-repeat; }
-a.selector-chooseall, a.selector-clearall { display:block; width:6em; text-align:left; margin-left:auto; margin-right:auto; font-weight:bold; color:#666;  padding:3px 0 3px 18px; }
-a.selector-chooseall:hover, a.selector-clearall:hover { color:#036; }
-a.selector-chooseall { width:7em; background:url(../img/admin/selector-addall.gif) left center no-repeat; }
-a.selector-clearall { background:url(../img/admin/selector-removeall.gif) left center no-repeat; }
-
-/* STACKED SELECTORS */
-.stacked { float:left; width:500px; }
-.stacked select { width:480px; height:10.1em; }
-.stacked .selector-available, .stacked .selector-chosen { width:480px; }
-.stacked .selector-available { margin-bottom:0; }
-.stacked .selector-available input { width:442px; }
-.stacked ul.selector-chooser { height:22px; width:50px; margin:0 0 3px 40%; background:url(../img/admin/chooser_stacked-bg.gif) top center no-repeat; }
-.stacked .selector-chooser li { float:left; padding:3px 3px 3px 5px; }
-.stacked .selector-chooseall, .stacked .selector-clearall { display:none; }
-.stacked .selector-add { background-image:url(../img/admin/selector_stacked-add.gif); }
-.stacked .selector-remove { background-image:url(../img/admin/selector_stacked-remove.gif); }
-
-/* DATE AND TIME */
-p.datetime { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; }
-.datetime span { font-size:11px; color:#ccc; font-weight:normal; white-space:nowrap; }
-.vDateField { margin-left:4px; }
-table p.datetime { font-size:10px; margin-left:0; padding-left:0; }
-
-/* FILE UPLOADS */
-p.file-upload { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; }
-.file-upload a { font-weight:normal; }
-.file-upload .deletelink { margin-left:5px; }
-
-/* CALENDARS & CLOCKS */
-.calendarbox, .clockbox { margin:5px auto; font-size:11px; width:16em; text-align:center; background:white; position:relative; }
-.clockbox { width:auto; }
-.calendar { margin:0; padding: 0; }
-.calendar table { margin:0; padding:0; border-collapse:collapse; background:white; width:99%; }
-.calendar caption, .calendarbox h2 { margin: 0; font-size:11px; text-align:center; border-top:none; }
-.calendar th { font-size:10px; color:#666; padding:2px 3px; text-align:center; background:#e1e1e1 url(../img/admin/nav-bg.gif) 0 50% repeat-x; border-bottom:1px solid #ddd; }
-.calendar td { font-size:11px; text-align: center; padding: 0; border-top:1px solid #eee; border-bottom:none; }
-.calendar td.selected a { background: #C9DBED; }
-.calendar td.nonday { background:#efefef; }
-.calendar td.today a { background:#ffc; }
-.calendar td a, .timelist a { display: block; font-weight:bold; padding:4px; text-decoration: none; color:#444; }
-.calendar td a:hover, .timelist a:hover { background: #5b80b2; color:white; }
-.calendar td a:active, .timelist a:active { background: #036; color:white; }
-.calendarnav { font-size:10px; text-align: center; color:#ccc; margin:0; padding:1px 3px; }
-.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover { color: #999; }
-.calendar-shortcuts { background:white; font-size:10px; line-height:11px; border-top:1px solid #eee; padding:3px 0 4px; color:#ccc; }
-.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { display:block; position:absolute; font-weight:bold; font-size:12px; background:#C9DBED url(../img/admin/default-bg.gif) bottom left repeat-x; padding:1px 4px 2px 4px; color:white; }
-.calendarnav-previous:hover, .calendarnav-next:hover { background:#036; }
-.calendarnav-previous { top:0; left:0; }
-.calendarnav-next { top:0; right:0; }
-.calendar-cancel { margin:0 !important; padding:0; font-size:10px; background:#e1e1e1 url(../img/admin/nav-bg.gif) 0 50% repeat-x;  border-top:1px solid #ddd; }
-.calendar-cancel a { padding:2px; color:#999; }
-ul.timelist, .timelist li { list-style-type:none; margin:0; padding:0; }
-.timelist a { padding:2px; }
-
-/* INLINE ORDERER */
-ul.orderer {  position:relative; padding:0 !important; margin:0 !important; list-style-type:none; }
-ul.orderer li { list-style-type:none; display:block; padding:0; margin:0; border:1px solid #bbb; border-width:0 1px 1px 0; white-space:nowrap; overflow:hidden; background:#e2e2e2 url(../img/admin/nav-bg-grabber.gif) repeat-y; }
-ul.orderer li:hover { cursor:move; background-color:#ddd; }
-ul.orderer li a.selector { margin-left:12px; overflow:hidden; width:83%; font-size:10px !important; padding:0.6em 0; }
-ul.orderer li a:link, ul.orderer li a:visited { color:#333; }
-ul.orderer li .inline-deletelink { position:absolute; right:4px; margin-top:0.6em; }
-ul.orderer li.selected { background-color:#f8f8f8; border-right-color:#f8f8f8; }
-ul.orderer li.deleted { background:#bbb url(../img/admin/deleted-overlay.gif); }
-ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited { color:#888; }
-ul.orderer li.deleted .inline-deletelink { background-image:url(../img/admin/inline-restore.png);  }
-ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover { cursor:default; }
-
-/* EDIT INLINE */
-.inline-deletelink { display:block; text-indent:-9999px; background:transparent url(../img/admin/inline-delete.png) no-repeat; width:15px; height:15px; margin:0.4em 0; border: 0px none; }
-.inline-deletelink:hover { background-position:-15px 0; cursor:pointer; }
-.editinline button.addlink { border: 0px none; color: #5b80b2; font-size: 100%; cursor: pointer; }
-.editinline button.addlink:hover { color: #036; cursor: pointer; }
-.editinline table .help { text-align:right; float:right; padding-left:2em; }
-.editinline tfoot .addlink { white-space:nowrap; }
-.editinline table thead th:last-child { border-left:none; }
-.editinline tr.deleted { background:#ddd url(../img/admin/deleted-overlay.gif); }
-.editinline tr.deleted .inline-deletelink { background-image:url(../img/admin/inline-restore.png); }
-.editinline tr.deleted td:hover { cursor:default; }
-.editinline tr.deleted td:first-child { background-image:none !important; }
-
-/* EDIT INLINE - STACKED */
-.editinline-stacked { min-width:758px; }
-.editinline-stacked .inline-object { margin-left:210px; background:white; }
-.editinline-stacked .inline-source { float:left; width:200px; background:#f8f8f8;  }
-.editinline-stacked .inline-splitter { float:left; width:9px; background:#f8f8f8 url(../img/admin/inline-splitter-bg.gif) 50% 50% no-repeat; border-right:1px solid #ccc; }
-.editinline-stacked .controls { clear:both; background:#e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x; padding:3px 4px; font-size:11px; border-top:1px solid #ddd; }
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/media/img/admin/arrow-down.gif b/webapp/django/contrib/admin/media/img/admin/arrow-down.gif
deleted file mode 100644
index a967b9f..0000000
--- a/webapp/django/contrib/admin/media/img/admin/arrow-down.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/arrow-up.gif b/webapp/django/contrib/admin/media/img/admin/arrow-up.gif
deleted file mode 100644
index 3fe4851..0000000
--- a/webapp/django/contrib/admin/media/img/admin/arrow-up.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/changelist-bg.gif b/webapp/django/contrib/admin/media/img/admin/changelist-bg.gif
deleted file mode 100644
index 7f46994..0000000
--- a/webapp/django/contrib/admin/media/img/admin/changelist-bg.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/changelist-bg_rtl.gif b/webapp/django/contrib/admin/media/img/admin/changelist-bg_rtl.gif
deleted file mode 100644
index 2379712..0000000
--- a/webapp/django/contrib/admin/media/img/admin/changelist-bg_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/chooser-bg.gif b/webapp/django/contrib/admin/media/img/admin/chooser-bg.gif
deleted file mode 100644
index 30e83c2..0000000
--- a/webapp/django/contrib/admin/media/img/admin/chooser-bg.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/chooser_stacked-bg.gif b/webapp/django/contrib/admin/media/img/admin/chooser_stacked-bg.gif
deleted file mode 100644
index 5d104b6..0000000
--- a/webapp/django/contrib/admin/media/img/admin/chooser_stacked-bg.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/default-bg-reverse.gif b/webapp/django/contrib/admin/media/img/admin/default-bg-reverse.gif
deleted file mode 100644
index 0873281..0000000
--- a/webapp/django/contrib/admin/media/img/admin/default-bg-reverse.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/default-bg.gif b/webapp/django/contrib/admin/media/img/admin/default-bg.gif
deleted file mode 100644
index 003aeca..0000000
--- a/webapp/django/contrib/admin/media/img/admin/default-bg.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/deleted-overlay.gif b/webapp/django/contrib/admin/media/img/admin/deleted-overlay.gif
deleted file mode 100644
index dc3828f..0000000
--- a/webapp/django/contrib/admin/media/img/admin/deleted-overlay.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon-no.gif b/webapp/django/contrib/admin/media/img/admin/icon-no.gif
deleted file mode 100644
index 1b4ee58..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon-no.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon-unknown.gif b/webapp/django/contrib/admin/media/img/admin/icon-unknown.gif
deleted file mode 100644
index cfd2b02..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon-unknown.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon-yes.gif b/webapp/django/contrib/admin/media/img/admin/icon-yes.gif
deleted file mode 100644
index 7399282..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon-yes.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_addlink.gif b/webapp/django/contrib/admin/media/img/admin/icon_addlink.gif
deleted file mode 100644
index ee70e1a..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_addlink.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_alert.gif b/webapp/django/contrib/admin/media/img/admin/icon_alert.gif
deleted file mode 100644
index a1dde26..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_alert.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_calendar.gif b/webapp/django/contrib/admin/media/img/admin/icon_calendar.gif
deleted file mode 100644
index 7587b30..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_calendar.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_changelink.gif b/webapp/django/contrib/admin/media/img/admin/icon_changelink.gif
deleted file mode 100644
index e1b9afd..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_changelink.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_clock.gif b/webapp/django/contrib/admin/media/img/admin/icon_clock.gif
deleted file mode 100644
index ff2d57e..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_clock.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_deletelink.gif b/webapp/django/contrib/admin/media/img/admin/icon_deletelink.gif
deleted file mode 100644
index 72523e3..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_deletelink.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_error.gif b/webapp/django/contrib/admin/media/img/admin/icon_error.gif
deleted file mode 100644
index 3730a00..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_error.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_searchbox.png b/webapp/django/contrib/admin/media/img/admin/icon_searchbox.png
deleted file mode 100644
index 8ab579e..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_searchbox.png
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/icon_success.gif b/webapp/django/contrib/admin/media/img/admin/icon_success.gif
deleted file mode 100644
index 5cf90a1..0000000
--- a/webapp/django/contrib/admin/media/img/admin/icon_success.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/inline-delete-8bit.png b/webapp/django/contrib/admin/media/img/admin/inline-delete-8bit.png
deleted file mode 100644
index 95caf59..0000000
--- a/webapp/django/contrib/admin/media/img/admin/inline-delete-8bit.png
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/inline-delete.png b/webapp/django/contrib/admin/media/img/admin/inline-delete.png
deleted file mode 100644
index d59bcd2..0000000
--- a/webapp/django/contrib/admin/media/img/admin/inline-delete.png
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/inline-restore-8bit.png b/webapp/django/contrib/admin/media/img/admin/inline-restore-8bit.png
deleted file mode 100644
index e087c8e..0000000
--- a/webapp/django/contrib/admin/media/img/admin/inline-restore-8bit.png
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/inline-restore.png b/webapp/django/contrib/admin/media/img/admin/inline-restore.png
deleted file mode 100644
index efdd92a..0000000
--- a/webapp/django/contrib/admin/media/img/admin/inline-restore.png
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/inline-splitter-bg.gif b/webapp/django/contrib/admin/media/img/admin/inline-splitter-bg.gif
deleted file mode 100644
index 32ac5b3..0000000
--- a/webapp/django/contrib/admin/media/img/admin/inline-splitter-bg.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/nav-bg-grabber.gif b/webapp/django/contrib/admin/media/img/admin/nav-bg-grabber.gif
deleted file mode 100644
index 0a784fa..0000000
--- a/webapp/django/contrib/admin/media/img/admin/nav-bg-grabber.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/nav-bg-reverse.gif b/webapp/django/contrib/admin/media/img/admin/nav-bg-reverse.gif
deleted file mode 100644
index f11029f..0000000
--- a/webapp/django/contrib/admin/media/img/admin/nav-bg-reverse.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/nav-bg.gif b/webapp/django/contrib/admin/media/img/admin/nav-bg.gif
deleted file mode 100644
index f8402b8..0000000
--- a/webapp/django/contrib/admin/media/img/admin/nav-bg.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/selector-add.gif b/webapp/django/contrib/admin/media/img/admin/selector-add.gif
deleted file mode 100644
index 50132d1..0000000
--- a/webapp/django/contrib/admin/media/img/admin/selector-add.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/selector-addall.gif b/webapp/django/contrib/admin/media/img/admin/selector-addall.gif
deleted file mode 100644
index d6e7c63..0000000
--- a/webapp/django/contrib/admin/media/img/admin/selector-addall.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/selector-remove.gif b/webapp/django/contrib/admin/media/img/admin/selector-remove.gif
deleted file mode 100644
index 2b9b0a2..0000000
--- a/webapp/django/contrib/admin/media/img/admin/selector-remove.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/selector-removeall.gif b/webapp/django/contrib/admin/media/img/admin/selector-removeall.gif
deleted file mode 100644
index 5a44219..0000000
--- a/webapp/django/contrib/admin/media/img/admin/selector-removeall.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/selector-search.gif b/webapp/django/contrib/admin/media/img/admin/selector-search.gif
deleted file mode 100644
index 6d5f4c7..0000000
--- a/webapp/django/contrib/admin/media/img/admin/selector-search.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/selector_stacked-add.gif b/webapp/django/contrib/admin/media/img/admin/selector_stacked-add.gif
deleted file mode 100644
index 7426169..0000000
--- a/webapp/django/contrib/admin/media/img/admin/selector_stacked-add.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/selector_stacked-remove.gif b/webapp/django/contrib/admin/media/img/admin/selector_stacked-remove.gif
deleted file mode 100644
index 60412ce..0000000
--- a/webapp/django/contrib/admin/media/img/admin/selector_stacked-remove.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tool-left.gif b/webapp/django/contrib/admin/media/img/admin/tool-left.gif
deleted file mode 100644
index 011490f..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tool-left.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tool-left_over.gif b/webapp/django/contrib/admin/media/img/admin/tool-left_over.gif
deleted file mode 100644
index 937e07b..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tool-left_over.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tool-right.gif b/webapp/django/contrib/admin/media/img/admin/tool-right.gif
deleted file mode 100644
index cdc140c..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tool-right.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tool-right_over.gif b/webapp/django/contrib/admin/media/img/admin/tool-right_over.gif
deleted file mode 100644
index 4db977e..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tool-right_over.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tooltag-add.gif b/webapp/django/contrib/admin/media/img/admin/tooltag-add.gif
deleted file mode 100644
index 8b53d49..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tooltag-add.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tooltag-add_over.gif b/webapp/django/contrib/admin/media/img/admin/tooltag-add_over.gif
deleted file mode 100644
index bfc52f1..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tooltag-add_over.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tooltag-arrowright.gif b/webapp/django/contrib/admin/media/img/admin/tooltag-arrowright.gif
deleted file mode 100644
index cdaaae7..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tooltag-arrowright.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif b/webapp/django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif
deleted file mode 100644
index 7163189..0000000
--- a/webapp/django/contrib/admin/media/img/admin/tooltag-arrowright_over.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/gis/move_vertex_off.png b/webapp/django/contrib/admin/media/img/gis/move_vertex_off.png
deleted file mode 100644
index 296b2e2..0000000
--- a/webapp/django/contrib/admin/media/img/gis/move_vertex_off.png
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/img/gis/move_vertex_on.png b/webapp/django/contrib/admin/media/img/gis/move_vertex_on.png
deleted file mode 100644
index 21f4758..0000000
--- a/webapp/django/contrib/admin/media/img/gis/move_vertex_on.png
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/admin/media/js/SelectBox.js b/webapp/django/contrib/admin/media/js/SelectBox.js
deleted file mode 100644
index f28c861..0000000
--- a/webapp/django/contrib/admin/media/js/SelectBox.js
+++ /dev/null
@@ -1,111 +0,0 @@
-var SelectBox = {
-    cache: new Object(),
-    init: function(id) {
-        var box = document.getElementById(id);
-        var node;
-        SelectBox.cache[id] = new Array();
-        var cache = SelectBox.cache[id];
-        for (var i = 0; (node = box.options[i]); i++) {
-            cache.push({value: node.value, text: node.text, displayed: 1});
-        }
-    },
-    redisplay: function(id) {
-        // Repopulate HTML select box from cache
-        var box = document.getElementById(id);
-        box.options.length = 0; // clear all options
-        for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) {
-            var node = SelectBox.cache[id][i];
-            if (node.displayed) {
-                box.options[box.options.length] = new Option(node.text, node.value, false, false);
-            }
-        }
-    },
-    filter: function(id, text) {
-        // Redisplay the HTML select box, displaying only the choices containing ALL
-        // the words in text. (It's an AND search.)
-        var tokens = text.toLowerCase().split(/\s+/);
-        var node, token;
-        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
-            node.displayed = 1;
-            for (var j = 0; (token = tokens[j]); j++) {
-                if (node.text.toLowerCase().indexOf(token) == -1) {
-                    node.displayed = 0;
-                }
-            }
-        }
-        SelectBox.redisplay(id);
-    },
-    delete_from_cache: function(id, value) {
-        var node, delete_index = null;
-        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
-            if (node.value == value) {
-                delete_index = i;
-                break;
-            }
-        }
-        var j = SelectBox.cache[id].length - 1;
-        for (var i = delete_index; i < j; i++) {
-            SelectBox.cache[id][i] = SelectBox.cache[id][i+1];
-        }
-        SelectBox.cache[id].length--;
-    },
-    add_to_cache: function(id, option) {
-        SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});
-    },
-    cache_contains: function(id, value) {
-        // Check if an item is contained in the cache
-        var node;
-        for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
-            if (node.value == value) {
-                return true;
-            }
-        }
-        return false;
-    },
-    move: function(from, to) {
-        var from_box = document.getElementById(from);
-        var to_box = document.getElementById(to);
-        var option;
-        for (var i = 0; (option = from_box.options[i]); i++) {
-            if (option.selected && SelectBox.cache_contains(from, option.value)) {
-                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
-                SelectBox.delete_from_cache(from, option.value);
-            }
-        }
-        SelectBox.redisplay(from);
-        SelectBox.redisplay(to);
-    },
-    move_all: function(from, to) {
-        var from_box = document.getElementById(from);
-        var to_box = document.getElementById(to);
-        var option;
-        for (var i = 0; (option = from_box.options[i]); i++) {
-            if (SelectBox.cache_contains(from, option.value)) {
-                SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
-                SelectBox.delete_from_cache(from, option.value);
-            }
-        }
-        SelectBox.redisplay(from);
-        SelectBox.redisplay(to);
-    },
-    sort: function(id) {
-        SelectBox.cache[id].sort( function(a, b) {
-            a = a.text.toLowerCase();
-            b = b.text.toLowerCase();
-            try {
-                if (a > b) return 1;
-                if (a < b) return -1;
-            }
-            catch (e) {
-                // silently fail on IE 'unknown' exception
-            }
-            return 0;
-        } );
-    },
-    select_all: function(id) {
-        var box = document.getElementById(id);
-        for (var i = 0; i < box.options.length; i++) {
-            box.options[i].selected = 'selected';
-        }
-    }
-}
diff --git a/webapp/django/contrib/admin/media/js/SelectFilter2.js b/webapp/django/contrib/admin/media/js/SelectFilter2.js
deleted file mode 100644
index db946a6..0000000
--- a/webapp/django/contrib/admin/media/js/SelectFilter2.js
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-SelectFilter2 - Turns a multiple-select box into a filter interface.
-
-Different than SelectFilter because this is coupled to the admin framework.
-
-Requires core.js, SelectBox.js and addevent.js.
-*/
-
-function findForm(node) {
-    // returns the node of the form containing the given node
-    if (node.tagName.toLowerCase() != 'form') {
-        return findForm(node.parentNode);
-    }
-    return node;
-}
-
-var SelectFilter = {
-    init: function(field_id, field_name, is_stacked, admin_media_prefix) {
-        var from_box = document.getElementById(field_id);
-        from_box.id += '_from'; // change its ID
-        from_box.className = 'filtered';
-
-        // Remove <p class="info">, because it just gets in the way.
-        var ps = from_box.parentNode.getElementsByTagName('p');
-        for (var i=0; i<ps.length; i++) {
-            from_box.parentNode.removeChild(ps[i]);
-        }
-
-        // <div class="selector"> or <div class="selector stacked">
-        var selector_div = quickElement('div', from_box.parentNode);
-        selector_div.className = is_stacked ? 'selector stacked' : 'selector';
-
-        // <div class="selector-available">
-        var selector_available = quickElement('div', selector_div, '');
-        selector_available.className = 'selector-available';
-        quickElement('h2', selector_available, interpolate(gettext('Available %s'), [field_name]));
-        var filter_p = quickElement('p', selector_available, '');
-        filter_p.className = 'selector-filter';
-        quickElement('img', filter_p, '', 'src', admin_media_prefix + 'img/admin/selector-search.gif');
-        filter_p.appendChild(document.createTextNode(' '));
-        var filter_input = quickElement('input', filter_p, '', 'type', 'text');
-        filter_input.id = field_id + '_input';
-        selector_available.appendChild(from_box);
-        var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); })()');
-        choose_all.className = 'selector-chooseall';
-
-        // <ul class="selector-chooser">
-        var selector_chooser = quickElement('ul', selector_div, '');
-        selector_chooser.className = 'selector-chooser';
-        var add_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Add'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_from","' + field_id + '_to");})()');
-        add_link.className = 'selector-add';
-        var remove_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_to","' + field_id + '_from");})()');
-        remove_link.className = 'selector-remove';
-
-        // <div class="selector-chosen">
-        var selector_chosen = quickElement('div', selector_div, '');
-        selector_chosen.className = 'selector-chosen';
-        quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s'), [field_name]));
-        var selector_filter = quickElement('p', selector_chosen, gettext('Select your choice(s) and click '));
-        selector_filter.className = 'selector-filter';
-        quickElement('img', selector_filter, '', 'src', admin_media_prefix + (is_stacked ? 'img/admin/selector_stacked-add.gif':'img/admin/selector-add.gif'), 'alt', 'Add');
-        var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));
-        to_box.className = 'filtered';
-        var clear_all = quickElement('a', selector_chosen, gettext('Clear all'), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from");})()');
-        clear_all.className = 'selector-clearall';
-
-        from_box.setAttribute('name', from_box.getAttribute('name') + '_old');
-
-        // Set up the JavaScript event handlers for the select box filter interface
-        addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });
-        addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });
-        addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); });
-        addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); });
-        addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });
-        SelectBox.init(field_id + '_from');
-        SelectBox.init(field_id + '_to');
-        // Move selected from_box options to to_box
-        SelectBox.move(field_id + '_from', field_id + '_to');
-    },
-    filter_key_up: function(event, field_id) {
-        from = document.getElementById(field_id + '_from');
-        // don't submit form if user pressed Enter
-        if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
-            from.selectedIndex = 0;
-            SelectBox.move(field_id + '_from', field_id + '_to');
-            from.selectedIndex = 0;
-            return false;
-        }
-        var temp = from.selectedIndex;
-        SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value);
-        from.selectedIndex = temp;
-        return true;
-    },
-    filter_key_down: function(event, field_id) {
-        from = document.getElementById(field_id + '_from');
-        // right arrow -- move across
-        if ((event.which && event.which == 39) || (event.keyCode && event.keyCode == 39)) {
-            var old_index = from.selectedIndex;
-            SelectBox.move(field_id + '_from', field_id + '_to');
-            from.selectedIndex = (old_index == from.length) ? from.length - 1 : old_index;
-            return false;
-        }
-        // down arrow -- wrap around
-        if ((event.which && event.which == 40) || (event.keyCode && event.keyCode == 40)) {
-            from.selectedIndex = (from.length == from.selectedIndex + 1) ? 0 : from.selectedIndex + 1;
-        }
-        // up arrow -- wrap around
-        if ((event.which && event.which == 38) || (event.keyCode && event.keyCode == 38)) {
-            from.selectedIndex = (from.selectedIndex == 0) ? from.length - 1 : from.selectedIndex - 1;
-        }
-        return true;
-    }
-}
diff --git a/webapp/django/contrib/admin/media/js/admin/CollapsedFieldsets.js b/webapp/django/contrib/admin/media/js/admin/CollapsedFieldsets.js
deleted file mode 100644
index d66bec0..0000000
--- a/webapp/django/contrib/admin/media/js/admin/CollapsedFieldsets.js
+++ /dev/null
@@ -1,85 +0,0 @@
-// Finds all fieldsets with class="collapse", collapses them, and gives each
-// one a "Show" link that uncollapses it. The "Show" link becomes a "Hide"
-// link when the fieldset is visible.
-
-function findForm(node) {
-    // returns the node of the form containing the given node
-    if (node.tagName.toLowerCase() != 'form') {
-        return findForm(node.parentNode);
-    }
-    return node;
-}
-
-var CollapsedFieldsets = {
-    collapse_re: /\bcollapse\b/,   // Class of fieldsets that should be dealt with.
-    collapsed_re: /\bcollapsed\b/, // Class that fieldsets get when they're hidden.
-    collapsed_class: 'collapsed',
-    init: function() {
-        var fieldsets = document.getElementsByTagName('fieldset');
-        var collapsed_seen = false;
-        for (var i = 0, fs; fs = fieldsets[i]; i++) {
-            // Collapse this fieldset if it has the correct class, and if it
-            // doesn't have any errors. (Collapsing shouldn't apply in the case
-            // of error messages.)
-            if (fs.className.match(CollapsedFieldsets.collapse_re) && !CollapsedFieldsets.fieldset_has_errors(fs)) {
-                collapsed_seen = true;
-                // Give it an additional class, used by CSS to hide it.
-                fs.className += ' ' + CollapsedFieldsets.collapsed_class;
-                // (<a id="fieldsetcollapser3" class="collapse-toggle" href="#">Show</a>)
-                var collapse_link = document.createElement('a');
-                collapse_link.className = 'collapse-toggle';
-                collapse_link.id = 'fieldsetcollapser' + i;
-                collapse_link.onclick = new Function('CollapsedFieldsets.show('+i+'); return false;');
-                collapse_link.href = '#';
-                collapse_link.innerHTML = gettext('Show');
-                var h2 = fs.getElementsByTagName('h2')[0];
-                h2.appendChild(document.createTextNode(' ('));
-                h2.appendChild(collapse_link);
-                h2.appendChild(document.createTextNode(')'));
-            }
-        }
-        if (collapsed_seen) {
-            // Expand all collapsed fieldsets when form is submitted.
-            addEvent(findForm(document.getElementsByTagName('fieldset')[0]), 'submit', function() { CollapsedFieldsets.uncollapse_all(); });
-        }
-    },
-    fieldset_has_errors: function(fs) {
-        // Returns true if any fields in the fieldset have validation errors.
-        var divs = fs.getElementsByTagName('div');
-        for (var i=0; i<divs.length; i++) {
-            if (divs[i].className.match(/\berrors\b/)) {
-                return true;
-            }
-        }
-        return false;
-    },
-    show: function(fieldset_index) {
-        var fs = document.getElementsByTagName('fieldset')[fieldset_index];
-        // Remove the class name that causes the "display: none".
-        fs.className = fs.className.replace(CollapsedFieldsets.collapsed_re, '');
-        // Toggle the "Show" link to a "Hide" link
-        var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index);
-        collapse_link.onclick = new Function('CollapsedFieldsets.hide('+fieldset_index+'); return false;');
-        collapse_link.innerHTML = gettext('Hide');
-    },
-    hide: function(fieldset_index) {
-        var fs = document.getElementsByTagName('fieldset')[fieldset_index];
-        // Add the class name that causes the "display: none".
-        fs.className += ' ' + CollapsedFieldsets.collapsed_class;
-        // Toggle the "Hide" link to a "Show" link
-        var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index);
-        collapse_link.onclick = new Function('CollapsedFieldsets.show('+fieldset_index+'); return false;');
-        collapse_link.innerHTML = gettext('Show');
-    },
-
-    uncollapse_all: function() {
-        var fieldsets = document.getElementsByTagName('fieldset');
-        for (var i=0; i<fieldsets.length; i++) {
-            if (fieldsets[i].className.match(CollapsedFieldsets.collapsed_re)) {
-                CollapsedFieldsets.show(i);
-            }
-        }
-    }
-}
-
-addEvent(window, 'load', CollapsedFieldsets.init);
diff --git a/webapp/django/contrib/admin/media/js/admin/DateTimeShortcuts.js b/webapp/django/contrib/admin/media/js/admin/DateTimeShortcuts.js
deleted file mode 100644
index f57f97e..0000000
--- a/webapp/django/contrib/admin/media/js/admin/DateTimeShortcuts.js
+++ /dev/null
@@ -1,254 +0,0 @@
-// Inserts shortcut buttons after all of the following:
-//     <input type="text" class="vDateField">
-//     <input type="text" class="vTimeField">
-
-var DateTimeShortcuts = {
-    calendars: [],
-    calendarInputs: [],
-    clockInputs: [],
-    calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
-    calendarDivName2: 'calendarin',  // name of <div> that contains calendar
-    calendarLinkName: 'calendarlink',// name of the link that is used to toggle
-    clockDivName: 'clockbox',        // name of clock <div> that gets toggled
-    clockLinkName: 'clocklink',      // name of the link that is used to toggle
-    admin_media_prefix: '',
-    init: function() {
-        // Deduce admin_media_prefix by looking at the <script>s in the
-        // current document and finding the URL of *this* module.
-        var scripts = document.getElementsByTagName('script');
-        for (var i=0; i<scripts.length; i++) {
-            if (scripts[i].src.match(/DateTimeShortcuts/)) {
-                var idx = scripts[i].src.indexOf('js/admin/DateTimeShortcuts');
-                DateTimeShortcuts.admin_media_prefix = scripts[i].src.substring(0, idx);
-                break;
-            }
-        }
-
-        var inputs = document.getElementsByTagName('input');
-        for (i=0; i<inputs.length; i++) {
-            var inp = inputs[i];
-            if (inp.getAttribute('type') == 'text' && inp.className.match(/vTimeField/)) {
-                DateTimeShortcuts.addClock(inp);
-            }
-            else if (inp.getAttribute('type') == 'text' && inp.className.match(/vDateField/)) {
-                DateTimeShortcuts.addCalendar(inp);
-            }
-        }
-    },
-    // Add clock widget to a given field
-    addClock: function(inp) {
-        var num = DateTimeShortcuts.clockInputs.length;
-        DateTimeShortcuts.clockInputs[num] = inp;
-
-        // Shortcut links (clock icon and "Now" link)
-        var shortcuts_span = document.createElement('span');
-        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
-        var now_link = document.createElement('a');
-        now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().getHourMinuteSecond());");
-        now_link.appendChild(document.createTextNode(gettext('Now')));
-        var clock_link = document.createElement('a');
-        clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
-        clock_link.id = DateTimeShortcuts.clockLinkName + num;
-        quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/admin/icon_clock.gif', 'alt', gettext('Clock'));
-        shortcuts_span.appendChild(document.createTextNode('\240'));
-        shortcuts_span.appendChild(now_link);
-        shortcuts_span.appendChild(document.createTextNode('\240|\240'));
-        shortcuts_span.appendChild(clock_link);
-
-        // Create clock link div
-        //
-        // Markup looks like:
-        // <div id="clockbox1" class="clockbox module">
-        //     <h2>Choose a time</h2>
-        //     <ul class="timelist">
-        //         <li><a href="#">Now</a></li>
-        //         <li><a href="#">Midnight</a></li>
-        //         <li><a href="#">6 a.m.</a></li>
-        //         <li><a href="#">Noon</a></li>
-        //     </ul>
-        //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
-        // </div>
-
-        var clock_box = document.createElement('div');
-        clock_box.style.display = 'none';
-        clock_box.style.position = 'absolute';
-        clock_box.className = 'clockbox module';
-        clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);
-        document.body.appendChild(clock_box);
-        addEvent(clock_box, 'click', DateTimeShortcuts.cancelEventPropagation);
-
-        quickElement('h2', clock_box, gettext('Choose a time'));
-        time_list = quickElement('ul', clock_box, '');
-        time_list.className = 'timelist';
-        quickElement("a", quickElement("li", time_list, ""), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().getHourMinuteSecond());")
-        quickElement("a", quickElement("li", time_list, ""), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '00:00:00');")
-        quickElement("a", quickElement("li", time_list, ""), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '06:00:00');")
-        quickElement("a", quickElement("li", time_list, ""), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '12:00:00');")
-
-        cancel_p = quickElement('p', clock_box, '');
-        cancel_p.className = 'calendar-cancel';
-        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
-    },
-    openClock: function(num) {
-        var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num)
-        var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num)
-    
-        // Recalculate the clockbox position
-        // is it left-to-right or right-to-left layout ?
-        if (getStyle(document.body,'direction')!='rtl') {
-            clock_box.style.left = findPosX(clock_link) + 17 + 'px';
-        }
-        else {
-            // since style's width is in em, it'd be tough to calculate
-            // px value of it. let's use an estimated px for now
-            // TODO: IE returns wrong value for findPosX when in rtl mode
-            //       (it returns as it was left aligned), needs to be fixed.
-            clock_box.style.left = findPosX(clock_link) - 110 + 'px';
-        }
-        clock_box.style.top = findPosY(clock_link) - 30 + 'px';
-    
-        // Show the clock box
-        clock_box.style.display = 'block';
-        addEvent(window, 'click', function() { DateTimeShortcuts.dismissClock(num); return true; });
-    },
-    dismissClock: function(num) {
-       document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';
-       window.onclick = null;
-    },
-    handleClockQuicklink: function(num, val) {
-       DateTimeShortcuts.clockInputs[num].value = val;
-       DateTimeShortcuts.dismissClock(num);
-    },
-    // Add calendar widget to a given field.
-    addCalendar: function(inp) {
-        var num = DateTimeShortcuts.calendars.length;
-
-        DateTimeShortcuts.calendarInputs[num] = inp;
-
-        // Shortcut links (calendar icon and "Today" link)
-        var shortcuts_span = document.createElement('span');
-        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
-        var today_link = document.createElement('a');
-        today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
-        today_link.appendChild(document.createTextNode(gettext('Today')));
-        var cal_link = document.createElement('a');
-        cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');
-        cal_link.id = DateTimeShortcuts.calendarLinkName + num;
-        quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/admin/icon_calendar.gif', 'alt', gettext('Calendar'));
-        shortcuts_span.appendChild(document.createTextNode('\240'));
-        shortcuts_span.appendChild(today_link);
-        shortcuts_span.appendChild(document.createTextNode('\240|\240'));
-        shortcuts_span.appendChild(cal_link);
-
-        // Create calendarbox div.
-        //
-        // Markup looks like:
-        //
-        // <div id="calendarbox3" class="calendarbox module">
-        //     <h2>
-        //           <a href="#" class="link-previous">&lsaquo;</a>
-        //           <a href="#" class="link-next">&rsaquo;</a> February 2003
-        //     </h2>
-        //     <div class="calendar" id="calendarin3">
-        //         <!-- (cal) -->
-        //     </div>
-        //     <div class="calendar-shortcuts">
-        //          <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a>
-        //     </div>
-        //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
-        // </div>
-        var cal_box = document.createElement('div');
-        cal_box.style.display = 'none';
-        cal_box.style.position = 'absolute';
-        cal_box.className = 'calendarbox module';
-        cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num);
-        document.body.appendChild(cal_box);
-        addEvent(cal_box, 'click', DateTimeShortcuts.cancelEventPropagation);
-
-        // next-prev links
-        var cal_nav = quickElement('div', cal_box, '');
-        var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev('+num+');');
-        cal_nav_prev.className = 'calendarnav-previous';
-        var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');');
-        cal_nav_next.className = 'calendarnav-next';
-
-        // main box
-        var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);
-        cal_main.className = 'calendar';
-        DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));
-        DateTimeShortcuts.calendars[num].drawCurrent();
-
-        // calendar shortcuts
-        var shortcuts = quickElement('div', cal_box, '');
-        shortcuts.className = 'calendar-shortcuts';
-        quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);');
-        shortcuts.appendChild(document.createTextNode('\240|\240'));
-        quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
-        shortcuts.appendChild(document.createTextNode('\240|\240'));
-        quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);');
-
-        // cancel bar
-        var cancel_p = quickElement('p', cal_box, '');
-        cancel_p.className = 'calendar-cancel';
-        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');');
-    },
-    openCalendar: function(num) {
-        var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)
-        var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)
-	var inp = DateTimeShortcuts.calendarInputs[num];
-
-	// Determine if the current value in the input has a valid date.
-	// If so, draw the calendar with that date's year and month.
-	if (inp.value) {
-	    var date_parts = inp.value.split('-');
-	    var year = date_parts[0];
-	    var month = parseFloat(date_parts[1]);
-	    if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) {
-		DateTimeShortcuts.calendars[num].drawDate(month, year);
-	    }
-	}
-
-    
-        // Recalculate the clockbox position
-        // is it left-to-right or right-to-left layout ?
-        if (getStyle(document.body,'direction')!='rtl') {
-            cal_box.style.left = findPosX(cal_link) + 17 + 'px';
-        }
-        else {
-            // since style's width is in em, it'd be tough to calculate
-            // px value of it. let's use an estimated px for now
-            // TODO: IE returns wrong value for findPosX when in rtl mode
-            //       (it returns as it was left aligned), needs to be fixed.
-            cal_box.style.left = findPosX(cal_link) - 180 + 'px';
-        }
-        cal_box.style.top = findPosY(cal_link) - 75 + 'px';
-    
-        cal_box.style.display = 'block';
-        addEvent(window, 'click', function() { DateTimeShortcuts.dismissCalendar(num); return true; });
-    },
-    dismissCalendar: function(num) {
-        document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display = 'none';
-    },
-    drawPrev: function(num) {
-        DateTimeShortcuts.calendars[num].drawPreviousMonth();
-    },
-    drawNext: function(num) {
-        DateTimeShortcuts.calendars[num].drawNextMonth();
-    },
-    handleCalendarCallback: function(num) {
-        return "function(y, m, d) { DateTimeShortcuts.calendarInputs["+num+"].value = y+'-'+(m<10?'0':'')+m+'-'+(d<10?'0':'')+d; document.getElementById(DateTimeShortcuts.calendarDivName1+"+num+").style.display='none';}";
-    },
-    handleCalendarQuickLink: function(num, offset) {
-       var d = new Date();
-       d.setDate(d.getDate() + offset)
-       DateTimeShortcuts.calendarInputs[num].value = d.getISODate();
-       DateTimeShortcuts.dismissCalendar(num);
-    },
-    cancelEventPropagation: function(e) {
-        if (!e) e = window.event;
-        e.cancelBubble = true;
-        if (e.stopPropagation) e.stopPropagation();
-    }
-}
-
-addEvent(window, 'load', DateTimeShortcuts.init);
diff --git a/webapp/django/contrib/admin/media/js/admin/RelatedObjectLookups.js b/webapp/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
deleted file mode 100644
index ca578cc..0000000
--- a/webapp/django/contrib/admin/media/js/admin/RelatedObjectLookups.js
+++ /dev/null
@@ -1,77 +0,0 @@
-// Handles related-objects functionality: lookup link for raw_id_fields
-// and Add Another links.
-
-function html_unescape(text) {
-    // Unescape a string that was escaped using django.utils.html.escape.
-    text = text.replace(/&lt;/g, '<');
-    text = text.replace(/&gt;/g, '>');
-    text = text.replace(/&quot;/g, '"');
-    text = text.replace(/&#39;/g, "'");
-    text = text.replace(/&amp;/g, '&');
-    return text;
-}
-
-function showRelatedObjectLookupPopup(triggeringLink) {
-    var name = triggeringLink.id.replace(/^lookup_/, '');
-    // IE doesn't like periods in the window name, so convert temporarily.
-    name = name.replace(/\./g, '___');
-    var href;
-    if (triggeringLink.href.search(/\?/) >= 0) {
-        href = triggeringLink.href + '&pop=1';
-    } else {
-        href = triggeringLink.href + '?pop=1';
-    }
-    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
-    win.focus();
-    return false;
-}
-
-function dismissRelatedLookupPopup(win, chosenId) {
-    var name = win.name.replace(/___/g, '.');
-    var elem = document.getElementById(name);
-    if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
-        elem.value += ',' + chosenId;
-    } else {
-        document.getElementById(name).value = chosenId;
-    }
-    win.close();
-}
-
-function showAddAnotherPopup(triggeringLink) {
-    var name = triggeringLink.id.replace(/^add_/, '');
-    name = name.replace(/\./g, '___');
-    href = triggeringLink.href
-    if (href.indexOf('?') == -1) {
-        href += '?_popup=1';
-    } else {
-        href  += '&_popup=1';
-    }
-    var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
-    win.focus();
-    return false;
-}
-
-function dismissAddAnotherPopup(win, newId, newRepr) {
-    // newId and newRepr are expected to have previously been escaped by
-    // django.utils.html.escape.
-    newId = html_unescape(newId);
-    newRepr = html_unescape(newRepr);
-    var name = win.name.replace(/___/g, '.');
-    var elem = document.getElementById(name);
-    if (elem) {
-        if (elem.nodeName == 'SELECT') {
-            var o = new Option(newRepr, newId);
-            elem.options[elem.options.length] = o;
-            o.selected = true;
-        } else if (elem.nodeName == 'INPUT') {
-            elem.value = newId;
-        }
-    } else {
-        var toId = name + "_to";
-        elem = document.getElementById(toId);
-        var o = new Option(newRepr, newId);
-        SelectBox.add_to_cache(toId, o);
-        SelectBox.redisplay(toId);
-    }
-    win.close();
-}
diff --git a/webapp/django/contrib/admin/media/js/admin/ordering.js b/webapp/django/contrib/admin/media/js/admin/ordering.js
deleted file mode 100644
index 53c42f3..0000000
--- a/webapp/django/contrib/admin/media/js/admin/ordering.js
+++ /dev/null
@@ -1,137 +0,0 @@
-addEvent(window, 'load', reorder_init);
-
-var lis;
-var top = 0;
-var left = 0;
-var height = 30;
-
-function reorder_init() {
-    lis = document.getElementsBySelector('ul#orderthese li');
-    var input = document.getElementsBySelector('input[name=order_]')[0];
-    setOrder(input.value.split(','));
-    input.disabled = true;
-    draw();
-    // Now initialise the dragging behaviour
-    var limit = (lis.length - 1) * height;
-    for (var i = 0; i < lis.length; i++) {
-        var li = lis[i];
-        var img = document.getElementById('handle'+li.id);
-        li.style.zIndex = 1;
-        Drag.init(img, li, left + 10, left + 10, top + 10, top + 10 + limit);
-        li.onDragStart = startDrag;
-        li.onDragEnd = endDrag;
-        img.style.cursor = 'move';
-    }
-}
-
-function submitOrderForm() {
-    var inputOrder = document.getElementsBySelector('input[name=order_]')[0];
-    inputOrder.value = getOrder();
-    inputOrder.disabled=false;
-}
-
-function startDrag() {
-    this.style.zIndex = '10';
-    this.className = 'dragging';
-}
-
-function endDrag(x, y) {
-    this.style.zIndex = '1';
-    this.className = '';
-    // Work out how far along it has been dropped, using x co-ordinate
-    var oldIndex = this.index;
-    var newIndex = Math.round((y - 10 - top) / height);
-    // 'Snap' to the correct position
-    this.style.top = (10 + top + newIndex * height) + 'px';
-    this.index = newIndex;
-    moveItem(oldIndex, newIndex);
-}
-
-function moveItem(oldIndex, newIndex) {
-    // Swaps two items, adjusts the index and left co-ord for all others
-    if (oldIndex == newIndex) {
-        return; // Nothing to swap;
-    }
-    var direction, lo, hi;
-    if (newIndex > oldIndex) {
-        lo = oldIndex;
-        hi = newIndex;
-        direction = -1;
-    } else {
-        direction = 1;
-        hi = oldIndex;
-        lo = newIndex;
-    }
-    var lis2 = new Array(); // We will build the new order in this array
-    for (var i = 0; i < lis.length; i++) {
-        if (i < lo || i > hi) {
-            // Position of items not between the indexes is unaffected
-            lis2[i] = lis[i];
-            continue;
-        } else if (i == newIndex) {
-            lis2[i] = lis[oldIndex];
-            continue;
-        } else {
-            // Item is between the two indexes - move it along 1
-            lis2[i] = lis[i - direction];
-        }
-    }
-    // Re-index everything
-    reIndex(lis2);
-    lis = lis2;
-    draw();
-//    document.getElementById('hiddenOrder').value = getOrder();
-    document.getElementsBySelector('input[name=order_]')[0].value = getOrder();
-}
-
-function reIndex(lis) {
-    for (var i = 0; i < lis.length; i++) {
-        lis[i].index = i;
-    }
-}
-
-function draw() {
-    for (var i = 0; i < lis.length; i++) {
-        var li = lis[i];
-        li.index = i;
-        li.style.position = 'absolute';
-        li.style.left = (10 + left) + 'px';
-        li.style.top = (10 + top + (i * height)) + 'px';
-    }
-}
-
-function getOrder() {
-    var order = new Array(lis.length);
-    for (var i = 0; i < lis.length; i++) {
-        order[i] = lis[i].id.substring(1, 100);
-    }
-    return order.join(',');
-}
-
-function setOrder(id_list) {
-    /* Set the current order to match the lsit of IDs */
-    var temp_lis = new Array();
-    for (var i = 0; i < id_list.length; i++) {
-        var id = 'p' + id_list[i];
-        temp_lis[temp_lis.length] = document.getElementById(id);
-    }
-    reIndex(temp_lis);
-    lis = temp_lis;
-    draw();
-}
-
-function addEvent(elm, evType, fn, useCapture)
-// addEvent and removeEvent
-// cross-browser event handling for IE5+,  NS6 and Mozilla
-// By Scott Andrew
-{
-  if (elm.addEventListener){
-    elm.addEventListener(evType, fn, useCapture);
-    return true;
-  } else if (elm.attachEvent){
-    var r = elm.attachEvent("on"+evType, fn);
-    return r;
-  } else {
-    elm['on'+evType] = fn;
-  }
-}
diff --git a/webapp/django/contrib/admin/media/js/calendar.js b/webapp/django/contrib/admin/media/js/calendar.js
deleted file mode 100644
index 9035176..0000000
--- a/webapp/django/contrib/admin/media/js/calendar.js
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-calendar.js - Calendar functions by Adrian Holovaty
-*/
-
-function removeChildren(a) { // "a" is reference to an object
-    while (a.hasChildNodes()) a.removeChild(a.lastChild);
-}
-
-// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);
-function quickElement() {
-    var obj = document.createElement(arguments[0]);
-    if (arguments[2] != '' && arguments[2] != null) {
-        var textNode = document.createTextNode(arguments[2]);
-        obj.appendChild(textNode);
-    }
-    var len = arguments.length;
-    for (var i = 3; i < len; i += 2) {
-        obj.setAttribute(arguments[i], arguments[i+1]);
-    }
-    arguments[1].appendChild(obj);
-    return obj;
-}
-
-// CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
-var CalendarNamespace = {
-    monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
-    daysOfWeek: gettext('S M T W T F S').split(' '),
-    isLeapYear: function(year) {
-        return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
-    },
-    getDaysInMonth: function(month,year) {
-        var days;
-        if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) {
-            days = 31;
-        }
-        else if (month==4 || month==6 || month==9 || month==11) {
-            days = 30;
-        }
-        else if (month==2 && CalendarNamespace.isLeapYear(year)) {
-            days = 29;
-        }
-        else {
-            days = 28;
-        }
-        return days;
-    },
-    draw: function(month, year, div_id, callback) { // month = 1-12, year = 1-9999
-        month = parseInt(month);
-        year = parseInt(year);
-        var calDiv = document.getElementById(div_id);
-        removeChildren(calDiv);
-        var calTable = document.createElement('table');
-        quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month-1] + ' ' + year);
-        var tableBody = quickElement('tbody', calTable);
-
-        // Draw days-of-week header
-        var tableRow = quickElement('tr', tableBody);
-        for (var i = 0; i < 7; i++) {
-            quickElement('th', tableRow, CalendarNamespace.daysOfWeek[i]);
-        }
-
-        var startingPos = new Date(year, month-1, 1).getDay();
-        var days = CalendarNamespace.getDaysInMonth(month, year);
-
-        // Draw blanks before first of month
-        tableRow = quickElement('tr', tableBody);
-        for (var i = 0; i < startingPos; i++) {
-            var _cell = quickElement('td', tableRow, ' ');
-            _cell.style.backgroundColor = '#f3f3f3';
-        }
-
-        // Draw days of month
-        var currentDay = 1;
-        for (var i = startingPos; currentDay <= days; i++) {
-            if (i%7 == 0 && currentDay != 1) {
-                tableRow = quickElement('tr', tableBody);
-            }
-            var cell = quickElement('td', tableRow, '');
-            quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');
-            currentDay++;
-        }
-
-        // Draw blanks after end of month (optional, but makes for valid code)
-        while (tableRow.childNodes.length < 7) {
-            var _cell = quickElement('td', tableRow, ' ');
-            _cell.style.backgroundColor = '#f3f3f3';
-        }
-
-        calDiv.appendChild(calTable);
-    }
-}
-
-// Calendar -- A calendar instance
-function Calendar(div_id, callback) {
-    // div_id (string) is the ID of the element in which the calendar will
-    //     be displayed
-    // callback (string) is the name of a JavaScript function that will be
-    //     called with the parameters (year, month, day) when a day in the
-    //     calendar is clicked
-    this.div_id = div_id;
-    this.callback = callback;
-    this.today = new Date();
-    this.currentMonth = this.today.getMonth() + 1;
-    this.currentYear = this.today.getFullYear();
-}
-Calendar.prototype = {
-    drawCurrent: function() {
-        CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback);
-    },
-    drawDate: function(month, year) {
-        this.currentMonth = month;
-        this.currentYear = year;
-        this.drawCurrent();
-    },
-    drawPreviousMonth: function() {
-        if (this.currentMonth == 1) {
-            this.currentMonth = 12;
-            this.currentYear--;
-        }
-        else {
-            this.currentMonth--;
-        }
-        this.drawCurrent();
-    },
-    drawNextMonth: function() {
-        if (this.currentMonth == 12) {
-            this.currentMonth = 1;
-            this.currentYear++;
-        }
-        else {
-            this.currentMonth++;
-        }
-        this.drawCurrent();
-    },
-    drawPreviousYear: function() {
-        this.currentYear--;
-        this.drawCurrent();
-    },
-    drawNextYear: function() {
-        this.currentYear++;
-        this.drawCurrent();
-    }
-}
diff --git a/webapp/django/contrib/admin/media/js/core.js b/webapp/django/contrib/admin/media/js/core.js
deleted file mode 100644
index c8d0db6..0000000
--- a/webapp/django/contrib/admin/media/js/core.js
+++ /dev/null
@@ -1,176 +0,0 @@
-// Core javascript helper functions
-
-// basic browser identification & version
-var isOpera = (navigator.userAgent.indexOf("Opera")>=0) && parseFloat(navigator.appVersion);
-var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]);
-
-// Cross-browser event handlers.
-function addEvent(obj, evType, fn) {
-    if (obj.addEventListener) {
-        obj.addEventListener(evType, fn, false);
-        return true;
-    } else if (obj.attachEvent) {
-        var r = obj.attachEvent("on" + evType, fn);
-        return r;
-    } else {
-        return false;
-    }
-}
-
-function removeEvent(obj, evType, fn) {
-    if (obj.removeEventListener) {
-        obj.removeEventListener(evType, fn, false);
-        return true;
-    } else if (obj.detachEvent) {
-        obj.detachEvent("on" + evType, fn);
-        return true;
-    } else {
-        return false;
-    }
-}
-
-// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);
-function quickElement() {
-    var obj = document.createElement(arguments[0]);
-    if (arguments[2] != '' && arguments[2] != null) {
-        var textNode = document.createTextNode(arguments[2]);
-        obj.appendChild(textNode);
-    }
-    var len = arguments.length;
-    for (var i = 3; i < len; i += 2) {
-        obj.setAttribute(arguments[i], arguments[i+1]);
-    }
-    arguments[1].appendChild(obj);
-    return obj;
-}
-
-// ----------------------------------------------------------------------------
-// Cross-browser xmlhttp object
-// from http://jibbering.com/2002/4/httprequest.html
-// ----------------------------------------------------------------------------
-var xmlhttp;
-/*@cc_on @*/
-/*@if (@_jscript_version >= 5)
-    try {
-        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
-    } catch (e) {
-        try {
-            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
-        } catch (E) {
-            xmlhttp = false;
-        }
-    }
-@else
-    xmlhttp = false;
-@end @*/
-if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
-  xmlhttp = new XMLHttpRequest();
-}
-
-// ----------------------------------------------------------------------------
-// Find-position functions by PPK
-// See http://www.quirksmode.org/js/findpos.html
-// ----------------------------------------------------------------------------
-function findPosX(obj) {
-    var curleft = 0;
-    if (obj.offsetParent) {
-        while (obj.offsetParent) {
-            curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);
-            obj = obj.offsetParent;
-        }
-        // IE offsetParent does not include the top-level 
-        if (isIE && obj.parentElement){
-            curleft += obj.offsetLeft - obj.scrollLeft;
-        }
-    } else if (obj.x) {
-        curleft += obj.x;
-    }
-    return curleft;
-}
-
-function findPosY(obj) {
-    var curtop = 0;
-    if (obj.offsetParent) {
-        while (obj.offsetParent) {
-            curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);
-            obj = obj.offsetParent;
-        }
-        // IE offsetParent does not include the top-level 
-        if (isIE && obj.parentElement){
-            curtop += obj.offsetTop - obj.scrollTop;
-        }
-    } else if (obj.y) {
-        curtop += obj.y;
-    }
-    return curtop;
-}
-
-//-----------------------------------------------------------------------------
-// Date object extensions
-// ----------------------------------------------------------------------------
-Date.prototype.getCorrectYear = function() {
-    // Date.getYear() is unreliable --
-    // see http://www.quirksmode.org/js/introdate.html#year
-    var y = this.getYear() % 100;
-    return (y < 38) ? y + 2000 : y + 1900;
-}
-
-Date.prototype.getTwoDigitMonth = function() {
-    return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1);
-}
-
-Date.prototype.getTwoDigitDate = function() {
-    return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();
-}
-
-Date.prototype.getTwoDigitHour = function() {
-    return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();
-}
-
-Date.prototype.getTwoDigitMinute = function() {
-    return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();
-}
-
-Date.prototype.getTwoDigitSecond = function() {
-    return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();
-}
-
-Date.prototype.getISODate = function() {
-    return this.getCorrectYear() + '-' + this.getTwoDigitMonth() + '-' + this.getTwoDigitDate();
-}
-
-Date.prototype.getHourMinute = function() {
-    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();
-}
-
-Date.prototype.getHourMinuteSecond = function() {
-    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();
-}
-
-// ----------------------------------------------------------------------------
-// String object extensions
-// ----------------------------------------------------------------------------
-String.prototype.pad_left = function(pad_length, pad_string) {
-    var new_string = this;
-    for (var i = 0; new_string.length < pad_length; i++) {
-        new_string = pad_string + new_string;
-    }
-    return new_string;
-}
-
-// ----------------------------------------------------------------------------
-// Get the computed style for and element
-// ----------------------------------------------------------------------------
-function getStyle(oElm, strCssRule){
-    var strValue = "";
-    if(document.defaultView && document.defaultView.getComputedStyle){
-        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
-    }
-    else if(oElm.currentStyle){
-        strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
-            return p1.toUpperCase();
-        });
-        strValue = oElm.currentStyle[strCssRule];
-    }
-    return strValue;
-}
diff --git a/webapp/django/contrib/admin/media/js/dateparse.js b/webapp/django/contrib/admin/media/js/dateparse.js
deleted file mode 100644
index e1c870e..0000000
--- a/webapp/django/contrib/admin/media/js/dateparse.js
+++ /dev/null
@@ -1,233 +0,0 @@
-/* 'Magic' date parsing, by Simon Willison (6th October 2003)
-   http://simon.incutio.com/archive/2003/10/06/betterDateInput
-   Adapted for 6newslawrence.com, 28th January 2004
-*/
-
-/* Finds the index of the first occurence of item in the array, or -1 if not found */
-if (typeof Array.prototype.indexOf == 'undefined') {
-    Array.prototype.indexOf = function(item) {
-        var len = this.length;
-        for (var i = 0; i < len; i++) {
-            if (this[i] == item) {
-                return i;
-            }
-        }
-        return -1;
-    };
-}
-/* Returns an array of items judged 'true' by the passed in test function */
-if (typeof Array.prototype.filter == 'undefined') {
-    Array.prototype.filter = function(test) {
-        var matches = [];
-        var len = this.length;
-        for (var i = 0; i < len; i++) {
-            if (test(this[i])) {
-                matches[matches.length] = this[i];
-            }
-        }
-        return matches;
-    };
-}
-
-var monthNames = gettext("January February March April May June July August September October November December").split(" ");
-var weekdayNames = gettext("Sunday Monday Tuesday Wednesday Thursday Friday Saturday").split(" ");
-
-/* Takes a string, returns the index of the month matching that string, throws
-   an error if 0 or more than 1 matches
-*/
-function parseMonth(month) {
-    var matches = monthNames.filter(function(item) { 
-        return new RegExp("^" + month, "i").test(item);
-    });
-    if (matches.length == 0) {
-        throw new Error("Invalid month string");
-    }
-    if (matches.length > 1) {
-        throw new Error("Ambiguous month");
-    }
-    return monthNames.indexOf(matches[0]);
-}
-/* Same as parseMonth but for days of the week */
-function parseWeekday(weekday) {
-    var matches = weekdayNames.filter(function(item) {
-        return new RegExp("^" + weekday, "i").test(item);
-    });
-    if (matches.length == 0) {
-        throw new Error("Invalid day string");
-    }
-    if (matches.length > 1) {
-        throw new Error("Ambiguous weekday");
-    }
-    return weekdayNames.indexOf(matches[0]);
-}
-
-/* Array of objects, each has 're', a regular expression and 'handler', a 
-   function for creating a date from something that matches the regular 
-   expression. Handlers may throw errors if string is unparseable. 
-*/
-var dateParsePatterns = [
-    // Today
-    {   re: /^tod/i,
-        handler: function() { 
-            return new Date();
-        } 
-    },
-    // Tomorrow
-    {   re: /^tom/i,
-        handler: function() {
-            var d = new Date(); 
-            d.setDate(d.getDate() + 1); 
-            return d;
-        }
-    },
-    // Yesterday
-    {   re: /^yes/i,
-        handler: function() {
-            var d = new Date();
-            d.setDate(d.getDate() - 1);
-            return d;
-        }
-    },
-    // 4th
-    {   re: /^(\d{1,2})(st|nd|rd|th)?$/i, 
-        handler: function(bits) {
-            var d = new Date();
-            d.setDate(parseInt(bits[1], 10));
-            return d;
-        }
-    },
-    // 4th Jan
-    {   re: /^(\d{1,2})(?:st|nd|rd|th)? (\w+)$/i, 
-        handler: function(bits) {
-            var d = new Date();
-            d.setDate(parseInt(bits[1], 10));
-            d.setMonth(parseMonth(bits[2]));
-            return d;
-        }
-    },
-    // 4th Jan 2003
-    {   re: /^(\d{1,2})(?:st|nd|rd|th)? (\w+),? (\d{4})$/i,
-        handler: function(bits) {
-            var d = new Date();
-            d.setDate(parseInt(bits[1], 10));
-            d.setMonth(parseMonth(bits[2]));
-            d.setYear(bits[3]);
-            return d;
-        }
-    },
-    // Jan 4th
-    {   re: /^(\w+) (\d{1,2})(?:st|nd|rd|th)?$/i, 
-        handler: function(bits) {
-            var d = new Date();
-            d.setDate(parseInt(bits[2], 10));
-            d.setMonth(parseMonth(bits[1]));
-            return d;
-        }
-    },
-    // Jan 4th 2003
-    {   re: /^(\w+) (\d{1,2})(?:st|nd|rd|th)?,? (\d{4})$/i,
-        handler: function(bits) {
-            var d = new Date();
-            d.setDate(parseInt(bits[2], 10));
-            d.setMonth(parseMonth(bits[1]));
-            d.setYear(bits[3]);
-            return d;
-        }
-    },
-    // next Tuesday - this is suspect due to weird meaning of "next"
-    {   re: /^next (\w+)$/i,
-        handler: function(bits) {
-            var d = new Date();
-            var day = d.getDay();
-            var newDay = parseWeekday(bits[1]);
-            var addDays = newDay - day;
-            if (newDay <= day) {
-                addDays += 7;
-            }
-            d.setDate(d.getDate() + addDays);
-            return d;
-        }
-    },
-    // last Tuesday
-    {   re: /^last (\w+)$/i,
-        handler: function(bits) {
-            throw new Error("Not yet implemented");
-        }
-    },
-    // mm/dd/yyyy (American style)
-    {   re: /(\d{1,2})\/(\d{1,2})\/(\d{4})/,
-        handler: function(bits) {
-            var d = new Date();
-            d.setYear(bits[3]);
-            d.setDate(parseInt(bits[2], 10));
-            d.setMonth(parseInt(bits[1], 10) - 1); // Because months indexed from 0
-            return d;
-        }
-    },
-    // yyyy-mm-dd (ISO style)
-    {   re: /(\d{4})-(\d{1,2})-(\d{1,2})/,
-        handler: function(bits) {
-            var d = new Date();
-            d.setYear(parseInt(bits[1]));
-            d.setMonth(parseInt(bits[2], 10) - 1);
-            d.setDate(parseInt(bits[3], 10));
-            return d;
-        }
-    },
-];
-
-function parseDateString(s) {
-    for (var i = 0; i < dateParsePatterns.length; i++) {
-        var re = dateParsePatterns[i].re;
-        var handler = dateParsePatterns[i].handler;
-        var bits = re.exec(s);
-        if (bits) {
-            return handler(bits);
-        }
-    }
-    throw new Error("Invalid date string");
-}
-
-function fmt00(x) {
-    // fmt00: Tags leading zero onto numbers 0 - 9.
-    // Particularly useful for displaying results from Date methods.
-    //
-    if (Math.abs(parseInt(x)) < 10){
-        x = "0"+ Math.abs(x);
-    }
-    return x;
-}
-
-function parseDateStringISO(s) {
-    try {
-        var d = parseDateString(s);
-        return d.getFullYear() + '-' + (fmt00(d.getMonth() + 1)) + '-' + fmt00(d.getDate())
-    }
-    catch (e) { return s; }
-}
-function magicDate(input) {
-    var messagespan = input.id + 'Msg';
-    try {
-        var d = parseDateString(input.value);
-        input.value = d.getFullYear() + '-' + (fmt00(d.getMonth() + 1)) + '-' + 
-            fmt00(d.getDate());
-        input.className = '';
-        // Human readable date
-        if (document.getElementById(messagespan)) {
-            document.getElementById(messagespan).firstChild.nodeValue = d.toDateString();
-            document.getElementById(messagespan).className = 'normal';
-        }
-    }
-    catch (e) {
-        input.className = 'error';
-        var message = e.message;
-        // Fix for IE6 bug
-        if (message.indexOf('is null or not an object') > -1) {
-            message = 'Invalid date string';
-        }
-        if (document.getElementById(messagespan)) {
-            document.getElementById(messagespan).firstChild.nodeValue = message;
-            document.getElementById(messagespan).className = 'error';
-        }
-    }
-}
diff --git a/webapp/django/contrib/admin/media/js/getElementsBySelector.js b/webapp/django/contrib/admin/media/js/getElementsBySelector.js
deleted file mode 100644
index ae6d387..0000000
--- a/webapp/django/contrib/admin/media/js/getElementsBySelector.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/* document.getElementsBySelector(selector)
-   - returns an array of element objects from the current document
-     matching the CSS selector. Selectors can contain element names, 
-     class names and ids and can be nested. For example:
-     
-       elements = document.getElementsBySelect('div#main p a.external')
-     
-     Will return an array of all 'a' elements with 'external' in their 
-     class attribute that are contained inside 'p' elements that are 
-     contained inside the 'div' element which has id="main"
-
-   New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
-   See http://www.w3.org/TR/css3-selectors/#attribute-selectors
-
-   Version 0.4 - Simon Willison, March 25th 2003
-   -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
-   -- Opera 7 fails 
-*/
-
-function getAllChildren(e) {
-  // Returns all children of element. Workaround required for IE5/Windows. Ugh.
-  return e.all ? e.all : e.getElementsByTagName('*');
-}
-
-document.getElementsBySelector = function(selector) {
-  // Attempt to fail gracefully in lesser browsers
-  if (!document.getElementsByTagName) {
-    return new Array();
-  }
-  // Split selector in to tokens
-  var tokens = selector.split(' ');
-  var currentContext = new Array(document);
-  for (var i = 0; i < tokens.length; i++) {
-    token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
-    if (token.indexOf('#') > -1) {
-      // Token is an ID selector
-      var bits = token.split('#');
-      var tagName = bits[0];
-      var id = bits[1];
-      var element = document.getElementById(id);
-      if (tagName && element.nodeName.toLowerCase() != tagName) {
-        // tag with that ID not found, return false
-        return new Array();
-      }
-      // Set currentContext to contain just this element
-      currentContext = new Array(element);
-      continue; // Skip to next token
-    }
-    if (token.indexOf('.') > -1) {
-      // Token contains a class selector
-      var bits = token.split('.');
-      var tagName = bits[0];
-      var className = bits[1];
-      if (!tagName) {
-        tagName = '*';
-      }
-      // Get elements matching tag, filter them for class selector
-      var found = new Array;
-      var foundCount = 0;
-      for (var h = 0; h < currentContext.length; h++) {
-        var elements;
-        if (tagName == '*') {
-            elements = getAllChildren(currentContext[h]);
-        } else {
-            try {
-                elements = currentContext[h].getElementsByTagName(tagName);
-            }
-            catch(e) {
-                elements = [];
-            }
-        }
-        for (var j = 0; j < elements.length; j++) {
-          found[foundCount++] = elements[j];
-        }
-      }
-      currentContext = new Array;
-      var currentContextIndex = 0;
-      for (var k = 0; k < found.length; k++) {
-        if (found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) {
-          currentContext[currentContextIndex++] = found[k];
-        }
-      }
-      continue; // Skip to next token
-    }
-    // Code to deal with attribute selectors
-    if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
-      var tagName = RegExp.$1;
-      var attrName = RegExp.$2;
-      var attrOperator = RegExp.$3;
-      var attrValue = RegExp.$4;
-      if (!tagName) {
-        tagName = '*';
-      }
-      // Grab all of the tagName elements within current context
-      var found = new Array;
-      var foundCount = 0;
-      for (var h = 0; h < currentContext.length; h++) {
-        var elements;
-        if (tagName == '*') {
-            elements = getAllChildren(currentContext[h]);
-        } else {
-            elements = currentContext[h].getElementsByTagName(tagName);
-        }
-        for (var j = 0; j < elements.length; j++) {
-          found[foundCount++] = elements[j];
-        }
-      }
-      currentContext = new Array;
-      var currentContextIndex = 0;
-      var checkFunction; // This function will be used to filter the elements
-      switch (attrOperator) {
-        case '=': // Equality
-          checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
-          break;
-        case '~': // Match one of space seperated words 
-          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
-          break;
-        case '|': // Match start with value followed by optional hyphen
-          checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
-          break;
-        case '^': // Match starts with value
-          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
-          break;
-        case '$': // Match ends with value - fails with "Warning" in Opera 7
-          checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
-          break;
-        case '*': // Match ends with value
-          checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
-          break;
-        default :
-          // Just test for existence of attribute
-          checkFunction = function(e) { return e.getAttribute(attrName); };
-      }
-      currentContext = new Array;
-      var currentContextIndex = 0;
-      for (var k = 0; k < found.length; k++) {
-        if (checkFunction(found[k])) {
-          currentContext[currentContextIndex++] = found[k];
-        }
-      }
-      // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);
-      continue; // Skip to next token
-    }
-    // If we get here, token is JUST an element (not a class or ID selector)
-    tagName = token;
-    var found = new Array;
-    var foundCount = 0;
-    for (var h = 0; h < currentContext.length; h++) {
-      var elements = currentContext[h].getElementsByTagName(tagName);
-      for (var j = 0; j < elements.length; j++) {
-        found[foundCount++] = elements[j];
-      }
-    }
-    currentContext = found;
-  }
-  return currentContext;
-}
-
-/* That revolting regular expression explained 
-/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
-  \---/  \---/\-------------/    \-------/
-    |      |         |               |
-    |      |         |           The value
-    |      |    ~,|,^,$,* or =
-    |   Attribute 
-   Tag
-*/
diff --git a/webapp/django/contrib/admin/media/js/timeparse.js b/webapp/django/contrib/admin/media/js/timeparse.js
deleted file mode 100644
index 882f41d..0000000
--- a/webapp/django/contrib/admin/media/js/timeparse.js
+++ /dev/null
@@ -1,94 +0,0 @@
-var timeParsePatterns = [
-    // 9
-    {   re: /^\d{1,2}$/i,
-        handler: function(bits) {
-            if (bits[0].length == 1) {
-                return '0' + bits[0] + ':00';
-            } else {
-                return bits[0] + ':00';
-            }
-        }
-    },
-    // 13:00
-    {   re: /^\d{2}[:.]\d{2}$/i,
-        handler: function(bits) {
-            return bits[0].replace('.', ':');
-        }
-    },
-    // 9:00
-    {   re: /^\d[:.]\d{2}$/i,
-        handler: function(bits) {
-            return '0' + bits[0].replace('.', ':');
-        }
-    },
-    // 3 am / 3 a.m. / 3am
-    {   re: /^(\d+)\s*([ap])(?:.?m.?)?$/i,
-        handler: function(bits) {
-            var hour = parseInt(bits[1]);
-            if (hour == 12) {
-                hour = 0;
-            }
-            if (bits[2].toLowerCase() == 'p') {
-                if (hour == 12) {
-                    hour = 0;
-                }
-                return (hour + 12) + ':00';
-            } else {
-                if (hour < 10) {
-                    return '0' + hour + ':00';
-                } else {
-                    return hour + ':00';
-                }
-            }
-        }
-    },
-    // 3.30 am / 3:15 a.m. / 3.00am
-    {   re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i,
-        handler: function(bits) {
-            var hour = parseInt(bits[1]);
-            var mins = parseInt(bits[2]);
-            if (mins < 10) {
-                mins = '0' + mins;
-            }
-            if (hour == 12) {
-                hour = 0;
-            }
-            if (bits[3].toLowerCase() == 'p') {
-                if (hour == 12) {
-                    hour = 0;
-                }
-                return (hour + 12) + ':' + mins;
-            } else {
-                if (hour < 10) {
-                    return '0' + hour + ':' + mins;
-                } else {
-                    return hour + ':' + mins;
-                }
-            }
-        }
-    },
-    // noon
-    {   re: /^no/i,
-        handler: function(bits) {
-            return '12:00';
-        }
-    },
-    // midnight
-    {   re: /^mid/i,
-        handler: function(bits) {
-            return '00:00';
-        }
-    }
-];
-
-function parseTimeString(s) {
-    for (var i = 0; i < timeParsePatterns.length; i++) {
-        var re = timeParsePatterns[i].re;
-        var handler = timeParsePatterns[i].handler;
-        var bits = re.exec(s);
-        if (bits) {
-            return handler(bits);
-        }
-    }
-    return s;
-}
diff --git a/webapp/django/contrib/admin/media/js/urlify.js b/webapp/django/contrib/admin/media/js/urlify.js
deleted file mode 100644
index d8f2549..0000000
--- a/webapp/django/contrib/admin/media/js/urlify.js
+++ /dev/null
@@ -1,140 +0,0 @@
-var LATIN_MAP = {
-    'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':
-    'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',
-    'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':
-    'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',
-    'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä':
-    'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',
-    'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó':
-    'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',
-    'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'
-}
-var LATIN_SYMBOLS_MAP = {
-    '©':'(c)'
-}
-var GREEK_MAP = {
-    'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',
-    'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',
-    'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',
-    'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',
-    'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',
-    'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',
-    'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',
-    'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',
-    'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',
-    'Ϋ':'Y'
-}
-var TURKISH_MAP = {
-    'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',
-    'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'
-}
-var RUSSIAN_MAP = {
-    'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',
-    'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',
-    'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',
-    'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',
-    'я':'ya',
-    'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',
-    'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',
-    'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',
-    'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',
-    'Я':'Ya'
-}
-var UKRAINIAN_MAP = {
-    'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'
-}
-var CZECH_MAP = {
-    'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',
-    'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T',
-    'Ů':'U', 'Ž':'Z'
-}
-
-var POLISH_MAP = {
-    'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z',
-    'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'e', 'Ł':'L', 'Ń':'N', 'Ó':'o', 'Ś':'S',
-    'Ź':'Z', 'Ż':'Z'
-}
-
-var LATVIAN_MAP = {
-    'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n',
-    'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'i',
-    'Ķ':'k', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'u', 'Ž':'Z'
-}
-
-var ALL_DOWNCODE_MAPS=new Array()
-ALL_DOWNCODE_MAPS[0]=LATIN_MAP
-ALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP
-ALL_DOWNCODE_MAPS[2]=GREEK_MAP
-ALL_DOWNCODE_MAPS[3]=TURKISH_MAP
-ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP
-ALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP
-ALL_DOWNCODE_MAPS[6]=CZECH_MAP
-ALL_DOWNCODE_MAPS[7]=POLISH_MAP
-ALL_DOWNCODE_MAPS[8]=LATVIAN_MAP
-
-var Downcoder = new Object();
-Downcoder.Initialize = function()
-{
-    if (Downcoder.map) // already made
-        return ;
-    Downcoder.map ={}
-    Downcoder.chars = '' ;
-    for(var i in ALL_DOWNCODE_MAPS)
-    {
-        var lookup = ALL_DOWNCODE_MAPS[i]
-        for (var c in lookup)
-        {
-            Downcoder.map[c] = lookup[c] ;
-            Downcoder.chars += c ;
-        }
-     }
-    Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;
-}
-
-downcode= function( slug )
-{
-    Downcoder.Initialize() ;
-    var downcoded =""
-    var pieces = slug.match(Downcoder.regex);
-    if(pieces)
-    {
-        for (var i = 0 ; i < pieces.length ; i++)
-        {
-            if (pieces[i].length == 1)
-            {
-                var mapped = Downcoder.map[pieces[i]] ;
-                if (mapped != null)
-                {
-                    downcoded+=mapped;
-                    continue ;
-                }
-            }
-            downcoded+=pieces[i];
-        }
-    }
-    else
-    {
-        downcoded = slug;
-    }
-    return downcoded;
-}
-
-
-function URLify(s, num_chars) {
-    // changes, e.g., "Petty theft" to "petty_theft"
-    // remove all these words from the string before urlifying
-    s = downcode(s);
-    removelist = ["a", "an", "as", "at", "before", "but", "by", "for", "from",
-                  "is", "in", "into", "like", "of", "off", "on", "onto", "per",
-                  "since", "than", "the", "this", "that", "to", "up", "via",
-                  "with"];
-    r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
-    s = s.replace(r, '');
-    // if downcode doesn't hit, the char will be stripped here
-    s = s.replace(/[^-\w\s]/g, '');  // remove unneeded chars
-    s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
-    s = s.replace(/[-\s]+/g, '-');   // convert spaces to hyphens
-    s = s.toLowerCase();             // convert to lowercase
-    return s.substring(0, num_chars);// trim to first num_chars chars
-}
-
diff --git a/webapp/django/contrib/admin/models.py b/webapp/django/contrib/admin/models.py
deleted file mode 100644
index 259884f..0000000
--- a/webapp/django/contrib/admin/models.py
+++ /dev/null
@@ -1,54 +0,0 @@
-from django.db import models
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.auth.models import User
-from django.contrib.admin.util import quote
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode
-from django.utils.safestring import mark_safe
-
-ADDITION = 1
-CHANGE = 2
-DELETION = 3
-
-class LogEntryManager(models.Manager):
-    def log_action(self, user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
-        e = self.model(None, None, user_id, content_type_id, smart_unicode(object_id), object_repr[:200], action_flag, change_message)
-        e.save()
-
-class LogEntry(models.Model):
-    action_time = models.DateTimeField(_('action time'), auto_now=True)
-    user = models.ForeignKey(User)
-    content_type = models.ForeignKey(ContentType, blank=True, null=True)
-    object_id = models.TextField(_('object id'), blank=True, null=True)
-    object_repr = models.CharField(_('object repr'), max_length=200)
-    action_flag = models.PositiveSmallIntegerField(_('action flag'))
-    change_message = models.TextField(_('change message'), blank=True)
-    objects = LogEntryManager()
-    class Meta:
-        verbose_name = _('log entry')
-        verbose_name_plural = _('log entries')
-        db_table = 'django_admin_log'
-        ordering = ('-action_time',)
-
-    def __repr__(self):
-        return smart_unicode(self.action_time)
-
-    def is_addition(self):
-        return self.action_flag == ADDITION
-
-    def is_change(self):
-        return self.action_flag == CHANGE
-
-    def is_deletion(self):
-        return self.action_flag == DELETION
-
-    def get_edited_object(self):
-        "Returns the edited object represented by this log entry"
-        return self.content_type.get_object_for_this_type(pk=self.object_id)
-
-    def get_admin_url(self):
-        """
-        Returns the admin URL to edit the object represented by this log entry.
-        This is relative to the Django admin index page.
-        """
-        return mark_safe(u"%s/%s/%s/" % (self.content_type.app_label, self.content_type.model, quote(self.object_id)))
diff --git a/webapp/django/contrib/admin/options.py b/webapp/django/contrib/admin/options.py
deleted file mode 100644
index 1d00683..0000000
--- a/webapp/django/contrib/admin/options.py
+++ /dev/null
@@ -1,790 +0,0 @@
-from django import forms, template
-from django.forms.formsets import all_valid
-from django.forms.models import modelform_factory, inlineformset_factory
-from django.forms.models import BaseInlineFormSet
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.admin import widgets
-from django.contrib.admin import helpers
-from django.contrib.admin.util import quote, unquote, flatten_fieldsets, get_deleted_objects
-from django.core.exceptions import PermissionDenied
-from django.db import models, transaction
-from django.http import Http404, HttpResponse, HttpResponseRedirect
-from django.shortcuts import get_object_or_404, render_to_response
-from django.utils.html import escape
-from django.utils.safestring import mark_safe
-from django.utils.text import capfirst, get_text_list
-from django.utils.translation import ugettext as _
-from django.utils.encoding import force_unicode
-try:
-    set
-except NameError:
-    from sets import Set as set     # Python 2.3 fallback
-
-HORIZONTAL, VERTICAL = 1, 2
-# returns the <ul> class for a given radio_admin field
-get_ul_class = lambda x: 'radiolist%s' % ((x == HORIZONTAL) and ' inline' or '')
-
-class IncorrectLookupParameters(Exception):
-    pass
-
-class BaseModelAdmin(object):
-    """Functionality common to both ModelAdmin and InlineAdmin."""
-    raw_id_fields = ()
-    fields = None
-    fieldsets = None
-    form = forms.ModelForm
-    filter_vertical = ()
-    filter_horizontal = ()
-    radio_fields = {}
-    prepopulated_fields = {}
-
-    def formfield_for_dbfield(self, db_field, **kwargs):
-        """
-        Hook for specifying the form Field instance for a given database Field
-        instance.
-
-        If kwargs are given, they're passed to the form Field's constructor.
-        """
-        
-        # If the field specifies choices, we don't need to look for special
-        # admin widgets - we just need to use a select widget of some kind.
-        if db_field.choices:
-            if db_field.name in self.radio_fields:
-                # If the field is named as a radio_field, use a RadioSelect
-                kwargs['widget'] = widgets.AdminRadioSelect(
-                    choices=db_field.get_choices(include_blank=db_field.blank,
-                        blank_choice=[('', _('None'))]),
-                    attrs={
-                        'class': get_ul_class(self.radio_fields[db_field.name]),
-                    }
-                )
-                return db_field.formfield(**kwargs)
-            else:
-                # Otherwise, use the default select widget.
-                return db_field.formfield(**kwargs)
-
-        # For DateTimeFields, use a special field and widget.
-        if isinstance(db_field, models.DateTimeField):
-            kwargs['form_class'] = forms.SplitDateTimeField
-            kwargs['widget'] = widgets.AdminSplitDateTime()
-            return db_field.formfield(**kwargs)
-
-        # For DateFields, add a custom CSS class.
-        if isinstance(db_field, models.DateField):
-            kwargs['widget'] = widgets.AdminDateWidget
-            return db_field.formfield(**kwargs)
-
-        # For TimeFields, add a custom CSS class.
-        if isinstance(db_field, models.TimeField):
-            kwargs['widget'] = widgets.AdminTimeWidget
-            return db_field.formfield(**kwargs)
-        
-        # For TextFields, add a custom CSS class.
-        if isinstance(db_field, models.TextField):
-            kwargs['widget'] = widgets.AdminTextareaWidget
-            return db_field.formfield(**kwargs)
-        
-        # For URLFields, add a custom CSS class.
-        if isinstance(db_field, models.URLField):
-            kwargs['widget'] = widgets.AdminURLFieldWidget
-            return db_field.formfield(**kwargs)
-        
-        # For IntegerFields, add a custom CSS class.
-        if isinstance(db_field, models.IntegerField):
-            kwargs['widget'] = widgets.AdminIntegerFieldWidget
-            return db_field.formfield(**kwargs)
-
-        # For TextInputs, add a custom CSS class.
-        if isinstance(db_field, models.CharField):
-            kwargs['widget'] = widgets.AdminTextInputWidget
-            return db_field.formfield(**kwargs)
-    
-        # For FileFields and ImageFields add a link to the current file.
-        if isinstance(db_field, models.ImageField) or isinstance(db_field, models.FileField):
-            kwargs['widget'] = widgets.AdminFileWidget
-            return db_field.formfield(**kwargs)
-
-        # For ForeignKey or ManyToManyFields, use a special widget.
-        if isinstance(db_field, (models.ForeignKey, models.ManyToManyField)):
-            if isinstance(db_field, models.ForeignKey) and db_field.name in self.raw_id_fields:
-                kwargs['widget'] = widgets.ForeignKeyRawIdWidget(db_field.rel)
-            elif isinstance(db_field, models.ForeignKey) and db_field.name in self.radio_fields:
-                kwargs['widget'] = widgets.AdminRadioSelect(attrs={
-                    'class': get_ul_class(self.radio_fields[db_field.name]),
-                })
-                kwargs['empty_label'] = db_field.blank and _('None') or None
-            else:
-                if isinstance(db_field, models.ManyToManyField):
-                    # If it uses an intermediary model, don't show field in admin.
-                    if db_field.rel.through is not None:
-                        return None
-                    elif db_field.name in self.raw_id_fields:
-                        kwargs['widget'] = widgets.ManyToManyRawIdWidget(db_field.rel)
-                        kwargs['help_text'] = ''
-                    elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):
-                        kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
-            # Wrap the widget's render() method with a method that adds
-            # extra HTML to the end of the rendered output.
-            formfield = db_field.formfield(**kwargs)
-            # Don't wrap raw_id fields. Their add function is in the popup window.
-            if not db_field.name in self.raw_id_fields:
-                # formfield can be None if it came from a OneToOneField with
-                # parent_link=True
-                if formfield is not None:
-                    formfield.widget = widgets.RelatedFieldWidgetWrapper(formfield.widget, db_field.rel, self.admin_site)
-            return formfield
-
-        # For any other type of field, just call its formfield() method.
-        return db_field.formfield(**kwargs)
-
-    def _declared_fieldsets(self):
-        if self.fieldsets:
-            return self.fieldsets
-        elif self.fields:
-            return [(None, {'fields': self.fields})]
-        return None
-    declared_fieldsets = property(_declared_fieldsets)
-
-class ModelAdmin(BaseModelAdmin):
-    "Encapsulates all admin options and functionality for a given model."
-    __metaclass__ = forms.MediaDefiningClass
-
-    list_display = ('__str__',)
-    list_display_links = ()
-    list_filter = ()
-    list_select_related = False
-    list_per_page = 100
-    search_fields = ()
-    date_hierarchy = None
-    save_as = False
-    save_on_top = False
-    ordering = None
-    inlines = []
-
-    # Custom templates (designed to be over-ridden in subclasses)
-    change_form_template = None
-    change_list_template = None
-    delete_confirmation_template = None
-    object_history_template = None
-
-    def __init__(self, model, admin_site):
-        self.model = model
-        self.opts = model._meta
-        self.admin_site = admin_site
-        self.inline_instances = []
-        for inline_class in self.inlines:
-            inline_instance = inline_class(self.model, self.admin_site)
-            self.inline_instances.append(inline_instance)
-        super(ModelAdmin, self).__init__()
-
-    def __call__(self, request, url):
-        # Delegate to the appropriate method, based on the URL.
-        if url is None:
-            return self.changelist_view(request)
-        elif url.endswith('add'):
-            return self.add_view(request)
-        elif url.endswith('history'):
-            return self.history_view(request, unquote(url[:-8]))
-        elif url.endswith('delete'):
-            return self.delete_view(request, unquote(url[:-7]))
-        else:
-            return self.change_view(request, unquote(url))
-
-    def _media(self):
-        from django.conf import settings
-
-        js = ['js/core.js', 'js/admin/RelatedObjectLookups.js']
-        if self.prepopulated_fields:
-            js.append('js/urlify.js')
-        if self.opts.get_ordered_objects():
-            js.extend(['js/getElementsBySelector.js', 'js/dom-drag.js' , 'js/admin/ordering.js'])
-        if self.filter_vertical or self.filter_horizontal:
-            js.extend(['js/SelectBox.js' , 'js/SelectFilter2.js'])
-
-        return forms.Media(js=['%s%s' % (settings.ADMIN_MEDIA_PREFIX, url) for url in js])
-    media = property(_media)
-
-    def has_add_permission(self, request):
-        "Returns True if the given request has permission to add an object."
-        opts = self.opts
-        return request.user.has_perm(opts.app_label + '.' + opts.get_add_permission())
-
-    def has_change_permission(self, request, obj=None):
-        """
-        Returns True if the given request has permission to change the given
-        Django model instance.
-
-        If `obj` is None, this should return True if the given request has
-        permission to change *any* object of the given type.
-        """
-        opts = self.opts
-        return request.user.has_perm(opts.app_label + '.' + opts.get_change_permission())
-
-    def has_delete_permission(self, request, obj=None):
-        """
-        Returns True if the given request has permission to change the given
-        Django model instance.
-
-        If `obj` is None, this should return True if the given request has
-        permission to delete *any* object of the given type.
-        """
-        opts = self.opts
-        return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission())
-
-    def queryset(self, request):
-        """
-        Returns a QuerySet of all model instances that can be edited by the
-        admin site. This is used by changelist_view.
-        """
-        qs = self.model._default_manager.get_query_set()
-        # TODO: this should be handled by some parameter to the ChangeList.
-        ordering = self.ordering or () # otherwise we might try to *None, which is bad ;)
-        if ordering:
-            qs = qs.order_by(*ordering)
-        return qs
-
-    def get_fieldsets(self, request, obj=None):
-        "Hook for specifying fieldsets for the add form."
-        if self.declared_fieldsets:
-            return self.declared_fieldsets
-        form = self.get_form(request, obj)
-        return [(None, {'fields': form.base_fields.keys()})]
-
-    def get_form(self, request, obj=None, **kwargs):
-        """
-        Returns a Form class for use in the admin add view. This is used by
-        add_view and change_view.
-        """
-        if self.declared_fieldsets:
-            fields = flatten_fieldsets(self.declared_fieldsets)
-        else:
-            fields = None
-        defaults = {
-            "form": self.form,
-            "fields": fields,
-            "formfield_callback": self.formfield_for_dbfield,
-        }
-        defaults.update(kwargs)
-        return modelform_factory(self.model, **defaults)
-
-    def get_formsets(self, request, obj=None):
-        for inline in self.inline_instances:
-            yield inline.get_formset(request, obj)
-            
-    def log_addition(self, request, object):
-        """
-        Log that an object has been successfully added. 
-        
-        The default implementation creates an admin LogEntry object.
-        """
-        from django.contrib.admin.models import LogEntry, ADDITION
-        LogEntry.objects.log_action(
-            user_id         = request.user.pk, 
-            content_type_id = ContentType.objects.get_for_model(object).pk,
-            object_id       = object.pk,
-            object_repr     = force_unicode(object), 
-            action_flag     = ADDITION
-        )
-        
-    def log_change(self, request, object, message):
-        """
-        Log that an object has been successfully changed. 
-        
-        The default implementation creates an admin LogEntry object.
-        """
-        from django.contrib.admin.models import LogEntry, CHANGE
-        LogEntry.objects.log_action(
-            user_id         = request.user.pk, 
-            content_type_id = ContentType.objects.get_for_model(object).pk, 
-            object_id       = object.pk, 
-            object_repr     = force_unicode(object), 
-            action_flag     = CHANGE, 
-            change_message  = message
-        )
-        
-    def log_deletion(self, request, object, object_repr):
-        """
-        Log that an object has been successfully deleted. Note that since the
-        object is deleted, it might no longer be safe to call *any* methods
-        on the object, hence this method getting object_repr.
-        
-        The default implementation creates an admin LogEntry object.
-        """
-        from django.contrib.admin.models import LogEntry, DELETION
-        LogEntry.objects.log_action(
-            user_id         = request.user.id, 
-            content_type_id = ContentType.objects.get_for_model(self.model).pk, 
-            object_id       = object.pk, 
-            object_repr     = object_repr,
-            action_flag     = DELETION
-        )
-        
-    
-    def construct_change_message(self, request, form, formsets):
-        """
-        Construct a change message from a changed object.
-        """
-        change_message = []
-        if form.changed_data:
-            change_message.append(_('Changed %s.') % get_text_list(form.changed_data, _('and')))
-
-        if formsets:
-            for formset in formsets:
-                for added_object in formset.new_objects:
-                    change_message.append(_('Added %(name)s "%(object)s".')
-                                          % {'name': added_object._meta.verbose_name,
-                                             'object': added_object})
-                for changed_object, changed_fields in formset.changed_objects:
-                    change_message.append(_('Changed %(list)s for %(name)s "%(object)s".')
-                                          % {'list': get_text_list(changed_fields, _('and')),
-                                             'name': changed_object._meta.verbose_name,
-                                             'object': changed_object})
-                for deleted_object in formset.deleted_objects:
-                    change_message.append(_('Deleted %(name)s "%(object)s".')
-                                          % {'name': deleted_object._meta.verbose_name,
-                                             'object': deleted_object})
-        change_message = ' '.join(change_message)
-        return change_message or _('No fields changed.')
-    
-    def message_user(self, request, message):
-        """
-        Send a message to the user. The default implementation 
-        posts a message using the auth Message object.
-        """
-        request.user.message_set.create(message=message)
-
-    def save_form(self, request, form, change):
-        """
-        Given a ModelForm return an unsaved instance. ``change`` is True if
-        the object is being changed, and False if it's being added.
-        """
-        return form.save(commit=False)
-    
-    def save_model(self, request, obj, form, change):
-        """
-        Given a model instance save it to the database.
-        """
-        obj.save()
-
-    def save_formset(self, request, form, formset, change):
-        """
-        Given an inline formset save it to the database.
-        """
-        formset.save()
-
-    def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
-        opts = self.model._meta
-        app_label = opts.app_label
-        ordered_objects = opts.get_ordered_objects()
-        context.update({
-            'add': add,
-            'change': change,
-            'has_add_permission': self.has_add_permission(request),
-            'has_change_permission': self.has_change_permission(request, obj),
-            'has_delete_permission': self.has_delete_permission(request, obj),
-            'has_file_field': True, # FIXME - this should check if form or formsets have a FileField,
-            'has_absolute_url': hasattr(self.model, 'get_absolute_url'),
-            'ordered_objects': ordered_objects,
-            'form_url': mark_safe(form_url),
-            'opts': opts,
-            'content_type_id': ContentType.objects.get_for_model(self.model).id,
-            'save_as': self.save_as,
-            'save_on_top': self.save_on_top,
-            'root_path': self.admin_site.root_path,
-        })
-        return render_to_response(self.change_form_template or [
-            "admin/%s/%s/change_form.html" % (app_label, opts.object_name.lower()),
-            "admin/%s/change_form.html" % app_label,
-            "admin/change_form.html"
-        ], context, context_instance=template.RequestContext(request))
-    
-    def response_add(self, request, obj, post_url_continue='../%s/'):
-        """
-        Determines the HttpResponse for the add_view stage.
-        """
-        opts = obj._meta
-        pk_value = obj._get_pk_val()
-        
-        msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': force_unicode(obj)}
-        # Here, we distinguish between different save types by checking for
-        # the presence of keys in request.POST.
-        if request.POST.has_key("_continue"):
-            self.message_user(request, msg + ' ' + _("You may edit it again below."))
-            if request.POST.has_key("_popup"):
-                post_url_continue += "?_popup=1"
-            return HttpResponseRedirect(post_url_continue % pk_value)
-        
-        if request.POST.has_key("_popup"):
-            return HttpResponse('<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>' % \
-                # escape() calls force_unicode.
-                (escape(pk_value), escape(obj)))
-        elif request.POST.has_key("_addanother"):
-            self.message_user(request, msg + ' ' + (_("You may add another %s below.") % force_unicode(opts.verbose_name)))
-            return HttpResponseRedirect(request.path)
-        else:
-            self.message_user(request, msg)
-
-            # Figure out where to redirect. If the user has change permission,
-            # redirect to the change-list page for this object. Otherwise,
-            # redirect to the admin index.
-            if self.has_change_permission(request, None):
-                post_url = '../'
-            else:
-                post_url = '../../../'
-            return HttpResponseRedirect(post_url)
-    
-    def response_change(self, request, obj):
-        """
-        Determines the HttpResponse for the change_view stage.
-        """
-        opts = obj._meta
-        pk_value = obj._get_pk_val()
-        
-        msg = _('The %(name)s "%(obj)s" was changed successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': force_unicode(obj)}
-        if request.POST.has_key("_continue"):
-            self.message_user(request, msg + ' ' + _("You may edit it again below."))
-            if request.REQUEST.has_key('_popup'):
-                return HttpResponseRedirect(request.path + "?_popup=1")
-            else:
-                return HttpResponseRedirect(request.path)
-        elif request.POST.has_key("_saveasnew"):
-            msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % {'name': force_unicode(opts.verbose_name), 'obj': obj}
-            self.message_user(request, msg)
-            return HttpResponseRedirect("../%s/" % pk_value)
-        elif request.POST.has_key("_addanother"):
-            self.message_user(request, msg + ' ' + (_("You may add another %s below.") % force_unicode(opts.verbose_name)))
-            return HttpResponseRedirect("../add/")
-        else:
-            self.message_user(request, msg)
-            return HttpResponseRedirect("../")
-
-    def add_view(self, request, form_url='', extra_context=None):
-        "The 'add' admin view for this model."
-        model = self.model
-        opts = model._meta
-        app_label = opts.app_label
-
-        if not self.has_add_permission(request):
-            raise PermissionDenied
-
-        if self.has_change_permission(request, None):
-            # redirect to list view
-            post_url = '../'
-        else:
-            # Object list will give 'Permission Denied', so go back to admin home
-            post_url = '../../../'
-
-        ModelForm = self.get_form(request)
-        formsets = []
-        if request.method == 'POST':
-            form = ModelForm(request.POST, request.FILES)
-            if form.is_valid():
-                form_validated = True
-                new_object = self.save_form(request, form, change=False)
-            else:
-                form_validated = False
-                new_object = self.model()
-            for FormSet in self.get_formsets(request):
-                formset = FormSet(data=request.POST, files=request.FILES,
-                                  instance=new_object,
-                                  save_as_new=request.POST.has_key("_saveasnew"))
-                formsets.append(formset)
-            if all_valid(formsets) and form_validated:
-                self.save_model(request, new_object, form, change=False)
-                form.save_m2m()
-                for formset in formsets:
-                    self.save_formset(request, form, formset, change=False)
-                
-                self.log_addition(request, new_object)
-                return self.response_add(request, new_object)
-        else:
-            form = ModelForm(initial=dict(request.GET.items()))
-            for FormSet in self.get_formsets(request):
-                formset = FormSet(instance=self.model())
-                formsets.append(formset)
-
-        adminForm = helpers.AdminForm(form, list(self.get_fieldsets(request)), self.prepopulated_fields)
-        media = self.media + adminForm.media
-
-        inline_admin_formsets = []
-        for inline, formset in zip(self.inline_instances, formsets):
-            fieldsets = list(inline.get_fieldsets(request))
-            inline_admin_formset = helpers.InlineAdminFormSet(inline, formset, fieldsets)
-            inline_admin_formsets.append(inline_admin_formset)
-            media = media + inline_admin_formset.media
-
-        context = {
-            'title': _('Add %s') % force_unicode(opts.verbose_name),
-            'adminform': adminForm,
-            'is_popup': request.REQUEST.has_key('_popup'),
-            'show_delete': False,
-            'media': mark_safe(media),
-            'inline_admin_formsets': inline_admin_formsets,
-            'errors': helpers.AdminErrorList(form, formsets),
-            'root_path': self.admin_site.root_path,
-            'app_label': app_label,
-        }
-        context.update(extra_context or {})
-        return self.render_change_form(request, context, add=True)
-    add_view = transaction.commit_on_success(add_view)
-
-    def change_view(self, request, object_id, extra_context=None):
-        "The 'change' admin view for this model."
-        model = self.model
-        opts = model._meta
-        app_label = opts.app_label
-
-        try:
-            obj = model._default_manager.get(pk=object_id)
-        except model.DoesNotExist:
-            # Don't raise Http404 just yet, because we haven't checked
-            # permissions yet. We don't want an unauthenticated user to be able
-            # to determine whether a given object exists.
-            obj = None
-
-        if not self.has_change_permission(request, obj):
-            raise PermissionDenied
-
-        if obj is None:
-            raise Http404('%s object with primary key %r does not exist.' % (force_unicode(opts.verbose_name), escape(object_id)))
-
-        if request.POST and request.POST.has_key("_saveasnew"):
-            return self.add_view(request, form_url='../../add/')
-
-        ModelForm = self.get_form(request, obj)
-        formsets = []
-        if request.method == 'POST':
-            form = ModelForm(request.POST, request.FILES, instance=obj)
-            if form.is_valid():
-                form_validated = True
-                new_object = self.save_form(request, form, change=True)
-            else:
-                form_validated = False
-                new_object = obj
-            for FormSet in self.get_formsets(request, new_object):
-                formset = FormSet(request.POST, request.FILES,
-                                  instance=new_object)
-                formsets.append(formset)
-
-            if all_valid(formsets) and form_validated:
-                self.save_model(request, new_object, form, change=True)
-                form.save_m2m()
-                for formset in formsets:
-                    self.save_formset(request, form, formset, change=True)
-                
-                change_message = self.construct_change_message(request, form, formsets)
-                self.log_change(request, new_object, change_message)
-                return self.response_change(request, new_object)
-        else:
-            form = ModelForm(instance=obj)
-            for FormSet in self.get_formsets(request, obj):
-                formset = FormSet(instance=obj)
-                formsets.append(formset)
-
-        adminForm = helpers.AdminForm(form, self.get_fieldsets(request, obj), self.prepopulated_fields)
-        media = self.media + adminForm.media
-
-        inline_admin_formsets = []
-        for inline, formset in zip(self.inline_instances, formsets):
-            fieldsets = list(inline.get_fieldsets(request, obj))
-            inline_admin_formset = helpers.InlineAdminFormSet(inline, formset, fieldsets)
-            inline_admin_formsets.append(inline_admin_formset)
-            media = media + inline_admin_formset.media
-
-        context = {
-            'title': _('Change %s') % force_unicode(opts.verbose_name),
-            'adminform': adminForm,
-            'object_id': object_id,
-            'original': obj,
-            'is_popup': request.REQUEST.has_key('_popup'),
-            'media': mark_safe(media),
-            'inline_admin_formsets': inline_admin_formsets,
-            'errors': helpers.AdminErrorList(form, formsets),
-            'root_path': self.admin_site.root_path,
-            'app_label': app_label,
-        }
-        context.update(extra_context or {})
-        return self.render_change_form(request, context, change=True, obj=obj)
-    change_view = transaction.commit_on_success(change_view)
-
-    def changelist_view(self, request, extra_context=None):
-        "The 'change list' admin view for this model."
-        from django.contrib.admin.views.main import ChangeList, ERROR_FLAG
-        opts = self.model._meta
-        app_label = opts.app_label
-        if not self.has_change_permission(request, None):
-            raise PermissionDenied
-        try:
-            cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter,
-                self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self)
-        except IncorrectLookupParameters:
-            # Wacky lookup parameters were given, so redirect to the main
-            # changelist page, without parameters, and pass an 'invalid=1'
-            # parameter via the query string. If wacky parameters were given and
-            # the 'invalid=1' parameter was already in the query string, something
-            # is screwed up with the database, so display an error page.
-            if ERROR_FLAG in request.GET.keys():
-                return render_to_response('admin/invalid_setup.html', {'title': _('Database error')})
-            return HttpResponseRedirect(request.path + '?' + ERROR_FLAG + '=1')
-
-        context = {
-            'title': cl.title,
-            'is_popup': cl.is_popup,
-            'cl': cl,
-            'has_add_permission': self.has_add_permission(request),
-            'root_path': self.admin_site.root_path,
-            'app_label': app_label,
-        }
-        context.update(extra_context or {})
-        return render_to_response(self.change_list_template or [
-            'admin/%s/%s/change_list.html' % (app_label, opts.object_name.lower()),
-            'admin/%s/change_list.html' % app_label,
-            'admin/change_list.html'
-        ], context, context_instance=template.RequestContext(request))
-
-    def delete_view(self, request, object_id, extra_context=None):
-        "The 'delete' admin view for this model."
-        opts = self.model._meta
-        app_label = opts.app_label
-
-        try:
-            obj = self.model._default_manager.get(pk=object_id)
-        except self.model.DoesNotExist:
-            # Don't raise Http404 just yet, because we haven't checked
-            # permissions yet. We don't want an unauthenticated user to be able
-            # to determine whether a given object exists.
-            obj = None
-
-        if not self.has_delete_permission(request, obj):
-            raise PermissionDenied
-
-        if obj is None:
-            raise Http404('%s object with primary key %r does not exist.' % (force_unicode(opts.verbose_name), escape(object_id)))
-
-        # Populate deleted_objects, a data structure of all related objects that
-        # will also be deleted.
-        deleted_objects = [mark_safe(u'%s: <a href="../../%s/">%s</a>' % (escape(force_unicode(capfirst(opts.verbose_name))), quote(object_id), escape(obj))), []]
-        perms_needed = set()
-        get_deleted_objects(deleted_objects, perms_needed, request.user, obj, opts, 1, self.admin_site)
-
-        if request.POST: # The user has already confirmed the deletion.
-            if perms_needed:
-                raise PermissionDenied
-            obj_display = str(obj)
-            obj.delete()
-            
-            self.log_deletion(request, obj, obj_display)
-            self.message_user(request, _('The %(name)s "%(obj)s" was deleted successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': force_unicode(obj_display)})
-            
-            if not self.has_change_permission(request, None):
-                return HttpResponseRedirect("../../../../")
-            return HttpResponseRedirect("../../")
-
-        context = {
-            "title": _("Are you sure?"),
-            "object_name": force_unicode(opts.verbose_name),
-            "object": obj,
-            "deleted_objects": deleted_objects,
-            "perms_lacking": perms_needed,
-            "opts": opts,
-            "root_path": self.admin_site.root_path,
-            "app_label": app_label,
-        }
-        context.update(extra_context or {})
-        return render_to_response(self.delete_confirmation_template or [
-            "admin/%s/%s/delete_confirmation.html" % (app_label, opts.object_name.lower()),
-            "admin/%s/delete_confirmation.html" % app_label,
-            "admin/delete_confirmation.html"
-        ], context, context_instance=template.RequestContext(request))
-
-    def history_view(self, request, object_id, extra_context=None):
-        "The 'history' admin view for this model."
-        from django.contrib.admin.models import LogEntry
-        model = self.model
-        opts = model._meta
-        action_list = LogEntry.objects.filter(
-            object_id = object_id,
-            content_type__id__exact = ContentType.objects.get_for_model(model).id
-        ).select_related().order_by('action_time')
-        # If no history was found, see whether this object even exists.
-        obj = get_object_or_404(model, pk=object_id)
-        context = {
-            'title': _('Change history: %s') % force_unicode(obj),
-            'action_list': action_list,
-            'module_name': capfirst(force_unicode(opts.verbose_name_plural)),
-            'object': obj,
-            'root_path': self.admin_site.root_path,
-        }
-        context.update(extra_context or {})
-        return render_to_response(self.object_history_template or [
-            "admin/%s/%s/object_history.html" % (opts.app_label, opts.object_name.lower()),
-            "admin/%s/object_history.html" % opts.app_label,
-            "admin/object_history.html"
-        ], context, context_instance=template.RequestContext(request))
-
-class InlineModelAdmin(BaseModelAdmin):
-    """
-    Options for inline editing of ``model`` instances.
-
-    Provide ``name`` to specify the attribute name of the ``ForeignKey`` from
-    ``model`` to its parent. This is required if ``model`` has more than one
-    ``ForeignKey`` to its parent.
-    """
-    model = None
-    fk_name = None
-    formset = BaseInlineFormSet
-    extra = 3
-    max_num = 0
-    template = None
-    verbose_name = None
-    verbose_name_plural = None
-
-    def __init__(self, parent_model, admin_site):
-        self.admin_site = admin_site
-        self.parent_model = parent_model
-        self.opts = self.model._meta
-        super(InlineModelAdmin, self).__init__()
-        if self.verbose_name is None:
-            self.verbose_name = self.model._meta.verbose_name
-        if self.verbose_name_plural is None:
-            self.verbose_name_plural = self.model._meta.verbose_name_plural
-    
-    def _media(self):
-        from django.conf import settings
-        js = []
-        if self.prepopulated_fields:
-            js.append('js/urlify.js')
-        if self.filter_vertical or self.filter_horizontal:
-            js.extend(['js/SelectBox.js' , 'js/SelectFilter2.js'])
-        return forms.Media(js=['%s%s' % (settings.ADMIN_MEDIA_PREFIX, url) for url in js])
-    media = property(_media)
-
-    def get_formset(self, request, obj=None, **kwargs):
-        """Returns a BaseInlineFormSet class for use in admin add/change views."""
-        if self.declared_fieldsets:
-            fields = flatten_fieldsets(self.declared_fieldsets)
-        else:
-            fields = None
-        defaults = {
-            "form": self.form,
-            "formset": self.formset,
-            "fk_name": self.fk_name,
-            "fields": fields,
-            "formfield_callback": self.formfield_for_dbfield,
-            "extra": self.extra,
-            "max_num": self.max_num,
-        }
-        defaults.update(kwargs)
-        return inlineformset_factory(self.parent_model, self.model, **defaults)
-
-    def get_fieldsets(self, request, obj=None):
-        if self.declared_fieldsets:
-            return self.declared_fieldsets
-        form = self.get_formset(request).form
-        return [(None, {'fields': form.base_fields.keys()})]
-
-class StackedInline(InlineModelAdmin):
-    template = 'admin/edit_inline/stacked.html'
-
-class TabularInline(InlineModelAdmin):
-    template = 'admin/edit_inline/tabular.html'
diff --git a/webapp/django/contrib/admin/sites.py b/webapp/django/contrib/admin/sites.py
deleted file mode 100644
index 25ce375..0000000
--- a/webapp/django/contrib/admin/sites.py
+++ /dev/null
@@ -1,413 +0,0 @@
-import base64
-import cPickle as pickle
-import re
-
-from django import http, template
-from django.contrib.admin import ModelAdmin
-from django.contrib.auth import authenticate, login
-from django.db.models.base import ModelBase
-from django.core.exceptions import ImproperlyConfigured
-from django.shortcuts import render_to_response
-from django.utils.safestring import mark_safe
-from django.utils.text import capfirst
-from django.utils.translation import ugettext_lazy, ugettext as _
-from django.views.decorators.cache import never_cache
-from django.conf import settings
-from django.utils.hashcompat import md5_constructor
-
-ERROR_MESSAGE = ugettext_lazy("Please enter a correct username and password. Note that both fields are case-sensitive.")
-LOGIN_FORM_KEY = 'this_is_the_login_form'
-
-class AlreadyRegistered(Exception):
-    pass
-
-class NotRegistered(Exception):
-    pass
-
-def _encode_post_data(post_data):
-    pickled = pickle.dumps(post_data)
-    pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
-    return base64.encodestring(pickled + pickled_md5)
-
-def _decode_post_data(encoded_data):
-    encoded_data = base64.decodestring(encoded_data)
-    pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
-    if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
-        from django.core.exceptions import SuspiciousOperation
-        raise SuspiciousOperation, "User may have tampered with session cookie."
-    return pickle.loads(pickled)
-
-class AdminSite(object):
-    """
-    An AdminSite object encapsulates an instance of the Django admin application, ready
-    to be hooked in to your URLConf. Models are registered with the AdminSite using the
-    register() method, and the root() method can then be used as a Django view function
-    that presents a full admin interface for the collection of registered models.
-    """
-
-    index_template = None
-    login_template = None
-    app_index_template = None
-
-    def __init__(self):
-        self._registry = {} # model_class class -> admin_class instance
-
-    def register(self, model_or_iterable, admin_class=None, **options):
-        """
-        Registers the given model(s) with the given admin class.
-
-        The model(s) should be Model classes, not instances.
-
-        If an admin class isn't given, it will use ModelAdmin (the default
-        admin options). If keyword arguments are given -- e.g., list_display --
-        they'll be applied as options to the admin class.
-
-        If a model is already registered, this will raise AlreadyRegistered.
-        """
-        # Don't import the humongous validation code unless required
-        if admin_class and settings.DEBUG:
-            from django.contrib.admin.validation import validate
-        else:
-            validate = lambda model, adminclass: None
-
-        if not admin_class:
-            admin_class = ModelAdmin
-        if isinstance(model_or_iterable, ModelBase):
-            model_or_iterable = [model_or_iterable]
-        for model in model_or_iterable:
-            if model in self._registry:
-                raise AlreadyRegistered('The model %s is already registered' % model.__name__)
-
-            # If we got **options then dynamically construct a subclass of
-            # admin_class with those **options.
-            if options:
-                # For reasons I don't quite understand, without a __module__
-                # the created class appears to "live" in the wrong place,
-                # which causes issues later on.
-                options['__module__'] = __name__
-                admin_class = type("%sAdmin" % model.__name__, (admin_class,), options)
-
-            # Validate (which might be a no-op)
-            validate(admin_class, model)
-
-            # Instantiate the admin class to save in the registry
-            self._registry[model] = admin_class(model, self)
-
-    def unregister(self, model_or_iterable):
-        """
-        Unregisters the given model(s).
-
-        If a model isn't already registered, this will raise NotRegistered.
-        """
-        if isinstance(model_or_iterable, ModelBase):
-            model_or_iterable = [model_or_iterable]
-        for model in model_or_iterable:
-            if model not in self._registry:
-                raise NotRegistered('The model %s is not registered' % model.__name__)
-            del self._registry[model]
-
-    def has_permission(self, request):
-        """
-        Returns True if the given HttpRequest has permission to view
-        *at least one* page in the admin site.
-        """
-        return request.user.is_authenticated() and request.user.is_staff
-    
-    def check_dependencies(self):
-        """
-        Check that all things needed to run the admin have been correctly installed.
-
-        The default implementation checks that LogEntry, ContentType and the
-        auth context processor are installed.
-        """
-        from django.conf import settings
-        from django.contrib.admin.models import LogEntry
-        from django.contrib.contenttypes.models import ContentType
-
-        if not LogEntry._meta.installed:
-            raise ImproperlyConfigured("Put 'django.contrib.admin' in your INSTALLED_APPS setting in order to use the admin application.")
-        if not ContentType._meta.installed:
-            raise ImproperlyConfigured("Put 'django.contrib.contenttypes' in your INSTALLED_APPS setting in order to use the admin application.")
-        if 'django.core.context_processors.auth' not in settings.TEMPLATE_CONTEXT_PROCESSORS:
-            raise ImproperlyConfigured("Put 'django.core.context_processors.auth' in your TEMPLATE_CONTEXT_PROCESSORS setting in order to use the admin application.")
-
-    def root(self, request, url):
-        """
-        Handles main URL routing for the admin app.
-
-        `url` is the remainder of the URL -- e.g. 'comments/comment/'.
-        """
-        if request.method == 'GET' and not request.path.endswith('/'):
-            return http.HttpResponseRedirect(request.path + '/')
-        
-        if settings.DEBUG:
-            self.check_dependencies()
-
-        # Figure out the admin base URL path and stash it for later use
-        self.root_path = re.sub(re.escape(url) + '$', '', request.path)
-
-        url = url.rstrip('/') # Trim trailing slash, if it exists.
-
-        # The 'logout' view doesn't require that the person is logged in.
-        if url == 'logout':
-            return self.logout(request)
-
-        # Check permission to continue or display login form.
-        if not self.has_permission(request):
-            return self.login(request)
-
-        if url == '':
-            return self.index(request)
-        elif url == 'password_change':
-            return self.password_change(request)
-        elif url == 'password_change/done':
-            return self.password_change_done(request)
-        elif url == 'jsi18n':
-            return self.i18n_javascript(request)
-        # urls starting with 'r/' are for the "show in web" links
-        elif url.startswith('r/'):
-            from django.views.defaults import shortcut
-            return shortcut(request, *url.split('/')[1:])
-        else:
-            if '/' in url:
-                return self.model_page(request, *url.split('/', 2))
-            else:
-                return self.app_index(request, url)
-
-        raise http.Http404('The requested admin page does not exist.')
-
-    def model_page(self, request, app_label, model_name, rest_of_url=None):
-        """
-        Handles the model-specific functionality of the admin site, delegating
-        to the appropriate ModelAdmin class.
-        """
-        from django.db import models
-        model = models.get_model(app_label, model_name)
-        if model is None:
-            raise http.Http404("App %r, model %r, not found." % (app_label, model_name))
-        try:
-            admin_obj = self._registry[model]
-        except KeyError:
-            raise http.Http404("This model exists but has not been registered with the admin site.")
-        return admin_obj(request, rest_of_url)
-    model_page = never_cache(model_page)
-
-    def password_change(self, request):
-        """
-        Handles the "change password" task -- both form display and validation.
-        """
-        from django.contrib.auth.views import password_change
-        return password_change(request,
-            post_change_redirect='%spassword_change/done/' % self.root_path)
-
-    def password_change_done(self, request):
-        """
-        Displays the "success" page after a password change.
-        """
-        from django.contrib.auth.views import password_change_done
-        return password_change_done(request)
-
-    def i18n_javascript(self, request):
-        """
-        Displays the i18n JavaScript that the Django admin requires.
-
-        This takes into account the USE_I18N setting. If it's set to False, the
-        generated JavaScript will be leaner and faster.
-        """
-        if settings.USE_I18N:
-            from django.views.i18n import javascript_catalog
-        else:
-            from django.views.i18n import null_javascript_catalog as javascript_catalog
-        return javascript_catalog(request, packages='django.conf')
-
-    def logout(self, request):
-        """
-        Logs out the user for the given HttpRequest.
-
-        This should *not* assume the user is already logged in.
-        """
-        from django.contrib.auth.views import logout
-        return logout(request)
-    logout = never_cache(logout)
-
-    def login(self, request):
-        """
-        Displays the login form for the given HttpRequest.
-        """
-        from django.contrib.auth.models import User
-
-        # If this isn't already the login page, display it.
-        if not request.POST.has_key(LOGIN_FORM_KEY):
-            if request.POST:
-                message = _("Please log in again, because your session has expired. Don't worry: Your submission has been saved.")
-            else:
-                message = ""
-            return self.display_login_form(request, message)
-
-        # Check that the user accepts cookies.
-        if not request.session.test_cookie_worked():
-            message = _("Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again.")
-            return self.display_login_form(request, message)
-        else:
-            request.session.delete_test_cookie()
-
-        # Check the password.
-        username = request.POST.get('username', None)
-        password = request.POST.get('password', None)
-        user = authenticate(username=username, password=password)
-        if user is None:
-            message = ERROR_MESSAGE
-            if u'@' in username:
-                # Mistakenly entered e-mail address instead of username? Look it up.
-                try:
-                    user = User.objects.get(email=username)
-                except (User.DoesNotExist, User.MultipleObjectsReturned):
-                    message = _("Usernames cannot contain the '@' character.")
-                else:
-                    if user.check_password(password):
-                        message = _("Your e-mail address is not your username."
-                                    " Try '%s' instead.") % user.username
-                    else:
-                        message = _("Usernames cannot contain the '@' character.")
-            return self.display_login_form(request, message)
-
-        # The user data is correct; log in the user in and continue.
-        else:
-            if user.is_active and user.is_staff:
-                login(request, user)
-                if request.POST.has_key('post_data'):
-                    post_data = _decode_post_data(request.POST['post_data'])
-                    if post_data and not post_data.has_key(LOGIN_FORM_KEY):
-                        # overwrite request.POST with the saved post_data, and continue
-                        request.POST = post_data
-                        request.user = user
-                        return self.root(request, request.path.split(self.root_path)[-1])
-                    else:
-                        return http.HttpResponseRedirect(request.get_full_path())
-            else:
-                return self.display_login_form(request, ERROR_MESSAGE)
-    login = never_cache(login)
-
-    def index(self, request, extra_context=None):
-        """
-        Displays the main admin index page, which lists all of the installed
-        apps that have been registered in this site.
-        """
-        app_dict = {}
-        user = request.user
-        for model, model_admin in self._registry.items():
-            app_label = model._meta.app_label
-            has_module_perms = user.has_module_perms(app_label)
-
-            if has_module_perms:
-                perms = {
-                    'add': model_admin.has_add_permission(request),
-                    'change': model_admin.has_change_permission(request),
-                    'delete': model_admin.has_delete_permission(request),
-                }
-
-                # Check whether user has any perm for this module.
-                # If so, add the module to the model_list.
-                if True in perms.values():
-                    model_dict = {
-                        'name': capfirst(model._meta.verbose_name_plural),
-                        'admin_url': mark_safe('%s/%s/' % (app_label, model.__name__.lower())),
-                        'perms': perms,
-                    }
-                    if app_label in app_dict:
-                        app_dict[app_label]['models'].append(model_dict)
-                    else:
-                        app_dict[app_label] = {
-                            'name': app_label.title(),
-                            'app_url': app_label,
-                            'has_module_perms': has_module_perms,
-                            'models': [model_dict],
-                        }
-
-        # Sort the apps alphabetically.
-        app_list = app_dict.values()
-        app_list.sort(lambda x, y: cmp(x['name'], y['name']))
-
-        # Sort the models alphabetically within each app.
-        for app in app_list:
-            app['models'].sort(lambda x, y: cmp(x['name'], y['name']))
-
-        context = {
-            'title': _('Site administration'),
-            'app_list': app_list,
-            'root_path': self.root_path,
-        }
-        context.update(extra_context or {})
-        return render_to_response(self.index_template or 'admin/index.html', context,
-            context_instance=template.RequestContext(request)
-        )
-    index = never_cache(index)
-
-    def display_login_form(self, request, error_message='', extra_context=None):
-        request.session.set_test_cookie()
-        if request.POST and request.POST.has_key('post_data'):
-            # User has failed login BUT has previously saved post data.
-            post_data = request.POST['post_data']
-        elif request.POST:
-            # User's session must have expired; save their post data.
-            post_data = _encode_post_data(request.POST)
-        else:
-            post_data = _encode_post_data({})
-
-        context = {
-            'title': _('Log in'),
-            'app_path': request.get_full_path(),
-            'post_data': post_data,
-            'error_message': error_message,
-            'root_path': self.root_path,
-        }
-        context.update(extra_context or {})
-        return render_to_response(self.login_template or 'admin/login.html', context,
-            context_instance=template.RequestContext(request)
-        )
-        
-    def app_index(self, request, app_label, extra_context=None):
-        user = request.user
-        has_module_perms = user.has_module_perms(app_label)
-        app_dict = {}
-        for model, model_admin in self._registry.items():
-            if app_label == model._meta.app_label:
-                if has_module_perms:
-                    perms = {
-                        'add': user.has_perm("%s.%s" % (app_label, model._meta.get_add_permission())),
-                        'change': user.has_perm("%s.%s" % (app_label, model._meta.get_change_permission())),
-                        'delete': user.has_perm("%s.%s" % (app_label, model._meta.get_delete_permission())),
-                    }
-                    # Check whether user has any perm for this module.
-                    # If so, add the module to the model_list.
-                    if True in perms.values():
-                        model_dict = {
-                            'name': capfirst(model._meta.verbose_name_plural),
-                            'admin_url': '%s/' % model.__name__.lower(),
-                            'perms': perms,
-                        }
-                    if app_dict:
-                        app_dict['models'].append(model_dict),
-                    else:
-                        app_dict = {
-                            'name': app_label.title(),
-                            'app_url': '',
-                            'has_module_perms': has_module_perms,
-                            'models': [model_dict],
-                        }
-                    if not app_dict:
-                        raise http.Http404('The requested admin page does not exist.')
-        # Sort the models alphabetically within each app.
-        app_dict['models'].sort(lambda x, y: cmp(x['name'], y['name']))
-        context = {
-            'title': _('%s administration' % capfirst(app_label)),
-            'app_list': [app_dict]
-        }
-        context.update(extra_context or {})
-        return render_to_response(self.app_index_template or 'admin/app_index.html', context,
-            context_instance=template.RequestContext(request)
-        )
-
-# This global object represents the default admin site, for the common case.
-# You can instantiate AdminSite in your own code to create a custom admin site.
-site = AdminSite()
diff --git a/webapp/django/contrib/admin/templates/admin/404.html b/webapp/django/contrib/admin/templates/admin/404.html
deleted file mode 100644
index 9bf4293..0000000
--- a/webapp/django/contrib/admin/templates/admin/404.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block title %}{% trans 'Page not found' %}{% endblock %}
-
-{% block content %}
-
-<h2>{% trans 'Page not found' %}</h2>
-
-<p>{% trans "We're sorry, but the requested page could not be found." %}</p>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/500.html b/webapp/django/contrib/admin/templates/admin/500.html
deleted file mode 100644
index b30e431..0000000
--- a/webapp/django/contrib/admin/templates/admin/500.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">{% trans "Home" %}</a> &rsaquo; {% trans "Server error" %}</div>{% endblock %}
-
-{% block title %}{% trans 'Server error (500)' %}{% endblock %}
-
-{% block content %}
-<h1>{% trans 'Server Error <em>(500)</em>' %}</h1>
-<p>{% trans "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." %}</p>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/app_index.html b/webapp/django/contrib/admin/templates/admin/app_index.html
deleted file mode 100644
index 120433d..0000000
--- a/webapp/django/contrib/admin/templates/admin/app_index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "admin/index.html" %} 
-{% load i18n %} 
-
-{% if not is_popup %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs"><a href="../">
-{% trans "Home" %}</a> &rsaquo; 
-{% for app in app_list %}
-{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
-{% endfor %}</div>{% endblock %}
-
-{% endif %} 
-
-{% block sidebar %}{% endblock %}
\ No newline at end of file
diff --git a/webapp/django/contrib/admin/templates/admin/auth/user/add_form.html b/webapp/django/contrib/admin/templates/admin/auth/user/add_form.html
deleted file mode 100644
index 65824a6..0000000
--- a/webapp/django/contrib/admin/templates/admin/auth/user/add_form.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends "admin/change_form.html" %}
-{% load i18n %}
-
-{% block after_field_sets %}
-
-<p>{% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}</p>
-
-<fieldset class="module aligned">
-
-<div class="form-row">
-  {{ form.username.errors }}
-  {# TODO: get required class on label_tag #}
-  <label for="id_username" class="required">{% trans 'Username' %}:</label> {{ form.username }}
-  <p class="help">{{ form.username.help_text }}</p>
-</div>
-
-<div class="form-row">
-  {{ form.password1.errors }}
-  {# TODO: get required class on label_tag #}
-  <label for="id_password1" class="required">{% trans 'Password' %}:</label> {{ form.password1 }}
-</div>
-
-<div class="form-row">
-  {{ form.password2.errors }}
-  {# TODO: get required class on label_tag #}
-  <label for="id_password2" class="required">{% trans 'Password (again)' %}:</label> {{ form.password2 }}
-  <p class="help">{% trans 'Enter the same password as above, for verification.' %}</p>
-</div>
-
-<script type="text/javascript">document.getElementById("id_username").focus();</script>
-
-</fieldset>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/auth/user/change_password.html b/webapp/django/contrib/admin/templates/admin/auth/user/change_password.html
deleted file mode 100644
index f1c4a8d..0000000
--- a/webapp/django/contrib/admin/templates/admin/auth/user/change_password.html
+++ /dev/null
@@ -1,52 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_modify adminmedia %}
-{% block extrahead %}{{ block.super }}
-<script type="text/javascript" src="../../../../jsi18n/"></script>
-{% endblock %}
-{% block stylesheet %}{% admin_media_prefix %}css/forms.css{% endblock %}
-{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
-{% block breadcrumbs %}{% if not is_popup %}
-<div class="breadcrumbs">
-     <a href="../../../../">{% trans "Home" %}</a> &rsaquo;
-     <a href="../../">{{ opts.verbose_name_plural|capfirst|escape }}</a> &rsaquo;
-     <a href="../">{{ original|truncatewords:"18"|escape }}</a> &rsaquo;
-     {% trans 'Change password' %}
-</div>
-{% endif %}{% endblock %}
-{% block content %}<div id="content-main">
-<form action="{{ form_url }}" method="post" id="{{ opts.module_name }}_form">{% block form_top %}{% endblock %}
-<div>
-{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
-{% if form.errors %}
-    <p class="errornote">
-    {% blocktrans count form.errors.items|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
-    </p>
-{% endif %}
-
-<p>{% blocktrans with original.username|escape as username %}Enter a new password for the user <strong>{{ username }}</strong>.{% endblocktrans %}</p>
-
-<fieldset class="module aligned">
-
-<div class="form-row">
-  {{ form.password1.errors }}
-  {# TODO: get required class on label_tag #}
-  <label for="id_password1" class="required">{% trans 'Password' %}:</label> {{ form.password1 }}
-</div>
-
-<div class="form-row">
-  {{ form.password2.errors }}
-  {# TODO: get required class on label_tag #}
-  <label for="id_password2" class="required">{% trans 'Password (again)' %}:</label> {{ form.password2 }}
-  <p class="help">{% trans 'Enter the same password as above, for verification.' %}</p>
-</div>
-
-</fieldset>
-
-<div class="submit-row">
-<input type="submit" value="{% trans 'Change password' %}" class="default" />
-</div>
-
-<script type="text/javascript">document.getElementById("id_password1").focus();</script>
-</div>
-</form></div>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/base.html b/webapp/django/contrib/admin/templates/admin/base.html
deleted file mode 100644
index 479e18b..0000000
--- a/webapp/django/contrib/admin/templates/admin/base.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ LANGUAGE_CODE }}" xml:lang="{{ LANGUAGE_CODE }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
-<head>
-<title>{% block title %}{% endblock %}</title>
-<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/base.css{% endblock %}" />
-{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% admin_media_prefix %}css/rtl.css{% endblock %}" />{% endif %}
-{% block extrastyle %}{% endblock %}
-{% block extrahead %}{% endblock %}
-{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
-</head>
-{% load i18n %}
-
-<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
-
-<!-- Container -->
-<div id="container">
-
-    {% if not is_popup %}
-    <!-- Header -->
-    <div id="header">
-        <div id="branding">
-        {% block branding %}{% endblock %}
-        </div>
-        {% if user.is_authenticated and user.is_staff %}
-        <div id="user-tools">{% trans 'Welcome,' %} <strong>{% if user.first_name %}{{ user.first_name|escape }}{% else %}{{ user.username }}{% endif %}</strong>. {% block userlinks %}<a href="{{ root_path }}doc/">{% trans 'Documentation' %}</a> / <a href="{{ root_path }}password_change/">{% trans 'Change password' %}</a> / <a href="{{ root_path }}logout/">{% trans 'Log out' %}</a>{% endblock %}</div>
-        {% endif %}
-        {% block nav-global %}{% endblock %}
-    </div>
-    <!-- END Header -->
-    {% block breadcrumbs %}<div class="breadcrumbs"><a href="/">{% trans 'Home' %}</a>{% if title %} &rsaquo; {{ title|escape }}{% endif %}</div>{% endblock %}
-    {% endif %}
-
-        {% if messages %}
-        <ul class="messagelist">{% for message in messages %}<li>{{ message|escape }}</li>{% endfor %}</ul>
-        {% endif %}
-
-    <!-- Content -->
-    <div id="content" class="{% block coltype %}colM{% endblock %}">
-        {% block pretitle %}{% endblock %}
-        {% block content_title %}{% if title %}<h1>{{ title|escape }}</h1>{% endif %}{% endblock %}
-        {% block content %}
-        {% block object-tools %}{% endblock %}
-        {{ content }}
-        {% endblock %}
-        {% block sidebar %}{% endblock %}
-        <br class="clear" />
-    </div>
-    <!-- END Content -->
-
-    {% block footer %}<div id="footer"></div>{% endblock %}
-</div>
-<!-- END Container -->
-
-</body>
-</html>
diff --git a/webapp/django/contrib/admin/templates/admin/base_site.html b/webapp/django/contrib/admin/templates/admin/base_site.html
deleted file mode 100644
index b867bd2..0000000
--- a/webapp/django/contrib/admin/templates/admin/base_site.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends "admin/base.html" %}
-{% load i18n %}
-
-{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %}
-
-{% block branding %}
-<h1 id="site-name">{% trans 'Django administration' %}</h1>
-{% endblock %}
-
-{% block nav-global %}{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/change_form.html b/webapp/django/contrib/admin/templates/admin/change_form.html
deleted file mode 100644
index f367973..0000000
--- a/webapp/django/contrib/admin/templates/admin/change_form.html
+++ /dev/null
@@ -1,66 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_modify adminmedia %}
-
-{% block extrahead %}{{ block.super }}
-<script type="text/javascript" src="../../../jsi18n/"></script>
-{{ media }}
-{% endblock %}
-
-{% block stylesheet %}{% admin_media_prefix %}css/forms.css{% endblock %}
-
-{% block coltype %}{% if ordered_objects %}colMS{% else %}colM{% endif %}{% endblock %}
-
-{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
-
-{% block breadcrumbs %}{% if not is_popup %}
-<div class="breadcrumbs">
-     <a href="../../../">{% trans "Home" %}</a> &rsaquo;
-     <a href="../../">{{ app_label|capfirst|escape }}</a> &rsaquo; 
-     <a href="../">{{ opts.verbose_name_plural|capfirst }}</a> &rsaquo;
-     {% if add %}{% trans "Add" %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
-</div>
-{% endif %}{% endblock %}
-
-{% block content %}<div id="content-main">
-{% block object-tools %}
-{% if change %}{% if not is_popup %}
-  <ul class="object-tools"><li><a href="history/" class="historylink">{% trans "History" %}</a></li>
-  {% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
-  </ul>
-{% endif %}{% endif %}
-{% endblock %}
-<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.module_name }}_form">{% block form_top %}{% endblock %}
-<div>
-{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
-{% if save_on_top %}{% submit_row %}{% endif %}
-{% if errors %}
-    <p class="errornote">
-    {% blocktrans count errors.items|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
-    </p>
-    <ul class="errorlist">{% for error in adminform.form.non_field_errors %}<li>{{ error }}</li>{% endfor %}</ul>
-{% endif %}
-
-{% for fieldset in adminform %}
-  {% include "admin/includes/fieldset.html" %}
-{% endfor %}
-
-{% block after_field_sets %}{% endblock %}
-
-{% for inline_admin_formset in inline_admin_formsets %}
-    {% include inline_admin_formset.opts.template %}
-{% endfor %}
-
-{% block after_related_objects %}{% endblock %}
-
-{% submit_row %}
-
-{% if add %}
-   <script type="text/javascript">document.getElementById("{{ adminform.first_field.auto_id }}").focus();</script>
-{% endif %}
-
-{# JavaScript for prepopulated fields #}
-{% prepopulated_fields_js %}
-
-</div>
-</form></div>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/change_list.html b/webapp/django/contrib/admin/templates/admin/change_list.html
deleted file mode 100644
index b66f67e..0000000
--- a/webapp/django/contrib/admin/templates/admin/change_list.html
+++ /dev/null
@@ -1,38 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load adminmedia admin_list i18n %}
-
-{% block stylesheet %}{% admin_media_prefix %}css/changelists.css{% endblock %}
-
-{% block bodyclass %}change-list{% endblock %}
-
-{% if not is_popup %}{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans "Home" %}</a> &rsaquo; <a href="../">{{ app_label|capfirst|escape }}</a> &rsaquo; {{ cl.opts.verbose_name_plural|capfirst|escape }}</div>{% endblock %}{% endif %}
-
-{% block coltype %}flex{% endblock %}
-
-{% block content %}
-<div id="content-main">
-{% block object-tools %}
-{% if has_add_permission %}
-<ul class="object-tools"><li><a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">{% blocktrans with cl.opts.verbose_name|escape as name %}Add {{ name }}{% endblocktrans %}</a></li></ul>
-{% endif %}
-{% endblock %}
-<div class="module{% if cl.has_filters %} filtered{% endif %}" id="changelist">
-{% block search %}{% search_form cl %}{% endblock %}
-{% block date_hierarchy %}{% date_hierarchy cl %}{% endblock %}
-
-{% block filters %}
-{% if cl.has_filters %}
-<div id="changelist-filter">
-<h2>{% trans 'Filter' %}</h2>
-{% for spec in cl.filter_specs %}
-   {% admin_list_filter cl spec %}
-{% endfor %}
-</div>
-{% endif %}
-{% endblock %}
-
-{% block result_list %}{% result_list cl %}{% endblock %}
-{% block pagination %}{% pagination cl %}{% endblock %}
-</div>
-</div>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/change_list_results.html b/webapp/django/contrib/admin/templates/admin/change_list_results.html
deleted file mode 100644
index 381dcb5..0000000
--- a/webapp/django/contrib/admin/templates/admin/change_list_results.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% if results %}
-<table cellspacing="0">
-<thead>
-<tr>
-{% for header in result_headers %}<th{{ header.class_attrib }}>
-{% if header.sortable %}<a href="{{ header.url }}">{% endif %}
-{{ header.text|capfirst }}
-{% if header.sortable %}</a>{% endif %}</th>{% endfor %}
-</tr>
-</thead>
-<tbody>
-{% for result in results %}
-<tr class="{% cycle 'row1' 'row2' %}">{% for item in result %}{{ item }}{% endfor %}</tr>
-{% endfor %}
-</tbody>
-</table>
-{% endif %}
diff --git a/webapp/django/contrib/admin/templates/admin/date_hierarchy.html b/webapp/django/contrib/admin/templates/admin/date_hierarchy.html
deleted file mode 100644
index 0058510..0000000
--- a/webapp/django/contrib/admin/templates/admin/date_hierarchy.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% if show %}
-<div class="xfull">
-<ul class="toplinks">
-{% if back %}<li class="date-back"><a href="{{ back.link }}">&lsaquo; {{ back.title }}</a></li>{% endif %}
-{% for choice in choices %}
-<li> {% if choice.link %}<a href="{{ choice.link }}">{% endif %}{{ choice.title }}{% if choice.link %}</a>{% endif %}</li>
-{% endfor %}
-</ul><br class="clear" />
-</div>
-{% endif %}
diff --git a/webapp/django/contrib/admin/templates/admin/delete_confirmation.html b/webapp/django/contrib/admin/templates/admin/delete_confirmation.html
deleted file mode 100644
index 2a6c4b4..0000000
--- a/webapp/django/contrib/admin/templates/admin/delete_confirmation.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-     <a href="../../../../">{% trans "Home" %}</a> &rsaquo;
-     <a href="../../../">{{ app_label|capfirst|escape }}</a> &rsaquo; 
-     <a href="../../">{{ opts.verbose_name_plural|capfirst }}</a> &rsaquo;
-     <a href="../">{{ object|escape|truncatewords:"18" }}</a> &rsaquo;
-     {% trans 'Delete' %}
-</div>
-{% endblock %}
-
-{% block content %}
-{% if perms_lacking %}
-    <p>{% blocktrans with object|escape as escaped_object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p>
-    <ul>
-    {% for obj in perms_lacking %}
-        <li>{{ obj }}</li>
-    {% endfor %}
-    </ul>
-{% else %}
-    <p>{% blocktrans with object|escape as escaped_object %}Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktrans %}</p>
-    <ul>{{ deleted_objects|unordered_list }}</ul>
-    <form action="" method="post">
-    <div>
-    <input type="hidden" name="post" value="yes" />
-    <input type="submit" value="{% trans "Yes, I'm sure" %}" />
-    </div>
-    </form>
-{% endif %}
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/edit_inline/stacked.html b/webapp/django/contrib/admin/templates/admin/edit_inline/stacked.html
deleted file mode 100644
index 217791f..0000000
--- a/webapp/django/contrib/admin/templates/admin/edit_inline/stacked.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% load i18n %}
-<div class="inline-group">
-  <h2>{{ inline_admin_formset.opts.verbose_name_plural|title }}</h2>
-{{ inline_admin_formset.formset.management_form }}
-{{ inline_admin_formset.formset.non_form_errors }}
-
-{% for inline_admin_form in inline_admin_formset %}
-<div class="inline-related {% if forloop.last %}last-related{% endif %}">
-  <h3><b>{{ inline_admin_formset.opts.verbose_name|title }}:</b>&nbsp;{% if inline_admin_form.original %}{{ inline_admin_form.original }}{% else %} #{{ forloop.counter }}{% endif %}
-    {% if inline_admin_formset.formset.can_delete and inline_admin_form.original %}<span class="delete">{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}</span>{% endif %}
-  </h3>
-  {% if inline_admin_form.show_url %}
-  <p><a href="/r/{{ inline_admin_form.original.content_type_id }}/{{ inline_admin_form.original.id }}/">View on site</a></p>
-  {% endif %}
-
-  {% for fieldset in inline_admin_form %}
-    {% include "admin/includes/fieldset.html" %}
-  {% endfor %}
-  {{ inline_admin_form.pk_field.field }}
-</div>
-{% endfor %}
-
-{# <ul class="tools"> #}
-{#   <li><a class="add" href="">Add another {{ inline_admin_formset.opts.verbose_name|title }}</a></li> #}
-{# </ul> #}
-</div>
diff --git a/webapp/django/contrib/admin/templates/admin/edit_inline/tabular.html b/webapp/django/contrib/admin/templates/admin/edit_inline/tabular.html
deleted file mode 100644
index f3fe378..0000000
--- a/webapp/django/contrib/admin/templates/admin/edit_inline/tabular.html
+++ /dev/null
@@ -1,67 +0,0 @@
-{% load i18n %}
-<div class="inline-group">
-  <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
-{{ inline_admin_formset.formset.management_form }}
-<fieldset class="module">
-   <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst|escape }}</h2>
-   {{ inline_admin_formset.formset.non_form_errors }}
-   <table>
-     <thead><tr>
-     {% for field in inline_admin_formset.fields %}
-       {% if not field.is_hidden %}
-         <th {% if forloop.first %}colspan="2"{% endif %}>{{ field.label|capfirst|escape }}</th>
-        {% endif %}
-     {% endfor %}
-     {% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete" %}?</th>{% endif %}
-     </tr></thead>
-   
-     {% for inline_admin_form in inline_admin_formset %}
-                   
-        <tr class="{% cycle row1,row2 %} {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}">
-
-        <td class="original">
-          {% if inline_admin_form.original or inline_admin_form.show_url %}<p>
-          {% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %}
-          {% if inline_admin_form.show_url %}<a href="/r/{{ inline_admin_form.original.content_type_id }}/{{ inline_admin_form.original.id }}/">View on site</a>{% endif %}
-            </p>{% endif %}
-          {{ inline_admin_form.pk_field.field }}
-          {% spaceless %}
-          {% for fieldset in inline_admin_form %}
-            {% for line in fieldset %}
-              {% for field in line %}
-                {% if field.is_hidden %} {{ field.field }} {% endif %}
-              {% endfor %}
-            {% endfor %}
-          {% endfor %}
-          {% endspaceless %}
-        </td>
-
-        {% for fieldset in inline_admin_form %}
-          {% for line in fieldset %}
-            {% for field in line %}
-              <td class="{{ field.field.name }}">
-              {{ field.field.errors.as_ul }}
-              {{ field.field }}
-              </td>
-            {% endfor %}
-          {% endfor %}
-        {% endfor %}
-                
-        {% if inline_admin_formset.formset.can_delete %}
-          <td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
-        {% endif %}
-        
-        </tr>
-
-     {% endfor %}
-   
-   </table>
-   
-</fieldset>
-  </div>
-  
-  {# <ul class="tools"> #}
-  {#   <li><a class="add" href="">Add another {{ inline_admin_formset.opts.verbose_name|title }}</a></li> #}
-  {# </ul> #}
-  
-</div>
diff --git a/webapp/django/contrib/admin/templates/admin/filter.html b/webapp/django/contrib/admin/templates/admin/filter.html
deleted file mode 100644
index bcc64ac..0000000
--- a/webapp/django/contrib/admin/templates/admin/filter.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% load i18n %}
-<h3>{% blocktrans with title|escape as filter_title %} By {{ filter_title }} {% endblocktrans %}</h3>
-<ul>
-{% for choice in choices %}
-    <li{% if choice.selected %} class="selected"{% endif %}>
-    <a href="{{ choice.query_string|iriencode }}">{{ choice.display|escape }}</a></li>
-{% endfor %}
-</ul>
diff --git a/webapp/django/contrib/admin/templates/admin/includes/fieldset.html b/webapp/django/contrib/admin/templates/admin/includes/fieldset.html
deleted file mode 100644
index 27e54c7..0000000
--- a/webapp/django/contrib/admin/templates/admin/includes/fieldset.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<fieldset class="module aligned {{ fieldset.classes }}">
-  {% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
-  {% if fieldset.description %}<div class="description">{{ fieldset.description|safe }}</div>{% endif %}
-  {% for line in fieldset %}
-      <div class="form-row{% if line.errors %} errors{% endif %} {% for field in line %}{{ field.field.name }} {% endfor %} ">
-      {{ line.errors }}
-      {% for field in line %}
-          {% if field.is_checkbox %}
-              {{ field.field }}{{ field.label_tag }}
-          {% else %}
-              {{ field.label_tag }}{{ field.field }}
-          {% endif %}
-          {% if field.field.field.help_text %}<p class="help">{{ field.field.field.help_text|safe }}</p>{% endif %}
-      {% endfor %}
-      </div>
-  {% endfor %}
-</fieldset>
diff --git a/webapp/django/contrib/admin/templates/admin/index.html b/webapp/django/contrib/admin/templates/admin/index.html
deleted file mode 100644
index ba0c381..0000000
--- a/webapp/django/contrib/admin/templates/admin/index.html
+++ /dev/null
@@ -1,68 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/dashboard.css{% endblock %}
-
-{% block coltype %}colMS{% endblock %}
-
-{% block bodyclass %}dashboard{% endblock %}
-
-{% block breadcrumbs %}{% endblock %}
-
-{% block content %}
-<div id="content-main">
-
-{% if app_list %}
-    {% for app in app_list %}
-        <div class="module">
-        <table summary="{% blocktrans with app.name as name %}Models available in the {{ name }} application.{% endblocktrans %}">
-        <caption><a href="{{ app.app_url }}" class="section">{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}</a></caption>
-        {% for model in app.models %}
-            <tr>
-            {% if model.perms.change %}
-                <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
-            {% else %}
-                <th scope="row">{{ model.name }}</th>
-            {% endif %}
-
-            {% if model.perms.add %}
-                <td><a href="{{ model.admin_url }}add/" class="addlink">{% trans 'Add' %}</a></td>
-            {% else %}
-                <td>&nbsp;</td>
-            {% endif %}
-
-            {% if model.perms.change %}
-                <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
-            {% else %}
-                <td>&nbsp;</td>
-            {% endif %}
-            </tr>
-        {% endfor %}
-        </table>
-        </div>
-    {% endfor %}
-{% else %}
-    <p>{% trans "You don't have permission to edit anything." %}</p>
-{% endif %}
-</div>
-{% endblock %}
-
-{% block sidebar %}
-<div id="content-related">
-    <div class="module" id="recent-actions-module">
-        <h2>{% trans 'Recent Actions' %}</h2>
-        <h3>{% trans 'My Actions' %}</h3>
-            {% load log %}
-            {% get_admin_log 10 as admin_log for_user user %}
-            {% if not admin_log %}
-            <p>{% trans 'None available' %}</p>
-            {% else %}
-            <ul class="actionlist">
-            {% for entry in admin_log %}
-            <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span></li>
-            {% endfor %}
-            </ul>
-            {% endif %}
-    </div>
-</div>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/invalid_setup.html b/webapp/django/contrib/admin/templates/admin/invalid_setup.html
deleted file mode 100644
index f09b316..0000000
--- a/webapp/django/contrib/admin/templates/admin/invalid_setup.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {{ title }}</div>{% endblock %}
-
-{% block content %}
-<p>{% trans "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." %}</p>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/login.html b/webapp/django/contrib/admin/templates/admin/login.html
deleted file mode 100644
index 5dd953b..0000000
--- a/webapp/django/contrib/admin/templates/admin/login.html
+++ /dev/null
@@ -1,35 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/login.css{% endblock %}
-
-{% block bodyclass %}login{% endblock %}
-
-{% block content_title %}{% endblock %}
-
-{% block breadcrumbs %}{% endblock %}
-
-{% block content %}
-{% if error_message %}
-<p class="errornote">{{ error_message }}</p>
-{% endif %}
-<div id="content-main">
-<form action="{{ app_path }}" method="post" id="login-form">
-  <div class="form-row">
-    <label for="id_username">{% trans 'Username:' %}</label> <input type="text" name="username" id="id_username" />
-  </div>
-  <div class="form-row">
-    <label for="id_password">{% trans 'Password:' %}</label> <input type="password" name="password" id="id_password" />
-    <input type="hidden" name="this_is_the_login_form" value="1" />
-    <input type="hidden" name="post_data" value="{{ post_data }}" /> {#<span class="help">{% trans 'Have you <a href="/password_reset/">forgotten your password</a>?' %}</span>#}
-  </div>
-  <div class="submit-row">
-    <label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" />
-  </div>
-</form>
-
-<script type="text/javascript">
-document.getElementById('id_username').focus()
-</script>
-</div>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/object_history.html b/webapp/django/contrib/admin/templates/admin/object_history.html
deleted file mode 100644
index c37012b..0000000
--- a/webapp/django/contrib/admin/templates/admin/object_history.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs"><a href="../../../../">{% trans 'Home' %}</a> &rsaquo; <a href="../../">{{ module_name }}</a> &rsaquo; <a href="../">{{ object|truncatewords:"18" }}</a> &rsaquo; {% trans 'History' %}</div>
-{% endblock %}
-
-{% block content %}
-<div id="content-main">
-<div class="module">
-
-{% if action_list %}
-    <table id="change-history">
-        <thead>
-        <tr>
-            <th scope="col">{% trans 'Date/time' %}</th>
-            <th scope="col">{% trans 'User' %}</th>
-            <th scope="col">{% trans 'Action' %}</th>
-        </tr>
-        </thead>
-        <tbody>
-        {% for action in action_list %}
-        <tr>
-            <th scope="row">{{ action.action_time|date:_("DATETIME_FORMAT") }}</th>
-            <td>{{ action.user.username }}{% if action.user.first_name %} ({{ action.user.first_name }} {{ action.user.last_name }}){% endif %}</td>
-            <td>{{ action.change_message }}</td>
-        </tr>
-        {% endfor %}
-        </tbody>
-    </table>
-{% else %}
-    <p>{% trans "This object doesn't have a change history. It probably wasn't added via this admin site." %}</p>
-{% endif %}
-</div>
-</div>
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/admin/pagination.html b/webapp/django/contrib/admin/templates/admin/pagination.html
deleted file mode 100644
index 0640a46..0000000
--- a/webapp/django/contrib/admin/templates/admin/pagination.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% load admin_list %}
-{% load i18n %}
-<p class="paginator">
-{% if pagination_required %}
-{% for i in page_range %}
-    {% paginator_number cl i %}
-{% endfor %}
-{% endif %}
-{{ cl.result_count }} {% ifequal cl.result_count 1 %}{{ cl.opts.verbose_name|escape }}{% else %}{{ cl.opts.verbose_name_plural }}{% endifequal %}
-{% if show_all_url %}&nbsp;&nbsp;<a href="{{ show_all_url }}" class="showall">{% trans 'Show all' %}</a>{% endif %}
-</p>
diff --git a/webapp/django/contrib/admin/templates/admin/prepopulated_fields_js.html b/webapp/django/contrib/admin/templates/admin/prepopulated_fields_js.html
deleted file mode 100644
index e1cdb96..0000000
--- a/webapp/django/contrib/admin/templates/admin/prepopulated_fields_js.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<script type="text/javascript">
-{% for field in prepopulated_fields %}
-    document.getElementById("{{ field.field.auto_id }}").onchange = function() { this._changed = true; };
-    {% for dependency in field.dependencies %}
-    document.getElementById("{{ dependency.auto_id }}").onkeyup = function() {
-        var e = document.getElementById("{{ field.field.auto_id }}");
-        if (!e._changed) { e.value = URLify({% for innerdep in field.dependencies %}document.getElementById("{{ innerdep.auto_id }}").value{% if not forloop.last %} + ' ' + {% endif %}{% endfor %}, {{ field.field.field.max_length|default_if_none:"50" }}); }
-    }
-    {% endfor %}
-{% endfor %}
-</script>
diff --git a/webapp/django/contrib/admin/templates/admin/search_form.html b/webapp/django/contrib/admin/templates/admin/search_form.html
deleted file mode 100644
index b232aa9..0000000
--- a/webapp/django/contrib/admin/templates/admin/search_form.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% load adminmedia %}
-{% load i18n %}
-{% if cl.search_fields %}
-<div id="toolbar"><form id="changelist-search" action="" method="get">
-<div><!-- DIV needed for valid HTML -->
-<label for="searchbar"><img src="{% admin_media_prefix %}img/admin/icon_searchbox.png" alt="Search" /></label>
-<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query|escape }}" id="searchbar" />
-<input type="submit" value="{% trans 'Go' %}" />
-{% if show_result_count %}
-    <span class="small quiet">{% blocktrans count cl.result_count as counter %}1 result{% plural %}{{ counter }} results{% endblocktrans %} (<a href="?{% if cl.is_popup %}pop=1{% endif %}">{% blocktrans with cl.full_result_count as full_result_count %}{{ full_result_count }} total{% endblocktrans %}</a>)</span>
-{% endif %}
-{% for pair in cl.params.items %}
-    {% ifnotequal pair.0 search_var %}<input type="hidden" name="{{ pair.0|escape }}" value="{{ pair.1|escape }}"/>{% endifnotequal %}
-{% endfor %}
-</div>
-</form></div>
-<script type="text/javascript">document.getElementById("searchbar").focus();</script>
-{% endif %}
diff --git a/webapp/django/contrib/admin/templates/admin/submit_line.html b/webapp/django/contrib/admin/templates/admin/submit_line.html
deleted file mode 100644
index 6eccbce..0000000
--- a/webapp/django/contrib/admin/templates/admin/submit_line.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% load i18n %}
-<div class="submit-row">
-{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" {{ onclick_attrib }}/>{% endif %}
-{% if show_delete_link %}<p class="float-left"><a href="delete/" class="deletelink">{% trans "Delete" %}</a></p>{% endif %}
-{% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" {{ onclick_attrib }}/>{%endif%}
-{% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" {{ onclick_attrib }} />{% endif %}
-{% if show_save_and_continue %}<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue" {{ onclick_attrib }}/>{% endif %}
-</div>
diff --git a/webapp/django/contrib/admin/templates/admin/template_validator.html b/webapp/django/contrib/admin/templates/admin/template_validator.html
deleted file mode 100644
index 5106143..0000000
--- a/webapp/django/contrib/admin/templates/admin/template_validator.html
+++ /dev/null
@@ -1,31 +0,0 @@
-{% extends "admin/base_site.html" %}
-
-{% block content %}
-
-<div id="content-main">
-
-<form action="" method="post">
-
-{% if form.errors %}
-<p class="errornote">Your template had {{ form.errors|length }} error{{ form.errors|pluralize }}:</p>
-{% endif %}
-
-<fieldset class="module aligned">
-<div class="form-row{% if form.errors.site %} error{% endif %} required">
-    {% if form.errors.site %}{{ form.errors.site }}{% endif %}
-    <h4><label for="id_site">{{ form.site.label }}:</label> {{ form.site }}</h4>
-</div>
-<div class="form-row{% if form.errors.template %} error{% endif %} required">
-    {% if form.errors.template %}{{ form.errors.template }}{% endif %}
-    <h4><label for="id_template">{{ form.template.label }}:</label> {{ form.template }}</h4>
-</div>
-</fieldset>
-
-<div class="submit-row">
-    <input type="submit" value="Check for errors" class="default" />
-</div>
-
-</form>
-</div>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/registration/logged_out.html b/webapp/django/contrib/admin/templates/registration/logged_out.html
deleted file mode 100644
index d339ef0..0000000
--- a/webapp/django/contrib/admin/templates/registration/logged_out.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a></div>{% endblock %}
-
-{% block content %}
-
-<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
-
-<p><a href="../">{% trans 'Log in again' %}</a></p>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/registration/password_change_done.html b/webapp/django/contrib/admin/templates/registration/password_change_done.html
deleted file mode 100644
index 2525720..0000000
--- a/webapp/django/contrib/admin/templates/registration/password_change_done.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block userlinks %}<a href="../../doc/">{% trans 'Documentation' %}</a> / {% trans 'Change password' %} / <a href="../../logout/">{% trans 'Log out' %}</a>{% endblock %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}</div>{% endblock %}
-
-{% block title %}{% trans 'Password change successful' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Password change successful' %}</h1>
-
-<p>{% trans 'Your password was changed.' %}</p>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/registration/password_change_form.html b/webapp/django/contrib/admin/templates/registration/password_change_form.html
deleted file mode 100644
index 4facc0e..0000000
--- a/webapp/django/contrib/admin/templates/registration/password_change_form.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block userlinks %}<a href="../doc/">{% trans 'Documentation' %}</a> / {% trans 'Change password' %} / <a href="../logout/">{% trans 'Log out' %}</a>{% endblock %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password change' %}</div>{% endblock %}
-
-{% block title %}{% trans 'Password change' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Password change' %}</h1>
-
-<p>{% trans "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." %}</p>
-
-<form action="" method="post">
-
-{% if form.old_password.errors %}{{ form.old_password.errors }}{% endif %}
-<p class="aligned wide"><label for="id_old_password">{% trans 'Old password:' %}</label>{{ form.old_password }}</p>
-{% if form.new_password1.errors %}{{ form.new_password1.errors }}{% endif %}
-<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
-{% if form.new_password2.errors %}{{ form.new_password2.errors }}{% endif %}
-<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
-
-<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
-</form>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/registration/password_reset_complete.html b/webapp/django/contrib/admin/templates/registration/password_reset_complete.html
deleted file mode 100644
index fceb167..0000000
--- a/webapp/django/contrib/admin/templates/registration/password_reset_complete.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
-
-{% block title %}{% trans 'Password reset complete' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Password reset complete' %}</h1>
-
-<p>{% trans "Your password has been set.  You may go ahead and log in now." %}</p>
-
-<p><a href="{{ login_url }}">{% trans 'Log in' %}</a></p>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/registration/password_reset_confirm.html b/webapp/django/contrib/admin/templates/registration/password_reset_confirm.html
deleted file mode 100644
index 9ba0e5a..0000000
--- a/webapp/django/contrib/admin/templates/registration/password_reset_confirm.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset confirmation' %}</div>{% endblock %}
-
-{% block title %}{% trans 'Password reset' %}{% endblock %}
-
-{% block content %}
-
-{% if validlink %}
-
-<h1>{% trans 'Enter new password' %}</h1>
-
-<p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p>
-
-<form action="" method="post">
-{% if form.new_password1.errors %}{{ form.new_password1.errors }}{% endif %}
-<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
-{% if form.new_password2.errors %}{{ form.new_password2.errors }}{% endif %}
-<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
-<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
-</form>
-
-{% else %}
-
-<h1>{% trans 'Password reset unsuccessful' %}</h1>
-
-<p>{% trans "The password reset link was invalid, possibly because it has already been used.  Please request a new password reset." %}
-
-{% endif %}
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/registration/password_reset_done.html b/webapp/django/contrib/admin/templates/registration/password_reset_done.html
deleted file mode 100644
index e223bdb..0000000
--- a/webapp/django/contrib/admin/templates/registration/password_reset_done.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
-
-{% block title %}{% trans 'Password reset successful' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Password reset successful' %}</h1>
-
-<p>{% trans "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly." %}</p>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templates/registration/password_reset_email.html b/webapp/django/contrib/admin/templates/registration/password_reset_email.html
deleted file mode 100644
index 4e4bd6d..0000000
--- a/webapp/django/contrib/admin/templates/registration/password_reset_email.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% load i18n %}{% autoescape off %}
-{% trans "You're receiving this e-mail because you requested a password reset" %}
-{% blocktrans %}for your user account at {{ site_name }}{% endblocktrans %}.
-
-{% trans "Please go to the following page and choose a new password:" %}
-{% block reset_link %}
-{{ protocol }}://{{ domain }}{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %}
-{% endblock %}
-{% trans "Your username, in case you've forgotten:" %} {{ user.username }}
-
-{% trans "Thanks for using our site!" %}
-
-{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
-
-{% endautoescape %}
diff --git a/webapp/django/contrib/admin/templates/registration/password_reset_form.html b/webapp/django/contrib/admin/templates/registration/password_reset_form.html
deleted file mode 100644
index 4ecebc7..0000000
--- a/webapp/django/contrib/admin/templates/registration/password_reset_form.html
+++ /dev/null
@@ -1,19 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a> &rsaquo; {% trans 'Password reset' %}</div>{% endblock %}
-
-{% block title %}{% trans "Password reset" %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans "Password reset" %}</h1>
-
-<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one." %}</p>
-
-<form action="" method="post">
-{% if form.email.errors %}{{ form.email.errors }}{% endif %}
-<p><label for="id_email">{% trans 'E-mail address:' %}</label> {{ form.email }} <input type="submit" value="{% trans 'Reset my password' %}" /></p>
-</form>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admin/templatetags/__init__.py b/webapp/django/contrib/admin/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/admin/templatetags/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/admin/templatetags/admin_list.py b/webapp/django/contrib/admin/templatetags/admin_list.py
deleted file mode 100644
index cae33cc..0000000
--- a/webapp/django/contrib/admin/templatetags/admin_list.py
+++ /dev/null
@@ -1,312 +0,0 @@
-from django.conf import settings
-from django.contrib.admin.views.main import ALL_VAR, EMPTY_CHANGELIST_VALUE
-from django.contrib.admin.views.main import ORDER_VAR, ORDER_TYPE_VAR, PAGE_VAR, SEARCH_VAR
-from django.core.exceptions import ObjectDoesNotExist
-from django.db import models
-from django.utils import dateformat
-from django.utils.html import escape, conditional_escape
-from django.utils.text import capfirst
-from django.utils.safestring import mark_safe
-from django.utils.translation import get_date_formats, get_partial_date_formats, ugettext as _
-from django.utils.encoding import smart_unicode, smart_str, force_unicode
-from django.template import Library
-import datetime
-
-register = Library()
-
-DOT = '.'
-
-def paginator_number(cl,i):
-    if i == DOT:
-        return u'... '
-    elif i == cl.page_num:
-        return mark_safe(u'<span class="this-page">%d</span> ' % (i+1))
-    else:
-        return mark_safe(u'<a href="%s"%s>%d</a> ' % (cl.get_query_string({PAGE_VAR: i}), (i == cl.paginator.num_pages-1 and ' class="end"' or ''), i+1))
-paginator_number = register.simple_tag(paginator_number)
-
-def pagination(cl):
-    paginator, page_num = cl.paginator, cl.page_num
-
-    pagination_required = (not cl.show_all or not cl.can_show_all) and cl.multi_page
-    if not pagination_required:
-        page_range = []
-    else:
-        ON_EACH_SIDE = 3
-        ON_ENDS = 2
-
-        # If there are 10 or fewer pages, display links to every page.
-        # Otherwise, do some fancy
-        if paginator.num_pages <= 10:
-            page_range = range(paginator.num_pages)
-        else:
-            # Insert "smart" pagination links, so that there are always ON_ENDS
-            # links at either end of the list of pages, and there are always
-            # ON_EACH_SIDE links at either end of the "current page" link.
-            page_range = []
-            if page_num > (ON_EACH_SIDE + ON_ENDS):
-                page_range.extend(range(0, ON_EACH_SIDE - 1))
-                page_range.append(DOT)
-                page_range.extend(range(page_num - ON_EACH_SIDE, page_num + 1))
-            else:
-                page_range.extend(range(0, page_num + 1))
-            if page_num < (paginator.num_pages - ON_EACH_SIDE - ON_ENDS - 1):
-                page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1))
-                page_range.append(DOT)
-                page_range.extend(range(paginator.num_pages - ON_ENDS, paginator.num_pages))
-            else:
-                page_range.extend(range(page_num + 1, paginator.num_pages))
-
-    need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
-    return {
-        'cl': cl,
-        'pagination_required': pagination_required,
-        'show_all_url': need_show_all_link and cl.get_query_string({ALL_VAR: ''}),
-        'page_range': page_range,
-        'ALL_VAR': ALL_VAR,
-        '1': 1,
-    }
-pagination = register.inclusion_tag('admin/pagination.html')(pagination)
-
-def result_headers(cl):
-    lookup_opts = cl.lookup_opts
-    
-    for i, field_name in enumerate(cl.list_display):
-        attr = None
-        try:
-            f = lookup_opts.get_field(field_name)
-            admin_order_field = None
-        except models.FieldDoesNotExist:
-            # For non-field list_display values, check for the function
-            # attribute "short_description". If that doesn't exist, fall back
-            # to the method name. And __str__ and __unicode__ are special-cases.
-            if field_name == '__unicode__':
-                header = force_unicode(lookup_opts.verbose_name)
-            elif field_name == '__str__':
-                header = smart_str(lookup_opts.verbose_name)
-            else:
-                if callable(field_name):
-                    attr = field_name # field_name can be a callable
-                else:
-                    try:
-                        attr = getattr(cl.model_admin, field_name)
-                    except AttributeError:
-                        try:
-                            attr = getattr(cl.model, field_name)
-                        except AttributeError:
-                            raise AttributeError, \
-                                "'%s' model or '%s' objects have no attribute '%s'" % \
-                                    (lookup_opts.object_name, cl.model_admin.__class__, field_name)
-                
-                try:
-                    header = attr.short_description
-                except AttributeError:
-                    if callable(field_name):
-                        header = field_name.__name__
-                    else:
-                        header = field_name
-                    header = header.replace('_', ' ')
-
-            # It is a non-field, but perhaps one that is sortable
-            admin_order_field = getattr(attr, "admin_order_field", None)
-            if not admin_order_field:
-                yield {"text": header}
-                continue
-
-            # So this _is_ a sortable non-field.  Go to the yield
-            # after the else clause.
-        else:
-            if isinstance(f.rel, models.ManyToOneRel) and f.null:
-                yield {"text": f.verbose_name}
-                continue
-            else:
-                header = f.verbose_name
-
-        th_classes = []
-        new_order_type = 'asc'
-        if field_name == cl.order_field or admin_order_field == cl.order_field:
-            th_classes.append('sorted %sending' % cl.order_type.lower())
-            new_order_type = {'asc': 'desc', 'desc': 'asc'}[cl.order_type.lower()]
-
-        yield {"text": header,
-               "sortable": True,
-               "url": cl.get_query_string({ORDER_VAR: i, ORDER_TYPE_VAR: new_order_type}),
-               "class_attrib": mark_safe(th_classes and ' class="%s"' % ' '.join(th_classes) or '')}
-
-def _boolean_icon(field_val):
-    BOOLEAN_MAPPING = {True: 'yes', False: 'no', None: 'unknown'}
-    return mark_safe(u'<img src="%simg/admin/icon-%s.gif" alt="%s" />' % (settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[field_val], field_val))
-
-def items_for_result(cl, result):
-    first = True
-    pk = cl.lookup_opts.pk.attname
-    for field_name in cl.list_display:
-        row_class = ''
-        try:
-            f = cl.lookup_opts.get_field(field_name)
-        except models.FieldDoesNotExist:
-            # For non-field list_display values, the value is either a method,
-            # property or returned via a callable.
-            try:
-                if callable(field_name):
-                    attr = field_name
-                    value = attr(result)
-                elif hasattr(cl.model_admin, field_name) and \
-                   not field_name == '__str__' and not field_name == '__unicode__':
-                    attr = getattr(cl.model_admin, field_name)
-                    value = attr(result)
-                else:
-                    attr = getattr(result, field_name)
-                    if callable(attr):
-                        value = attr()
-                    else:
-                        value = attr
-                allow_tags = getattr(attr, 'allow_tags', False)
-                boolean = getattr(attr, 'boolean', False)
-                if boolean:
-                    allow_tags = True
-                    result_repr = _boolean_icon(value)
-                else:
-                    result_repr = smart_unicode(value)
-            except (AttributeError, ObjectDoesNotExist):
-                result_repr = EMPTY_CHANGELIST_VALUE
-            else:
-                # Strip HTML tags in the resulting text, except if the
-                # function has an "allow_tags" attribute set to True.
-                if not allow_tags:
-                    result_repr = escape(result_repr)
-                else:
-                    result_repr = mark_safe(result_repr)
-        else:
-            field_val = getattr(result, f.attname)
-
-            if isinstance(f.rel, models.ManyToOneRel):
-                if field_val is not None:
-                    result_repr = escape(getattr(result, f.name))
-                else:
-                    result_repr = EMPTY_CHANGELIST_VALUE
-            # Dates and times are special: They're formatted in a certain way.
-            elif isinstance(f, models.DateField) or isinstance(f, models.TimeField):
-                if field_val:
-                    (date_format, datetime_format, time_format) = get_date_formats()
-                    if isinstance(f, models.DateTimeField):
-                        result_repr = capfirst(dateformat.format(field_val, datetime_format))
-                    elif isinstance(f, models.TimeField):
-                        result_repr = capfirst(dateformat.time_format(field_val, time_format))
-                    else:
-                        result_repr = capfirst(dateformat.format(field_val, date_format))
-                else:
-                    result_repr = EMPTY_CHANGELIST_VALUE
-                row_class = ' class="nowrap"'
-            # Booleans are special: We use images.
-            elif isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField):
-                result_repr = _boolean_icon(field_val)
-            # DecimalFields are special: Zero-pad the decimals.
-            elif isinstance(f, models.DecimalField):
-                if field_val is not None:
-                    result_repr = ('%%.%sf' % f.decimal_places) % field_val
-                else:
-                    result_repr = EMPTY_CHANGELIST_VALUE
-            # Fields with choices are special: Use the representation
-            # of the choice.
-            elif f.choices:
-                result_repr = dict(f.choices).get(field_val, EMPTY_CHANGELIST_VALUE)
-            else:
-                result_repr = escape(field_val)
-        if force_unicode(result_repr) == '':
-            result_repr = mark_safe('&nbsp;')
-        # If list_display_links not defined, add the link tag to the first field
-        if (first and not cl.list_display_links) or field_name in cl.list_display_links:
-            table_tag = {True:'th', False:'td'}[first]
-            first = False
-            url = cl.url_for_result(result)
-            # Convert the pk to something that can be used in Javascript.
-            # Problem cases are long ints (23L) and non-ASCII strings.
-            result_id = repr(force_unicode(getattr(result, pk)))[1:]
-            yield mark_safe(u'<%s%s><a href="%s"%s>%s</a></%s>' % \
-                (table_tag, row_class, url, (cl.is_popup and ' onclick="opener.dismissRelatedLookupPopup(window, %s); return false;"' % result_id or ''), conditional_escape(result_repr), table_tag))
-        else:
-            yield mark_safe(u'<td%s>%s</td>' % (row_class, conditional_escape(result_repr)))
-
-def results(cl):
-    for res in cl.result_list:
-        yield list(items_for_result(cl,res))
-
-def result_list(cl):
-    return {'cl': cl,
-            'result_headers': list(result_headers(cl)),
-            'results': list(results(cl))}
-result_list = register.inclusion_tag("admin/change_list_results.html")(result_list)
-
-def date_hierarchy(cl):
-    if cl.date_hierarchy:
-        field_name = cl.date_hierarchy
-        year_field = '%s__year' % field_name
-        month_field = '%s__month' % field_name
-        day_field = '%s__day' % field_name
-        field_generic = '%s__' % field_name
-        year_lookup = cl.params.get(year_field)
-        month_lookup = cl.params.get(month_field)
-        day_lookup = cl.params.get(day_field)
-        year_month_format, month_day_format = get_partial_date_formats()
-
-        link = lambda d: mark_safe(cl.get_query_string(d, [field_generic]))
-
-        if year_lookup and month_lookup and day_lookup:
-            day = datetime.date(int(year_lookup), int(month_lookup), int(day_lookup))
-            return {
-                'show': True,
-                'back': {
-                    'link': link({year_field: year_lookup, month_field: month_lookup}),
-                    'title': dateformat.format(day, year_month_format)
-                },
-                'choices': [{'title': dateformat.format(day, month_day_format)}]
-            }
-        elif year_lookup and month_lookup:
-            days = cl.query_set.filter(**{year_field: year_lookup, month_field: month_lookup}).dates(field_name, 'day')
-            return {
-                'show': True,
-                'back': {
-                    'link': link({year_field: year_lookup}),
-                    'title': year_lookup
-                },
-                'choices': [{
-                    'link': link({year_field: year_lookup, month_field: month_lookup, day_field: day.day}),
-                    'title': dateformat.format(day, month_day_format)
-                } for day in days]
-            }
-        elif year_lookup:
-            months = cl.query_set.filter(**{year_field: year_lookup}).dates(field_name, 'month')
-            return {
-                'show' : True,
-                'back': {
-                    'link' : link({}),
-                    'title': _('All dates')
-                },
-                'choices': [{
-                    'link': link({year_field: year_lookup, month_field: month.month}),
-                    'title': dateformat.format(month, year_month_format)
-                } for month in months]
-            }
-        else:
-            years = cl.query_set.dates(field_name, 'year')
-            return {
-                'show': True,
-                'choices': [{
-                    'link': link({year_field: year.year}),
-                    'title': year.year
-                } for year in years]
-            }
-date_hierarchy = register.inclusion_tag('admin/date_hierarchy.html')(date_hierarchy)
-
-def search_form(cl):
-    return {
-        'cl': cl,
-        'show_result_count': cl.result_count != cl.full_result_count,
-        'search_var': SEARCH_VAR
-    }
-search_form = register.inclusion_tag('admin/search_form.html')(search_form)
-
-def admin_list_filter(cl, spec):
-    return {'title': spec.title(), 'choices' : list(spec.choices(cl))}
-admin_list_filter = register.inclusion_tag('admin/filter.html')(admin_list_filter)
diff --git a/webapp/django/contrib/admin/templatetags/admin_modify.py b/webapp/django/contrib/admin/templatetags/admin_modify.py
deleted file mode 100644
index 850127c..0000000
--- a/webapp/django/contrib/admin/templatetags/admin_modify.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from django import template
-
-register = template.Library()
-
-def prepopulated_fields_js(context):
-    """
-    Creates a list of prepopulated_fields that should render Javascript for
-    the prepopulated fields for both the admin form and inlines.
-    """
-    prepopulated_fields = []
-    if context['add'] and 'adminform' in context:
-        prepopulated_fields.extend(context['adminform'].prepopulated_fields)
-    if 'inline_admin_formsets' in context:
-        for inline_admin_formset in context['inline_admin_formsets']:
-            for inline_admin_form in inline_admin_formset:
-                if inline_admin_form.original is None:
-                    prepopulated_fields.extend(inline_admin_form.prepopulated_fields)
-    context.update({'prepopulated_fields': prepopulated_fields})
-    return context
-prepopulated_fields_js = register.inclusion_tag('admin/prepopulated_fields_js.html', takes_context=True)(prepopulated_fields_js)
-
-def submit_row(context):
-    opts = context['opts']
-    change = context['change']
-    is_popup = context['is_popup']
-    save_as = context['save_as']
-    return {
-        'onclick_attrib': (opts.get_ordered_objects() and change
-                            and 'onclick="submitOrderForm();"' or ''),
-        'show_delete_link': (not is_popup and context['has_delete_permission']
-                              and (change or context['show_delete'])),
-        'show_save_as_new': not is_popup and change and save_as,
-        'show_save_and_add_another': context['has_add_permission'] and 
-                            not is_popup and (not save_as or context['add']),
-        'show_save_and_continue': not is_popup and context['has_change_permission'],
-        'show_save': True
-    }
-submit_row = register.inclusion_tag('admin/submit_line.html', takes_context=True)(submit_row)
diff --git a/webapp/django/contrib/admin/templatetags/adminmedia.py b/webapp/django/contrib/admin/templatetags/adminmedia.py
deleted file mode 100644
index 7786343..0000000
--- a/webapp/django/contrib/admin/templatetags/adminmedia.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.template import Library
-
-register = Library()
-
-def admin_media_prefix():
-    """
-    Returns the string contained in the setting ADMIN_MEDIA_PREFIX.
-    """
-    try:
-        from django.conf import settings
-    except ImportError:
-        return ''
-    return settings.ADMIN_MEDIA_PREFIX
-admin_media_prefix = register.simple_tag(admin_media_prefix)
diff --git a/webapp/django/contrib/admin/templatetags/log.py b/webapp/django/contrib/admin/templatetags/log.py
deleted file mode 100644
index 8d52d2e..0000000
--- a/webapp/django/contrib/admin/templatetags/log.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from django import template
-from django.contrib.admin.models import LogEntry
-
-register = template.Library()
-
-class AdminLogNode(template.Node):
-    def __init__(self, limit, varname, user):
-        self.limit, self.varname, self.user = limit, varname, user
-
-    def __repr__(self):
-        return "<GetAdminLog Node>"
-
-    def render(self, context):
-        if self.user is None:
-            context[self.varname] = LogEntry.objects.all().select_related()[:self.limit]
-        else:
-            if not self.user.isdigit():
-                self.user = context[self.user].id
-            context[self.varname] = LogEntry.objects.filter(user__id__exact=self.user).select_related()[:self.limit]
-        return ''
-
-class DoGetAdminLog:
-    """
-    Populates a template variable with the admin log for the given criteria.
-
-    Usage::
-
-        {% get_admin_log [limit] as [varname] for_user [context_var_containing_user_obj] %}
-
-    Examples::
-
-        {% get_admin_log 10 as admin_log for_user 23 %}
-        {% get_admin_log 10 as admin_log for_user user %}
-        {% get_admin_log 10 as admin_log %}
-
-    Note that ``context_var_containing_user_obj`` can be a hard-coded integer
-    (user ID) or the name of a template context variable containing the user
-    object whose ID you want.
-    """
-    def __init__(self, tag_name):
-        self.tag_name = tag_name
-
-    def __call__(self, parser, token):
-        tokens = token.contents.split()
-        if len(tokens) < 4:
-            raise template.TemplateSyntaxError, "'%s' statements require two arguments" % self.tag_name
-        if not tokens[1].isdigit():
-            raise template.TemplateSyntaxError, "First argument in '%s' must be an integer" % self.tag_name
-        if tokens[2] != 'as':
-            raise template.TemplateSyntaxError, "Second argument in '%s' must be 'as'" % self.tag_name
-        if len(tokens) > 4:
-            if tokens[4] != 'for_user':
-                raise template.TemplateSyntaxError, "Fourth argument in '%s' must be 'for_user'" % self.tag_name
-        return AdminLogNode(limit=tokens[1], varname=tokens[3], user=(len(tokens) > 5 and tokens[5] or None))
-
-register.tag('get_admin_log', DoGetAdminLog('get_admin_log'))
diff --git a/webapp/django/contrib/admin/util.py b/webapp/django/contrib/admin/util.py
deleted file mode 100644
index c3f567d..0000000
--- a/webapp/django/contrib/admin/util.py
+++ /dev/null
@@ -1,151 +0,0 @@
-from django.core.exceptions import ObjectDoesNotExist
-from django.db import models
-from django.utils.html import escape
-from django.utils.safestring import mark_safe
-from django.utils.text import capfirst
-from django.utils.encoding import force_unicode
-from django.utils.translation import ugettext as _
-
-
-def quote(s):
-    """
-    Ensure that primary key values do not confuse the admin URLs by escaping
-    any '/', '_' and ':' characters. Similar to urllib.quote, except that the
-    quoting is slightly different so that it doesn't get automatically
-    unquoted by the Web browser.
-    """
-    if not isinstance(s, basestring):
-        return s
-    res = list(s)
-    for i in range(len(res)):
-        c = res[i]
-        if c in """:/_#?;@&=+$,"<>%\\""":
-            res[i] = '_%02X' % ord(c)
-    return ''.join(res)
-
-def unquote(s):
-    """
-    Undo the effects of quote(). Based heavily on urllib.unquote().
-    """
-    mychr = chr
-    myatoi = int
-    list = s.split('_')
-    res = [list[0]]
-    myappend = res.append
-    del list[0]
-    for item in list:
-        if item[1:2]:
-            try:
-                myappend(mychr(myatoi(item[:2], 16)) + item[2:])
-            except ValueError:
-                myappend('_' + item)
-        else:
-            myappend('_' + item)
-    return "".join(res)
-
-def flatten_fieldsets(fieldsets):
-    """Returns a list of field names from an admin fieldsets structure."""
-    field_names = []
-    for name, opts in fieldsets:
-        for field in opts['fields']:
-            # type checking feels dirty, but it seems like the best way here
-            if type(field) == tuple:
-                field_names.extend(field)
-            else:
-                field_names.append(field)
-    return field_names
-
-def _nest_help(obj, depth, val):
-    current = obj
-    for i in range(depth):
-        current = current[-1]
-    current.append(val)
-
-def get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current_depth, admin_site):
-    "Helper function that recursively populates deleted_objects."
-    nh = _nest_help # Bind to local variable for performance
-    if current_depth > 16:
-        return # Avoid recursing too deep.
-    opts_seen = []
-    for related in opts.get_all_related_objects():
-        has_admin = related.model in admin_site._registry
-        if related.opts in opts_seen:
-            continue
-        opts_seen.append(related.opts)
-        rel_opts_name = related.get_accessor_name()
-        if isinstance(related.field.rel, models.OneToOneRel):
-            try:
-                sub_obj = getattr(obj, rel_opts_name)
-            except ObjectDoesNotExist:
-                pass
-            else:
-                if has_admin:
-                    p = '%s.%s' % (related.opts.app_label, related.opts.get_delete_permission())
-                    if not user.has_perm(p):
-                        perms_needed.add(related.opts.verbose_name)
-                        # We don't care about populating deleted_objects now.
-                        continue
-                if related.field.rel.edit_inline or not has_admin:
-                    # Don't display link to edit, because it either has no
-                    # admin or is edited inline.
-                    nh(deleted_objects, current_depth, [mark_safe(u'%s: %s' % (force_unicode(capfirst(related.opts.verbose_name)), sub_obj)), []])
-                else:
-                    # Display a link to the admin page.
-                    nh(deleted_objects, current_depth, [mark_safe(u'%s: <a href="../../../../%s/%s/%s/">%s</a>' %
-                        (escape(force_unicode(capfirst(related.opts.verbose_name))),
-                            related.opts.app_label,
-                            related.opts.object_name.lower(),
-                            sub_obj._get_pk_val(), sub_obj)), []])
-                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site)
-        else:
-            has_related_objs = False
-            for sub_obj in getattr(obj, rel_opts_name).all():
-                has_related_objs = True
-                if related.field.rel.edit_inline or not has_admin:
-                    # Don't display link to edit, because it either has no
-                    # admin or is edited inline.
-                    nh(deleted_objects, current_depth, [u'%s: %s' % (force_unicode(capfirst(related.opts.verbose_name)), escape(sub_obj)), []])
-                else:
-                    # Display a link to the admin page.
-                    nh(deleted_objects, current_depth, [mark_safe(u'%s: <a href="../../../../%s/%s/%s/">%s</a>' % \
-                        (escape(force_unicode(capfirst(related.opts.verbose_name))), related.opts.app_label, related.opts.object_name.lower(), sub_obj._get_pk_val(), escape(sub_obj))), []])
-                get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site)
-            # If there were related objects, and the user doesn't have
-            # permission to delete them, add the missing perm to perms_needed.
-            if has_admin and has_related_objs:
-                p = '%s.%s' % (related.opts.app_label, related.opts.get_delete_permission())
-                if not user.has_perm(p):
-                    perms_needed.add(related.opts.verbose_name)
-    for related in opts.get_all_related_many_to_many_objects():
-        has_admin = related.model in admin_site._registry
-        if related.opts in opts_seen:
-            continue
-        opts_seen.append(related.opts)
-        rel_opts_name = related.get_accessor_name()
-        has_related_objs = False
-
-        # related.get_accessor_name() could return None for symmetrical relationships
-        if rel_opts_name:
-            rel_objs = getattr(obj, rel_opts_name, None)
-            if rel_objs:
-                has_related_objs = True
-
-        if has_related_objs:
-            for sub_obj in rel_objs.all():
-                if related.field.rel.edit_inline or not has_admin:
-                    # Don't display link to edit, because it either has no
-                    # admin or is edited inline.
-                    nh(deleted_objects, current_depth, [_('One or more %(fieldname)s in %(name)s: %(obj)s') % \
-                        {'fieldname': force_unicode(related.field.verbose_name), 'name': force_unicode(related.opts.verbose_name), 'obj': escape(sub_obj)}, []])
-                else:
-                    # Display a link to the admin page.
-                    nh(deleted_objects, current_depth, [
-                        mark_safe((_('One or more %(fieldname)s in %(name)s:') % {'fieldname': escape(force_unicode(related.field.verbose_name)), 'name': escape(force_unicode(related.opts.verbose_name))}) + \
-                        (u' <a href="../../../../%s/%s/%s/">%s</a>' % \
-                            (related.opts.app_label, related.opts.module_name, sub_obj._get_pk_val(), escape(sub_obj)))), []])
-        # If there were related objects, and the user doesn't have
-        # permission to change them, add the missing perm to perms_needed.
-        if has_admin and has_related_objs:
-            p = u'%s.%s' % (related.opts.app_label, related.opts.get_change_permission())
-            if not user.has_perm(p):
-                perms_needed.add(related.opts.verbose_name)
diff --git a/webapp/django/contrib/admin/validation.py b/webapp/django/contrib/admin/validation.py
deleted file mode 100644
index 9b9cefa..0000000
--- a/webapp/django/contrib/admin/validation.py
+++ /dev/null
@@ -1,298 +0,0 @@
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-from django.core.exceptions import ImproperlyConfigured
-from django.db import models
-from django.forms.models import BaseModelForm, BaseModelFormSet, fields_for_model
-from django.contrib.admin.options import flatten_fieldsets, BaseModelAdmin
-from django.contrib.admin.options import HORIZONTAL, VERTICAL
-
-def validate(cls, model):
-    """
-    Does basic ModelAdmin option validation. Calls custom validation
-    classmethod in the end if it is provided in cls. The signature of the
-    custom validation classmethod should be: def validate(cls, model).
-    """
-    opts = model._meta
-    _validate_base(cls, model)
-
-    # currying is expensive, use wrappers instead
-    def _check_istuplew(label, obj):
-        _check_istuple(cls, label, obj)
-
-    def _check_isdictw(label, obj):
-        _check_isdict(cls, label, obj)
-
-    def _check_field_existsw(label, field):
-        return _check_field_exists(cls, model, opts, label, field)
-
-    def _check_attr_existsw(label, field):
-        return _check_attr_exists(cls, model, opts, label, field)
-
-    # list_display
-    if hasattr(cls, 'list_display'):
-        _check_istuplew('list_display', cls.list_display)
-        for idx, field in enumerate(cls.list_display):
-            if not callable(field):
-                if not hasattr(cls, field):
-                    if not hasattr(model, field):
-                        try:
-                            opts.get_field(field)
-                        except models.FieldDoesNotExist:
-                            raise ImproperlyConfigured("%s.list_display[%d], %r is "
-                                "not a callable or an attribute of %r or found in the model %r."
-                                % (cls.__name__, idx, field, cls.__name__, model._meta.object_name))
-                        f = _check_attr_existsw("list_display[%d]" % idx, field)
-                        if isinstance(f, models.ManyToManyField):
-                            raise ImproperlyConfigured("`%s.list_display[%d]`, `%s` is a "
-                                "ManyToManyField which is not supported."
-                                % (cls.__name__, idx, field))
-
-    # list_display_links
-    if hasattr(cls, 'list_display_links'):
-        _check_istuplew('list_display_links', cls.list_display_links)
-        for idx, field in enumerate(cls.list_display_links):
-            _check_attr_existsw('list_display_links[%d]' % idx, field)
-            if field not in cls.list_display:
-                raise ImproperlyConfigured("`%s.list_display_links[%d]`"
-                        "refers to `%s` which is not defined in `list_display`."
-                        % (cls.__name__, idx, field))
-
-    # list_filter
-    if hasattr(cls, 'list_filter'):
-        _check_istuplew('list_filter', cls.list_filter)
-        for idx, field in enumerate(cls.list_filter):
-            _check_field_existsw('list_filter[%d]' % idx, field)
-
-    # list_per_page = 100
-    if hasattr(cls, 'list_per_page') and not isinstance(cls.list_per_page, int):
-        raise ImproperlyConfigured("`%s.list_per_page` should be a integer."
-                % cls.__name__)
-
-    # search_fields = ()
-    if hasattr(cls, 'search_fields'):
-        _check_istuplew('search_fields', cls.search_fields)
-        
-    # date_hierarchy = None
-    if cls.date_hierarchy:
-        f = _check_field_existsw('date_hierarchy', cls.date_hierarchy)
-        if not isinstance(f, (models.DateField, models.DateTimeField)):
-            raise ImproperlyConfigured("`%s.date_hierarchy is "
-                    "neither an instance of DateField nor DateTimeField."
-                    % cls.__name__)
-
-    # ordering = None
-    if cls.ordering:
-        _check_istuplew('ordering', cls.ordering)
-        for idx, field in enumerate(cls.ordering):
-            if field == '?' and len(cls.ordering) != 1:
-                raise ImproperlyConfigured("`%s.ordering` has the random "
-                        "ordering marker `?`, but contains other fields as "
-                        "well. Please either remove `?` or the other fields."
-                        % cls.__name__)
-            if field == '?':
-                continue
-            if field.startswith('-'):
-                field = field[1:]
-            # Skip ordering in the format field1__field2 (FIXME: checking
-            # this format would be nice, but it's a little fiddly).
-            if '__' in field:
-                continue
-            _check_field_existsw('ordering[%d]' % idx, field)
-
-    # list_select_related = False
-    # save_as = False
-    # save_on_top = False
-    for attr in ('list_select_related', 'save_as', 'save_on_top'):
-        if not isinstance(getattr(cls, attr), bool):
-            raise ImproperlyConfigured("`%s.%s` should be a boolean."
-                    % (cls.__name__, attr))
-
-    # inlines = []
-    if hasattr(cls, 'inlines'):
-        _check_istuplew('inlines', cls.inlines)
-        for idx, inline in enumerate(cls.inlines):
-            if not issubclass(inline, BaseModelAdmin):
-                raise ImproperlyConfigured("`%s.inlines[%d]` does not inherit "
-                        "from BaseModelAdmin." % (cls.__name__, idx))
-            if not inline.model:
-                raise ImproperlyConfigured("`model` is a required attribute "
-                        "of `%s.inlines[%d]`." % (cls.__name__, idx))
-            if not issubclass(inline.model, models.Model):
-                raise ImproperlyConfigured("`%s.inlines[%d].model` does not "
-                        "inherit from models.Model." % (cls.__name__, idx))
-            _validate_base(inline, inline.model)
-            _validate_inline(inline)
-            
-def _validate_inline(cls):
-    # model is already verified to exist and be a Model
-    if cls.fk_name: # default value is None
-        f = _check_field_exists(cls, cls.model, cls.model._meta,
-                'fk_name', cls.fk_name)
-        if not isinstance(f, models.ForeignKey):
-            raise ImproperlyConfigured("`%s.fk_name is not an instance of "
-                    "models.ForeignKey." % cls.__name__)
-    # extra = 3
-    # max_num = 0
-    for attr in ('extra', 'max_num'):
-        if not isinstance(getattr(cls, attr), int):
-            raise ImproperlyConfigured("`%s.%s` should be a integer."
-                    % (cls.__name__, attr))
-
-    # formset
-    if hasattr(cls, 'formset') and not issubclass(cls.formset, BaseModelFormSet):
-        raise ImproperlyConfigured("`%s.formset` does not inherit from "
-                "BaseModelFormSet." % cls.__name__)
-
-def _validate_base(cls, model):
-    opts = model._meta
-    # currying is expensive, use wrappers instead
-    def _check_istuplew(label, obj):
-        _check_istuple(cls, label, obj)
-
-    def _check_isdictw(label, obj):
-        _check_isdict(cls, label, obj)
-
-    def _check_field_existsw(label, field):
-        return _check_field_exists(cls, model, opts, label, field)
-    
-    def _check_form_field_existsw(label, field):
-        return _check_form_field_exists(cls, model, opts, label, field)
-
-    # raw_id_fields
-    if hasattr(cls, 'raw_id_fields'):
-        _check_istuplew('raw_id_fields', cls.raw_id_fields)
-        for idx, field in enumerate(cls.raw_id_fields):
-            f = _check_field_existsw('raw_id_fields', field)
-            if not isinstance(f, (models.ForeignKey, models.ManyToManyField)):
-                raise ImproperlyConfigured("`%s.raw_id_fields[%d]`, `%s` must "
-                        "be either a ForeignKey or ManyToManyField."
-                        % (cls.__name__, idx, field))
-
-    # fields
-    if cls.fields: # default value is None
-        _check_istuplew('fields', cls.fields)
-        for field in cls.fields:
-            _check_form_field_existsw('fields', field)
-        if cls.fieldsets:
-            raise ImproperlyConfigured('Both fieldsets and fields are specified in %s.' % cls.__name__)
-        if len(cls.fields) > len(set(cls.fields)):
-            raise ImproperlyConfigured('There are duplicate field(s) in %s.fields' % cls.__name__)
-
-    # fieldsets
-    if cls.fieldsets: # default value is None
-        _check_istuplew('fieldsets', cls.fieldsets)
-        for idx, fieldset in enumerate(cls.fieldsets):
-            _check_istuplew('fieldsets[%d]' % idx, fieldset)
-            if len(fieldset) != 2:
-                raise ImproperlyConfigured("`%s.fieldsets[%d]` does not "
-                        "have exactly two elements." % (cls.__name__, idx))
-            _check_isdictw('fieldsets[%d][1]' % idx, fieldset[1])
-            if 'fields' not in fieldset[1]:
-                raise ImproperlyConfigured("`fields` key is required in "
-                        "%s.fieldsets[%d][1] field options dict."
-                        % (cls.__name__, idx))
-        flattened_fieldsets = flatten_fieldsets(cls.fieldsets)
-        if len(flattened_fieldsets) > len(set(flattened_fieldsets)):
-            raise ImproperlyConfigured('There are duplicate field(s) in %s.fieldsets' % cls.__name__)
-        for field in flattened_fieldsets:
-            _check_form_field_existsw("fieldsets[%d][1]['fields']" % idx, field)
-
-    # form
-    if hasattr(cls, 'form') and not issubclass(cls.form, BaseModelForm):
-        raise ImproperlyConfigured("%s.form does not inherit from "
-                "BaseModelForm." % cls.__name__)
-
-    # filter_vertical
-    if hasattr(cls, 'filter_vertical'):
-        _check_istuplew('filter_vertical', cls.filter_vertical)
-        for idx, field in enumerate(cls.filter_vertical):
-            f = _check_field_existsw('filter_vertical', field)
-            if not isinstance(f, models.ManyToManyField):
-                raise ImproperlyConfigured("`%s.filter_vertical[%d]` must be "
-                    "a ManyToManyField." % (cls.__name__, idx))
-
-    # filter_horizontal
-    if hasattr(cls, 'filter_horizontal'):
-        _check_istuplew('filter_horizontal', cls.filter_horizontal)
-        for idx, field in enumerate(cls.filter_horizontal):
-            f = _check_field_existsw('filter_horizontal', field)
-            if not isinstance(f, models.ManyToManyField):
-                raise ImproperlyConfigured("`%s.filter_horizontal[%d]` must be "
-                    "a ManyToManyField." % (cls.__name__, idx))
-
-    # radio_fields
-    if hasattr(cls, 'radio_fields'):
-        _check_isdictw('radio_fields', cls.radio_fields)
-        for field, val in cls.radio_fields.items():
-            f = _check_field_existsw('radio_fields', field)
-            if not (isinstance(f, models.ForeignKey) or f.choices):
-                raise ImproperlyConfigured("`%s.radio_fields['%s']` "
-                        "is neither an instance of ForeignKey nor does "
-                        "have choices set." % (cls.__name__, field))
-            if not val in (HORIZONTAL, VERTICAL):
-                raise ImproperlyConfigured("`%s.radio_fields['%s']` "
-                        "is neither admin.HORIZONTAL nor admin.VERTICAL."
-                        % (cls.__name__, field))
-
-    # prepopulated_fields
-    if hasattr(cls, 'prepopulated_fields'):
-        _check_isdictw('prepopulated_fields', cls.prepopulated_fields)
-        for field, val in cls.prepopulated_fields.items():
-            f = _check_field_existsw('prepopulated_fields', field)
-            if isinstance(f, (models.DateTimeField, models.ForeignKey,
-                models.ManyToManyField)):
-                raise ImproperlyConfigured("`%s.prepopulated_fields['%s']` "
-                        "is either a DateTimeField, ForeignKey or "
-                        "ManyToManyField. This isn't allowed."
-                        % (cls.__name__, field))
-            _check_istuplew("prepopulated_fields['%s']" % field, val)
-            for idx, f in enumerate(val):
-                _check_field_existsw("prepopulated_fields['%s'][%d]"
-                        % (f, idx), f)
-
-def _check_istuple(cls, label, obj):
-    if not isinstance(obj, (list, tuple)):
-        raise ImproperlyConfigured("`%s.%s` must be a "
-                "list or tuple." % (cls.__name__, label))
-
-def _check_isdict(cls, label, obj):
-    if not isinstance(obj, dict):
-        raise ImproperlyConfigured("`%s.%s` must be a dictionary."
-                % (cls.__name__, label))
-
-def _check_field_exists(cls, model, opts, label, field):
-    try:
-        return opts.get_field(field)
-    except models.FieldDoesNotExist:
-        raise ImproperlyConfigured("`%s.%s` refers to "
-                "field `%s` that is missing from model `%s`."
-                % (cls.__name__, label, field, model.__name__))
-
-def _check_form_field_exists(cls, model, opts, label, field):
-    if hasattr(cls.form, 'base_fields'):
-        try:
-            cls.form.base_fields[field]
-        except KeyError:
-            raise ImproperlyConfigured("`%s.%s` refers to field `%s` that "
-                "is missing from the form." % (cls.__name__, label, field))
-    else:
-        fields = fields_for_model(model)
-        try:
-            fields[field]
-        except KeyError:
-            raise ImproperlyConfigured("`%s.%s` refers to field `%s` that "
-                "is missing from the form." % (cls.__name__, label, field))
-
-def _check_attr_exists(cls, model, opts, label, field):
-    try:
-        return opts.get_field(field)
-    except models.FieldDoesNotExist:
-        if not hasattr(model, field):
-            raise ImproperlyConfigured("`%s.%s` refers to "
-                    "`%s` that is neither a field, method or property "
-                    "of model `%s`."
-                    % (cls.__name__, label, field, model.__name__))
-        return getattr(model, field)
diff --git a/webapp/django/contrib/admin/views/__init__.py b/webapp/django/contrib/admin/views/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/admin/views/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/admin/views/decorators.py b/webapp/django/contrib/admin/views/decorators.py
deleted file mode 100644
index f3c63ff..0000000
--- a/webapp/django/contrib/admin/views/decorators.py
+++ /dev/null
@@ -1,114 +0,0 @@
-import base64
-import cPickle as pickle
-try:
-    from functools import wraps
-except ImportError:
-    from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
-
-from django import http, template
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.contrib.auth import authenticate, login
-from django.shortcuts import render_to_response
-from django.utils.translation import ugettext_lazy, ugettext as _
-from django.utils.hashcompat import md5_constructor
-
-ERROR_MESSAGE = ugettext_lazy("Please enter a correct username and password. Note that both fields are case-sensitive.")
-LOGIN_FORM_KEY = 'this_is_the_login_form'
-
-def _display_login_form(request, error_message=''):
-    request.session.set_test_cookie()
-    if request.POST and 'post_data' in request.POST:
-        # User has failed login BUT has previously saved post data.
-        post_data = request.POST['post_data']
-    elif request.POST:
-        # User's session must have expired; save their post data.
-        post_data = _encode_post_data(request.POST)
-    else:
-        post_data = _encode_post_data({})
-    return render_to_response('admin/login.html', {
-        'title': _('Log in'),
-        'app_path': request.get_full_path(),
-        'post_data': post_data,
-        'error_message': error_message
-    }, context_instance=template.RequestContext(request))
-
-def _encode_post_data(post_data):
-    pickled = pickle.dumps(post_data)
-    pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
-    return base64.encodestring(pickled + pickled_md5)
-
-def _decode_post_data(encoded_data):
-    encoded_data = base64.decodestring(encoded_data)
-    pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
-    if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
-        from django.core.exceptions import SuspiciousOperation
-        raise SuspiciousOperation, "User may have tampered with session cookie."
-    return pickle.loads(pickled)
-
-def staff_member_required(view_func):
-    """
-    Decorator for views that checks that the user is logged in and is a staff
-    member, displaying the login page if necessary.
-    """
-    def _checklogin(request, *args, **kwargs):
-        if request.user.is_authenticated() and request.user.is_staff:
-            # The user is valid. Continue to the admin page.
-            if 'post_data' in request.POST:
-                # User must have re-authenticated through a different window
-                # or tab.
-                request.POST = _decode_post_data(request.POST['post_data'])
-            return view_func(request, *args, **kwargs)
-
-        assert hasattr(request, 'session'), "The Django admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
-
-        # If this isn't already the login page, display it.
-        if LOGIN_FORM_KEY not in request.POST:
-            if request.POST:
-                message = _("Please log in again, because your session has expired. Don't worry: Your submission has been saved.")
-            else:
-                message = ""
-            return _display_login_form(request, message)
-
-        # Check that the user accepts cookies.
-        if not request.session.test_cookie_worked():
-            message = _("Looks like your browser isn't configured to accept cookies. Please enable cookies, reload this page, and try again.")
-            return _display_login_form(request, message)
-        else:
-            request.session.delete_test_cookie()
-
-        # Check the password.
-        username = request.POST.get('username', None)
-        password = request.POST.get('password', None)
-        user = authenticate(username=username, password=password)
-        if user is None:
-            message = ERROR_MESSAGE
-            if '@' in username:
-                # Mistakenly entered e-mail address instead of username? Look it up.
-                users = list(User.objects.filter(email=username))
-                if len(users) == 1 and users[0].check_password(password):
-                    message = _("Your e-mail address is not your username. Try '%s' instead.") % users[0].username
-                else:
-                    # Either we cannot find the user, or if more than 1
-                    # we cannot guess which user is the correct one.
-                    message = _("Usernames cannot contain the '@' character.")
-            return _display_login_form(request, message)
-
-        # The user data is correct; log in the user in and continue.
-        else:
-            if user.is_active and user.is_staff:
-                login(request, user)
-                # TODO: set last_login with an event.
-                if 'post_data' in request.POST:
-                    post_data = _decode_post_data(request.POST['post_data'])
-                    if post_data and LOGIN_FORM_KEY not in post_data:
-                        # overwrite request.POST with the saved post_data, and continue
-                        request.POST = post_data
-                        request.user = user
-                        return view_func(request, *args, **kwargs)
-                    else:
-                        return http.HttpResponseRedirect(request.get_full_path())
-            else:
-                return _display_login_form(request, ERROR_MESSAGE)
-
-    return wraps(view_func)(_checklogin)
diff --git a/webapp/django/contrib/admin/views/main.py b/webapp/django/contrib/admin/views/main.py
deleted file mode 100644
index 50b0153..0000000
--- a/webapp/django/contrib/admin/views/main.py
+++ /dev/null
@@ -1,233 +0,0 @@
-from django.contrib.admin.filterspecs import FilterSpec
-from django.contrib.admin.options import IncorrectLookupParameters
-from django.contrib.admin.util import quote
-from django.core.paginator import Paginator, InvalidPage
-from django.db import models
-from django.db.models.query import QuerySet
-from django.utils.encoding import force_unicode, smart_str
-from django.utils.translation import ugettext
-from django.utils.http import urlencode
-import operator
-
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-# The system will display a "Show all" link on the change list only if the
-# total result count is less than or equal to this setting.
-MAX_SHOW_ALL_ALLOWED = 200
-
-# Changelist settings
-ALL_VAR = 'all'
-ORDER_VAR = 'o'
-ORDER_TYPE_VAR = 'ot'
-PAGE_VAR = 'p'
-SEARCH_VAR = 'q'
-IS_POPUP_VAR = 'pop'
-ERROR_FLAG = 'e'
-
-# Text to display within change-list table cells if the value is blank.
-EMPTY_CHANGELIST_VALUE = '(None)'
-
-class ChangeList(object):
-    def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy, search_fields, list_select_related, list_per_page, model_admin):
-        self.model = model
-        self.opts = model._meta
-        self.lookup_opts = self.opts
-        self.root_query_set = model_admin.queryset(request)
-        self.list_display = list_display
-        self.list_display_links = list_display_links
-        self.list_filter = list_filter
-        self.date_hierarchy = date_hierarchy
-        self.search_fields = search_fields
-        self.list_select_related = list_select_related
-        self.list_per_page = list_per_page
-        self.model_admin = model_admin
-
-        # Get search parameters from the query string.
-        try:
-            self.page_num = int(request.GET.get(PAGE_VAR, 0))
-        except ValueError:
-            self.page_num = 0
-        self.show_all = ALL_VAR in request.GET
-        self.is_popup = IS_POPUP_VAR in request.GET
-        self.params = dict(request.GET.items())
-        if PAGE_VAR in self.params:
-            del self.params[PAGE_VAR]
-        if ERROR_FLAG in self.params:
-            del self.params[ERROR_FLAG]
-
-        self.order_field, self.order_type = self.get_ordering()
-        self.query = request.GET.get(SEARCH_VAR, '')
-        self.query_set = self.get_query_set()
-        self.get_results(request)
-        self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name))
-        self.filter_specs, self.has_filters = self.get_filters(request)
-        self.pk_attname = self.lookup_opts.pk.attname
-
-    def get_filters(self, request):
-        filter_specs = []
-        if self.list_filter:
-            filter_fields = [self.lookup_opts.get_field(field_name) for field_name in self.list_filter]
-            for f in filter_fields:
-                spec = FilterSpec.create(f, request, self.params, self.model, self.model_admin)
-                if spec and spec.has_output():
-                    filter_specs.append(spec)
-        return filter_specs, bool(filter_specs)
-
-    def get_query_string(self, new_params=None, remove=None):
-        if new_params is None: new_params = {}
-        if remove is None: remove = []
-        p = self.params.copy()
-        for r in remove:
-            for k in p.keys():
-                if k.startswith(r):
-                    del p[k]
-        for k, v in new_params.items():
-            if v is None:
-                if k in p:
-                    del p[k]
-            else:
-                p[k] = v
-        return '?%s' % urlencode(p)
-
-    def get_results(self, request):
-        paginator = Paginator(self.query_set, self.list_per_page)
-        # Get the number of objects, with admin filters applied.
-        try:
-            result_count = paginator.count
-        # Naked except! Because we don't have any other way of validating
-        # "params". They might be invalid if the keyword arguments are
-        # incorrect, or if the values are not in the correct type (which would
-        # result in a database error).
-        except:
-            raise IncorrectLookupParameters
-
-        # Get the total number of objects, with no admin filters applied.
-        # Perform a slight optimization: Check to see whether any filters were
-        # given. If not, use paginator.hits to calculate the number of objects,
-        # because we've already done paginator.hits and the value is cached.
-        if not self.query_set.query.where:
-            full_result_count = result_count
-        else:
-            full_result_count = self.root_query_set.count()
-
-        can_show_all = result_count <= MAX_SHOW_ALL_ALLOWED
-        multi_page = result_count > self.list_per_page
-
-        # Get the list of objects to display on this page.
-        if (self.show_all and can_show_all) or not multi_page:
-            result_list = list(self.query_set)
-        else:
-            try:
-                result_list = paginator.page(self.page_num+1).object_list
-            except InvalidPage:
-                result_list = ()
-
-        self.result_count = result_count
-        self.full_result_count = full_result_count
-        self.result_list = result_list
-        self.can_show_all = can_show_all
-        self.multi_page = multi_page
-        self.paginator = paginator
-
-    def get_ordering(self):
-        lookup_opts, params = self.lookup_opts, self.params
-        # For ordering, first check the "ordering" parameter in the admin
-        # options, then check the object's default ordering. If neither of
-        # those exist, order descending by ID by default. Finally, look for
-        # manually-specified ordering from the query string.
-        ordering = self.model_admin.ordering or lookup_opts.ordering or ['-' + lookup_opts.pk.name]
-
-        if ordering[0].startswith('-'):
-            order_field, order_type = ordering[0][1:], 'desc'
-        else:
-            order_field, order_type = ordering[0], 'asc'
-        if ORDER_VAR in params:
-            try:
-                field_name = self.list_display[int(params[ORDER_VAR])]
-                try:
-                    f = lookup_opts.get_field(field_name)
-                except models.FieldDoesNotExist:
-                    # See whether field_name is a name of a non-field
-                    # that allows sorting.
-                    try:
-                        attr = getattr(self.model, field_name)
-                        order_field = attr.admin_order_field
-                    except AttributeError:
-                        pass
-                else:
-                    if not isinstance(f.rel, models.ManyToOneRel) or not f.null:
-                        order_field = f.name
-            except (IndexError, ValueError):
-                pass # Invalid ordering specified. Just use the default.
-        if ORDER_TYPE_VAR in params and params[ORDER_TYPE_VAR] in ('asc', 'desc'):
-            order_type = params[ORDER_TYPE_VAR]
-        return order_field, order_type
-
-    def get_query_set(self):
-        qs = self.root_query_set
-        lookup_params = self.params.copy() # a dictionary of the query string
-        for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR):
-            if i in lookup_params:
-                del lookup_params[i]
-        for key, value in lookup_params.items():
-            if not isinstance(key, str):
-                # 'key' will be used as a keyword argument later, so Python
-                # requires it to be a string.
-                del lookup_params[key]
-                lookup_params[smart_str(key)] = value
-
-        # Apply lookup parameters from the query string.
-        qs = qs.filter(**lookup_params)
-
-        # Use select_related() if one of the list_display options is a field
-        # with a relationship.
-        if self.list_select_related:
-            qs = qs.select_related()
-        else:
-            for field_name in self.list_display:
-                try:
-                    f = self.lookup_opts.get_field(field_name)
-                except models.FieldDoesNotExist:
-                    pass
-                else:
-                    if isinstance(f.rel, models.ManyToOneRel):
-                        qs = qs.select_related()
-                        break
-
-        # Set ordering.
-        if self.order_field:
-            qs = qs.order_by('%s%s' % ((self.order_type == 'desc' and '-' or ''), self.order_field))
-
-        # Apply keyword searches.
-        def construct_search(field_name):
-            if field_name.startswith('^'):
-                return "%s__istartswith" % field_name[1:]
-            elif field_name.startswith('='):
-                return "%s__iexact" % field_name[1:]
-            elif field_name.startswith('@'):
-                return "%s__search" % field_name[1:]
-            else:
-                return "%s__icontains" % field_name
-
-        if self.search_fields and self.query:
-            for bit in self.query.split():
-                or_queries = [models.Q(**{construct_search(field_name): bit}) for field_name in self.search_fields]
-                other_qs = QuerySet(self.model)
-                other_qs.dup_select_related(qs)
-                other_qs = other_qs.filter(reduce(operator.or_, or_queries))
-                qs = qs & other_qs
-            for field_name in self.search_fields:
-                if '__' in field_name:
-                    qs = qs.distinct()
-                    break
-
-        if self.opts.one_to_one_field:
-            qs = qs.complex_filter(self.opts.one_to_one_field.rel.limit_choices_to)
-
-        return qs
-
-    def url_for_result(self, result):
-        return "%s/" % quote(getattr(result, self.pk_attname))
diff --git a/webapp/django/contrib/admin/views/template.py b/webapp/django/contrib/admin/views/template.py
deleted file mode 100644
index de9320b..0000000
--- a/webapp/django/contrib/admin/views/template.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from django import template, forms
-from django.contrib.admin.views.decorators import staff_member_required
-from django.template import loader
-from django.shortcuts import render_to_response
-from django.contrib.sites.models import Site
-from django.conf import settings
-from django.utils.translation import ugettext_lazy as _
-
-
-def template_validator(request):
-    """
-    Displays the template validator form, which finds and displays template
-    syntax errors.
-    """
-    # get a dict of {site_id : settings_module} for the validator
-    settings_modules = {}
-    for mod in settings.ADMIN_FOR:
-        settings_module = __import__(mod, {}, {}, [''])
-        settings_modules[settings_module.SITE_ID] = settings_module
-    site_list = Site.objects.in_bulk(settings_modules.keys()).values()
-    if request.POST:
-        form = TemplateValidatorForm(settings_modules, site_list,
-                                     data=request.POST)
-        if form.is_valid():
-            request.user.message_set.create(message='The template is valid.')
-    else:
-        form = TemplateValidatorForm(settings_modules, site_list)
-    return render_to_response('admin/template_validator.html', {
-        'title': 'Template validator',
-        'form': form,
-    }, context_instance=template.RequestContext(request))
-template_validator = staff_member_required(template_validator)
-
-
-class TemplateValidatorForm(forms.Form):
-    site = forms.ChoiceField(_('site'))
-    template = forms.CharField(
-        _('template'), widget=forms.Textarea({'rows': 25, 'cols': 80}))
-
-    def __init__(self, settings_modules, site_list, *args, **kwargs):
-        self.settings_modules = settings_modules
-        super(TemplateValidatorForm, self).__init__(*args, **kwargs)
-        self.fields['site'].choices = [(s.id, s.name) for s in site_list]
-
-    def clean_template(self):
-        # Get the settings module. If the site isn't set, we don't raise an
-        # error since the site field will.
-        try:
-            site_id = int(self.cleaned_data.get('site', None))
-        except (ValueError, TypeError):
-            return
-        settings_module = self.settings_modules.get(site_id, None)
-        if settings_module is None:
-            return
-
-        # So that inheritance works in the site's context, register a new
-        # function for "extends" that uses the site's TEMPLATE_DIRS instead.
-        def new_do_extends(parser, token):
-            node = loader.do_extends(parser, token)
-            node.template_dirs = settings_module.TEMPLATE_DIRS
-            return node
-        register = template.Library()
-        register.tag('extends', new_do_extends)
-        template.builtins.append(register)
-
-        # Now validate the template using the new TEMPLATE_DIRS, making sure to
-        # reset the extends function in any case.
-        error = None
-        template_string = self.cleaned_data['template']
-        try:
-            tmpl = loader.get_template_from_string(template_string)
-            tmpl.render(template.Context({}))
-        except template.TemplateSyntaxError, e:
-            error = e
-        template.builtins.remove(register)
-        if error:
-            raise forms.ValidationError, e.args
diff --git a/webapp/django/contrib/admin/widgets.py b/webapp/django/contrib/admin/widgets.py
deleted file mode 100644
index 2bfbc97..0000000
--- a/webapp/django/contrib/admin/widgets.py
+++ /dev/null
@@ -1,238 +0,0 @@
-"""
-Form Widget classes specific to the Django admin site.
-"""
-
-import copy
-
-from django import forms
-from django.forms.widgets import RadioFieldRenderer
-from django.forms.util import flatatt
-from django.utils.text import truncate_words
-from django.utils.translation import ugettext as _
-from django.utils.safestring import mark_safe
-from django.utils.encoding import force_unicode
-from django.conf import settings
-
-class FilteredSelectMultiple(forms.SelectMultiple):
-    """
-    A SelectMultiple with a JavaScript filter interface.
-
-    Note that the resulting JavaScript assumes that the SelectFilter2.js
-    library and its dependencies have been loaded in the HTML page.
-    """
-    def __init__(self, verbose_name, is_stacked, attrs=None, choices=()):
-        self.verbose_name = verbose_name
-        self.is_stacked = is_stacked
-        super(FilteredSelectMultiple, self).__init__(attrs, choices)
-
-    def render(self, name, value, attrs=None, choices=()):
-        output = [super(FilteredSelectMultiple, self).render(name, value, attrs, choices)]
-        output.append(u'<script type="text/javascript">addEvent(window, "load", function(e) {')
-        # TODO: "id_" is hard-coded here. This should instead use the correct
-        # API to determine the ID dynamically.
-        output.append(u'SelectFilter.init("id_%s", "%s", %s, "%s"); });</script>\n' % \
-            (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked), settings.ADMIN_MEDIA_PREFIX))
-        return mark_safe(u''.join(output))
-
-class AdminDateWidget(forms.TextInput):
-    class Media:
-        js = (settings.ADMIN_MEDIA_PREFIX + "js/calendar.js", 
-              settings.ADMIN_MEDIA_PREFIX + "js/admin/DateTimeShortcuts.js")
-        
-    def __init__(self, attrs={}):
-        super(AdminDateWidget, self).__init__(attrs={'class': 'vDateField', 'size': '10'})
-
-class AdminTimeWidget(forms.TextInput):
-    class Media:
-        js = (settings.ADMIN_MEDIA_PREFIX + "js/calendar.js", 
-              settings.ADMIN_MEDIA_PREFIX + "js/admin/DateTimeShortcuts.js")
-
-    def __init__(self, attrs={}):
-        super(AdminTimeWidget, self).__init__(attrs={'class': 'vTimeField', 'size': '8'})
-    
-class AdminSplitDateTime(forms.SplitDateTimeWidget):
-    """
-    A SplitDateTime Widget that has some admin-specific styling.
-    """
-    def __init__(self, attrs=None):
-        widgets = [AdminDateWidget, AdminTimeWidget]
-        # Note that we're calling MultiWidget, not SplitDateTimeWidget, because
-        # we want to define widgets.
-        forms.MultiWidget.__init__(self, widgets, attrs)
-
-    def format_output(self, rendered_widgets):
-        return mark_safe(u'<p class="datetime">%s %s<br />%s %s</p>' % \
-            (_('Date:'), rendered_widgets[0], _('Time:'), rendered_widgets[1]))
-
-class AdminRadioFieldRenderer(RadioFieldRenderer):
-    def render(self):
-        """Outputs a <ul> for this set of radio fields."""
-        return mark_safe(u'<ul%s>\n%s\n</ul>' % (
-            flatatt(self.attrs),
-            u'\n'.join([u'<li>%s</li>' % force_unicode(w) for w in self]))
-        )
-
-class AdminRadioSelect(forms.RadioSelect):
-    renderer = AdminRadioFieldRenderer
-
-class AdminFileWidget(forms.FileInput):
-    """
-    A FileField Widget that shows its current value if it has one.
-    """
-    def __init__(self, attrs={}):
-        super(AdminFileWidget, self).__init__(attrs)
-        
-    def render(self, name, value, attrs=None):
-        output = []
-        if value and hasattr(value, "url"):
-            output.append('%s <a target="_blank" href="%s">%s</a> <br />%s ' % \
-                (_('Currently:'), value.url, value, _('Change:')))
-        output.append(super(AdminFileWidget, self).render(name, value, attrs))
-        return mark_safe(u''.join(output))
-
-class ForeignKeyRawIdWidget(forms.TextInput):
-    """
-    A Widget for displaying ForeignKeys in the "raw_id" interface rather than
-    in a <select> box.
-    """
-    def __init__(self, rel, attrs=None):
-        self.rel = rel
-        super(ForeignKeyRawIdWidget, self).__init__(attrs)
-
-    def render(self, name, value, attrs=None):
-        related_url = '../../../%s/%s/' % (self.rel.to._meta.app_label, self.rel.to._meta.object_name.lower())
-        if self.rel.limit_choices_to:
-            url = '?' + '&amp;'.join(['%s=%s' % (k, v) for k, v in self.rel.limit_choices_to.items()])
-        else:
-            url = ''
-        if not attrs.has_key('class'):
-          attrs['class'] = 'vForeignKeyRawIdAdminField' # The JavaScript looks for this hook.
-        output = [super(ForeignKeyRawIdWidget, self).render(name, value, attrs)]
-        # TODO: "id_" is hard-coded here. This should instead use the correct
-        # API to determine the ID dynamically.
-        output.append('<a href="%s%s" class="related-lookup" id="lookup_id_%s" onclick="return showRelatedObjectLookupPopup(this);"> ' % \
-            (related_url, url, name))
-        output.append('<img src="%simg/admin/selector-search.gif" width="16" height="16" alt="Lookup" /></a>' % settings.ADMIN_MEDIA_PREFIX)
-        if value:
-            output.append(self.label_for_value(value))
-        return mark_safe(u''.join(output))
-    
-    def label_for_value(self, value):
-        return '&nbsp;<strong>%s</strong>' % \
-            truncate_words(self.rel.to.objects.get(pk=value), 14)
-            
-class ManyToManyRawIdWidget(ForeignKeyRawIdWidget):
-    """
-    A Widget for displaying ManyToMany ids in the "raw_id" interface rather than
-    in a <select multiple> box.
-    """
-    def __init__(self, rel, attrs=None):
-        super(ManyToManyRawIdWidget, self).__init__(rel, attrs)
-    
-    def render(self, name, value, attrs=None):
-        attrs['class'] = 'vManyToManyRawIdAdminField'
-        if value:
-            value = ','.join([str(v) for v in value])
-        else:
-            value = ''
-        return super(ManyToManyRawIdWidget, self).render(name, value, attrs)
-    
-    def label_for_value(self, value):
-        return ''
-
-    def value_from_datadict(self, data, files, name):
-        value = data.get(name, None)
-        if value and ',' in value:
-            return data[name].split(',')
-        if value:
-            return [value]
-        return None
-    
-    def _has_changed(self, initial, data):
-        if initial is None:
-            initial = []
-        if data is None:
-            data = []
-        if len(initial) != len(data):
-            return True
-        for pk1, pk2 in zip(initial, data):
-            if force_unicode(pk1) != force_unicode(pk2):
-                return True
-        return False
-
-class RelatedFieldWidgetWrapper(forms.Widget):
-    """
-    This class is a wrapper to a given widget to add the add icon for the
-    admin interface.
-    """
-    def __init__(self, widget, rel, admin_site):
-        self.is_hidden = widget.is_hidden
-        self.needs_multipart_form = widget.needs_multipart_form
-        self.attrs = widget.attrs
-        self.choices = widget.choices
-        self.widget = widget
-        self.rel = rel
-        # so we can check if the related object is registered with this AdminSite
-        self.admin_site = admin_site
-
-    def __deepcopy__(self, memo):
-        obj = copy.copy(self)
-        obj.widget = copy.deepcopy(self.widget, memo)
-        obj.attrs = self.widget.attrs
-        memo[id(self)] = obj
-        return obj
-
-    def render(self, name, value, *args, **kwargs):
-        rel_to = self.rel.to
-        related_url = '../../../%s/%s/' % (rel_to._meta.app_label, rel_to._meta.object_name.lower())
-        self.widget.choices = self.choices
-        output = [self.widget.render(name, value, *args, **kwargs)]
-        if rel_to in self.admin_site._registry: # If the related object has an admin interface:
-            # TODO: "id_" is hard-coded here. This should instead use the correct
-            # API to determine the ID dynamically.
-            output.append(u'<a href="%sadd/" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % \
-                (related_url, name))
-            output.append(u'<img src="%simg/admin/icon_addlink.gif" width="10" height="10" alt="Add Another"/></a>' % settings.ADMIN_MEDIA_PREFIX)
-        return mark_safe(u''.join(output))
-
-    def build_attrs(self, extra_attrs=None, **kwargs):
-        "Helper function for building an attribute dictionary."
-        self.attrs = self.widget.build_attrs(extra_attrs=None, **kwargs)
-        return self.attrs
-
-    def value_from_datadict(self, data, files, name):
-        return self.widget.value_from_datadict(data, files, name)
-
-    def _has_changed(self, initial, data):
-        return self.widget._has_changed(initial, data)
-
-    def id_for_label(self, id_):
-        return self.widget.id_for_label(id_)
-
-class AdminTextareaWidget(forms.Textarea):
-    def __init__(self, attrs=None):
-        final_attrs = {'class': 'vLargeTextField'}
-        if attrs is not None:
-            final_attrs.update(attrs)
-        super(AdminTextareaWidget, self).__init__(attrs=final_attrs)
-
-class AdminTextInputWidget(forms.TextInput):
-    def __init__(self, attrs=None):
-        final_attrs = {'class': 'vTextField'}
-        if attrs is not None:
-            final_attrs.update(attrs)
-        super(AdminTextInputWidget, self).__init__(attrs=final_attrs)
-
-class AdminURLFieldWidget(forms.TextInput):
-    def __init__(self, attrs=None):
-        final_attrs = {'class': 'vURLField'}
-        if attrs is not None:
-            final_attrs.update(attrs)
-        super(AdminURLFieldWidget, self).__init__(attrs=final_attrs)
-
-class AdminIntegerFieldWidget(forms.TextInput):
-    def __init__(self, attrs=None):
-        final_attrs = {'class': 'vIntegerField'}
-        if attrs is not None:
-            final_attrs.update(attrs)
-        super(AdminIntegerFieldWidget, self).__init__(attrs=final_attrs)
diff --git a/webapp/django/contrib/admindocs/__init__.py b/webapp/django/contrib/admindocs/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/admindocs/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/bookmarklets.html b/webapp/django/contrib/admindocs/templates/admin_doc/bookmarklets.html
deleted file mode 100644
index 6447529..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/bookmarklets.html
+++ /dev/null
@@ -1,31 +0,0 @@
-{% extends "admin/base_site.html" %}
-
-{% block breadcrumbs %}{% load i18n %}<div class="breadcrumbs"><a href="../../">{% trans "Home" %}</a> &rsaquo; <a href="../">{% trans "Documentation" %}</a> &rsaquo; {% trans "Bookmarklets" %}</div>{% endblock %}
-{% block title %}{% trans "Documentation bookmarklets" %}{% endblock %}
-
-{% block content %}
-
-{% blocktrans %}
-<p class="help">To install bookmarklets, drag the link to your bookmarks
-toolbar, or right-click the link and add it to your bookmarks. Now you can
-select the bookmarklet from any page in the site.  Note that some of these
-bookmarklets require you to be viewing the site from a computer designated
-as "internal" (talk to your system administrator if you aren't sure if
-your computer is "internal").</p>
-{% endblocktrans %}
-
-<div id="content-main">
-    <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('HEAD',location.href,false);x.send(null);try{view=x.getResponseHeader('x-view');}catch(e){alert('No view found for this page');return;}if(view=='undefined'){alert('No view found for this page');}document.location='{{ admin_url }}doc/views/'+view+'/';})()">{% trans "Documentation for this page" %}</a></h3>
-    <p>{% trans "Jumps you from any page to the documentation for the view that generates that page." %}</p>
-
-    <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{type=x.getResponseHeader('x-object-type');id=x.getResponseHeader('x-object-id');}catch(e){type='(none)';id='(none)';}d=document;b=d.body;e=d.createElement('div');e.id='xxxhhh';s=e.style;s.position='absolute';s.left='10px';s.top='10px';s.font='10px monospace';s.border='1px black solid';s.padding='4px';s.backgroundColor='#eee';e.appendChild(d.createTextNode('Type: '+type));e.appendChild(d.createElement('br'));e.appendChild(d.createTextNode('ID: '+id));e.appendChild(d.createElement('br'));l=d.createElement('a');l.href='#';l.onclick=function(){b.removeChild(e);};l.appendChild(d.createTextNode('[close]'));l.style.textDecoration='none';e.appendChild(l);b.appendChild(e);})();">{% trans "Show object ID" %}</a></h3>
-    <p>{% trans "Shows the content-type and unique ID for pages that represent a single object." %}</p>
-
-    <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}document.location='{{ admin_url }}'+type.split('.').join('/')+'/'+id+'/';})()">{% trans "Edit this object (current window)" %}</a></h3>
-    <p>{% trans "Jumps to the admin page for pages that represent a single object." %}</p>
-
-    <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}window.open('{{ admin_url }}'+type.split('.').join('/')+'/'+id+'/');})()">{% trans "Edit this object (new window)" %}</a></h3>
-    <p>{% trans "As above, but opens the admin page in a new window." %}</p>
-</div>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/index.html b/webapp/django/contrib/admindocs/templates/admin_doc/index.html
deleted file mode 100644
index 242fc73..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Documentation</div>{% endblock %}
-{% block title %}Documentation{% endblock %}
-
-{% block content %}
-
-<h1>Documentation</h1>
-
-<div id="content-main">
-  <h3><a href="tags/">Tags</a></h3>
-  <p>List of all the template tags and their functions.</p>
-
-  <h3><a href="filters/">Filters</a></h3>
-  <p>Filters are actions which can be applied to variables in a template to alter the output.</p>
-
-  <h3><a href="models/">Models</a></h3>
-  <p>Models are descriptions of all the objects in the system and their associated fields. Each model has a list of fields which can be accessed as template variables.</p>
-
-  <h3><a href="views/">Views</a></h3>
-  <p>Each page on the public site is generated by a view. The view defines which template is used to generate the page and which objects are available to that template.</p>
-
-    <h3><a href="bookmarklets/">Bookmarklets</a></h3>
-    <p>Tools for your browser to quickly access admin functionality.</p>
-</div>
-
-{% endblock %}
-
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/missing_docutils.html b/webapp/django/contrib/admindocs/templates/admin_doc/missing_docutils.html
deleted file mode 100644
index 97c9d47..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/missing_docutils.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">Home</a> &rsaquo; Documentation</div>{% endblock %}
-{% block title %}Please install docutils{% endblock %}
-
-{% block content %}
-
-<h1>Documentation</h1>
-
-<div id="content-main">
-  <h3>The admin documentation system requires Python's <a href="http://docutils.sf.net/">docutils</a> library.</h3>
-
-  <p>Please ask your administrators to install <a href="http://docutils.sf.net/">docutils</a>.</p>
-</div>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/model_detail.html b/webapp/django/contrib/admindocs/templates/admin_doc/model_detail.html
deleted file mode 100644
index 414397f..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/model_detail.html
+++ /dev/null
@@ -1,46 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block extrahead %}
-{{ block.super }}
-<style type="text/css">
-.module table { width:100%; }
-.module table p { padding: 0; margin: 0; }
-</style>
-{% endblock %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; <a href="../">Models</a> &rsaquo; {{ name }}</div>{% endblock %}
-
-{% block title %}Model: {{ name }}{% endblock %}
-
-{% block content %}
-<div id="content-main">
-<h1>{{ summary }}</h1>
-
-{% if description %}
-  <p>{% filter linebreaksbr %}{% trans description %}{% endfilter %}</p>
-{% endif %}
-
-<div class="module">
-<table class="model">
-<thead>
-<tr>
-    <th>Field</th>
-    <th>Type</th>
-    <th>Description</th>
-</tr>
-</thead>
-<tbody>
-{% for field in fields|dictsort:"name" %}
-<tr>
-    <td>{{ field.name }}</td>
-    <td>{{ field.data_type }}</td>
-    <td>{% if field.verbose %}{{ field.verbose }}{% endif %}{% if field.help_text %} - {{ field.help_text|safe }}{% endif %}</td>
-</tr>
-{% endfor %}
-</tbody>
-</table>
-</div>
-
-<p class="small"><a href="../">&lsaquo; Back to Models Documentation</a></p>
-</div>
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/model_index.html b/webapp/django/contrib/admindocs/templates/admin_doc/model_index.html
deleted file mode 100644
index 702fdff..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/model_index.html
+++ /dev/null
@@ -1,44 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block coltype %}colSM{% endblock %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Models</div>{% endblock %}
-
-{% block title %}Models{% endblock %}
-
-{% block content %}
-
-<h1>Model documentation</h1>
-
-{% regroup models by app_label as grouped_models %}
-
-<div id="content-main">
-{% for group in grouped_models %}
-<div class="module">
-<h2 id="{{ group.grouper }}">{{ group.grouper|capfirst }}</h2>
-
-<table class="xfull">
-{% for model in group.list %}
-<tr>
-<th><a href="{{ model.app_label }}.{{ model.object_name.lower }}/">{{ model.object_name }}</a></th>
-</tr>
-{% endfor %}
-</table>
-</div>
-{% endfor %}
-
-</div>
-{% endblock %}
-
-{% block sidebar %}
-<div id="content-related" class="sidebar">
-<div class="module">
-<h2>Model groups</h2>
-<ul>
-{% regroup models by app_label as grouped_models %}
-{% for group in grouped_models %}
-    <li><a href="#{{ group.grouper }}">{{ group.grouper|capfirst }}</a></li>
-{% endfor %}
-</ul>
-</div>
-</div>
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/template_detail.html b/webapp/django/contrib/admindocs/templates/admin_doc/template_detail.html
deleted file mode 100644
index a8b02bd..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/template_detail.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; Templates &rsaquo; {{ name|escape }}</div>{% endblock %}
-
-{% block title %}Template: {{ name|escape }}{% endblock %}
-
-{% block content %}
-<h1>Template: "{{ name|escape }}"</h1>
-
-{% regroup templates|dictsort:"site_id" by site as templates_by_site %}
-{% for group in templates_by_site %}
-    <h2>Search path for template "{{ name|escape }}" on {{ group.grouper }}:</h2>
-    <ol>
-    {% for template in group.list|dictsort:"order" %}
-        <li><code>{{ template.file|escape }}</code>{% if not template.exists %} <em>(does not exist)</em>{% endif %}</li>
-    {% endfor %}
-    </ol>
-{% endfor %}
-
-<p class="small"><a href="../../">&lsaquo; Back to Documentation</a></p>
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/template_filter_index.html b/webapp/django/contrib/admindocs/templates/admin_doc/template_filter_index.html
deleted file mode 100644
index 902396d..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/template_filter_index.html
+++ /dev/null
@@ -1,47 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block coltype %}colSM{% endblock %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; filters</div>{% endblock %}
-{% block title %}Template filters{% endblock %}
-
-{% block content %}
-
-<h1>Template filter documentation</h1>
-
-<div id="content-main">
-{% regroup filters|dictsort:"library" by library as filter_libraries %}
-{% for library in filter_libraries %}
-<div class="module">
-    <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in filters{% endif %}</h2>
-    {% if library.grouper %}<p class="small quiet">To use these filters, put <code>{% templatetag openblock %} load {{ library.grouper }} {% templatetag closeblock %}</code> in your template before using the filter.</p><hr />{% endif %}
-    {% for filter in library.list|dictsort:"name" %}
-    <h3 id="{{ filter.name }}">{{ filter.name }}</h3>
-    <p>{{ filter.title }}</p>
-    <p>{{ filter.body }}</p>
-    {% if not forloop.last %}<hr />{% endif %}
-    {% endfor %}
-</div>
-{% endfor %}
-</div>
-
-{% endblock %}
-
-{% block sidebar %}
-
-<div id="content-related">
-
-{% regroup filters|dictsort:"library" by library as filter_libraries %}
-{% for library in filter_libraries %}
-<div class="module">
-    <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in filters{% endif %}</h2>
-    <ul>
-    {% for filter in library.list|dictsort:"name" %}
-        <li><a href="#{{ filter.name }}">{{ filter.name }}</a></li>
-    {% endfor %}
-    </ul>
-</div>
-{% endfor %}
-
-</div>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/template_tag_index.html b/webapp/django/contrib/admindocs/templates/admin_doc/template_tag_index.html
deleted file mode 100644
index ea49529..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/template_tag_index.html
+++ /dev/null
@@ -1,47 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block coltype %}colSM{% endblock %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Tags</div>{% endblock %}
-{% block title %}Template tags{% endblock %}
-
-{% block content %}
-
-<h1>Template tag documentation</h1>
-
-<div id="content-main">
-{% regroup tags|dictsort:"library" by library as tag_libraries %}
-{% for library in tag_libraries %}
-<div class="module">
-    <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in tags{% endif %}</h2>
-    {% if library.grouper %}<p class="small quiet">To use these tags, put <code>{% templatetag openblock %} load {{ library.grouper }} {% templatetag closeblock %}</code> in your template before using the tag.</p><hr />{% endif %}
-    {% for tag in library.list|dictsort:"name" %}
-    <h3 id="{{ tag.name }}">{{ tag.name }}</h3>
-    <h4>{{ tag.title }}</h4>
-    <p>{{ tag.body }}</p>
-    {% if not forloop.last %}<hr />{% endif %}
-    {% endfor %}
-</div>
-{% endfor %}
-</div>
-
-{% endblock %}
-
-{% block sidebar %}
-
-<div id="content-related">
-
-{% regroup tags|dictsort:"library" by library as tag_libraries %}
-{% for library in tag_libraries %}
-<div class="module">
-    <h2>{% if library.grouper %}{{ library.grouper }}{% else %}Built-in tags{% endif %}</h2>
-    <ul>
-    {% for tag in library.list|dictsort:"name" %}
-        <li><a href="#{{ tag.name }}">{{ tag.name }}</a></li>
-    {% endfor %}
-    </ul>
-</div>
-{% endfor %}
-
-</div>
-
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/view_detail.html b/webapp/django/contrib/admindocs/templates/admin_doc/view_detail.html
deleted file mode 100644
index d7415ab..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/view_detail.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../../">Home</a> &rsaquo; <a href="../../">Documentation</a> &rsaquo; <a href="../">Views</a> &rsaquo; {{ name }}</div>{% endblock %}
-{% block title %}View: {{ name }}{% endblock %}
-
-{% block content %}
-
-<h1>{{ name }}</h1>
-
-<h2 class="subhead">{{ summary }}</h2>
-
-<p>{{ body }}</p>
-
-{% if meta.Context %}
-<h3>Context:</h3>
-<p>{{ meta.Context }}</p>
-{% endif %}
-
-{% if meta.Templates %}
-<h3>Templates:</h3>
-<p>{{ meta.Templates }}</p>
-{% endif %}
-
-<p class="small"><a href="../">&lsaquo; Back to Views Documentation</a></p>
-{% endblock %}
diff --git a/webapp/django/contrib/admindocs/templates/admin_doc/view_index.html b/webapp/django/contrib/admindocs/templates/admin_doc/view_index.html
deleted file mode 100644
index 4099005..0000000
--- a/webapp/django/contrib/admindocs/templates/admin_doc/view_index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block coltype %}colSM{% endblock %}
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">Home</a> &rsaquo; <a href="../">Documentation</a> &rsaquo; Views</div>{% endblock %}
-{% block title %}Views{% endblock %}
-
-{% block content %}
-
-<h1>View documentation</h1>
-
-{% regroup views|dictsort:"site_id" by site as views_by_site %}
-
-<div id="content-related" class="sidebar">
-<div class="module">
-<h2>Jump to site</h2>
-<ul>
-    {% for site_views in views_by_site %}
-    <li><a href="#site{{ site_views.grouper.id }}">{{ site_views.grouper.name }}</a></li>
-    {% endfor %}
-</ul>
-</div>
-</div>
-
-<div id="content-main">
-
-{% for site_views in views_by_site %}
-<div class="module">
-<h2 id="site{{ site_views.grouper.id }}">Views by URL on {{ site_views.grouper.name }}</h2>
-
-{% for view in site_views.list|dictsort:"url" %}
-{% ifchanged %}
-<h3><a href="{{ view.module }}.{{ view.name }}/">{{ view.url|escape }}</a></h3>
-<p class="small quiet">View function: {{ view.module }}.{{ view.name }}</p>
-<p>{{ view.title }}</p>
-<hr />
-{% endifchanged %}
-{% endfor %}
-</div>
-{% endfor %}
-</div>
-{% endblock %}
-
-
diff --git a/webapp/django/contrib/admindocs/urls.py b/webapp/django/contrib/admindocs/urls.py
deleted file mode 100644
index e7baa76..0000000
--- a/webapp/django/contrib/admindocs/urls.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from django.conf.urls.defaults import *
-from django.contrib.admindocs import views
-
-urlpatterns = patterns('',
-    ('^$', views.doc_index),
-    ('^bookmarklets/$', views.bookmarklets),
-    ('^tags/$', views.template_tag_index),
-    ('^filters/$', views.template_filter_index),
-    ('^views/$', views.view_index),
-    ('^views/(?P<view>[^/]+)/$', views.view_detail),
-    ('^models/$', views.model_index),
-    ('^models/(?P<app_label>[^\.]+)\.(?P<model_name>[^/]+)/$', views.model_detail),
-#    ('^templates/$', views.template_index),
-    ('^templates/(?P<template>.*)/$', views.template_detail),
-)
diff --git a/webapp/django/contrib/admindocs/utils.py b/webapp/django/contrib/admindocs/utils.py
deleted file mode 100644
index 4a45a62..0000000
--- a/webapp/django/contrib/admindocs/utils.py
+++ /dev/null
@@ -1,103 +0,0 @@
-"Misc. utility functions/classes for admin documentation generator."
-
-import re
-from email.Parser import HeaderParser
-from email.Errors import HeaderParseError
-from django.utils.safestring import mark_safe
-try:
-    import docutils.core
-    import docutils.nodes
-    import docutils.parsers.rst.roles
-except ImportError:
-    docutils_is_available = False
-else:
-    docutils_is_available = True
-
-def trim_docstring(docstring):
-    """
-    Uniformly trims leading/trailing whitespace from docstrings.
-
-    Based on http://www.python.org/peps/pep-0257.html#handling-docstring-indentation
-    """
-    if not docstring or not docstring.strip():
-        return ''
-    # Convert tabs to spaces and split into lines
-    lines = docstring.expandtabs().splitlines()
-    indent = min([len(line) - len(line.lstrip()) for line in lines if line.lstrip()])
-    trimmed = [lines[0].lstrip()] + [line[indent:].rstrip() for line in lines[1:]]
-    return "\n".join(trimmed).strip()
-
-def parse_docstring(docstring):
-    """
-    Parse out the parts of a docstring.  Returns (title, body, metadata).
-    """
-    docstring = trim_docstring(docstring)
-    parts = re.split(r'\n{2,}', docstring)
-    title = parts[0]
-    if len(parts) == 1:
-        body = ''
-        metadata = {}
-    else:
-        parser = HeaderParser()
-        try:
-            metadata = parser.parsestr(parts[-1])
-        except HeaderParseError:
-            metadata = {}
-            body = "\n\n".join(parts[1:])
-        else:
-            metadata = dict(metadata.items())
-            if metadata:
-                body = "\n\n".join(parts[1:-1])
-            else:
-                body = "\n\n".join(parts[1:])
-    return title, body, metadata
-
-def parse_rst(text, default_reference_context, thing_being_parsed=None, link_base='../..'):
-    """
-    Convert the string from reST to an XHTML fragment.
-    """
-    overrides = {
-        'doctitle_xform' : True,
-        'inital_header_level' : 3,
-        "default_reference_context" : default_reference_context,
-        "link_base" : link_base,
-    }
-    if thing_being_parsed:
-        thing_being_parsed = "<%s>" % thing_being_parsed
-    parts = docutils.core.publish_parts(text, source_path=thing_being_parsed,
-                destination_path=None, writer_name='html',
-                settings_overrides=overrides)
-    return mark_safe(parts['fragment'])
-
-#
-# reST roles
-#
-ROLES = {
-    'model'    : '%s/models/%s/',
-    'view'     : '%s/views/%s/',
-    'template' : '%s/templates/%s/',
-    'filter'   : '%s/filters/#%s',
-    'tag'      : '%s/tags/#%s',
-}
-
-def create_reference_role(rolename, urlbase):
-    def _role(name, rawtext, text, lineno, inliner, options=None, content=None):
-        if options is None: options = {}
-        if content is None: content = []
-        node = docutils.nodes.reference(rawtext, text, refuri=(urlbase % (inliner.document.settings.link_base, text.lower())), **options)
-        return [node], []
-    docutils.parsers.rst.roles.register_canonical_role(rolename, _role)
-
-def default_reference_role(name, rawtext, text, lineno, inliner, options=None, content=None):
-    if options is None: options = {}
-    if content is None: content = []
-    context = inliner.document.settings.default_reference_context
-    node = docutils.nodes.reference(rawtext, text, refuri=(ROLES[context] % (inliner.document.settings.link_base, text.lower())), **options)
-    return [node], []
-
-if docutils_is_available:
-    docutils.parsers.rst.roles.register_canonical_role('cmsreference', default_reference_role)
-    docutils.parsers.rst.roles.DEFAULT_INTERPRETED_ROLE = 'cmsreference'
-
-    for name, urlbase in ROLES.items():
-        create_reference_role(name, urlbase)
diff --git a/webapp/django/contrib/admindocs/views.py b/webapp/django/contrib/admindocs/views.py
deleted file mode 100644
index d6d263c..0000000
--- a/webapp/django/contrib/admindocs/views.py
+++ /dev/null
@@ -1,392 +0,0 @@
-from django import template, templatetags
-from django.template import RequestContext
-from django.conf import settings
-from django.contrib.admin.views.decorators import staff_member_required
-from django.db import models
-from django.shortcuts import render_to_response
-from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
-from django.http import Http404
-from django.core import urlresolvers
-from django.contrib.admindocs import utils
-from django.contrib.sites.models import Site
-from django.utils.translation import ugettext as _
-from django.utils.safestring import mark_safe
-import inspect, os, re
-
-# Exclude methods starting with these strings from documentation
-MODEL_METHODS_EXCLUDE = ('_', 'add_', 'delete', 'save', 'set_')
-
-class GenericSite(object):
-    domain = 'example.com'
-    name = 'my site'
-
-def doc_index(request):
-    if not utils.docutils_is_available:
-        return missing_docutils_page(request)
-    root_path = re.sub(re.escape('doc/') + '$', '', request.path)
-    return render_to_response('admin_doc/index.html', {
-        'root_path': root_path,
-    }, context_instance=RequestContext(request))
-doc_index = staff_member_required(doc_index)
-
-def bookmarklets(request):
-    # Hack! This couples this view to the URL it lives at.
-    admin_root = request.path[:-len('doc/bookmarklets/')]
-    root_path = re.sub(re.escape('doc/bookmarklets/') + '$', '', request.path)
-    return render_to_response('admin_doc/bookmarklets.html', {
-        'root_path': root_path,
-        'admin_url': mark_safe("%s://%s%s" % (request.is_secure() and 'https' or 'http', request.get_host(), admin_root)),
-    }, context_instance=RequestContext(request))
-bookmarklets = staff_member_required(bookmarklets)
-
-def template_tag_index(request):
-    if not utils.docutils_is_available:
-        return missing_docutils_page(request)
-
-    load_all_installed_template_libraries()
-
-    tags = []
-    for module_name, library in template.libraries.items():
-        for tag_name, tag_func in library.tags.items():
-            title, body, metadata = utils.parse_docstring(tag_func.__doc__)
-            if title:
-                title = utils.parse_rst(title, 'tag', _('tag:') + tag_name)
-            if body:
-                body = utils.parse_rst(body, 'tag', _('tag:') + tag_name)
-            for key in metadata:
-                metadata[key] = utils.parse_rst(metadata[key], 'tag', _('tag:') + tag_name)
-            if library in template.builtins:
-                tag_library = None
-            else:
-                tag_library = module_name.split('.')[-1]
-            tags.append({
-                'name': tag_name,
-                'title': title,
-                'body': body,
-                'meta': metadata,
-                'library': tag_library,
-            })
-    root_path = re.sub(re.escape('doc/tags/') + '$', '', request.path)
-    return render_to_response('admin_doc/template_tag_index.html', {
-        'root_path': root_path,
-        'tags': tags
-    }, context_instance=RequestContext(request))
-template_tag_index = staff_member_required(template_tag_index)
-
-def template_filter_index(request):
-    if not utils.docutils_is_available:
-        return missing_docutils_page(request)
-
-    load_all_installed_template_libraries()
-
-    filters = []
-    for module_name, library in template.libraries.items():
-        for filter_name, filter_func in library.filters.items():
-            title, body, metadata = utils.parse_docstring(filter_func.__doc__)
-            if title:
-                title = utils.parse_rst(title, 'filter', _('filter:') + filter_name)
-            if body:
-                body = utils.parse_rst(body, 'filter', _('filter:') + filter_name)
-            for key in metadata:
-                metadata[key] = utils.parse_rst(metadata[key], 'filter', _('filter:') + filter_name)
-            if library in template.builtins:
-                tag_library = None
-            else:
-                tag_library = module_name.split('.')[-1]
-            filters.append({
-                'name': filter_name,
-                'title': title,
-                'body': body,
-                'meta': metadata,
-                'library': tag_library,
-            })
-    root_path = re.sub(re.escape('doc/filters/') + '$', '', request.path)
-    return render_to_response('admin_doc/template_filter_index.html', {
-        'root_path': root_path,
-        'filters': filters
-    }, context_instance=RequestContext(request))
-template_filter_index = staff_member_required(template_filter_index)
-
-def view_index(request):
-    if not utils.docutils_is_available:
-        return missing_docutils_page(request)
-
-    if settings.ADMIN_FOR:
-        settings_modules = [__import__(m, {}, {}, ['']) for m in settings.ADMIN_FOR]
-    else:
-        settings_modules = [settings]
-
-    views = []
-    for settings_mod in settings_modules:
-        urlconf = __import__(settings_mod.ROOT_URLCONF, {}, {}, [''])
-        view_functions = extract_views_from_urlpatterns(urlconf.urlpatterns)
-        if Site._meta.installed:
-            site_obj = Site.objects.get(pk=settings_mod.SITE_ID)
-        else:
-            site_obj = GenericSite()
-        for (func, regex) in view_functions:
-            views.append({
-                'name': func.__name__,
-                'module': func.__module__,
-                'site_id': settings_mod.SITE_ID,
-                'site': site_obj,
-                'url': simplify_regex(regex),
-            })
-    root_path = re.sub(re.escape('doc/views/') + '$', '', request.path)
-    return render_to_response('admin_doc/view_index.html', {
-        'root_path': root_path,
-        'views': views
-    }, context_instance=RequestContext(request))
-view_index = staff_member_required(view_index)
-
-def view_detail(request, view):
-    if not utils.docutils_is_available:
-        return missing_docutils_page(request)
-
-    mod, func = urlresolvers.get_mod_func(view)
-    try:
-        view_func = getattr(__import__(mod, {}, {}, ['']), func)
-    except (ImportError, AttributeError):
-        raise Http404
-    title, body, metadata = utils.parse_docstring(view_func.__doc__)
-    if title:
-        title = utils.parse_rst(title, 'view', _('view:') + view)
-    if body:
-        body = utils.parse_rst(body, 'view', _('view:') + view)
-    for key in metadata:
-        metadata[key] = utils.parse_rst(metadata[key], 'model', _('view:') + view)
-    root_path = re.sub(re.escape('doc/views/%s/' % view) + '$', '', request.path)
-    return render_to_response('admin_doc/view_detail.html', {
-        'root_path': root_path,
-        'name': view,
-        'summary': title,
-        'body': body,
-        'meta': metadata,
-    }, context_instance=RequestContext(request))
-view_detail = staff_member_required(view_detail)
-
-def model_index(request):
-    if not utils.docutils_is_available:
-        return missing_docutils_page(request)
-    m_list = [m._meta for m in models.get_models()]
-    root_path = re.sub(re.escape('doc/models/') + '$', '', request.path)
-    return render_to_response('admin_doc/model_index.html', {
-        'root_path': root_path,
-        'models': m_list
-    }, context_instance=RequestContext(request))
-model_index = staff_member_required(model_index)
-
-def model_detail(request, app_label, model_name):
-    if not utils.docutils_is_available:
-        return missing_docutils_page(request)
-        
-    # Get the model class.
-    try:
-        app_mod = models.get_app(app_label)
-    except ImproperlyConfigured:
-        raise Http404, _("App %r not found") % app_label
-    model = None
-    for m in models.get_models(app_mod):
-        if m._meta.object_name.lower() == model_name:
-            model = m
-            break
-    if model is None:
-        raise Http404, _("Model %(model_name)r not found in app %(app_label)r") % {'model_name': model_name, 'app_label': app_label}
-
-    opts = model._meta
-
-    # Gather fields/field descriptions.
-    fields = []
-    for field in opts.fields:
-        # ForeignKey is a special case since the field will actually be a
-        # descriptor that returns the other object
-        if isinstance(field, models.ForeignKey):
-            data_type = related_object_name = field.rel.to.__name__
-            app_label = field.rel.to._meta.app_label
-            verbose = utils.parse_rst((_("the related `%(app_label)s.%(data_type)s` object")  % {'app_label': app_label, 'data_type': data_type}), 'model', _('model:') + data_type)
-        else:
-            data_type = get_readable_field_data_type(field)
-            verbose = field.verbose_name
-        fields.append({
-            'name': field.name,
-            'data_type': data_type,
-            'verbose': verbose,
-            'help_text': field.help_text,
-        })
-
-    # Gather model methods.
-    for func_name, func in model.__dict__.items():
-        if (inspect.isfunction(func) and len(inspect.getargspec(func)[0]) == 1):
-            try:
-                for exclude in MODEL_METHODS_EXCLUDE:
-                    if func_name.startswith(exclude):
-                        raise StopIteration
-            except StopIteration:
-                continue
-            verbose = func.__doc__
-            if verbose:
-                verbose = utils.parse_rst(utils.trim_docstring(verbose), 'model', _('model:') + opts.module_name)
-            fields.append({
-                'name': func_name,
-                'data_type': get_return_data_type(func_name),
-                'verbose': verbose,
-            })
-
-    # Gather related objects
-    for rel in opts.get_all_related_objects():
-        verbose = _("related `%(app_label)s.%(object_name)s` objects") % {'app_label': rel.opts.app_label, 'object_name': rel.opts.object_name}
-        accessor = rel.get_accessor_name()
-        fields.append({
-            'name'      : "%s.all" % accessor,
-            'data_type' : 'List',
-            'verbose'   : utils.parse_rst(_("all %s") % verbose , 'model', _('model:') + opts.module_name),
-        })
-        fields.append({
-            'name'      : "%s.count" % accessor,
-            'data_type' : 'Integer',
-            'verbose'   : utils.parse_rst(_("number of %s") % verbose , 'model', _('model:') + opts.module_name),
-        })
-    root_path = re.sub(re.escape('doc/models/%s.%s/' % (app_label, model_name)) + '$', '', request.path)
-    return render_to_response('admin_doc/model_detail.html', {
-        'root_path': root_path,
-        'name': '%s.%s' % (opts.app_label, opts.object_name),
-        'summary': _("Fields on %s objects") % opts.object_name,
-        'description': model.__doc__,
-        'fields': fields,
-    }, context_instance=RequestContext(request))
-model_detail = staff_member_required(model_detail)
-
-def template_detail(request, template):
-    templates = []
-    for site_settings_module in settings.ADMIN_FOR:
-        settings_mod = __import__(site_settings_module, {}, {}, [''])
-        if Site._meta.installed:
-            site_obj = Site.objects.get(pk=settings_mod.SITE_ID)
-        else:
-            site_obj = GenericSite()
-        for dir in settings_mod.TEMPLATE_DIRS:
-            template_file = os.path.join(dir, "%s.html" % template)
-            templates.append({
-                'file': template_file,
-                'exists': os.path.exists(template_file),
-                'contents': lambda: os.path.exists(template_file) and open(template_file).read() or '',
-                'site_id': settings_mod.SITE_ID,
-                'site': site_obj,
-                'order': list(settings_mod.TEMPLATE_DIRS).index(dir),
-            })
-    root_path = re.sub(re.escape('doc/templates/%s/' % template) + '$', '', request.path)
-    return render_to_response('admin_doc/template_detail.html', {
-        'root_path': root_path,
-        'name': template,
-        'templates': templates,
-    }, context_instance=RequestContext(request))
-template_detail = staff_member_required(template_detail)
-
-####################
-# Helper functions #
-####################
-
-def missing_docutils_page(request):
-    """Display an error message for people without docutils"""
-    return render_to_response('admin_doc/missing_docutils.html')
-
-def load_all_installed_template_libraries():
-    # Load/register all template tag libraries from installed apps.
-    for e in templatetags.__path__:
-        libraries = [os.path.splitext(p)[0] for p in os.listdir(e) if p.endswith('.py') and p[0].isalpha()]
-        for library_name in libraries:
-            try:
-                lib = template.get_library("django.templatetags.%s" % library_name.split('.')[-1])
-            except template.InvalidTemplateLibrary:
-                pass
-
-def get_return_data_type(func_name):
-    """Return a somewhat-helpful data type given a function name"""
-    if func_name.startswith('get_'):
-        if func_name.endswith('_list'):
-            return 'List'
-        elif func_name.endswith('_count'):
-            return 'Integer'
-    return ''
-
-# Maps Field objects to their human-readable data types, as strings.
-# Column-type strings can contain format strings; they'll be interpolated
-# against the values of Field.__dict__ before being output.
-# If a column type is set to None, it won't be included in the output.
-DATA_TYPE_MAPPING = {
-    'AutoField'                 : _('Integer'),
-    'BooleanField'              : _('Boolean (Either True or False)'),
-    'CharField'                 : _('String (up to %(max_length)s)'),
-    'CommaSeparatedIntegerField': _('Comma-separated integers'),
-    'DateField'                 : _('Date (without time)'),
-    'DateTimeField'             : _('Date (with time)'),
-    'DecimalField'              : _('Decimal number'),
-    'EmailField'                : _('E-mail address'),
-    'FileField'                 : _('File path'),
-    'FilePathField'             : _('File path'),
-    'FloatField'                : _('Floating point number'),
-    'ForeignKey'                : _('Integer'),
-    'ImageField'                : _('File path'),
-    'IntegerField'              : _('Integer'),
-    'IPAddressField'            : _('IP address'),
-    'ManyToManyField'           : '',
-    'NullBooleanField'          : _('Boolean (Either True, False or None)'),
-    'OneToOneField'             : _('Relation to parent model'),
-    'PhoneNumberField'          : _('Phone number'),
-    'PositiveIntegerField'      : _('Integer'),
-    'PositiveSmallIntegerField' : _('Integer'),
-    'SlugField'                 : _('String (up to %(max_length)s)'),
-    'SmallIntegerField'         : _('Integer'),
-    'TextField'                 : _('Text'),
-    'TimeField'                 : _('Time'),
-    'URLField'                  : _('URL'),
-    'USStateField'              : _('U.S. state (two uppercase letters)'),
-    'XMLField'                  : _('XML text'),
-}
-
-def get_readable_field_data_type(field):
-    return DATA_TYPE_MAPPING[field.get_internal_type()] % field.__dict__
-
-def extract_views_from_urlpatterns(urlpatterns, base=''):
-    """
-    Return a list of views from a list of urlpatterns.
-
-    Each object in the returned list is a two-tuple: (view_func, regex)
-    """
-    views = []
-    for p in urlpatterns:
-        if hasattr(p, '_get_callback'):
-            try:
-                views.append((p._get_callback(), base + p.regex.pattern))
-            except ViewDoesNotExist:
-                continue
-        elif hasattr(p, '_get_url_patterns'):
-            try:
-                patterns = p.url_patterns
-            except ImportError:
-                continue
-            views.extend(extract_views_from_urlpatterns(patterns, base + p.regex.pattern))
-        else:
-            raise TypeError, _("%s does not appear to be a urlpattern object") % p
-    return views
-
-named_group_matcher = re.compile(r'\(\?P(<\w+>).+?\)')
-non_named_group_matcher = re.compile(r'\(.*?\)')
-
-def simplify_regex(pattern):
-    """
-    Clean up urlpattern regexes into something somewhat readable by Mere Humans:
-    turns something like "^(?P<sport_slug>\w+)/athletes/(?P<athlete_slug>\w+)/$"
-    into "<sport_slug>/athletes/<athlete_slug>/"
-    """
-    # handle named groups first
-    pattern = named_group_matcher.sub(lambda m: m.group(1), pattern)
-
-    # handle non-named groups
-    pattern = non_named_group_matcher.sub("<var>", pattern)
-
-    # clean up any outstanding regex-y characters.
-    pattern = pattern.replace('^', '').replace('$', '').replace('?', '').replace('//', '/').replace('\\', '')
-    if not pattern.startswith('/'):
-        pattern = '/' + pattern
-    return pattern
diff --git a/webapp/django/contrib/auth/__init__.py b/webapp/django/contrib/auth/__init__.py
deleted file mode 100644
index 87c2bc1..0000000
--- a/webapp/django/contrib/auth/__init__.py
+++ /dev/null
@@ -1,89 +0,0 @@
-import datetime
-from django.core.exceptions import ImproperlyConfigured
-
-SESSION_KEY = '_auth_user_id'
-BACKEND_SESSION_KEY = '_auth_user_backend'
-REDIRECT_FIELD_NAME = 'next'
-
-def load_backend(path):
-    i = path.rfind('.')
-    module, attr = path[:i], path[i+1:]
-    try:
-        mod = __import__(module, {}, {}, [attr])
-    except ImportError, e:
-        raise ImproperlyConfigured, 'Error importing authentication backend %s: "%s"' % (module, e)
-    except ValueError, e:
-        raise ImproperlyConfigured, 'Error importing authentication backends. Is AUTHENTICATION_BACKENDS a correctly defined list or tuple?'
-    try:
-        cls = getattr(mod, attr)
-    except AttributeError:
-        raise ImproperlyConfigured, 'Module "%s" does not define a "%s" authentication backend' % (module, attr)
-    return cls()
-
-def get_backends():
-    from django.conf import settings
-    backends = []
-    for backend_path in settings.AUTHENTICATION_BACKENDS:
-        backends.append(load_backend(backend_path))
-    return backends
-
-def authenticate(**credentials):
-    """
-    If the given credentials are valid, return a User object.
-    """
-    for backend in get_backends():
-        try:
-            user = backend.authenticate(**credentials)
-        except TypeError:
-            # This backend doesn't accept these credentials as arguments. Try the next one.
-            continue
-        if user is None:
-            continue
-        # Annotate the user object with the path of the backend.
-        user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
-        return user
-
-def login(request, user):
-    """
-    Persist a user id and a backend in the request. This way a user doesn't
-    have to reauthenticate on every request.
-    """
-    if user is None:
-        user = request.user
-    # TODO: It would be nice to support different login methods, like signed cookies.
-    user.last_login = datetime.datetime.now()
-    user.save()
-
-    if SESSION_KEY in request.session:
-        if request.session[SESSION_KEY] != user.id:
-            # To avoid reusing another user's session, create a new, empty
-            # session if the existing session corresponds to a different
-            # authenticated user.
-            request.session.flush()
-    else:
-        request.session.cycle_key()
-    request.session[SESSION_KEY] = user.id
-    request.session[BACKEND_SESSION_KEY] = user.backend
-    if hasattr(request, 'user'):
-        request.user = user
-
-def logout(request):
-    """
-    Removes the authenticated user's ID from the request and flushes their
-    session data.
-    """
-    request.session.flush()
-    if hasattr(request, 'user'):
-        from django.contrib.auth.models import AnonymousUser
-        request.user = AnonymousUser()
-
-def get_user(request):
-    from django.contrib.auth.models import AnonymousUser
-    try:
-        user_id = request.session[SESSION_KEY]
-        backend_path = request.session[BACKEND_SESSION_KEY]
-        backend = load_backend(backend_path)
-        user = backend.get_user(user_id) or AnonymousUser()
-    except KeyError:
-        user = AnonymousUser()
-    return user
diff --git a/webapp/django/contrib/auth/admin.py b/webapp/django/contrib/auth/admin.py
deleted file mode 100644
index 873d29f..0000000
--- a/webapp/django/contrib/auth/admin.py
+++ /dev/null
@@ -1,111 +0,0 @@
-
-from django.contrib.auth.models import User, Group
-from django.core.exceptions import PermissionDenied
-from django import template
-from django.shortcuts import render_to_response, get_object_or_404
-from django.template import RequestContext
-from django.utils.html import escape
-from django.http import HttpResponseRedirect
-from django.utils.translation import ugettext, ugettext_lazy as _
-from django.contrib.auth.forms import UserCreationForm, AdminPasswordChangeForm
-from django.contrib import admin
-
-class GroupAdmin(admin.ModelAdmin):
-    search_fields = ('name',)
-    ordering = ('name',)
-    filter_horizontal = ('permissions',)
-
-class UserAdmin(admin.ModelAdmin):
-    fieldsets = (
-        (None, {'fields': ('username', 'password')}),
-        (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
-        (_('Permissions'), {'fields': ('is_staff', 'is_active', 'is_superuser', 'user_permissions')}),
-        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
-        (_('Groups'), {'fields': ('groups',)}),
-    )
-    add_form = UserCreationForm
-    change_password_form = AdminPasswordChangeForm
-    list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
-    list_filter = ('is_staff', 'is_superuser')
-    search_fields = ('username', 'first_name', 'last_name', 'email')
-    ordering = ('username',)
-    filter_horizontal = ('user_permissions',)
-
-    def __call__(self, request, url):
-        # this should not be here, but must be due to the way __call__ routes
-        # in ModelAdmin.
-        if url is None:
-            return self.changelist_view(request)
-        if url.endswith('password'):
-            return self.user_change_password(request, url.split('/')[0])
-        return super(UserAdmin, self).__call__(request, url)
-
-    def add_view(self, request):
-        if not self.has_change_permission(request):
-            raise PermissionDenied
-        if request.method == 'POST':
-            form = self.add_form(request.POST)
-            if form.is_valid():
-                new_user = form.save()
-                msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': 'user', 'obj': new_user}
-                self.log_addition(request, new_user)
-                if "_addanother" in request.POST:
-                    request.user.message_set.create(message=msg)
-                    return HttpResponseRedirect(request.path)
-                else:
-                    request.user.message_set.create(message=msg + ' ' + ugettext("You may edit it again below."))
-                    return HttpResponseRedirect('../%s/' % new_user.id)
-        else:
-            form = self.add_form()
-        return render_to_response('admin/auth/user/add_form.html', {
-            'title': _('Add user'),
-            'form': form,
-            'is_popup': '_popup' in request.REQUEST,
-            'add': True,
-            'change': False,
-            'has_add_permission': True,
-            'has_delete_permission': False,
-            'has_change_permission': True,
-            'has_file_field': False,
-            'has_absolute_url': False,
-            'auto_populated_fields': (),
-            'opts': self.model._meta,
-            'save_as': False,
-            'username_help_text': self.model._meta.get_field('username').help_text,
-            'root_path': self.admin_site.root_path,
-            'app_label': self.model._meta.app_label,            
-        }, context_instance=template.RequestContext(request))
-
-    def user_change_password(self, request, id):
-        if not request.user.has_perm('auth.change_user'):
-            raise PermissionDenied
-        user = get_object_or_404(self.model, pk=id)
-        if request.method == 'POST':
-            form = self.change_password_form(user, request.POST)
-            if form.is_valid():
-                new_user = form.save()
-                msg = ugettext('Password changed successfully.')
-                request.user.message_set.create(message=msg)
-                return HttpResponseRedirect('..')
-        else:
-            form = self.change_password_form(user)
-        return render_to_response('admin/auth/user/change_password.html', {
-            'title': _('Change password: %s') % escape(user.username),
-            'form': form,
-            'is_popup': '_popup' in request.REQUEST,
-            'add': True,
-            'change': False,
-            'has_delete_permission': False,
-            'has_change_permission': True,
-            'has_absolute_url': False,
-            'opts': self.model._meta,
-            'original': user,
-            'save_as': False,
-            'show_save': True,
-            'root_path': self.admin_site.root_path,
-        }, context_instance=RequestContext(request))
-
-
-admin.site.register(Group, GroupAdmin)
-admin.site.register(User, UserAdmin)
-
diff --git a/webapp/django/contrib/auth/backends.py b/webapp/django/contrib/auth/backends.py
deleted file mode 100644
index bba883b..0000000
--- a/webapp/django/contrib/auth/backends.py
+++ /dev/null
@@ -1,80 +0,0 @@
-try:
-    set
-except NameError:
-    from sets import Set as set # Python 2.3 fallback
-
-from django.db import connection
-from django.contrib.auth.models import User
-
-
-class ModelBackend(object):
-    """
-    Authenticates against django.contrib.auth.models.User.
-    """
-    # TODO: Model, login attribute name and password attribute name should be
-    # configurable.
-    def authenticate(self, username=None, password=None):
-        try:
-            user = User.objects.get(username=username)
-            if user.check_password(password):
-                return user
-        except User.DoesNotExist:
-            return None
-
-    def get_group_permissions(self, user_obj):
-        """
-        Returns a set of permission strings that this user has through his/her
-        groups.
-        """
-        if not hasattr(user_obj, '_group_perm_cache'):
-            cursor = connection.cursor()
-            # The SQL below works out to the following, after DB quoting:
-            # cursor.execute("""
-            #     SELECT ct."app_label", p."codename"
-            #     FROM "auth_permission" p, "auth_group_permissions" gp, "auth_user_groups" ug, "django_content_type" ct
-            #     WHERE p."id" = gp."permission_id"
-            #         AND gp."group_id" = ug."group_id"
-            #         AND ct."id" = p."content_type_id"
-            #         AND ug."user_id" = %s, [self.id])
-            qn = connection.ops.quote_name
-            sql = """
-                SELECT ct.%s, p.%s
-                FROM %s p, %s gp, %s ug, %s ct
-                WHERE p.%s = gp.%s
-                    AND gp.%s = ug.%s
-                    AND ct.%s = p.%s
-                    AND ug.%s = %%s""" % (
-                qn('app_label'), qn('codename'),
-                qn('auth_permission'), qn('auth_group_permissions'),
-                qn('auth_user_groups'), qn('django_content_type'),
-                qn('id'), qn('permission_id'),
-                qn('group_id'), qn('group_id'),
-                qn('id'), qn('content_type_id'),
-                qn('user_id'),)
-            cursor.execute(sql, [user_obj.id])
-            user_obj._group_perm_cache = set(["%s.%s" % (row[0], row[1]) for row in cursor.fetchall()])
-        return user_obj._group_perm_cache
-
-    def get_all_permissions(self, user_obj):
-        if not hasattr(user_obj, '_perm_cache'):
-            user_obj._perm_cache = set([u"%s.%s" % (p.content_type.app_label, p.codename) for p in user_obj.user_permissions.select_related()])
-            user_obj._perm_cache.update(self.get_group_permissions(user_obj))
-        return user_obj._perm_cache
-
-    def has_perm(self, user_obj, perm):
-        return perm in self.get_all_permissions(user_obj)
-
-    def has_module_perms(self, user_obj, app_label):
-        """
-        Returns True if user_obj has any permissions in the given app_label.
-        """
-        for perm in self.get_all_permissions(user_obj):
-            if perm[:perm.index('.')] == app_label:
-                return True
-        return False
-
-    def get_user(self, user_id):
-        try:
-            return User.objects.get(pk=user_id)
-        except User.DoesNotExist:
-            return None
diff --git a/webapp/django/contrib/auth/create_superuser.py b/webapp/django/contrib/auth/create_superuser.py
deleted file mode 100644
index 7b58678..0000000
--- a/webapp/django/contrib/auth/create_superuser.py
+++ /dev/null
@@ -1,8 +0,0 @@
-"""
-Create a superuser from the command line. Deprecated; use manage.py
-createsuperuser instead.
-"""
-
-if __name__ == "__main__":
-    from django.core.management import call_command
-    call_command("createsuperuser")
diff --git a/webapp/django/contrib/auth/decorators.py b/webapp/django/contrib/auth/decorators.py
deleted file mode 100644
index 1371c62..0000000
--- a/webapp/django/contrib/auth/decorators.py
+++ /dev/null
@@ -1,70 +0,0 @@
-try:
-    from functools import update_wrapper
-except ImportError:
-    from django.utils.functional import update_wrapper  # Python 2.3, 2.4 fallback.
-
-from django.contrib.auth import REDIRECT_FIELD_NAME
-from django.http import HttpResponseRedirect
-from django.utils.http import urlquote
-
-def user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):
-    """
-    Decorator for views that checks that the user passes the given test,
-    redirecting to the log-in page if necessary. The test should be a callable
-    that takes the user object and returns True if the user passes.
-    """
-    def decorate(view_func):
-        return _CheckLogin(view_func, test_func, login_url, redirect_field_name)
-    return decorate
-
-def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME):
-    """
-    Decorator for views that checks that the user is logged in, redirecting
-    to the log-in page if necessary.
-    """
-    actual_decorator = user_passes_test(
-        lambda u: u.is_authenticated(),
-        redirect_field_name=redirect_field_name
-    )
-    if function:
-        return actual_decorator(function)
-    return actual_decorator
-
-def permission_required(perm, login_url=None):
-    """
-    Decorator for views that checks whether a user has a particular permission
-    enabled, redirecting to the log-in page if necessary.
-    """
-    return user_passes_test(lambda u: u.has_perm(perm), login_url=login_url)
-
-class _CheckLogin(object):
-    """
-    Class that checks that the user passes the given test, redirecting to
-    the log-in page if necessary. If the test is passed, the view function
-    is invoked. The test should be a callable that takes the user object
-    and returns True if the user passes.
-
-    We use a class here so that we can define __get__. This way, when a
-    _CheckLogin object is used as a method decorator, the view function
-    is properly bound to its instance.
-    """
-    def __init__(self, view_func, test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):
-        if not login_url:
-            from django.conf import settings
-            login_url = settings.LOGIN_URL
-        self.view_func = view_func
-        self.test_func = test_func
-        self.login_url = login_url
-        self.redirect_field_name = redirect_field_name
-        update_wrapper(self, view_func)
-        
-    def __get__(self, obj, cls=None):
-        view_func = self.view_func.__get__(obj, cls)
-        return _CheckLogin(view_func, self.test_func, self.login_url, self.redirect_field_name)
-    
-    def __call__(self, request, *args, **kwargs):
-        if self.test_func(request.user):
-            return self.view_func(request, *args, **kwargs)
-        path = urlquote(request.get_full_path())
-        tup = self.login_url, self.redirect_field_name, path
-        return HttpResponseRedirect('%s?%s=%s' % tup)
diff --git a/webapp/django/contrib/auth/fixtures/authtestdata.json b/webapp/django/contrib/auth/fixtures/authtestdata.json
deleted file mode 100644
index e0bdc24..0000000
--- a/webapp/django/contrib/auth/fixtures/authtestdata.json
+++ /dev/null
@@ -1,56 +0,0 @@
-[
-    {
-        "pk": "1", 
-        "model": "auth.user", 
-        "fields": {
-            "username": "testclient", 
-            "first_name": "Test", 
-            "last_name": "Client", 
-            "is_active": true, 
-            "is_superuser": false, 
-            "is_staff": false, 
-            "last_login": "2006-12-17 07:03:31", 
-            "groups": [], 
-            "user_permissions": [], 
-            "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161", 
-            "email": "testclient@example.com", 
-            "date_joined": "2006-12-17 07:03:31"
-        }
-    },
-    {
-        "pk": "2", 
-        "model": "auth.user", 
-        "fields": {
-            "username": "inactive", 
-            "first_name": "Inactive", 
-            "last_name": "User", 
-            "is_active": false, 
-            "is_superuser": false, 
-            "is_staff": false, 
-            "last_login": "2006-12-17 07:03:31", 
-            "groups": [], 
-            "user_permissions": [], 
-            "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161", 
-            "email": "testclient@example.com", 
-            "date_joined": "2006-12-17 07:03:31"
-        }
-    },
-    {
-        "pk": "3", 
-        "model": "auth.user", 
-        "fields": {
-            "username": "staff", 
-            "first_name": "Staff", 
-            "last_name": "Member", 
-            "is_active": true, 
-            "is_superuser": false, 
-            "is_staff": true, 
-            "last_login": "2006-12-17 07:03:31", 
-            "groups": [], 
-            "user_permissions": [], 
-            "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161", 
-            "email": "staffmember@example.com", 
-            "date_joined": "2006-12-17 07:03:31"
-        }
-    }
-]
diff --git a/webapp/django/contrib/auth/forms.py b/webapp/django/contrib/auth/forms.py
deleted file mode 100644
index 1364786..0000000
--- a/webapp/django/contrib/auth/forms.py
+++ /dev/null
@@ -1,198 +0,0 @@
-from django.contrib.auth.models import User
-from django.contrib.auth import authenticate
-from django.contrib.auth.tokens import default_token_generator
-from django.contrib.sites.models import Site
-from django.template import Context, loader
-from django import forms
-from django.utils.translation import ugettext_lazy as _
-from django.utils.http import int_to_base36
-
-class UserCreationForm(forms.ModelForm):
-    """
-    A form that creates a user, with no privileges, from the given username and password.
-    """
-    username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$',
-        help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."),
-        error_message = _("This value must contain only letters, numbers and underscores."))
-    password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
-    password2 = forms.CharField(label=_("Password confirmation"), widget=forms.PasswordInput)
-
-    class Meta:
-        model = User
-        fields = ("username",)
-
-    def clean_username(self):
-        username = self.cleaned_data["username"]
-        try:
-            User.objects.get(username=username)
-        except User.DoesNotExist:
-            return username
-        raise forms.ValidationError(_("A user with that username already exists."))
-
-    def clean_password2(self):
-        password1 = self.cleaned_data["password1"]
-        password2 = self.cleaned_data["password2"]
-        if password1 != password2:
-            raise forms.ValidationError(_("The two password fields didn't match."))
-        return password2
-
-    def save(self, commit=True):
-        user = super(UserCreationForm, self).save(commit=False)
-        user.set_password(self.cleaned_data["password1"])
-        if commit:
-            user.save()
-        return user
-
-class AuthenticationForm(forms.Form):
-    """
-    Base class for authenticating users. Extend this to get a form that accepts
-    username/password logins.
-    """
-    username = forms.CharField(label=_("Username"), max_length=30)
-    password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
-
-    def __init__(self, request=None, *args, **kwargs):
-        """
-        If request is passed in, the form will validate that cookies are
-        enabled. Note that the request (a HttpRequest object) must have set a
-        cookie with the key TEST_COOKIE_NAME and value TEST_COOKIE_VALUE before
-        running this validation.
-        """
-        self.request = request
-        self.user_cache = None
-        super(AuthenticationForm, self).__init__(*args, **kwargs)
-
-    def clean(self):
-        username = self.cleaned_data.get('username')
-        password = self.cleaned_data.get('password')
-
-        if username and password:
-            self.user_cache = authenticate(username=username, password=password)
-            if self.user_cache is None:
-                raise forms.ValidationError(_("Please enter a correct username and password. Note that both fields are case-sensitive."))
-            elif not self.user_cache.is_active:
-                raise forms.ValidationError(_("This account is inactive."))
-
-        # TODO: determine whether this should move to its own method.
-        if self.request:
-            if not self.request.session.test_cookie_worked():
-                raise forms.ValidationError(_("Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."))
-
-        return self.cleaned_data
-
-    def get_user_id(self):
-        if self.user_cache:
-            return self.user_cache.id
-        return None
-
-    def get_user(self):
-        return self.user_cache
-
-class PasswordResetForm(forms.Form):
-    email = forms.EmailField(label=_("E-mail"), max_length=75)
-
-    def clean_email(self):
-        """
-        Validates that a user exists with the given e-mail address.
-        """
-        email = self.cleaned_data["email"]
-        self.users_cache = User.objects.filter(email__iexact=email)
-        if len(self.users_cache) == 0:
-            raise forms.ValidationError(_("That e-mail address doesn't have an associated user account. Are you sure you've registered?"))
-
-    def save(self, domain_override=None, email_template_name='registration/password_reset_email.html',
-             use_https=False, token_generator=default_token_generator):
-        """
-        Generates a one-use only link for resetting password and sends to the user
-        """
-        from django.core.mail import send_mail
-        for user in self.users_cache:
-            if not domain_override:
-                current_site = Site.objects.get_current()
-                site_name = current_site.name
-                domain = current_site.domain
-            else:
-                site_name = domain = domain_override
-            t = loader.get_template(email_template_name)
-            c = {
-                'email': user.email,
-                'domain': domain,
-                'site_name': site_name,
-                'uid': int_to_base36(user.id),
-                'user': user,
-                'token': token_generator.make_token(user),
-                'protocol': use_https and 'https' or 'http',
-            }
-            send_mail(_("Password reset on %s") % site_name,
-                t.render(Context(c)), None, [user.email])
-
-class SetPasswordForm(forms.Form):
-    """
-    A form that lets a user change set his/her password without
-    entering the old password
-    """
-    new_password1 = forms.CharField(label=_("New password"), widget=forms.PasswordInput)
-    new_password2 = forms.CharField(label=_("New password confirmation"), widget=forms.PasswordInput)
-
-    def __init__(self, user, *args, **kwargs):
-        self.user = user
-        super(SetPasswordForm, self).__init__(*args, **kwargs)
-
-    def clean_new_password2(self):
-        password1 = self.cleaned_data.get('new_password1')
-        password2 = self.cleaned_data.get('new_password2')
-        if password1 and password2:
-            if password1 != password2:
-                raise forms.ValidationError(_("The two password fields didn't match."))
-        return password2
-
-    def save(self, commit=True):
-        self.user.set_password(self.cleaned_data['new_password1'])
-        if commit:
-            self.user.save()
-        return self.user
-
-class PasswordChangeForm(SetPasswordForm):
-    """
-    A form that lets a user change his/her password by entering
-    their old password.
-    """
-    old_password = forms.CharField(label=_("Old password"), widget=forms.PasswordInput)
-
-    def clean_old_password(self):
-        """
-        Validates that the old_password field is correct.
-        """
-        old_password = self.cleaned_data["old_password"]
-        if not self.user.check_password(old_password):
-            raise forms.ValidationError(_("Your old password was entered incorrectly. Please enter it again."))
-        return old_password
-PasswordChangeForm.base_fields.keyOrder = ['old_password', 'new_password1', 'new_password2']
-
-class AdminPasswordChangeForm(forms.Form):
-    """
-    A form used to change the password of a user in the admin interface.
-    """
-    password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
-    password2 = forms.CharField(label=_("Password (again)"), widget=forms.PasswordInput)
-
-    def __init__(self, user, *args, **kwargs):
-        self.user = user
-        super(AdminPasswordChangeForm, self).__init__(*args, **kwargs)
-
-    def clean_password2(self):
-        password1 = self.cleaned_data.get('password1')
-        password2 = self.cleaned_data.get('password2')
-        if password1 and password2:
-            if password1 != password2:
-                raise forms.ValidationError(_("The two password fields didn't match."))
-        return password2
-
-    def save(self, commit=True):
-        """
-        Saves the new password.
-        """
-        self.user.set_password(self.cleaned_data["password1"])
-        if commit:
-            self.user.save()
-        return self.user
diff --git a/webapp/django/contrib/auth/handlers/__init__.py b/webapp/django/contrib/auth/handlers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/auth/handlers/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/auth/handlers/modpython.py b/webapp/django/contrib/auth/handlers/modpython.py
deleted file mode 100644
index de961fa..0000000
--- a/webapp/django/contrib/auth/handlers/modpython.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from mod_python import apache
-import os
-
-def authenhandler(req, **kwargs):
-    """
-    Authentication handler that checks against Django's auth database.
-    """
-
-    # mod_python fakes the environ, and thus doesn't process SetEnv.  This fixes
-    # that so that the following import works
-    os.environ.update(req.subprocess_env)
-
-    # apache 2.2 requires a call to req.get_basic_auth_pw() before 
-    # req.user and friends are available.
-    req.get_basic_auth_pw()
-
-    # check for PythonOptions
-    _str_to_bool = lambda s: s.lower() in ('1', 'true', 'on', 'yes')
-
-    options = req.get_options()
-    permission_name = options.get('DjangoPermissionName', None)
-    staff_only = _str_to_bool(options.get('DjangoRequireStaffStatus', "on"))
-    superuser_only = _str_to_bool(options.get('DjangoRequireSuperuserStatus', "off"))
-    settings_module = options.get('DJANGO_SETTINGS_MODULE', None)
-    if settings_module:
-        os.environ['DJANGO_SETTINGS_MODULE'] = settings_module
-
-    from django.contrib.auth.models import User
-    from django import db
-    db.reset_queries()
-
-    # check that the username is valid
-    kwargs = {'username': req.user, 'is_active': True}
-    if staff_only:
-        kwargs['is_staff'] = True
-    if superuser_only:
-        kwargs['is_superuser'] = True
-    try:
-        try:
-            user = User.objects.get(**kwargs)
-        except User.DoesNotExist:
-            return apache.HTTP_UNAUTHORIZED
-    
-        # check the password and any permission given
-        if user.check_password(req.get_basic_auth_pw()):
-            if permission_name:
-                if user.has_perm(permission_name):
-                    return apache.OK
-                else:
-                    return apache.HTTP_UNAUTHORIZED
-            else:
-                return apache.OK
-        else:
-            return apache.HTTP_UNAUTHORIZED
-    finally:
-        db.connection.close()
diff --git a/webapp/django/contrib/auth/management/__init__.py b/webapp/django/contrib/auth/management/__init__.py
deleted file mode 100644
index 01fa524..0000000
--- a/webapp/django/contrib/auth/management/__init__.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""
-Creates permissions for all installed apps that need permissions.
-"""
-
-from django.db.models import get_models, signals
-from django.contrib.auth import models as auth_app
-
-def _get_permission_codename(action, opts):
-    return u'%s_%s' % (action, opts.object_name.lower())
-
-def _get_all_permissions(opts):
-    "Returns (codename, name) for all permissions in the given opts."
-    perms = []
-    for action in ('add', 'change', 'delete'):
-        perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw)))
-    return perms + list(opts.permissions)
-
-def create_permissions(app, created_models, verbosity, **kwargs):
-    from django.contrib.contenttypes.models import ContentType
-    from django.contrib.auth.models import Permission
-    app_models = get_models(app)
-    if not app_models:
-        return
-    for klass in app_models:
-        ctype = ContentType.objects.get_for_model(klass)
-        for codename, name in _get_all_permissions(klass._meta):
-            p, created = Permission.objects.get_or_create(codename=codename, content_type__pk=ctype.id,
-                defaults={'name': name, 'content_type': ctype})
-            if created and verbosity >= 2:
-                print "Adding permission '%s'" % p
-
-def create_superuser(app, created_models, verbosity, **kwargs):
-    from django.contrib.auth.models import User
-    from django.core.management import call_command
-    if User in created_models and kwargs.get('interactive', True):
-        msg = "\nYou just installed Django's auth system, which means you don't have " \
-                "any superusers defined.\nWould you like to create one now? (yes/no): "
-        confirm = raw_input(msg)
-        while 1:
-            if confirm not in ('yes', 'no'):
-                confirm = raw_input('Please enter either "yes" or "no": ')
-                continue
-            if confirm == 'yes':
-                call_command("createsuperuser", interactive=True)
-            break
-
-signals.post_syncdb.connect(create_permissions,
-    dispatch_uid = "django.contrib.auth.management.create_permissions")
-signals.post_syncdb.connect(create_superuser,
-    sender=auth_app, dispatch_uid = "django.contrib.auth.management.create_superuser")
diff --git a/webapp/django/contrib/auth/management/commands/__init__.py b/webapp/django/contrib/auth/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/auth/management/commands/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/auth/management/commands/createsuperuser.py b/webapp/django/contrib/auth/management/commands/createsuperuser.py
deleted file mode 100644
index 91e39f7..0000000
--- a/webapp/django/contrib/auth/management/commands/createsuperuser.py
+++ /dev/null
@@ -1,123 +0,0 @@
-"""
-Management utility to create superusers.
-"""
-
-import getpass
-import os
-import re
-import sys
-from optparse import make_option
-from django.contrib.auth.models import User
-from django.core import validators
-from django.core.management.base import BaseCommand, CommandError
-
-RE_VALID_USERNAME = re.compile('\w+$')
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--username', dest='username', default=None,
-            help='Specifies the username for the superuser.'),
-        make_option('--email', dest='email', default=None,
-            help='Specifies the email address for the superuser.'),
-        make_option('--noinput', action='store_false', dest='interactive', default=True,
-            help='Tells Django to NOT prompt the user for input of any kind. '    \
-                 'You must use --username and --email with --noinput, and '      \
-                 'superusers created with --noinput will not be able to log in '  \
-                 'until they\'re given a valid password.'),
-    )
-    help = 'Used to create a superuser.'
-
-    def handle(self, *args, **options):
-        username = options.get('username', None)
-        email = options.get('email', None)
-        interactive = options.get('interactive')
-        
-        # Do quick and dirty validation if --noinput
-        if not interactive:
-            if not username or not email:
-                raise CommandError("You must use --username and --email with --noinput.")
-            if not RE_VALID_USERNAME.match(username):
-                raise CommandError("Invalid username. Use only letters, digits, and underscores")
-            try:
-                validators.isValidEmail(email, None)
-            except validators.ValidationError:
-                raise CommandError("Invalid email address.")
-
-        password = ''
-
-        # Try to determine the current system user's username to use as a default.
-        try:
-            import pwd
-        except ImportError:
-            default_username = ''
-        else:
-            default_username = pwd.getpwuid(os.getuid())[0].replace(' ', '').lower()
-
-        # Determine whether the default username is taken, so we don't display
-        # it as an option.
-        if default_username:
-            try:
-                User.objects.get(username=default_username)
-            except User.DoesNotExist:
-                pass
-            else:
-                default_username = ''
-
-        # Prompt for username/email/password. Enclose this whole thing in a
-        # try/except to trap for a keyboard interrupt and exit gracefully.
-        if interactive:
-            try:
-            
-                # Get a username
-                while 1:
-                    if not username:
-                        input_msg = 'Username'
-                        if default_username:
-                            input_msg += ' (Leave blank to use %r)' % default_username
-                        username = raw_input(input_msg + ': ')
-                    if default_username and username == '':
-                        username = default_username
-                    if not RE_VALID_USERNAME.match(username):
-                        sys.stderr.write("Error: That username is invalid. Use only letters, digits and underscores.\n")
-                        username = None
-                        continue
-                    try:
-                        User.objects.get(username=username)
-                    except User.DoesNotExist:
-                        break
-                    else:
-                        sys.stderr.write("Error: That username is already taken.\n")
-                        username = None
-            
-                # Get an email
-                while 1:
-                    if not email:
-                        email = raw_input('E-mail address: ')
-                    try:
-                        validators.isValidEmail(email, None)
-                    except validators.ValidationError:
-                        sys.stderr.write("Error: That e-mail address is invalid.\n")
-                        email = None
-                    else:
-                        break
-            
-                # Get a password
-                while 1:
-                    if not password:
-                        password = getpass.getpass()
-                        password2 = getpass.getpass('Password (again): ')
-                        if password != password2:
-                            sys.stderr.write("Error: Your passwords didn't match.\n")
-                            password = None
-                            continue
-                    if password.strip() == '':
-                        sys.stderr.write("Error: Blank passwords aren't allowed.\n")
-                        password = None
-                        continue
-                    break
-            except KeyboardInterrupt:
-                sys.stderr.write("\nOperation cancelled.\n")
-                sys.exit(1)
-        
-        User.objects.create_superuser(username, email, password)
-        print "Superuser created successfully."
diff --git a/webapp/django/contrib/auth/middleware.py b/webapp/django/contrib/auth/middleware.py
deleted file mode 100644
index 42dc15a..0000000
--- a/webapp/django/contrib/auth/middleware.py
+++ /dev/null
@@ -1,12 +0,0 @@
-class LazyUser(object):
-    def __get__(self, request, obj_type=None):
-        if not hasattr(request, '_cached_user'):
-            from django.contrib.auth import get_user
-            request._cached_user = get_user(request)
-        return request._cached_user
-
-class AuthenticationMiddleware(object):
-    def process_request(self, request):
-        assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
-        request.__class__.user = LazyUser()
-        return None
diff --git a/webapp/django/contrib/auth/models.py b/webapp/django/contrib/auth/models.py
deleted file mode 100644
index 1f0a038..0000000
--- a/webapp/django/contrib/auth/models.py
+++ /dev/null
@@ -1,377 +0,0 @@
-from django.contrib import auth
-from django.core import validators
-from django.core.exceptions import ImproperlyConfigured
-from django.db import models
-from django.db.models.manager import EmptyManager
-from django.contrib.contenttypes.models import ContentType
-from django.utils.encoding import smart_str
-from django.utils.translation import ugettext_lazy as _
-import datetime
-import urllib
-
-UNUSABLE_PASSWORD = '!' # This will never be a valid hash
-
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-def get_hexdigest(algorithm, salt, raw_password):
-    """
-    Returns a string of the hexdigest of the given plaintext password and salt
-    using the given algorithm ('md5', 'sha1' or 'crypt').
-    """
-    raw_password, salt = smart_str(raw_password), smart_str(salt)
-    if algorithm == 'crypt':
-        try:
-            import crypt
-        except ImportError:
-            raise ValueError('"crypt" password algorithm not supported in this environment')
-        return crypt.crypt(raw_password, salt)
-    # The rest of the supported algorithms are supported by hashlib, but
-    # hashlib is only available in Python 2.5.
-    try:
-        import hashlib
-    except ImportError:
-        if algorithm == 'md5':
-            import md5
-            return md5.new(salt + raw_password).hexdigest()
-        elif algorithm == 'sha1':
-            import sha
-            return sha.new(salt + raw_password).hexdigest()
-    else:
-        if algorithm == 'md5':
-            return hashlib.md5(salt + raw_password).hexdigest()
-        elif algorithm == 'sha1':
-            return hashlib.sha1(salt + raw_password).hexdigest()
-    raise ValueError("Got unknown password algorithm type in password.")
-
-def check_password(raw_password, enc_password):
-    """
-    Returns a boolean of whether the raw_password was correct. Handles
-    encryption formats behind the scenes.
-    """
-    algo, salt, hsh = enc_password.split('$')
-    return hsh == get_hexdigest(algo, salt, raw_password)
-
-class SiteProfileNotAvailable(Exception):
-    pass
-
-class Permission(models.Model):
-    """The permissions system provides a way to assign permissions to specific users and groups of users.
-
-    The permission system is used by the Django admin site, but may also be useful in your own code. The Django admin site uses permissions as follows:
-
-        - The "add" permission limits the user's ability to view the "add" form and add an object.
-        - The "change" permission limits a user's ability to view the change list, view the "change" form and change an object.
-        - The "delete" permission limits the ability to delete an object.
-
-    Permissions are set globally per type of object, not per specific object instance. It is possible to say "Mary may change news stories," but it's not currently possible to say "Mary may change news stories, but only the ones she created herself" or "Mary may only change news stories that have a certain status or publication date."
-
-    Three basic permissions -- add, change and delete -- are automatically created for each Django model.
-    """
-    name = models.CharField(_('name'), max_length=50)
-    content_type = models.ForeignKey(ContentType)
-    codename = models.CharField(_('codename'), max_length=100)
-
-    class Meta:
-        verbose_name = _('permission')
-        verbose_name_plural = _('permissions')
-        unique_together = (('content_type', 'codename'),)
-        ordering = ('content_type__app_label', 'codename')
-
-    def __unicode__(self):
-        return u"%s | %s | %s" % (
-            unicode(self.content_type.app_label),
-            unicode(self.content_type),
-            unicode(self.name))
-
-class Group(models.Model):
-    """Groups are a generic way of categorizing users to apply permissions, or some other label, to those users. A user can belong to any number of groups.
-
-    A user in a group automatically has all the permissions granted to that group. For example, if the group Site editors has the permission can_edit_home_page, any user in that group will have that permission.
-
-    Beyond permissions, groups are a convenient way to categorize users to apply some label, or extended functionality, to them. For example, you could create a group 'Special users', and you could write code that would do special things to those users -- such as giving them access to a members-only portion of your site, or sending them members-only e-mail messages.
-    """
-    name = models.CharField(_('name'), max_length=80, unique=True)
-    permissions = models.ManyToManyField(Permission, verbose_name=_('permissions'), blank=True)
-
-    class Meta:
-        verbose_name = _('group')
-        verbose_name_plural = _('groups')
-
-    def __unicode__(self):
-        return self.name
-
-class UserManager(models.Manager):
-    def create_user(self, username, email, password=None):
-        "Creates and saves a User with the given username, e-mail and password."
-        now = datetime.datetime.now()
-        user = self.model(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)
-        if password:
-            user.set_password(password)
-        else:
-            user.set_unusable_password()
-        user.save()
-        return user
-
-    def create_superuser(self, username, email, password):
-        u = self.create_user(username, email, password)
-        u.is_staff = True
-        u.is_active = True
-        u.is_superuser = True
-        u.save()
-
-    def make_random_password(self, length=10, allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'):
-        "Generates a random password with the given length and given allowed_chars"
-        # Note that default value of allowed_chars does not have "I" or letters
-        # that look like it -- just to avoid confusion.
-        from random import choice
-        return ''.join([choice(allowed_chars) for i in range(length)])
-
-class User(models.Model):
-    """Users within the Django authentication system are represented by this model.
-
-    Username and password are required. Other fields are optional.
-    """
-    username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."))
-    first_name = models.CharField(_('first name'), max_length=30, blank=True)
-    last_name = models.CharField(_('last name'), max_length=30, blank=True)
-    email = models.EmailField(_('e-mail address'), blank=True)
-    password = models.CharField(_('password'), max_length=128, help_text=_("Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."))
-    is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site."))
-    is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user should be treated as active. Unselect this instead of deleting accounts."))
-    is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them."))
-    last_login = models.DateTimeField(_('last login'), default=datetime.datetime.now)
-    date_joined = models.DateTimeField(_('date joined'), default=datetime.datetime.now)
-    groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True,
-        help_text=_("In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."))
-    user_permissions = models.ManyToManyField(Permission, verbose_name=_('user permissions'), blank=True)
-    objects = UserManager()
-
-    class Meta:
-        verbose_name = _('user')
-        verbose_name_plural = _('users')
-
-    def __unicode__(self):
-        return self.username
-
-    def get_absolute_url(self):
-        return "/users/%s/" % urllib.quote(smart_str(self.username))
-
-    def is_anonymous(self):
-        "Always returns False. This is a way of comparing User objects to anonymous users."
-        return False
-
-    def is_authenticated(self):
-        """Always return True. This is a way to tell if the user has been authenticated in templates.
-        """
-        return True
-
-    def get_full_name(self):
-        "Returns the first_name plus the last_name, with a space in between."
-        full_name = u'%s %s' % (self.first_name, self.last_name)
-        return full_name.strip()
-
-    def set_password(self, raw_password):
-        import random
-        algo = 'sha1'
-        salt = get_hexdigest(algo, str(random.random()), str(random.random()))[:5]
-        hsh = get_hexdigest(algo, salt, raw_password)
-        self.password = '%s$%s$%s' % (algo, salt, hsh)
-
-    def check_password(self, raw_password):
-        """
-        Returns a boolean of whether the raw_password was correct. Handles
-        encryption formats behind the scenes.
-        """
-        # Backwards-compatibility check. Older passwords won't include the
-        # algorithm or salt.
-        if '$' not in self.password:
-            is_correct = (self.password == get_hexdigest('md5', '', raw_password))
-            if is_correct:
-                # Convert the password to the new, more secure format.
-                self.set_password(raw_password)
-                self.save()
-            return is_correct
-        return check_password(raw_password, self.password)
-
-    def set_unusable_password(self):
-        # Sets a value that will never be a valid hash
-        self.password = UNUSABLE_PASSWORD
-
-    def has_usable_password(self):
-        return self.password != UNUSABLE_PASSWORD
-
-    def get_group_permissions(self):
-        """
-        Returns a list of permission strings that this user has through
-        his/her groups. This method queries all available auth backends.
-        """
-        permissions = set()
-        for backend in auth.get_backends():
-            if hasattr(backend, "get_group_permissions"):
-                permissions.update(backend.get_group_permissions(self))
-        return permissions
-
-    def get_all_permissions(self):
-        permissions = set()
-        for backend in auth.get_backends():
-            if hasattr(backend, "get_all_permissions"):
-                permissions.update(backend.get_all_permissions(self))
-        return permissions
-
-    def has_perm(self, perm):
-        """
-        Returns True if the user has the specified permission. This method
-        queries all available auth backends, but returns immediately if any
-        backend returns True. Thus, a user who has permission from a single
-        auth backend is assumed to have permission in general.
-        """
-        # Inactive users have no permissions.
-        if not self.is_active:
-            return False
-
-        # Superusers have all permissions.
-        if self.is_superuser:
-            return True
-
-        # Otherwise we need to check the backends.
-        for backend in auth.get_backends():
-            if hasattr(backend, "has_perm"):
-                if backend.has_perm(self, perm):
-                    return True
-        return False
-
-    def has_perms(self, perm_list):
-        """Returns True if the user has each of the specified permissions."""
-        for perm in perm_list:
-            if not self.has_perm(perm):
-                return False
-        return True
-
-    def has_module_perms(self, app_label):
-        """
-        Returns True if the user has any permissions in the given app
-        label. Uses pretty much the same logic as has_perm, above.
-        """
-        if not self.is_active:
-            return False
-
-        if self.is_superuser:
-            return True
-
-        for backend in auth.get_backends():
-            if hasattr(backend, "has_module_perms"):
-                if backend.has_module_perms(self, app_label):
-                    return True
-        return False
-
-    def get_and_delete_messages(self):
-        messages = []
-        for m in self.message_set.all():
-            messages.append(m.message)
-            m.delete()
-        return messages
-
-    def email_user(self, subject, message, from_email=None):
-        "Sends an e-mail to this User."
-        from django.core.mail import send_mail
-        send_mail(subject, message, from_email, [self.email])
-
-    def get_profile(self):
-        """
-        Returns site-specific profile for this user. Raises
-        SiteProfileNotAvailable if this site does not allow profiles.
-        """
-        if not hasattr(self, '_profile_cache'):
-            from django.conf import settings
-            if not settings.AUTH_PROFILE_MODULE:
-                raise SiteProfileNotAvailable
-            try:
-                app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.')
-                model = models.get_model(app_label, model_name)
-                self._profile_cache = model._default_manager.get(user__id__exact=self.id)
-            except (ImportError, ImproperlyConfigured):
-                raise SiteProfileNotAvailable
-        return self._profile_cache
-
-class Message(models.Model):
-    """
-    The message system is a lightweight way to queue messages for given
-    users. A message is associated with a User instance (so it is only
-    applicable for registered users). There's no concept of expiration or
-    timestamps. Messages are created by the Django admin after successful
-    actions. For example, "The poll Foo was created successfully." is a
-    message.
-    """
-    user = models.ForeignKey(User)
-    message = models.TextField(_('message'))
-
-    def __unicode__(self):
-        return self.message
-
-class AnonymousUser(object):
-    id = None
-    username = ''
-    is_staff = False
-    is_active = False
-    is_superuser = False
-    _groups = EmptyManager()
-    _user_permissions = EmptyManager()
-
-    def __init__(self):
-        pass
-
-    def __unicode__(self):
-        return 'AnonymousUser'
-
-    def __str__(self):
-        return unicode(self).encode('utf-8')
-
-    def __eq__(self, other):
-        return isinstance(other, self.__class__)
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def __hash__(self):
-        return 1 # instances always return the same hash value
-
-    def save(self):
-        raise NotImplementedError
-
-    def delete(self):
-        raise NotImplementedError
-
-    def set_password(self, raw_password):
-        raise NotImplementedError
-
-    def check_password(self, raw_password):
-        raise NotImplementedError
-
-    def _get_groups(self):
-        return self._groups
-    groups = property(_get_groups)
-
-    def _get_user_permissions(self):
-        return self._user_permissions
-    user_permissions = property(_get_user_permissions)
-
-    def has_perm(self, perm):
-        return False
-
-    def has_perms(self, perm_list):
-        return False
-
-    def has_module_perms(self, module):
-        return False
-
-    def get_and_delete_messages(self):
-        return []
-
-    def is_anonymous(self):
-        return True
-
-    def is_authenticated(self):
-        return False
diff --git a/webapp/django/contrib/auth/tests/__init__.py b/webapp/django/contrib/auth/tests/__init__.py
deleted file mode 100644
index 23cfbaf..0000000
--- a/webapp/django/contrib/auth/tests/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.contrib.auth.tests.basic import BASIC_TESTS
-from django.contrib.auth.tests.views import PasswordResetTest, ChangePasswordTest
-from django.contrib.auth.tests.forms import FORM_TESTS
-from django.contrib.auth.tests.tokens import TOKEN_GENERATOR_TESTS
-
-# The password for the fixture data users is 'password'
-
-__test__ = {
-    'BASIC_TESTS': BASIC_TESTS,
-    'PASSWORDRESET_TESTS': PasswordResetTest,
-    'FORM_TESTS': FORM_TESTS,
-    'TOKEN_GENERATOR_TESTS': TOKEN_GENERATOR_TESTS,
-    'CHANGEPASSWORD_TESTS': ChangePasswordTest,
-}
diff --git a/webapp/django/contrib/auth/tests/basic.py b/webapp/django/contrib/auth/tests/basic.py
deleted file mode 100644
index 2071710..0000000
--- a/webapp/django/contrib/auth/tests/basic.py
+++ /dev/null
@@ -1,56 +0,0 @@
-
-BASIC_TESTS = """
->>> from django.contrib.auth.models import User, AnonymousUser
->>> u = User.objects.create_user('testuser', 'test@example.com', 'testpw')
->>> u.has_usable_password()
-True
->>> u.check_password('bad')
-False
->>> u.check_password('testpw')
-True
->>> u.set_unusable_password()
->>> u.save()
->>> u.check_password('testpw')
-False
->>> u.has_usable_password()
-False
->>> u2 = User.objects.create_user('testuser2', 'test2@example.com')
->>> u2.has_usable_password()
-False
-
->>> u.is_authenticated()
-True
->>> u.is_staff
-False
->>> u.is_active
-True
-
->>> a = AnonymousUser()
->>> a.is_authenticated()
-False
->>> a.is_staff
-False
->>> a.is_active
-False
->>> a.groups.all()
-[]
->>> a.user_permissions.all()
-[]
-
-#
-# Tests for createsuperuser management command.
-# It's nearly impossible to test the interactive mode -- a command test helper
-# would be needed (and *awesome*) -- so just test the non-interactive mode.
-# This covers most of the important validation, but not all.
-#
->>> from django.core.management import call_command
-
->>> call_command("createsuperuser", noinput=True, username="joe", email="joe@somewhere.org")
-Superuser created successfully.
-
->>> u = User.objects.get(username="joe")
->>> u.email
-u'joe@somewhere.org'
->>> u.password
-u'!'
-"""
diff --git a/webapp/django/contrib/auth/tests/forms.py b/webapp/django/contrib/auth/tests/forms.py
deleted file mode 100644
index 01f4995..0000000
--- a/webapp/django/contrib/auth/tests/forms.py
+++ /dev/null
@@ -1,166 +0,0 @@
-
-FORM_TESTS = """
->>> from django.contrib.auth.models import User
->>> from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
->>> from django.contrib.auth.forms import PasswordChangeForm, SetPasswordForm
-
-The user already exists.
-
->>> user = User.objects.create_user("jsmith", "jsmith@example.com", "test123")
->>> data = {
-...     'username': 'jsmith',
-...     'password1': 'test123',
-...     'password2': 'test123',
-... }
->>> form = UserCreationForm(data)
->>> form.is_valid()
-False
->>> form["username"].errors
-[u'A user with that username already exists.']
-
-The username contains invalid data.
-
->>> data = {
-...     'username': 'jsmith@example.com',
-...     'password1': 'test123',
-...     'password2': 'test123',
-... }
->>> form = UserCreationForm(data)
->>> form.is_valid()
-False
->>> form["username"].errors
-[u'This value must contain only letters, numbers and underscores.']
-
-The verification password is incorrect.
-
->>> data = {
-...     'username': 'jsmith2',
-...     'password1': 'test123',
-...     'password2': 'test',
-... }
->>> form = UserCreationForm(data)
->>> form.is_valid()
-False
->>> form["password2"].errors
-[u"The two password fields didn't match."]
-
-The success case.
-
->>> data = {
-...     'username': 'jsmith2',
-...     'password1': 'test123',
-...     'password2': 'test123',
-... }
->>> form = UserCreationForm(data)
->>> form.is_valid()
-True
->>> form.save()
-<User: jsmith2>
-
-The user submits an invalid username.
-
->>> data = {
-...     'username': 'jsmith_does_not_exist',
-...     'password': 'test123',
-... }
-
->>> form = AuthenticationForm(None, data)
->>> form.is_valid()
-False
->>> form.non_field_errors()
-[u'Please enter a correct username and password. Note that both fields are case-sensitive.']
-
-The user is inactive.
-
->>> data = {
-...     'username': 'jsmith',
-...     'password': 'test123',
-... }
->>> user.is_active = False
->>> user.save()
->>> form = AuthenticationForm(None, data)
->>> form.is_valid()
-False
->>> form.non_field_errors()
-[u'This account is inactive.']
-
->>> user.is_active = True
->>> user.save()
-
-The success case
-
->>> form = AuthenticationForm(None, data)
->>> form.is_valid()
-True
->>> form.non_field_errors()
-[]
-
-SetPasswordForm:
-
-The two new passwords do not match.
-
->>> data = {
-...     'new_password1': 'abc123',
-...     'new_password2': 'abc',
-... }
->>> form = SetPasswordForm(user, data)
->>> form.is_valid()
-False
->>> form["new_password2"].errors
-[u"The two password fields didn't match."]
-
-The success case.
-
->>> data = {
-...     'new_password1': 'abc123',
-...     'new_password2': 'abc123',
-... }
->>> form = SetPasswordForm(user, data)
->>> form.is_valid()
-True
-
-PasswordChangeForm:
-
-The old password is incorrect.
-
->>> data = {
-...     'old_password': 'test',
-...     'new_password1': 'abc123',
-...     'new_password2': 'abc123',
-... }
->>> form = PasswordChangeForm(user, data)
->>> form.is_valid()
-False
->>> form["old_password"].errors
-[u'Your old password was entered incorrectly. Please enter it again.']
-
-The two new passwords do not match.
-
->>> data = {
-...     'old_password': 'test123',
-...     'new_password1': 'abc123',
-...     'new_password2': 'abc',
-... }
->>> form = PasswordChangeForm(user, data)
->>> form.is_valid()
-False
->>> form["new_password2"].errors
-[u"The two password fields didn't match."]
-
-The success case.
-
->>> data = {
-...     'old_password': 'test123',
-...     'new_password1': 'abc123',
-...     'new_password2': 'abc123',
-... }
->>> form = PasswordChangeForm(user, data)
->>> form.is_valid()
-True
-
-Regression test - check the order of fields:
-
->>> PasswordChangeForm(user, {}).fields.keys()
-['old_password', 'new_password1', 'new_password2']
-
-"""
diff --git a/webapp/django/contrib/auth/tests/templates/registration/login.html b/webapp/django/contrib/auth/tests/templates/registration/login.html
deleted file mode 100644
index 027da71..0000000
--- a/webapp/django/contrib/auth/tests/templates/registration/login.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ form.as_ul }}
\ No newline at end of file
diff --git a/webapp/django/contrib/auth/tests/tokens.py b/webapp/django/contrib/auth/tests/tokens.py
deleted file mode 100644
index 6d3a964..0000000
--- a/webapp/django/contrib/auth/tests/tokens.py
+++ /dev/null
@@ -1,29 +0,0 @@
-TOKEN_GENERATOR_TESTS = """
->>> from django.contrib.auth.models import User, AnonymousUser
->>> from django.contrib.auth.tokens import PasswordResetTokenGenerator
->>> from django.conf import settings
->>> u = User.objects.create_user('tokentestuser', 'test2@example.com', 'testpw')
->>> p0 = PasswordResetTokenGenerator()
->>> tk1 = p0.make_token(u)
->>> p0.check_token(u, tk1)
-True
-
-Tests to ensure we can use the token after n days, but no greater.
-Use a mocked version of PasswordResetTokenGenerator so we can change
-the value of 'today'
-
->>> class Mocked(PasswordResetTokenGenerator):
-...     def __init__(self, today):
-...         self._today_val = today
-...     def _today(self):
-...         return self._today_val
-
->>> from datetime import date, timedelta
->>> p1 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS))
->>> p1.check_token(u, tk1)
-True
->>> p2 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS + 1))
->>> p2.check_token(u, tk1)
-False
-
-"""
diff --git a/webapp/django/contrib/auth/tests/views.py b/webapp/django/contrib/auth/tests/views.py
deleted file mode 100644
index acd0336..0000000
--- a/webapp/django/contrib/auth/tests/views.py
+++ /dev/null
@@ -1,164 +0,0 @@
-
-import os
-import re
-
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.test import TestCase
-from django.core import mail
-
-class PasswordResetTest(TestCase):
-    fixtures = ['authtestdata.json']
-    urls = 'django.contrib.auth.urls'
-
-    def test_email_not_found(self):
-        "Error is raised if the provided email address isn't currently registered"
-        response = self.client.get('/password_reset/')
-        self.assertEquals(response.status_code, 200)
-        response = self.client.post('/password_reset/', {'email': 'not_a_real_email@email.com'})
-        self.assertContains(response, "That e-mail address doesn't have an associated user account")
-        self.assertEquals(len(mail.outbox), 0)
-
-    def test_email_found(self):
-        "Email is sent if a valid email address is provided for password reset"
-        response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
-        self.assertEquals(response.status_code, 302)
-        self.assertEquals(len(mail.outbox), 1)
-        self.assert_("http://" in mail.outbox[0].body)
-
-    def _test_confirm_start(self):
-        # Start by creating the email
-        response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
-        self.assertEquals(response.status_code, 302)
-        self.assertEquals(len(mail.outbox), 1)
-        return self._read_signup_email(mail.outbox[0])
-
-    def _read_signup_email(self, email):
-        urlmatch = re.search(r"https?://[^/]*(/.*reset/\S*)", email.body)
-        self.assert_(urlmatch is not None, "No URL found in sent email")
-        return urlmatch.group(), urlmatch.groups()[0]
-
-    def test_confirm_valid(self):
-        url, path = self._test_confirm_start()
-        response = self.client.get(path)
-        # redirect to a 'complete' page:
-        self.assertEquals(response.status_code, 200)
-        self.assert_("Please enter your new password" in response.content)
-
-    def test_confirm_invalid(self):
-        url, path = self._test_confirm_start()
-        # Lets munge the token in the path, but keep the same length,
-        # in case the URL conf will reject a different length
-        path = path[:-5] + ("0"*4) + path[-1]
-
-        response = self.client.get(path)
-        self.assertEquals(response.status_code, 200)
-        self.assert_("The password reset link was invalid" in response.content)
-
-    def test_confirm_invalid_post(self):
-        # Same as test_confirm_invalid, but trying
-        # to do a POST instead.
-        url, path = self._test_confirm_start()
-        path = path[:-5] + ("0"*4) + path[-1]
-
-        response = self.client.post(path, {'new_password1': 'anewpassword',
-                                           'new_password2':' anewpassword'})
-        # Check the password has not been changed
-        u = User.objects.get(email='staffmember@example.com')
-        self.assert_(not u.check_password("anewpassword"))
-
-    def test_confirm_complete(self):
-        url, path = self._test_confirm_start()
-        response = self.client.post(path, {'new_password1': 'anewpassword',
-                                           'new_password2': 'anewpassword'})
-        # It redirects us to a 'complete' page:
-        self.assertEquals(response.status_code, 302)
-        # Check the password has been changed
-        u = User.objects.get(email='staffmember@example.com')
-        self.assert_(u.check_password("anewpassword"))
-
-        # Check we can't use the link again
-        response = self.client.get(path)
-        self.assertEquals(response.status_code, 200)
-        self.assert_("The password reset link was invalid" in response.content)
-
-    def test_confirm_different_passwords(self):
-        url, path = self._test_confirm_start()
-        response = self.client.post(path, {'new_password1': 'anewpassword',
-                                           'new_password2':' x'})
-        self.assertEquals(response.status_code, 200)
-        self.assert_("The two password fields didn't match" in response.content)
-
-
-class ChangePasswordTest(TestCase):
-    fixtures = ['authtestdata.json']
-    urls = 'django.contrib.auth.urls'
-
-    def setUp(self):
-        self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
-        settings.TEMPLATE_DIRS = (
-            os.path.join(
-                os.path.dirname(__file__),
-                'templates'
-            )
-        ,)
-
-    def tearDown(self):
-        settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS
-
-    def login(self, password='password'):
-        response = self.client.post('/login/', {
-            'username': 'testclient',
-            'password': password
-            }
-        )
-        self.assertEquals(response.status_code, 302)
-        self.assert_(response['Location'].endswith('/accounts/profile/'))
-
-    def fail_login(self, password='password'):
-        response = self.client.post('/login/', {
-            'username': 'testclient',
-            'password': password
-            }
-        )
-        self.assertEquals(response.status_code, 200)
-        self.assert_("Please enter a correct username and password. Note that both fields are case-sensitive." in response.content)
-
-    def logout(self):
-        response = self.client.get('/logout/')
-
-    def test_password_change_fails_with_invalid_old_password(self):
-        self.login()
-        response = self.client.post('/password_change/', {
-            'old_password': 'donuts',
-            'new_password1': 'password1',
-            'new_password2': 'password1',
-            }
-        )
-        self.assertEquals(response.status_code, 200)
-        self.assert_("Your old password was entered incorrectly. Please enter it again." in response.content)
-
-    def test_password_change_fails_with_mismatched_passwords(self):
-        self.login()
-        response = self.client.post('/password_change/', {
-            'old_password': 'password',
-            'new_password1': 'password1',
-            'new_password2': 'donuts',
-            }
-        )
-        self.assertEquals(response.status_code, 200)
-        self.assert_("The two password fields didn't match." in response.content)
-
-    def test_password_change_succeeds(self):
-        self.login()
-        response = self.client.post('/password_change/', {
-            'old_password': 'password',
-            'new_password1': 'password1',
-            'new_password2': 'password1',
-            }
-        )
-        self.assertEquals(response.status_code, 302)
-        self.assert_(response['Location'].endswith('/password_change/done/'))
-        self.fail_login()
-        self.login(password='password1')
-
diff --git a/webapp/django/contrib/auth/tokens.py b/webapp/django/contrib/auth/tokens.py
deleted file mode 100644
index c9b3535..0000000
--- a/webapp/django/contrib/auth/tokens.py
+++ /dev/null
@@ -1,66 +0,0 @@
-from datetime import date
-from django.conf import settings
-from django.utils.http import int_to_base36, base36_to_int
-
-class PasswordResetTokenGenerator(object):
-    """
-    Stratgy object used to generate and check tokens for the password
-    reset mechanism.
-    """
-    def make_token(self, user):
-        """
-        Returns a token that can be used once to do a password reset
-        for the given user.
-        """
-        return self._make_token_with_timestamp(user, self._num_days(self._today()))
-
-    def check_token(self, user, token):
-        """
-        Check that a password reset token is correct for a given user.
-        """
-        # Parse the tokem
-        try:
-            ts_b36, hash = token.split("-")
-        except ValueError:
-            return False
-
-        try:
-            ts = base36_to_int(ts_b36)
-        except ValueError:
-            return False
-
-        # Check that the timestamp/uid has not been tampered with
-        if self._make_token_with_timestamp(user, ts) != token:
-            return False
-
-        # Check the timestamp is within limit
-        if (self._num_days(self._today()) - ts) > settings.PASSWORD_RESET_TIMEOUT_DAYS:
-            return False
-
-        return True
-
-    def _make_token_with_timestamp(self, user, timestamp):
-        # timestamp is number of days since 2001-1-1.  Converted to
-        # base 36, this gives us a 3 digit string until about 2121
-        ts_b36 = int_to_base36(timestamp)
-
-        # By hashing on the internal state of the user and using state
-        # that is sure to change (the password salt will change as soon as
-        # the password is set, at least for current Django auth, and
-        # last_login will also change), we produce a hash that will be
-        # invalid as soon as it is used.
-        # We limit the hash to 20 chars to keep URL short
-        from django.utils.hashcompat import sha_constructor
-        hash = sha_constructor(settings.SECRET_KEY + unicode(user.id) +
-                               user.password + unicode(user.last_login) +
-                               unicode(timestamp)).hexdigest()[::2]
-        return "%s-%s" % (ts_b36, hash)
-
-    def _num_days(self, dt):
-        return (dt - date(2001,1,1)).days
-
-    def _today(self):
-        # Used for mocking in tests
-        return date.today()
-
-default_token_generator = PasswordResetTokenGenerator()
diff --git a/webapp/django/contrib/auth/urls.py b/webapp/django/contrib/auth/urls.py
deleted file mode 100644
index 4f8a102..0000000
--- a/webapp/django/contrib/auth/urls.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# These URLs are normally mapped to /admin/urls.py. This URLs file is 
-# provided as a convenience to those who want to deploy these URLs elsewhere.
-# This file is also used to provide a reliable view deployment for test purposes.
-
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('',
-    (r'^login/$', 'django.contrib.auth.views.login'),
-    (r'^logout/$', 'django.contrib.auth.views.logout'),
-    (r'^password_change/$', 'django.contrib.auth.views.password_change'),
-    (r'^password_change/done/$', 'django.contrib.auth.views.password_change_done'),
-    (r'^password_reset/$', 'django.contrib.auth.views.password_reset'),
-    (r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done'),
-    (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),
-    (r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),
-)
-
diff --git a/webapp/django/contrib/auth/views.py b/webapp/django/contrib/auth/views.py
deleted file mode 100644
index e1f0d43..0000000
--- a/webapp/django/contrib/auth/views.py
+++ /dev/null
@@ -1,157 +0,0 @@
-from django.conf import settings
-from django.contrib.auth import REDIRECT_FIELD_NAME
-from django.contrib.auth.decorators import login_required
-from django.contrib.auth.forms import AuthenticationForm
-from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm, PasswordChangeForm
-from django.contrib.auth.tokens import default_token_generator
-from django.core.urlresolvers import reverse
-from django.shortcuts import render_to_response, get_object_or_404
-from django.contrib.sites.models import Site, RequestSite
-from django.http import HttpResponseRedirect, Http404
-from django.template import RequestContext
-from django.utils.http import urlquote, base36_to_int
-from django.utils.translation import ugettext as _
-from django.contrib.auth.models import User
-from django.views.decorators.cache import never_cache
-
-def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME):
-    "Displays the login form and handles the login action."
-    redirect_to = request.REQUEST.get(redirect_field_name, '')
-    if request.method == "POST":
-        form = AuthenticationForm(data=request.POST)
-        if form.is_valid():
-            # Light security check -- make sure redirect_to isn't garbage.
-            if not redirect_to or '//' in redirect_to or ' ' in redirect_to:
-                redirect_to = settings.LOGIN_REDIRECT_URL
-            from django.contrib.auth import login
-            login(request, form.get_user())
-            if request.session.test_cookie_worked():
-                request.session.delete_test_cookie()
-            return HttpResponseRedirect(redirect_to)
-    else:
-        form = AuthenticationForm(request)
-    request.session.set_test_cookie()
-    if Site._meta.installed:
-        current_site = Site.objects.get_current()
-    else:
-        current_site = RequestSite(request)
-    return render_to_response(template_name, {
-        'form': form,
-        redirect_field_name: redirect_to,
-        'site_name': current_site.name,
-    }, context_instance=RequestContext(request))
-login = never_cache(login)
-
-def logout(request, next_page=None, template_name='registration/logged_out.html'):
-    "Logs out the user and displays 'You are logged out' message."
-    from django.contrib.auth import logout
-    logout(request)
-    if next_page is None:
-        return render_to_response(template_name, {'title': _('Logged out')}, context_instance=RequestContext(request))
-    else:
-        # Redirect to this page until the session has been cleared.
-        return HttpResponseRedirect(next_page or request.path)
-
-def logout_then_login(request, login_url=None):
-    "Logs out the user if he is logged in. Then redirects to the log-in page."
-    if not login_url:
-        login_url = settings.LOGIN_URL
-    return logout(request, login_url)
-
-def redirect_to_login(next, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):
-    "Redirects the user to the login page, passing the given 'next' page"
-    if not login_url:
-        login_url = settings.LOGIN_URL
-    return HttpResponseRedirect('%s?%s=%s' % (login_url, urlquote(redirect_field_name), urlquote(next)))
-
-# 4 views for password reset:
-# - password_reset sends the mail
-# - password_reset_done shows a success message for the above
-# - password_reset_confirm checks the link the user clicked and 
-#   prompts for a new password
-# - password_reset_complete shows a success message for the above
-
-def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html',
-        email_template_name='registration/password_reset_email.html',
-        password_reset_form=PasswordResetForm, token_generator=default_token_generator,
-        post_reset_redirect=None):
-    if post_reset_redirect is None:
-        post_reset_redirect = reverse('django.contrib.auth.views.password_reset_done')
-    if request.method == "POST":
-        form = password_reset_form(request.POST)
-        if form.is_valid():
-            opts = {}
-            opts['use_https'] = request.is_secure()
-            opts['token_generator'] = token_generator
-            if is_admin_site:
-                opts['domain_override'] = request.META['HTTP_HOST']
-            else:
-                opts['email_template_name'] = email_template_name
-                if not Site._meta.installed:
-                    opts['domain_override'] = RequestSite(request).domain
-            form.save(**opts)
-            return HttpResponseRedirect(post_reset_redirect)
-    else:
-        form = password_reset_form()
-    return render_to_response(template_name, {
-        'form': form,
-    }, context_instance=RequestContext(request))
-
-def password_reset_done(request, template_name='registration/password_reset_done.html'):
-    return render_to_response(template_name, context_instance=RequestContext(request))
-
-def password_reset_confirm(request, uidb36=None, token=None, template_name='registration/password_reset_confirm.html',
-                           token_generator=default_token_generator, set_password_form=SetPasswordForm,
-                           post_reset_redirect=None):
-    """
-    View that checks the hash in a password reset link and presents a
-    form for entering a new password.
-    """
-    assert uidb36 is not None and token is not None # checked by URLconf
-    if post_reset_redirect is None:
-        post_reset_redirect = reverse('django.contrib.auth.views.password_reset_complete')
-    try:
-        uid_int = base36_to_int(uidb36)
-    except ValueError:
-        raise Http404
-
-    user = get_object_or_404(User, id=uid_int)
-    context_instance = RequestContext(request)
-
-    if token_generator.check_token(user, token):
-        context_instance['validlink'] = True
-        if request.method == 'POST':
-            form = set_password_form(user, request.POST)
-            if form.is_valid():
-                form.save()
-                return HttpResponseRedirect(post_reset_redirect)
-        else:
-            form = set_password_form(None)
-    else:
-        context_instance['validlink'] = False
-        form = None
-    context_instance['form'] = form    
-    return render_to_response(template_name, context_instance=context_instance)
-
-def password_reset_complete(request, template_name='registration/password_reset_complete.html'):
-    return render_to_response(template_name, context_instance=RequestContext(request,
-                                                                             {'login_url': settings.LOGIN_URL}))
-
-def password_change(request, template_name='registration/password_change_form.html',
-                    post_change_redirect=None):
-    if post_change_redirect is None:
-        post_change_redirect = reverse('django.contrib.auth.views.password_change_done')
-    if request.method == "POST":
-        form = PasswordChangeForm(request.user, request.POST)
-        if form.is_valid():
-            form.save()
-            return HttpResponseRedirect(post_change_redirect)
-    else:
-        form = PasswordChangeForm(request.user)
-    return render_to_response(template_name, {
-        'form': form,
-    }, context_instance=RequestContext(request))
-password_change = login_required(password_change)
-
-def password_change_done(request, template_name='registration/password_change_done.html'):
-    return render_to_response(template_name, context_instance=RequestContext(request))
diff --git a/webapp/django/contrib/comments/__init__.py b/webapp/django/contrib/comments/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/comments/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/comments/admin.py b/webapp/django/contrib/comments/admin.py
deleted file mode 100644
index 81ecc69..0000000
--- a/webapp/django/contrib/comments/admin.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from django.contrib import admin
-from django.contrib.comments.models import Comment, FreeComment
-
-
-class CommentAdmin(admin.ModelAdmin):
-    fieldsets = (
-        (None, {'fields': ('content_type', 'object_id', 'site')}),
-        ('Content', {'fields': ('user', 'headline', 'comment')}),
-        ('Ratings', {'fields': ('rating1', 'rating2', 'rating3', 'rating4', 'rating5', 'rating6', 'rating7', 'rating8', 'valid_rating')}),
-        ('Meta', {'fields': ('is_public', 'is_removed', 'ip_address')}),
-    )
-    list_display = ('user', 'submit_date', 'content_type', 'get_content_object')
-    list_filter = ('submit_date',)
-    date_hierarchy = 'submit_date'
-    search_fields = ('comment', 'user__username')
-    raw_id_fields = ('user',)
-
-class FreeCommentAdmin(admin.ModelAdmin):
-    fieldsets = (
-        (None, {'fields': ('content_type', 'object_id', 'site')}),
-        ('Content', {'fields': ('person_name', 'comment')}),
-        ('Meta', {'fields': ('is_public', 'ip_address', 'approved')}),
-    )
-    list_display = ('person_name', 'submit_date', 'content_type', 'get_content_object')
-    list_filter = ('submit_date',)
-    date_hierarchy = 'submit_date'
-    search_fields = ('comment', 'person_name')
-
-admin.site.register(Comment, CommentAdmin)
-admin.site.register(FreeComment, FreeCommentAdmin)
\ No newline at end of file
diff --git a/webapp/django/contrib/comments/feeds.py b/webapp/django/contrib/comments/feeds.py
deleted file mode 100644
index 901254f..0000000
--- a/webapp/django/contrib/comments/feeds.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from django.conf import settings
-from django.contrib.comments.models import Comment, FreeComment
-from django.contrib.syndication.feeds import Feed
-from django.contrib.sites.models import Site
-
-class LatestFreeCommentsFeed(Feed):
-    """Feed of latest free comments on the current site."""
-
-    comments_class = FreeComment
-
-    def title(self):
-        if not hasattr(self, '_site'):
-            self._site = Site.objects.get_current()
-        return u"%s comments" % self._site.name
-
-    def link(self):
-        if not hasattr(self, '_site'):
-            self._site = Site.objects.get_current()
-        return "http://%s/" % (self._site.domain)
-
-    def description(self):
-        if not hasattr(self, '_site'):
-            self._site = Site.objects.get_current()
-        return u"Latest comments on %s" % self._site.name
-
-    def get_query_set(self):
-        return self.comments_class.objects.filter(site__pk=settings.SITE_ID, is_public=True)
-
-    def items(self):
-        return self.get_query_set()[:40]
-
-class LatestCommentsFeed(LatestFreeCommentsFeed):
-    """Feed of latest comments on the current site."""
-
-    comments_class = Comment
-
-    def get_query_set(self):
-        qs = super(LatestCommentsFeed, self).get_query_set()
-        qs = qs.filter(is_removed=False)
-        if settings.COMMENTS_BANNED_USERS_GROUP:
-            where = ['user_id NOT IN (SELECT user_id FROM auth_users_group WHERE group_id = %s)']
-            params = [settings.COMMENTS_BANNED_USERS_GROUP]
-            qs = qs.extra(where=where, params=params)
-        return qs
diff --git a/webapp/django/contrib/comments/models.py b/webapp/django/contrib/comments/models.py
deleted file mode 100644
index fdf34c8..0000000
--- a/webapp/django/contrib/comments/models.py
+++ /dev/null
@@ -1,286 +0,0 @@
-import datetime
-
-from django.db import models
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.sites.models import Site
-from django.contrib.auth.models import User
-from django.utils.translation import ugettext_lazy as _
-from django.conf import settings
-
-MIN_PHOTO_DIMENSION = 5
-MAX_PHOTO_DIMENSION = 1000
-
-# Option codes for comment-form hidden fields.
-PHOTOS_REQUIRED = 'pr'
-PHOTOS_OPTIONAL = 'pa'
-RATINGS_REQUIRED = 'rr'
-RATINGS_OPTIONAL = 'ra'
-IS_PUBLIC = 'ip'
-
-# What users get if they don't have any karma.
-DEFAULT_KARMA = 5
-KARMA_NEEDED_BEFORE_DISPLAYED = 3
-
-
-class CommentManager(models.Manager):
-    def get_security_hash(self, options, photo_options, rating_options, target):
-        """
-        Returns the MD5 hash of the given options (a comma-separated string such as
-        'pa,ra') and target (something like 'lcom.eventtimes:5157'). Used to
-        validate that submitted form options have not been tampered-with.
-        """
-        from django.utils.hashcompat import md5_constructor
-        return md5_constructor(options + photo_options + rating_options + target + settings.SECRET_KEY).hexdigest()
-
-    def get_rating_options(self, rating_string):
-        """
-        Given a rating_string, this returns a tuple of (rating_range, options).
-        >>> s = "scale:1-10|First_category|Second_category"
-        >>> Comment.objects.get_rating_options(s)
-        ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ['First category', 'Second category'])
-        """
-        rating_range, options = rating_string.split('|', 1)
-        rating_range = range(int(rating_range[6:].split('-')[0]), int(rating_range[6:].split('-')[1])+1)
-        choices = [c.replace('_', ' ') for c in options.split('|')]
-        return rating_range, choices
-
-    def get_list_with_karma(self, **kwargs):
-        """
-        Returns a list of Comment objects matching the given lookup terms, with
-        _karma_total_good and _karma_total_bad filled.
-        """
-        extra_kwargs = {}
-        extra_kwargs.setdefault('select', {})
-        extra_kwargs['select']['_karma_total_good'] = 'SELECT COUNT(*) FROM comments_karmascore, comments_comment WHERE comments_karmascore.comment_id=comments_comment.id AND score=1'
-        extra_kwargs['select']['_karma_total_bad'] = 'SELECT COUNT(*) FROM comments_karmascore, comments_comment WHERE comments_karmascore.comment_id=comments_comment.id AND score=-1'
-        return self.filter(**kwargs).extra(**extra_kwargs)
-
-    def user_is_moderator(self, user):
-        if user.is_superuser:
-            return True
-        for g in user.groups.all():
-            if g.id == settings.COMMENTS_MODERATORS_GROUP:
-                return True
-        return False
-
-
-class Comment(models.Model):
-    """A comment by a registered user."""
-    user = models.ForeignKey(User)
-    content_type = models.ForeignKey(ContentType)
-    object_id = models.IntegerField(_('object ID'))
-    headline = models.CharField(_('headline'), max_length=255, blank=True)
-    comment = models.TextField(_('comment'), max_length=3000)
-    rating1 = models.PositiveSmallIntegerField(_('rating #1'), blank=True, null=True)
-    rating2 = models.PositiveSmallIntegerField(_('rating #2'), blank=True, null=True)
-    rating3 = models.PositiveSmallIntegerField(_('rating #3'), blank=True, null=True)
-    rating4 = models.PositiveSmallIntegerField(_('rating #4'), blank=True, null=True)
-    rating5 = models.PositiveSmallIntegerField(_('rating #5'), blank=True, null=True)
-    rating6 = models.PositiveSmallIntegerField(_('rating #6'), blank=True, null=True)
-    rating7 = models.PositiveSmallIntegerField(_('rating #7'), blank=True, null=True)
-    rating8 = models.PositiveSmallIntegerField(_('rating #8'), blank=True, null=True)
-    # This field designates whether to use this row's ratings in aggregate
-    # functions (summaries). We need this because people are allowed to post
-    # multiple reviews on the same thing, but the system will only use the
-    # latest one (with valid_rating=True) in tallying the reviews.
-    valid_rating = models.BooleanField(_('is valid rating'))
-    submit_date = models.DateTimeField(_('date/time submitted'), auto_now_add=True)
-    is_public = models.BooleanField(_('is public'))
-    ip_address = models.IPAddressField(_('IP address'), blank=True, null=True)
-    is_removed = models.BooleanField(_('is removed'), help_text=_('Check this box if the comment is inappropriate. A "This comment has been removed" message will be displayed instead.'))
-    site = models.ForeignKey(Site)
-    objects = CommentManager()
-
-    class Meta:
-        verbose_name = _('comment')
-        verbose_name_plural = _('comments')
-        ordering = ('-submit_date',)
-
-    def __unicode__(self):
-        return "%s: %s..." % (self.user.username, self.comment[:100])
-
-    def get_absolute_url(self):
-        try:
-            return self.get_content_object().get_absolute_url() + "#c" + str(self.id)
-        except AttributeError:
-            return ""
-
-    def get_crossdomain_url(self):
-        return "/r/%d/%d/" % (self.content_type_id, self.object_id)
-
-    def get_flag_url(self):
-        return "/comments/flag/%s/" % self.id
-
-    def get_deletion_url(self):
-        return "/comments/delete/%s/" % self.id
-
-    def get_content_object(self):
-        """
-        Returns the object that this comment is a comment on. Returns None if
-        the object no longer exists.
-        """
-        from django.core.exceptions import ObjectDoesNotExist
-        try:
-            return self.content_type.get_object_for_this_type(pk=self.object_id)
-        except ObjectDoesNotExist:
-            return None
-
-    get_content_object.short_description = _('Content object')
-
-    def _fill_karma_cache(self):
-        """Helper function that populates good/bad karma caches."""
-        good, bad = 0, 0
-        for k in self.karmascore_set:
-            if k.score == -1:
-                bad +=1
-            elif k.score == 1:
-                good +=1
-        self._karma_total_good, self._karma_total_bad = good, bad
-
-    def get_good_karma_total(self):
-        if not hasattr(self, "_karma_total_good"):
-            self._fill_karma_cache()
-        return self._karma_total_good
-
-    def get_bad_karma_total(self):
-        if not hasattr(self, "_karma_total_bad"):
-            self._fill_karma_cache()
-        return self._karma_total_bad
-
-    def get_karma_total(self):
-        if not hasattr(self, "_karma_total_good") or not hasattr(self, "_karma_total_bad"):
-            self._fill_karma_cache()
-        return self._karma_total_good + self._karma_total_bad
-
-    def get_as_text(self):
-        return _('Posted by %(user)s at %(date)s\n\n%(comment)s\n\nhttp://%(domain)s%(url)s') % \
-            {'user': self.user.username, 'date': self.submit_date,
-            'comment': self.comment, 'domain': self.site.domain, 'url': self.get_absolute_url()}
-
-
-class FreeComment(models.Model):
-    """A comment by a non-registered user."""
-    content_type = models.ForeignKey(ContentType)
-    object_id = models.IntegerField(_('object ID'))
-    comment = models.TextField(_('comment'), max_length=3000)
-    person_name = models.CharField(_("person's name"), max_length=50)
-    submit_date = models.DateTimeField(_('date/time submitted'), auto_now_add=True)
-    is_public = models.BooleanField(_('is public'))
-    ip_address = models.IPAddressField(_('ip address'))
-    # TODO: Change this to is_removed, like Comment
-    approved = models.BooleanField(_('approved by staff'))
-    site = models.ForeignKey(Site)
-
-    class Meta:
-        verbose_name = _('free comment')
-        verbose_name_plural = _('free comments')
-        ordering = ('-submit_date',)
-
-    def __unicode__(self):
-        return "%s: %s..." % (self.person_name, self.comment[:100])
-
-    def get_absolute_url(self):
-        try:
-            return self.get_content_object().get_absolute_url() + "#c" + str(self.id)
-        except AttributeError:
-            return ""
-
-    def get_content_object(self):
-        """
-        Returns the object that this comment is a comment on. Returns None if
-        the object no longer exists.
-        """
-        from django.core.exceptions import ObjectDoesNotExist
-        try:
-            return self.content_type.get_object_for_this_type(pk=self.object_id)
-        except ObjectDoesNotExist:
-            return None
-
-    get_content_object.short_description = _('Content object')
-
-
-class KarmaScoreManager(models.Manager):
-    def vote(self, user_id, comment_id, score):
-        try:
-            karma = self.get(comment__pk=comment_id, user__pk=user_id)
-        except self.model.DoesNotExist:
-            karma = self.model(None, user_id=user_id, comment_id=comment_id, score=score, scored_date=datetime.datetime.now())
-            karma.save()
-        else:
-            karma.score = score
-            karma.scored_date = datetime.datetime.now()
-            karma.save()
-
-    def get_pretty_score(self, score):
-        """
-        Given a score between -1 and 1 (inclusive), returns the same score on a
-        scale between 1 and 10 (inclusive), as an integer.
-        """
-        if score is None:
-            return DEFAULT_KARMA
-        return int(round((4.5 * score) + 5.5))
-
-
-class KarmaScore(models.Model):
-    user = models.ForeignKey(User)
-    comment = models.ForeignKey(Comment)
-    score = models.SmallIntegerField(_('score'), db_index=True)
-    scored_date = models.DateTimeField(_('score date'), auto_now=True)
-    objects = KarmaScoreManager()
-
-    class Meta:
-        verbose_name = _('karma score')
-        verbose_name_plural = _('karma scores')
-        unique_together = (('user', 'comment'),)
-
-    def __unicode__(self):
-        return _("%(score)d rating by %(user)s") % {'score': self.score, 'user': self.user}
-
-
-class UserFlagManager(models.Manager):
-    def flag(self, comment, user):
-        """
-        Flags the given comment by the given user. If the comment has already
-        been flagged by the user, or it was a comment posted by the user,
-        nothing happens.
-        """
-        if int(comment.user_id) == int(user.id):
-            return # A user can't flag his own comment. Fail silently.
-        try:
-            f = self.get(user__pk=user.id, comment__pk=comment.id)
-        except self.model.DoesNotExist:
-            from django.core.mail import mail_managers
-            f = self.model(None, user.id, comment.id, None)
-            message = _('This comment was flagged by %(user)s:\n\n%(text)s') % {'user': user.username, 'text': comment.get_as_text()}
-            mail_managers('Comment flagged', message, fail_silently=True)
-            f.save()
-
-
-class UserFlag(models.Model):
-    user = models.ForeignKey(User)
-    comment = models.ForeignKey(Comment)
-    flag_date = models.DateTimeField(_('flag date'), auto_now_add=True)
-    objects = UserFlagManager()
-
-    class Meta:
-        verbose_name = _('user flag')
-        verbose_name_plural = _('user flags')
-        unique_together = (('user', 'comment'),)
-
-    def __unicode__(self):
-        return _("Flag by %r") % self.user
-
-
-class ModeratorDeletion(models.Model):
-    user = models.ForeignKey(User, verbose_name='moderator')
-    comment = models.ForeignKey(Comment)
-    deletion_date = models.DateTimeField(_('deletion date'), auto_now_add=True)
-
-    class Meta:
-        verbose_name = _('moderator deletion')
-        verbose_name_plural = _('moderator deletions')
-        unique_together = (('user', 'comment'),)
-
-    def __unicode__(self):
-        return _("Moderator deletion by %r") % self.user
-        
\ No newline at end of file
diff --git a/webapp/django/contrib/comments/templates/comments/form.html b/webapp/django/contrib/comments/templates/comments/form.html
deleted file mode 100644
index 11eaa8d..0000000
--- a/webapp/django/contrib/comments/templates/comments/form.html
+++ /dev/null
@@ -1,38 +0,0 @@
-{% load i18n %}
-{% if display_form %}
-<form {% if photos_optional or photos_required %}enctype="multipart/form-data" {% endif %}action="/comments/post/" method="post">
-
-{% if user.is_authenticated %}
-<p>{% trans "Username:" %} <strong>{{ user.username }}</strong> (<a href="{{ logout_url }}">{% trans "Log out" %}</a>)</p>
-{% else %}
-<p><label for="id_username">{% trans "Username:" %}</label> <input type="text" name="username" id="id_username" /><br />{% trans "Password:" %} <input type="password" name="password" id="id_password" /> (<a href="/accounts/password_reset/">{% trans "Forgotten your password?" %}</a>)</p>
-{% endif %}
-
-{% if ratings_optional or ratings_required %}
-<p>{% trans "Ratings" %} ({% if ratings_required %}{% trans "Required" %}{% else %}{% trans "Optional" %}{% endif %}):</p>
-<table>
-<tr><th>&nbsp;</th>{% for value in rating_range %}<th>{{ value }}</th>{% endfor %}</tr>
-{% for rating in rating_choices %}
-<tr><th>{{ rating }}</th>{% for value in rating_range %}<th><input type="radio" name="rating{{ forloop.parentloop.counter }}" value="{{ value }}" /></th>{% endfor %}</tr>
-{% endfor %}
-</table>
-<input type="hidden" name="rating_options" value="{{ rating_options }}" />
-{% endif %}
-
-{% if photos_optional or photos_required %}
-<p><label for="id_photo">{% trans "Post a photo" %}</label> ({% if photos_required %}{% trans "Required" %}{% else %}{% trans "Optional" %}{% endif %}):
-<input type="file" name="photo" id="id_photo" /></p>
-<input type="hidden" name="photo_options" value="{{ photo_options }}" />
-{% endif %}
-
-<p><label for="id_comment">{% trans "Comment:" %}</label><br />
-<textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
-
-<p>
-<input type="hidden" name="options" value="{{ options }}" />
-<input type="hidden" name="target" value="{{ target }}" />
-<input type="hidden" name="gonzo" value="{{ hash }}" />
-<input type="submit" name="preview" value="{% trans "Preview comment" %}" />
-</p>
-</form>
-{% endif %}
diff --git a/webapp/django/contrib/comments/templates/comments/freeform.html b/webapp/django/contrib/comments/templates/comments/freeform.html
deleted file mode 100644
index f0d00b9..0000000
--- a/webapp/django/contrib/comments/templates/comments/freeform.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% load i18n %}
-{% if display_form %}
-<form action="/comments/postfree/" method="post">
-<p><label for="id_person_name">{% trans "Your name:" %}</label> <input type="text" id="id_person_name" name="person_name" /></p>
-<p><label for="id_comment">{% trans "Comment:" %}</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
-<p>
-<input type="hidden" name="options" value="{{ options }}" />
-<input type="hidden" name="target" value="{{ target }}" />
-<input type="hidden" name="gonzo" value="{{ hash }}" />
-<input type="submit" name="preview" value="{% trans "Preview comment" %}" />
-</p>
-</form>
-{% endif %}
diff --git a/webapp/django/contrib/comments/templatetags/__init__.py b/webapp/django/contrib/comments/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/comments/templatetags/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/comments/templatetags/comments.py b/webapp/django/contrib/comments/templatetags/comments.py
deleted file mode 100644
index 959cec4..0000000
--- a/webapp/django/contrib/comments/templatetags/comments.py
+++ /dev/null
@@ -1,332 +0,0 @@
-from django.contrib.comments.models import Comment, FreeComment
-from django.contrib.comments.models import PHOTOS_REQUIRED, PHOTOS_OPTIONAL, RATINGS_REQUIRED, RATINGS_OPTIONAL, IS_PUBLIC
-from django.contrib.comments.models import MIN_PHOTO_DIMENSION, MAX_PHOTO_DIMENSION
-from django import template
-from django.template import loader
-from django.core.exceptions import ObjectDoesNotExist
-from django.contrib.contenttypes.models import ContentType
-from django.utils.encoding import smart_str
-import re
-
-register = template.Library()
-
-COMMENT_FORM = 'comments/form.html'
-FREE_COMMENT_FORM = 'comments/freeform.html'
-
-class CommentFormNode(template.Node):
-    def __init__(self, content_type, obj_id_lookup_var, obj_id, free,
-        photos_optional=False, photos_required=False, photo_options='',
-        ratings_optional=False, ratings_required=False, rating_options='',
-        is_public=True):
-        self.content_type = content_type
-        if obj_id_lookup_var is not None:
-            obj_id_lookup_var = template.Variable(obj_id_lookup_var)
-        self.obj_id_lookup_var, self.obj_id, self.free = obj_id_lookup_var, obj_id, free
-        self.photos_optional, self.photos_required = photos_optional, photos_required
-        self.ratings_optional, self.ratings_required = ratings_optional, ratings_required
-        self.photo_options, self.rating_options = photo_options, rating_options
-        self.is_public = is_public
-
-    def render(self, context):
-        from django.conf import settings
-        from django.utils.text import normalize_newlines
-        import base64
-        context.push()
-        if self.obj_id_lookup_var is not None:
-            try:
-                self.obj_id = self.obj_id_lookup_var.resolve(context)
-            except template.VariableDoesNotExist:
-                return ''
-            # Validate that this object ID is valid for this content-type.
-            # We only have to do this validation if obj_id_lookup_var is provided,
-            # because do_comment_form() validates hard-coded object IDs.
-            try:
-                self.content_type.get_object_for_this_type(pk=self.obj_id)
-            except ObjectDoesNotExist:
-                context['display_form'] = False
-            else:
-                context['display_form'] = True
-        else:
-            context['display_form'] = True
-        context['target'] = '%s:%s' % (self.content_type.id, self.obj_id)
-        options = []
-        for var, abbr in (('photos_required', PHOTOS_REQUIRED),
-                          ('photos_optional', PHOTOS_OPTIONAL),
-                          ('ratings_required', RATINGS_REQUIRED),
-                          ('ratings_optional', RATINGS_OPTIONAL),
-                          ('is_public', IS_PUBLIC)):
-            context[var] = getattr(self, var)
-            if getattr(self, var):
-                options.append(abbr)
-        context['options'] = ','.join(options)
-        if self.free:
-            context['hash'] = Comment.objects.get_security_hash(context['options'], '', '', context['target'])
-            default_form = loader.get_template(FREE_COMMENT_FORM)
-        else:
-            context['photo_options'] = self.photo_options
-            context['rating_options'] = normalize_newlines(base64.encodestring(self.rating_options).strip())
-            if self.rating_options:
-                context['rating_range'], context['rating_choices'] = Comment.objects.get_rating_options(self.rating_options)
-            context['hash'] = Comment.objects.get_security_hash(context['options'], context['photo_options'], context['rating_options'], context['target'])
-            context['logout_url'] = settings.LOGOUT_URL
-            default_form = loader.get_template(COMMENT_FORM)
-        output = default_form.render(context)
-        context.pop()
-        return output
-
-class CommentCountNode(template.Node):
-    def __init__(self, package, module, context_var_name, obj_id, var_name, free):
-        self.package, self.module = package, module
-        if context_var_name is not None:
-            context_var_name = template.Variable(context_var_name)
-        self.context_var_name, self.obj_id = context_var_name, obj_id
-        self.var_name, self.free = var_name, free
-
-    def render(self, context):
-        from django.conf import settings
-        manager = self.free and FreeComment.objects or Comment.objects
-        if self.context_var_name is not None:
-            self.obj_id = self.context_var_name.resolve(context)
-        comment_count = manager.filter(object_id__exact=self.obj_id,
-            content_type__app_label__exact=self.package,
-            content_type__model__exact=self.module, site__id__exact=settings.SITE_ID).count()
-        context[self.var_name] = comment_count
-        return ''
-
-class CommentListNode(template.Node):
-    def __init__(self, package, module, context_var_name, obj_id, var_name, free, ordering, extra_kwargs=None):
-        self.package, self.module = package, module
-        if context_var_name is not None:
-            context_var_name = template.Variable(context_var_name)
-        self.context_var_name, self.obj_id = context_var_name, obj_id
-        self.var_name, self.free = var_name, free
-        self.ordering = ordering
-        self.extra_kwargs = extra_kwargs or {}
-
-    def render(self, context):
-        from django.conf import settings
-        get_list_function = self.free and FreeComment.objects.filter or Comment.objects.get_list_with_karma
-        if self.context_var_name is not None:
-            try:
-                self.obj_id = self.context_var_name.resolve(context)
-            except template.VariableDoesNotExist:
-                return ''
-        kwargs = {
-            'object_id__exact': self.obj_id,
-            'content_type__app_label__exact': self.package,
-            'content_type__model__exact': self.module,
-            'site__id__exact': settings.SITE_ID,
-        }
-        kwargs.update(self.extra_kwargs)
-        comment_list = get_list_function(**kwargs).order_by(self.ordering + 'submit_date').select_related()
-        if not self.free and settings.COMMENTS_BANNED_USERS_GROUP:
-            comment_list = comment_list.extra(select={'is_hidden': 'user_id IN (SELECT user_id FROM auth_user_groups WHERE group_id = %s)' % settings.COMMENTS_BANNED_USERS_GROUP})
-
-        if not self.free:
-            if 'user' in context and context['user'].is_authenticated():
-                user_id = context['user'].id
-                context['user_can_moderate_comments'] = Comment.objects.user_is_moderator(context['user'])
-            else:
-                user_id = None
-                context['user_can_moderate_comments'] = False
-            # Only display comments by banned users to those users themselves.
-            if settings.COMMENTS_BANNED_USERS_GROUP:
-                comment_list = [c for c in comment_list if not c.is_hidden or (user_id == c.user_id)]
-
-        context[self.var_name] = comment_list
-        return ''
-
-class DoCommentForm:
-    """
-    Displays a comment form for the given params.
-
-    Syntax::
-
-        {% comment_form for [pkg].[py_module_name] [context_var_containing_obj_id] with [list of options] %}
-
-    Example usage::
-
-        {% comment_form for lcom.eventtimes event.id with is_public yes photos_optional thumbs,200,400 ratings_optional scale:1-5|first_option|second_option %}
-
-    ``[context_var_containing_obj_id]`` can be a hard-coded integer or a variable containing the ID.
-    """
-    def __init__(self, free):
-        self.free = free
-
-    def __call__(self, parser, token):
-        tokens = token.contents.split()
-        if len(tokens) < 4:
-            raise template.TemplateSyntaxError, "%r tag requires at least 3 arguments" % tokens[0]
-        if tokens[1] != 'for':
-            raise template.TemplateSyntaxError, "Second argument in %r tag must be 'for'" % tokens[0]
-        try:
-            package, module = tokens[2].split('.')
-        except ValueError: # unpack list of wrong size
-            raise template.TemplateSyntaxError, "Third argument in %r tag must be in the format 'package.module'" % tokens[0]
-        try:
-            content_type = ContentType.objects.get(app_label__exact=package, model__exact=module)
-        except ContentType.DoesNotExist:
-            raise template.TemplateSyntaxError, "%r tag has invalid content-type '%s.%s'" % (tokens[0], package, module)
-        obj_id_lookup_var, obj_id = None, None
-        if tokens[3].isdigit():
-            obj_id = tokens[3]
-            try: # ensure the object ID is valid
-                content_type.get_object_for_this_type(pk=obj_id)
-            except ObjectDoesNotExist:
-                raise template.TemplateSyntaxError, "%r tag refers to %s object with ID %s, which doesn't exist" % (tokens[0], content_type.name, obj_id)
-        else:
-            obj_id_lookup_var = tokens[3]
-        kwargs = {}
-        if len(tokens) > 4:
-            if tokens[4] != 'with':
-                raise template.TemplateSyntaxError, "Fourth argument in %r tag must be 'with'" % tokens[0]
-            for option, args in zip(tokens[5::2], tokens[6::2]):
-                option = smart_str(option)
-                if option in ('photos_optional', 'photos_required') and not self.free:
-                    # VALIDATION ##############################################
-                    option_list = args.split(',')
-                    if len(option_list) % 3 != 0:
-                        raise template.TemplateSyntaxError, "Incorrect number of comma-separated arguments to %r tag" % tokens[0]
-                    for opt in option_list[::3]:
-                        if not opt.isalnum():
-                            raise template.TemplateSyntaxError, "Invalid photo directory name in %r tag: '%s'" % (tokens[0], opt)
-                    for opt in option_list[1::3] + option_list[2::3]:
-                        if not opt.isdigit() or not (MIN_PHOTO_DIMENSION <= int(opt) <= MAX_PHOTO_DIMENSION):
-                            raise template.TemplateSyntaxError, "Invalid photo dimension in %r tag: '%s'. Only values between %s and %s are allowed." % (tokens[0], opt, MIN_PHOTO_DIMENSION, MAX_PHOTO_DIMENSION)
-                    # VALIDATION ENDS #########################################
-                    kwargs[option] = True
-                    kwargs['photo_options'] = args
-                elif option in ('ratings_optional', 'ratings_required') and not self.free:
-                    # VALIDATION ##############################################
-                    if 2 < len(args.split('|')) > 9:
-                        raise template.TemplateSyntaxError, "Incorrect number of '%s' options in %r tag. Use between 2 and 8." % (option, tokens[0])
-                    if re.match('^scale:\d+\-\d+\:$', args.split('|')[0]):
-                        raise template.TemplateSyntaxError, "Invalid 'scale' in %r tag's '%s' options" % (tokens[0], option)
-                    # VALIDATION ENDS #########################################
-                    kwargs[option] = True
-                    kwargs['rating_options'] = args
-                elif option in ('is_public'):
-                    kwargs[option] = (args == 'true')
-                else:
-                    raise template.TemplateSyntaxError, "%r tag got invalid parameter '%s'" % (tokens[0], option)
-        return CommentFormNode(content_type, obj_id_lookup_var, obj_id, self.free, **kwargs)
-
-class DoCommentCount:
-    """
-    Gets comment count for the given params and populates the template context
-    with a variable containing that value, whose name is defined by the 'as'
-    clause.
-
-    Syntax::
-
-        {% get_comment_count for [pkg].[py_module_name] [context_var_containing_obj_id] as [varname]  %}
-
-    Example usage::
-
-        {% get_comment_count for lcom.eventtimes event.id as comment_count %}
-
-    Note: ``[context_var_containing_obj_id]`` can also be a hard-coded integer, like this::
-
-        {% get_comment_count for lcom.eventtimes 23 as comment_count %}
-    """
-    def __init__(self, free):
-        self.free = free
-
-    def __call__(self, parser, token):
-        tokens = token.contents.split()
-        # Now tokens is a list like this:
-        # ['get_comment_list', 'for', 'lcom.eventtimes', 'event.id', 'as', 'comment_list']
-        if len(tokens) != 6:
-            raise template.TemplateSyntaxError, "%r tag requires 5 arguments" % tokens[0]
-        if tokens[1] != 'for':
-            raise template.TemplateSyntaxError, "Second argument in %r tag must be 'for'" % tokens[0]
-        try:
-            package, module = tokens[2].split('.')
-        except ValueError: # unpack list of wrong size
-            raise template.TemplateSyntaxError, "Third argument in %r tag must be in the format 'package.module'" % tokens[0]
-        try:
-            content_type = ContentType.objects.get(app_label__exact=package, model__exact=module)
-        except ContentType.DoesNotExist:
-            raise template.TemplateSyntaxError, "%r tag has invalid content-type '%s.%s'" % (tokens[0], package, module)
-        var_name, obj_id = None, None
-        if tokens[3].isdigit():
-            obj_id = tokens[3]
-            try: # ensure the object ID is valid
-                content_type.get_object_for_this_type(pk=obj_id)
-            except ObjectDoesNotExist:
-                raise template.TemplateSyntaxError, "%r tag refers to %s object with ID %s, which doesn't exist" % (tokens[0], content_type.name, obj_id)
-        else:
-            var_name = tokens[3]
-        if tokens[4] != 'as':
-            raise template.TemplateSyntaxError, "Fourth argument in %r must be 'as'" % tokens[0]
-        return CommentCountNode(package, module, var_name, obj_id, tokens[5], self.free)
-
-class DoGetCommentList:
-    """
-    Gets comments for the given params and populates the template context with a
-    special comment_package variable, whose name is defined by the ``as``
-    clause.
-
-    Syntax::
-
-        {% get_comment_list for [pkg].[py_module_name] [context_var_containing_obj_id] as [varname] (reversed) %}
-
-    Example usage::
-
-        {% get_comment_list for lcom.eventtimes event.id as comment_list %}
-
-    Note: ``[context_var_containing_obj_id]`` can also be a hard-coded integer, like this::
-
-        {% get_comment_list for lcom.eventtimes 23 as comment_list %}
-
-    To get a list of comments in reverse order -- that is, most recent first --
-    pass ``reversed`` as the last param::
-
-        {% get_comment_list for lcom.eventtimes event.id as comment_list reversed %}
-    """
-    def __init__(self, free):
-        self.free = free
-
-    def __call__(self, parser, token):
-        tokens = token.contents.split()
-        # Now tokens is a list like this:
-        # ['get_comment_list', 'for', 'lcom.eventtimes', 'event.id', 'as', 'comment_list']
-        if not len(tokens) in (6, 7):
-            raise template.TemplateSyntaxError, "%r tag requires 5 or 6 arguments" % tokens[0]
-        if tokens[1] != 'for':
-            raise template.TemplateSyntaxError, "Second argument in %r tag must be 'for'" % tokens[0]
-        try:
-            package, module = tokens[2].split('.')
-        except ValueError: # unpack list of wrong size
-            raise template.TemplateSyntaxError, "Third argument in %r tag must be in the format 'package.module'" % tokens[0]
-        try:
-            content_type = ContentType.objects.get(app_label__exact=package,model__exact=module)
-        except ContentType.DoesNotExist:
-            raise template.TemplateSyntaxError, "%r tag has invalid content-type '%s.%s'" % (tokens[0], package, module)
-        var_name, obj_id = None, None
-        if tokens[3].isdigit():
-            obj_id = tokens[3]
-            try: # ensure the object ID is valid
-                content_type.get_object_for_this_type(pk=obj_id)
-            except ObjectDoesNotExist:
-                raise template.TemplateSyntaxError, "%r tag refers to %s object with ID %s, which doesn't exist" % (tokens[0], content_type.name, obj_id)
-        else:
-            var_name = tokens[3]
-        if tokens[4] != 'as':
-            raise template.TemplateSyntaxError, "Fourth argument in %r must be 'as'" % tokens[0]
-        if len(tokens) == 7:
-            if tokens[6] != 'reversed':
-                raise template.TemplateSyntaxError, "Final argument in %r must be 'reversed' if given" % tokens[0]
-            ordering = "-"
-        else:
-            ordering = ""
-        return CommentListNode(package, module, var_name, obj_id, tokens[5], self.free, ordering)
-
-# registration comments
-register.tag('get_comment_list', DoGetCommentList(False))
-register.tag('comment_form', DoCommentForm(False))
-register.tag('get_comment_count', DoCommentCount(False))
-# free comments
-register.tag('get_free_comment_list', DoGetCommentList(True))
-register.tag('free_comment_form', DoCommentForm(True))
-register.tag('get_free_comment_count', DoCommentCount(True))
diff --git a/webapp/django/contrib/comments/tests.py b/webapp/django/contrib/comments/tests.py
deleted file mode 100644
index a8275de..0000000
--- a/webapp/django/contrib/comments/tests.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# coding: utf-8
-
-r"""
->>> from django.contrib.comments.models import Comment
->>> from django.contrib.auth.models import User
->>> u = User.objects.create_user('commenttestuser', 'commenttest@example.com', 'testpw')
->>> c = Comment(user=u, comment=u'\xe2')
->>> c
-<Comment: commenttestuser: â...>
->>> print c
-commenttestuser: â...
-"""
-
diff --git a/webapp/django/contrib/comments/urls/__init__.py b/webapp/django/contrib/comments/urls/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/comments/urls/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/comments/urls/comments.py b/webapp/django/contrib/comments/urls/comments.py
deleted file mode 100644
index bbb4c43..0000000
--- a/webapp/django/contrib/comments/urls/comments.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('django.contrib.comments.views',
-    (r'^post/$', 'comments.post_comment'),
-    (r'^postfree/$', 'comments.post_free_comment'),
-    (r'^posted/$', 'comments.comment_was_posted'),
-    (r'^karma/vote/(?P<comment_id>\d+)/(?P<vote>up|down)/$', 'karma.vote'),
-    (r'^flag/(?P<comment_id>\d+)/$', 'userflags.flag'),
-    (r'^flag/(?P<comment_id>\d+)/done/$', 'userflags.flag_done'),
-    (r'^delete/(?P<comment_id>\d+)/$', 'userflags.delete'),
-    (r'^delete/(?P<comment_id>\d+)/done/$', 'userflags.delete_done'),
-)
diff --git a/webapp/django/contrib/comments/views/__init__.py b/webapp/django/contrib/comments/views/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/comments/views/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/comments/views/comments.py b/webapp/django/contrib/comments/views/comments.py
deleted file mode 100644
index ba59cba..0000000
--- a/webapp/django/contrib/comments/views/comments.py
+++ /dev/null
@@ -1,393 +0,0 @@
-import base64
-import datetime
-
-from django.core import validators
-from django import oldforms
-from django.core.mail import mail_admins, mail_managers
-from django.http import Http404
-from django.core.exceptions import ObjectDoesNotExist
-from django.shortcuts import render_to_response
-from django.template import RequestContext
-from django.contrib.comments.models import Comment, FreeComment, RATINGS_REQUIRED, RATINGS_OPTIONAL, IS_PUBLIC
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.auth import authenticate
-from django.http import HttpResponseRedirect
-from django.utils.text import normalize_newlines
-from django.conf import settings
-from django.utils.translation import ungettext, ugettext as _
-from django.utils.encoding import smart_unicode
-
-COMMENTS_PER_PAGE = 20
-
-# TODO: This is a copy of the manipulator-based form that used to live in
-# contrib.auth.forms.  It should be replaced with the newforms version that
-# has now been added to contrib.auth.forms when the comments app gets updated
-# for newforms.
-
-class AuthenticationForm(oldforms.Manipulator):
-    """
-    Base class for authenticating users. Extend this to get a form that accepts
-    username/password logins.
-    """
-    def __init__(self, request=None):
-        """
-        If request is passed in, the manipulator will validate that cookies are
-        enabled. Note that the request (a HttpRequest object) must have set a
-        cookie with the key TEST_COOKIE_NAME and value TEST_COOKIE_VALUE before
-        running this validator.
-        """
-        self.request = request
-        self.fields = [
-            oldforms.TextField(field_name="username", length=15, max_length=30, is_required=True,
-                validator_list=[self.isValidUser, self.hasCookiesEnabled]),
-            oldforms.PasswordField(field_name="password", length=15, max_length=30, is_required=True),
-        ]
-        self.user_cache = None
-
-    def hasCookiesEnabled(self, field_data, all_data):
-        if self.request and not self.request.session.test_cookie_worked():
-            raise validators.ValidationError, _("Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in.")
-
-    def isValidUser(self, field_data, all_data):
-        username = field_data
-        password = all_data.get('password', None)
-        self.user_cache = authenticate(username=username, password=password)
-        if self.user_cache is None:
-            raise validators.ValidationError, _("Please enter a correct username and password. Note that both fields are case-sensitive.")
-        elif not self.user_cache.is_active:
-            raise validators.ValidationError, _("This account is inactive.")
-
-    def get_user_id(self):
-        if self.user_cache:
-            return self.user_cache.id
-        return None
-
-    def get_user(self):
-        return self.user_cache
-
-class PublicCommentManipulator(AuthenticationForm):
-    "Manipulator that handles public registered comments"
-    def __init__(self, user, ratings_required, ratings_range, num_rating_choices):
-        AuthenticationForm.__init__(self)
-        self.ratings_range, self.num_rating_choices = ratings_range, num_rating_choices
-        choices = [(c, c) for c in ratings_range]
-        def get_validator_list(rating_num):
-            if rating_num <= num_rating_choices:
-                return [validators.RequiredIfOtherFieldsGiven(['rating%d' % i for i in range(1, 9) if i != rating_num], _("This rating is required because you've entered at least one other rating."))]
-            else:
-                return []
-        self.fields.extend([
-            oldforms.LargeTextField(field_name="comment", max_length=3000, is_required=True,
-                validator_list=[self.hasNoProfanities]),
-            oldforms.RadioSelectField(field_name="rating1", choices=choices,
-                is_required=ratings_required and num_rating_choices > 0,
-                validator_list=get_validator_list(1),
-            ),
-            oldforms.RadioSelectField(field_name="rating2", choices=choices,
-                is_required=ratings_required and num_rating_choices > 1,
-                validator_list=get_validator_list(2),
-            ),
-            oldforms.RadioSelectField(field_name="rating3", choices=choices,
-                is_required=ratings_required and num_rating_choices > 2,
-                validator_list=get_validator_list(3),
-            ),
-            oldforms.RadioSelectField(field_name="rating4", choices=choices,
-                is_required=ratings_required and num_rating_choices > 3,
-                validator_list=get_validator_list(4),
-            ),
-            oldforms.RadioSelectField(field_name="rating5", choices=choices,
-                is_required=ratings_required and num_rating_choices > 4,
-                validator_list=get_validator_list(5),
-            ),
-            oldforms.RadioSelectField(field_name="rating6", choices=choices,
-                is_required=ratings_required and num_rating_choices > 5,
-                validator_list=get_validator_list(6),
-            ),
-            oldforms.RadioSelectField(field_name="rating7", choices=choices,
-                is_required=ratings_required and num_rating_choices > 6,
-                validator_list=get_validator_list(7),
-            ),
-            oldforms.RadioSelectField(field_name="rating8", choices=choices,
-                is_required=ratings_required and num_rating_choices > 7,
-                validator_list=get_validator_list(8),
-            ),
-        ])
-        if user.is_authenticated():
-            self["username"].is_required = False
-            self["username"].validator_list = []
-            self["password"].is_required = False
-            self["password"].validator_list = []
-            self.user_cache = user
-
-    def hasNoProfanities(self, field_data, all_data):
-        if settings.COMMENTS_ALLOW_PROFANITIES:
-            return
-        return validators.hasNoProfanities(field_data, all_data)
-
-    def get_comment(self, new_data):
-        "Helper function"
-        return Comment(None, self.get_user_id(), new_data["content_type_id"],
-            new_data["object_id"], new_data.get("headline", "").strip(),
-            new_data["comment"].strip(), new_data.get("rating1", None),
-            new_data.get("rating2", None), new_data.get("rating3", None),
-            new_data.get("rating4", None), new_data.get("rating5", None),
-            new_data.get("rating6", None), new_data.get("rating7", None),
-            new_data.get("rating8", None), new_data.get("rating1", None) is not None,
-            datetime.datetime.now(), new_data["is_public"], new_data["ip_address"], False, settings.SITE_ID)
-
-    def save(self, new_data):
-        today = datetime.date.today()
-        c = self.get_comment(new_data)
-        for old in Comment.objects.filter(content_type__id__exact=new_data["content_type_id"],
-            object_id__exact=new_data["object_id"], user__id__exact=self.get_user_id()):
-            # Check that this comment isn't duplicate. (Sometimes people post
-            # comments twice by mistake.) If it is, fail silently by pretending
-            # the comment was posted successfully.
-            if old.submit_date.date() == today and old.comment == c.comment \
-                and old.rating1 == c.rating1 and old.rating2 == c.rating2 \
-                and old.rating3 == c.rating3 and old.rating4 == c.rating4 \
-                and old.rating5 == c.rating5 and old.rating6 == c.rating6 \
-                and old.rating7 == c.rating7 and old.rating8 == c.rating8:
-                return old
-            # If the user is leaving a rating, invalidate all old ratings.
-            if c.rating1 is not None:
-                old.valid_rating = False
-                old.save()
-        c.save()
-        # If the commentor has posted fewer than COMMENTS_FIRST_FEW comments,
-        # send the comment to the managers.
-        if self.user_cache.comment_set.count() <= settings.COMMENTS_FIRST_FEW:
-            message = ungettext('This comment was posted by a user who has posted fewer than %(count)s comment:\n\n%(text)s',
-                'This comment was posted by a user who has posted fewer than %(count)s comments:\n\n%(text)s', settings.COMMENTS_FIRST_FEW) % \
-                {'count': settings.COMMENTS_FIRST_FEW, 'text': c.get_as_text()}
-            mail_managers("Comment posted by rookie user", message)
-        if settings.COMMENTS_SKETCHY_USERS_GROUP and settings.COMMENTS_SKETCHY_USERS_GROUP in [g.id for g in self.user_cache.groups.all()]:
-            message = _('This comment was posted by a sketchy user:\n\n%(text)s') % {'text': c.get_as_text()}
-            mail_managers("Comment posted by sketchy user (%s)" % self.user_cache.username, c.get_as_text())
-        return c
-
-class PublicFreeCommentManipulator(oldforms.Manipulator):
-    "Manipulator that handles public free (unregistered) comments"
-    def __init__(self):
-        self.fields = (
-            oldforms.TextField(field_name="person_name", max_length=50, is_required=True,
-                validator_list=[self.hasNoProfanities]),
-            oldforms.LargeTextField(field_name="comment", max_length=3000, is_required=True,
-                validator_list=[self.hasNoProfanities]),
-        )
-
-    def hasNoProfanities(self, field_data, all_data):
-        if settings.COMMENTS_ALLOW_PROFANITIES:
-            return
-        return validators.hasNoProfanities(field_data, all_data)
-
-    def get_comment(self, new_data):
-        "Helper function"
-        return FreeComment(None, new_data["content_type_id"],
-            new_data["object_id"], new_data["comment"].strip(),
-            new_data["person_name"].strip(), datetime.datetime.now(), new_data["is_public"],
-            new_data["ip_address"], False, settings.SITE_ID)
-
-    def save(self, new_data):
-        today = datetime.date.today()
-        c = self.get_comment(new_data)
-        # Check that this comment isn't duplicate. (Sometimes people post
-        # comments twice by mistake.) If it is, fail silently by pretending
-        # the comment was posted successfully.
-        for old_comment in FreeComment.objects.filter(content_type__id__exact=new_data["content_type_id"],
-            object_id__exact=new_data["object_id"], person_name__exact=new_data["person_name"],
-            submit_date__year=today.year, submit_date__month=today.month,
-            submit_date__day=today.day):
-            if old_comment.comment == c.comment:
-                return old_comment
-        c.save()
-        return c
-
-def post_comment(request, extra_context=None, context_processors=None):
-    """
-    Post a comment
-
-    Redirects to the `comments.comments.comment_was_posted` view upon success.
-
-    Templates: `comment_preview`
-    Context:
-        comment
-            the comment being posted
-        comment_form
-            the comment form
-        options
-            comment options
-        target
-            comment target
-        hash
-            security hash (must be included in a posted form to succesfully
-            post a comment).
-        rating_options
-            comment ratings options
-        ratings_optional
-            are ratings optional?
-        ratings_required
-            are ratings required?
-        rating_range
-            range of ratings
-        rating_choices
-            choice of ratings
-    """
-    if extra_context is None: extra_context = {}
-    if not request.POST:
-        raise Http404, _("Only POSTs are allowed")
-    try:
-        options, target, security_hash = request.POST['options'], request.POST['target'], request.POST['gonzo']
-    except KeyError:
-        raise Http404, _("One or more of the required fields wasn't submitted")
-    photo_options = request.POST.get('photo_options', '')
-    rating_options = normalize_newlines(request.POST.get('rating_options', ''))
-    if Comment.objects.get_security_hash(options, photo_options, rating_options, target) != security_hash:
-        raise Http404, _("Somebody tampered with the comment form (security violation)")
-    # Now we can be assured the data is valid.
-    if rating_options:
-        rating_range, rating_choices = Comment.objects.get_rating_options(base64.decodestring(rating_options))
-    else:
-        rating_range, rating_choices = [], []
-    content_type_id, object_id = target.split(':') # target is something like '52:5157'
-    try:
-        obj = ContentType.objects.get(pk=content_type_id).get_object_for_this_type(pk=object_id)
-    except ObjectDoesNotExist:
-        raise Http404, _("The comment form had an invalid 'target' parameter -- the object ID was invalid")
-    option_list = options.split(',') # options is something like 'pa,ra'
-    new_data = request.POST.copy()
-    new_data['content_type_id'] = content_type_id
-    new_data['object_id'] = object_id
-    new_data['ip_address'] = request.META.get('REMOTE_ADDR')
-    new_data['is_public'] = IS_PUBLIC in option_list
-    manipulator = PublicCommentManipulator(request.user,
-        ratings_required=RATINGS_REQUIRED in option_list,
-        ratings_range=rating_range,
-        num_rating_choices=len(rating_choices))
-    errors = manipulator.get_validation_errors(new_data)
-    # If user gave correct username/password and wasn't already logged in, log them in
-    # so they don't have to enter a username/password again.
-    if manipulator.get_user() and not manipulator.get_user().is_authenticated() and 'password' in new_data and manipulator.get_user().check_password(new_data['password']):
-        from django.contrib.auth import login
-        login(request, manipulator.get_user())
-    if errors or 'preview' in request.POST:
-        class CommentFormWrapper(oldforms.FormWrapper):
-            def __init__(self, manipulator, new_data, errors, rating_choices):
-                oldforms.FormWrapper.__init__(self, manipulator, new_data, errors)
-                self.rating_choices = rating_choices
-            def ratings(self):
-                field_list = [self['rating%d' % (i+1)] for i in range(len(rating_choices))]
-                for i, f in enumerate(field_list):
-                    f.choice = rating_choices[i]
-                return field_list
-        comment = errors and '' or manipulator.get_comment(new_data)
-        comment_form = CommentFormWrapper(manipulator, new_data, errors, rating_choices)
-        return render_to_response('comments/preview.html', {
-            'comment': comment,
-            'comment_form': comment_form,
-            'options': options,
-            'target': target,
-            'hash': security_hash,
-            'rating_options': rating_options,
-            'ratings_optional': RATINGS_OPTIONAL in option_list,
-            'ratings_required': RATINGS_REQUIRED in option_list,
-            'rating_range': rating_range,
-            'rating_choices': rating_choices,
-        }, context_instance=RequestContext(request, extra_context, context_processors))
-    elif 'post' in request.POST:
-        # If the IP is banned, mail the admins, do NOT save the comment, and
-        # serve up the "Thanks for posting" page as if the comment WAS posted.
-        if request.META['REMOTE_ADDR'] in settings.BANNED_IPS:
-            mail_admins("Banned IP attempted to post comment", smart_unicode(request.POST) + "\n\n" + str(request.META))
-        else:
-            manipulator.do_html2python(new_data)
-            comment = manipulator.save(new_data)
-        return HttpResponseRedirect("../posted/?c=%s:%s" % (content_type_id, object_id))
-    else:
-        raise Http404, _("The comment form didn't provide either 'preview' or 'post'")
-
-def post_free_comment(request, extra_context=None, context_processors=None):
-    """
-    Post a free comment (not requiring a log in)
-
-    Redirects to `comments.comments.comment_was_posted` view on success.
-
-    Templates: `comment_free_preview`
-    Context:
-        comment
-            comment being posted
-        comment_form
-            comment form object
-        options
-            comment options
-        target
-            comment target
-        hash
-            security hash (must be included in a posted form to succesfully
-            post a comment).
-    """
-    if extra_context is None: extra_context = {}
-    if not request.POST:
-        raise Http404, _("Only POSTs are allowed")
-    try:
-        options, target, security_hash = request.POST['options'], request.POST['target'], request.POST['gonzo']
-    except KeyError:
-        raise Http404, _("One or more of the required fields wasn't submitted")
-    if Comment.objects.get_security_hash(options, '', '', target) != security_hash:
-        raise Http404, _("Somebody tampered with the comment form (security violation)")
-    content_type_id, object_id = target.split(':') # target is something like '52:5157'
-    content_type = ContentType.objects.get(pk=content_type_id)
-    try:
-        obj = content_type.get_object_for_this_type(pk=object_id)
-    except ObjectDoesNotExist:
-        raise Http404, _("The comment form had an invalid 'target' parameter -- the object ID was invalid")
-    option_list = options.split(',')
-    new_data = request.POST.copy()
-    new_data['content_type_id'] = content_type_id
-    new_data['object_id'] = object_id
-    new_data['ip_address'] = request.META['REMOTE_ADDR']
-    new_data['is_public'] = IS_PUBLIC in option_list
-    manipulator = PublicFreeCommentManipulator()
-    errors = manipulator.get_validation_errors(new_data)
-    if errors or 'preview' in request.POST:
-        comment = errors and '' or manipulator.get_comment(new_data)
-        return render_to_response('comments/free_preview.html', {
-            'comment': comment,
-            'comment_form': oldforms.FormWrapper(manipulator, new_data, errors),
-            'options': options,
-            'target': target,
-            'hash': security_hash,
-        }, context_instance=RequestContext(request, extra_context, context_processors))
-    elif 'post' in request.POST:
-        # If the IP is banned, mail the admins, do NOT save the comment, and
-        # serve up the "Thanks for posting" page as if the comment WAS posted.
-        if request.META['REMOTE_ADDR'] in settings.BANNED_IPS:
-            from django.core.mail import mail_admins
-            mail_admins("Practical joker", smart_unicode(request.POST) + "\n\n" + str(request.META))
-        else:
-            manipulator.do_html2python(new_data)
-            comment = manipulator.save(new_data)
-        return HttpResponseRedirect("../posted/?c=%s:%s" % (content_type_id, object_id))
-    else:
-        raise Http404, _("The comment form didn't provide either 'preview' or 'post'")
-
-def comment_was_posted(request, extra_context=None, context_processors=None):
-    """
-    Display "comment was posted" success page
-
-    Templates: `comment_posted`
-    Context:
-        object
-            The object the comment was posted on
-    """
-    if extra_context is None: extra_context = {}
-    obj = None
-    if 'c' in request.GET:
-        content_type_id, object_id = request.GET['c'].split(':')
-        try:
-            content_type = ContentType.objects.get(pk=content_type_id)
-            obj = content_type.get_object_for_this_type(pk=object_id)
-        except ObjectDoesNotExist:
-            pass
-    return render_to_response('comments/posted.html', {'object': obj},
-        context_instance=RequestContext(request, extra_context, context_processors))
diff --git a/webapp/django/contrib/comments/views/karma.py b/webapp/django/contrib/comments/views/karma.py
deleted file mode 100644
index 7c0e284..0000000
--- a/webapp/django/contrib/comments/views/karma.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from django.http import Http404
-from django.shortcuts import render_to_response
-from django.template import RequestContext
-from django.contrib.comments.models import Comment, KarmaScore
-from django.utils.translation import ugettext as _
-
-def vote(request, comment_id, vote, extra_context=None, context_processors=None):
-    """
-    Rate a comment (+1 or -1)
-
-    Templates: `karma_vote_accepted`
-    Context:
-        comment
-            `comments.comments` object being rated
-    """
-    if extra_context is None: extra_context = {}
-    rating = {'up': 1, 'down': -1}.get(vote, False)
-    if not rating:
-        raise Http404, "Invalid vote"
-    if not request.user.is_authenticated():
-        raise Http404, _("Anonymous users cannot vote")
-    try:
-        comment = Comment.objects.get(pk=comment_id)
-    except Comment.DoesNotExist:
-        raise Http404, _("Invalid comment ID")
-    if comment.user.id == request.user.id:
-        raise Http404, _("No voting for yourself")
-    KarmaScore.objects.vote(request.user.id, comment_id, rating)
-    # Reload comment to ensure we have up to date karma count
-    comment = Comment.objects.get(pk=comment_id)
-    return render_to_response('comments/karma_vote_accepted.html', {'comment': comment},
-        context_instance=RequestContext(request, extra_context, context_processors))
diff --git a/webapp/django/contrib/comments/views/userflags.py b/webapp/django/contrib/comments/views/userflags.py
deleted file mode 100644
index 91518dc..0000000
--- a/webapp/django/contrib/comments/views/userflags.py
+++ /dev/null
@@ -1,62 +0,0 @@
-from django.shortcuts import render_to_response, get_object_or_404
-from django.template import RequestContext
-from django.http import Http404
-from django.contrib.comments.models import Comment, ModeratorDeletion, UserFlag
-from django.contrib.auth.decorators import login_required
-from django.http import HttpResponseRedirect
-from django.conf import settings
-
-def flag(request, comment_id, extra_context=None, context_processors=None):
-    """
-    Flags a comment. Confirmation on GET, action on POST.
-
-    Templates: `comments/flag_verify`, `comments/flag_done`
-    Context:
-        comment
-            the flagged `comments.comments` object
-    """
-    if extra_context is None: extra_context = {}
-    comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID)
-    if request.POST:
-        UserFlag.objects.flag(comment, request.user)
-        return HttpResponseRedirect('%sdone/' % request.path)
-    return render_to_response('comments/flag_verify.html', {'comment': comment},
-        context_instance=RequestContext(request, extra_context, context_processors))
-flag = login_required(flag)
-
-def flag_done(request, comment_id, extra_context=None, context_processors=None):
-    if extra_context is None: extra_context = {}
-    comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID)
-    return render_to_response('comments/flag_done.html', {'comment': comment},
-        context_instance=RequestContext(request, extra_context, context_processors))
-
-def delete(request, comment_id, extra_context=None, context_processors=None):
-    """
-    Deletes a comment. Confirmation on GET, action on POST.
-
-    Templates: `comments/delete_verify`, `comments/delete_done`
-    Context:
-        comment
-            the flagged `comments.comments` object
-    """
-    if extra_context is None: extra_context = {}
-    comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID)
-    if not Comment.objects.user_is_moderator(request.user):
-        raise Http404
-    if request.POST:
-        # If the comment has already been removed, silently fail.
-        if not comment.is_removed:
-            comment.is_removed = True
-            comment.save()
-            m = ModeratorDeletion(None, request.user.id, comment.id, None)
-            m.save()
-        return HttpResponseRedirect('%sdone/' % request.path)
-    return render_to_response('comments/delete_verify.html', {'comment': comment},
-        context_instance=RequestContext(request, extra_context, context_processors))
-delete = login_required(delete)
-
-def delete_done(request, comment_id, extra_context=None, context_processors=None):
-    if extra_context is None: extra_context = {}
-    comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID)
-    return render_to_response('comments/delete_done.html', {'comment': comment},
-        context_instance=RequestContext(request, extra_context, context_processors))
diff --git a/webapp/django/contrib/contenttypes/__init__.py b/webapp/django/contrib/contenttypes/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/contenttypes/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/contenttypes/generic.py b/webapp/django/contrib/contenttypes/generic.py
deleted file mode 100644
index 9c85af2..0000000
--- a/webapp/django/contrib/contenttypes/generic.py
+++ /dev/null
@@ -1,388 +0,0 @@
-"""
-Classes allowing "generic" relations through ContentType and object-id fields.
-"""
-
-from django import oldforms
-from django.core.exceptions import ObjectDoesNotExist
-from django.db import connection
-from django.db.models import signals
-from django.db import models
-from django.db.models.fields.related import RelatedField, Field, ManyToManyRel
-from django.db.models.loading import get_model
-from django.utils.functional import curry
-
-from django.forms import ModelForm
-from django.forms.models import BaseModelFormSet, modelformset_factory, save_instance
-from django.contrib.admin.options import InlineModelAdmin, flatten_fieldsets
-
-class GenericForeignKey(object):
-    """
-    Provides a generic relation to any object through content-type/object-id
-    fields.
-    """
-
-    def __init__(self, ct_field="content_type", fk_field="object_id"):
-        self.ct_field = ct_field
-        self.fk_field = fk_field
-
-    def contribute_to_class(self, cls, name):
-        # Make sure the fields exist (these raise FieldDoesNotExist,
-        # which is a fine error to raise here)
-        self.name = name
-        self.model = cls
-        self.cache_attr = "_%s_cache" % name
-
-        # For some reason I don't totally understand, using weakrefs here doesn't work.
-        signals.pre_init.connect(self.instance_pre_init, sender=cls, weak=False)
-
-        # Connect myself as the descriptor for this field
-        setattr(cls, name, self)
-
-    def instance_pre_init(self, signal, sender, args, kwargs, **_kwargs):
-        """
-        Handles initializing an object with the generic FK instaed of
-        content-type/object-id fields.
-        """
-        if self.name in kwargs:
-            value = kwargs.pop(self.name)
-            kwargs[self.ct_field] = self.get_content_type(obj=value)
-            kwargs[self.fk_field] = value._get_pk_val()
-
-    def get_content_type(self, obj=None, id=None):
-        # Convenience function using get_model avoids a circular import when
-        # using this model
-        ContentType = get_model("contenttypes", "contenttype")
-        if obj:
-            return ContentType.objects.get_for_model(obj)
-        elif id:
-            return ContentType.objects.get_for_id(id)
-        else:
-            # This should never happen. I love comments like this, don't you?
-            raise Exception("Impossible arguments to GFK.get_content_type!")
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            raise AttributeError, u"%s must be accessed via instance" % self.name
-
-        try:
-            return getattr(instance, self.cache_attr)
-        except AttributeError:
-            rel_obj = None
-
-            # Make sure to use ContentType.objects.get_for_id() to ensure that
-            # lookups are cached (see ticket #5570). This takes more code than
-            # the naive ``getattr(instance, self.ct_field)``, but has better
-            # performance when dealing with GFKs in loops and such.
-            f = self.model._meta.get_field(self.ct_field)
-            ct_id = getattr(instance, f.get_attname(), None)
-            if ct_id:
-                ct = self.get_content_type(id=ct_id)
-                try:
-                    rel_obj = ct.get_object_for_this_type(pk=getattr(instance, self.fk_field))
-                except ObjectDoesNotExist:
-                    pass
-            setattr(instance, self.cache_attr, rel_obj)
-            return rel_obj
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise AttributeError, u"%s must be accessed via instance" % self.related.opts.object_name
-
-        ct = None
-        fk = None
-        if value is not None:
-            ct = self.get_content_type(obj=value)
-            fk = value._get_pk_val()
-
-        setattr(instance, self.ct_field, ct)
-        setattr(instance, self.fk_field, fk)
-        setattr(instance, self.cache_attr, value)
-
-class GenericRelation(RelatedField, Field):
-    """Provides an accessor to generic related objects (e.g. comments)"""
-
-    def __init__(self, to, **kwargs):
-        kwargs['verbose_name'] = kwargs.get('verbose_name', None)
-        kwargs['rel'] = GenericRel(to,
-                            related_name=kwargs.pop('related_name', None),
-                            limit_choices_to=kwargs.pop('limit_choices_to', None),
-                            symmetrical=kwargs.pop('symmetrical', True))
-
-        # By its very nature, a GenericRelation doesn't create a table.
-        self.creates_table = False
-
-        # Override content-type/object-id field names on the related class
-        self.object_id_field_name = kwargs.pop("object_id_field", "object_id")
-        self.content_type_field_name = kwargs.pop("content_type_field", "content_type")
-
-        kwargs['blank'] = True
-        kwargs['editable'] = False
-        kwargs['serialize'] = False
-        Field.__init__(self, **kwargs)
-
-    def get_manipulator_field_objs(self):
-        choices = self.get_choices_default()
-        return [curry(oldforms.SelectMultipleField, size=min(max(len(choices), 5), 15), choices=choices)]
-
-    def get_choices_default(self):
-        return Field.get_choices(self, include_blank=False)
-
-    def flatten_data(self, follow, obj = None):
-        new_data = {}
-        if obj:
-            instance_ids = [instance._get_pk_val() for instance in getattr(obj, self.name).all()]
-            new_data[self.name] = instance_ids
-        return new_data
-
-    def m2m_db_table(self):
-        return self.rel.to._meta.db_table
-
-    def m2m_column_name(self):
-        return self.object_id_field_name
-
-    def m2m_reverse_name(self):
-        return self.model._meta.pk.column
-
-    def contribute_to_class(self, cls, name):
-        super(GenericRelation, self).contribute_to_class(cls, name)
-
-        # Save a reference to which model this class is on for future use
-        self.model = cls
-
-        # Add the descriptor for the m2m relation
-        setattr(cls, self.name, ReverseGenericRelatedObjectsDescriptor(self))
-
-    def contribute_to_related_class(self, cls, related):
-        pass
-
-    def set_attributes_from_rel(self):
-        pass
-
-    def get_internal_type(self):
-        return "ManyToManyField"
-
-    def db_type(self):
-        # Since we're simulating a ManyToManyField, in effect, best return the
-        # same db_type as well.
-        return None
-
-class ReverseGenericRelatedObjectsDescriptor(object):
-    """
-    This class provides the functionality that makes the related-object
-    managers available as attributes on a model class, for fields that have
-    multiple "remote" values and have a GenericRelation defined in their model
-    (rather than having another model pointed *at* them). In the example
-    "article.publications", the publications attribute is a
-    ReverseGenericRelatedObjectsDescriptor instance.
-    """
-    def __init__(self, field):
-        self.field = field
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        # This import is done here to avoid circular import importing this module
-        from django.contrib.contenttypes.models import ContentType
-
-        # Dynamically create a class that subclasses the related model's
-        # default manager.
-        rel_model = self.field.rel.to
-        superclass = rel_model._default_manager.__class__
-        RelatedManager = create_generic_related_manager(superclass)
-
-        qn = connection.ops.quote_name
-
-        manager = RelatedManager(
-            model = rel_model,
-            instance = instance,
-            symmetrical = (self.field.rel.symmetrical and instance.__class__ == rel_model),
-            join_table = qn(self.field.m2m_db_table()),
-            source_col_name = qn(self.field.m2m_column_name()),
-            target_col_name = qn(self.field.m2m_reverse_name()),
-            content_type = ContentType.objects.get_for_model(self.field.model),
-            content_type_field_name = self.field.content_type_field_name,
-            object_id_field_name = self.field.object_id_field_name
-        )
-
-        return manager
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        manager = self.__get__(instance)
-        manager.clear()
-        for obj in value:
-            manager.add(obj)
-
-def create_generic_related_manager(superclass):
-    """
-    Factory function for a manager that subclasses 'superclass' (which is a
-    Manager) and adds behavior for generic related objects.
-    """
-
-    class GenericRelatedObjectManager(superclass):
-        def __init__(self, model=None, core_filters=None, instance=None, symmetrical=None,
-                     join_table=None, source_col_name=None, target_col_name=None, content_type=None,
-                     content_type_field_name=None, object_id_field_name=None):
-
-            super(GenericRelatedObjectManager, self).__init__()
-            self.core_filters = core_filters or {}
-            self.model = model
-            self.content_type = content_type
-            self.symmetrical = symmetrical
-            self.instance = instance
-            self.join_table = join_table
-            self.join_table = model._meta.db_table
-            self.source_col_name = source_col_name
-            self.target_col_name = target_col_name
-            self.content_type_field_name = content_type_field_name
-            self.object_id_field_name = object_id_field_name
-            self.pk_val = self.instance._get_pk_val()
-
-        def get_query_set(self):
-            query = {
-                '%s__pk' % self.content_type_field_name : self.content_type.id,
-                '%s__exact' % self.object_id_field_name : self.pk_val,
-            }
-            return superclass.get_query_set(self).filter(**query)
-
-        def add(self, *objs):
-            for obj in objs:
-                setattr(obj, self.content_type_field_name, self.content_type)
-                setattr(obj, self.object_id_field_name, self.pk_val)
-                obj.save()
-        add.alters_data = True
-
-        def remove(self, *objs):
-            for obj in objs:
-                obj.delete()
-        remove.alters_data = True
-
-        def clear(self):
-            for obj in self.all():
-                obj.delete()
-        clear.alters_data = True
-
-        def create(self, **kwargs):
-            kwargs[self.content_type_field_name] = self.content_type
-            kwargs[self.object_id_field_name] = self.pk_val
-            obj = self.model(**kwargs)
-            obj.save()
-            return obj
-        create.alters_data = True
-
-    return GenericRelatedObjectManager
-
-class GenericRel(ManyToManyRel):
-    def __init__(self, to, related_name=None, limit_choices_to=None, symmetrical=True):
-        self.to = to
-        self.related_name = related_name
-        self.limit_choices_to = limit_choices_to or {}
-        self.edit_inline = False
-        self.symmetrical = symmetrical
-        self.multiple = True
-
-class BaseGenericInlineFormSet(BaseModelFormSet):
-    """
-    A formset for generic inline objects to a parent.
-    """
-    ct_field_name = "content_type"
-    ct_fk_field_name = "object_id"
-    
-    def __init__(self, data=None, files=None, instance=None, save_as_new=None):
-        opts = self.model._meta
-        self.instance = instance
-        self.rel_name = '-'.join((
-            opts.app_label, opts.object_name.lower(),
-            self.ct_field.name, self.ct_fk_field.name,
-        ))
-        super(BaseGenericInlineFormSet, self).__init__(
-            queryset=self.get_queryset(), data=data, files=files,
-            prefix=self.rel_name
-        )
-
-    def get_queryset(self):
-        # Avoid a circular import.
-        from django.contrib.contenttypes.models import ContentType
-        if self.instance is None:
-            return self.model._default_manager.empty()
-        return self.model._default_manager.filter(**{
-            self.ct_field.name: ContentType.objects.get_for_model(self.instance),
-            self.ct_fk_field.name: self.instance.pk,
-        })
-
-    def save_new(self, form, commit=True):
-        # Avoid a circular import.
-        from django.contrib.contenttypes.models import ContentType
-        kwargs = {
-            self.ct_field.get_attname(): ContentType.objects.get_for_model(self.instance).pk,
-            self.ct_fk_field.get_attname(): self.instance.pk,
-        }
-        new_obj = self.model(**kwargs)
-        return save_instance(form, new_obj, commit=commit)
-
-def generic_inlineformset_factory(model, form=ModelForm,
-                                  formset=BaseGenericInlineFormSet,
-                                  ct_field="content_type", fk_field="object_id",
-                                  fields=None, exclude=None,
-                                  extra=3, can_order=False, can_delete=True,
-                                  max_num=0,
-                                  formfield_callback=lambda f: f.formfield()):
-    """
-    Returns an ``GenericInlineFormSet`` for the given kwargs.
-
-    You must provide ``ct_field`` and ``object_id`` if they different from the
-    defaults ``content_type`` and ``object_id`` respectively.
-    """
-    opts = model._meta
-    # Avoid a circular import.
-    from django.contrib.contenttypes.models import ContentType
-    # if there is no field called `ct_field` let the exception propagate
-    ct_field = opts.get_field(ct_field)
-    if not isinstance(ct_field, models.ForeignKey) or ct_field.rel.to != ContentType:
-        raise Exception("fk_name '%s' is not a ForeignKey to ContentType" % ct_field)
-    fk_field = opts.get_field(fk_field) # let the exception propagate
-    if exclude is not None:
-        exclude.extend([ct_field.name, fk_field.name])
-    else:
-        exclude = [ct_field.name, fk_field.name]
-    FormSet = modelformset_factory(model, form=form,
-                                   formfield_callback=formfield_callback,
-                                   formset=formset,
-                                   extra=extra, can_delete=can_delete, can_order=can_order,
-                                   fields=fields, exclude=exclude, max_num=max_num)
-    FormSet.ct_field = ct_field
-    FormSet.ct_fk_field = fk_field
-    return FormSet
-
-class GenericInlineModelAdmin(InlineModelAdmin):
-    ct_field = "content_type"
-    ct_fk_field = "object_id"
-    formset = BaseGenericInlineFormSet
-
-    def get_formset(self, request, obj=None):
-        if self.declared_fieldsets:
-            fields = flatten_fieldsets(self.declared_fieldsets)
-        else:
-            fields = None
-        defaults = {
-            "ct_field": self.ct_field,
-            "fk_field": self.ct_fk_field,
-            "form": self.form,
-            "formfield_callback": self.formfield_for_dbfield,
-            "formset": self.formset,
-            "extra": self.extra,
-            "can_delete": True,
-            "can_order": False,
-            "fields": fields,
-        }
-        return generic_inlineformset_factory(self.model, **defaults)
-
-class GenericStackedInline(GenericInlineModelAdmin):
-    template = 'admin/edit_inline/stacked.html'
-
-class GenericTabularInline(GenericInlineModelAdmin):
-    template = 'admin/edit_inline/tabular.html'
-
diff --git a/webapp/django/contrib/contenttypes/management.py b/webapp/django/contrib/contenttypes/management.py
deleted file mode 100644
index 736e213..0000000
--- a/webapp/django/contrib/contenttypes/management.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from django.contrib.contenttypes.models import ContentType
-from django.db.models import get_apps, get_models, signals
-from django.utils.encoding import smart_unicode
-
-def update_contenttypes(app, created_models, verbosity=2, **kwargs):
-    """
-    Creates content types for models in the given app, removing any model
-    entries that no longer have a matching model class.
-    """
-    ContentType.objects.clear_cache()
-    content_types = list(ContentType.objects.filter(app_label=app.__name__.split('.')[-2]))
-    app_models = get_models(app)
-    if not app_models:
-        return
-    for klass in app_models:
-        opts = klass._meta
-        try:
-            ct = ContentType.objects.get(app_label=opts.app_label,
-                                         model=opts.object_name.lower())
-            content_types.remove(ct)
-        except ContentType.DoesNotExist:
-            ct = ContentType(name=smart_unicode(opts.verbose_name_raw),
-                app_label=opts.app_label, model=opts.object_name.lower())
-            ct.save()
-            if verbosity >= 2:
-                print "Adding content type '%s | %s'" % (ct.app_label, ct.model)
-    # The presence of any remaining content types means the supplied app has an
-    # undefined model and can safely be removed, which cascades to also remove
-    # related permissions.
-    for ct in content_types:
-        if verbosity >= 2:
-            print "Deleting stale content type '%s | %s'" % (ct.app_label, ct.model)
-        ct.delete()
-
-def update_all_contenttypes(verbosity=2):
-    for app in get_apps():
-        update_contenttypes(app, None, verbosity)
-
-signals.post_syncdb.connect(update_contenttypes)
-
-if __name__ == "__main__":
-    update_all_contenttypes()
diff --git a/webapp/django/contrib/contenttypes/models.py b/webapp/django/contrib/contenttypes/models.py
deleted file mode 100644
index 4df1edc..0000000
--- a/webapp/django/contrib/contenttypes/models.py
+++ /dev/null
@@ -1,92 +0,0 @@
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode
-
-class ContentTypeManager(models.Manager):
-
-    # Cache to avoid re-looking up ContentType objects all over the place.
-    # This cache is shared by all the get_for_* methods.
-    _cache = {}
-    
-    def get_for_model(self, model):
-        """
-        Returns the ContentType object for a given model, creating the
-        ContentType if necessary. Lookups are cached so that subsequent lookups
-        for the same model don't hit the database.
-        """
-        opts = model._meta
-        key = (opts.app_label, opts.object_name.lower())
-        try:
-            ct = self.__class__._cache[key]
-        except KeyError:
-            # Load or create the ContentType entry. The smart_unicode() is 
-            # needed around opts.verbose_name_raw because name_raw might be a
-            # django.utils.functional.__proxy__ object.
-            ct, created = self.get_or_create(
-                app_label = opts.app_label,
-                model = opts.object_name.lower(), 
-                defaults = {'name': smart_unicode(opts.verbose_name_raw)},
-            )
-            self._add_to_cache(ct)
-            
-        return ct
-        
-    def get_for_id(self, id):
-        """
-        Lookup a ContentType by ID. Uses the same shared cache as get_for_model
-        (though ContentTypes are obviously not created on-the-fly by get_by_id).
-        """
-        try:
-            ct = self.__class__._cache[id]
-        except KeyError:
-            # This could raise a DoesNotExist; that's correct behavior and will
-            # make sure that only correct ctypes get stored in the cache dict.
-            ct = self.get(pk=id)
-            self._add_to_cache(ct)
-        return ct
-            
-    def clear_cache(self):
-        """
-        Clear out the content-type cache. This needs to happen during database
-        flushes to prevent caching of "stale" content type IDs (see
-        django.contrib.contenttypes.management.update_contenttypes for where
-        this gets called).
-        """
-        self.__class__._cache.clear()
-        
-    def _add_to_cache(self, ct):
-        """Insert a ContentType into the cache."""
-        model = ct.model_class()
-        key = (model._meta.app_label, model._meta.object_name.lower())
-        self.__class__._cache[key] = ct
-        self.__class__._cache[ct.id] = ct
-
-class ContentType(models.Model):
-    name = models.CharField(max_length=100)
-    app_label = models.CharField(max_length=100)
-    model = models.CharField(_('python model class name'), max_length=100)
-    objects = ContentTypeManager()
-    
-    class Meta:
-        verbose_name = _('content type')
-        verbose_name_plural = _('content types')
-        db_table = 'django_content_type'
-        ordering = ('name',)
-        unique_together = (('app_label', 'model'),)
-
-    def __unicode__(self):
-        return self.name
-
-    def model_class(self):
-        "Returns the Python model class for this type of content."
-        from django.db import models
-        return models.get_model(self.app_label, self.model)
-
-    def get_object_for_this_type(self, **kwargs):
-        """
-        Returns an object of this type for the keyword arguments given.
-        Basically, this is a proxy around this object_type's get_object() model
-        method. The ObjectNotExist exception, if thrown, will not be caught,
-        so code that calls this method should catch it.
-        """
-        return self.model_class()._default_manager.get(**kwargs)
diff --git a/webapp/django/contrib/contenttypes/tests.py b/webapp/django/contrib/contenttypes/tests.py
deleted file mode 100644
index 148edfc..0000000
--- a/webapp/django/contrib/contenttypes/tests.py
+++ /dev/null
@@ -1,47 +0,0 @@
-"""
-Make sure that the content type cache (see ContentTypeManager) works correctly.
-Lookups for a particular content type -- by model or by ID -- should hit the
-database only on the first lookup.
-
-First, let's make sure we're dealing with a blank slate (and that DEBUG is on so
-that queries get logged)::
-
-    >>> from django.conf import settings
-    >>> settings.DEBUG = True
-
-    >>> from django.contrib.contenttypes.models import ContentType
-    >>> ContentType.objects.clear_cache()
-
-    >>> from django import db
-    >>> db.reset_queries()
-    
-At this point, a lookup for a ContentType should hit the DB::
-
-    >>> ContentType.objects.get_for_model(ContentType)
-    <ContentType: content type>
-    
-    >>> len(db.connection.queries)
-    1
-
-A second hit, though, won't hit the DB, nor will a lookup by ID::
-
-    >>> ct = ContentType.objects.get_for_model(ContentType)
-    >>> len(db.connection.queries)
-    1
-    >>> ContentType.objects.get_for_id(ct.id)
-    <ContentType: content type>
-    >>> len(db.connection.queries)
-    1
-
-Once we clear the cache, another lookup will again hit the DB::
-
-    >>> ContentType.objects.clear_cache()
-    >>> ContentType.objects.get_for_model(ContentType)
-    <ContentType: content type>
-    >>> len(db.connection.queries)
-    2
-
-Don't forget to reset DEBUG!
-
-    >>> settings.DEBUG = False
-"""
\ No newline at end of file
diff --git a/webapp/django/contrib/csrf/__init__.py b/webapp/django/contrib/csrf/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/csrf/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/csrf/middleware.py b/webapp/django/contrib/csrf/middleware.py
deleted file mode 100644
index 24c1511..0000000
--- a/webapp/django/contrib/csrf/middleware.py
+++ /dev/null
@@ -1,94 +0,0 @@
-"""
-Cross Site Request Forgery Middleware.
-
-This module provides a middleware that implements protection
-against request forgeries from other sites.
-"""
-
-import re
-import itertools
-
-from django.conf import settings
-from django.http import HttpResponseForbidden
-from django.utils.hashcompat import md5_constructor
-from django.utils.safestring import mark_safe
-
-_ERROR_MSG = mark_safe('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><body><h1>403 Forbidden</h1><p>Cross Site Request Forgery detected. Request aborted.</p></body></html>')
-
-_POST_FORM_RE = \
-    re.compile(r'(<form\W[^>]*\bmethod=(\'|"|)POST(\'|"|)\b[^>]*>)', re.IGNORECASE)
-
-_HTML_TYPES = ('text/html', 'application/xhtml+xml')
-
-def _make_token(session_id):
-    return md5_constructor(settings.SECRET_KEY + session_id).hexdigest()
-
-class CsrfMiddleware(object):
-    """Django middleware that adds protection against Cross Site
-    Request Forgeries by adding hidden form fields to POST forms and
-    checking requests for the correct value.
-
-    In the list of middlewares, SessionMiddleware is required, and must come
-    after this middleware.  CsrfMiddleWare must come after compression
-    middleware.
-
-    If a session ID cookie is present, it is hashed with the SECRET_KEY
-    setting to create an authentication token.  This token is added to all
-    outgoing POST forms and is expected on all incoming POST requests that
-    have a session ID cookie.
-
-    If you are setting cookies directly, instead of using Django's session
-    framework, this middleware will not work.
-    """
-
-    def process_request(self, request):
-        if request.method == 'POST':
-            try:
-                session_id = request.COOKIES[settings.SESSION_COOKIE_NAME]
-            except KeyError:
-                # No session, no check required
-                return None
-
-            csrf_token = _make_token(session_id)
-            # check incoming token
-            try:
-                request_csrf_token = request.POST['csrfmiddlewaretoken']
-            except KeyError:
-                return HttpResponseForbidden(_ERROR_MSG)
-
-            if request_csrf_token != csrf_token:
-                return HttpResponseForbidden(_ERROR_MSG)
-
-        return None
-
-    def process_response(self, request, response):
-        csrf_token = None
-        try:
-            cookie = response.cookies[settings.SESSION_COOKIE_NAME]
-            csrf_token = _make_token(cookie.value)
-        except KeyError:
-            # No outgoing cookie to set session, but
-            # a session might already exist.
-            try:
-                session_id = request.COOKIES[settings.SESSION_COOKIE_NAME]
-                csrf_token = _make_token(session_id)
-            except KeyError:
-                # no incoming or outgoing cookie
-                pass
-
-        if csrf_token is not None and \
-                response['Content-Type'].split(';')[0] in _HTML_TYPES:
-
-            # ensure we don't add the 'id' attribute twice (HTML validity)
-            idattributes = itertools.chain(("id='csrfmiddlewaretoken'",),
-                                            itertools.repeat(''))
-            def add_csrf_field(match):
-                """Returns the matched <form> tag plus the added <input> element"""
-                return mark_safe(match.group() + "<div style='display:none;'>" + \
-                "<input type='hidden' " + idattributes.next() + \
-                " name='csrfmiddlewaretoken' value='" + csrf_token + \
-                "' /></div>")
-
-            # Modify any POST forms
-            response.content = _POST_FORM_RE.sub(add_csrf_field, response.content)
-        return response
diff --git a/webapp/django/contrib/databrowse/__init__.py b/webapp/django/contrib/databrowse/__init__.py
deleted file mode 100644
index e2f48ac..0000000
--- a/webapp/django/contrib/databrowse/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from django.contrib.databrowse.sites import DatabrowsePlugin, ModelDatabrowse, DatabrowseSite, site
diff --git a/webapp/django/contrib/databrowse/datastructures.py b/webapp/django/contrib/databrowse/datastructures.py
deleted file mode 100644
index 5fdbdbe1..0000000
--- a/webapp/django/contrib/databrowse/datastructures.py
+++ /dev/null
@@ -1,217 +0,0 @@
-"""
-These classes are light wrappers around Django's database API that provide
-convenience functionality and permalink functions for the databrowse app.
-"""
-
-from django.db import models
-from django.utils import dateformat
-from django.utils.text import capfirst
-from django.utils.translation import get_date_formats
-from django.utils.encoding import smart_unicode, smart_str, iri_to_uri
-from django.utils.safestring import mark_safe
-from django.db.models.query import QuerySet
-
-EMPTY_VALUE = '(None)'
-DISPLAY_SIZE = 100
-
-class EasyModel(object):
-    def __init__(self, site, model):
-        self.site = site
-        self.model = model
-        self.model_list = site.registry.keys()
-        self.verbose_name = model._meta.verbose_name
-        self.verbose_name_plural = model._meta.verbose_name_plural
-
-    def __repr__(self):
-        return '<EasyModel for %s>' % smart_str(self.model._meta.object_name)
-
-    def model_databrowse(self):
-        "Returns the ModelDatabrowse class for this model."
-        return self.site.registry[self.model]
-
-    def url(self):
-        return mark_safe('%s%s/%s/' % (self.site.root_url, self.model._meta.app_label, self.model._meta.module_name))
-
-    def objects(self, **kwargs):
-        return self.get_query_set().filter(**kwargs)
-
-    def get_query_set(self):
-        easy_qs = self.model._default_manager.get_query_set()._clone(klass=EasyQuerySet)
-        easy_qs._easymodel = self
-        return easy_qs
-
-    def object_by_pk(self, pk):
-        return EasyInstance(self, self.model._default_manager.get(pk=pk))
-
-    def sample_objects(self):
-        for obj in self.model._default_manager.all()[:3]:
-            yield EasyInstance(self, obj)
-
-    def field(self, name):
-        try:
-            f = self.model._meta.get_field(name)
-        except models.FieldDoesNotExist:
-            return None
-        return EasyField(self, f)
-
-    def fields(self):
-        return [EasyField(self, f) for f in (self.model._meta.fields + self.model._meta.many_to_many)]
-
-class EasyField(object):
-    def __init__(self, easy_model, field):
-        self.model, self.field = easy_model, field
-
-    def __repr__(self):
-        return smart_str(u'<EasyField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
-
-    def choices(self):
-        for value, label in self.field.choices:
-            yield EasyChoice(self.model, self, value, label)
-
-    def url(self):
-        if self.field.choices:
-            return mark_safe('%s%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name))
-        elif self.field.rel:
-            return mark_safe('%s%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name))
-
-class EasyChoice(object):
-    def __init__(self, easy_model, field, value, label):
-        self.model, self.field = easy_model, field
-        self.value, self.label = value, label
-
-    def __repr__(self):
-        return smart_str(u'<EasyChoice for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
-
-    def url(self):
-        return mark_safe('%s%s/%s/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.field.name, iri_to_uri(self.value)))
-
-class EasyInstance(object):
-    def __init__(self, easy_model, instance):
-        self.model, self.instance = easy_model, instance
-
-    def __repr__(self):
-        return smart_str(u'<EasyInstance for %s (%s)>' % (self.model.model._meta.object_name, self.instance._get_pk_val()))
-
-    def __unicode__(self):
-        val = smart_unicode(self.instance)
-        if len(val) > DISPLAY_SIZE:
-            return val[:DISPLAY_SIZE] + u'...'
-        return val
-
-    def __str__(self):
-        return self.__unicode__().encode('utf-8')
-
-    def pk(self):
-        return self.instance._get_pk_val()
-
-    def url(self):
-        return mark_safe('%s%s/%s/objects/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, iri_to_uri(self.pk())))
-
-    def fields(self):
-        """
-        Generator that yields EasyInstanceFields for each field in this
-        EasyInstance's model.
-        """
-        for f in self.model.model._meta.fields + self.model.model._meta.many_to_many:
-            yield EasyInstanceField(self.model, self, f)
-
-    def related_objects(self):
-        """
-        Generator that yields dictionaries of all models that have this
-        EasyInstance's model as a ForeignKey or ManyToManyField, along with
-        lists of related objects.
-        """
-        for rel_object in self.model.model._meta.get_all_related_objects() + self.model.model._meta.get_all_related_many_to_many_objects():
-            if rel_object.model not in self.model.model_list:
-                continue # Skip models that aren't in the model_list
-            em = EasyModel(self.model.site, rel_object.model)
-            yield {
-                'model': em,
-                'related_field': rel_object.field.verbose_name,
-                'object_list': [EasyInstance(em, i) for i in getattr(self.instance, rel_object.get_accessor_name()).all()],
-            }
-
-class EasyInstanceField(object):
-    def __init__(self, easy_model, instance, field):
-        self.model, self.field, self.instance = easy_model, field, instance
-        self.raw_value = getattr(instance.instance, field.name)
-
-    def __repr__(self):
-        return smart_str(u'<EasyInstanceField for %s.%s>' % (self.model.model._meta.object_name, self.field.name))
-
-    def values(self):
-        """
-        Returns a list of values for this field for this instance. It's a list
-        so we can accomodate many-to-many fields.
-        """
-        # This import is deliberately inside the function because it causes
-        # some settings to be imported, and we don't want to do that at the
-        # module level.
-        if self.field.rel:
-            if isinstance(self.field.rel, models.ManyToOneRel):
-                objs = getattr(self.instance.instance, self.field.name)
-            elif isinstance(self.field.rel, models.ManyToManyRel): # ManyToManyRel
-                return list(getattr(self.instance.instance, self.field.name).all())
-        elif self.field.choices:
-            objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE)
-        elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField):
-            if self.raw_value:
-                date_format, datetime_format, time_format = get_date_formats()
-                if isinstance(self.field, models.DateTimeField):
-                    objs = capfirst(dateformat.format(self.raw_value, datetime_format))
-                elif isinstance(self.field, models.TimeField):
-                    objs = capfirst(dateformat.time_format(self.raw_value, time_format))
-                else:
-                    objs = capfirst(dateformat.format(self.raw_value, date_format))
-            else:
-                objs = EMPTY_VALUE
-        elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField):
-            objs = {True: 'Yes', False: 'No', None: 'Unknown'}[self.raw_value]
-        else:
-            objs = self.raw_value
-        return [objs]
-
-    def urls(self):
-        "Returns a list of (value, URL) tuples."
-        # First, check the urls() method for each plugin.
-        plugin_urls = []
-        for plugin_name, plugin in self.model.model_databrowse().plugins.items():
-            urls = plugin.urls(plugin_name, self)
-            if urls is not None:
-                #plugin_urls.append(urls)
-                values = self.values()
-                return zip(self.values(), urls)
-        if self.field.rel:
-            m = EasyModel(self.model.site, self.field.rel.to)
-            if self.field.rel.to in self.model.model_list:
-                lst = []
-                for value in self.values():
-                    url = mark_safe('%s%s/%s/objects/%s/' % (self.model.site.root_url, m.model._meta.app_label, m.model._meta.module_name, iri_to_uri(value._get_pk_val())))
-                    lst.append((smart_unicode(value), url))
-            else:
-                lst = [(value, None) for value in self.values()]
-        elif self.field.choices:
-            lst = []
-            for value in self.values():
-                url = mark_safe('%s%s/%s/fields/%s/%s/' % (self.model.site.root_url, self.model.model._meta.app_label, self.model.model._meta.module_name, self.field.name, iri_to_uri(self.raw_value)))
-                lst.append((value, url))
-        elif isinstance(self.field, models.URLField):
-            val = self.values()[0]
-            lst = [(val, iri_to_uri(val))]
-        else:
-            lst = [(self.values()[0], None)]
-        return lst
-
-class EasyQuerySet(QuerySet):
-    """
-    When creating (or cloning to) an `EasyQuerySet`, make sure to set the
-    `_easymodel` variable to the related `EasyModel`.
-    """
-    def iterator(self, *args, **kwargs):
-        for obj in super(EasyQuerySet, self).iterator(*args, **kwargs):
-            yield EasyInstance(self._easymodel, obj)
-
-    def _clone(self, *args, **kwargs):
-        c = super(EasyQuerySet, self)._clone(*args, **kwargs)
-        c._easymodel = self._easymodel
-        return c
diff --git a/webapp/django/contrib/databrowse/plugins/__init__.py b/webapp/django/contrib/databrowse/plugins/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/databrowse/plugins/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/databrowse/plugins/calendars.py b/webapp/django/contrib/databrowse/plugins/calendars.py
deleted file mode 100644
index ac2f522..0000000
--- a/webapp/django/contrib/databrowse/plugins/calendars.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from django import http
-from django.db import models
-from django.contrib.databrowse.datastructures import EasyModel
-from django.contrib.databrowse.sites import DatabrowsePlugin
-from django.shortcuts import render_to_response
-from django.utils.text import capfirst
-from django.utils.encoding import force_unicode
-from django.utils.safestring import mark_safe
-from django.views.generic import date_based
-from django.utils import datetime_safe
-
-class CalendarPlugin(DatabrowsePlugin):
-    def __init__(self, field_names=None):
-        self.field_names = field_names
-
-    def field_dict(self, model):
-        """
-        Helper function that returns a dictionary of all DateFields or
-        DateTimeFields in the given model. If self.field_names is set, it takes
-        take that into account when building the dictionary.
-        """
-        if self.field_names is None:
-            return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField)])
-        else:
-            return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField) and f.name in self.field_names])
-
-    def model_index_html(self, request, model, site):
-        fields = self.field_dict(model)
-        if not fields:
-            return u''
-        return mark_safe(u'<p class="filter"><strong>View calendar by:</strong> %s</p>' % \
-            u', '.join(['<a href="calendars/%s/">%s</a>' % (f.name, force_unicode(capfirst(f.verbose_name))) for f in fields.values()]))
-
-    def urls(self, plugin_name, easy_instance_field):
-        if isinstance(easy_instance_field.field, models.DateField):
-            d = easy_instance_field.raw_value
-            return [mark_safe(u'%s%s/%s/%s/%s/%s/' % (
-                easy_instance_field.model.url(),
-                plugin_name, easy_instance_field.field.name,
-                d.year,
-                datetime_safe.new_date(d).strftime('%b').lower(),
-                d.day))]
-
-    def model_view(self, request, model_databrowse, url):
-        self.model, self.site = model_databrowse.model, model_databrowse.site
-        self.fields = self.field_dict(self.model)
-
-        # If the model has no DateFields, there's no point in going further.
-        if not self.fields:
-            raise http.Http404('The requested model has no calendars.')
-
-        if url is None:
-            return self.homepage_view(request)
-        url_bits = url.split('/')
-        if self.fields.has_key(url_bits[0]):
-            return self.calendar_view(request, self.fields[url_bits[0]], *url_bits[1:])
-
-        raise http.Http404('The requested page does not exist.')
-
-    def homepage_view(self, request):
-        easy_model = EasyModel(self.site, self.model)
-        field_list = self.fields.values()
-        field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name))
-        return render_to_response('databrowse/calendar_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
-
-    def calendar_view(self, request, field, year=None, month=None, day=None):
-        easy_model = EasyModel(self.site, self.model)
-        queryset = easy_model.get_query_set()
-        extra_context = {'root_url': self.site.root_url, 'model': easy_model, 'field': field}
-        if day is not None:
-            return date_based.archive_day(request, year, month, day, queryset, field.name,
-                template_name='databrowse/calendar_day.html', allow_empty=False, allow_future=True,
-                extra_context=extra_context)
-        elif month is not None:
-            return date_based.archive_month(request, year, month, queryset, field.name,
-                template_name='databrowse/calendar_month.html', allow_empty=False, allow_future=True,
-                extra_context=extra_context)
-        elif year is not None:
-            return date_based.archive_year(request, year, queryset, field.name,
-                template_name='databrowse/calendar_year.html', allow_empty=False, allow_future=True,
-                extra_context=extra_context)
-        else:
-            return date_based.archive_index(request, queryset, field.name,
-                template_name='databrowse/calendar_main.html', allow_empty=True, allow_future=True,
-                extra_context=extra_context)
-        assert False, ('%s, %s, %s, %s' % (field, year, month, day))
diff --git a/webapp/django/contrib/databrowse/plugins/fieldchoices.py b/webapp/django/contrib/databrowse/plugins/fieldchoices.py
deleted file mode 100644
index 8f77792..0000000
--- a/webapp/django/contrib/databrowse/plugins/fieldchoices.py
+++ /dev/null
@@ -1,74 +0,0 @@
-from django import http
-from django.db import models
-from django.contrib.databrowse.datastructures import EasyModel
-from django.contrib.databrowse.sites import DatabrowsePlugin
-from django.shortcuts import render_to_response
-from django.utils.text import capfirst
-from django.utils.encoding import smart_str, force_unicode
-from django.utils.safestring import mark_safe
-import urllib
-
-class FieldChoicePlugin(DatabrowsePlugin):
-    def __init__(self, field_filter=None):
-        # If field_filter is given, it should be a callable that takes a
-        # Django database Field instance and returns True if that field should
-        # be included. If field_filter is None, that all fields will be used.
-        self.field_filter = field_filter
-
-    def field_dict(self, model):
-        """
-        Helper function that returns a dictionary of all fields in the given
-        model. If self.field_filter is set, it only includes the fields that
-        match the filter.
-        """
-        if self.field_filter:
-            return dict([(f.name, f) for f in model._meta.fields if self.field_filter(f)])
-        else:
-            return dict([(f.name, f) for f in model._meta.fields if not f.rel and not f.primary_key and not f.unique and not isinstance(f, (models.AutoField, models.TextField))])
-
-    def model_index_html(self, request, model, site):
-        fields = self.field_dict(model)
-        if not fields:
-            return u''
-        return mark_safe(u'<p class="filter"><strong>View by:</strong> %s</p>' % \
-            u', '.join(['<a href="fields/%s/">%s</a>' % (f.name, force_unicode(capfirst(f.verbose_name))) for f in fields.values()]))
-
-    def urls(self, plugin_name, easy_instance_field):
-        if easy_instance_field.field in self.field_dict(easy_instance_field.model.model).values():
-            field_value = smart_str(easy_instance_field.raw_value)
-            return [mark_safe(u'%s%s/%s/%s/' % (
-                easy_instance_field.model.url(),
-                plugin_name, easy_instance_field.field.name,
-                urllib.quote(field_value, safe='')))]
-
-    def model_view(self, request, model_databrowse, url):
-        self.model, self.site = model_databrowse.model, model_databrowse.site
-        self.fields = self.field_dict(self.model)
-
-        # If the model has no fields with choices, there's no point in going
-        # further.
-        if not self.fields:
-            raise http.Http404('The requested model has no fields.')
-
-        if url is None:
-            return self.homepage_view(request)
-        url_bits = url.split('/', 1)
-        if self.fields.has_key(url_bits[0]):
-            return self.field_view(request, self.fields[url_bits[0]], *url_bits[1:])
-
-        raise http.Http404('The requested page does not exist.')
-
-    def homepage_view(self, request):
-        easy_model = EasyModel(self.site, self.model)
-        field_list = self.fields.values()
-        field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name))
-        return render_to_response('databrowse/fieldchoice_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
-
-    def field_view(self, request, field, value=None):
-        easy_model = EasyModel(self.site, self.model)
-        easy_field = easy_model.field(field.name)
-        if value is not None:
-            obj_list = easy_model.objects(**{field.name: value})
-            return render_to_response('databrowse/fieldchoice_detail.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'value': value, 'object_list': obj_list})
-        obj_list = [v[field.name] for v in self.model._default_manager.distinct().order_by(field.name).values(field.name)]
-        return render_to_response('databrowse/fieldchoice_list.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'object_list': obj_list})
diff --git a/webapp/django/contrib/databrowse/plugins/objects.py b/webapp/django/contrib/databrowse/plugins/objects.py
deleted file mode 100644
index 7326566..0000000
--- a/webapp/django/contrib/databrowse/plugins/objects.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django import http
-from django.contrib.databrowse.datastructures import EasyModel
-from django.contrib.databrowse.sites import DatabrowsePlugin
-from django.shortcuts import render_to_response
-import urlparse
-
-class ObjectDetailPlugin(DatabrowsePlugin):
-    def model_view(self, request, model_databrowse, url):
-        # If the object ID wasn't provided, redirect to the model page, which is one level up.
-        if url is None:
-            return http.HttpResponseRedirect(urlparse.urljoin(request.path, '../'))
-        easy_model = EasyModel(model_databrowse.site, model_databrowse.model)
-        obj = easy_model.object_by_pk(url)
-        return render_to_response('databrowse/object_detail.html', {'object': obj, 'root_url': model_databrowse.site.root_url})
diff --git a/webapp/django/contrib/databrowse/sites.py b/webapp/django/contrib/databrowse/sites.py
deleted file mode 100644
index 9ef35db..0000000
--- a/webapp/django/contrib/databrowse/sites.py
+++ /dev/null
@@ -1,149 +0,0 @@
-from django import http
-from django.db import models
-from django.contrib.databrowse.datastructures import EasyModel
-from django.shortcuts import render_to_response
-from django.utils.safestring import mark_safe
-
-class AlreadyRegistered(Exception):
-    pass
-
-class NotRegistered(Exception):
-    pass
-
-class DatabrowsePlugin(object):
-    def urls(self, plugin_name, easy_instance_field):
-        """
-        Given an EasyInstanceField object, returns a list of URLs for this
-        plugin's views of this object. These URLs should be absolute.
-
-        Returns None if the EasyInstanceField object doesn't get a
-        list of plugin-specific URLs.
-        """
-        return None
-
-    def model_index_html(self, request, model, site):
-        """
-        Returns a snippet of HTML to include on the model index page.
-        """
-        return ''
-
-    def model_view(self, request, model_databrowse, url):
-        """
-        Handles main URL routing for a plugin's model-specific pages.
-        """
-        raise NotImplementedError
-
-class ModelDatabrowse(object):
-    plugins = {}
-
-    def __init__(self, model, site):
-        self.model = model
-        self.site = site
-
-    def root(self, request, url):
-        """
-        Handles main URL routing for the databrowse app.
-
-        `url` is the remainder of the URL -- e.g. 'objects/3'.
-        """
-        # Delegate to the appropriate method, based on the URL.
-        if url is None:
-            return self.main_view(request)
-        try:
-            plugin_name, rest_of_url = url.split('/', 1)
-        except ValueError: # need more than 1 value to unpack
-            plugin_name, rest_of_url = url, None
-        try:
-            plugin = self.plugins[plugin_name]
-        except KeyError:
-            raise http.Http404('A plugin with the requested name does not exist.')
-        return plugin.model_view(request, self, rest_of_url)
-
-    def main_view(self, request):
-        easy_model = EasyModel(self.site, self.model)
-        html_snippets = mark_safe(u'\n'.join([p.model_index_html(request, self.model, self.site) for p in self.plugins.values()]))
-        return render_to_response('databrowse/model_detail.html', {
-            'model': easy_model,
-            'root_url': self.site.root_url,
-            'plugin_html': html_snippets,
-        })
-
-class DatabrowseSite(object):
-    def __init__(self):
-        self.registry = {} # model_class -> databrowse_class
-        self.root_url = None
-
-    def register(self, model_or_iterable, databrowse_class=None, **options):
-        """
-        Registers the given model(s) with the given databrowse site.
-
-        The model(s) should be Model classes, not instances.
-
-        If a databrowse class isn't given, it will use DefaultModelDatabrowse
-        (the default databrowse options).
-
-        If a model is already registered, this will raise AlreadyRegistered.
-        """
-        databrowse_class = databrowse_class or DefaultModelDatabrowse
-        if issubclass(model_or_iterable, models.Model):
-            model_or_iterable = [model_or_iterable]
-        for model in model_or_iterable:
-            if model in self.registry:
-                raise AlreadyRegistered('The model %s is already registered' % model.__class__.__name__)
-            self.registry[model] = databrowse_class
-
-    def unregister(self, model_or_iterable):
-        """
-        Unregisters the given model(s).
-
-        If a model isn't already registered, this will raise NotRegistered.
-        """
-        if issubclass(model_or_iterable, models.Model):
-            model_or_iterable = [model_or_iterable]
-        for model in model_or_iterable:
-            if model not in self.registry:
-                raise NotRegistered('The model %s is not registered' % model.__class__.__name__)
-            del self.registry[model]
-
-    def root(self, request, url):
-        """
-        Handles main URL routing for the databrowse app.
-
-        `url` is the remainder of the URL -- e.g. 'comments/comment/'.
-        """
-        self.root_url = request.path[:len(request.path) - len(url)]
-        url = url.rstrip('/') # Trim trailing slash, if it exists.
-
-        if url == '':
-            return self.index(request)
-        elif '/' in url:
-            return self.model_page(request, *url.split('/', 2))
-
-        raise http.Http404('The requested databrowse page does not exist.')
-
-    def index(self, request):
-        m_list = [EasyModel(self, m) for m in self.registry.keys()]
-        return render_to_response('databrowse/homepage.html', {'model_list': m_list, 'root_url': self.root_url})
-
-    def model_page(self, request, app_label, model_name, rest_of_url=None):
-        """
-        Handles the model-specific functionality of the databrowse site, delegating
-        to the appropriate ModelDatabrowse class.
-        """
-        model = models.get_model(app_label, model_name)
-        if model is None:
-            raise http.Http404("App %r, model %r, not found." % (app_label, model_name))
-        try:
-            databrowse_class = self.registry[model]
-        except KeyError:
-            raise http.Http404("This model exists but has not been registered with databrowse.")
-        return databrowse_class(model, self).root(request, rest_of_url)
-
-site = DatabrowseSite()
-
-from django.contrib.databrowse.plugins.calendars import CalendarPlugin
-from django.contrib.databrowse.plugins.objects import ObjectDetailPlugin
-from django.contrib.databrowse.plugins.fieldchoices import FieldChoicePlugin
-
-class DefaultModelDatabrowse(ModelDatabrowse):
-    plugins = {'objects': ObjectDetailPlugin(), 'calendars': CalendarPlugin(), 'fields': FieldChoicePlugin()}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/base.html b/webapp/django/contrib/databrowse/templates/databrowse/base.html
deleted file mode 100644
index a341985..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/base.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ LANGUAGE_CODE }}" xml:lang="{{ LANGUAGE_CODE }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
-<head>
-<title>{% block title %}{% endblock %}</title>
-{% block style %}
-<style type="text/css">
-* { margin:0; padding:0; }
-body { background:#eee; color:#333; font:76%/1.6 "Lucida Grande","Bitstream Vera Sans",Verdana,sans-serif; }
-a { color: #5b80b2; text-decoration:none; }
-a:hover { text-decoration:underline; }
-a img { border:none; }
-h1 { font-size:1.8em; color:#666; margin:0.4em 0 0.2em 0; }
-h2 { font-size:1.5em; color:#666; margin:1em 0 0.2em 0; }
-p { margin:0.5em 0 1em 0; }
-.odd { background-color:#EDF3FE; }
-.quiet { color:#666; }
-/* FILTERS */
-.filter { color:#999; font-size:0.9em; float:left; margin-bottom:10px; margin-right:20px; }
-.filter strong { color:#666; }
-/* OBJECT LISTS */
-.objectlist { clear:both; margin:0 -20px; color:#666; }
-.objectlist li a { display:block; padding:1em 20px; }
-.objectlist li a:hover { background:#5b80b2; color:#3B5572; color:#fff; text-decoration:none; }
-.related h2 { font-size: 1em; margin-bottom: 0.6em; }
-.related .objectlist li a { padding: 0.6em 20px; }
-.related .objectlist li.odd { background:#eee; }
-/* OBJECT DETAIL */
-.objectinfo { border-collapse:collapse; color:#666; margin:0 -20px; }
-.objectinfo td, .objectinfo th { padding:1em 20px; vertical-align:top; }
-.objectinfo td { width:100%; }
-.objectinfo th { text-align:left; white-space:nowrap; }
-/* MODEL GROUPS */
-.modelgroup { color:#999; font-size:0.9em; margin:0 -20px; }
-.modelgroup h2 { font-size:1.2em; margin:0; }
-.modelgroup h2 a { display: block; padding: 0.83em 20px; }
-.modelgroup h2 a:hover { text-decoration: none; color: #fff; }
-.modelgroup p { float:left; margin:-2.65em 0 0 14em; position:relative; }
-.modelgroup p a { white-space:nowrap; }
-.modelgroup a.more { color:#999; }
-.modelgroup:hover { background:#5b80b2; color:#becfe5; }
-.modelgroup:hover p a { color:#becfe5; }
-.modelgroup:hover a { color:#fff; }
-.modelgroup:hover a.more { color:#fff; }
-/* BREADCRUMBS */
-#breadcrumbs { padding:10px 0; color:#999; font-size:0.9em; }
-/* HEADER */
-#header a { display:block; background:#eee; color:#676868; padding:10px 20px; font-weight:bold; font-size:1em; text-decoration:none; border-bottom:1px solid #ddd; }
-#header a:hover { text-decoration:underline; }
-/* CONTENT */
-#content { background:#fff; border-bottom:1px solid #ddd; padding:0 20px; }
-</style>
-{% endblock %}
-{% block extrahead %}{% endblock %}
-</head>
-<body id="{% block bodyid %}page{% endblock %}">
-<div id="header"><a href="{{ root_url }}">{% block databrowse_title %}Databrowse{% endblock %}</a></div>
-<div id="content">
-{% block content %}{% endblock %}
-</div>
-</body>
-</html>
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/base_site.html b/webapp/django/contrib/databrowse/templates/databrowse/base_site.html
deleted file mode 100644
index b577ab8..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/base_site.html
+++ /dev/null
@@ -1 +0,0 @@
-{% extends "databrowse/base.html" %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/calendar_day.html b/webapp/django/contrib/databrowse/templates/databrowse/calendar_day.html
deleted file mode 100644
index bbb62cc..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/calendar_day.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} {{ day|date:"F j, Y" }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../../../">Calendars</a> / <a href="../../../">By {{ field.verbose_name }}</a> / <a href="../../">{{ day.year }}</a> / <a href="../">{{ day|date:"F" }}</a> / {{ day.day }}</div>
-
-<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F j, Y" }}</h1>
-
-<ul class="objectlist">
-{% for object in object_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ object.url }}">{{ object|escape }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/calendar_homepage.html b/webapp/django/contrib/databrowse/templates/databrowse/calendar_homepage.html
deleted file mode 100644
index 85eb8af..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/calendar_homepage.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}Calendars{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / Calendars</div>
-
-<h1>Calendars</h1>
-
-<ul class="objectlist">
-{% for field in field_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ field.name }}/">{{ model.verbose_name_plural|capfirst }} by {{ field.verbose_name }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/calendar_main.html b/webapp/django/contrib/databrowse/templates/databrowse/calendar_main.html
deleted file mode 100644
index b22a44d32..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/calendar_main.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ field.verbose_name|capfirst }} calendar{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../">Calendars</a> / By {{ field.verbose_name }}</div>
-
-<h1>{{ model.verbose_name_plural|capfirst }} by {{ field.verbose_name }}</h1>
-
-<ul class="objectlist">
-{% for year in date_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ year.year }}/">{{ year.year }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/calendar_month.html b/webapp/django/contrib/databrowse/templates/databrowse/calendar_month.html
deleted file mode 100644
index 70b7deb..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/calendar_month.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:"F Y" }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../../">Calendars</a> / <a href="../../">By {{ field.verbose_name }}</a> / <a href="../">{{ month.year }}</a> / {{ month|date:"F" }}</div>
-
-<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F Y" }}</h1>
-
-<ul class="objectlist">
-{% for object in object_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ object.url }}">{{ object|escape }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/calendar_year.html b/webapp/django/contrib/databrowse/templates/databrowse/calendar_year.html
deleted file mode 100644
index a6e6f53..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/calendar_year.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../">Calendars</a> / <a href="../">By {{ field.verbose_name }}</a> / {{ year }}</div>
-
-<h1>{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}</h1>
-
-<ul class="objectlist">
-{% for month in date_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ month|date:"M"|lower }}/">{{ month|date:"F" }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/choice_detail.html b/webapp/django/contrib/databrowse/templates/databrowse/choice_detail.html
deleted file mode 100644
index 6cb73e7..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/choice_detail.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value|escape }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="{{ field.url }}">By {{ field.field.verbose_name }}</a> / {{ value|escape }}</div>
-
-<h1>{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value|escape }}</h1>
-
-<ul class="objectlist">
-{% for object in object_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ object.url }}">{{ object|escape }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/choice_list.html b/webapp/django/contrib/databrowse/templates/databrowse/choice_list.html
deleted file mode 100644
index 95cd88b..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/choice_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / By {{ field.field.verbose_name }}</div>
-
-<h1>{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}</h1>
-
-<ul class="objectlist">
-{% for choice in field.choices %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ choice.url }}">{{ choice.label|escape }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html b/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html
deleted file mode 100644
index 7801f3f..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst|escape }} with {{ field.field.verbose_name|escape }} {{ value|escape }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../">Fields</a> / <a href="../">By {{ field.field.verbose_name|escape }}</a> / {{ value|escape }}</div>
-
-<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.field.verbose_name|escape }} {{ value|escape }}</h1>
-
-<ul class="objectlist">
-{% for object in object_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ object.url }}">{{ object|escape }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html b/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html
deleted file mode 100644
index 3259824..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}Browsable fields in {{ model.verbose_name_plural|escape }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / Fields</div>
-
-<h1>Browsable fields in {{ model.verbose_name_plural }}</h1>
-
-<ul class="objectlist">
-{% for field in field_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ field.name }}/">{{ model.verbose_name_plural|capfirst }} by {{ field.verbose_name }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html b/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html
deleted file mode 100644
index 71b906d..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst|escape }} by {{ field.field.verbose_name|escape }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../">Fields</a> / By {{ field.field.verbose_name|escape }}</div>
-
-<h1>{{ model.verbose_name_plural|capfirst|escape }} by {{ field.field.verbose_name|escape }}</h1>
-
-<ul class="objectlist">
-{% for object in object_list %}
-<li class="{% cycle 'odd' 'even' %}"><a href="{{ object|iriencode }}/">{{ object|escape }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/homepage.html b/webapp/django/contrib/databrowse/templates/databrowse/homepage.html
deleted file mode 100644
index 718e577..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/homepage.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}Databrowse{% endblock %}
-
-{% block bodyid %}homepage{% endblock %}
-
-{% block content %}
-
-{% for model in model_list %}
-  <div class="modelgroup {% cycle 'even' 'odd' %}">
-	  <h2><a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a></h2>
-		<p>
-		{% for object in model.sample_objects %}
-			<a href="{{ object.url }}">{{ object|escape }}</a>, 
-		{% endfor %}
-			<a class="more" href="{{ model.url }}">More &rarr;</a>
-		</p>
-  </div>
-{% endfor %}
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/model_detail.html b/webapp/django/contrib/databrowse/templates/databrowse/model_detail.html
deleted file mode 100644
index b66bc09..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/model_detail.html
+++ /dev/null
@@ -1,19 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ model.verbose_name_plural|capfirst }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / {{ model.verbose_name_plural|capfirst }}</div>
-
-<h1>{{ model.objects.count }} {% if model.objects.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %}</h1>
-
-{{ plugin_html }}
-
-<ul class="objectlist">
-{% for object in model.objects %}
-    <li class="{% cycle 'odd' 'even' %}"><a href="{{ object.url }}">{{ object|escape }}</a></li>
-{% endfor %}
-</ul>
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/templates/databrowse/object_detail.html b/webapp/django/contrib/databrowse/templates/databrowse/object_detail.html
deleted file mode 100644
index 7c1bd3e..0000000
--- a/webapp/django/contrib/databrowse/templates/databrowse/object_detail.html
+++ /dev/null
@@ -1,41 +0,0 @@
-{% extends "databrowse/base_site.html" %}
-
-{% block title %}{{ object.model.verbose_name|capfirst }}: {{ object }}{% endblock %}
-
-{% block content %}
-
-<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ object.model.url }}">{{ object.model.verbose_name_plural|capfirst }}</a> / {{ object|escape }}</div>
-
-<h1>{{ object.model.verbose_name|capfirst }}: {{ object|escape }}</h1>
-
-<table class="objectinfo">
-{% for field in object.fields %}
-<tr class="{% cycle 'odd' 'even' %}">
-<th>{{ field.field.verbose_name|capfirst }}</th>
-<td>
-{% if field.urls %}
-{% for value, url in field.urls %}
-{% if url %}<a href="{{ url }}">{% endif %}{{ value|escape }}{% if url %}</a>{% endif %}{% if not forloop.last %}, {% endif %}
-{% endfor %}
-{% else %}None{% endif %}
-</td>
-</tr>
-{% endfor %}
-</table>
-
-{% for related_object in object.related_objects %}
-  <div class="related">
-  <h2>Appears in "{{ related_object.related_field }}" in the following {{ related_object.model.verbose_name_plural }}:</h2>
-  {% if related_object.object_list %}
-  <ul class="objectlist">
-    {% for object in related_object.object_list %}
-    <li class="{% cycle 'odd' 'even' %}"><a href="{{ object.url }}">{{ object|escape }}</a></li>
-    {% endfor %}
-  </ul>
-  {% else %}
-  <p class="quiet">(None)</p>
-  {% endif %}
-  </div>
-{% endfor %}
-
-{% endblock %}
diff --git a/webapp/django/contrib/databrowse/urls.py b/webapp/django/contrib/databrowse/urls.py
deleted file mode 100644
index 9b85d14..0000000
--- a/webapp/django/contrib/databrowse/urls.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.conf.urls.defaults import *
-from django.contrib.databrowse import views
-
-# Note: The views in this URLconf all require a 'models' argument,
-# which is a list of model classes (*not* instances).
-
-urlpatterns = patterns('',
-    #(r'^$', views.homepage),
-    #(r'^([^/]+)/([^/]+)/$', views.model_detail),
-
-    (r'^([^/]+)/([^/]+)/fields/(\w+)/$', views.choice_list),
-    (r'^([^/]+)/([^/]+)/fields/(\w+)/(.*)/$', views.choice_detail),
-
-    #(r'^([^/]+)/([^/]+)/calendars/(\w+)/$', views.calendar_main),
-    #(r'^([^/]+)/([^/]+)/calendars/(\w+)/(\d{4})/$', views.calendar_year),
-    #(r'^([^/]+)/([^/]+)/calendars/(\w+)/(\d{4})/(\w{3})/$', views.calendar_month),
-    #(r'^([^/]+)/([^/]+)/calendars/(\w+)/(\d{4})/(\w{3})/(\d{1,2})/$', views.calendar_day),
-
-    #(r'^([^/]+)/([^/]+)/objects/(.*)/$', views.object_detail),
-)
diff --git a/webapp/django/contrib/databrowse/views.py b/webapp/django/contrib/databrowse/views.py
deleted file mode 100644
index 4543e95..0000000
--- a/webapp/django/contrib/databrowse/views.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from django.http import Http404
-from django.shortcuts import render_to_response
-
-###########
-# CHOICES #
-###########
-
-def choice_list(request, app_label, module_name, field_name, models):
-    m, f = lookup_field(app_label, module_name, field_name, models)
-    return render_to_response('databrowse/choice_list.html', {'model': m, 'field': f})
-
-def choice_detail(request, app_label, module_name, field_name, field_val, models):
-    m, f = lookup_field(app_label, module_name, field_name, models)
-    try:
-        label = dict(f.field.choices)[field_val]
-    except KeyError:
-        raise Http404('Invalid choice value given')
-    obj_list = m.objects(**{f.field.name: field_val})
-    return render_to_response('databrowse/choice_detail.html', {'model': m, 'field': f, 'value': label, 'object_list': obj_list})
diff --git a/webapp/django/contrib/flatpages/README.TXT b/webapp/django/contrib/flatpages/README.TXT
deleted file mode 100644
index d307137..0000000
--- a/webapp/django/contrib/flatpages/README.TXT
+++ /dev/null
@@ -1,8 +0,0 @@
-This is an optional add-on app, flatpages.
-
-For full documentation, see either of these:
-
-    * The file docs/flatpages.txt in the Django distribution
-    * http://www.djangoproject.com/documentation/flatpages/ on the Web
-
-Both have identical content.
diff --git a/webapp/django/contrib/flatpages/__init__.py b/webapp/django/contrib/flatpages/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/flatpages/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/flatpages/admin.py b/webapp/django/contrib/flatpages/admin.py
deleted file mode 100644
index b6fdba3..0000000
--- a/webapp/django/contrib/flatpages/admin.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from django import forms
-from django.contrib import admin
-from django.contrib.flatpages.models import FlatPage
-from django.utils.translation import ugettext_lazy as _
-
-
-class FlatpageForm(forms.ModelForm):
-    url = forms.RegexField(label=_("URL"), max_length=100, regex=r'^[-\w/]+$',
-        help_text = _("Example: '/about/contact/'. Make sure to have leading"
-                      " and trailing slashes."),
-        error_message = _("This value must contain only letters, numbers,"
-                          " underscores, dashes or slashes."))
-
-    class Meta:
-        model = FlatPage
-
-
-class FlatPageAdmin(admin.ModelAdmin):
-    form = FlatpageForm
-    fieldsets = (
-        (None, {'fields': ('url', 'title', 'content', 'sites')}),
-        (_('Advanced options'), {'classes': ('collapse',), 'fields': ('enable_comments', 'registration_required', 'template_name')}),
-    )
-    list_display = ('url', 'title')
-    list_filter = ('sites', 'enable_comments', 'registration_required')
-    search_fields = ('url', 'title')
-
-admin.site.register(FlatPage, FlatPageAdmin)
diff --git a/webapp/django/contrib/flatpages/middleware.py b/webapp/django/contrib/flatpages/middleware.py
deleted file mode 100644
index fb98c39..0000000
--- a/webapp/django/contrib/flatpages/middleware.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.contrib.flatpages.views import flatpage
-from django.http import Http404
-from django.conf import settings
-
-class FlatpageFallbackMiddleware(object):
-    def process_response(self, request, response):
-        if response.status_code != 404:
-            return response # No need to check for a flatpage for non-404 responses.
-        try:
-            return flatpage(request, request.path_info)
-        # Return the original response if any errors happened. Because this
-        # is a middleware, we can't assume the errors will be caught elsewhere.
-        except Http404:
-            return response
-        except:
-            if settings.DEBUG:
-                raise
-            return response
diff --git a/webapp/django/contrib/flatpages/models.py b/webapp/django/contrib/flatpages/models.py
deleted file mode 100644
index 02005dd..0000000
--- a/webapp/django/contrib/flatpages/models.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from django.core import validators
-from django.db import models
-from django.contrib.sites.models import Site
-from django.utils.translation import ugettext_lazy as _
-
-
-class FlatPage(models.Model):
-    url = models.CharField(_('URL'), max_length=100, db_index=True)
-    title = models.CharField(_('title'), max_length=200)
-    content = models.TextField(_('content'), blank=True)
-    enable_comments = models.BooleanField(_('enable comments'))
-    template_name = models.CharField(_('template name'), max_length=70, blank=True,
-        help_text=_("Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."))
-    registration_required = models.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
-    sites = models.ManyToManyField(Site)
-
-    class Meta:
-        db_table = 'django_flatpage'
-        verbose_name = _('flat page')
-        verbose_name_plural = _('flat pages')
-        ordering = ('url',)
-
-    def __unicode__(self):
-        return u"%s -- %s" % (self.url, self.title)
-
-    def get_absolute_url(self):
-        return self.url
diff --git a/webapp/django/contrib/flatpages/urls.py b/webapp/django/contrib/flatpages/urls.py
deleted file mode 100644
index 4928930..0000000
--- a/webapp/django/contrib/flatpages/urls.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('django.contrib.flatpages.views',
-    (r'^(?P<url>.*)$', 'flatpage'),
-)
diff --git a/webapp/django/contrib/flatpages/views.py b/webapp/django/contrib/flatpages/views.py
deleted file mode 100644
index 37d12c9..0000000
--- a/webapp/django/contrib/flatpages/views.py
+++ /dev/null
@@ -1,48 +0,0 @@
-from django.contrib.flatpages.models import FlatPage
-from django.template import loader, RequestContext
-from django.shortcuts import get_object_or_404
-from django.http import HttpResponse, HttpResponseRedirect
-from django.conf import settings
-from django.core.xheaders import populate_xheaders
-from django.utils.safestring import mark_safe
-
-DEFAULT_TEMPLATE = 'flatpages/default.html'
-
-def flatpage(request, url):
-    """
-    Flat page view.
-
-    Models: `flatpages.flatpages`
-    Templates: Uses the template defined by the ``template_name`` field,
-        or `flatpages/default.html` if template_name is not defined.
-    Context:
-        flatpage
-            `flatpages.flatpages` object
-    """
-    if not url.endswith('/') and settings.APPEND_SLASH:
-        return HttpResponseRedirect("%s/" % request.path)
-    if not url.startswith('/'):
-        url = "/" + url
-    f = get_object_or_404(FlatPage, url__exact=url, sites__id__exact=settings.SITE_ID)
-    # If registration is required for accessing this page, and the user isn't
-    # logged in, redirect to the login page.
-    if f.registration_required and not request.user.is_authenticated():
-        from django.contrib.auth.views import redirect_to_login
-        return redirect_to_login(request.path)
-    if f.template_name:
-        t = loader.select_template((f.template_name, DEFAULT_TEMPLATE))
-    else:
-        t = loader.get_template(DEFAULT_TEMPLATE)
-
-    # To avoid having to always use the "|safe" filter in flatpage templates,
-    # mark the title and content as already safe (since they are raw HTML
-    # content in the first place).
-    f.title = mark_safe(f.title)
-    f.content = mark_safe(f.content)
-
-    c = RequestContext(request, {
-        'flatpage': f,
-    })
-    response = HttpResponse(t.render(c))
-    populate_xheaders(request, response, FlatPage, f.id)
-    return response
diff --git a/webapp/django/contrib/formtools/__init__.py b/webapp/django/contrib/formtools/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/formtools/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/formtools/models.py b/webapp/django/contrib/formtools/models.py
deleted file mode 100644
index 13990e2..0000000
--- a/webapp/django/contrib/formtools/models.py
+++ /dev/null
@@ -1 +0,0 @@
-""" models.py (even empty) currently required by the runtests.py to enable unit tests """
diff --git a/webapp/django/contrib/formtools/preview.py b/webapp/django/contrib/formtools/preview.py
deleted file mode 100644
index c56fdff..0000000
--- a/webapp/django/contrib/formtools/preview.py
+++ /dev/null
@@ -1,126 +0,0 @@
-"""
-Formtools Preview application.
-"""
-
-import cPickle as pickle
-
-from django.conf import settings
-from django.http import Http404
-from django.shortcuts import render_to_response
-from django.template.context import RequestContext
-from django.utils.hashcompat import md5_constructor
-
-AUTO_ID = 'formtools_%s' # Each form here uses this as its auto_id parameter.
-
-class FormPreview(object):
-    preview_template = 'formtools/preview.html'
-    form_template = 'formtools/form.html'
-
-    # METHODS SUBCLASSES SHOULDN'T OVERRIDE ###################################
-
-    def __init__(self, form):
-        # form should be a Form class, not an instance.
-        self.form, self.state = form, {}
-
-    def __call__(self, request, *args, **kwargs):
-        stage = {'1': 'preview', '2': 'post'}.get(request.POST.get(self.unused_name('stage')), 'preview')
-        self.parse_params(*args, **kwargs)
-        try:
-            method = getattr(self, stage + '_' + request.method.lower())
-        except AttributeError:
-            raise Http404
-        return method(request)
-
-    def unused_name(self, name):
-        """
-        Given a first-choice name, adds an underscore to the name until it
-        reaches a name that isn't claimed by any field in the form.
-
-        This is calculated rather than being hard-coded so that no field names
-        are off-limits for use in the form.
-        """
-        while 1:
-            try:
-                f = self.form.base_fields[name]
-            except KeyError:
-                break # This field name isn't being used by the form.
-            name += '_'
-        return name
-
-    def preview_get(self, request):
-        "Displays the form"
-        f = self.form(auto_id=AUTO_ID)
-        return render_to_response(self.form_template,
-            {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state},
-            context_instance=RequestContext(request))
-
-    def preview_post(self, request):
-        "Validates the POST data. If valid, displays the preview page. Else, redisplays form."
-        f = self.form(request.POST, auto_id=AUTO_ID)
-        context = {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state}
-        if f.is_valid():
-            context['hash_field'] = self.unused_name('hash')
-            context['hash_value'] = self.security_hash(request, f)
-            return render_to_response(self.preview_template, context, context_instance=RequestContext(request))
-        else:
-            return render_to_response(self.form_template, context, context_instance=RequestContext(request))
-
-    def post_post(self, request):
-        "Validates the POST data. If valid, calls done(). Else, redisplays form."
-        f = self.form(request.POST, auto_id=AUTO_ID)
-        if f.is_valid():
-            if self.security_hash(request, f) != request.POST.get(self.unused_name('hash')):
-                return self.failed_hash(request) # Security hash failed.
-            return self.done(request, f.cleaned_data)
-        else:
-            return render_to_response(self.form_template,
-                {'form': f, 'stage_field': self.unused_name('stage'), 'state': self.state},
-                context_instance=RequestContext(request))
-
-    # METHODS SUBCLASSES MIGHT OVERRIDE IF APPROPRIATE ########################
-
-    def parse_params(self, *args, **kwargs):
-        """
-        Given captured args and kwargs from the URLconf, saves something in
-        self.state and/or raises Http404 if necessary.
-
-        For example, this URLconf captures a user_id variable:
-
-            (r'^contact/(?P<user_id>\d{1,6})/$', MyFormPreview(MyForm)),
-
-        In this case, the kwargs variable in parse_params would be
-        {'user_id': 32} for a request to '/contact/32/'. You can use that
-        user_id to make sure it's a valid user and/or save it for later, for
-        use in done().
-        """
-        pass
-
-    def security_hash(self, request, form):
-        """
-        Calculates the security hash for the given Form instance.
-
-        This creates a list of the form field names/values in a deterministic
-        order, pickles the result with the SECRET_KEY setting and takes an md5
-        hash of that.
-
-        Subclasses may want to take into account request-specific information
-        such as the IP address.
-        """
-        data = [(bf.name, bf.data or '') for bf in form] + [settings.SECRET_KEY]
-        # Use HIGHEST_PROTOCOL because it's the most efficient. It requires
-        # Python 2.3, but Django requires 2.3 anyway, so that's OK.
-        pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
-        return md5_constructor(pickled).hexdigest()
-
-    def failed_hash(self, request):
-        "Returns an HttpResponse in the case of an invalid security hash."
-        return self.preview_post(request)
-
-    # METHODS SUBCLASSES MUST OVERRIDE ########################################
-
-    def done(self, request, cleaned_data):
-        """
-        Does something with the cleaned_data and returns an
-        HttpResponseRedirect.
-        """
-        raise NotImplementedError('You must define a done() method on your %s subclass.' % self.__class__.__name__)
diff --git a/webapp/django/contrib/formtools/templates/formtools/form.html b/webapp/django/contrib/formtools/templates/formtools/form.html
deleted file mode 100644
index 194bbdd..0000000
--- a/webapp/django/contrib/formtools/templates/formtools/form.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "base.html" %}
-
-{% block content %}
-
-{% if form.errors %}<h1>Please correct the following errors</h1>{% else %}<h1>Submit</h1>{% endif %}
-
-<form action="" method="post">
-<table>
-{{ form }}
-</table>
-<input type="hidden" name="{{ stage_field }}" value="1" />
-<p><input type="submit" value="Preview" /></p>
-</form>
-
-{% endblock %}
diff --git a/webapp/django/contrib/formtools/templates/formtools/preview.html b/webapp/django/contrib/formtools/templates/formtools/preview.html
deleted file mode 100644
index 9831157..0000000
--- a/webapp/django/contrib/formtools/templates/formtools/preview.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{% extends "base.html" %}
-
-{% block content %}
-
-<h1>Preview your submission</h1>
-
-<table>
-{% for field in form %}
-<tr>
-<th>{{ field.label }}:</th>
-<td>{{ field.data|escape }}</td>
-</tr>
-{% endfor %}
-</table>
-
-<p>Security hash: {{ hash_value }}</p>
-
-<form action="" method="post">
-{% for field in form %}{{ field.as_hidden }}
-{% endfor %}
-<input type="hidden" name="{{ stage_field }}" value="2" />
-<input type="hidden" name="{{ hash_field }}" value="{{ hash_value }}" />
-<p><input type="submit" value="Submit" /></p>
-</form>
-
-<h1>Or edit it again</h1>
-
-<form action="" method="post">
-<table>
-{{ form }}
-</table>
-<input type="hidden" name="{{ stage_field }}" value="1" />
-<p><input type="submit" value="Preview" /></p>
-</form>
-
-{% endblock %}
diff --git a/webapp/django/contrib/formtools/test_urls.py b/webapp/django/contrib/formtools/test_urls.py
deleted file mode 100644
index 19dbbd1..0000000
--- a/webapp/django/contrib/formtools/test_urls.py
+++ /dev/null
@@ -1,12 +0,0 @@
-"""
-
-This is a urlconf to be loaded by tests.py. Add any urls needed
-for tests only.
-
-"""
-from django.conf.urls.defaults import *
-from django.contrib.formtools.tests import *
-
-urlpatterns = patterns('',
-                       (r'^test1/', TestFormPreview(TestForm)),
-                      )
diff --git a/webapp/django/contrib/formtools/tests.py b/webapp/django/contrib/formtools/tests.py
deleted file mode 100644
index 2ea0cc9..0000000
--- a/webapp/django/contrib/formtools/tests.py
+++ /dev/null
@@ -1,87 +0,0 @@
-from django import forms
-from django.contrib.formtools import preview
-from django import http
-from django.test import TestCase
-
-success_string = "Done was called!"
-test_data = {'field1': u'foo',
-             'field1_': u'asdf'}
-
-
-class TestFormPreview(preview.FormPreview):
-
-    def done(self, request, cleaned_data):
-        return http.HttpResponse(success_string)
-
-
-class TestForm(forms.Form):
-    field1 = forms.CharField()
-    field1_ = forms.CharField()
-
-
-class PreviewTests(TestCase):
-    urls = 'django.contrib.formtools.test_urls'
-
-    def setUp(self):
-        # Create a FormPreview instance to share between tests
-        self.preview = preview.FormPreview(TestForm)
-        input_template = '<input type="hidden" name="%s" value="%s" />'
-        self.input = input_template % (self.preview.unused_name('stage'), "%d")
-
-    def test_unused_name(self):
-        """
-        Verifies name mangling to get uniue field name.
-        """
-        self.assertEqual(self.preview.unused_name('field1'), 'field1__')
-
-    def test_form_get(self):
-        """
-        Test contrib.formtools.preview form retrieval.
-
-        Use the client library to see if we can sucessfully retrieve
-        the form (mostly testing the setup ROOT_URLCONF
-        process). Verify that an additional  hidden input field
-        is created to manage the stage.
-
-        """
-        response = self.client.get('/test1/')
-        stage = self.input % 1
-        self.assertContains(response, stage, 1)
-
-    def test_form_preview(self):
-        """
-        Test contrib.formtools.preview form preview rendering.
-
-        Use the client library to POST to the form to see if a preview
-        is returned.  If we do get a form back check that the hidden
-        value is correctly managing the state of the form.
-
-        """
-        # Pass strings for form submittal and add stage variable to
-        # show we previously saw first stage of the form.
-        test_data.update({'stage': 1})
-        response = self.client.post('/test1/', test_data)
-        # Check to confirm stage is set to 2 in output form.
-        stage = self.input % 2
-        self.assertContains(response, stage, 1)
-
-    def test_form_submit(self):
-        """
-        Test contrib.formtools.preview form submittal.
-
-        Use the client library to POST to the form with stage set to 3
-        to see if our forms done() method is called. Check first
-        without the security hash, verify failure, retry with security
-        hash and verify sucess.
-
-        """
-        # Pass strings for form submittal and add stage variable to
-        # show we previously saw first stage of the form.
-        test_data.update({'stage': 2})
-        response = self.client.post('/test1/', test_data)
-        self.failIfEqual(response.content, success_string)
-        hash = self.preview.security_hash(None, TestForm(test_data))
-        test_data.update({'hash': hash})
-        response = self.client.post('/test1/', test_data)
-        self.assertEqual(response.content, success_string)
-
diff --git a/webapp/django/contrib/formtools/wizard.py b/webapp/django/contrib/formtools/wizard.py
deleted file mode 100644
index 984b6e4..0000000
--- a/webapp/django/contrib/formtools/wizard.py
+++ /dev/null
@@ -1,247 +0,0 @@
-"""
-FormWizard class -- implements a multi-page form, validating between each
-step and storing the form's state as HTML hidden fields so that no state is
-stored on the server side.
-"""
-
-import cPickle as pickle
-
-from django import forms
-from django.conf import settings
-from django.http import Http404
-from django.shortcuts import render_to_response
-from django.template.context import RequestContext
-from django.utils.hashcompat import md5_constructor
-
-class FormWizard(object):
-    # Dictionary of extra template context variables.
-    extra_context = {}
-
-    # The HTML (and POST data) field name for the "step" variable.
-    step_field_name="wizard_step"
-
-    # METHODS SUBCLASSES SHOULDN'T OVERRIDE ###################################
-
-    def __init__(self, form_list, initial=None):
-        "form_list should be a list of Form classes (not instances)."
-        self.form_list = form_list[:]
-        self.initial = initial or {}
-        self.step = 0 # A zero-based counter keeping track of which step we're in.
-
-    def __repr__(self):
-        return "step: %d\nform_list: %s\ninitial_data: %s" % (self.step, self.form_list, self.initial)
-
-    def get_form(self, step, data=None):
-        "Helper method that returns the Form instance for the given step."
-        return self.form_list[step](data, prefix=self.prefix_for_step(step), initial=self.initial.get(step, None))
-
-    def num_steps(self):
-        "Helper method that returns the number of steps."
-        # You might think we should just set "self.form_list = len(form_list)"
-        # in __init__(), but this calculation needs to be dynamic, because some
-        # hook methods might alter self.form_list.
-        return len(self.form_list)
-
-    def __call__(self, request, *args, **kwargs):
-        """
-        Main method that does all the hard work, conforming to the Django view
-        interface.
-        """
-        if 'extra_context' in kwargs:
-            self.extra_context.update(kwargs['extra_context'])
-        current_step = self.determine_step(request, *args, **kwargs)
-        self.parse_params(request, *args, **kwargs)
-
-        # Sanity check.
-        if current_step >= self.num_steps():
-            raise Http404('Step %s does not exist' % current_step)
-
-        # For each previous step, verify the hash and process.
-        # TODO: Move "hash_%d" to a method to make it configurable.
-        for i in range(current_step):
-            form = self.get_form(i, request.POST)
-            if request.POST.get("hash_%d" % i, '') != self.security_hash(request, form):
-                return self.render_hash_failure(request, i)
-            self.process_step(request, form, i)
-
-        # Process the current step. If it's valid, go to the next step or call
-        # done(), depending on whether any steps remain.
-        if request.method == 'POST':
-            form = self.get_form(current_step, request.POST)
-        else:
-            form = self.get_form(current_step)
-        if form.is_valid():
-            self.process_step(request, form, current_step)
-            next_step = current_step + 1
-
-            # If this was the last step, validate all of the forms one more
-            # time, as a sanity check, and call done().
-            num = self.num_steps()
-            if next_step == num:
-                final_form_list = [self.get_form(i, request.POST) for i in range(num)]
-
-                # Validate all the forms. If any of them fail validation, that
-                # must mean the validator relied on some other input, such as
-                # an external Web site.
-                for i, f in enumerate(final_form_list):
-                    if not f.is_valid():
-                        return self.render_revalidation_failure(request, i, f)
-                return self.done(request, final_form_list)
-
-            # Otherwise, move along to the next step.
-            else:
-                form = self.get_form(next_step)
-                current_step = next_step
-
-        return self.render(form, request, current_step)
-
-    def render(self, form, request, step, context=None):
-        "Renders the given Form object, returning an HttpResponse."
-        old_data = request.POST
-        prev_fields = []
-        if old_data:
-            hidden = forms.HiddenInput()
-            # Collect all data from previous steps and render it as HTML hidden fields.
-            for i in range(step):
-                old_form = self.get_form(i, old_data)
-                hash_name = 'hash_%s' % i
-                prev_fields.extend([bf.as_hidden() for bf in old_form])
-                prev_fields.append(hidden.render(hash_name, old_data.get(hash_name, self.security_hash(request, old_form))))
-        return self.render_template(request, form, ''.join(prev_fields), step, context)
-
-    # METHODS SUBCLASSES MIGHT OVERRIDE IF APPROPRIATE ########################
-
-    def prefix_for_step(self, step):
-        "Given the step, returns a Form prefix to use."
-        return str(step)
-
-    def render_hash_failure(self, request, step):
-        """
-        Hook for rendering a template if a hash check failed.
-
-        step is the step that failed. Any previous step is guaranteed to be
-        valid.
-
-        This default implementation simply renders the form for the given step,
-        but subclasses may want to display an error message, etc.
-        """
-        return self.render(self.get_form(step), request, step, context={'wizard_error': 'We apologize, but your form has expired. Please continue filling out the form from this page.'})
-
-    def render_revalidation_failure(self, request, step, form):
-        """
-        Hook for rendering a template if final revalidation failed.
-
-        It is highly unlikely that this point would ever be reached, but See
-        the comment in __call__() for an explanation.
-        """
-        return self.render(form, request, step)
-
-    def security_hash(self, request, form):
-        """
-        Calculates the security hash for the given HttpRequest and Form instances.
-
-        This creates a list of the form field names/values in a deterministic
-        order, pickles the result with the SECRET_KEY setting and takes an md5
-        hash of that.
-
-        Subclasses may want to take into account request-specific information,
-        such as the IP address.
-        """
-        data = [(bf.name, bf.data or '') for bf in form] + [settings.SECRET_KEY]
-        # Use HIGHEST_PROTOCOL because it's the most efficient. It requires
-        # Python 2.3, but Django requires 2.3 anyway, so that's OK.
-        pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
-        return md5_constructor(pickled).hexdigest()
-
-    def determine_step(self, request, *args, **kwargs):
-        """
-        Given the request object and whatever *args and **kwargs were passed to
-        __call__(), returns the current step (which is zero-based).
-
-        Note that the result should not be trusted. It may even be a completely
-        invalid number. It's not the job of this method to validate it.
-        """
-        if not request.POST:
-            return 0
-        try:
-            step = int(request.POST.get(self.step_field_name, 0))
-        except ValueError:
-            return 0
-        return step
-
-    def parse_params(self, request, *args, **kwargs):
-        """
-        Hook for setting some state, given the request object and whatever
-        *args and **kwargs were passed to __call__(), sets some state.
-
-        This is called at the beginning of __call__().
-        """
-        pass
-
-    def get_template(self, step):
-        """
-        Hook for specifying the name of the template to use for a given step.
-
-        Note that this can return a tuple of template names if you'd like to
-        use the template system's select_template() hook.
-        """
-        return 'forms/wizard.html'
-
-    def render_template(self, request, form, previous_fields, step, context=None):
-        """
-        Renders the template for the given step, returning an HttpResponse object.
-
-        Override this method if you want to add a custom context, return a
-        different MIME type, etc. If you only need to override the template
-        name, use get_template() instead.
-
-        The template will be rendered with the following context:
-            step_field -- The name of the hidden field containing the step.
-            step0      -- The current step (zero-based).
-            step       -- The current step (one-based).
-            step_count -- The total number of steps.
-            form       -- The Form instance for the current step (either empty
-                          or with errors).
-            previous_fields -- A string representing every previous data field,
-                          plus hashes for completed forms, all in the form of
-                          hidden fields. Note that you'll need to run this
-                          through the "safe" template filter, to prevent
-                          auto-escaping, because it's raw HTML.
-        """
-        context = context or {}
-        context.update(self.extra_context)
-        return render_to_response(self.get_template(self.step), dict(context,
-            step_field=self.step_field_name,
-            step0=step,
-            step=step + 1,
-            step_count=self.num_steps(),
-            form=form,
-            previous_fields=previous_fields
-        ), context_instance=RequestContext(request))
-
-    def process_step(self, request, form, step):
-        """
-        Hook for modifying the FormWizard's internal state, given a fully
-        validated Form object. The Form is guaranteed to have clean, valid
-        data.
-
-        This method should *not* modify any of that data. Rather, it might want
-        to set self.extra_context or dynamically alter self.form_list, based on
-        previously submitted forms.
-
-        Note that this method is called every time a page is rendered for *all*
-        submitted steps.
-        """
-        pass
-
-    # METHODS SUBCLASSES MUST OVERRIDE ########################################
-
-    def done(self, request, form_list):
-        """
-        Hook for doing something with the validated data. This is responsible
-        for the final processing.
-
-        form_list is a list of Form instances, each containing clean, valid
-        data.
-        """
-        raise NotImplementedError("Your %s class has not defined a done() method, which is required." % self.__class__.__name__)
diff --git a/webapp/django/contrib/gis/__init__.py b/webapp/django/contrib/gis/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/admin/__init__.py b/webapp/django/contrib/gis/admin/__init__.py
deleted file mode 100644
index 20315c5..0000000
--- a/webapp/django/contrib/gis/admin/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Getting the normal admin routines, classes, and `site` instance.
-from django.contrib.admin import autodiscover, site, StackedInline, TabularInline, HORIZONTAL, VERTICAL
-
-# Geographic admin options classes and widgets.
-from django.contrib.gis.admin.options import GeoModelAdmin
-from django.contrib.gis.admin.widgets import OpenLayersWidget
-
-try:
-    from django.contrib.gis.admin.options import OSMGeoAdmin
-    HAS_OSM = True
-except ImportError:
-    HAS_OSM = False
diff --git a/webapp/django/contrib/gis/admin/options.py b/webapp/django/contrib/gis/admin/options.py
deleted file mode 100644
index 71fb87bf..0000000
--- a/webapp/django/contrib/gis/admin/options.py
+++ /dev/null
@@ -1,128 +0,0 @@
-from django.conf import settings
-from django.contrib.admin import ModelAdmin
-from django.contrib.gis.admin.widgets import OpenLayersWidget
-from django.contrib.gis.gdal import OGRGeomType
-from django.contrib.gis.db import models
-
-class GeoModelAdmin(ModelAdmin):
-    """
-    The administration options class for Geographic models. Map settings
-    may be overloaded from their defaults to create custom maps.
-    """
-    # The default map settings that may be overloaded -- still subject
-    # to API changes.
-    default_lon = 0
-    default_lat = 0
-    default_zoom = 4
-    display_wkt = False
-    display_srid = False
-    extra_js = []
-    num_zoom = 18
-    max_zoom = False
-    min_zoom = False
-    units = False
-    max_resolution = False
-    max_extent = False
-    modifiable = True
-    mouse_position = True
-    scale_text = True
-    layerswitcher = True
-    scrollable = True
-    admin_media_prefix = settings.ADMIN_MEDIA_PREFIX
-    map_width = 600
-    map_height = 400
-    map_srid = 4326
-    map_template = 'gis/admin/openlayers.html'
-    openlayers_url = 'http://openlayers.org/api/2.6/OpenLayers.js'
-    wms_url = 'http://labs.metacarta.com/wms/vmap0'
-    wms_layer = 'basic'
-    wms_name = 'OpenLayers WMS'
-    debug = False
-    widget = OpenLayersWidget
-
-    def _media(self):
-        "Injects OpenLayers JavaScript into the admin."
-        media = super(GeoModelAdmin, self)._media()
-        media.add_js([self.openlayers_url])
-        media.add_js(self.extra_js)
-        return media
-    media = property(_media)
-
-    def formfield_for_dbfield(self, db_field, **kwargs):
-        """
-        Overloaded from ModelAdmin so that an OpenLayersWidget is used
-        for viewing/editing GeometryFields.
-        """
-        if isinstance(db_field, models.GeometryField):
-            # Setting the widget with the newly defined widget.
-            kwargs['widget'] = self.get_map_widget(db_field)
-            return db_field.formfield(**kwargs)
-        else:
-            return super(GeoModelAdmin, self).formfield_for_dbfield(db_field, **kwargs)
-
-    def get_map_widget(self, db_field):
-        """
-        Returns a subclass of the OpenLayersWidget (or whatever was specified
-        in the `widget` attribute) using the settings from the attributes set 
-        in this class.
-        """
-        is_collection = db_field._geom in ('MULTIPOINT', 'MULTILINESTRING', 'MULTIPOLYGON', 'GEOMETRYCOLLECTION')
-        if is_collection:
-            if db_field._geom == 'GEOMETRYCOLLECTION': collection_type = 'Any'
-            else: collection_type = OGRGeomType(db_field._geom.replace('MULTI', ''))
-        else:
-            collection_type = 'None'
-
-        class OLMap(self.widget):
-            template = self.map_template
-            geom_type = db_field._geom
-            params = {'admin_media_prefix' : self.admin_media_prefix,
-                      'default_lon' : self.default_lon,
-                      'default_lat' : self.default_lat,
-                      'default_zoom' : self.default_zoom,
-                      'display_wkt' : self.debug or self.display_wkt,
-                      'geom_type' : OGRGeomType(db_field._geom),
-                      'field_name' : db_field.name,
-                      'is_collection' : is_collection,
-                      'scrollable' : self.scrollable,
-                      'layerswitcher' : self.layerswitcher,
-                      'collection_type' : collection_type,
-                      'is_linestring' : db_field._geom in ('LINESTRING', 'MULTILINESTRING'),
-                      'is_polygon' : db_field._geom in ('POLYGON', 'MULTIPOLYGON'),
-                      'is_point' : db_field._geom in ('POINT', 'MULTIPOINT'),
-                      'num_zoom' : self.num_zoom,
-                      'max_zoom' : self.max_zoom,
-                      'min_zoom' : self.min_zoom,
-                      'units' : self.units, #likely shoud get from object
-                      'max_resolution' : self.max_resolution,
-                      'max_extent' : self.max_extent,
-                      'modifiable' : self.modifiable,
-                      'mouse_position' : self.mouse_position,
-                      'scale_text' : self.scale_text,
-                      'map_width' : self.map_width,
-                      'map_height' : self.map_height,
-                      'srid' : self.map_srid,
-                      'display_srid' : self.display_srid,
-                      'wms_url' : self.wms_url,
-                      'wms_layer' : self.wms_layer,
-                      'wms_name' : self.wms_name,
-                      'debug' : self.debug,
-                      }
-        return OLMap
-
-# Using the Beta OSM in the admin requires the following:
-#  (1) The Google Maps Mercator projection needs to be added
-#      to your `spatial_ref_sys` table.  You'll need at least GDAL 1.5:
-#      >>> from django.contrib.gis.gdal import SpatialReference
-#      >>> from django.contrib.gis.utils import add_postgis_srs
-#      >>> add_postgis_srs(SpatialReference(900913)) # Adding the Google Projection 
-from django.contrib.gis import gdal
-if gdal.HAS_GDAL:
-    class OSMGeoAdmin(GeoModelAdmin):
-        map_template = 'gis/admin/osm.html'
-        extra_js = ['http://openstreetmap.org/openlayers/OpenStreetMap.js']
-        num_zoom = 20
-        map_srid = 900913
-        max_extent = '-20037508,-20037508,20037508,20037508'
-        max_resolution = 156543.0339
-        units = 'm'
diff --git a/webapp/django/contrib/gis/admin/widgets.py b/webapp/django/contrib/gis/admin/widgets.py
deleted file mode 100644
index 27abc8f..0000000
--- a/webapp/django/contrib/gis/admin/widgets.py
+++ /dev/null
@@ -1,92 +0,0 @@
-from django.contrib.gis.gdal import OGRException
-from django.contrib.gis.geos import GEOSGeometry, GEOSException
-from django.forms.widgets import Textarea
-from django.template.loader import render_to_string
-
-class OpenLayersWidget(Textarea):
-    """
-    Renders an OpenLayers map using the WKT of the geometry.
-    """
-    def render(self, name, value, attrs=None):
-        # Update the template parameters with any attributes passed in.
-        if attrs: self.params.update(attrs)
-
-        # Defaulting the WKT value to a blank string -- this
-        # will be tested in the JavaScript and the appropriate
-        # interfaace will be constructed.
-        self.params['wkt'] = ''
-
-        # If a string reaches here (via a validation error on another
-        # field) then just reconstruct the Geometry.
-        if isinstance(value, basestring):
-            try:
-                value = GEOSGeometry(value)
-            except (GEOSException, ValueError):
-                value = None
-
-        if value and value.geom_type.upper() != self.geom_type:
-            value = None
-
-        # Constructing the dictionary of the map options.
-        self.params['map_options'] = self.map_options()
-
-        # Constructing the JavaScript module name using the ID of
-        # the GeometryField (passed in via the `attrs` keyword).
-        self.params['module'] = 'geodjango_%s' % self.params['field_name']
-
-        if value:
-            # Transforming the geometry to the projection used on the
-            # OpenLayers map.
-            srid = self.params['srid']
-            if value.srid != srid: 
-                try:
-                    value.transform(srid)
-                    wkt = value.wkt
-                except OGRException:
-                    wkt = ''
-            else:
-                wkt = value.wkt
-               
-            # Setting the parameter WKT with that of the transformed
-            # geometry.
-            self.params['wkt'] = wkt
-
-        return render_to_string(self.template, self.params)
-    
-    def map_options(self):
-        "Builds the map options hash for the OpenLayers template."
-
-        # JavaScript construction utilities for the Bounds and Projection.
-        def ol_bounds(extent):
-            return 'new OpenLayers.Bounds(%s)' % str(extent)
-        def ol_projection(srid):
-            return 'new OpenLayers.Projection("EPSG:%s")' % srid
-
-        # An array of the parameter name, the name of their OpenLayers
-        # counterpart, and the type of variable they are.
-        map_types = [('srid', 'projection', 'srid'), 
-                     ('display_srid', 'displayProjection', 'srid'), 
-                     ('units', 'units', str),
-                     ('max_resolution', 'maxResolution', float),
-                     ('max_extent', 'maxExtent', 'bounds'),
-                     ('num_zoom', 'numZoomLevels', int),
-                     ('max_zoom', 'maxZoomLevels', int),
-                     ('min_zoom', 'minZoomLevel', int),
-                     ]
-
-        # Building the map options hash.
-        map_options = {}
-        for param_name, js_name, option_type in map_types:
-            if self.params.get(param_name, False):
-                if option_type == 'srid':
-                    value = ol_projection(self.params[param_name])
-                elif option_type == 'bounds':
-                    value = ol_bounds(self.params[param_name])
-                elif option_type in (float, int):
-                    value = self.params[param_name]
-                elif option_type in (str,):
-                    value = '"%s"' % self.params[param_name]
-                else:
-                    raise TypeError
-                map_options[js_name] = value
-        return map_options
diff --git a/webapp/django/contrib/gis/db/__init__.py b/webapp/django/contrib/gis/db/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/db/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/db/backend/__init__.py b/webapp/django/contrib/gis/db/backend/__init__.py
deleted file mode 100644
index 172c126..0000000
--- a/webapp/django/contrib/gis/db/backend/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-"""
- This module provides the backend for spatial SQL construction with Django.
-
- Specifically, this module will import the correct routines and modules
- needed for GeoDjango to interface with the spatial database.
-"""
-from django.conf import settings
-from django.contrib.gis.db.backend.util import gqn
-
-# Retrieving the necessary settings from the backend.
-if settings.DATABASE_ENGINE == 'postgresql_psycopg2':
-    from django.contrib.gis.db.backend.postgis import create_spatial_db, get_geo_where_clause, SpatialBackend
-elif settings.DATABASE_ENGINE == 'oracle':
-    from django.contrib.gis.db.backend.oracle import create_spatial_db, get_geo_where_clause, SpatialBackend
-elif settings.DATABASE_ENGINE == 'mysql':
-    from django.contrib.gis.db.backend.mysql import create_spatial_db, get_geo_where_clause, SpatialBackend
-else:
-    raise NotImplementedError('No Geographic Backend exists for %s' % settings.DATABASE_ENGINE)
diff --git a/webapp/django/contrib/gis/db/backend/adaptor.py b/webapp/django/contrib/gis/db/backend/adaptor.py
deleted file mode 100644
index b2397e6..0000000
--- a/webapp/django/contrib/gis/db/backend/adaptor.py
+++ /dev/null
@@ -1,14 +0,0 @@
-class WKTAdaptor(object):
-    """
-    This provides an adaptor for Geometries sent to the
-    MySQL and Oracle database backends.
-    """
-    def __init__(self, geom):
-        self.wkt = geom.wkt
-        self.srid = geom.srid
-
-    def __eq__(self, other):
-        return self.wkt == other.wkt and self.srid == other.srid 
-
-    def __str__(self):
-        return self.wkt
diff --git a/webapp/django/contrib/gis/db/backend/base.py b/webapp/django/contrib/gis/db/backend/base.py
deleted file mode 100644
index d45ac7b..0000000
--- a/webapp/django/contrib/gis/db/backend/base.py
+++ /dev/null
@@ -1,29 +0,0 @@
-"""
- This module holds the base `SpatialBackend` object, which is
- instantiated by each spatial backend with the features it has.
-"""
-# TODO: Create a `Geometry` protocol and allow user to use
-# different Geometry objects -- for now we just use GEOSGeometry.
-from django.contrib.gis.geos import GEOSGeometry, GEOSException
-
-class BaseSpatialBackend(object):
-    Geometry = GEOSGeometry
-    GeometryException = GEOSException
-
-    def __init__(self, **kwargs):
-        kwargs.setdefault('distance_functions', {})
-        kwargs.setdefault('limited_where', {})
-        for k, v in kwargs.iteritems(): setattr(self, k, v)
- 
-    def __getattr__(self, name):
-        """
-        All attributes of the spatial backend return False by default.
-        """
-        try:
-            return self.__dict__[name]
-        except KeyError:
-            return False
-            
-        
-        
-    
diff --git a/webapp/django/contrib/gis/db/backend/mysql/__init__.py b/webapp/django/contrib/gis/db/backend/mysql/__init__.py
deleted file mode 100644
index 0484e5f..0000000
--- a/webapp/django/contrib/gis/db/backend/mysql/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-__all__ = ['create_spatial_db', 'get_geo_where_clause', 'SpatialBackend']
-
-from django.contrib.gis.db.backend.base import BaseSpatialBackend
-from django.contrib.gis.db.backend.adaptor import WKTAdaptor
-from django.contrib.gis.db.backend.mysql.creation import create_spatial_db
-from django.contrib.gis.db.backend.mysql.field import MySQLGeoField
-from django.contrib.gis.db.backend.mysql.query import *
-
-SpatialBackend = BaseSpatialBackend(name='mysql', mysql=True,
-                                    gis_terms=MYSQL_GIS_TERMS,
-                                    select=GEOM_SELECT,
-                                    Adaptor=WKTAdaptor,
-                                    Field=MySQLGeoField)
diff --git a/webapp/django/contrib/gis/db/backend/mysql/creation.py b/webapp/django/contrib/gis/db/backend/mysql/creation.py
deleted file mode 100644
index 3da21a0..0000000
--- a/webapp/django/contrib/gis/db/backend/mysql/creation.py
+++ /dev/null
@@ -1,5 +0,0 @@
-
-def create_spatial_db(test=True, verbosity=1, autoclobber=False):
-    if not test: raise NotImplementedError('This uses `create_test_db` from test/utils.py')
-    from django.db import connection
-    connection.creation.create_test_db(verbosity, autoclobber)
diff --git a/webapp/django/contrib/gis/db/backend/mysql/field.py b/webapp/django/contrib/gis/db/backend/mysql/field.py
deleted file mode 100644
index f3151f9..0000000
--- a/webapp/django/contrib/gis/db/backend/mysql/field.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from django.db import connection
-from django.db.models.fields import Field # Django base Field class
-from django.contrib.gis.db.backend.mysql.query import GEOM_FROM_TEXT
-
-# Quotename & geographic quotename, respectively.
-qn = connection.ops.quote_name
-
-class MySQLGeoField(Field):
-    """
-    The backend-specific geographic field for MySQL.
-    """
-
-    def _geom_index(self, style, db_table):
-        """
-        Creates a spatial index for the geometry column.  If MyISAM tables are
-        used an R-Tree index is created, otherwise a B-Tree index is created. 
-        Thus, for best spatial performance, you should use MyISAM tables
-        (which do not support transactions).  For more information, see Ch. 
-        16.6.1 of the MySQL 5.0 documentation.
-        """
-
-        # Getting the index name.
-        idx_name = '%s_%s_id' % (db_table, self.column)
-        
-        sql = style.SQL_KEYWORD('CREATE SPATIAL INDEX ') + \
-              style.SQL_TABLE(qn(idx_name)) + \
-              style.SQL_KEYWORD(' ON ') + \
-              style.SQL_TABLE(qn(db_table)) + '(' + \
-              style.SQL_FIELD(qn(self.column)) + ');'
-        return sql
-
-    def _post_create_sql(self, style, db_table):
-        """
-        Returns SQL that will be executed after the model has been
-        created.
-        """
-        # Getting the geometric index for this Geometry column.
-        if self._index:
-            return (self._geom_index(style, db_table),)
-        else:
-            return ()
-
-    def db_type(self):
-        "The OpenGIS name is returned for the MySQL database column type."
-        return self._geom
-
-    def get_placeholder(self, value):
-        """
-        The placeholder here has to include MySQL's WKT constructor.  Because 
-        MySQL does not support spatial transformations, there is no need to 
-        modify the placeholder based on the contents of the given value.
-        """
-        return '%s(%%s)' % GEOM_FROM_TEXT
diff --git a/webapp/django/contrib/gis/db/backend/mysql/query.py b/webapp/django/contrib/gis/db/backend/mysql/query.py
deleted file mode 100644
index 2fa984f..0000000
--- a/webapp/django/contrib/gis/db/backend/mysql/query.py
+++ /dev/null
@@ -1,59 +0,0 @@
-"""
- This module contains the spatial lookup types, and the `get_geo_where_clause`
- routine for MySQL.
-
- Please note that MySQL only supports bounding box queries, also
- known as MBRs (Minimum Bounding Rectangles).  Moreover, spatial
- indices may only be used on MyISAM tables -- if you need 
- transactions, take a look at PostGIS.
-"""
-from django.db import connection
-qn = connection.ops.quote_name
-
-# To ease implementation, WKT is passed to/from MySQL.
-GEOM_FROM_TEXT = 'GeomFromText'
-GEOM_FROM_WKB = 'GeomFromWKB'
-GEOM_SELECT = 'AsText(%s)'
-
-# WARNING: MySQL is NOT compliant w/the OpenGIS specification and
-# _every_ one of these lookup types is on the _bounding box_ only.
-MYSQL_GIS_FUNCTIONS = {
-    'bbcontains' : 'MBRContains', # For consistency w/PostGIS API
-    'bboverlaps' : 'MBROverlaps', # .. ..
-    'contained' : 'MBRWithin',    # .. ..
-    'contains' : 'MBRContains',
-    'disjoint' : 'MBRDisjoint',
-    'equals' : 'MBREqual',
-    'exact' : 'MBREqual',
-    'intersects' : 'MBRIntersects',
-    'overlaps' : 'MBROverlaps',
-    'same_as' : 'MBREqual',
-    'touches' : 'MBRTouches',
-    'within' : 'MBRWithin',
-    }
-
-# This lookup type does not require a mapping.
-MISC_TERMS = ['isnull']
-
-# Assacceptable lookup types for Oracle spatial.
-MYSQL_GIS_TERMS  = MYSQL_GIS_FUNCTIONS.keys()
-MYSQL_GIS_TERMS += MISC_TERMS
-MYSQL_GIS_TERMS = dict((term, None) for term in MYSQL_GIS_TERMS) # Making dictionary 
-
-def get_geo_where_clause(table_alias, name, lookup_type, geo_annot):
-    "Returns the SQL WHERE clause for use in MySQL spatial SQL construction."
-    # Getting the quoted field as `geo_col`.
-    geo_col = '%s.%s' % (qn(table_alias), qn(name))
-
-    # See if a MySQL Geometry function matches the lookup type next
-    lookup_info = MYSQL_GIS_FUNCTIONS.get(lookup_type, False)
-    if lookup_info:
-        return "%s(%s, %%s)" % (lookup_info, geo_col)
-    
-    # Handling 'isnull' lookup type
-    # TODO: Is this needed because MySQL cannot handle NULL
-    # geometries in its spatial indices.
-    if lookup_type == 'isnull':
-        return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or ''))
-
-    raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))
diff --git a/webapp/django/contrib/gis/db/backend/oracle/__init__.py b/webapp/django/contrib/gis/db/backend/oracle/__init__.py
deleted file mode 100644
index 3eee56e..0000000
--- a/webapp/django/contrib/gis/db/backend/oracle/__init__.py
+++ /dev/null
@@ -1,31 +0,0 @@
-__all__ = ['create_spatial_db', 'get_geo_where_clause', 'SpatialBackend']
-
-from django.contrib.gis.db.backend.base import BaseSpatialBackend
-from django.contrib.gis.db.backend.oracle.adaptor import OracleSpatialAdaptor
-from django.contrib.gis.db.backend.oracle.creation import create_spatial_db
-from django.contrib.gis.db.backend.oracle.field import OracleSpatialField
-from django.contrib.gis.db.backend.oracle.query import *
-
-SpatialBackend = BaseSpatialBackend(name='oracle', oracle=True,
-                                    area=AREA,
-                                    centroid=CENTROID,
-                                    difference=DIFFERENCE,
-                                    distance=DISTANCE,
-                                    distance_functions=DISTANCE_FUNCTIONS,
-                                    gis_terms=ORACLE_SPATIAL_TERMS,
-                                    gml=ASGML,
-                                    intersection=INTERSECTION,
-                                    length=LENGTH,
-                                    limited_where = {'relate' : None},
-                                    num_geom=NUM_GEOM,
-                                    num_points=NUM_POINTS,
-                                    perimeter=LENGTH,
-                                    point_on_surface=POINT_ON_SURFACE,
-                                    select=GEOM_SELECT,
-                                    sym_difference=SYM_DIFFERENCE,
-                                    transform=TRANSFORM,
-                                    unionagg=UNIONAGG,
-                                    union=UNION,
-                                    Adaptor=OracleSpatialAdaptor,
-                                    Field=OracleSpatialField,
-                                    )
diff --git a/webapp/django/contrib/gis/db/backend/oracle/adaptor.py b/webapp/django/contrib/gis/db/backend/oracle/adaptor.py
deleted file mode 100644
index 95dc265..0000000
--- a/webapp/django/contrib/gis/db/backend/oracle/adaptor.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from cx_Oracle import CLOB
-from django.contrib.gis.db.backend.adaptor import WKTAdaptor
-
-class OracleSpatialAdaptor(WKTAdaptor):
-    input_size = CLOB
diff --git a/webapp/django/contrib/gis/db/backend/oracle/creation.py b/webapp/django/contrib/gis/db/backend/oracle/creation.py
deleted file mode 100644
index d9b53d2..0000000
--- a/webapp/django/contrib/gis/db/backend/oracle/creation.py
+++ /dev/null
@@ -1,6 +0,0 @@
-
-def create_spatial_db(test=True, verbosity=1, autoclobber=False):
-    "A wrapper over the Oracle `create_test_db` routine."
-    if not test: raise NotImplementedError('This uses `create_test_db` from db/backends/oracle/creation.py')
-    from django.db import connection
-    connection.creation.create_test_db(verbosity, autoclobber)
diff --git a/webapp/django/contrib/gis/db/backend/oracle/field.py b/webapp/django/contrib/gis/db/backend/oracle/field.py
deleted file mode 100644
index 22625f5..0000000
--- a/webapp/django/contrib/gis/db/backend/oracle/field.py
+++ /dev/null
@@ -1,103 +0,0 @@
-from django.db import connection
-from django.db.backends.util import truncate_name
-from django.db.models.fields import Field # Django base Field class
-from django.contrib.gis.db.backend.util import gqn
-from django.contrib.gis.db.backend.oracle.query import TRANSFORM
-
-# Quotename & geographic quotename, respectively.
-qn = connection.ops.quote_name
-
-class OracleSpatialField(Field):
-    """
-    The backend-specific geographic field for Oracle Spatial.
-    """
-
-    empty_strings_allowed = False
-
-    def __init__(self, extent=(-180.0, -90.0, 180.0, 90.0), tolerance=0.05, **kwargs):
-        """
-        Oracle Spatial backend needs to have the extent -- for projected coordinate
-        systems _you must define the extent manually_, since the coordinates are
-        for geodetic systems.  The `tolerance` keyword specifies the tolerance
-        for error (in meters), and defaults to 0.05 (5 centimeters).
-        """
-        # Oracle Spatial specific keyword arguments.
-        self._extent = extent
-        self._tolerance = tolerance
-        # Calling the Django field initialization.
-        super(OracleSpatialField, self).__init__(**kwargs)
-
-    def _add_geom(self, style, db_table):
-        """
-        Adds this geometry column into the Oracle USER_SDO_GEOM_METADATA
-        table.
-        """
-
-        # Checking the dimensions.
-        # TODO: Add support for 3D geometries.
-        if self._dim != 2:
-            raise Exception('3D geometries not yet supported on Oracle Spatial backend.')
-
-        # Constructing the SQL that will be used to insert information about
-        # the geometry column into the USER_GSDO_GEOM_METADATA table.
-        meta_sql = style.SQL_KEYWORD('INSERT INTO ') + \
-                   style.SQL_TABLE('USER_SDO_GEOM_METADATA') + \
-                   ' (%s, %s, %s, %s)\n  ' % tuple(map(qn, ['TABLE_NAME', 'COLUMN_NAME', 'DIMINFO', 'SRID'])) + \
-                   style.SQL_KEYWORD(' VALUES ') + '(\n    ' + \
-                   style.SQL_TABLE(gqn(db_table)) + ',\n    ' + \
-                   style.SQL_FIELD(gqn(self.column)) + ',\n    ' + \
-                   style.SQL_KEYWORD("MDSYS.SDO_DIM_ARRAY") + '(\n      ' + \
-                   style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") + \
-                   ("('LONG', %s, %s, %s),\n      " % (self._extent[0], self._extent[2], self._tolerance)) + \
-                   style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") + \
-                   ("('LAT', %s, %s, %s)\n    ),\n" % (self._extent[1], self._extent[3], self._tolerance)) + \
-                   '    %s\n  );' % self._srid
-        return meta_sql
-
-    def _geom_index(self, style, db_table):
-        "Creates an Oracle Geometry index (R-tree) for this geometry field."
-
-        # Getting the index name, Oracle doesn't allow object
-        # names > 30 characters.
-        idx_name = truncate_name('%s_%s_id' % (db_table, self.column), 30)
-        
-        sql = style.SQL_KEYWORD('CREATE INDEX ') + \
-              style.SQL_TABLE(qn(idx_name)) + \
-              style.SQL_KEYWORD(' ON ') + \
-              style.SQL_TABLE(qn(db_table)) + '(' + \
-              style.SQL_FIELD(qn(self.column)) + ') ' + \
-              style.SQL_KEYWORD('INDEXTYPE IS ') + \
-              style.SQL_TABLE('MDSYS.SPATIAL_INDEX') + ';'
-        return sql
-
-    def post_create_sql(self, style, db_table):
-        """
-        Returns SQL that will be executed after the model has been
-        created.
-        """
-        # Getting the meta geometry information.
-        post_sql = self._add_geom(style, db_table)
-
-        # Getting the geometric index for this Geometry column.
-        if self._index:
-            return (post_sql, self._geom_index(style, db_table))
-        else:
-            return (post_sql,)
-
-    def db_type(self):
-        "The Oracle geometric data type is MDSYS.SDO_GEOMETRY."
-        return 'MDSYS.SDO_GEOMETRY'
-        
-    def get_placeholder(self, value):
-        """
-        Provides a proper substitution value for Geometries that are not in the
-        SRID of the field.  Specifically, this routine will substitute in the
-        SDO_CS.TRANSFORM() function call.
-        """
-        if value is None:
-            return '%s'
-        elif value.srid != self._srid:
-            # Adding Transform() to the SQL placeholder.
-            return '%s(SDO_GEOMETRY(%%s, %s), %s)' % (TRANSFORM, value.srid, self._srid)
-        else:
-            return 'SDO_GEOMETRY(%%s, %s)' % self._srid
diff --git a/webapp/django/contrib/gis/db/backend/oracle/models.py b/webapp/django/contrib/gis/db/backend/oracle/models.py
deleted file mode 100644
index c740b48..0000000
--- a/webapp/django/contrib/gis/db/backend/oracle/models.py
+++ /dev/null
@@ -1,49 +0,0 @@
-"""
- The GeometryColumns and SpatialRefSys models for the Oracle spatial
- backend.
-
- It should be noted that Oracle Spatial does not have database tables
- named according to the OGC standard, so the closest analogs are used.
- For example, the `USER_SDO_GEOM_METADATA` is used for the GeometryColumns
- model and the `SDO_COORD_REF_SYS` is used for the SpatialRefSys model.
-"""
-from django.db import models
-from django.contrib.gis.models import SpatialRefSysMixin
-
-class GeometryColumns(models.Model):
-    "Maps to the Oracle USER_SDO_GEOM_METADATA table."
-    table_name = models.CharField(max_length=32)
-    column_name = models.CharField(max_length=1024)
-    srid = models.IntegerField(primary_key=True)
-    # TODO: Add support for `diminfo` column (type MDSYS.SDO_DIM_ARRAY).
-    class Meta:
-        db_table = 'USER_SDO_GEOM_METADATA'
-
-    @classmethod
-    def table_name_col(cls):
-        return 'table_name'
-
-    def __unicode__(self):
-        return '%s - %s (SRID: %s)' % (self.table_name, self.column_name, self.srid)
-
-class SpatialRefSys(models.Model, SpatialRefSysMixin):
-    "Maps to the Oracle MDSYS.CS_SRS table."
-    cs_name = models.CharField(max_length=68)
-    srid = models.IntegerField(primary_key=True)
-    auth_srid = models.IntegerField()
-    auth_name = models.CharField(max_length=256)
-    wktext = models.CharField(max_length=2046)
-    #cs_bounds = models.GeometryField()
-
-    class Meta:
-        # TODO: Figure out way to have this be MDSYS.CS_SRS without
-        #  having django's quoting mess up the SQL.
-        db_table = 'CS_SRS'
-
-    @property
-    def wkt(self):
-        return self.wktext
-
-    @classmethod
-    def wkt_col(cls):
-        return 'wktext'
diff --git a/webapp/django/contrib/gis/db/backend/oracle/query.py b/webapp/django/contrib/gis/db/backend/oracle/query.py
deleted file mode 100644
index dcf6f67..0000000
--- a/webapp/django/contrib/gis/db/backend/oracle/query.py
+++ /dev/null
@@ -1,154 +0,0 @@
-"""
- This module contains the spatial lookup types, and the `get_geo_where_clause`
- routine for Oracle Spatial.
-
- Please note that WKT support is broken on the XE version, and thus
- this backend will not work on such platforms.  Specifically, XE lacks 
- support for an internal JVM, and Java libraries are required to use 
- the WKT constructors.
-"""
-import re
-from decimal import Decimal
-from django.db import connection
-from django.contrib.gis.db.backend.util import SpatialFunction
-from django.contrib.gis.measure import Distance
-qn = connection.ops.quote_name
-
-# The GML, distance, transform, and union procedures.
-AREA = 'SDO_GEOM.SDO_AREA'
-ASGML = 'SDO_UTIL.TO_GMLGEOMETRY'
-CENTROID = 'SDO_GEOM.SDO_CENTROID'
-DIFFERENCE = 'SDO_GEOM.SDO_DIFFERENCE'
-DISTANCE = 'SDO_GEOM.SDO_DISTANCE'
-EXTENT = 'SDO_AGGR_MBR'
-INTERSECTION = 'SDO_GEOM.SDO_INTERSECTION'
-LENGTH = 'SDO_GEOM.SDO_LENGTH'
-NUM_GEOM = 'SDO_UTIL.GETNUMELEM'
-NUM_POINTS = 'SDO_UTIL.GETNUMVERTICES'
-POINT_ON_SURFACE = 'SDO_GEOM.SDO_POINTONSURFACE'
-SYM_DIFFERENCE = 'SDO_GEOM.SDO_XOR'
-TRANSFORM = 'SDO_CS.TRANSFORM'
-UNION = 'SDO_GEOM.SDO_UNION'
-UNIONAGG = 'SDO_AGGR_UNION'
-
-# We want to get SDO Geometries as WKT because it is much easier to 
-# instantiate GEOS proxies from WKT than SDO_GEOMETRY(...) strings.  
-# However, this adversely affects performance (i.e., Java is called 
-# to convert to WKT on every query).  If someone wishes to write a 
-# SDO_GEOMETRY(...) parser in Python, let me know =)
-GEOM_SELECT = 'SDO_UTIL.TO_WKTGEOMETRY(%s)'
-
-#### Classes used in constructing Oracle spatial SQL ####
-class SDOOperation(SpatialFunction):
-    "Base class for SDO* Oracle operations."
-    def __init__(self, func, **kwargs):
-        kwargs.setdefault('operator', '=')
-        kwargs.setdefault('result', 'TRUE')
-        kwargs.setdefault('end_subst', ") %s '%s'")
-        super(SDOOperation, self).__init__(func, **kwargs)
-
-class SDODistance(SpatialFunction):
-    "Class for Distance queries."
-    def __init__(self, op, tolerance=0.05):
-        super(SDODistance, self).__init__(DISTANCE, end_subst=', %s) %%s %%s' % tolerance, 
-                                          operator=op, result='%%s')
-
-class SDOGeomRelate(SpatialFunction):
-    "Class for using SDO_GEOM.RELATE."
-    def __init__(self, mask, tolerance=0.05):
-        # SDO_GEOM.RELATE(...) has a peculiar argument order: column, mask, geom, tolerance.
-        # Moreover, the runction result is the mask (e.g., 'DISJOINT' instead of 'TRUE').
-        end_subst = "%s%s) %s '%s'" % (', %%s, ', tolerance, '=', mask)
-        beg_subst = "%%s(%%s, '%s'" % mask 
-        super(SDOGeomRelate, self).__init__('SDO_GEOM.RELATE', beg_subst=beg_subst, end_subst=end_subst)
-
-class SDORelate(SpatialFunction):
-    "Class for using SDO_RELATE."
-    masks = 'TOUCH|OVERLAPBDYDISJOINT|OVERLAPBDYINTERSECT|EQUAL|INSIDE|COVEREDBY|CONTAINS|COVERS|ANYINTERACT|ON'
-    mask_regex = re.compile(r'^(%s)(\+(%s))*$' % (masks, masks), re.I)
-    def __init__(self, mask):
-        func = 'SDO_RELATE'
-        if not self.mask_regex.match(mask):
-            raise ValueError('Invalid %s mask: "%s"' % (func, mask))
-        super(SDORelate, self).__init__(func, end_subst=", 'mask=%s') = 'TRUE'" % mask)
-
-#### Lookup type mapping dictionaries of Oracle spatial operations ####
-
-# Valid distance types and substitutions
-dtypes = (Decimal, Distance, float, int, long)
-DISTANCE_FUNCTIONS = {
-    'distance_gt' : (SDODistance('>'), dtypes),
-    'distance_gte' : (SDODistance('>='), dtypes),
-    'distance_lt' : (SDODistance('<'), dtypes),
-    'distance_lte' : (SDODistance('<='), dtypes),
-    'dwithin' : (SDOOperation('SDO_WITHIN_DISTANCE', 
-                              beg_subst="%s(%s, %%s, 'distance=%%s'"), dtypes),
-    }
-
-ORACLE_GEOMETRY_FUNCTIONS = {
-    'contains' : SDOOperation('SDO_CONTAINS'),
-    'coveredby' : SDOOperation('SDO_COVEREDBY'),
-    'covers' : SDOOperation('SDO_COVERS'),
-    'disjoint' : SDOGeomRelate('DISJOINT'),
-    'intersects' : SDOOperation('SDO_OVERLAPBDYINTERSECT'), # TODO: Is this really the same as ST_Intersects()?
-    'equals' : SDOOperation('SDO_EQUAL'),
-    'exact' : SDOOperation('SDO_EQUAL'),
-    'overlaps' : SDOOperation('SDO_OVERLAPS'),
-    'same_as' : SDOOperation('SDO_EQUAL'),
-    'relate' : (SDORelate, basestring), # Oracle uses a different syntax, e.g., 'mask=inside+touch'
-    'touches' : SDOOperation('SDO_TOUCH'),
-    'within' : SDOOperation('SDO_INSIDE'),
-    }
-ORACLE_GEOMETRY_FUNCTIONS.update(DISTANCE_FUNCTIONS)
-
-# This lookup type does not require a mapping.
-MISC_TERMS = ['isnull']
-
-# Acceptable lookup types for Oracle spatial.
-ORACLE_SPATIAL_TERMS  = ORACLE_GEOMETRY_FUNCTIONS.keys()
-ORACLE_SPATIAL_TERMS += MISC_TERMS
-ORACLE_SPATIAL_TERMS = dict((term, None) for term in ORACLE_SPATIAL_TERMS) # Making dictionary for fast lookups
-
-#### The `get_geo_where_clause` function for Oracle ####
-def get_geo_where_clause(table_alias, name, lookup_type, geo_annot):
-    "Returns the SQL WHERE clause for use in Oracle spatial SQL construction."
-    # Getting the quoted table name as `geo_col`.
-    geo_col = '%s.%s' % (qn(table_alias), qn(name))
-
-    # See if a Oracle Geometry function matches the lookup type next
-    lookup_info = ORACLE_GEOMETRY_FUNCTIONS.get(lookup_type, False)
-    if lookup_info:
-        # Lookup types that are tuples take tuple arguments, e.g., 'relate' and 
-        # 'dwithin' lookup types.
-        if isinstance(lookup_info, tuple):
-            # First element of tuple is lookup type, second element is the type
-            # of the expected argument (e.g., str, float)
-            sdo_op, arg_type = lookup_info
-
-            # Ensuring that a tuple _value_ was passed in from the user
-            if not isinstance(geo_annot.value, tuple):
-                raise TypeError('Tuple required for `%s` lookup type.' % lookup_type)
-            if len(geo_annot.value) != 2: 
-                raise ValueError('2-element tuple required for %s lookup type.' % lookup_type)
-            
-            # Ensuring the argument type matches what we expect.
-            if not isinstance(geo_annot.value[1], arg_type):
-                raise TypeError('Argument type should be %s, got %s instead.' % (arg_type, type(geo_annot.value[1])))
-
-            if lookup_type == 'relate':
-                # The SDORelate class handles construction for these queries, 
-                # and verifies the mask argument.
-                return sdo_op(geo_annot.value[1]).as_sql(geo_col)
-            else:
-                # Otherwise, just call the `as_sql` method on the SDOOperation instance.
-                return sdo_op.as_sql(geo_col)
-        else:
-            # Lookup info is a SDOOperation instance, whose `as_sql` method returns
-            # the SQL necessary for the geometry function call. For example:  
-            #  SDO_CONTAINS("geoapp_country"."poly", SDO_GEOMTRY('POINT(5 23)', 4326)) = 'TRUE'
-            return lookup_info.as_sql(geo_col)
-    elif lookup_type == 'isnull':
-        # Handling 'isnull' lookup type
-        return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or ''))
-
-    raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))
diff --git a/webapp/django/contrib/gis/db/backend/postgis/__init__.py b/webapp/django/contrib/gis/db/backend/postgis/__init__.py
deleted file mode 100644
index 8a4d09e..0000000
--- a/webapp/django/contrib/gis/db/backend/postgis/__init__.py
+++ /dev/null
@@ -1,42 +0,0 @@
-__all__ = ['create_spatial_db', 'get_geo_where_clause', 'SpatialBackend']
-
-from django.contrib.gis.db.backend.base import BaseSpatialBackend
-from django.contrib.gis.db.backend.postgis.adaptor import PostGISAdaptor
-from django.contrib.gis.db.backend.postgis.creation import create_spatial_db
-from django.contrib.gis.db.backend.postgis.field import PostGISField
-from django.contrib.gis.db.backend.postgis.query import *
-
-SpatialBackend = BaseSpatialBackend(name='postgis', postgis=True,
-                                    area=AREA,
-                                    centroid=CENTROID,
-                                    difference=DIFFERENCE,
-                                    distance=DISTANCE,
-                                    distance_functions=DISTANCE_FUNCTIONS,
-                                    distance_sphere=DISTANCE_SPHERE,
-                                    distance_spheroid=DISTANCE_SPHEROID,
-                                    envelope=ENVELOPE,
-                                    extent=EXTENT,
-                                    gis_terms=POSTGIS_TERMS,
-                                    gml=ASGML,
-                                    intersection=INTERSECTION,
-                                    kml=ASKML,
-                                    length=LENGTH,
-                                    length_spheroid=LENGTH_SPHEROID,
-                                    make_line=MAKE_LINE,
-                                    mem_size=MEM_SIZE,
-                                    num_geom=NUM_GEOM,
-                                    num_points=NUM_POINTS,
-                                    perimeter=PERIMETER,
-                                    point_on_surface=POINT_ON_SURFACE,
-                                    scale=SCALE,
-                                    select=GEOM_SELECT,
-                                    svg=ASSVG,
-                                    sym_difference=SYM_DIFFERENCE,
-                                    transform=TRANSFORM,
-                                    translate=TRANSLATE,
-                                    union=UNION,
-                                    unionagg=UNIONAGG,
-                                    version=(MAJOR_VERSION, MINOR_VERSION1, MINOR_VERSION2),
-                                    Adaptor=PostGISAdaptor,
-                                    Field=PostGISField,
-                                    )
diff --git a/webapp/django/contrib/gis/db/backend/postgis/adaptor.py b/webapp/django/contrib/gis/db/backend/postgis/adaptor.py
deleted file mode 100644
index c094a98..0000000
--- a/webapp/django/contrib/gis/db/backend/postgis/adaptor.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""
- This object provides quoting for GEOS geometries into PostgreSQL/PostGIS.
-"""
-
-from django.contrib.gis.db.backend.postgis.query import GEOM_FROM_WKB
-from psycopg2 import Binary
-from psycopg2.extensions import ISQLQuote
-
-class PostGISAdaptor(object):
-    def __init__(self, geom):
-        "Initializes on the geometry."
-        # Getting the WKB (in string form, to allow easy pickling of
-        # the adaptor) and the SRID from the geometry.
-        self.wkb = str(geom.wkb)
-        self.srid = geom.srid
-
-    def __conform__(self, proto):
-        # Does the given protocol conform to what Psycopg2 expects?
-        if proto == ISQLQuote:
-            return self
-        else:
-            raise Exception('Error implementing psycopg2 protocol. Is psycopg2 installed?')
-
-    def __eq__(self, other):
-        return (self.wkb == other.wkb) and (self.srid == other.srid)
-
-    def __str__(self):
-        return self.getquoted()
-
-    def getquoted(self):
-        "Returns a properly quoted string for use in PostgreSQL/PostGIS."
-        # Want to use WKB, so wrap with psycopg2 Binary() to quote properly.
-        return "%s(%s, %s)" % (GEOM_FROM_WKB, Binary(self.wkb), self.srid or -1)
diff --git a/webapp/django/contrib/gis/db/backend/postgis/creation.py b/webapp/django/contrib/gis/db/backend/postgis/creation.py
deleted file mode 100644
index 44d9346..0000000
--- a/webapp/django/contrib/gis/db/backend/postgis/creation.py
+++ /dev/null
@@ -1,224 +0,0 @@
-import os, re, sys
-
-from django.conf import settings
-from django.core.management import call_command
-from django.db import connection
-from django.db.backends.creation import TEST_DATABASE_PREFIX
-
-def getstatusoutput(cmd):
-    "A simpler version of getstatusoutput that works on win32 platforms."
-    stdin, stdout, stderr = os.popen3(cmd)
-    output = stdout.read()
-    if output.endswith('\n'): output = output[:-1]
-    status = stdin.close()
-    return status, output
-
-def create_lang(db_name, verbosity=1):
-    "Sets up the pl/pgsql language on the given database."
-
-    # Getting the command-line options for the shell command
-    options = get_cmd_options(db_name)
-
-    # Constructing the 'createlang' command.
-    createlang_cmd = 'createlang %splpgsql' % options
-    if verbosity >= 1: print createlang_cmd
-
-    # Must have database super-user privileges to execute createlang -- it must
-    #  also be in your path.
-    status, output = getstatusoutput(createlang_cmd)
-
-    # Checking the status of the command, 0 => execution successful
-    if status:
-        raise Exception("Error executing 'plpgsql' command: %s\n" % output)
-
-def _create_with_cursor(db_name, verbosity=1, autoclobber=False):
-    "Creates database with psycopg2 cursor."
-
-    # Constructing the necessary SQL to create the database (the DATABASE_USER
-    #  must possess the privileges to create a database)
-    create_sql = 'CREATE DATABASE %s' % connection.ops.quote_name(db_name)
-    if settings.DATABASE_USER:
-        create_sql += ' OWNER %s' % settings.DATABASE_USER
-
-    cursor = connection.cursor()
-    connection.creation.set_autocommit()
-
-    try:
-        # Trying to create the database first.
-        cursor.execute(create_sql)
-        #print create_sql
-    except Exception, e:
-        # Drop and recreate, if necessary.
-        if not autoclobber:
-            confirm = raw_input("\nIt appears the database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % db_name)
-        if autoclobber or confirm == 'yes':
-            if verbosity >= 1: print 'Destroying old spatial database...'
-            drop_db(db_name)
-            if verbosity >= 1: print 'Creating new spatial database...'
-            cursor.execute(create_sql)
-        else:
-            raise Exception('Spatial Database Creation canceled.')
-
-created_regex = re.compile(r'^createdb: database creation failed: ERROR:  database ".+" already exists')
-def _create_with_shell(db_name, verbosity=1, autoclobber=False):
-    """
-    If no spatial database already exists, then using a cursor will not work.
-     Thus, a `createdb` command will be issued through the shell to bootstrap
-     creation of the spatial database.
-    """
-
-    # Getting the command-line options for the shell command
-    options = get_cmd_options(False)
-    create_cmd = 'createdb -O %s %s%s' % (settings.DATABASE_USER, options, db_name)
-    if verbosity >= 1: print create_cmd
-
-    # Attempting to create the database.
-    status, output = getstatusoutput(create_cmd)
-
-    if status:
-        if created_regex.match(output):
-            if not autoclobber:
-                confirm = raw_input("\nIt appears the database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % db_name)
-            if autoclobber or confirm == 'yes':
-                if verbosity >= 1: print 'Destroying old spatial database...'
-                drop_cmd = 'dropdb %s%s' % (options, db_name)
-                status, output = getstatusoutput(drop_cmd)
-                if status != 0:
-                    raise Exception('Could not drop database %s: %s' % (db_name, output))
-                if verbosity >= 1: print 'Creating new spatial database...'
-                status, output = getstatusoutput(create_cmd)
-                if status != 0:
-                    raise Exception('Could not create database after dropping: %s' % output)
-            else:
-                raise Exception('Spatial Database Creation canceled.')
-        else:
-            raise Exception('Unknown error occurred in creating database: %s' % output)
-
-def create_spatial_db(test=False, verbosity=1, autoclobber=False, interactive=False):
-    "Creates a spatial database based on the settings."
-
-    # Making sure we're using PostgreSQL and psycopg2
-    if settings.DATABASE_ENGINE != 'postgresql_psycopg2':
-        raise Exception('Spatial database creation only supported postgresql_psycopg2 platform.')
-
-    # Getting the spatial database name
-    if test:
-        db_name = get_spatial_db(test=True)
-        _create_with_cursor(db_name, verbosity=verbosity, autoclobber=autoclobber)
-    else:
-        db_name = get_spatial_db()
-        _create_with_shell(db_name, verbosity=verbosity, autoclobber=autoclobber)
-
-    # Creating the db language, does not need to be done on NT platforms
-    #  since the PostGIS installer enables this capability.
-    if os.name != 'nt':
-        create_lang(db_name, verbosity=verbosity)
-
-    # Now adding in the PostGIS routines.
-    load_postgis_sql(db_name, verbosity=verbosity)
-
-    if verbosity >= 1: print 'Creation of spatial database %s successful.' % db_name
-
-    # Closing the connection
-    connection.close()
-    settings.DATABASE_NAME = db_name
-
-    # Syncing the database
-    call_command('syncdb', verbosity=verbosity, interactive=interactive)
-
-def drop_db(db_name=False, test=False):
-    """
-    Drops the given database (defaults to what is returned from
-     get_spatial_db()). All exceptions are propagated up to the caller.
-    """
-    if not db_name: db_name = get_spatial_db(test=test)
-    cursor = connection.cursor()
-    cursor.execute('DROP DATABASE %s' % connection.ops.quote_name(db_name))
-
-def get_cmd_options(db_name):
-    "Obtains the command-line PostgreSQL connection options for shell commands."
-    # The db_name parameter is optional
-    options = ''
-    if db_name:
-        options += '-d %s ' % db_name
-    if settings.DATABASE_USER:
-        options += '-U %s ' % settings.DATABASE_USER
-    if settings.DATABASE_HOST:
-        options += '-h %s ' % settings.DATABASE_HOST
-    if settings.DATABASE_PORT:
-        options += '-p %s ' % settings.DATABASE_PORT
-    return options
-
-def get_spatial_db(test=False):
-    """
-    Returns the name of the spatial database.  The 'test' keyword may be set
-     to return the test spatial database name.
-    """
-    if test:
-        if settings.TEST_DATABASE_NAME:
-            test_db_name = settings.TEST_DATABASE_NAME
-        else:
-            test_db_name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME
-        return test_db_name
-    else:
-        if not settings.DATABASE_NAME:
-            raise Exception('must configure DATABASE_NAME in settings.py')
-        return settings.DATABASE_NAME
-
-def load_postgis_sql(db_name, verbosity=1):
-    """
-    This routine loads up the PostGIS SQL files lwpostgis.sql and
-     spatial_ref_sys.sql.
-    """
-
-    # Getting the path to the PostGIS SQL
-    try:
-        # POSTGIS_SQL_PATH may be placed in settings to tell GeoDjango where the
-        #  PostGIS SQL files are located.  This is especially useful on Win32
-        #  platforms since the output of pg_config looks like "C:/PROGRA~1/..".
-        sql_path = settings.POSTGIS_SQL_PATH
-    except AttributeError:
-        status, sql_path = getstatusoutput('pg_config --sharedir')
-        if status:
-            sql_path = '/usr/local/share'
-
-    # The PostGIS SQL post-creation files.
-    lwpostgis_file = os.path.join(sql_path, 'lwpostgis.sql')
-    srefsys_file = os.path.join(sql_path, 'spatial_ref_sys.sql')
-    if not os.path.isfile(lwpostgis_file):
-        raise Exception('Could not find PostGIS function definitions in %s' % lwpostgis_file)
-    if not os.path.isfile(srefsys_file):
-        raise Exception('Could not find PostGIS spatial reference system definitions in %s' % srefsys_file)
-
-    # Getting the psql command-line options, and command format.
-    options = get_cmd_options(db_name)
-    cmd_fmt = 'psql %s-f "%%s"' % options
-
-    # Now trying to load up the PostGIS functions
-    cmd = cmd_fmt % lwpostgis_file
-    if verbosity >= 1: print cmd
-    status, output = getstatusoutput(cmd)
-    if status:
-        raise Exception('Error in loading PostGIS lwgeometry routines.')
-
-    # Now trying to load up the Spatial Reference System table
-    cmd = cmd_fmt % srefsys_file
-    if verbosity >= 1: print cmd
-    status, output = getstatusoutput(cmd)
-    if status:
-        raise Exception('Error in loading PostGIS spatial_ref_sys table.')
-
-    # Setting the permissions because on Windows platforms the owner
-    #  of the spatial_ref_sys and geometry_columns tables is always
-    #  the postgres user, regardless of how the db is created.
-    if os.name == 'nt': set_permissions(db_name)
-
-def set_permissions(db_name):
-    """
-    Sets the permissions on the given database to that of the user specified
-     in the settings.  Needed specifically for PostGIS on Win32 platforms.
-    """
-    cursor = connection.cursor()
-    user = settings.DATABASE_USER
-    cursor.execute('ALTER TABLE geometry_columns OWNER TO %s' % user)
-    cursor.execute('ALTER TABLE spatial_ref_sys OWNER TO %s' % user)
diff --git a/webapp/django/contrib/gis/db/backend/postgis/field.py b/webapp/django/contrib/gis/db/backend/postgis/field.py
deleted file mode 100644
index 9d6c0fa..0000000
--- a/webapp/django/contrib/gis/db/backend/postgis/field.py
+++ /dev/null
@@ -1,95 +0,0 @@
-from django.db import connection
-from django.db.models.fields import Field # Django base Field class
-from django.contrib.gis.db.backend.util import gqn
-from django.contrib.gis.db.backend.postgis.query import TRANSFORM
-
-# Quotename & geographic quotename, respectively
-qn = connection.ops.quote_name
-
-class PostGISField(Field):
-    """
-    The backend-specific geographic field for PostGIS.
-    """
-
-    def _add_geom(self, style, db_table):
-        """
-        Constructs the addition of the geometry to the table using the
-        AddGeometryColumn(...) PostGIS (and OGC standard) stored procedure.
-
-        Takes the style object (provides syntax highlighting) and the
-        database table as parameters.
-        """
-        sql = style.SQL_KEYWORD('SELECT ') + \
-              style.SQL_TABLE('AddGeometryColumn') + '(' + \
-              style.SQL_TABLE(gqn(db_table)) + ', ' + \
-              style.SQL_FIELD(gqn(self.column)) + ', ' + \
-              style.SQL_FIELD(str(self._srid)) + ', ' + \
-              style.SQL_COLTYPE(gqn(self._geom)) + ', ' + \
-              style.SQL_KEYWORD(str(self._dim)) + ');'
-
-        if not self.null:
-            # Add a NOT NULL constraint to the field
-            sql += '\n' + \
-                   style.SQL_KEYWORD('ALTER TABLE ') + \
-                   style.SQL_TABLE(qn(db_table)) + \
-                   style.SQL_KEYWORD(' ALTER ') + \
-                   style.SQL_FIELD(qn(self.column)) + \
-                   style.SQL_KEYWORD(' SET NOT NULL') + ';'
-        return sql
-    
-    def _geom_index(self, style, db_table,
-                    index_type='GIST', index_opts='GIST_GEOMETRY_OPS'):
-        "Creates a GiST index for this geometry field."
-        sql = style.SQL_KEYWORD('CREATE INDEX ') + \
-              style.SQL_TABLE(qn('%s_%s_id' % (db_table, self.column))) + \
-              style.SQL_KEYWORD(' ON ') + \
-              style.SQL_TABLE(qn(db_table)) + \
-              style.SQL_KEYWORD(' USING ') + \
-              style.SQL_COLTYPE(index_type) + ' ( ' + \
-              style.SQL_FIELD(qn(self.column)) + ' ' + \
-              style.SQL_KEYWORD(index_opts) + ' );'
-        return sql
-
-    def post_create_sql(self, style, db_table):
-        """
-        Returns SQL that will be executed after the model has been
-        created. Geometry columns must be added after creation with the
-        PostGIS AddGeometryColumn() function.
-        """
-
-        # Getting the AddGeometryColumn() SQL necessary to create a PostGIS
-        # geometry field.
-        post_sql = self._add_geom(style, db_table)
-
-        # If the user wants to index this data, then get the indexing SQL as well.
-        if self._index:
-            return (post_sql, self._geom_index(style, db_table))
-        else:
-            return (post_sql,)
-
-    def _post_delete_sql(self, style, db_table):
-        "Drops the geometry column."
-        sql = style.SQL_KEYWORD('SELECT ') + \
-            style.SQL_KEYWORD('DropGeometryColumn') + '(' + \
-            style.SQL_TABLE(gqn(db_table)) + ', ' + \
-            style.SQL_FIELD(gqn(self.column)) +  ');'
-        return sql
-
-    def db_type(self):
-        """
-        PostGIS geometry columns are added by stored procedures, should be
-        None.
-        """
-        return None
-
-    def get_placeholder(self, value):
-        """
-        Provides a proper substitution value for Geometries that are not in the
-        SRID of the field.  Specifically, this routine will substitute in the
-        ST_Transform() function call.
-        """
-        if value is None or value.srid == self._srid:
-            return '%s'
-        else:
-            # Adding Transform() to the SQL placeholder.
-            return '%s(%%s, %s)' % (TRANSFORM, self._srid)
diff --git a/webapp/django/contrib/gis/db/backend/postgis/management.py b/webapp/django/contrib/gis/db/backend/postgis/management.py
deleted file mode 100644
index c1cb32a..0000000
--- a/webapp/django/contrib/gis/db/backend/postgis/management.py
+++ /dev/null
@@ -1,54 +0,0 @@
-"""
-  This utility module is for obtaining information about the PostGIS
-   installation.
-
-  See PostGIS docs at Ch. 6.2.1 for more information on these functions.
-"""
-import re
-
-def _get_postgis_func(func):
-    "Helper routine for calling PostGIS functions and returning their result."
-    from django.db import connection
-    cursor = connection.cursor()
-    cursor.execute('SELECT %s()' % func)
-    row = cursor.fetchone()
-    cursor.close()
-    return row[0]
-
-### PostGIS management functions ###
-def postgis_geos_version():
-    "Returns the version of the GEOS library used with PostGIS."
-    return _get_postgis_func('postgis_geos_version')
-
-def postgis_lib_version():
-    "Returns the version number of the PostGIS library used with PostgreSQL."
-    return _get_postgis_func('postgis_lib_version')
-
-def postgis_proj_version():
-    "Returns the version of the PROJ.4 library used with PostGIS."
-    return _get_postgis_func('postgis_proj_version')
-
-def postgis_version():
-    "Returns PostGIS version number and compile-time options."
-    return _get_postgis_func('postgis_version')
-
-def postgis_full_version():
-    "Returns PostGIS version number and compile-time options."
-    return _get_postgis_func('postgis_full_version')
-
-### Routines for parsing output of management functions. ###
-version_regex = re.compile('^(?P<major>\d)\.(?P<minor1>\d)\.(?P<minor2>\d+)')
-def postgis_version_tuple():
-    "Returns the PostGIS version as a tuple."
-
-    # Getting the PostGIS version
-    version = postgis_lib_version()
-    m = version_regex.match(version)
-    if m:
-        major = int(m.group('major'))
-        minor1 = int(m.group('minor1'))
-        minor2 = int(m.group('minor2'))
-    else:
-        raise Exception('Could not parse PostGIS version string: %s' % version)
-
-    return (version, major, minor1, minor2)
diff --git a/webapp/django/contrib/gis/db/backend/postgis/models.py b/webapp/django/contrib/gis/db/backend/postgis/models.py
deleted file mode 100644
index e032da4..0000000
--- a/webapp/django/contrib/gis/db/backend/postgis/models.py
+++ /dev/null
@@ -1,58 +0,0 @@
-"""
- The GeometryColumns and SpatialRefSys models for the PostGIS backend.
-"""
-from django.db import models
-from django.contrib.gis.models import SpatialRefSysMixin
-
-# Checking for the presence of GDAL (needed for the SpatialReference object)
-from django.contrib.gis.gdal import HAS_GDAL
-if HAS_GDAL:
-    from django.contrib.gis.gdal import SpatialReference
-
-class GeometryColumns(models.Model):
-    """
-    The 'geometry_columns' table from the PostGIS. See the PostGIS
-    documentation at Ch. 4.2.2.
-    """
-    f_table_catalog = models.CharField(max_length=256)
-    f_table_schema = models.CharField(max_length=256)
-    f_table_name = models.CharField(max_length=256)
-    f_geometry_column = models.CharField(max_length=256)
-    coord_dimension = models.IntegerField()
-    srid = models.IntegerField(primary_key=True)
-    type = models.CharField(max_length=30)
-
-    class Meta:
-        db_table = 'geometry_columns'
-
-    @classmethod
-    def table_name_col(cls):
-        "Class method for returning the table name column for this model."
-        return 'f_table_name'
-
-    def __unicode__(self):
-        return "%s.%s - %dD %s field (SRID: %d)" % \
-               (self.f_table_name, self.f_geometry_column,
-                self.coord_dimension, self.type, self.srid)
-
-class SpatialRefSys(models.Model, SpatialRefSysMixin):
-    """
-    The 'spatial_ref_sys' table from PostGIS. See the PostGIS
-    documentaiton at Ch. 4.2.1.
-    """
-    srid = models.IntegerField(primary_key=True)
-    auth_name = models.CharField(max_length=256)
-    auth_srid = models.IntegerField()
-    srtext = models.CharField(max_length=2048)
-    proj4text = models.CharField(max_length=2048)
-
-    class Meta:
-        db_table = 'spatial_ref_sys'
-
-    @property
-    def wkt(self):
-        return self.srtext
-
-    @classmethod
-    def wkt_col(cls):
-        return 'srtext'
diff --git a/webapp/django/contrib/gis/db/backend/postgis/query.py b/webapp/django/contrib/gis/db/backend/postgis/query.py
deleted file mode 100644
index 8780780..0000000
--- a/webapp/django/contrib/gis/db/backend/postgis/query.py
+++ /dev/null
@@ -1,287 +0,0 @@
-"""
- This module contains the spatial lookup types, and the get_geo_where_clause()
- routine for PostGIS.
-"""
-import re
-from decimal import Decimal
-from django.db import connection
-from django.contrib.gis.measure import Distance
-from django.contrib.gis.db.backend.postgis.management import postgis_version_tuple
-from django.contrib.gis.db.backend.util import SpatialOperation, SpatialFunction
-qn = connection.ops.quote_name
-
-# Getting the PostGIS version information
-POSTGIS_VERSION, MAJOR_VERSION, MINOR_VERSION1, MINOR_VERSION2 = postgis_version_tuple()
-
-# The supported PostGIS versions.
-#  TODO: Confirm tests with PostGIS versions 1.1.x -- should work.  
-#        Versions <= 1.0.x do not use GEOS C API, and will not be supported.
-if MAJOR_VERSION != 1 or (MAJOR_VERSION == 1 and MINOR_VERSION1 < 1):
-    raise Exception('PostGIS version %s not supported.' % POSTGIS_VERSION)
-
-# Versions of PostGIS >= 1.2.2 changed their naming convention to be
-#  'SQL-MM-centric' to conform with the ISO standard. Practically, this
-#  means that 'ST_' prefixes geometry function names.
-GEOM_FUNC_PREFIX = ''
-if MAJOR_VERSION >= 1:
-    if (MINOR_VERSION1 > 2 or
-        (MINOR_VERSION1 == 2 and MINOR_VERSION2 >= 2)):
-        GEOM_FUNC_PREFIX = 'ST_'
-
-    def get_func(func): return '%s%s' % (GEOM_FUNC_PREFIX, func)
-
-    # Custom selection not needed for PostGIS because GEOS geometries are
-    # instantiated directly from the HEXEWKB returned by default.  If
-    # WKT is needed for some reason in the future, this value may be changed,
-    # e.g,, 'AsText(%s)'.
-    GEOM_SELECT = None
-
-    # Functions used by the GeoManager & GeoQuerySet
-    AREA = get_func('Area')
-    ASKML = get_func('AsKML')
-    ASGML = get_func('AsGML')
-    ASSVG = get_func('AsSVG')
-    CENTROID = get_func('Centroid')
-    DIFFERENCE = get_func('Difference')
-    DISTANCE = get_func('Distance')
-    DISTANCE_SPHERE = get_func('distance_sphere')
-    DISTANCE_SPHEROID = get_func('distance_spheroid')
-    ENVELOPE = get_func('Envelope')
-    EXTENT = get_func('extent')
-    GEOM_FROM_TEXT = get_func('GeomFromText')
-    GEOM_FROM_WKB = get_func('GeomFromWKB')
-    INTERSECTION = get_func('Intersection')
-    LENGTH = get_func('Length')
-    LENGTH_SPHEROID = get_func('length_spheroid')
-    MAKE_LINE = get_func('MakeLine')
-    MEM_SIZE = get_func('mem_size')
-    NUM_GEOM = get_func('NumGeometries')
-    NUM_POINTS = get_func('npoints')
-    PERIMETER = get_func('Perimeter')
-    POINT_ON_SURFACE = get_func('PointOnSurface')
-    SCALE = get_func('Scale')
-    SYM_DIFFERENCE = get_func('SymDifference')
-    TRANSFORM = get_func('Transform')
-    TRANSLATE = get_func('Translate')
-
-    # Special cases for union and KML methods.
-    if MINOR_VERSION1 < 3:
-        UNIONAGG = 'GeomUnion'
-        UNION = 'Union'
-    else:
-        UNIONAGG = 'ST_Union'
-        UNION = 'ST_Union'
-
-    if MINOR_VERSION1 == 1:
-        ASKML = False
-else:
-    raise NotImplementedError('PostGIS versions < 1.0 are not supported.')
-
-#### Classes used in constructing PostGIS spatial SQL ####
-class PostGISOperator(SpatialOperation):
-    "For PostGIS operators (e.g. `&&`, `~`)."
-    def __init__(self, operator):
-        super(PostGISOperator, self).__init__(operator=operator, beg_subst='%s %s %%s')
-
-class PostGISFunction(SpatialFunction):
-    "For PostGIS function calls (e.g., `ST_Contains(table, geom)`)."
-    def __init__(self, function, **kwargs):
-        super(PostGISFunction, self).__init__(get_func(function), **kwargs)
-
-class PostGISFunctionParam(PostGISFunction):
-    "For PostGIS functions that take another parameter (e.g. DWithin, Relate)."
-    def __init__(self, func):
-        super(PostGISFunctionParam, self).__init__(func, end_subst=', %%s)')
-
-class PostGISDistance(PostGISFunction):
-    "For PostGIS distance operations."
-    dist_func = 'Distance'
-    def __init__(self, operator):
-        super(PostGISDistance, self).__init__(self.dist_func, end_subst=') %s %s', 
-                                              operator=operator, result='%%s')
-
-class PostGISSpheroidDistance(PostGISFunction):
-    "For PostGIS spherical distance operations (using the spheroid)."
-    dist_func = 'distance_spheroid'
-    def __init__(self, operator):
-        # An extra parameter in `end_subst` is needed for the spheroid string.
-        super(PostGISSpheroidDistance, self).__init__(self.dist_func, 
-                                                      beg_subst='%s(%s, %%s, %%s', 
-                                                      end_subst=') %s %s',
-                                                      operator=operator, result='%%s')
-
-class PostGISSphereDistance(PostGISFunction):
-    "For PostGIS spherical distance operations."
-    dist_func = 'distance_sphere'
-    def __init__(self, operator):
-        super(PostGISSphereDistance, self).__init__(self.dist_func, end_subst=') %s %s',
-                                                    operator=operator, result='%%s')
-                                                    
-class PostGISRelate(PostGISFunctionParam):
-    "For PostGIS Relate(<geom>, <pattern>) calls."
-    pattern_regex = re.compile(r'^[012TF\*]{9}$')
-    def __init__(self, pattern):
-        if not self.pattern_regex.match(pattern):
-            raise ValueError('Invalid intersection matrix pattern "%s".' % pattern)
-        super(PostGISRelate, self).__init__('Relate')
-
-#### Lookup type mapping dictionaries of PostGIS operations. ####
-
-# PostGIS-specific operators. The commented descriptions of these
-# operators come from Section 6.2.2 of the official PostGIS documentation.
-POSTGIS_OPERATORS = {
-    # The "&<" operator returns true if A's bounding box overlaps or
-    #  is to the left of B's bounding box.
-    'overlaps_left' : PostGISOperator('&<'),
-    # The "&>" operator returns true if A's bounding box overlaps or
-    #  is to the right of B's bounding box.
-    'overlaps_right' : PostGISOperator('&>'),
-    # The "<<" operator returns true if A's bounding box is strictly
-    #  to the left of B's bounding box.
-    'left' : PostGISOperator('<<'),
-    # The ">>" operator returns true if A's bounding box is strictly
-    #  to the right of B's bounding box.
-    'right' : PostGISOperator('>>'),
-    # The "&<|" operator returns true if A's bounding box overlaps or
-    #  is below B's bounding box.
-    'overlaps_below' : PostGISOperator('&<|'),
-    # The "|&>" operator returns true if A's bounding box overlaps or
-    #  is above B's bounding box.
-    'overlaps_above' : PostGISOperator('|&>'),
-    # The "<<|" operator returns true if A's bounding box is strictly
-    #  below B's bounding box.
-    'strictly_below' : PostGISOperator('<<|'),
-    # The "|>>" operator returns true if A's bounding box is strictly
-    # above B's bounding box.
-    'strictly_above' : PostGISOperator('|>>'),
-    # The "~=" operator is the "same as" operator. It tests actual
-    #  geometric equality of two features. So if A and B are the same feature,
-    #  vertex-by-vertex, the operator returns true.
-    'same_as' : PostGISOperator('~='),
-    'exact' : PostGISOperator('~='),
-    # The "@" operator returns true if A's bounding box is completely contained
-    #  by B's bounding box.
-    'contained' : PostGISOperator('@'),
-    # The "~" operator returns true if A's bounding box completely contains
-    #  by B's bounding box.
-    'bbcontains' : PostGISOperator('~'),
-    # The "&&" operator returns true if A's bounding box overlaps
-    #  B's bounding box.
-    'bboverlaps' : PostGISOperator('&&'),
-    }
-
-# For PostGIS >= 1.2.2 the following lookup types will do a bounding box query
-# first before calling the more computationally expensive GEOS routines (called
-# "inline index magic"):
-# 'touches', 'crosses', 'contains', 'intersects', 'within', 'overlaps', and
-# 'covers'.
-POSTGIS_GEOMETRY_FUNCTIONS = {
-    'equals' : PostGISFunction('Equals'),
-    'disjoint' : PostGISFunction('Disjoint'),
-    'touches' : PostGISFunction('Touches'),
-    'crosses' : PostGISFunction('Crosses'),
-    'within' : PostGISFunction('Within'),
-    'overlaps' : PostGISFunction('Overlaps'),
-    'contains' : PostGISFunction('Contains'),
-    'intersects' : PostGISFunction('Intersects'),
-    'relate' : (PostGISRelate, basestring),
-    }
-
-# Valid distance types and substitutions
-dtypes = (Decimal, Distance, float, int, long)
-def get_dist_ops(operator):
-    "Returns operations for both regular and spherical distances."
-    return (PostGISDistance(operator), PostGISSphereDistance(operator), PostGISSpheroidDistance(operator))
-DISTANCE_FUNCTIONS = {
-    'distance_gt' : (get_dist_ops('>'), dtypes),
-    'distance_gte' : (get_dist_ops('>='), dtypes),
-    'distance_lt' : (get_dist_ops('<'), dtypes),
-    'distance_lte' : (get_dist_ops('<='), dtypes),
-    }
-
-if GEOM_FUNC_PREFIX == 'ST_':
-    # The ST_DWithin, ST_CoveredBy, and ST_Covers routines become available in 1.2.2+
-    POSTGIS_GEOMETRY_FUNCTIONS.update(
-        {'coveredby' : PostGISFunction('CoveredBy'),
-         'covers' : PostGISFunction('Covers'),
-         })
-    DISTANCE_FUNCTIONS['dwithin'] = (PostGISFunctionParam('DWithin'), dtypes)
-
-# Distance functions are a part of PostGIS geometry functions.
-POSTGIS_GEOMETRY_FUNCTIONS.update(DISTANCE_FUNCTIONS)
-
-# Any other lookup types that do not require a mapping.
-MISC_TERMS = ['isnull']
-
-# These are the PostGIS-customized QUERY_TERMS -- a list of the lookup types
-#  allowed for geographic queries.
-POSTGIS_TERMS = POSTGIS_OPERATORS.keys() # Getting the operators first
-POSTGIS_TERMS += POSTGIS_GEOMETRY_FUNCTIONS.keys() # Adding on the Geometry Functions
-POSTGIS_TERMS += MISC_TERMS # Adding any other miscellaneous terms (e.g., 'isnull')
-POSTGIS_TERMS = dict((term, None) for term in POSTGIS_TERMS) # Making a dictionary for fast lookups
-
-# For checking tuple parameters -- not very pretty but gets job done.
-def exactly_two(val): return val == 2
-def two_to_three(val): return val >= 2 and val <=3
-def num_params(lookup_type, val):
-    if lookup_type in DISTANCE_FUNCTIONS and lookup_type != 'dwithin': return two_to_three(val)
-    else: return exactly_two(val)
-
-#### The `get_geo_where_clause` function for PostGIS. ####
-def get_geo_where_clause(table_alias, name, lookup_type, geo_annot):
-    "Returns the SQL WHERE clause for use in PostGIS SQL construction."
-    # Getting the quoted field as `geo_col`.
-    geo_col = '%s.%s' % (qn(table_alias), qn(name))
-    if lookup_type in POSTGIS_OPERATORS:
-        # See if a PostGIS operator matches the lookup type.
-        return POSTGIS_OPERATORS[lookup_type].as_sql(geo_col)
-    elif lookup_type in POSTGIS_GEOMETRY_FUNCTIONS:
-        # See if a PostGIS geometry function matches the lookup type.
-        tmp = POSTGIS_GEOMETRY_FUNCTIONS[lookup_type]
-
-        # Lookup types that are tuples take tuple arguments, e.g., 'relate' and 
-        # distance lookups.
-        if isinstance(tmp, tuple):
-            # First element of tuple is the PostGISOperation instance, and the
-            # second element is either the type or a tuple of acceptable types
-            # that may passed in as further parameters for the lookup type.
-            op, arg_type = tmp
-
-            # Ensuring that a tuple _value_ was passed in from the user
-            if not isinstance(geo_annot.value, (tuple, list)): 
-                raise TypeError('Tuple required for `%s` lookup type.' % lookup_type)
-           
-            # Number of valid tuple parameters depends on the lookup type.
-            nparams = len(geo_annot.value)
-            if not num_params(lookup_type, nparams):
-                raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type)
-            
-            # Ensuring the argument type matches what we expect.
-            if not isinstance(geo_annot.value[1], arg_type):
-                raise TypeError('Argument type should be %s, got %s instead.' % (arg_type, type(geo_annot.value[1])))
-
-            # For lookup type `relate`, the op instance is not yet created (has
-            # to be instantiated here to check the pattern parameter).
-            if lookup_type == 'relate': 
-                op = op(geo_annot.value[1])
-            elif lookup_type in DISTANCE_FUNCTIONS and lookup_type != 'dwithin':
-                if geo_annot.geodetic:
-                    # Geodetic distances are only availble from Points to PointFields.
-                    if geo_annot.geom_type != 'POINT':
-                        raise TypeError('PostGIS spherical operations are only valid on PointFields.')
-                    if geo_annot.value[0].geom_typeid != 0:
-                        raise TypeError('PostGIS geometry distance parameter is required to be of type Point.')
-                    # Setting up the geodetic operation appropriately.
-                    if nparams == 3 and geo_annot.value[2] == 'spheroid': op = op[2]
-                    else: op = op[1]
-                else:
-                    op = op[0]
-        else:
-            op = tmp
-        # Calling the `as_sql` function on the operation instance.
-        return op.as_sql(geo_col)
-    elif lookup_type == 'isnull':
-        # Handling 'isnull' lookup type
-        return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or ''))
-
-    raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))
diff --git a/webapp/django/contrib/gis/db/backend/util.py b/webapp/django/contrib/gis/db/backend/util.py
deleted file mode 100644
index a19dd97..0000000
--- a/webapp/django/contrib/gis/db/backend/util.py
+++ /dev/null
@@ -1,52 +0,0 @@
-from types import UnicodeType
-
-def gqn(val):
-    """
-    The geographic quote name function; used for quoting tables and 
-    geometries (they use single rather than the double quotes of the
-    backend quotename function).
-    """
-    if isinstance(val, basestring):
-        if isinstance(val, UnicodeType): val = val.encode('ascii')
-        return "'%s'" % val
-    else:
-        return str(val)
-
-class SpatialOperation(object):
-    """
-    Base class for generating spatial SQL.
-    """
-    def __init__(self, function='', operator='', result='', beg_subst='', end_subst=''):
-        self.function = function
-        self.operator = operator
-        self.result = result
-        self.beg_subst = beg_subst
-        try:
-            # Try and put the operator and result into to the
-            # end substitution.
-            self.end_subst = end_subst % (operator, result)
-        except TypeError:
-            self.end_subst = end_subst
-
-    @property
-    def sql_subst(self):
-        return ''.join([self.beg_subst, self.end_subst])
-
-    def as_sql(self, geo_col):
-        return self.sql_subst % self.params(geo_col)
-
-    def params(self, geo_col):
-        return (geo_col, self.operator)
-
-class SpatialFunction(SpatialOperation):
-    """
-    Base class for generating spatial SQL related to a function.
-    """
-    def __init__(self, func, beg_subst='%s(%s, %%s', end_subst=')', result='', operator=''):
-        # Getting the function prefix.
-        kwargs = {'function' : func, 'operator' : operator, 'result' : result,
-                  'beg_subst' : beg_subst, 'end_subst' : end_subst,}
-        super(SpatialFunction, self).__init__(**kwargs)
-
-    def params(self, geo_col):
-        return (self.function, geo_col)
diff --git a/webapp/django/contrib/gis/db/models/__init__.py b/webapp/django/contrib/gis/db/models/__init__.py
deleted file mode 100644
index 02a2c53..0000000
--- a/webapp/django/contrib/gis/db/models/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Want to get everything from the 'normal' models package.
-from django.db.models import *
-
-# The GeoManager
-from django.contrib.gis.db.models.manager import GeoManager
-
-# The GeoQ object
-from django.contrib.gis.db.models.query import GeoQ
-
-# The geographic-enabled fields.
-from django.contrib.gis.db.models.fields import \
-     GeometryField, PointField, LineStringField, PolygonField, \
-     MultiPointField, MultiLineStringField, MultiPolygonField, \
-     GeometryCollectionField
-
-# The geographic mixin class.
-from mixin import GeoMixin
diff --git a/webapp/django/contrib/gis/db/models/fields/__init__.py b/webapp/django/contrib/gis/db/models/fields/__init__.py
deleted file mode 100644
index a1dfa23..0000000
--- a/webapp/django/contrib/gis/db/models/fields/__init__.py
+++ /dev/null
@@ -1,211 +0,0 @@
-from django.contrib.gis import forms
-# Getting the SpatialBackend container and the geographic quoting method.
-from django.contrib.gis.db.backend import SpatialBackend, gqn
-# GeometryProxy, GEOS, and Distance imports.
-from django.contrib.gis.db.models.proxy import GeometryProxy
-from django.contrib.gis.measure import Distance
-# The `get_srid_info` function gets SRID information from the spatial
-# reference system table w/o using the ORM.
-from django.contrib.gis.models import get_srid_info
-
-#TODO: Flesh out widgets; consider adding support for OGR Geometry proxies.
-class GeometryField(SpatialBackend.Field):
-    "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-
-    # The OpenGIS Geometry name.
-    _geom = 'GEOMETRY'
-
-    # Geodetic units.
-    geodetic_units = ('Decimal Degree', 'degree')
-
-    def __init__(self, verbose_name=None, srid=4326, spatial_index=True, dim=2, **kwargs):
-        """
-        The initialization function for geometry fields.  Takes the following
-        as keyword arguments:
-
-        srid:
-         The spatial reference system identifier, an OGC standard.
-         Defaults to 4326 (WGS84).
-
-        spatial_index:
-         Indicates whether to create a spatial index.  Defaults to True.
-         Set this instead of 'db_index' for geographic fields since index
-         creation is different for geometry columns.
-                  
-        dim:
-         The number of dimensions for this geometry.  Defaults to 2.
-        """
-
-        # Setting the index flag with the value of the `spatial_index` keyword.
-        self._index = spatial_index
-
-        # Setting the SRID and getting the units.  Unit information must be 
-        # easily available in the field instance for distance queries.
-        self._srid = srid
-        self._unit, self._unit_name, self._spheroid = get_srid_info(srid)
-
-        # Setting the dimension of the geometry field.
-        self._dim = dim
-        
-        # Setting the verbose_name keyword argument with the positional 
-        # first parameter, so this works like normal fields.
-        kwargs['verbose_name'] = verbose_name
-       
-        super(GeometryField, self).__init__(**kwargs) # Calling the parent initializtion function
-
-    ### Routines specific to GeometryField ###
-    @property
-    def geodetic(self):
-        """
-        Returns true if this field's SRID corresponds with a coordinate
-        system that uses non-projected units (e.g., latitude/longitude).
-        """
-        return self._unit_name in self.geodetic_units
-
-    def get_distance(self, dist_val, lookup_type):
-        """
-        Returns a distance number in units of the field.  For example, if 
-        `D(km=1)` was passed in and the units of the field were in meters,
-        then 1000 would be returned.
-        """
-        # Getting the distance parameter and any options.
-        if len(dist_val) == 1: dist, option = dist_val[0], None
-        else: dist, option = dist_val
-
-        if isinstance(dist, Distance):
-            if self.geodetic:
-                # Won't allow Distance objects w/DWithin lookups on PostGIS.
-                if SpatialBackend.postgis and lookup_type == 'dwithin':
-                    raise TypeError('Only numeric values of degree units are allowed on geographic DWithin queries.')
-                # Spherical distance calculation parameter should be in meters.
-                dist_param = dist.m
-            else:
-                dist_param = getattr(dist, Distance.unit_attname(self._unit_name))
-        else:
-            # Assuming the distance is in the units of the field.
-            dist_param = dist
-       
-        if SpatialBackend.postgis and self.geodetic and lookup_type != 'dwithin' and option == 'spheroid':
-            # On PostGIS, by default `ST_distance_sphere` is used; but if the 
-            # accuracy of `ST_distance_spheroid` is needed than the spheroid 
-            # needs to be passed to the SQL stored procedure.
-            return [gqn(self._spheroid), dist_param]
-        else:
-            return [dist_param]
-
-    def get_geometry(self, value):
-        """
-        Retrieves the geometry, setting the default SRID from the given
-        lookup parameters.
-        """
-        if isinstance(value, (tuple, list)): 
-            geom = value[0]
-        else:
-            geom = value
-
-        # When the input is not a GEOS geometry, attempt to construct one
-        # from the given string input.
-        if isinstance(geom, SpatialBackend.Geometry):
-            pass
-        elif isinstance(geom, basestring):
-            try:
-                geom = SpatialBackend.Geometry(geom)
-            except SpatialBackend.GeometryException:
-                raise ValueError('Could not create geometry from lookup value: %s' % str(value))
-        else:
-            raise TypeError('Cannot use parameter of `%s` type as lookup parameter.' % type(value))
-
-        # Assigning the SRID value.
-        geom.srid = self.get_srid(geom)
-        
-        return geom
-
-    def get_srid(self, geom):
-        """
-        Returns the default SRID for the given geometry, taking into account
-        the SRID set for the field.  For example, if the input geometry
-        has no SRID, then that of the field will be returned.
-        """
-        gsrid = geom.srid # SRID of given geometry.
-        if gsrid is None or self._srid == -1 or (gsrid == -1 and self._srid != -1):
-            return self._srid
-        else:
-            return gsrid
-
-    ### Routines overloaded from Field ###
-    def contribute_to_class(self, cls, name):
-        super(GeometryField, self).contribute_to_class(cls, name)
-        
-        # Setup for lazy-instantiated Geometry object.
-        setattr(cls, self.attname, GeometryProxy(SpatialBackend.Geometry, self))
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class' : forms.GeometryField, 
-                    'geom_type' : self._geom,
-                    'null' : self.null,
-                    }
-        defaults.update(kwargs)
-        return super(GeometryField, self).formfield(**defaults)
-
-    def get_db_prep_lookup(self, lookup_type, value):
-        """
-        Returns the spatial WHERE clause and associated parameters for the
-        given lookup type and value.  The value will be prepared for database
-        lookup (e.g., spatial transformation SQL will be added if necessary).
-        """
-        if lookup_type in SpatialBackend.gis_terms:
-            # special case for isnull lookup
-            if lookup_type == 'isnull': return [], []
-
-            # Get the geometry with SRID; defaults SRID to that of the field
-            # if it is None.
-            geom = self.get_geometry(value)
-
-            # Getting the WHERE clause list and the associated params list. The params 
-            # list is populated with the Adaptor wrapping the Geometry for the 
-            # backend.  The WHERE clause list contains the placeholder for the adaptor
-            # (e.g. any transformation SQL).
-            where = [self.get_placeholder(geom)]
-            params = [SpatialBackend.Adaptor(geom)]
-
-            if isinstance(value, (tuple, list)):
-                if lookup_type in SpatialBackend.distance_functions:
-                    # Getting the distance parameter in the units of the field.
-                    where += self.get_distance(value[1:], lookup_type)
-                elif lookup_type in SpatialBackend.limited_where:
-                    pass
-                else:
-                    # Otherwise, making sure any other parameters are properly quoted.
-                    where += map(gqn, value[1:])
-            return where, params
-        else:
-            raise TypeError("Field has invalid lookup: %s" % lookup_type)
-
-    def get_db_prep_save(self, value):
-        "Prepares the value for saving in the database."
-        if value is None:
-            return None
-        else:
-            return SpatialBackend.Adaptor(self.get_geometry(value))
-
-# The OpenGIS Geometry Type Fields
-class PointField(GeometryField):
-    _geom = 'POINT'
-
-class LineStringField(GeometryField):
-    _geom = 'LINESTRING'
-
-class PolygonField(GeometryField):
-    _geom = 'POLYGON'
-
-class MultiPointField(GeometryField):
-    _geom = 'MULTIPOINT'
-
-class MultiLineStringField(GeometryField):
-    _geom = 'MULTILINESTRING'
-
-class MultiPolygonField(GeometryField):
-    _geom = 'MULTIPOLYGON'
-
-class GeometryCollectionField(GeometryField):
-    _geom = 'GEOMETRYCOLLECTION'
diff --git a/webapp/django/contrib/gis/db/models/manager.py b/webapp/django/contrib/gis/db/models/manager.py
deleted file mode 100644
index 602d112..0000000
--- a/webapp/django/contrib/gis/db/models/manager.py
+++ /dev/null
@@ -1,82 +0,0 @@
-from django.db.models.manager import Manager
-from django.contrib.gis.db.models.query import GeoQuerySet
-
-class GeoManager(Manager):
-    "Overrides Manager to return Geographic QuerySets."
-
-    # This manager should be used for queries on related fields
-    # so that geometry columns on Oracle and MySQL are selected
-    # properly.
-    use_for_related_fields = True
-
-    def get_query_set(self):
-        return GeoQuerySet(model=self.model)
-
-    def area(self, *args, **kwargs):
-        return self.get_query_set().area(*args, **kwargs)
-
-    def centroid(self, *args, **kwargs):
-        return self.get_query_set().centroid(*args, **kwargs)
-
-    def difference(self, *args, **kwargs):
-        return self.get_query_set().difference(*args, **kwargs)
-
-    def distance(self, *args, **kwargs):
-        return self.get_query_set().distance(*args, **kwargs)
-
-    def envelope(self, *args, **kwargs):
-        return self.get_query_set().envelope(*args, **kwargs)
-
-    def extent(self, *args, **kwargs):
-        return self.get_query_set().extent(*args, **kwargs)
-
-    def gml(self, *args, **kwargs):
-        return self.get_query_set().gml(*args, **kwargs)
-
-    def intersection(self, *args, **kwargs):
-        return self.get_query_set().intersection(*args, **kwargs)
-
-    def kml(self, *args, **kwargs):
-        return self.get_query_set().kml(*args, **kwargs)
-
-    def length(self, *args, **kwargs):
-        return self.get_query_set().length(*args, **kwargs)
-
-    def make_line(self, *args, **kwargs):
-        return self.get_query_set().make_line(*args, **kwargs)
-    
-    def mem_size(self, *args, **kwargs):
-        return self.get_query_set().mem_size(*args, **kwargs)
-
-    def num_geom(self, *args, **kwargs):
-        return self.get_query_set().num_geom(*args, **kwargs)
-
-    def num_points(self, *args, **kwargs):
-        return self.get_query_set().num_points(*args, **kwargs)
-
-    def perimeter(self, *args, **kwargs):
-        return self.get_query_set().perimeter(*args, **kwargs)
-
-    def point_on_surface(self, *args, **kwargs):
-        return self.get_query_set().point_on_surface(*args, **kwargs)
-
-    def scale(self, *args, **kwargs):
-        return self.get_query_set().scale(*args, **kwargs)
-
-    def svg(self, *args, **kwargs):
-        return self.get_query_set().svg(*args, **kwargs)
-
-    def sym_difference(self, *args, **kwargs):
-        return self.get_query_set().sym_difference(*args, **kwargs)
-
-    def transform(self, *args, **kwargs):
-        return self.get_query_set().transform(*args, **kwargs)
-
-    def translate(self, *args, **kwargs):
-        return self.get_query_set().translate(*args, **kwargs)
-
-    def union(self, *args, **kwargs):
-        return self.get_query_set().union(*args, **kwargs)
-
-    def unionagg(self, *args, **kwargs):
-        return self.get_query_set().unionagg(*args, **kwargs)
diff --git a/webapp/django/contrib/gis/db/models/mixin.py b/webapp/django/contrib/gis/db/models/mixin.py
deleted file mode 100644
index 475a053..0000000
--- a/webapp/django/contrib/gis/db/models/mixin.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Until model subclassing is a possibility, a mixin class is used to add
-# the necessary functions that may be contributed for geographic objects.
-class GeoMixin:
-    """
-    The Geographic Mixin class provides routines for geographic objects,
-    however, it is no longer necessary, since all of its previous functions 
-    may now be accessed via the GeometryProxy.  This mixin is only provided
-    for backwards-compatibility purposes, and will be eventually removed
-    (unless the need arises again).
-    """
-    pass
diff --git a/webapp/django/contrib/gis/db/models/proxy.py b/webapp/django/contrib/gis/db/models/proxy.py
deleted file mode 100644
index 34276a6..0000000
--- a/webapp/django/contrib/gis/db/models/proxy.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
- The GeometryProxy object, allows for lazy-geometries.  The proxy uses
- Python descriptors for instantiating and setting Geometry objects
- corresponding to geographic model fields.
-
- Thanks to Robert Coup for providing this functionality (see #4322).
-"""
-
-from types import NoneType, StringType, UnicodeType
-
-class GeometryProxy(object): 
-    def __init__(self, klass, field): 
-        """
-        Proxy initializes on the given Geometry class (not an instance) and 
-        the GeometryField.
-        """
-        self._field = field 
-        self._klass = klass
-     
-    def __get__(self, obj, type=None): 
-        """
-        This accessor retrieves the geometry, initializing it using the geometry
-        class specified during initialization and the HEXEWKB value of the field.  
-        Currently, only GEOS or OGR geometries are supported.
-        """
-        # Getting the value of the field.
-        geom_value = obj.__dict__[self._field.attname] 
-        
-        if isinstance(geom_value, self._klass): 
-            geom = geom_value
-        elif (geom_value is None) or (geom_value==''):
-            geom = None
-        else: 
-            # Otherwise, a Geometry object is built using the field's contents,
-            # and the model's corresponding attribute is set.
-            geom = self._klass(geom_value)
-            setattr(obj, self._field.attname, geom) 
-        return geom 
-     
-    def __set__(self, obj, value):
-        """
-        This accessor sets the proxied geometry with the geometry class
-        specified during initialization.  Values of None, HEXEWKB, or WKT may
-        be used to set the geometry as well.
-        """
-        # The OGC Geometry type of the field.
-        gtype = self._field._geom
-        
-        # The geometry type must match that of the field -- unless the
-        # general GeometryField is used.
-        if isinstance(value, self._klass) and (str(value.geom_type).upper() == gtype or gtype == 'GEOMETRY'):
-            # Assigning the SRID to the geometry.
-            if value.srid is None: value.srid = self._field._srid
-        elif isinstance(value, (NoneType, StringType, UnicodeType)):
-            # Set with None, WKT, or HEX
-            pass
-        else:
-            raise TypeError('cannot set %s GeometryProxy with value of type: %s' % (obj.__class__.__name__, type(value)))
-
-        # Setting the objects dictionary with the value, and returning.
-        obj.__dict__[self._field.attname] = value 
-        return value 
diff --git a/webapp/django/contrib/gis/db/models/query.py b/webapp/django/contrib/gis/db/models/query.py
deleted file mode 100644
index 8efc720..0000000
--- a/webapp/django/contrib/gis/db/models/query.py
+++ /dev/null
@@ -1,617 +0,0 @@
-from django.core.exceptions import ImproperlyConfigured
-from django.db import connection
-from django.db.models.query import sql, QuerySet, Q
-
-from django.contrib.gis.db.backend import SpatialBackend
-from django.contrib.gis.db.models.fields import GeometryField, PointField
-from django.contrib.gis.db.models.sql import AreaField, DistanceField, GeomField, GeoQuery, GeoWhereNode
-from django.contrib.gis.measure import Area, Distance
-from django.contrib.gis.models import get_srid_info
-qn = connection.ops.quote_name
-
-# For backwards-compatibility; Q object should work just fine
-# after queryset-refactor.
-class GeoQ(Q): pass
-
-class GeomSQL(object):
-    "Simple wrapper object for geometric SQL."
-    def __init__(self, geo_sql):
-        self.sql = geo_sql
-    
-    def as_sql(self, *args, **kwargs):
-        return self.sql
-
-class GeoQuerySet(QuerySet):
-    "The Geographic QuerySet."
-
-    def __init__(self, model=None, query=None):
-        super(GeoQuerySet, self).__init__(model=model, query=query)
-        self.query = query or GeoQuery(self.model, connection)
-
-    def area(self, tolerance=0.05, **kwargs):
-        """
-        Returns the area of the geographic field in an `area` attribute on 
-        each element of this GeoQuerySet.
-        """
-        # Peforming setup here rather than in `_spatial_attribute` so that
-        # we can get the units for `AreaField`.
-        procedure_args, geo_field = self._spatial_setup('area', field_name=kwargs.get('field_name', None))
-        s = {'procedure_args' : procedure_args,
-             'geo_field' : geo_field,
-             'setup' : False,
-             }
-        if SpatialBackend.oracle:
-            s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'
-            s['procedure_args']['tolerance'] = tolerance
-            s['select_field'] = AreaField('sq_m') # Oracle returns area in units of meters.
-        elif SpatialBackend.postgis:
-            if not geo_field.geodetic:
-                # Getting the area units of the geographic field.
-                s['select_field'] = AreaField(Area.unit_attname(geo_field._unit_name))
-            else:
-                # TODO: Do we want to support raw number areas for geodetic fields?
-                raise Exception('Area on geodetic coordinate systems not supported.')
-        return self._spatial_attribute('area', s, **kwargs)
-
-    def centroid(self, **kwargs):
-        """
-        Returns the centroid of the geographic field in a `centroid`
-        attribute on each element of this GeoQuerySet.
-        """
-        return self._geom_attribute('centroid', **kwargs)
-
-    def difference(self, geom, **kwargs):
-        """
-        Returns the spatial difference of the geographic field in a `difference`
-        attribute on each element of this GeoQuerySet.
-        """
-        return self._geomset_attribute('difference', geom, **kwargs)
-
-    def distance(self, geom, **kwargs):
-        """
-        Returns the distance from the given geographic field name to the
-        given geometry in a `distance` attribute on each element of the
-        GeoQuerySet.
-
-        Keyword Arguments:
-         `spheroid`  => If the geometry field is geodetic and PostGIS is
-                        the spatial database, then the more accurate 
-                        spheroid calculation will be used instead of the
-                        quicker sphere calculation.
-                        
-         `tolerance` => Used only for Oracle. The tolerance is 
-                        in meters -- a default of 5 centimeters (0.05) 
-                        is used.
-        """
-        return self._distance_attribute('distance', geom, **kwargs)
-
-    def envelope(self, **kwargs):
-        """
-        Returns a Geometry representing the bounding box of the 
-        Geometry field in an `envelope` attribute on each element of
-        the GeoQuerySet. 
-        """
-        return self._geom_attribute('envelope', **kwargs)
-
-    def extent(self, **kwargs):
-        """
-        Returns the extent (aggregate) of the features in the GeoQuerySet.  The
-        extent will be returned as a 4-tuple, consisting of (xmin, ymin, xmax, ymax).
-        """
-        convert_extent = None
-        if SpatialBackend.postgis:
-            def convert_extent(box, geo_field):
-                # TODO: Parsing of BOX3D, Oracle support (patches welcome!)
-                # Box text will be something like "BOX(-90.0 30.0, -85.0 40.0)"; 
-                # parsing out and returning as a 4-tuple.
-                ll, ur = box[4:-1].split(',')
-                xmin, ymin = map(float, ll.split())
-                xmax, ymax = map(float, ur.split())
-                return (xmin, ymin, xmax, ymax)
-        elif SpatialBackend.oracle:
-            def convert_extent(wkt, geo_field):
-                raise NotImplementedError
-        return self._spatial_aggregate('extent', convert_func=convert_extent, **kwargs)
-
-    def gml(self, precision=8, version=2, **kwargs):
-        """
-        Returns GML representation of the given field in a `gml` attribute
-        on each element of the GeoQuerySet.
-        """
-        s = {'desc' : 'GML', 'procedure_args' : {'precision' : precision}}
-        if SpatialBackend.postgis:
-            # PostGIS AsGML() aggregate function parameter order depends on the 
-            # version -- uggh.
-            major, minor1, minor2 = SpatialBackend.version
-            if major >= 1 and (minor1 > 3 or (minor1 == 3 and minor2 > 1)):
-                procedure_fmt = '%(version)s,%(geo_col)s,%(precision)s'
-            else:
-                procedure_fmt = '%(geo_col)s,%(precision)s,%(version)s'
-            s['procedure_args'] = {'precision' : precision, 'version' : version}
-
-        return self._spatial_attribute('gml', s, **kwargs)
-
-    def intersection(self, geom, **kwargs):
-        """
-        Returns the spatial intersection of the Geometry field in
-        an `intersection` attribute on each element of this
-        GeoQuerySet.
-        """
-        return self._geomset_attribute('intersection', geom, **kwargs)
-
-    def kml(self, **kwargs):
-        """
-        Returns KML representation of the geometry field in a `kml`
-        attribute on each element of this GeoQuerySet.
-        """
-        s = {'desc' : 'KML',
-             'procedure_fmt' : '%(geo_col)s,%(precision)s',
-             'procedure_args' : {'precision' : kwargs.pop('precision', 8)},
-             }
-        return self._spatial_attribute('kml', s, **kwargs)
-
-    def length(self, **kwargs):
-        """
-        Returns the length of the geometry field as a `Distance` object
-        stored in a `length` attribute on each element of this GeoQuerySet.
-        """
-        return self._distance_attribute('length', None, **kwargs)
-
-    def make_line(self, **kwargs):
-        """
-        Creates a linestring from all of the PointField geometries in the
-        this GeoQuerySet and returns it.  This is a spatial aggregate
-        method, and thus returns a geometry rather than a GeoQuerySet.
-        """
-        kwargs['geo_field_type'] = PointField
-        kwargs['agg_field'] = GeometryField
-        return self._spatial_aggregate('make_line', **kwargs)
-
-    def mem_size(self, **kwargs):
-        """
-        Returns the memory size (number of bytes) that the geometry field takes
-        in a `mem_size` attribute  on each element of this GeoQuerySet.
-        """
-        return self._spatial_attribute('mem_size', {}, **kwargs)
-
-    def num_geom(self, **kwargs):
-        """
-        Returns the number of geometries if the field is a
-        GeometryCollection or Multi* Field in a `num_geom`
-        attribute on each element of this GeoQuerySet; otherwise
-        the sets with None.
-        """
-        return self._spatial_attribute('num_geom', {}, **kwargs)
-
-    def num_points(self, **kwargs):
-        """
-        Returns the number of points in the first linestring in the 
-        Geometry field in a `num_points` attribute on each element of
-        this GeoQuerySet; otherwise sets with None.
-        """
-        return self._spatial_attribute('num_points', {}, **kwargs)
-
-    def perimeter(self, **kwargs):
-        """
-        Returns the perimeter of the geometry field as a `Distance` object
-        stored in a `perimeter` attribute on each element of this GeoQuerySet.
-        """
-        return self._distance_attribute('perimeter', None, **kwargs)
-
-    def point_on_surface(self, **kwargs):
-        """
-        Returns a Point geometry guaranteed to lie on the surface of the
-        Geometry field in a `point_on_surface` attribute on each element
-        of this GeoQuerySet; otherwise sets with None.
-        """
-        return self._geom_attribute('point_on_surface', **kwargs)
-
-    def scale(self, x, y, z=0.0, **kwargs):
-        """
-        Scales the geometry to a new size by multiplying the ordinates
-        with the given x,y,z scale factors.
-        """
-        s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s,%(z)s',
-             'procedure_args' : {'x' : x, 'y' : y, 'z' : z},
-             'select_field' : GeomField(),
-             }
-        return self._spatial_attribute('scale', s, **kwargs)
-
-    def svg(self, **kwargs):
-        """
-        Returns SVG representation of the geographic field in a `svg`
-        attribute on each element of this GeoQuerySet.
-        """
-        s = {'desc' : 'SVG',
-             'procedure_fmt' : '%(geo_col)s,%(rel)s,%(precision)s',
-             'procedure_args' : {'rel' : int(kwargs.pop('relative', 0)),
-                                 'precision' : kwargs.pop('precision', 8)},
-             }
-        return self._spatial_attribute('svg', s, **kwargs)
-
-    def sym_difference(self, geom, **kwargs):
-        """
-        Returns the symmetric difference of the geographic field in a 
-        `sym_difference` attribute on each element of this GeoQuerySet.
-        """
-        return self._geomset_attribute('sym_difference', geom, **kwargs)
-
-    def translate(self, x, y, z=0.0, **kwargs):
-        """
-        Translates the geometry to a new location using the given numeric
-        parameters as offsets.
-        """
-        s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s,%(z)s',
-             'procedure_args' : {'x' : x, 'y' : y, 'z' : z},
-             'select_field' : GeomField(),
-             }
-        return self._spatial_attribute('translate', s, **kwargs)
-
-    def transform(self, srid=4326, **kwargs):
-        """
-        Transforms the given geometry field to the given SRID.  If no SRID is
-        provided, the transformation will default to using 4326 (WGS84).
-        """
-        if not isinstance(srid, (int, long)):
-            raise TypeError('An integer SRID must be provided.')
-        field_name = kwargs.get('field_name', None)
-        tmp, geo_field = self._spatial_setup('transform', field_name=field_name)
-
-        # Getting the selection SQL for the given geographic field.
-        field_col = self._geocol_select(geo_field, field_name)
-
-        # Why cascading substitutions? Because spatial backends like
-        # Oracle and MySQL already require a function call to convert to text, thus
-        # when there's also a transformation we need to cascade the substitutions.
-        # For example, 'SDO_UTIL.TO_WKTGEOMETRY(SDO_CS.TRANSFORM( ... )'
-        geo_col = self.query.custom_select.get(geo_field, field_col)
-        
-        # Setting the key for the field's column with the custom SELECT SQL to
-        # override the geometry column returned from the database.
-        custom_sel = '%s(%s, %s)' % (SpatialBackend.transform, geo_col, srid)
-        # TODO: Should we have this as an alias?
-        # custom_sel = '(%s(%s, %s)) AS %s' % (SpatialBackend.transform, geo_col, srid, qn(geo_field.name))
-        self.query.transformed_srid = srid # So other GeoQuerySet methods
-        self.query.custom_select[geo_field] = custom_sel
-        return self._clone()
-
-    def union(self, geom, **kwargs):
-        """
-        Returns the union of the geographic field with the given
-        Geometry in a `union` attribute on each element of this GeoQuerySet.
-        """
-        return self._geomset_attribute('union', geom, **kwargs)
-
-    def unionagg(self, **kwargs):
-        """
-        Performs an aggregate union on the given geometry field.  Returns
-        None if the GeoQuerySet is empty.  The `tolerance` keyword is for
-        Oracle backends only.
-        """
-        kwargs['agg_field'] = GeometryField
-        return self._spatial_aggregate('unionagg', **kwargs)
-
-    ### Private API -- Abstracted DRY routines. ###
-    def _spatial_setup(self, att, aggregate=False, desc=None, field_name=None, geo_field_type=None):
-        """
-        Performs set up for executing the spatial function.
-        """
-        # Does the spatial backend support this?
-        func = getattr(SpatialBackend, att, False)
-        if desc is None: desc = att
-        if not func: raise ImproperlyConfigured('%s stored procedure not available.' % desc)
-
-        # Initializing the procedure arguments. 
-        procedure_args = {'function' : func}
-        
-        # Is there a geographic field in the model to perform this 
-        # operation on?
-        geo_field = self.query._geo_field(field_name)
-        if not geo_field:
-            raise TypeError('%s output only available on GeometryFields.' % func)
-
-        # If the `geo_field_type` keyword was used, then enforce that 
-        # type limitation.
-        if not geo_field_type is None and not isinstance(geo_field, geo_field_type): 
-            raise TypeError('"%s" stored procedures may only be called on %ss.' % (func, geo_field_type.__name__)) 
-
-        # Setting the procedure args.
-        procedure_args['geo_col'] = self._geocol_select(geo_field, field_name, aggregate)
-
-        return procedure_args, geo_field
-
-    def _spatial_aggregate(self, att, field_name=None, 
-                           agg_field=None, convert_func=None, 
-                           geo_field_type=None, tolerance=0.0005):
-        """
-        DRY routine for calling aggregate spatial stored procedures and
-        returning their result to the caller of the function.
-        """
-        # Constructing the setup keyword arguments.
-        setup_kwargs = {'aggregate' : True,
-                        'field_name' : field_name,
-                        'geo_field_type' : geo_field_type,
-                        }
-        procedure_args, geo_field = self._spatial_setup(att, **setup_kwargs)
-        
-        if SpatialBackend.oracle:
-            procedure_args['tolerance'] = tolerance
-            # Adding in selection SQL for Oracle geometry columns.
-            if agg_field is GeometryField: 
-                agg_sql = '%s' % SpatialBackend.select
-            else: 
-                agg_sql = '%s'
-            agg_sql =  agg_sql % ('%(function)s(SDOAGGRTYPE(%(geo_col)s,%(tolerance)s))' % procedure_args)
-        else:
-            agg_sql = '%(function)s(%(geo_col)s)' % procedure_args
-
-        # Wrapping our selection SQL in `GeomSQL` to bypass quoting, and
-        # specifying the type of the aggregate field.
-        self.query.select = [GeomSQL(agg_sql)]
-        self.query.select_fields = [agg_field]
-
-        try:
-            # `asql` => not overriding `sql` module.
-            asql, params = self.query.as_sql()
-        except sql.datastructures.EmptyResultSet:
-            return None   
-
-        # Getting a cursor, executing the query, and extracting the returned
-        # value from the aggregate function.
-        cursor = connection.cursor()
-        cursor.execute(asql, params)
-        result = cursor.fetchone()[0]
-        
-        # If the `agg_field` is specified as a GeometryField, then autmatically
-        # set up the conversion function.
-        if agg_field is GeometryField and not callable(convert_func):
-            if SpatialBackend.postgis:
-                def convert_geom(hex, geo_field):
-                    if hex: return SpatialBackend.Geometry(hex)
-                    else: return None
-            elif SpatialBackend.oracle:
-                def convert_geom(clob, geo_field):
-                    if clob: return SpatialBackend.Geometry(clob.read(), geo_field._srid)
-                    else: return None
-            convert_func = convert_geom
-
-        # Returning the callback function evaluated on the result culled
-        # from the executed cursor.
-        if callable(convert_func):
-            return convert_func(result, geo_field)
-        else:
-            return result
-
-    def _spatial_attribute(self, att, settings, field_name=None, model_att=None):
-        """
-        DRY routine for calling a spatial stored procedure on a geometry column
-        and attaching its output as an attribute of the model.
-
-        Arguments:
-         att:
-          The name of the spatial attribute that holds the spatial
-          SQL function to call.
-
-         settings:
-          Dictonary of internal settings to customize for the spatial procedure. 
-
-        Public Keyword Arguments:
-
-         field_name:
-          The name of the geographic field to call the spatial
-          function on.  May also be a lookup to a geometry field
-          as part of a foreign key relation.
-
-         model_att:
-          The name of the model attribute to attach the output of
-          the spatial function to.
-        """
-        # Default settings.
-        settings.setdefault('desc', None)
-        settings.setdefault('geom_args', ())
-        settings.setdefault('geom_field', None)
-        settings.setdefault('procedure_args', {})
-        settings.setdefault('procedure_fmt', '%(geo_col)s')
-        settings.setdefault('select_params', [])
-
-        # Performing setup for the spatial column, unless told not to.
-        if settings.get('setup', True):
-            default_args, geo_field = self._spatial_setup(att, desc=settings['desc'], field_name=field_name)
-            for k, v in default_args.iteritems(): settings['procedure_args'].setdefault(k, v)
-        else:
-            geo_field = settings['geo_field']
-            
-        # The attribute to attach to the model.
-        if not isinstance(model_att, basestring): model_att = att
-
-        # Special handling for any argument that is a geometry.
-        for name in settings['geom_args']:
-            # Using the field's get_db_prep_lookup() to get any needed
-            # transformation SQL -- we pass in a 'dummy' `contains` lookup.
-            where, params = geo_field.get_db_prep_lookup('contains', settings['procedure_args'][name])
-            # Replacing the procedure format with that of any needed 
-            # transformation SQL.
-            old_fmt = '%%(%s)s' % name
-            new_fmt = where[0] % '%%s'
-            settings['procedure_fmt'] = settings['procedure_fmt'].replace(old_fmt, new_fmt)
-            settings['select_params'].extend(params)
-
-        # Getting the format for the stored procedure.
-        fmt = '%%(function)s(%s)' % settings['procedure_fmt']
-        
-        # If the result of this function needs to be converted.
-        if settings.get('select_field', False):
-            sel_fld = settings['select_field']
-            if isinstance(sel_fld, GeomField) and SpatialBackend.select:
-                self.query.custom_select[model_att] = SpatialBackend.select
-            self.query.extra_select_fields[model_att] = sel_fld
-
-        # Finally, setting the extra selection attribute with 
-        # the format string expanded with the stored procedure
-        # arguments.
-        return self.extra(select={model_att : fmt % settings['procedure_args']}, 
-                          select_params=settings['select_params'])
-
-    def _distance_attribute(self, func, geom=None, tolerance=0.05, spheroid=False, **kwargs):
-        """
-        DRY routine for GeoQuerySet distance attribute routines.
-        """
-        # Setting up the distance procedure arguments.
-        procedure_args, geo_field = self._spatial_setup(func, field_name=kwargs.get('field_name', None))
-
-        # If geodetic defaulting distance attribute to meters (Oracle and
-        # PostGIS spherical distances return meters).  Otherwise, use the
-        # units of the geometry field.
-        if geo_field.geodetic:
-            dist_att = 'm'
-        else:
-            dist_att = Distance.unit_attname(geo_field._unit_name)
-
-        # Shortcut booleans for what distance function we're using.
-        distance = func == 'distance'
-        length = func == 'length'
-        perimeter = func == 'perimeter'
-        if not (distance or length or perimeter): 
-            raise ValueError('Unknown distance function: %s' % func)
-
-        # The field's get_db_prep_lookup() is used to get any 
-        # extra distance parameters.  Here we set up the
-        # parameters that will be passed in to field's function.
-        lookup_params = [geom or 'POINT (0 0)', 0]
-
-        # If the spheroid calculation is desired, either by the `spheroid`
-        # keyword or wehn calculating the length of geodetic field, make
-        # sure the 'spheroid' distance setting string is passed in so we
-        # get the correct spatial stored procedure.            
-        if spheroid or (SpatialBackend.postgis and geo_field.geodetic and length): 
-            lookup_params.append('spheroid') 
-        where, params = geo_field.get_db_prep_lookup('distance_lte', lookup_params)
-
-        # The `geom_args` flag is set to true if a geometry parameter was 
-        # passed in.
-        geom_args = bool(geom)
-
-        if SpatialBackend.oracle:
-            if distance:
-                procedure_fmt = '%(geo_col)s,%(geom)s,%(tolerance)s'
-            elif length or perimeter:
-                procedure_fmt = '%(geo_col)s,%(tolerance)s'
-            procedure_args['tolerance'] = tolerance
-        else:
-            # Getting whether this field is in units of degrees since the field may have
-            # been transformed via the `transform` GeoQuerySet method.
-            if self.query.transformed_srid:
-                u, unit_name, s = get_srid_info(self.query.transformed_srid)
-                geodetic = unit_name in geo_field.geodetic_units
-            else:
-                geodetic = geo_field.geodetic
-            
-            if distance:
-                if self.query.transformed_srid:
-                    # Setting the `geom_args` flag to false because we want to handle
-                    # transformation SQL here, rather than the way done by default
-                    # (which will transform to the original SRID of the field rather
-                    #  than to what was transformed to).
-                    geom_args = False
-                    procedure_fmt = '%s(%%(geo_col)s, %s)' % (SpatialBackend.transform, self.query.transformed_srid)
-                    if geom.srid is None or geom.srid == self.query.transformed_srid:
-                        # If the geom parameter srid is None, it is assumed the coordinates 
-                        # are in the transformed units.  A placeholder is used for the
-                        # geometry parameter.
-                        procedure_fmt += ', %%s'
-                    else:
-                        # We need to transform the geom to the srid specified in `transform()`,
-                        # so wrapping the geometry placeholder in transformation SQL.
-                        procedure_fmt += ', %s(%%%%s, %s)' % (SpatialBackend.transform, self.query.transformed_srid)
-                else:
-                    # `transform()` was not used on this GeoQuerySet.
-                    procedure_fmt  = '%(geo_col)s,%(geom)s'
-
-                if geodetic:
-                    # Spherical distance calculation is needed (because the geographic
-                    # field is geodetic). However, the PostGIS ST_distance_sphere/spheroid() 
-                    # procedures may only do queries from point columns to point geometries
-                    # some error checking is required.
-                    if not isinstance(geo_field, PointField): 
-                        raise TypeError('Spherical distance calculation only supported on PointFields.')
-                    if not str(SpatialBackend.Geometry(buffer(params[0].wkb)).geom_type) == 'Point':
-                        raise TypeError('Spherical distance calculation only supported with Point Geometry parameters')
-                    # The `function` procedure argument needs to be set differently for
-                    # geodetic distance calculations.
-                    if spheroid:
-                        # Call to distance_spheroid() requires spheroid param as well.
-                        procedure_fmt += ',%(spheroid)s'
-                        procedure_args.update({'function' : SpatialBackend.distance_spheroid, 'spheroid' : where[1]})
-                    else:
-                        procedure_args.update({'function' : SpatialBackend.distance_sphere})
-            elif length or perimeter:
-                procedure_fmt = '%(geo_col)s'
-                if geodetic and length:
-                    # There's no `length_sphere`
-                    procedure_fmt += ',%(spheroid)s'
-                    procedure_args.update({'function' : SpatialBackend.length_spheroid, 'spheroid' : where[1]})
-
-        # Setting up the settings for `_spatial_attribute`.
-        s = {'select_field' : DistanceField(dist_att),
-             'setup' : False, 
-             'geo_field' : geo_field,
-             'procedure_args' : procedure_args,
-             'procedure_fmt' : procedure_fmt,
-             }
-        if geom_args: 
-            s['geom_args'] = ('geom',)
-            s['procedure_args']['geom'] = geom
-        elif geom:
-            # The geometry is passed in as a parameter because we handled
-            # transformation conditions in this routine.
-            s['select_params'] = [SpatialBackend.Adaptor(geom)]
-        return self._spatial_attribute(func, s, **kwargs)
-
-    def _geom_attribute(self, func, tolerance=0.05, **kwargs):
-        """
-        DRY routine for setting up a GeoQuerySet method that attaches a
-        Geometry attribute (e.g., `centroid`, `point_on_surface`).
-        """
-        s = {'select_field' : GeomField(),}
-        if SpatialBackend.oracle:
-            s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'
-            s['procedure_args'] = {'tolerance' : tolerance}
-        return self._spatial_attribute(func, s, **kwargs)
-                     
-    def _geomset_attribute(self, func, geom, tolerance=0.05, **kwargs):
-        """
-        DRY routine for setting up a GeoQuerySet method that attaches a
-        Geometry attribute and takes a Geoemtry parameter.  This is used
-        for geometry set-like operations (e.g., intersection, difference, 
-        union, sym_difference).
-        """
-        s = {'geom_args' : ('geom',),
-             'select_field' : GeomField(),
-             'procedure_fmt' : '%(geo_col)s,%(geom)s',
-             'procedure_args' : {'geom' : geom},
-            }
-        if SpatialBackend.oracle:
-            s['procedure_fmt'] += ',%(tolerance)s'
-            s['procedure_args']['tolerance'] = tolerance
-        return self._spatial_attribute(func, s, **kwargs)
-
-    def _geocol_select(self, geo_field, field_name, aggregate=False):
-        """
-        Helper routine for constructing the SQL to select the geographic
-        column.  Takes into account if the geographic field is in a
-        ForeignKey relation to the current model.
-        """
-        # If this is an aggregate spatial query, the flag needs to be
-        # set on the `GeoQuery` object of this queryset.
-        if aggregate: self.query.aggregate = True
-
-        # Is this operation going to be on a related geographic field?
-        if not geo_field in self.model._meta.fields:
-            # If so, it'll have to be added to the select related information
-            # (e.g., if 'location__point' was given as the field name).
-            self.query.add_select_related([field_name])
-            self.query.pre_sql_setup()
-            rel_table, rel_col = self.query.related_select_cols[self.query.related_select_fields.index(geo_field)]
-            return self.query._field_column(geo_field, rel_table)
-        else:
-            return self.query._field_column(geo_field)
diff --git a/webapp/django/contrib/gis/db/models/sql/__init__.py b/webapp/django/contrib/gis/db/models/sql/__init__.py
deleted file mode 100644
index 4a66b41..0000000
--- a/webapp/django/contrib/gis/db/models/sql/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-from django.contrib.gis.db.models.sql.query import AreaField, DistanceField, GeomField, GeoQuery
-from django.contrib.gis.db.models.sql.where import GeoWhereNode
diff --git a/webapp/django/contrib/gis/db/models/sql/query.py b/webapp/django/contrib/gis/db/models/sql/query.py
deleted file mode 100644
index f3e9fb2..0000000
--- a/webapp/django/contrib/gis/db/models/sql/query.py
+++ /dev/null
@@ -1,327 +0,0 @@
-from itertools import izip
-from django.db.models.query import sql
-from django.db.models.fields import FieldDoesNotExist
-from django.db.models.fields.related import ForeignKey
-
-from django.contrib.gis.db.backend import SpatialBackend
-from django.contrib.gis.db.models.fields import GeometryField
-from django.contrib.gis.db.models.sql.where import GeoWhereNode
-from django.contrib.gis.measure import Area, Distance
-
-# Valid GIS query types.
-ALL_TERMS = sql.constants.QUERY_TERMS.copy()
-ALL_TERMS.update(SpatialBackend.gis_terms)
-
-class GeoQuery(sql.Query):
-    """
-    A single spatial SQL query.
-    """
-    # Overridding the valid query terms.
-    query_terms = ALL_TERMS
-
-    #### Methods overridden from the base Query class ####
-    def __init__(self, model, conn):
-        super(GeoQuery, self).__init__(model, conn, where=GeoWhereNode)
-        # The following attributes are customized for the GeoQuerySet.
-        # The GeoWhereNode and SpatialBackend classes contain backend-specific
-        # routines and functions.
-        self.aggregate = False
-        self.custom_select = {}
-        self.transformed_srid = None
-        self.extra_select_fields = {}
-
-    def clone(self, *args, **kwargs):
-        obj = super(GeoQuery, self).clone(*args, **kwargs)
-        # Customized selection dictionary and transformed srid flag have
-        # to also be added to obj.
-        obj.aggregate = self.aggregate
-        obj.custom_select = self.custom_select.copy()
-        obj.transformed_srid = self.transformed_srid
-        obj.extra_select_fields = self.extra_select_fields.copy()
-        return obj
-
-    def get_columns(self, with_aliases=False):
-        """
-        Return the list of columns to use in the select statement. If no
-        columns have been specified, returns all columns relating to fields in
-        the model.
-
-        If 'with_aliases' is true, any column names that are duplicated
-        (without the table names) are given unique aliases. This is needed in
-        some cases to avoid ambiguitity with nested queries.
-
-        This routine is overridden from Query to handle customized selection of 
-        geometry columns.
-        """
-        qn = self.quote_name_unless_alias
-        qn2 = self.connection.ops.quote_name
-        result = ['(%s) AS %s' % (self.get_extra_select_format(alias) % col[0], qn2(alias)) 
-                  for alias, col in self.extra_select.iteritems()]
-        aliases = set(self.extra_select.keys())
-        if with_aliases:
-            col_aliases = aliases.copy()
-        else:
-            col_aliases = set()
-        if self.select:
-            # This loop customized for GeoQuery.
-            for col, field in izip(self.select, self.select_fields):
-                if isinstance(col, (list, tuple)):
-                    r = self.get_field_select(field, col[0])
-                    if with_aliases and col[1] in col_aliases:
-                        c_alias = 'Col%d' % len(col_aliases)
-                        result.append('%s AS %s' % (r, c_alias))
-                        aliases.add(c_alias)
-                        col_aliases.add(c_alias)
-                    else:
-                        result.append(r)
-                        aliases.add(r)
-                        col_aliases.add(col[1])
-                else:
-                    result.append(col.as_sql(quote_func=qn))
-                    if hasattr(col, 'alias'):
-                        aliases.add(col.alias)
-                        col_aliases.add(col.alias)
-        elif self.default_cols:
-            cols, new_aliases = self.get_default_columns(with_aliases,
-                    col_aliases)
-            result.extend(cols)
-            aliases.update(new_aliases)
-        # This loop customized for GeoQuery.
-        if not self.aggregate:
-            for (table, col), field in izip(self.related_select_cols, self.related_select_fields):
-                r = self.get_field_select(field, table)
-                if with_aliases and col in col_aliases:
-                    c_alias = 'Col%d' % len(col_aliases)
-                    result.append('%s AS %s' % (r, c_alias))
-                    aliases.add(c_alias)
-                    col_aliases.add(c_alias)
-                else:
-                    result.append(r)
-                    aliases.add(r)
-                    col_aliases.add(col)
-
-        self._select_aliases = aliases
-        return result
-
-    def get_default_columns(self, with_aliases=False, col_aliases=None,
-                            start_alias=None, opts=None, as_pairs=False):
-        """
-        Computes the default columns for selecting every field in the base
-        model.
-
-        Returns a list of strings, quoted appropriately for use in SQL
-        directly, as well as a set of aliases used in the select statement.
-
-        This routine is overridden from Query to handle customized selection of 
-        geometry columns.
-        """
-        result = []
-        if opts is None:
-            opts = self.model._meta
-        if start_alias:
-            table_alias = start_alias
-        else:
-            table_alias = self.tables[0]
-        root_pk = self.model._meta.pk.column
-        seen = {None: table_alias}
-        aliases = set()
-        for field, model in opts.get_fields_with_model():
-            try:
-                alias = seen[model]
-            except KeyError:
-                alias = self.join((table_alias, model._meta.db_table,
-                        root_pk, model._meta.pk.column))
-                seen[model] = alias
-            if as_pairs:
-                result.append((alias, field.column))
-                continue
-            # This part of the function is customized for GeoQuery. We
-            # see if there was any custom selection specified in the
-            # dictionary, and set up the selection format appropriately.
-            field_sel = self.get_field_select(field, alias)
-            if with_aliases and field.column in col_aliases:
-                c_alias = 'Col%d' % len(col_aliases)
-                result.append('%s AS %s' % (field_sel, c_alias))
-                col_aliases.add(c_alias)
-                aliases.add(c_alias)
-            else:
-                r = field_sel
-                result.append(r)
-                aliases.add(r)
-                if with_aliases:
-                    col_aliases.add(field.column)
-        if as_pairs:
-            return result, None
-        return result, aliases
-
-    def get_ordering(self):
-        """
-        This routine is overridden to disable ordering for aggregate
-        spatial queries.
-        """
-        if not self.aggregate:
-            return super(GeoQuery, self).get_ordering()
-        else:
-            return ()
-
-    def resolve_columns(self, row, fields=()):
-        """
-        This routine is necessary so that distances and geometries returned
-        from extra selection SQL get resolved appropriately into Python 
-        objects.
-        """
-        values = []
-        aliases = self.extra_select.keys()
-        index_start = len(aliases)
-        values = [self.convert_values(v, self.extra_select_fields.get(a, None)) 
-                  for v, a in izip(row[:index_start], aliases)]
-        if SpatialBackend.oracle:
-            # This is what happens normally in Oracle's `resolve_columns`.
-            for value, field in izip(row[index_start:], fields):
-                values.append(self.convert_values(value, field))
-        else:
-            values.extend(row[index_start:])
-        return values
-
-    def convert_values(self, value, field):
-        """
-        Using the same routines that Oracle does we can convert our
-        extra selection objects into Geometry and Distance objects.
-        TODO: Laziness.
-        """
-        if SpatialBackend.oracle:
-            # Running through Oracle's first.
-            value = super(GeoQuery, self).convert_values(value, field)
-        if isinstance(field, DistanceField):
-            # Using the field's distance attribute, can instantiate
-            # `Distance` with the right context.
-            value = Distance(**{field.distance_att : value})
-        elif isinstance(field, AreaField):
-            value = Area(**{field.area_att : value})
-        elif isinstance(field, GeomField):
-            value = SpatialBackend.Geometry(value)
-        return value
-
-    #### Routines unique to GeoQuery ####
-    def get_extra_select_format(self, alias):
-        sel_fmt = '%s'
-        if alias in self.custom_select:
-            sel_fmt = sel_fmt % self.custom_select[alias]
-        return sel_fmt
-
-    def get_field_select(self, fld, alias=None):
-        """
-        Returns the SELECT SQL string for the given field.  Figures out
-        if any custom selection SQL is needed for the column  The `alias` 
-        keyword may be used to manually specify the database table where 
-        the column exists, if not in the model associated with this 
-        `GeoQuery`.
-        """
-        sel_fmt = self.get_select_format(fld)
-        if fld in self.custom_select:
-            field_sel = sel_fmt % self.custom_select[fld]
-        else:
-            field_sel = sel_fmt % self._field_column(fld, alias)
-        return field_sel
-
-    def get_select_format(self, fld):
-        """
-        Returns the selection format string, depending on the requirements
-        of the spatial backend.  For example, Oracle and MySQL require custom
-        selection formats in order to retrieve geometries in OGC WKT. For all
-        other fields a simple '%s' format string is returned.
-        """
-        if SpatialBackend.select and hasattr(fld, '_geom'):
-            # This allows operations to be done on fields in the SELECT,
-            # overriding their values -- used by the Oracle and MySQL
-            # spatial backends to get database values as WKT, and by the
-            # `transform` method.
-            sel_fmt = SpatialBackend.select
-
-            # Because WKT doesn't contain spatial reference information,
-            # the SRID is prefixed to the returned WKT to ensure that the
-            # transformed geometries have an SRID different than that of the
-            # field -- this is only used by `transform` for Oracle backends.
-            if self.transformed_srid and SpatialBackend.oracle:
-                sel_fmt = "'SRID=%d;'||%s" % (self.transformed_srid, sel_fmt)
-        else:
-            sel_fmt = '%s'
-        return sel_fmt
-
-    # Private API utilities, subject to change.
-    def _check_geo_field(self, model, name_param):
-        """
-        Recursive utility routine for checking the given name parameter
-        on the given model.  Initially, the name parameter is a string,
-        of the field on the given model e.g., 'point', 'the_geom'. 
-        Related model field strings like 'address__point', may also be 
-        used.
-
-        If a GeometryField exists according to the given name parameter 
-        it will be returned, otherwise returns False.
-        """
-        if isinstance(name_param, basestring):
-            # This takes into account the situation where the name is a 
-            # lookup to a related geographic field, e.g., 'address__point'.
-            name_param = name_param.split(sql.constants.LOOKUP_SEP)
-            name_param.reverse() # Reversing so list operates like a queue of related lookups.
-        elif not isinstance(name_param, list):
-            raise TypeError
-        try:
-            # Getting the name of the field for the model (by popping the first
-            # name from the `name_param` list created above).
-            fld, mod, direct, m2m = model._meta.get_field_by_name(name_param.pop())
-        except (FieldDoesNotExist, IndexError):
-            return False
-        # TODO: ManyToManyField?
-        if isinstance(fld, GeometryField): 
-            return fld # A-OK.
-        elif isinstance(fld, ForeignKey):
-            # ForeignKey encountered, return the output of this utility called
-            # on the _related_ model with the remaining name parameters.
-            return self._check_geo_field(fld.rel.to, name_param) # Recurse to check ForeignKey relation.
-        else:
-            return False
-
-    def _field_column(self, field, table_alias=None):
-        """
-        Helper function that returns the database column for the given field.
-        The table and column are returned (quoted) in the proper format, e.g.,
-        `"geoapp_city"."point"`.  If `table_alias` is not specified, the 
-        database table associated with the model of this `GeoQuery` will be
-        used.
-        """
-        if table_alias is None: table_alias = self.model._meta.db_table
-        return "%s.%s" % (self.quote_name_unless_alias(table_alias), 
-                          self.connection.ops.quote_name(field.column))
-
-    def _geo_field(self, field_name=None):
-        """
-        Returns the first Geometry field encountered; or specified via the
-        `field_name` keyword.  The `field_name` may be a string specifying
-        the geometry field on this GeoQuery's model, or a lookup string
-        to a geometry field via a ForeignKey relation.
-        """
-        if field_name is None:
-            # Incrementing until the first geographic field is found.
-            for fld in self.model._meta.fields:
-                if isinstance(fld, GeometryField): return fld
-            return False
-        else:
-            # Otherwise, check by the given field name -- which may be
-            # a lookup to a _related_ geographic field.
-            return self._check_geo_field(self.model, field_name)
-
-### Field Classes for `convert_values` ####
-class AreaField(object):
-    def __init__(self, area_att):
-        self.area_att = area_att
-
-class DistanceField(object):
-    def __init__(self, distance_att):
-        self.distance_att = distance_att
-
-# Rather than use GeometryField (which requires a SQL query
-# upon instantiation), use this lighter weight class.
-class GeomField(object): 
-    pass
diff --git a/webapp/django/contrib/gis/db/models/sql/where.py b/webapp/django/contrib/gis/db/models/sql/where.py
deleted file mode 100644
index a1a28d9..0000000
--- a/webapp/django/contrib/gis/db/models/sql/where.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import datetime
-from django.db.models.fields import Field
-from django.db.models.sql.where import WhereNode
-from django.contrib.gis.db.backend import get_geo_where_clause, SpatialBackend
-
-class GeoAnnotation(object):
-    """
-    The annotation used for GeometryFields; basically a placeholder
-    for metadata needed by the `get_geo_where_clause` of the spatial
-    backend.
-    """
-    def __init__(self, field, value, where):
-        self.geodetic = field.geodetic
-        self.geom_type = field._geom
-        self.value = value
-        self.where = tuple(where)
-
-class GeoWhereNode(WhereNode):
-    """
-    Used to represent the SQL where-clause for spatial databases --
-    these are tied to the GeoQuery class that created it.
-    """
-    def add(self, data, connector):
-        """
-        This is overridden from the regular WhereNode to handle the 
-        peculiarties of GeometryFields, because they need a special 
-        annotation object that contains the spatial metadata from the 
-        field to generate the spatial SQL.
-        """
-        if not isinstance(data, (list, tuple)):
-            return super(WhereNode, self).add(data, connector)
-        alias, col, field, lookup_type, value = data     
-        if not hasattr(field, "_geom"):
-            # Not a geographic field, so call `WhereNode.add`.
-            return super(GeoWhereNode, self).add(data, connector)
-        else:
-            # `GeometryField.get_db_prep_lookup` returns a where clause
-            # substitution array in addition to the parameters.
-            where, params = field.get_db_prep_lookup(lookup_type, value)
-
-            # The annotation will be a `GeoAnnotation` object that
-            # will contain the necessary geometry field metadata for
-            # the `get_geo_where_clause` to construct the appropriate
-            # spatial SQL when `make_atom` is called.
-            annotation = GeoAnnotation(field, value, where)
-            return super(WhereNode, self).add((alias, col, field.db_type(), lookup_type,
-                                               annotation, params), connector)
-
-    def make_atom(self, child, qn):
-        table_alias, name, db_type, lookup_type, value_annot, params = child
- 
-        if isinstance(value_annot, GeoAnnotation):
-            if lookup_type in SpatialBackend.gis_terms:
-                # Getting the geographic where clause; substitution parameters
-                # will be populated in the GeoFieldSQL object returned by the
-                # GeometryField.
-                gwc = get_geo_where_clause(table_alias, name, lookup_type, value_annot)
-                return gwc % value_annot.where, params
-            else:
-                raise TypeError('Invalid lookup type: %r' % lookup_type)
-        else:
-            # If not a GeometryField, call the `make_atom` from the 
-            # base class.
-            return super(GeoWhereNode, self).make_atom(child, qn)
diff --git a/webapp/django/contrib/gis/feeds.py b/webapp/django/contrib/gis/feeds.py
deleted file mode 100644
index 4105ef7..0000000
--- a/webapp/django/contrib/gis/feeds.py
+++ /dev/null
@@ -1,135 +0,0 @@
-from django.contrib.syndication.feeds import Feed as BaseFeed, FeedDoesNotExist
-from django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed
-
-class GeoFeedMixin(object):
-    """
-    This mixin provides the necessary routines for SyndicationFeed subclasses
-    to produce simple GeoRSS or W3C Geo elements.
-    """
-
-    def georss_coords(self, coords):
-        """
-        In GeoRSS coordinate pairs are ordered by lat/lon and separated by
-        a single white space.  Given a tuple of coordinates, this will return
-        a unicode GeoRSS representation.
-        """
-        return u' '.join([u'%f %f' % (coord[1], coord[0]) for coord in coords])
-
-    def add_georss_point(self, handler, coords, w3c_geo=False):
-        """
-        Adds a GeoRSS point with the given coords using the given handler.
-        Handles the differences between simple GeoRSS and the more pouplar
-        W3C Geo specification.
-        """
-        if w3c_geo:
-            lon, lat = coords[:2]
-            handler.addQuickElement(u'geo:lat', u'%f' % lat)
-            handler.addQuickElement(u'geo:lon', u'%f' % lon)
-        else:
-            handler.addQuickElement(u'georss:point', self.georss_coords((coords,)))
-
-    def add_georss_element(self, handler, item, w3c_geo=False):
-        """
-        This routine adds a GeoRSS XML element using the given item and handler.
-        """
-        # Getting the Geometry object.
-        geom = item.get('geometry', None)
-        if not geom is None:
-            if isinstance(geom, (list, tuple)):
-                # Special case if a tuple/list was passed in.  The tuple may be
-                # a point or a box
-                box_coords = None
-                if isinstance(geom[0], (list, tuple)):
-                    # Box: ( (X0, Y0), (X1, Y1) )
-                    if len(geom) == 2:
-                        box_coords = geom
-                    else:
-                        raise ValueError('Only should be two sets of coordinates.')
-                else:
-                    if len(geom) == 2:
-                        # Point: (X, Y)
-                        self.add_georss_point(handler, geom, w3c_geo=w3c_geo)
-                    elif len(geom) == 4:
-                        # Box: (X0, Y0, X1, Y1)
-                        box_coords = (geom[:2], geom[2:])
-                    else:
-                        raise ValueError('Only should be 2 or 4 numeric elements.')
-                # If a GeoRSS box was given via tuple.
-                if not box_coords is None:
-                    if w3c_geo: raise ValueError('Cannot use simple GeoRSS box in W3C Geo feeds.')
-                    handler.addQuickElement(u'georss:box', self.georss_coords(box_coords))
-            else:
-                # Getting the lower-case geometry type.
-                gtype = str(geom.geom_type).lower()
-                if gtype == 'point':
-                    self.add_georss_point(handler, geom.coords, w3c_geo=w3c_geo) 
-                else:
-                    if w3c_geo: raise ValueError('W3C Geo only supports Point geometries.')
-                    # For formatting consistent w/the GeoRSS simple standard:
-                    # http://georss.org/1.0#simple
-                    if gtype in ('linestring', 'linearring'):
-                        handler.addQuickElement(u'georss:line', self.georss_coords(geom.coords))
-                    elif gtype in ('polygon',):
-                        # Only support the exterior ring.
-                        handler.addQuickElement(u'georss:polygon', self.georss_coords(geom[0].coords))
-                    else:
-                        raise ValueError('Geometry type "%s" not supported.' % geom.geom_type)
-
-### SyndicationFeed subclasses ###
-class GeoRSSFeed(Rss201rev2Feed, GeoFeedMixin):
-    def rss_attributes(self):
-        attrs = super(GeoRSSFeed, self).rss_attributes()
-        attrs[u'xmlns:georss'] = u'http://www.georss.org/georss'
-        return attrs
-
-    def add_item_elements(self, handler, item):
-        super(GeoRSSFeed, self).add_item_elements(handler, item)
-        self.add_georss_element(handler, item)
-
-    def add_root_elements(self, handler):
-        super(GeoRSSFeed, self).add_root_elements(handler)
-        self.add_georss_element(handler, self.feed)
-
-class GeoAtom1Feed(Atom1Feed, GeoFeedMixin):
-    def root_attributes(self):
-        attrs = super(GeoAtom1Feed, self).root_attributes()
-        attrs[u'xmlns:georss'] = u'http://www.georss.org/georss'
-        return attrs
-
-    def add_item_elements(self, handler, item):
-        super(GeoAtom1Feed, self).add_item_elements(handler, item)
-        self.add_georss_element(handler, item)
-
-    def add_root_elements(self, handler):
-        super(GeoAtom1Feed, self).add_root_elements(handler)
-        self.add_georss_element(handler, self.feed)
-
-class W3CGeoFeed(Rss201rev2Feed, GeoFeedMixin):
-    def rss_attributes(self):
-        attrs = super(W3CGeoFeed, self).rss_attributes()
-        attrs[u'xmlns:geo'] = u'http://www.w3.org/2003/01/geo/wgs84_pos#'
-        return attrs
-
-    def add_item_elements(self, handler, item):
-        super(W3CGeoFeed, self).add_item_elements(handler, item)
-        self.add_georss_element(handler, item, w3c_geo=True)
-
-    def add_root_elements(self, handler):
-        super(W3CGeoFeed, self).add_root_elements(handler)
-        self.add_georss_element(handler, self.feed, w3c_geo=True)
-
-### Feed subclass ###
-class Feed(BaseFeed):
-    """
-    This is a subclass of the `Feed` from `django.contrib.syndication`.
-    This allows users to define a `geometry(obj)` and/or `item_geometry(item)`
-    methods on their own subclasses so that geo-referenced information may
-    placed in the feed.
-    """
-    feed_type = GeoRSSFeed
-
-    def feed_extra_kwargs(self, obj):
-        return {'geometry' : self.__get_dynamic_attr('geometry', obj)}
-
-    def item_extra_kwargs(self, item):
-        return {'geometry' : self.__get_dynamic_attr('item_geometry', item)}
diff --git a/webapp/django/contrib/gis/forms/__init__.py b/webapp/django/contrib/gis/forms/__init__.py
deleted file mode 100644
index 5441e60..0000000
--- a/webapp/django/contrib/gis/forms/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from django.contrib.gis.forms.fields import GeometryField
diff --git a/webapp/django/contrib/gis/forms/fields.py b/webapp/django/contrib/gis/forms/fields.py
deleted file mode 100644
index a65e76d..0000000
--- a/webapp/django/contrib/gis/forms/fields.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from django import forms
-from django.contrib.gis.geos import GEOSGeometry, GEOSException
-from django.utils.translation import ugettext_lazy as _
-
-class GeometryField(forms.Field):
-    # By default a Textarea widget is used.
-    widget = forms.Textarea
-
-    default_error_messages = {
-        'no_geom' : _(u'No geometry value provided.'),
-        'invalid_geom' : _(u'Invalid Geometry value.'),
-        'invalid_geom_type' : _(u'Invalid Geometry type.'),
-    }
-    def __init__(self, **kwargs):
-        self.null = kwargs.pop('null')
-        self.geom_type = kwargs.pop('geom_type')
-        super(GeometryField, self).__init__(**kwargs)
-
-    def clean(self, value):
-        """
-        Validates that the input value can be converted to a Geometry
-        object (which is returned).  A ValidationError is raised if
-        the value cannot be instantiated as a Geometry.
-        """
-        if not value:
-            if self.null:
-                # The geometry column allows NULL, return None.
-                return None
-            else:
-                raise forms.ValidationError(self.error_messages['no_geom'])
-        try:
-            geom = GEOSGeometry(value)
-            if geom.geom_type.upper() != self.geom_type:
-                raise forms.ValidationError(self.error_messages['invalid_geom_type'])
-            return geom
-        except GEOSException:
-            raise forms.ValidationError(self.error_messages['invalid_geom'])
diff --git a/webapp/django/contrib/gis/gdal/LICENSE b/webapp/django/contrib/gis/gdal/LICENSE
deleted file mode 100644
index 4bd0bed..0000000
--- a/webapp/django/contrib/gis/gdal/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2007, Justin Bronn
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    1. Redistributions of source code must retain the above copyright notice,
-       this list of conditions and the following disclaimer.
-
-    2. Redistributions in binary form must reproduce the above copyright
-       notice, this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
-    3. Neither the name of OGRGeometry nor the names of its contributors may be used
-       to endorse or promote products derived from this software without
-       specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/webapp/django/contrib/gis/gdal/__init__.py b/webapp/django/contrib/gis/gdal/__init__.py
deleted file mode 100644
index b318850..0000000
--- a/webapp/django/contrib/gis/gdal/__init__.py
+++ /dev/null
@@ -1,59 +0,0 @@
-"""
- This module houses ctypes interfaces for GDAL objects.  The following GDAL
- objects are supported:
-
- CoordTransform: Used for coordinate transformations from one spatial
-  reference system to another.
-
- Driver: Wraps an OGR data source driver.
-  
- DataSource: Wrapper for the OGR data source object, supports
-  OGR-supported data sources.
-
- Envelope: A ctypes structure for bounding boxes (GDAL library
-  not required).
-
- OGRGeometry: Layer for accessing OGR Geometry objects.
-
- OGRGeomType: A class for representing the different OGR Geometry
-  types (GDAL library not required).
-
- SpatialReference: Represents OSR Spatial Reference objects.
-
- The GDAL library will be imported from the system path using the default  
- library name for the current OS. The default library path may be overridden
- by setting `GDAL_LIBRARY_PATH` in your settings with the path to the GDAL C 
- library on your system.  
-
- GDAL links to a large number of external libraries that consume RAM when 
- loaded.  Thus, it may desirable to disable GDAL on systems with limited
- RAM resources -- this may be accomplished by setting `GDAL_LIBRARY_PATH`
- to a non-existant file location (e.g., `GDAL_LIBRARY_PATH='/null/path'`; 
- setting to None/False/'' will not work as a string must be given).
-"""
-import sys
-
-# Attempting to import objects that depend on the GDAL library.  The
-# HAS_GDAL flag will be set to True if the library is present on
-# the system.
-try:
-    from django.contrib.gis.gdal.driver import Driver
-    from django.contrib.gis.gdal.datasource import DataSource
-    from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, gdal_release_date
-    from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform
-    from django.contrib.gis.gdal.geometries import OGRGeometry, GEOJSON
-    HAS_GDAL = True
-except:
-    HAS_GDAL, GEOJSON = False, False
-
-# The envelope, error, and geomtype modules do not actually require the
-# GDAL library, but still nead at least Python 2.4 and ctypes.
-PYTHON23 = sys.version_info[0] == 2 and sys.version_info[1] == 3
-if not PYTHON23:
-    try:
-        from django.contrib.gis.gdal.envelope import Envelope
-        from django.contrib.gis.gdal.error import check_err, OGRException, OGRIndexError, SRSException
-        from django.contrib.gis.gdal.geomtype import OGRGeomType
-    except ImportError:
-        # No ctypes, but don't raise an exception.
-        pass
diff --git a/webapp/django/contrib/gis/gdal/datasource.py b/webapp/django/contrib/gis/gdal/datasource.py
deleted file mode 100644
index 02363a0..0000000
--- a/webapp/django/contrib/gis/gdal/datasource.py
+++ /dev/null
@@ -1,138 +0,0 @@
-"""
- DataSource is a wrapper for the OGR Data Source object, which provides
- an interface for reading vector geometry data from many different file
- formats (including ESRI shapefiles).
-
- When instantiating a DataSource object, use the filename of a
- GDAL-supported data source.  For example, a SHP file or a
- TIGER/Line file from the government.
-
- The ds_driver keyword is used internally when a ctypes pointer
- is passed in directly.
-
- Example:
-  ds = DataSource('/home/foo/bar.shp')
-  for layer in ds:
-      for feature in layer:
-          # Getting the geometry for the feature.
-          g = feature.geom
-
-          # Getting the 'description' field for the feature.
-          desc = feature['description']
-
-          # We can also increment through all of the fields
-          #  attached to this feature.
-          for field in feature:
-              # Get the name of the field (e.g. 'description')
-              nm = field.name
-
-              # Get the type (integer) of the field, e.g. 0 => OFTInteger
-              t = field.type
-
-              # Returns the value the field; OFTIntegers return ints,
-              #  OFTReal returns floats, all else returns string.
-              val = field.value
-"""
-# ctypes prerequisites.
-from ctypes import byref, c_void_p
-
-# The GDAL C library, OGR exceptions, and the Layer object.
-from django.contrib.gis.gdal.driver import Driver
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError
-from django.contrib.gis.gdal.layer import Layer
-
-# Getting the ctypes prototypes for the DataSource.
-from django.contrib.gis.gdal.prototypes.ds import \
-    destroy_ds, get_driver_count, register_all, open_ds, release_ds, \
-    get_ds_name, get_layer, get_layer_count, get_layer_by_name
-
-# For more information, see the OGR C API source code:
-#  http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_DS_* routines are relevant here.
-class DataSource(object):
-    "Wraps an OGR Data Source object."
-
-    #### Python 'magic' routines ####
-    def __init__(self, ds_input, ds_driver=False, write=False):
-
-        # DataSource pointer is initially NULL.
-        self._ptr = None
-
-        # The write flag.
-        if write:
-            self._write = 1
-        else:
-            self._write = 0
-
-        # Registering all the drivers, this needs to be done
-        #  _before_ we try to open up a data source.
-        if not get_driver_count(): register_all()
-
-        if isinstance(ds_input, basestring):
-            # The data source driver is a void pointer.
-            ds_driver = c_void_p()
-            try:
-                # OGROpen will auto-detect the data source type.
-                ds = open_ds(ds_input, self._write, byref(ds_driver))
-            except OGRException:
-                # Making the error message more clear rather than something
-                # like "Invalid pointer returned from OGROpen".
-                raise OGRException('Could not open the datasource at "%s"' % ds_input)
-        elif isinstance(ds_input, c_void_p) and isinstance(ds_driver, c_void_p):
-            ds = ds_input
-        else:
-            raise OGRException('Invalid data source input type: %s' % type(ds_input))
-
-        if bool(ds):
-            self._ptr = ds
-            self._driver = Driver(ds_driver)
-        else:
-            # Raise an exception if the returned pointer is NULL 
-            raise OGRException('Invalid data source file "%s"' % ds_input)
-
-    def __del__(self):
-        "Destroys this DataStructure object."
-        if self._ptr: destroy_ds(self._ptr)
-
-    def __iter__(self):
-        "Allows for iteration over the layers in a data source."
-        for i in xrange(self.layer_count):
-            yield self[i]
-
-    def __getitem__(self, index):
-        "Allows use of the index [] operator to get a layer at the index."
-        if isinstance(index, basestring):
-            l = get_layer_by_name(self._ptr, index)
-            if not l: raise OGRIndexError('invalid OGR Layer name given: "%s"' % index)
-        elif isinstance(index, int):
-            if index < 0 or index >= self.layer_count:
-                raise OGRIndexError('index out of range')
-            l = get_layer(self._ptr, index)
-        else:
-            raise TypeError('Invalid index type: %s' % type(index))
-        return Layer(l)
-        
-    def __len__(self):
-        "Returns the number of layers within the data source."
-        return self.layer_count
-
-    def __str__(self):
-        "Returns OGR GetName and Driver for the Data Source."
-        return '%s (%s)' % (self.name, str(self.driver))
-
-    #### DataSource Properties ####
-    @property
-    def driver(self):
-        "Returns the Driver object for this Data Source."
-        return self._driver
-        
-    @property
-    def layer_count(self):
-        "Returns the number of layers in the data source."
-        return get_layer_count(self._ptr)
-
-    @property
-    def name(self):
-        "Returns the name of the data source."
-        return get_ds_name(self._ptr)
diff --git a/webapp/django/contrib/gis/gdal/driver.py b/webapp/django/contrib/gis/gdal/driver.py
deleted file mode 100644
index 2d5b3df..0000000
--- a/webapp/django/contrib/gis/gdal/driver.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# prerequisites imports 
-from ctypes import c_void_p
-from django.contrib.gis.gdal.error import OGRException
-from django.contrib.gis.gdal.prototypes.ds import \
-    get_driver, get_driver_by_name, get_driver_count, get_driver_name, register_all
-
-# For more information, see the OGR C API source code:
-#  http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_Dr_* routines are relevant here.
-class Driver(object):
-    "Wraps an OGR Data Source Driver."
-
-    # Case-insensitive aliases for OGR Drivers.
-    _alias = {'esri' : 'ESRI Shapefile',
-              'shp' : 'ESRI Shapefile',
-              'shape' : 'ESRI Shapefile',
-              'tiger' : 'TIGER',
-              'tiger/line' : 'TIGER',
-              }
-                
-    def __init__(self, dr_input):
-        "Initializes an OGR driver on either a string or integer input."
-
-        if isinstance(dr_input, basestring):
-            # If a string name of the driver was passed in
-            self._ptr = None # Initially NULL
-            self._register()
-
-            # Checking the alias dictionary (case-insensitive) to see if an alias
-            #  exists for the given driver.
-            if dr_input.lower() in self._alias:
-                name = self._alias[dr_input.lower()]
-            else:
-                name = dr_input
-
-            # Attempting to get the OGR driver by the string name.
-            dr = get_driver_by_name(name)
-        elif isinstance(dr_input, int):
-            self._register()
-            dr = get_driver(dr_input)
-        elif isinstance(dr_input, c_void_p):
-            dr = dr_input
-        else:
-            raise OGRException('Unrecognized input type for OGR Driver: %s' % str(type(dr_input)))
-
-        # Making sure we get a valid pointer to the OGR Driver
-        if not dr:
-            raise OGRException('Could not initialize OGR Driver on input: %s' % str(dr_input))
-        self._ptr = dr
-
-    def __str__(self):
-        "Returns the string name of the OGR Driver."
-        return get_driver_name(self._ptr)
-
-    def _register(self):
-        "Attempts to register all the data source drivers."
-        # Only register all if the driver count is 0 (or else all drivers
-        # will be registered over and over again)
-        if not self.driver_count: register_all()
-                    
-    # Driver properties
-    @property
-    def driver_count(self):
-        "Returns the number of OGR data source drivers registered."
-        return get_driver_count()
diff --git a/webapp/django/contrib/gis/gdal/envelope.py b/webapp/django/contrib/gis/gdal/envelope.py
deleted file mode 100644
index 971f06d..0000000
--- a/webapp/django/contrib/gis/gdal/envelope.py
+++ /dev/null
@@ -1,134 +0,0 @@
-"""
- The GDAL/OGR library uses an Envelope structure to hold the bounding
- box information for a geometry.  The envelope (bounding box) contains
- two pairs of coordinates, one for the lower left coordinate and one
- for the upper right coordinate:
-
-                           +----------o Upper right; (max_x, max_y)
-                           |          |
-                           |          |
-                           |          |
- Lower left (min_x, min_y) o----------+
-"""
-from ctypes import Structure, c_double
-from types import TupleType, ListType
-from django.contrib.gis.gdal.error import OGRException
-
-# The OGR definition of an Envelope is a C structure containing four doubles.
-#  See the 'ogr_core.h' source file for more information:
-#   http://www.gdal.org/ogr/ogr__core_8h-source.html
-class OGREnvelope(Structure):
-    "Represents the OGREnvelope C Structure."
-    _fields_ = [("MinX", c_double),
-                ("MaxX", c_double),
-                ("MinY", c_double),
-                ("MaxY", c_double),
-                ]
-
-class Envelope(object):
-    """
-    The Envelope object is a C structure that contains the minimum and
-    maximum X, Y coordinates for a rectangle bounding box.  The naming
-    of the variables is compatible with the OGR Envelope structure.
-    """
-
-    def __init__(self, *args):
-        """
-        The initialization function may take an OGREnvelope structure, 4-element
-        tuple or list, or 4 individual arguments.
-        """
-        
-        if len(args) == 1:
-            if isinstance(args[0], OGREnvelope):
-                # OGREnvelope (a ctypes Structure) was passed in.
-                self._envelope = args[0]
-            elif isinstance(args[0], (TupleType, ListType)):
-                # A tuple was passed in.
-                if len(args[0]) != 4:
-                    raise OGRException('Incorrect number of tuple elements (%d).' % len(args[0]))
-                else:
-                    self._from_sequence(args[0])
-            else:
-                raise TypeError('Incorrect type of argument: %s' % str(type(args[0])))
-        elif len(args) == 4:
-            # Individiual parameters passed in.
-            #  Thanks to ww for the help
-            self._from_sequence(map(float, args))
-        else:
-            raise OGRException('Incorrect number (%d) of arguments.' % len(args))
-
-        # Checking the x,y coordinates
-        if self.min_x >= self.max_x:
-            raise OGRException('Envelope minimum X >= maximum X.')
-        if self.min_y >= self.max_y:
-            raise OGRException('Envelope minimum Y >= maximum Y.')
-
-    def __eq__(self, other):
-        """
-        Returns True if the envelopes are equivalent; can compare against
-        other Envelopes and 4-tuples.
-        """
-        if isinstance(other, Envelope):
-            return (self.min_x == other.min_x) and (self.min_y == other.min_y) and \
-                   (self.max_x == other.max_x) and (self.max_y == other.max_y)
-        elif isinstance(other, TupleType) and len(other) == 4:
-            return (self.min_x == other[0]) and (self.min_y == other[1]) and \
-                   (self.max_x == other[2]) and (self.max_y == other[3])
-        else:
-            raise OGRException('Equivalence testing only works with other Envelopes.')
-
-    def __str__(self):
-        "Returns a string representation of the tuple."
-        return str(self.tuple)
-
-    def _from_sequence(self, seq):
-        "Initializes the C OGR Envelope structure from the given sequence."
-        self._envelope = OGREnvelope()
-        self._envelope.MinX = seq[0]
-        self._envelope.MinY = seq[1]
-        self._envelope.MaxX = seq[2]
-        self._envelope.MaxY = seq[3]
-    
-    @property
-    def min_x(self):
-        "Returns the value of the minimum X coordinate."
-        return self._envelope.MinX
-
-    @property
-    def min_y(self):
-        "Returns the value of the minimum Y coordinate."
-        return self._envelope.MinY
-
-    @property
-    def max_x(self):
-        "Returns the value of the maximum X coordinate."
-        return self._envelope.MaxX
-
-    @property
-    def max_y(self):
-        "Returns the value of the maximum Y coordinate."
-        return self._envelope.MaxY
-
-    @property
-    def ur(self):
-        "Returns the upper-right coordinate."
-        return (self.max_x, self.max_y)
-
-    @property
-    def ll(self):
-        "Returns the lower-left coordinate."
-        return (self.min_x, self.min_y)
-
-    @property
-    def tuple(self):
-        "Returns a tuple representing the envelope."
-        return (self.min_x, self.min_y, self.max_x, self.max_y)
-
-    @property
-    def wkt(self):
-        "Returns WKT representing a Polygon for this envelope."
-        # TODO: Fix significant figures.
-        return 'POLYGON((%s %s,%s %s,%s %s,%s %s,%s %s))' % \
-               (self.min_x, self.min_y, self.min_x, self.max_y,
-                self.max_x, self.max_y, self.max_x, self.min_y,
-                self.min_x, self.min_y)
diff --git a/webapp/django/contrib/gis/gdal/error.py b/webapp/django/contrib/gis/gdal/error.py
deleted file mode 100644
index 4ec3f7e..0000000
--- a/webapp/django/contrib/gis/gdal/error.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
- This module houses the OGR & SRS Exception objects, and the
- check_err() routine which checks the status code returned by
- OGR methods.
-"""
-#### OGR & SRS Exceptions ####
-class OGRException(Exception): pass
-class SRSException(Exception): pass
-class OGRIndexError(OGRException, KeyError):
-    """
-    This exception is raised when an invalid index is encountered, and has
-    the 'silent_variable_feature' attribute set to true.  This ensures that
-    django's templates proceed to use the next lookup type gracefully when
-    an Exception is raised.  Fixes ticket #4740.
-    """
-    silent_variable_failure = True
-
-#### OGR error checking codes and routine ####
-
-# OGR Error Codes
-OGRERR_DICT = { 1 : (OGRException, 'Not enough data.'),
-                2 : (OGRException, 'Not enough memory.'),
-                3 : (OGRException, 'Unsupported geometry type.'),
-                4 : (OGRException, 'Unsupported operation.'),
-                5 : (OGRException, 'Corrupt data.'),
-                6 : (OGRException, 'OGR failure.'),
-                7 : (SRSException, 'Unsupported SRS.'),
-                8 : (OGRException, 'Invalid handle.'),
-                }
-OGRERR_NONE = 0
-
-def check_err(code):
-    "Checks the given OGRERR, and raises an exception where appropriate."
-    
-    if code == OGRERR_NONE:
-        return
-    elif code in OGRERR_DICT:
-        e, msg = OGRERR_DICT[code]
-        raise e, msg
-    else:
-        raise OGRException('Unknown error code: "%s"' % code)
diff --git a/webapp/django/contrib/gis/gdal/feature.py b/webapp/django/contrib/gis/gdal/feature.py
deleted file mode 100644
index bc3857f..0000000
--- a/webapp/django/contrib/gis/gdal/feature.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# The GDAL C library, OGR exception, and the Field object
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError
-from django.contrib.gis.gdal.field import Field
-from django.contrib.gis.gdal.geometries import OGRGeometry, OGRGeomType
-from django.contrib.gis.gdal.srs import SpatialReference
-
-# ctypes function prototypes
-from django.contrib.gis.gdal.prototypes.ds import \
-    destroy_feature, feature_equal, get_fd_geom_type, get_feat_geom_ref, \
-    get_feat_name, get_feat_field_count, get_fid, get_field_defn, \
-    get_field_index, get_field_name
-from django.contrib.gis.gdal.prototypes.geom import clone_geom, get_geom_srs
-from django.contrib.gis.gdal.prototypes.srs import clone_srs
-
-# For more information, see the OGR C API source code:
-#  http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_F_* routines are relevant here.
-class Feature(object):
-    "A class that wraps an OGR Feature, needs to be instantiated from a Layer object."
-
-    #### Python 'magic' routines ####
-    def __init__(self, feat, fdefn):
-        "Initializes on the pointers for the feature and the layer definition."
-        self._ptr = None # Initially NULL
-        if not feat or not fdefn:
-            raise OGRException('Cannot create OGR Feature, invalid pointer given.')
-        self._ptr = feat
-        self._fdefn = fdefn
-
-    def __del__(self):
-        "Releases a reference to this object."
-        if self._ptr: destroy_feature(self._ptr)
-
-    def __getitem__(self, index):
-        """
-        Gets the Field object at the specified index, which may be either
-        an integer or the Field's string label.  Note that the Field object
-        is not the field's _value_ -- use the `get` method instead to 
-        retrieve the value (e.g. an integer) instead of a Field instance.
-        """
-        if isinstance(index, basestring):
-            i = self.index(index)
-        else:
-            if index < 0 or index > self.num_fields:
-                raise OGRIndexError('index out of range')
-            i = index
-        return Field(self._ptr, i)
-    
-    def __iter__(self):
-        "Iterates over each field in the Feature."
-        for i in xrange(self.num_fields):
-            yield self[i]
-
-    def __len__(self):
-        "Returns the count of fields in this feature."
-        return self.num_fields
-        
-    def __str__(self):
-        "The string name of the feature."
-        return 'Feature FID %d in Layer<%s>' % (self.fid, self.layer_name)
-
-    def __eq__(self, other):
-        "Does equivalence testing on the features."
-        return bool(feature_equal(self._ptr, other._ptr))
-
-    #### Feature Properties ####
-    @property
-    def fid(self):
-        "Returns the feature identifier."
-        return get_fid(self._ptr)
-        
-    @property
-    def layer_name(self):
-        "Returns the name of the layer for the feature."
-        return get_feat_name(self._fdefn)
-
-    @property
-    def num_fields(self):
-        "Returns the number of fields in the Feature."
-        return get_feat_field_count(self._ptr)
-
-    @property
-    def fields(self):
-        "Returns a list of fields in the Feature."
-        return [get_field_name(get_field_defn(self._fdefn, i)) 
-                for i in xrange(self.num_fields)]
-
-    @property
-    def geom(self):
-        "Returns the OGR Geometry for this Feature."
-        # Retrieving the geometry pointer for the feature.
-        geom_ptr = get_feat_geom_ref(self._ptr)
-        return OGRGeometry(clone_geom(geom_ptr))
-
-    @property
-    def geom_type(self):
-        "Returns the OGR Geometry Type for this Feture."
-        return OGRGeomType(get_fd_geom_type(self._fdefn))
-    
-    #### Feature Methods ####
-    def get(self, field):
-        """
-        Returns the value of the field, instead of an instance of the Field
-        object.  May take a string of the field name or a Field object as
-        parameters.
-        """
-        field_name = getattr(field, 'name', field)
-        return self[field_name].value
-
-    def index(self, field_name):
-        "Returns the index of the given field name."
-        i = get_field_index(self._ptr, field_name)
-        if i < 0: raise OGRIndexError('invalid OFT field name given: "%s"' % field_name)
-        return i
diff --git a/webapp/django/contrib/gis/gdal/field.py b/webapp/django/contrib/gis/gdal/field.py
deleted file mode 100644
index ad1feb3..0000000
--- a/webapp/django/contrib/gis/gdal/field.py
+++ /dev/null
@@ -1,179 +0,0 @@
-from ctypes import byref, c_int
-from datetime import date, datetime, time
-from django.contrib.gis.gdal.error import OGRException
-from django.contrib.gis.gdal.prototypes.ds import \
-    get_feat_field_defn, get_field_as_datetime, get_field_as_double, \
-    get_field_as_integer, get_field_as_string, get_field_name, get_field_precision, \
-    get_field_type, get_field_type_name, get_field_width
-
-# For more information, see the OGR C API source code:
-#  http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_Fld_* routines are relevant here.
-class Field(object):
-    "A class that wraps an OGR Field, needs to be instantiated from a Feature object."
-
-    #### Python 'magic' routines ####
-    def __init__(self, feat, index):
-        """
-        Initializes on the feature pointer and the integer index of
-        the field within the feature.
-        """
-        # Setting the feature pointer and index.
-        self._feat = feat
-        self._index = index
-        
-        # Getting the pointer for this field.
-        fld = get_feat_field_defn(feat, index)
-        if not fld:
-            raise OGRException('Cannot create OGR Field, invalid pointer given.')
-        self._ptr = fld
-
-        # Setting the class depending upon the OGR Field Type (OFT)
-        self.__class__ = FIELD_CLASSES[self.type]
-
-        # OFTReal with no precision should be an OFTInteger.
-        if isinstance(self, OFTReal) and self.precision == 0:
-            self.__class__ = OFTInteger
-
-    def __str__(self):
-        "Returns the string representation of the Field."
-        return str(self.value).strip()
-
-    #### Field Methods ####
-    def as_double(self):
-        "Retrieves the Field's value as a double (float)."
-        return get_field_as_double(self._feat, self._index)
-
-    def as_int(self):
-        "Retrieves the Field's value as an integer."
-        return get_field_as_integer(self._feat, self._index)
-
-    def as_string(self):
-        "Retrieves the Field's value as a string."
-        return get_field_as_string(self._feat, self._index)
-
-    def as_datetime(self):
-        "Retrieves the Field's value as a tuple of date & time components."
-        yy, mm, dd, hh, mn, ss, tz = [c_int() for i in range(7)]
-        status = get_field_as_datetime(self._feat, self._index, byref(yy), byref(mm), byref(dd),
-                                       byref(hh), byref(mn), byref(ss), byref(tz))
-        if status:
-            return (yy, mm, dd, hh, mn, ss, tz)
-        else:
-            raise OGRException('Unable to retrieve date & time information from the field.')
-
-    #### Field Properties ####
-    @property
-    def name(self):
-        "Returns the name of this Field."
-        return get_field_name(self._ptr)
-
-    @property
-    def precision(self):
-        "Returns the precision of this Field."
-        return get_field_precision(self._ptr)
-
-    @property
-    def type(self):
-        "Returns the OGR type of this Field."
-        return get_field_type(self._ptr)
-
-    @property
-    def type_name(self):
-        "Return the OGR field type name for this Field."
-        return get_field_type_name(self.type)
-
-    @property
-    def value(self):
-        "Returns the value of this Field."
-        # Default is to get the field as a string.
-        return self.as_string()
-
-    @property
-    def width(self):
-        "Returns the width of this Field."
-        return get_field_width(self._ptr)
-
-### The Field sub-classes for each OGR Field type. ###
-class OFTInteger(Field):
-    @property
-    def value(self):
-        "Returns an integer contained in this field."
-        return self.as_int()
-
-    @property
-    def type(self):
-        """
-        GDAL uses OFTReals to represent OFTIntegers in created
-        shapefiles -- forcing the type here since the underlying field
-        type may actually be OFTReal.
-        """
-        return 0
-
-class OFTReal(Field):
-    @property
-    def value(self):
-        "Returns a float contained in this field."
-        return self.as_double()
-
-# String & Binary fields, just subclasses
-class OFTString(Field): pass
-class OFTWideString(Field): pass
-class OFTBinary(Field): pass
-
-# OFTDate, OFTTime, OFTDateTime fields.
-class OFTDate(Field):
-    @property
-    def value(self):
-        "Returns a Python `date` object for the OFTDate field."
-        yy, mm, dd, hh, mn, ss, tz = self.as_datetime()
-        try:
-            return date(yy.value, mm.value, dd.value)
-        except ValueError:
-            return None
-
-class OFTDateTime(Field):
-    @property
-    def value(self):
-        "Returns a Python `datetime` object for this OFTDateTime field."
-        yy, mm, dd, hh, mn, ss, tz = self.as_datetime()
-        # TODO: Adapt timezone information.
-        #  See http://lists.maptools.org/pipermail/gdal-dev/2006-February/007990.html
-        #  The `tz` variable has values of: 0=unknown, 1=localtime (ambiguous), 
-        #  100=GMT, 104=GMT+1, 80=GMT-5, etc.
-        try:
-            return datetime(yy.value, mm.value, dd.value, hh.value, mn.value, ss.value)
-        except ValueError:
-            return None
-
-class OFTTime(Field):
-    @property
-    def value(self):
-        "Returns a Python `time` object for this OFTTime field."
-        yy, mm, dd, hh, mn, ss, tz = self.as_datetime()
-        try:
-            return time(hh.value, mn.value, ss.value)
-        except ValueError:
-            return None
-
-# List fields are also just subclasses
-class OFTIntegerList(Field): pass
-class OFTRealList(Field): pass
-class OFTStringList(Field): pass
-class OFTWideStringList(Field): pass
-
-# Class mapping dictionary for OFT Types
-FIELD_CLASSES = { 0 : OFTInteger,
-                  1 : OFTIntegerList,
-                  2 : OFTReal,
-                  3 : OFTRealList,
-                  4 : OFTString,
-                  5 : OFTStringList,
-                  6 : OFTWideString,
-                  7 : OFTWideStringList,
-                  8 : OFTBinary,
-                  9 : OFTDate,
-                 10 : OFTTime,
-                 11 : OFTDateTime,
-                  }
diff --git a/webapp/django/contrib/gis/gdal/geometries.py b/webapp/django/contrib/gis/gdal/geometries.py
deleted file mode 100644
index ee0ec17..0000000
--- a/webapp/django/contrib/gis/gdal/geometries.py
+++ /dev/null
@@ -1,643 +0,0 @@
-"""
- The OGRGeometry is a wrapper for using the OGR Geometry class
- (see http://www.gdal.org/ogr/classOGRGeometry.html).  OGRGeometry
- may be instantiated when reading geometries from OGR Data Sources
- (e.g. SHP files), or when given OGC WKT (a string).
-
- While the 'full' API is not present yet, the API is "pythonic" unlike
- the traditional and "next-generation" OGR Python bindings.  One major
- advantage OGR Geometries have over their GEOS counterparts is support
- for spatial reference systems and their transformation.
-
- Example:
-  >>> from django.contrib.gis.gdal import OGRGeometry, OGRGeomType, SpatialReference
-  >>> wkt1, wkt2 = 'POINT(-90 30)', 'POLYGON((0 0, 5 0, 5 5, 0 5)'
-  >>> pnt = OGRGeometry(wkt1)
-  >>> print pnt
-  POINT (-90 30)
-  >>> mpnt = OGRGeometry(OGRGeomType('MultiPoint'), SpatialReference('WGS84'))
-  >>> mpnt.add(wkt1)
-  >>> mpnt.add(wkt1)
-  >>> print mpnt
-  MULTIPOINT (-90 30,-90 30)
-  >>> print mpnt.srs.name
-  WGS 84
-  >>> print mpnt.srs.proj
-  +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
-  >>> mpnt.transform_to(SpatialReference('NAD27'))
-  >>> print mpnt.proj
-  +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs
-  >>> print mpnt
-  MULTIPOINT (-89.999930378602485 29.999797886557641,-89.999930378602485 29.999797886557641)
-  
-  The OGRGeomType class is to make it easy to specify an OGR geometry type:
-  >>> from django.contrib.gis.gdal import OGRGeomType
-  >>> gt1 = OGRGeomType(3) # Using an integer for the type
-  >>> gt2 = OGRGeomType('Polygon') # Using a string
-  >>> gt3 = OGRGeomType('POLYGON') # It's case-insensitive
-  >>> print gt1 == 3, gt1 == 'Polygon' # Equivalence works w/non-OGRGeomType objects
-  True
-"""
-# Python library requisites.
-import re, sys
-from binascii import a2b_hex
-from ctypes import byref, string_at, c_char_p, c_double, c_ubyte, c_void_p
-from types import UnicodeType
-
-# Getting GDAL prerequisites
-from django.contrib.gis.gdal.envelope import Envelope, OGREnvelope
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException
-from django.contrib.gis.gdal.geomtype import OGRGeomType
-from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform
-
-# Getting the ctypes prototype functions that interface w/the GDAL C library.
-from django.contrib.gis.gdal.prototypes.geom import *
-from django.contrib.gis.gdal.prototypes.srs import clone_srs
-
-# For more information, see the OGR C API source code:
-#  http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_G_* routines are relevant here.
-
-# Regular expressions for recognizing HEXEWKB and WKT.
-hex_regex = re.compile(r'^[0-9A-F]+$', re.I)
-wkt_regex = re.compile(r'^(?P<type>POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+$', re.I)
-json_regex = re.compile(r'^\{[\s\w,\-\.\"\'\:\[\]]+\}$')
-
-#### OGRGeometry Class ####
-class OGRGeometry(object):
-    "Generally encapsulates an OGR geometry."
-
-    def __init__(self, geom_input, srs=None):
-        "Initializes Geometry on either WKT or an OGR pointer as input."
-
-        self._ptr = c_void_p(None) # Initially NULL
-        str_instance = isinstance(geom_input, basestring)
-
-        # If HEX, unpack input to to a binary buffer.
-        if str_instance and hex_regex.match(geom_input):
-            geom_input = buffer(a2b_hex(geom_input.upper()))
-            str_instance = False
-
-        # Constructing the geometry, 
-        if str_instance:
-            # Checking if unicode
-            if isinstance(geom_input, UnicodeType):
-                # Encoding to ASCII, WKT or HEX doesn't need any more.
-                geo_input = geo_input.encode('ascii')
-
-            wkt_m = wkt_regex.match(geom_input)
-            json_m = json_regex.match(geom_input)
-            if wkt_m:
-                if wkt_m.group('type').upper() == 'LINEARRING':
-                    # OGR_G_CreateFromWkt doesn't work with LINEARRING WKT.
-                    #  See http://trac.osgeo.org/gdal/ticket/1992.
-                    g = create_geom(OGRGeomType(wkt_m.group('type')).num)
-                    import_wkt(g, byref(c_char_p(geom_input)))
-                else:
-                    g = from_wkt(byref(c_char_p(geom_input)), None, byref(c_void_p()))
-            elif json_m:
-                if GEOJSON:
-                    g = from_json(geom_input)
-                else:
-                    raise NotImplementedError('GeoJSON input only supported on GDAL 1.5+.')
-            else:
-                # Seeing if the input is a valid short-hand string
-                # (e.g., 'Point', 'POLYGON').
-                ogr_t = OGRGeomType(geom_input)
-                g = create_geom(OGRGeomType(geom_input).num)
-        elif isinstance(geom_input, buffer):
-            # WKB was passed in
-            g = from_wkb(str(geom_input), None, byref(c_void_p()), len(geom_input))
-        elif isinstance(geom_input, OGRGeomType):
-            # OGRGeomType was passed in, an empty geometry will be created.
-            g = create_geom(geom_input.num)
-        elif isinstance(geom_input, c_void_p):
-            # OGR pointer (c_void_p) was the input.
-            g = geom_input
-        else:
-            raise OGRException('Invalid input type for OGR Geometry construction: %s' % type(geom_input))
-
-        # Now checking the Geometry pointer before finishing initialization
-        # by setting the pointer for the object.
-        if not g:
-            raise OGRException('Cannot create OGR Geometry from input: %s' % str(geom_input))
-        self._ptr = g
-
-        # Assigning the SpatialReference object to the geometry, if valid.
-        if bool(srs): self.srs = srs
-
-        # Setting the class depending upon the OGR Geometry Type
-        self.__class__ = GEO_CLASSES[self.geom_type.num]
-
-    def __del__(self):
-        "Deletes this Geometry."
-        if self._ptr: destroy_geom(self._ptr)
-
-    ### Geometry set-like operations ###
-    # g = g1 | g2
-    def __or__(self, other):
-        "Returns the union of the two geometries."
-        return self.union(other)
-
-    # g = g1 & g2
-    def __and__(self, other):
-        "Returns the intersection of this Geometry and the other."
-        return self.intersection(other)
-
-    # g = g1 - g2
-    def __sub__(self, other):
-        "Return the difference this Geometry and the other."
-        return self.difference(other)
-
-    # g = g1 ^ g2
-    def __xor__(self, other):
-        "Return the symmetric difference of this Geometry and the other."
-        return self.sym_difference(other)
-
-    def __eq__(self, other):
-        "Is this Geometry equal to the other?"
-        return self.equals(other)
-
-    def __ne__(self, other):
-        "Tests for inequality."
-        return not self.equals(other)
-
-    def __str__(self):
-        "WKT is used for the string representation."
-        return self.wkt
-
-    #### Geometry Properties ####
-    @property
-    def dimension(self):
-        "Returns 0 for points, 1 for lines, and 2 for surfaces."
-        return get_dims(self._ptr)
-
-    @property
-    def coord_dim(self):
-        "Returns the coordinate dimension of the Geometry."
-        return get_coord_dims(self._ptr)
-
-    @property
-    def geom_count(self):
-        "The number of elements in this Geometry."
-        return get_geom_count(self._ptr)
-
-    @property
-    def point_count(self):
-        "Returns the number of Points in this Geometry."
-        return get_point_count(self._ptr)
-
-    @property
-    def num_points(self):
-        "Alias for `point_count` (same name method in GEOS API.)"
-        return self.point_count
-
-    @property
-    def num_coords(self):
-        "Alais for `point_count`."
-        return self.point_count
-
-    @property
-    def geom_type(self):
-        "Returns the Type for this Geometry."
-        try:
-            return OGRGeomType(get_geom_type(self._ptr))
-        except OGRException:
-            # VRT datasources return an invalid geometry type
-            # number, but a valid name -- we'll try that instead.
-            # See: http://trac.osgeo.org/gdal/ticket/2491
-            return OGRGeomType(get_geom_name(self._ptr))
-
-    @property
-    def geom_name(self):
-        "Returns the Name of this Geometry."
-        return get_geom_name(self._ptr)
-
-    @property
-    def area(self):
-        "Returns the area for a LinearRing, Polygon, or MultiPolygon; 0 otherwise."
-        return get_area(self._ptr)
-
-    @property
-    def envelope(self):
-        "Returns the envelope for this Geometry."
-        # TODO: Fix Envelope() for Point geometries.
-        return Envelope(get_envelope(self._ptr, byref(OGREnvelope())))
-
-    @property
-    def extent(self):
-        "Returns the envelope as a 4-tuple, instead of as an Envelope object."
-        return self.envelope.tuple
-
-    #### SpatialReference-related Properties ####
-    
-    # The SRS property
-    def get_srs(self):
-        "Returns the Spatial Reference for this Geometry."
-        try:
-            srs_ptr = get_geom_srs(self._ptr)
-            return SpatialReference(clone_srs(srs_ptr))
-        except SRSException:
-            return None
-
-    def set_srs(self, srs):
-        "Sets the SpatialReference for this geometry."
-        if isinstance(srs, SpatialReference):
-            srs_ptr = clone_srs(srs._ptr)
-        elif isinstance(srs, (int, long, basestring)):
-            sr = SpatialReference(srs)
-            srs_ptr = clone_srs(sr._ptr)
-        else:
-            raise TypeError('Cannot assign spatial reference with object of type: %s' % type(srs))
-        assign_srs(self._ptr, srs_ptr)
-
-    srs = property(get_srs, set_srs)
-
-    # The SRID property
-    def get_srid(self):
-        if self.srs: return self.srs.srid
-        else: return None
-
-    def set_srid(self, srid):
-        if isinstance(srid, (int, long)):
-            self.srs = srid
-        else:
-            raise TypeError('SRID must be set with an integer.')
-
-    srid = property(get_srid, set_srid)
-
-    #### Output Methods ####
-    @property
-    def geos(self):
-        "Returns a GEOSGeometry object from this OGRGeometry."
-        from django.contrib.gis.geos import GEOSGeometry
-        return GEOSGeometry(self.wkb, self.srid)
-
-    @property
-    def gml(self):
-        "Returns the GML representation of the Geometry."
-        return to_gml(self._ptr)
-
-    @property
-    def hex(self):
-        "Returns the hexadecimal representation of the WKB (a string)."
-        return str(self.wkb).encode('hex').upper()
-        #return b2a_hex(self.wkb).upper()
-
-    @property
-    def json(self):
-        if GEOJSON: 
-            return to_json(self._ptr)
-        else:
-            raise NotImplementedError('GeoJSON output only supported on GDAL 1.5+.')
-    geojson = json
-
-    @property
-    def wkb_size(self):
-        "Returns the size of the WKB buffer."
-        return get_wkbsize(self._ptr)
-
-    @property
-    def wkb(self):
-        "Returns the WKB representation of the Geometry."
-        if sys.byteorder == 'little':
-            byteorder = 1 # wkbNDR (from ogr_core.h)
-        else:
-            byteorder = 0 # wkbXDR
-        sz = self.wkb_size
-        # Creating the unsigned character buffer, and passing it in by reference.
-        buf = (c_ubyte * sz)()
-        wkb = to_wkb(self._ptr, byteorder, byref(buf))
-        # Returning a buffer of the string at the pointer.
-        return buffer(string_at(buf, sz))
-
-    @property
-    def wkt(self):
-        "Returns the WKT representation of the Geometry."
-        return to_wkt(self._ptr, byref(c_char_p()))
-    
-    #### Geometry Methods ####
-    def clone(self):
-        "Clones this OGR Geometry."
-        return OGRGeometry(clone_geom(self._ptr), self.srs)
-
-    def close_rings(self):
-        """
-        If there are any rings within this geometry that have not been
-        closed, this routine will do so by adding the starting point at the
-        end.
-        """
-        # Closing the open rings.
-        geom_close_rings(self._ptr)
-
-    def transform(self, coord_trans, clone=False):
-        """
-        Transforms this geometry to a different spatial reference system.
-        May take a CoordTransform object, a SpatialReference object, string
-        WKT or PROJ.4, and/or an integer SRID.  By default nothing is returned
-        and the geometry is transformed in-place.  However, if the `clone`
-        keyword is set, then a transformed clone of this geometry will be
-        returned.
-        """
-        if clone:
-            klone = self.clone()
-            klone.transform(coord_trans)
-            return klone
-        if isinstance(coord_trans, CoordTransform):
-            geom_transform(self._ptr, coord_trans._ptr)
-        elif isinstance(coord_trans, SpatialReference):
-            geom_transform_to(self._ptr, coord_trans._ptr)
-        elif isinstance(coord_trans, (int, long, basestring)):
-            sr = SpatialReference(coord_trans)
-            geom_transform_to(self._ptr, sr._ptr)
-        else:
-            raise TypeError('Transform only accepts CoordTransform, SpatialReference, string, and integer objects.')
-
-    def transform_to(self, srs):
-        "For backwards-compatibility."
-        self.transform(srs)
-
-    #### Topology Methods ####
-    def _topology(self, func, other):
-        """A generalized function for topology operations, takes a GDAL function and
-        the other geometry to perform the operation on."""
-        if not isinstance(other, OGRGeometry):
-            raise TypeError('Must use another OGRGeometry object for topology operations!')
-
-        # Returning the output of the given function with the other geometry's
-        # pointer.
-        return func(self._ptr, other._ptr)
-
-    def intersects(self, other):
-        "Returns True if this geometry intersects with the other."
-        return self._topology(ogr_intersects, other)
-    
-    def equals(self, other):
-        "Returns True if this geometry is equivalent to the other."
-        return self._topology(ogr_equals, other)
-
-    def disjoint(self, other):
-        "Returns True if this geometry and the other are spatially disjoint."
-        return self._topology(ogr_disjoint, other)
-
-    def touches(self, other):
-        "Returns True if this geometry touches the other."
-        return self._topology(ogr_touches, other)
-
-    def crosses(self, other):
-        "Returns True if this geometry crosses the other."
-        return self._topology(ogr_crosses, other)
-
-    def within(self, other):
-        "Returns True if this geometry is within the other."
-        return self._topology(ogr_within, other)
-
-    def contains(self, other):
-        "Returns True if this geometry contains the other."
-        return self._topology(ogr_contains, other)
-
-    def overlaps(self, other):
-        "Returns True if this geometry overlaps the other."
-        return self._topology(ogr_overlaps, other)
-
-    #### Geometry-generation Methods ####
-    def _geomgen(self, gen_func, other=None):
-        "A helper routine for the OGR routines that generate geometries."
-        if isinstance(other, OGRGeometry):
-            return OGRGeometry(gen_func(self._ptr, other._ptr), self.srs)
-        else:
-            return OGRGeometry(gen_func(self._ptr), self.srs)
-
-    @property
-    def boundary(self):
-        "Returns the boundary of this geometry."
-        return self._geomgen(get_boundary)
-
-    @property
-    def convex_hull(self):
-        """
-        Returns the smallest convex Polygon that contains all the points in 
-        this Geometry.
-        """
-        return self._geomgen(geom_convex_hull)
-
-    def difference(self, other):
-        """
-        Returns a new geometry consisting of the region which is the difference
-        of this geometry and the other.
-        """
-        return self._geomgen(geom_diff, other)
-
-    def intersection(self, other):
-        """
-        Returns a new geometry consisting of the region of intersection of this
-        geometry and the other.
-        """
-        return self._geomgen(geom_intersection, other)
-
-    def sym_difference(self, other):
-        """                                                                                                                                                
-        Returns a new geometry which is the symmetric difference of this
-        geometry and the other.
-        """
-        return self._geomgen(geom_sym_diff, other)
-
-    def union(self, other):
-        """
-        Returns a new geometry consisting of the region which is the union of
-        this geometry and the other.
-        """
-        return self._geomgen(geom_union, other)
-
-# The subclasses for OGR Geometry.
-class Point(OGRGeometry):
-
-    @property
-    def x(self):
-        "Returns the X coordinate for this Point."
-        return getx(self._ptr, 0)
-
-    @property
-    def y(self):
-        "Returns the Y coordinate for this Point."
-        return gety(self._ptr, 0)
-
-    @property
-    def z(self):
-        "Returns the Z coordinate for this Point."
-        if self.coord_dim == 3:
-            return getz(self._ptr, 0)
-
-    @property
-    def tuple(self):
-        "Returns the tuple of this point."
-        if self.coord_dim == 2:
-            return (self.x, self.y)
-        elif self.coord_dim == 3:
-            return (self.x, self.y, self.z)
-    coords = tuple
-
-class LineString(OGRGeometry):
-
-    def __getitem__(self, index):
-        "Returns the Point at the given index."
-        if index >= 0 and index < self.point_count:
-            x, y, z = c_double(), c_double(), c_double()
-            get_point(self._ptr, index, byref(x), byref(y), byref(z))
-            dim = self.coord_dim
-            if dim == 1:
-                return (x.value,)
-            elif dim == 2:
-                return (x.value, y.value)
-            elif dim == 3:
-                return (x.value, y.value, z.value)
-        else:
-            raise OGRIndexError('index out of range: %s' % str(index))
-
-    def __iter__(self):
-        "Iterates over each point in the LineString."
-        for i in xrange(self.point_count):
-            yield self[i]
-
-    def __len__(self):
-        "The length returns the number of points in the LineString."
-        return self.point_count
-
-    @property
-    def tuple(self):
-        "Returns the tuple representation of this LineString."
-        return tuple([self[i] for i in xrange(len(self))])
-    coords = tuple
-
-    def _listarr(self, func):
-        """
-        Internal routine that returns a sequence (list) corresponding with
-        the given function.
-        """
-        return [func(self._ptr, i) for i in xrange(len(self))]
-
-    @property
-    def x(self):
-        "Returns the X coordinates in a list."
-        return self._listarr(getx)
-
-    @property
-    def y(self):
-        "Returns the Y coordinates in a list."
-        return self._listarr(gety)
-    
-    @property
-    def z(self):
-        "Returns the Z coordinates in a list."
-        if self.coord_dim == 3:
-            return self._listarr(getz)
-
-# LinearRings are used in Polygons.
-class LinearRing(LineString): pass
-
-class Polygon(OGRGeometry):
-
-    def __len__(self):
-        "The number of interior rings in this Polygon."
-        return self.geom_count
-
-    def __iter__(self):
-        "Iterates through each ring in the Polygon."
-        for i in xrange(self.geom_count):
-            yield self[i]
-
-    def __getitem__(self, index):
-        "Gets the ring at the specified index."
-        if index < 0 or index >= self.geom_count:
-            raise OGRIndexError('index out of range: %s' % index)
-        else:
-            return OGRGeometry(clone_geom(get_geom_ref(self._ptr, index)), self.srs)
-
-    # Polygon Properties
-    @property
-    def shell(self):
-        "Returns the shell of this Polygon."
-        return self[0] # First ring is the shell
-    exterior_ring = shell
-
-    @property
-    def tuple(self):
-        "Returns a tuple of LinearRing coordinate tuples."
-        return tuple([self[i].tuple for i in xrange(self.geom_count)])
-    coords = tuple
-
-    @property
-    def point_count(self):
-        "The number of Points in this Polygon."
-        # Summing up the number of points in each ring of the Polygon.
-        return sum([self[i].point_count for i in xrange(self.geom_count)])
-
-    @property
-    def centroid(self):
-        "Returns the centroid (a Point) of this Polygon."
-        # The centroid is a Point, create a geometry for this.
-        p = OGRGeometry(OGRGeomType('Point'))
-        get_centroid(self._ptr, p._ptr)
-        return p
-
-# Geometry Collection base class.
-class GeometryCollection(OGRGeometry):
-    "The Geometry Collection class."
-
-    def __getitem__(self, index):
-        "Gets the Geometry at the specified index."
-        if index < 0 or index >= self.geom_count:
-            raise OGRIndexError('index out of range: %s' % index)
-        else:
-            return OGRGeometry(clone_geom(get_geom_ref(self._ptr, index)), self.srs)
-        
-    def __iter__(self):
-        "Iterates over each Geometry."
-        for i in xrange(self.geom_count):
-            yield self[i]
-
-    def __len__(self):
-        "The number of geometries in this Geometry Collection."
-        return self.geom_count
-
-    def add(self, geom):
-        "Add the geometry to this Geometry Collection."
-        if isinstance(geom, OGRGeometry):
-            if isinstance(geom, self.__class__):
-                for g in geom: add_geom(self._ptr, g._ptr)
-            else:
-                add_geom(self._ptr, geom._ptr)
-        elif isinstance(geom, basestring):
-            tmp = OGRGeometry(geom)
-            add_geom(self._ptr, tmp._ptr)
-        else:
-            raise OGRException('Must add an OGRGeometry.')
-
-    @property
-    def point_count(self):
-        "The number of Points in this Geometry Collection."
-        # Summing up the number of points in each geometry in this collection
-        return sum([self[i].point_count for i in xrange(self.geom_count)])
-
-    @property
-    def tuple(self):
-        "Returns a tuple representation of this Geometry Collection."
-        return tuple([self[i].tuple for i in xrange(self.geom_count)])
-    coords = tuple
-
-# Multiple Geometry types.
-class MultiPoint(GeometryCollection): pass
-class MultiLineString(GeometryCollection): pass
-class MultiPolygon(GeometryCollection): pass
-
-# Class mapping dictionary (using the OGRwkbGeometryType as the key)
-GEO_CLASSES = {1 : Point,
-               2 : LineString,
-               3 : Polygon,
-               4 : MultiPoint,
-               5 : MultiLineString,
-               6 : MultiPolygon,
-               7 : GeometryCollection,
-               101: LinearRing, 
-               }
diff --git a/webapp/django/contrib/gis/gdal/geomtype.py b/webapp/django/contrib/gis/gdal/geomtype.py
deleted file mode 100644
index 565326f..0000000
--- a/webapp/django/contrib/gis/gdal/geomtype.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from django.contrib.gis.gdal.error import OGRException
-
-#### OGRGeomType ####
-class OGRGeomType(object):
-    "Encapulates OGR Geometry Types."
-
-    # Dictionary of acceptable OGRwkbGeometryType s and their string names.
-    _types = {0 : 'Unknown',
-              1 : 'Point',
-              2 : 'LineString',
-              3 : 'Polygon',
-              4 : 'MultiPoint',
-              5 : 'MultiLineString',
-              6 : 'MultiPolygon',
-              7 : 'GeometryCollection',
-              100 : 'None',
-              101 : 'LinearRing',
-              }
-    # Reverse type dictionary, keyed by lower-case of the name.
-    _str_types = dict([(v.lower(), k) for k, v in _types.items()])
-
-    def __init__(self, type_input):
-        "Figures out the correct OGR Type based upon the input."
-        if isinstance(type_input, OGRGeomType):
-            num = type_input.num
-        elif isinstance(type_input, basestring):
-            num = self._str_types.get(type_input.lower(), None)
-            if num is None:
-                raise OGRException('Invalid OGR String Type "%s"' % type_input)
-        elif isinstance(type_input, int):
-            if not type_input in self._types:
-                raise OGRException('Invalid OGR Integer Type: %d' % type_input)
-            num = type_input
-        else:
-            raise TypeError('Invalid OGR input type given.')
-        
-        # Setting the OGR geometry type number.
-        self.num = num
-
-    def __str__(self):
-        "Returns the value of the name property."
-        return self.name
-
-    def __eq__(self, other):
-        """
-        Does an equivalence test on the OGR type with the given
-        other OGRGeomType, the short-hand string, or the integer.
-        """
-        if isinstance(other, OGRGeomType):
-            return self.num == other.num
-        elif isinstance(other, basestring):
-            return self.name.lower() == other.lower()
-        elif isinstance(other, int):
-            return self.num == other
-        else:
-            return False
-
-    def __ne__(self, other):
-        return not (self == other)
-
-    @property
-    def name(self):
-        "Returns a short-hand string form of the OGR Geometry type."
-        return self._types[self.num]
-
-    @property
-    def django(self):
-        "Returns the Django GeometryField for this OGR Type."
-        s = self.name
-        if s in ('Unknown', 'LinearRing', 'None'):
-            return None
-        else:
-            return s + 'Field'
diff --git a/webapp/django/contrib/gis/gdal/layer.py b/webapp/django/contrib/gis/gdal/layer.py
deleted file mode 100644
index d60e2cb..0000000
--- a/webapp/django/contrib/gis/gdal/layer.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# Needed ctypes routines
-from ctypes import byref
-
-# Other GDAL imports.
-from django.contrib.gis.gdal.envelope import Envelope, OGREnvelope
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException
-from django.contrib.gis.gdal.feature import Feature
-from django.contrib.gis.gdal.field import FIELD_CLASSES
-from django.contrib.gis.gdal.geometries import OGRGeomType
-from django.contrib.gis.gdal.srs import SpatialReference
-
-# GDAL ctypes function prototypes.
-from django.contrib.gis.gdal.prototypes.ds import \
-    get_extent, get_fd_geom_type, get_fd_name, get_feature, get_feature_count, \
-    get_field_count, get_field_defn, get_field_name, get_field_precision, \
-    get_field_width, get_field_type, get_layer_defn, get_layer_srs, \
-    get_next_feature, reset_reading, test_capability
-from django.contrib.gis.gdal.prototypes.srs import clone_srs
-
-# For more information, see the OGR C API source code:
-#  http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_L_* routines are relevant here.
-class Layer(object):
-    "A class that wraps an OGR Layer, needs to be instantiated from a DataSource object."
-
-    #### Python 'magic' routines ####
-    def __init__(self, layer_ptr):
-        "Needs a C pointer (Python/ctypes integer) in order to initialize."
-        self._ptr = None # Initially NULL
-        if not layer_ptr:
-            raise OGRException('Cannot create Layer, invalid pointer given')
-        self._ptr = layer_ptr
-        self._ldefn = get_layer_defn(self._ptr)
-        # Does the Layer support random reading?
-        self._random_read = self.test_capability('RandomRead')
-
-    def __getitem__(self, index):
-        "Gets the Feature at the specified index."
-        if isinstance(index, (int, long)):
-            # An integer index was given -- we cannot do a check based on the
-            # number of features because the beginning and ending feature IDs
-            # are not guaranteed to be 0 and len(layer)-1, respectively.
-            if index < 0: raise OGRIndexError('Negative indices are not allowed on OGR Layers.')
-            return self._make_feature(index)
-        elif isinstance(index, slice):
-            # A slice was given
-            start, stop, stride = index.indices(self.num_feat)
-            return [self._make_feature(fid) for fid in xrange(start, stop, stride)]
-        else:
-            raise TypeError('Integers and slices may only be used when indexing OGR Layers.')
-
-    def __iter__(self):
-        "Iterates over each Feature in the Layer."
-        # ResetReading() must be called before iteration is to begin.
-        reset_reading(self._ptr)
-        for i in xrange(self.num_feat):
-            yield Feature(get_next_feature(self._ptr), self._ldefn)
-
-    def __len__(self):
-        "The length is the number of features."
-        return self.num_feat
-
-    def __str__(self):
-        "The string name of the layer."
-        return self.name
-
-    def _make_feature(self, feat_id):
-        """
-        Helper routine for __getitem__ that constructs a Feature from the given
-        Feature ID.  If the OGR Layer does not support random-access reading,
-        then each feature of the layer will be incremented through until the
-        a Feature is found matching the given feature ID.
-        """
-        if self._random_read:
-            # If the Layer supports random reading, return.
-            try:
-                return Feature(get_feature(self._ptr, feat_id), self._ldefn)
-            except OGRException:
-                pass
-        else:
-            # Random access isn't supported, have to increment through
-            # each feature until the given feature ID is encountered.
-            for feat in self:
-                if feat.fid == feat_id: return feat
-        # Should have returned a Feature, raise an OGRIndexError.    
-        raise OGRIndexError('Invalid feature id: %s.' % feat_id)
-
-    #### Layer properties ####
-    @property
-    def extent(self):
-        "Returns the extent (an Envelope) of this layer."
-        env = OGREnvelope()
-        get_extent(self._ptr, byref(env), 1)
-        return Envelope(env)
-
-    @property
-    def name(self):
-        "Returns the name of this layer in the Data Source."
-        return get_fd_name(self._ldefn)
-
-    @property
-    def num_feat(self, force=1):
-        "Returns the number of features in the Layer."
-        return get_feature_count(self._ptr, force)
-
-    @property
-    def num_fields(self):
-        "Returns the number of fields in the Layer."
-        return get_field_count(self._ldefn)
-
-    @property
-    def geom_type(self):
-        "Returns the geometry type (OGRGeomType) of the Layer."
-        return OGRGeomType(get_fd_geom_type(self._ldefn))
-
-    @property
-    def srs(self):
-        "Returns the Spatial Reference used in this Layer."
-        try:
-            ptr = get_layer_srs(self._ptr)
-            return SpatialReference(clone_srs(ptr))
-        except SRSException:
-            return None
-
-    @property
-    def fields(self):
-        """
-        Returns a list of string names corresponding to each of the Fields
-        available in this Layer.
-        """
-        return [get_field_name(get_field_defn(self._ldefn, i)) 
-                for i in xrange(self.num_fields) ]
-    
-    @property
-    def field_types(self):
-        """
-        Returns a list of the types of fields in this Layer.  For example,
-        the list [OFTInteger, OFTReal, OFTString] would be returned for
-        an OGR layer that had an integer, a floating-point, and string
-        fields.
-        """
-        return [FIELD_CLASSES[get_field_type(get_field_defn(self._ldefn, i))]
-                for i in xrange(self.num_fields)]
-
-    @property 
-    def field_widths(self):
-        "Returns a list of the maximum field widths for the features."
-        return [get_field_width(get_field_defn(self._ldefn, i))
-                for i in xrange(self.num_fields)]
-
-    @property 
-    def field_precisions(self):
-        "Returns the field precisions for the features."
-        return [get_field_precision(get_field_defn(self._ldefn, i))
-                for i in xrange(self.num_fields)]
-
-    #### Layer Methods ####
-    def get_fields(self, field_name):
-        """
-        Returns a list containing the given field name for every Feature
-        in the Layer.
-        """
-        if not field_name in self.fields:
-            raise OGRException('invalid field name: %s' % field_name)
-        return [feat.get(field_name) for feat in self]
-
-    def get_geoms(self, geos=False):
-        """
-        Returns a list containing the OGRGeometry for every Feature in
-        the Layer.
-        """
-        if geos:
-            from django.contrib.gis.geos import GEOSGeometry
-            return [GEOSGeometry(feat.geom.wkb) for feat in self]
-        else:
-            return [feat.geom for feat in self]
-
-    def test_capability(self, capability):
-        """
-        Returns a bool indicating whether the this Layer supports the given
-        capability (a string).  Valid capability strings include:
-          'RandomRead', 'SequentialWrite', 'RandomWrite', 'FastSpatialFilter',
-          'FastFeatureCount', 'FastGetExtent', 'CreateField', 'Transactions',
-          'DeleteFeature', and 'FastSetNextByIndex'.
-        """
-        return bool(test_capability(self._ptr, capability))
diff --git a/webapp/django/contrib/gis/gdal/libgdal.py b/webapp/django/contrib/gis/gdal/libgdal.py
deleted file mode 100644
index bf8933d..0000000
--- a/webapp/django/contrib/gis/gdal/libgdal.py
+++ /dev/null
@@ -1,83 +0,0 @@
-import os, sys
-from ctypes import c_char_p, CDLL
-from ctypes.util import find_library
-from django.contrib.gis.gdal.error import OGRException
-
-# Custom library path set?
-try:
-    from django.conf import settings
-    lib_path = settings.GDAL_LIBRARY_PATH
-except (AttributeError, EnvironmentError, ImportError):
-    lib_path = None
-
-if lib_path:
-    lib_names = None
-elif os.name == 'nt':
-    # Windows NT shared library
-    lib_names = ['gdal15']
-elif os.name == 'posix':
-    # *NIX library names.
-    lib_names = ['gdal', 'gdal1.5.0']
-else:
-    raise OGRException('Unsupported OS "%s"' % os.name)
-
-# Using the ctypes `find_library` utility  to find the 
-# path to the GDAL library from the list of library names.
-if lib_names:
-    for lib_name in lib_names:
-        lib_path = find_library(lib_name)
-        if not lib_path is None: break
-        
-if lib_path is None:
-    raise OGRException('Could not find the GDAL library (tried "%s"). '
-                       'Try setting GDAL_LIBRARY_PATH in your settings.' % 
-                       '", "'.join(lib_names))
-
-# This loads the GDAL/OGR C library
-lgdal = CDLL(lib_path)
-
-# On Windows, the GDAL binaries have some OSR routines exported with 
-# STDCALL, while others are not.  Thus, the library will also need to 
-# be loaded up as WinDLL for said OSR functions that require the 
-# different calling convention.
-if os.name == 'nt':
-    from ctypes import WinDLL
-    lwingdal = WinDLL(lib_name)
-
-def std_call(func):
-    """
-    Returns the correct STDCALL function for certain OSR routines on Win32
-    platforms.
-    """
-    if os.name == 'nt':
-        return lwingdal[func]
-    else:
-        return lgdal[func]
-
-#### Version-information functions. ####
-
-# Returns GDAL library version information with the given key.
-_version_info = std_call('GDALVersionInfo')
-_version_info.argtypes = [c_char_p]
-_version_info.restype = c_char_p
-
-def gdal_version():
-    "Returns only the GDAL version number information."
-    return _version_info('RELEASE_NAME')
-
-def gdal_full_version(): 
-    "Returns the full GDAL version information."
-    return _version_info('')
-
-def gdal_release_date(date=False): 
-    """
-    Returns the release date in a string format, e.g, "2007/06/27".
-    If the date keyword argument is set to True, a Python datetime object
-    will be returned instead.
-    """
-    from datetime import date as date_type
-    rel = _version_info('RELEASE_DATE')
-    yy, mm, dd = map(int, (rel[0:4], rel[4:6], rel[6:8]))
-    d = date_type(yy, mm, dd)
-    if date: return d
-    else: return d.strftime('%Y/%m/%d')
diff --git a/webapp/django/contrib/gis/gdal/prototypes/__init__.py b/webapp/django/contrib/gis/gdal/prototypes/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/gdal/prototypes/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/gdal/prototypes/ds.py b/webapp/django/contrib/gis/gdal/prototypes/ds.py
deleted file mode 100644
index b64183e..0000000
--- a/webapp/django/contrib/gis/gdal/prototypes/ds.py
+++ /dev/null
@@ -1,68 +0,0 @@
-"""
- This module houses the ctypes function prototypes for OGR DataSource
- related data structures. OGR_Dr_*, OGR_DS_*, OGR_L_*, OGR_F_*, 
- OGR_Fld_* routines are relevant here.
-"""
-from ctypes import c_char_p, c_int, c_long, c_void_p, POINTER
-from django.contrib.gis.gdal.envelope import OGREnvelope
-from django.contrib.gis.gdal.libgdal import lgdal
-from django.contrib.gis.gdal.prototypes.generation import \
-    const_string_output, double_output, geom_output, int_output, \
-    srs_output, void_output, voidptr_output
-
-c_int_p = POINTER(c_int) # shortcut type
-
-### Driver Routines ###
-register_all = void_output(lgdal.OGRRegisterAll, [], errcheck=False)
-cleanup_all = void_output(lgdal.OGRCleanupAll, [], errcheck=False)
-get_driver = voidptr_output(lgdal.OGRGetDriver, [c_int])
-get_driver_by_name = voidptr_output(lgdal.OGRGetDriverByName, [c_char_p])
-get_driver_count = int_output(lgdal.OGRGetDriverCount, [])
-get_driver_name = const_string_output(lgdal.OGR_Dr_GetName, [c_void_p])
-
-### DataSource ###
-open_ds = voidptr_output(lgdal.OGROpen, [c_char_p, c_int, POINTER(c_void_p)])
-destroy_ds = void_output(lgdal.OGR_DS_Destroy, [c_void_p], errcheck=False)
-release_ds = void_output(lgdal.OGRReleaseDataSource, [c_void_p])
-get_ds_name = const_string_output(lgdal.OGR_DS_GetName, [c_void_p])
-get_layer = voidptr_output(lgdal.OGR_DS_GetLayer, [c_void_p, c_int])
-get_layer_by_name = voidptr_output(lgdal.OGR_DS_GetLayerByName, [c_void_p, c_char_p])
-get_layer_count = int_output(lgdal.OGR_DS_GetLayerCount, [c_void_p])
-
-### Layer Routines ###
-get_extent = void_output(lgdal.OGR_L_GetExtent, [c_void_p, POINTER(OGREnvelope), c_int])
-get_feature = voidptr_output(lgdal.OGR_L_GetFeature, [c_void_p, c_long])
-get_feature_count = int_output(lgdal.OGR_L_GetFeatureCount, [c_void_p, c_int])
-get_layer_defn = voidptr_output(lgdal.OGR_L_GetLayerDefn, [c_void_p])
-get_layer_srs = srs_output(lgdal.OGR_L_GetSpatialRef, [c_void_p])
-get_next_feature = voidptr_output(lgdal.OGR_L_GetNextFeature, [c_void_p])
-reset_reading = void_output(lgdal.OGR_L_ResetReading, [c_void_p], errcheck=False)
-test_capability = int_output(lgdal.OGR_L_TestCapability, [c_void_p, c_char_p])
-
-### Feature Definition Routines ###
-get_fd_geom_type = int_output(lgdal.OGR_FD_GetGeomType, [c_void_p])
-get_fd_name = const_string_output(lgdal.OGR_FD_GetName, [c_void_p])
-get_feat_name = const_string_output(lgdal.OGR_FD_GetName, [c_void_p])
-get_field_count = int_output(lgdal.OGR_FD_GetFieldCount, [c_void_p])
-get_field_defn = voidptr_output(lgdal.OGR_FD_GetFieldDefn, [c_void_p, c_int])
-
-### Feature Routines ###
-clone_feature = voidptr_output(lgdal.OGR_F_Clone, [c_void_p])
-destroy_feature = void_output(lgdal.OGR_F_Destroy, [c_void_p], errcheck=False)
-feature_equal = int_output(lgdal.OGR_F_Equal, [c_void_p, c_void_p])
-get_feat_geom_ref = geom_output(lgdal.OGR_F_GetGeometryRef, [c_void_p])
-get_feat_field_count = int_output(lgdal.OGR_F_GetFieldCount, [c_void_p])
-get_feat_field_defn = voidptr_output(lgdal.OGR_F_GetFieldDefnRef, [c_void_p, c_int])
-get_fid = int_output(lgdal.OGR_F_GetFID, [c_void_p])
-get_field_as_datetime = int_output(lgdal.OGR_F_GetFieldAsDateTime, [c_void_p, c_int, c_int_p, c_int_p, c_int_p, c_int_p, c_int_p, c_int_p])
-get_field_as_double = double_output(lgdal.OGR_F_GetFieldAsDouble, [c_void_p, c_int])
-get_field_as_integer = int_output(lgdal.OGR_F_GetFieldAsInteger, [c_void_p, c_int])
-get_field_as_string = const_string_output(lgdal.OGR_F_GetFieldAsString, [c_void_p, c_int])
-get_field_index = int_output(lgdal.OGR_F_GetFieldIndex, [c_void_p, c_char_p])
-
-### Field Routines ###
-get_field_name = const_string_output(lgdal.OGR_Fld_GetNameRef, [c_void_p])
-get_field_precision = int_output(lgdal.OGR_Fld_GetPrecision, [c_void_p])
-get_field_type = int_output(lgdal.OGR_Fld_GetType, [c_void_p])
-get_field_type_name = const_string_output(lgdal.OGR_GetFieldTypeName, [c_int])
-get_field_width = int_output(lgdal.OGR_Fld_GetWidth, [c_void_p])
diff --git a/webapp/django/contrib/gis/gdal/prototypes/errcheck.py b/webapp/django/contrib/gis/gdal/prototypes/errcheck.py
deleted file mode 100644
index c66be9a..0000000
--- a/webapp/django/contrib/gis/gdal/prototypes/errcheck.py
+++ /dev/null
@@ -1,125 +0,0 @@
-"""
- This module houses the error-checking routines used by the GDAL
- ctypes prototypes.
-"""
-from ctypes import c_void_p, string_at
-from django.contrib.gis.gdal.error import check_err, OGRException, SRSException
-from django.contrib.gis.gdal.libgdal import lgdal
-
-# Helper routines for retrieving pointers and/or values from 
-# arguments passed in by reference. 
-def arg_byref(args, offset=-1):
-    "Returns the pointer argument's by-refernece value."
-    return args[offset]._obj.value
-
-def ptr_byref(args, offset=-1):
-    "Returns the pointer argument passed in by-reference."
-    return args[offset]._obj
-
-def check_bool(result, func, cargs):
-    "Returns the boolean evaluation of the value."
-    if bool(result): return True
-    else: return False
-
-### String checking Routines ###
-def check_const_string(result, func, cargs, offset=None):
-    """
-    Similar functionality to `check_string`, but does not free the pointer.
-    """
-    if offset:
-        check_err(result)
-        ptr = ptr_byref(cargs, offset)
-        return ptr.value
-    else:
-        return result
-
-def check_string(result, func, cargs, offset=-1, str_result=False):
-    """
-    Checks the string output returned from the given function, and frees
-    the string pointer allocated by OGR.  The `str_result` keyword
-    may be used when the result is the string pointer, otherwise
-    the OGR error code is assumed.  The `offset` keyword may be used
-    to extract the string pointer passed in by-reference at the given
-    slice offset in the function arguments.
-    """
-    if str_result:
-        # For routines that return a string.
-        ptr = result
-        if not ptr: s = None
-        else: s = string_at(result)
-    else:
-        # Error-code return specified.
-        check_err(result)
-        ptr = ptr_byref(cargs, offset)
-        # Getting the string value
-        s = ptr.value
-    # Correctly freeing the allocated memory beind GDAL pointer 
-    # w/the VSIFree routine.
-    if ptr: lgdal.VSIFree(ptr)
-    return s
-
-### DataSource, Layer error-checking ###
-
-### Envelope checking ###
-def check_envelope(result, func, cargs, offset=-1):
-    "Checks a function that returns an OGR Envelope by reference."
-    env = ptr_byref(cargs, offset)
-    return env
-
-### Geometry error-checking routines ###
-def check_geom(result, func, cargs):
-    "Checks a function that returns a geometry."
-    # OGR_G_Clone may return an integer, even though the
-    # restype is set to c_void_p
-    if isinstance(result, int):
-        result = c_void_p(result)
-    if not result: 
-        raise OGRException('Invalid geometry pointer returned from "%s".' % func.__name__)
-    return result
-
-def check_geom_offset(result, func, cargs, offset=-1):
-    "Chcks the geometry at the given offset in the C parameter list."
-    check_err(result)
-    geom = ptr_byref(cargs, offset=offset)
-    return check_geom(geom, func, cargs)
-
-### Spatial Reference error-checking routines ###
-def check_srs(result, func, cargs):
-    if isinstance(result, int):
-        result = c_void_p(result)
-    if not result:
-        raise SRSException('Invalid spatial reference pointer returned from "%s".' % func.__name__)
-    return result
-
-### Other error-checking routines ###
-def check_arg_errcode(result, func, cargs):
-    """
-    The error code is returned in the last argument, by reference.
-    Check its value with `check_err` before returning the result.
-    """
-    check_err(arg_byref(cargs))
-    return result
-
-def check_errcode(result, func, cargs):
-    """
-    Check the error code returned (c_int).
-    """
-    check_err(result)
-    return
-
-def check_pointer(result, func, cargs):
-    "Makes sure the result pointer is valid."
-    if bool(result): 
-        return result
-    else: 
-        raise OGRException('Invalid pointer returned from "%s"' % func.__name__)
-
-def check_str_arg(result, func, cargs):
-    """
-    This is for the OSRGet[Angular|Linear]Units functions, which
-    require that the returned string pointer not be freed.  This
-    returns both the double and tring values.
-    """
-    dbl = result
-    ptr = cargs[-1]._obj
-    return dbl, ptr.value
diff --git a/webapp/django/contrib/gis/gdal/prototypes/generation.py b/webapp/django/contrib/gis/gdal/prototypes/generation.py
deleted file mode 100644
index bba715d..0000000
--- a/webapp/django/contrib/gis/gdal/prototypes/generation.py
+++ /dev/null
@@ -1,116 +0,0 @@
-"""
- This module contains functions that generate ctypes prototypes for the
- GDAL routines.
-"""
-
-from ctypes import c_char_p, c_double, c_int, c_void_p
-from django.contrib.gis.gdal.prototypes.errcheck import \
-    check_arg_errcode, check_errcode, check_geom, check_geom_offset, \
-    check_pointer, check_srs, check_str_arg, check_string, check_const_string
-
-def double_output(func, argtypes, errcheck=False, strarg=False):
-    "Generates a ctypes function that returns a double value."
-    func.argtypes = argtypes
-    func.restype = c_double
-    if errcheck: func.errcheck = check_arg_errcode
-    if strarg: func.errcheck = check_str_arg
-    return func
-
-def geom_output(func, argtypes, offset=None):
-    """
-    Generates a function that returns a Geometry either by reference
-    or directly (if the return_geom keyword is set to True).
-    """
-    # Setting the argument types
-    func.argtypes = argtypes
-
-    if not offset:
-        # When a geometry pointer is directly returned.
-        func.restype = c_void_p
-        func.errcheck = check_geom
-    else:
-        # Error code returned, geometry is returned by-reference.
-        func.restype = c_int
-        def geomerrcheck(result, func, cargs):
-            return check_geom_offset(result, func, cargs, offset)
-        func.errcheck = geomerrcheck
-
-    return func
-
-def int_output(func, argtypes):
-    "Generates a ctypes function that returns an integer value."
-    func.argtypes = argtypes
-    func.restype = c_int
-    return func
-
-def srs_output(func, argtypes):
-    """
-    Generates a ctypes prototype for the given function with
-    the given C arguments that returns a pointer to an OGR
-    Spatial Reference System.
-    """
-    func.argtypes = argtypes
-    func.restype = c_void_p
-    func.errcheck = check_srs
-    return func
-
-def const_string_output(func, argtypes, offset=None):
-    func.argtypes = argtypes
-    if offset:
-        func.restype = c_int
-    else:
-        func.restype = c_char_p
-
-    def _check_const(result, func, cargs):
-        return check_const_string(result, func, cargs, offset=offset)
-    func.errcheck = _check_const
-
-    return func
-
-def string_output(func, argtypes, offset=-1, str_result=False):
-    """
-    Generates a ctypes prototype for the given function with the
-    given argument types that returns a string from a GDAL pointer.
-    The `const` flag indicates whether the allocated pointer should 
-    be freed via the GDAL library routine VSIFree -- but only applies
-    only when `str_result` is True.
-    """
-    func.argtypes = argtypes
-    if str_result:
-        # String is the result, don't explicitly define
-        # the argument type so we can get the pointer.
-        pass
-    else:
-        # Error code is returned
-        func.restype = c_int
-
-    # Dynamically defining our error-checking function with the
-    # given offset.
-    def _check_str(result, func, cargs):
-        return check_string(result, func, cargs,
-                            offset=offset, str_result=str_result)
-    func.errcheck = _check_str
-    return func
-
-def void_output(func, argtypes, errcheck=True):
-    """
-    For functions that don't only return an error code that needs to
-    be examined.
-    """
-    if argtypes: func.argtypes = argtypes
-    if errcheck:
-        # `errcheck` keyword may be set to False for routines that
-        # return void, rather than a status code.
-        func.restype = c_int
-        func.errcheck = check_errcode
-    else:
-        func.restype = None
-        
-    return func
-
-def voidptr_output(func, argtypes):
-    "For functions that return c_void_p."
-    func.argtypes = argtypes
-    func.restype = c_void_p
-    func.errcheck = check_pointer
-    return func
diff --git a/webapp/django/contrib/gis/gdal/prototypes/geom.py b/webapp/django/contrib/gis/gdal/prototypes/geom.py
deleted file mode 100644
index 7757f55..0000000
--- a/webapp/django/contrib/gis/gdal/prototypes/geom.py
+++ /dev/null
@@ -1,109 +0,0 @@
-from datetime import date
-from ctypes import c_char, c_char_p, c_double, c_int, c_ubyte, c_void_p, POINTER
-from django.contrib.gis.gdal.envelope import OGREnvelope
-from django.contrib.gis.gdal.libgdal import lgdal, gdal_version
-from django.contrib.gis.gdal.prototypes.errcheck import check_bool, check_envelope
-from django.contrib.gis.gdal.prototypes.generation import \
-    const_string_output, double_output, geom_output, int_output, \
-    srs_output, string_output, void_output
-
-# Some prototypes need to be aware of what version GDAL we have.
-major, minor = map(int, gdal_version().split('.')[:2])
-if major <= 1 and minor <= 4:
-    GEOJSON = False
-else:
-    GEOJSON = True
-
-### Generation routines specific to this module ###
-def env_func(f, argtypes):
-    "For getting OGREnvelopes."
-    f.argtypes = argtypes
-    f.restype = None
-    f.errcheck = check_envelope
-    return f
-
-def pnt_func(f):
-    "For accessing point information."
-    return double_output(f, [c_void_p, c_int])
-
-def topology_func(f):
-    f.argtypes = [c_void_p, c_void_p]
-    f.restype = c_int
-    f.errchck = check_bool
-    return f
-
-### OGR_G ctypes function prototypes ###
-
-# GeoJSON routines, if supported.
-if GEOJSON:
-    from_json = geom_output(lgdal.OGR_G_CreateGeometryFromJson, [c_char_p])
-    to_json = string_output(lgdal.OGR_G_ExportToJson, [c_void_p], str_result=True)
-else:
-    from_json = False
-    to_json = False
-
-# GetX, GetY, GetZ all return doubles.
-getx = pnt_func(lgdal.OGR_G_GetX)
-gety = pnt_func(lgdal.OGR_G_GetY)
-getz = pnt_func(lgdal.OGR_G_GetZ)
-    
-# Geometry creation routines.
-from_wkb = geom_output(lgdal.OGR_G_CreateFromWkb, [c_char_p, c_void_p, POINTER(c_void_p), c_int], offset=-2)
-from_wkt = geom_output(lgdal.OGR_G_CreateFromWkt, [POINTER(c_char_p), c_void_p, POINTER(c_void_p)], offset=-1)
-create_geom = geom_output(lgdal.OGR_G_CreateGeometry, [c_int])
-clone_geom = geom_output(lgdal.OGR_G_Clone, [c_void_p])
-get_geom_ref = geom_output(lgdal.OGR_G_GetGeometryRef, [c_void_p, c_int])
-get_boundary = geom_output(lgdal.OGR_G_GetBoundary, [c_void_p])
-geom_convex_hull = geom_output(lgdal.OGR_G_ConvexHull, [c_void_p])
-geom_diff = geom_output(lgdal.OGR_G_Difference, [c_void_p, c_void_p])
-geom_intersection = geom_output(lgdal.OGR_G_Intersection, [c_void_p, c_void_p])
-geom_sym_diff = geom_output(lgdal.OGR_G_SymmetricDifference, [c_void_p, c_void_p])
-geom_union = geom_output(lgdal.OGR_G_Union, [c_void_p, c_void_p])
-
-# Geometry modification routines.
-add_geom = void_output(lgdal.OGR_G_AddGeometry, [c_void_p, c_void_p])
-import_wkt = void_output(lgdal.OGR_G_ImportFromWkt, [c_void_p, POINTER(c_char_p)])
-
-# Destroys a geometry
-destroy_geom = void_output(lgdal.OGR_G_DestroyGeometry, [c_void_p], errcheck=False)
-
-# Geometry export routines.
-to_wkb = void_output(lgdal.OGR_G_ExportToWkb, None, errcheck=True) # special handling for WKB.
-to_wkt = string_output(lgdal.OGR_G_ExportToWkt, [c_void_p, POINTER(c_char_p)])
-to_gml = string_output(lgdal.OGR_G_ExportToGML, [c_void_p], str_result=True)
-get_wkbsize = int_output(lgdal.OGR_G_WkbSize, [c_void_p])
-
-# Geometry spatial-reference related routines.
-assign_srs = void_output(lgdal.OGR_G_AssignSpatialReference, [c_void_p, c_void_p], errcheck=False)
-get_geom_srs = srs_output(lgdal.OGR_G_GetSpatialReference, [c_void_p])
-
-# Geometry properties
-get_area = double_output(lgdal.OGR_G_GetArea, [c_void_p])
-get_centroid = void_output(lgdal.OGR_G_Centroid, [c_void_p, c_void_p])
-get_dims = int_output(lgdal.OGR_G_GetDimension, [c_void_p])
-get_coord_dims = int_output(lgdal.OGR_G_GetCoordinateDimension, [c_void_p])
-
-get_geom_count = int_output(lgdal.OGR_G_GetGeometryCount, [c_void_p])
-get_geom_name = const_string_output(lgdal.OGR_G_GetGeometryName, [c_void_p])
-get_geom_type = int_output(lgdal.OGR_G_GetGeometryType, [c_void_p])
-get_point_count = int_output(lgdal.OGR_G_GetPointCount, [c_void_p])
-get_point = void_output(lgdal.OGR_G_GetPoint, [c_void_p, c_int, POINTER(c_double), POINTER(c_double), POINTER(c_double)], errcheck=False)
-geom_close_rings = void_output(lgdal.OGR_G_CloseRings, [c_void_p], errcheck=False)
-
-# Topology routines.
-ogr_contains = topology_func(lgdal.OGR_G_Contains)
-ogr_crosses = topology_func(lgdal.OGR_G_Crosses)
-ogr_disjoint = topology_func(lgdal.OGR_G_Disjoint)
-ogr_equals = topology_func(lgdal.OGR_G_Equals)
-ogr_intersects = topology_func(lgdal.OGR_G_Intersects)
-ogr_overlaps = topology_func(lgdal.OGR_G_Overlaps)
-ogr_touches = topology_func(lgdal.OGR_G_Touches)
-ogr_within = topology_func(lgdal.OGR_G_Within)
-
-# Transformation routines.
-geom_transform = void_output(lgdal.OGR_G_Transform, [c_void_p, c_void_p])
-geom_transform_to = void_output(lgdal.OGR_G_TransformTo, [c_void_p, c_void_p])
-
-# For retrieving the envelope of the geometry.
-get_envelope = env_func(lgdal.OGR_G_GetEnvelope, [c_void_p, POINTER(OGREnvelope)])
-
diff --git a/webapp/django/contrib/gis/gdal/prototypes/srs.py b/webapp/django/contrib/gis/gdal/prototypes/srs.py
deleted file mode 100644
index ff4d0ad..0000000
--- a/webapp/django/contrib/gis/gdal/prototypes/srs.py
+++ /dev/null
@@ -1,71 +0,0 @@
-from ctypes import c_char_p, c_int, c_void_p, POINTER
-from django.contrib.gis.gdal.libgdal import lgdal, std_call
-from django.contrib.gis.gdal.prototypes.generation import \
-    const_string_output, double_output, int_output, \
-    srs_output, string_output, void_output
-
-## Shortcut generation for routines with known parameters.
-def srs_double(f):
-    """
-    Creates a function prototype for the OSR routines that take
-    the OSRSpatialReference object and
-    """
-    return double_output(f, [c_void_p, POINTER(c_int)], errcheck=True)
-
-def units_func(f):
-    """
-    Creates a ctypes function prototype for OSR units functions, e.g.,
-    OSRGetAngularUnits, OSRGetLinearUnits.
-    """
-    return double_output(f, [c_void_p, POINTER(c_char_p)], strarg=True)
-
-# Creation & destruction.
-clone_srs = srs_output(std_call('OSRClone'), [c_void_p])
-new_srs = srs_output(std_call('OSRNewSpatialReference'), [c_char_p])
-release_srs = void_output(lgdal.OSRRelease, [c_void_p], errcheck=False)
-destroy_srs = void_output(std_call('OSRDestroySpatialReference'), [c_void_p], errcheck=False)
-srs_validate = void_output(lgdal.OSRValidate, [c_void_p])
-
-# Getting the semi_major, semi_minor, and flattening functions.
-semi_major = srs_double(lgdal.OSRGetSemiMajor)
-semi_minor = srs_double(lgdal.OSRGetSemiMinor)
-invflattening = srs_double(lgdal.OSRGetInvFlattening)
-
-# WKT, PROJ, EPSG, XML importation routines.
-from_wkt = void_output(lgdal.OSRImportFromWkt, [c_void_p, POINTER(c_char_p)])
-from_proj = void_output(lgdal.OSRImportFromProj4, [c_void_p, c_char_p])
-from_epsg = void_output(std_call('OSRImportFromEPSG'), [c_void_p, c_int])
-from_xml = void_output(lgdal.OSRImportFromXML, [c_void_p, c_char_p])
-
-# Morphing to/from ESRI WKT.
-morph_to_esri = void_output(lgdal.OSRMorphToESRI, [c_void_p])
-morph_from_esri = void_output(lgdal.OSRMorphFromESRI, [c_void_p])
-
-# Identifying the EPSG
-identify_epsg = void_output(lgdal.OSRAutoIdentifyEPSG, [c_void_p])
-
-# Getting the angular_units, linear_units functions
-linear_units = units_func(lgdal.OSRGetLinearUnits)
-angular_units = units_func(lgdal.OSRGetAngularUnits)
-
-# For exporting to WKT, PROJ.4, "Pretty" WKT, and XML.
-to_wkt = string_output(std_call('OSRExportToWkt'), [c_void_p, POINTER(c_char_p)])
-to_proj = string_output(std_call('OSRExportToProj4'), [c_void_p, POINTER(c_char_p)])
-to_pretty_wkt = string_output(std_call('OSRExportToPrettyWkt'), [c_void_p, POINTER(c_char_p), c_int], offset=-2)
-
-# Memory leak fixed in GDAL 1.5; still exists in 1.4.
-to_xml = string_output(lgdal.OSRExportToXML, [c_void_p, POINTER(c_char_p), c_char_p], offset=-2)
-
-# String attribute retrival routines.
-get_attr_value = const_string_output(std_call('OSRGetAttrValue'), [c_void_p, c_char_p, c_int])
-get_auth_name = const_string_output(lgdal.OSRGetAuthorityName, [c_void_p, c_char_p])
-get_auth_code = const_string_output(lgdal.OSRGetAuthorityCode, [c_void_p, c_char_p])
-
-# SRS Properties
-isgeographic = int_output(lgdal.OSRIsGeographic, [c_void_p])
-islocal = int_output(lgdal.OSRIsLocal, [c_void_p])
-isprojected = int_output(lgdal.OSRIsProjected, [c_void_p])
-
-# Coordinate transformation
-new_ct= srs_output(std_call('OCTNewCoordinateTransformation'), [c_void_p, c_void_p])
-destroy_ct = void_output(std_call('OCTDestroyCoordinateTransformation'), [c_void_p], errcheck=False)
diff --git a/webapp/django/contrib/gis/gdal/srs.py b/webapp/django/contrib/gis/gdal/srs.py
deleted file mode 100644
index d70e71e..0000000
--- a/webapp/django/contrib/gis/gdal/srs.py
+++ /dev/null
@@ -1,360 +0,0 @@
-"""
-  The Spatial Reference class, represensents OGR Spatial Reference objects.
-
-  Example:
-  >>> from django.contrib.gis.gdal import SpatialReference
-  >>> srs = SpatialReference('WGS84')
-  >>> print srs
-  GEOGCS["WGS 84",
-      DATUM["WGS_1984",
-          SPHEROID["WGS 84",6378137,298.257223563,
-              AUTHORITY["EPSG","7030"]],
-          TOWGS84[0,0,0,0,0,0,0],
-          AUTHORITY["EPSG","6326"]],
-      PRIMEM["Greenwich",0,
-          AUTHORITY["EPSG","8901"]],
-      UNIT["degree",0.01745329251994328,
-          AUTHORITY["EPSG","9122"]],
-      AUTHORITY["EPSG","4326"]]
-  >>> print srs.proj
-  +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
-  >>> print srs.ellipsoid
-  (6378137.0, 6356752.3142451793, 298.25722356300003)
-  >>> print srs.projected, srs.geographic
-  False True
-  >>> srs.import_epsg(32140)
-  >>> print srs.name
-  NAD83 / Texas South Central
-"""
-import re
-from types import UnicodeType, TupleType
-from ctypes import byref, c_char_p, c_int, c_void_p
-
-# Getting the error checking routine and exceptions
-from django.contrib.gis.gdal.error import OGRException, SRSException
-from django.contrib.gis.gdal.prototypes.srs import *
-
-#### Spatial Reference class. ####
-class SpatialReference(object):
-    """
-    A wrapper for the OGRSpatialReference object.  According to the GDAL website,
-    the SpatialReference object "provide[s] services to represent coordinate 
-    systems (projections and datums) and to transform between them."
-    """
-
-    # Well-Known Geographical Coordinate System Name
-    _well_known = {'WGS84':4326, 'WGS72':4322, 'NAD27':4267, 'NAD83':4269}
-    _epsg_regex = re.compile('^(EPSG:)?(?P<epsg>\d+)$', re.I)
-    _proj_regex = re.compile(r'^\+proj')
-
-    #### Python 'magic' routines ####
-    def __init__(self, srs_input='', srs_type='wkt'):
-        """
-        Creates a GDAL OSR Spatial Reference object from the given input.
-        The input may be string of OGC Well Known Text (WKT), an integer 
-        EPSG code, a PROJ.4 string, and/or a projection "well known" shorthand 
-        string (one of 'WGS84', 'WGS72', 'NAD27', 'NAD83').
-        """
-        # Intializing pointer and string buffer.
-        self._ptr = None
-        buf = c_char_p('')
-
-        if isinstance(srs_input, basestring):
-            # Encoding to ASCII if unicode passed in.
-            if isinstance(srs_input, UnicodeType):
-                srs_input = srs_input.encode('ascii')
-
-            epsg_m = self._epsg_regex.match(srs_input)
-            proj_m = self._proj_regex.match(srs_input)
-            if epsg_m:
-                # Is this an EPSG well known name?    
-                srs_type = 'epsg'
-                srs_input = int(epsg_m.group('epsg'))
-            elif proj_m:
-                # Is the string a PROJ.4 string?
-                srs_type = 'proj'
-            elif srs_input in self._well_known:
-                # Is this a short-hand well known name?  
-                srs_type = 'epsg'
-                srs_input = self._well_known[srs_input]
-            elif srs_type == 'proj':
-                pass
-            else:
-                # Setting the buffer with WKT, PROJ.4 string, etc.
-                buf = c_char_p(srs_input)
-        elif isinstance(srs_input, int):
-            # EPSG integer code was input.
-            if srs_type != 'epsg': srs_type = 'epsg'
-        elif isinstance(srs_input, c_void_p):
-            srs_type = 'ogr'
-        else:
-            raise TypeError('Invalid SRS type "%s"' % srs_type)
-
-        if srs_type == 'ogr':
-            # SRS input is OGR pointer
-            srs = srs_input
-        else:
-            # Creating a new pointer, using the string buffer.
-            srs = new_srs(buf)
-
-        # If the pointer is NULL, throw an exception.
-        if not srs:
-            raise SRSException('Could not create spatial reference from: %s' % srs_input)
-        else:
-            self._ptr = srs
-
-        # Post-processing if in PROJ.4 or EPSG formats.
-        if srs_type == 'proj': self.import_proj(srs_input)
-        elif srs_type == 'epsg': self.import_epsg(srs_input)
-
-    def __del__(self):
-        "Destroys this spatial reference."
-        if self._ptr: release_srs(self._ptr)
-
-    def __getitem__(self, target):
-        """
-        Returns the value of the given string attribute node, None if the node 
-        doesn't exist.  Can also take a tuple as a parameter, (target, child), 
-        where child is the index of the attribute in the WKT.  For example:
-
-        >>> wkt = 'GEOGCS["WGS 84", DATUM["WGS_1984, ... AUTHORITY["EPSG","4326"]]')
-        >>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326
-        >>> print srs['GEOGCS']
-        WGS 84
-        >>> print srs['DATUM']
-        WGS_1984
-        >>> print srs['AUTHORITY']
-        EPSG
-        >>> print srs['AUTHORITY', 1] # The authority value
-        4326
-        >>> print srs['TOWGS84', 4] # the fourth value in this wkt
-        0
-        >>> print srs['UNIT|AUTHORITY'] # For the units authority, have to use the pipe symbole.
-        EPSG
-        >>> print srs['UNIT|AUTHORITY', 1] # The authority value for the untis
-        9122
-        """
-        if isinstance(target, TupleType):
-            return self.attr_value(*target)
-        else:
-            return self.attr_value(target)
-
-    def __str__(self):
-        "The string representation uses 'pretty' WKT."
-        return self.pretty_wkt
-
-    #### SpatialReference Methods ####
-    def attr_value(self, target, index=0):
-        """
-        The attribute value for the given target node (e.g. 'PROJCS'). The index
-        keyword specifies an index of the child node to return.
-        """
-        if not isinstance(target, str) or not isinstance(index, int):
-            raise TypeError
-        return get_attr_value(self._ptr, target, index)
-
-    def auth_name(self, target):
-        "Returns the authority name for the given string target node."
-        return get_auth_name(self._ptr, target)
-    
-    def auth_code(self, target):
-        "Returns the authority code for the given string target node."
-        return get_auth_code(self._ptr, target)
-
-    def clone(self):
-        "Returns a clone of this SpatialReference object."
-        return SpatialReference(clone_srs(self._ptr))
-
-    def from_esri(self):
-        "Morphs this SpatialReference from ESRI's format to EPSG."
-        morph_from_esri(self._ptr)
-
-    def identify_epsg(self):
-        """
-        This method inspects the WKT of this SpatialReference, and will
-        add EPSG authority nodes where an EPSG identifier is applicable.
-        """
-        identify_epsg(self._ptr)
-
-    def to_esri(self):
-        "Morphs this SpatialReference to ESRI's format."
-        morph_to_esri(self._ptr)
-
-    def validate(self):
-        "Checks to see if the given spatial reference is valid."
-        srs_validate(self._ptr)
-    
-    #### Name & SRID properties ####
-    @property
-    def name(self):
-        "Returns the name of this Spatial Reference."
-        if self.projected: return self.attr_value('PROJCS')
-        elif self.geographic: return self.attr_value('GEOGCS')
-        elif self.local: return self.attr_value('LOCAL_CS')
-        else: return None
-
-    @property
-    def srid(self):
-        "Returns the SRID of top-level authority, or None if undefined."
-        try:
-            return int(self.attr_value('AUTHORITY', 1))
-        except (TypeError, ValueError):
-            return None
-        
-    #### Unit Properties ####
-    @property
-    def linear_name(self):
-        "Returns the name of the linear units."
-        units, name = linear_units(self._ptr, byref(c_char_p()))
-        return name
-
-    @property
-    def linear_units(self):
-        "Returns the value of the linear units."
-        units, name = linear_units(self._ptr, byref(c_char_p()))
-        return units
-
-    @property
-    def angular_name(self):
-        "Returns the name of the angular units."
-        units, name = angular_units(self._ptr, byref(c_char_p()))
-        return name
-
-    @property
-    def angular_units(self):
-        "Returns the value of the angular units."
-        units, name = angular_units(self._ptr, byref(c_char_p()))
-        return units
-
-    @property
-    def units(self):
-        """
-        Returns a 2-tuple of the units value and the units name, 
-        and will automatically determines whether to return the linear
-        or angular units.
-        """
-        if self.projected or self.local:
-            return linear_units(self._ptr, byref(c_char_p()))
-        elif self.geographic:
-            return angular_units(self._ptr, byref(c_char_p()))
-        else:
-            return (None, None)
-
-    #### Spheroid/Ellipsoid Properties ####
-    @property
-    def ellipsoid(self):
-        """
-        Returns a tuple of the ellipsoid parameters:
-         (semimajor axis, semiminor axis, and inverse flattening)
-        """
-        return (self.semi_major, self.semi_minor, self.inverse_flattening)
-
-    @property
-    def semi_major(self):
-        "Returns the Semi Major Axis for this Spatial Reference."
-        return semi_major(self._ptr, byref(c_int()))
-
-    @property
-    def semi_minor(self):
-        "Returns the Semi Minor Axis for this Spatial Reference."
-        return semi_minor(self._ptr, byref(c_int()))
-
-    @property
-    def inverse_flattening(self):
-        "Returns the Inverse Flattening for this Spatial Reference."
-        return invflattening(self._ptr, byref(c_int()))
-
-    #### Boolean Properties ####
-    @property
-    def geographic(self):
-        """
-        Returns True if this SpatialReference is geographic 
-         (root node is GEOGCS).
-        """
-        return bool(isgeographic(self._ptr))
-
-    @property
-    def local(self):
-        "Returns True if this SpatialReference is local (root node is LOCAL_CS)."
-        return bool(islocal(self._ptr))
-
-    @property
-    def projected(self):
-        """
-        Returns True if this SpatialReference is a projected coordinate system 
-         (root node is PROJCS).
-        """
-        return bool(isprojected(self._ptr))
-
-    #### Import Routines #####
-    def import_wkt(self, wkt):
-        "Imports the Spatial Reference from OGC WKT (string)"
-        from_wkt(self._ptr, byref(c_char_p(wkt)))
-
-    def import_proj(self, proj):
-        "Imports the Spatial Reference from a PROJ.4 string."
-        from_proj(self._ptr, proj)
-
-    def import_epsg(self, epsg):
-        "Imports the Spatial Reference from the EPSG code (an integer)."
-        from_epsg(self._ptr, epsg)
-
-    def import_xml(self, xml):
-        "Imports the Spatial Reference from an XML string."
-        from_xml(self._ptr, xml)
-
-    #### Export Properties ####
-    @property
-    def wkt(self):
-        "Returns the WKT representation of this Spatial Reference."
-        return to_wkt(self._ptr, byref(c_char_p()))
-
-    @property
-    def pretty_wkt(self, simplify=0):
-        "Returns the 'pretty' representation of the WKT."
-        return to_pretty_wkt(self._ptr, byref(c_char_p()), simplify)
-
-    @property
-    def proj(self):
-        "Returns the PROJ.4 representation for this Spatial Reference."
-        return to_proj(self._ptr, byref(c_char_p()))
-
-    @property
-    def proj4(self):
-        "Alias for proj()."
-        return self.proj
-
-    @property
-    def xml(self, dialect=''):
-        "Returns the XML representation of this Spatial Reference."
-        # FIXME: This leaks memory, have to figure out why.
-        return to_xml(self._ptr, byref(c_char_p()), dialect)
-
-    def to_esri(self):
-        "Morphs this SpatialReference to ESRI's format."
-        morph_to_esri(self._ptr)
-
-    def from_esri(self):
-        "Morphs this SpatialReference from ESRI's format to EPSG."
-        morph_from_esri(self._ptr)
-
-class CoordTransform(object):
-    "The coordinate system transformation object."
-
-    def __init__(self, source, target):
-        "Initializes on a source and target SpatialReference objects."
-        self._ptr = None # Initially NULL 
-        if not isinstance(source, SpatialReference) or not isinstance(target, SpatialReference):
-            raise SRSException('source and target must be of type SpatialReference')
-        self._ptr = new_ct(source._ptr, target._ptr)
-        if not self._ptr:
-            raise SRSException('could not intialize CoordTransform object')
-        self._srs1_name = source.name
-        self._srs2_name = target.name
-
-    def __del__(self):
-        "Deletes this Coordinate Transformation object."
-        if self._ptr: destroy_ct(self._ptr)
-
-    def __str__(self):
-        return 'Transform from "%s" to "%s"' % (self._srs1_name, self._srs2_name)
diff --git a/webapp/django/contrib/gis/geos/LICENSE b/webapp/django/contrib/gis/geos/LICENSE
deleted file mode 100644
index 84cf485..0000000
--- a/webapp/django/contrib/gis/geos/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2007, Justin Bronn
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    1. Redistributions of source code must retain the above copyright notice, 
-       this list of conditions and the following disclaimer.
-   
-    2. Redistributions in binary form must reproduce the above copyright 
-       notice, this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
-    3. Neither the name of GEOSGeometry nor the names of its contributors may be used
-       to endorse or promote products derived from this software without
-       specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/webapp/django/contrib/gis/geos/__init__.py b/webapp/django/contrib/gis/geos/__init__.py
deleted file mode 100644
index 90e2605..0000000
--- a/webapp/django/contrib/gis/geos/__init__.py
+++ /dev/null
@@ -1,69 +0,0 @@
-"""
- The goal of this module is to be a ctypes wrapper around the GEOS library
- that will work on both *NIX and Windows systems.  Specifically, this uses
- the GEOS C api.
-
- I have several motivations for doing this:
-  (1) The GEOS SWIG wrapper is no longer maintained, and requires the
-      installation of SWIG.
-  (2) The PCL implementation is over 2K+ lines of C and would make
-      PCL a requisite package for the GeoDjango application stack.
-  (3) Windows and Mac compatibility becomes substantially easier, and does not
-      require the additional compilation of PCL or GEOS and SWIG -- all that
-      is needed is a Win32 or Mac compiled GEOS C library (dll or dylib)
-      in a location that Python can read (e.g. 'C:\Python25').
-
- In summary, I wanted to wrap GEOS in a more maintainable and portable way using
- only Python and the excellent ctypes library (now standard in Python 2.5).
-
- In the spirit of loose coupling, this library does not require Django or
- GeoDjango.  Only the GEOS C library and ctypes are needed for the platform
- of your choice.
-
- For more information about GEOS:
-  http://geos.refractions.net
-  
- For more info about PCL and the discontinuation of the Python GEOS
- library see Sean Gillies' writeup (and subsequent update) at:
-  http://zcologia.com/news/150/geometries-for-python/
-  http://zcologia.com/news/429/geometries-for-python-update/
-"""
-from django.contrib.gis.geos.base import GEOSGeometry, wkt_regex, hex_regex
-from django.contrib.gis.geos.geometries import Point, LineString, LinearRing, Polygon, HAS_NUMPY
-from django.contrib.gis.geos.collections import GeometryCollection, MultiPoint, MultiLineString, MultiPolygon
-from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
-from django.contrib.gis.geos.libgeos import geos_version, geos_version_info
-
-def fromfile(file_name):
-    """
-    Given a string file name, returns a GEOSGeometry. The file may contain WKB,
-    WKT, or HEX.
-    """
-    fh = open(file_name, 'rb')
-    buf = fh.read()
-    fh.close()
-    if wkt_regex.match(buf) or hex_regex.match(buf):
-        return GEOSGeometry(buf)
-    else:
-        return GEOSGeometry(buffer(buf))
-
-def fromstr(wkt_or_hex, **kwargs):
-    "Given a string value (wkt or hex), returns a GEOSGeometry object."
-    return GEOSGeometry(wkt_or_hex, **kwargs)
-
-def hex_to_wkt(hex):
-    "Converts HEXEWKB into WKT."
-    return GEOSGeometry(hex).wkt
-
-def wkt_to_hex(wkt):
-    "Converts WKT into HEXEWKB."
-    return GEOSGeometry(wkt).hex
-
-def centroid(input):
-    "Returns the centroid of the geometry (given in HEXEWKB)."
-    return GEOSGeometry(input).centroid.wkt
-
-def area(input):
-    "Returns the area of the geometry (given in HEXEWKB)."
-    return GEOSGeometry(input).area
-    
diff --git a/webapp/django/contrib/gis/geos/base.py b/webapp/django/contrib/gis/geos/base.py
deleted file mode 100644
index 8200d59..0000000
--- a/webapp/django/contrib/gis/geos/base.py
+++ /dev/null
@@ -1,608 +0,0 @@
-"""
- This module contains the 'base' GEOSGeometry object -- all GEOS Geometries
- inherit from this object.
-"""
-# Python, ctypes and types dependencies.
-import re
-from ctypes import addressof, byref, c_double, c_size_t
-from types import UnicodeType
-
-# GEOS-related dependencies.
-from django.contrib.gis.geos.coordseq import GEOSCoordSeq
-from django.contrib.gis.geos.error import GEOSException
-from django.contrib.gis.geos.libgeos import GEOM_PTR
-
-# All other functions in this module come from the ctypes 
-# prototypes module -- which handles all interaction with
-# the underlying GEOS library.
-from django.contrib.gis.geos.prototypes import * 
-
-# Trying to import GDAL libraries, if available.  Have to place in
-# try/except since this package may be used outside GeoDjango.
-try:
-    from django.contrib.gis.gdal import OGRGeometry, SpatialReference, GEOJSON
-    HAS_GDAL = True
-except:
-    HAS_GDAL, GEOJSON = False, False
-
-# Regular expression for recognizing HEXEWKB and WKT.  A prophylactic measure
-# to prevent potentially malicious input from reaching the underlying C
-# library.  Not a substitute for good web security programming practices.
-hex_regex = re.compile(r'^[0-9A-F]+$', re.I)
-wkt_regex = re.compile(r'^(SRID=(?P<srid>\d+);)?(?P<wkt>(POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)[ACEGIMLONPSRUTY\d,\.\-\(\) ]+)$', re.I)
-json_regex = re.compile(r'^\{.+\}$')
-
-class GEOSGeometry(object):
-    "A class that, generally, encapsulates a GEOS geometry."
-
-    # Initially, the geometry pointer is NULL
-    _ptr = None
-
-    #### Python 'magic' routines ####
-    def __init__(self, geo_input, srid=None):
-        """
-        The base constructor for GEOS geometry objects, and may take the 
-        following inputs:
-         
-         * string: WKT
-         * string: HEXEWKB (a PostGIS-specific canonical form)
-         * buffer: WKB
-        
-        The `srid` keyword is used to specify the Source Reference Identifier
-        (SRID) number for this Geometry.  If not set, the SRID will be None.
-        """ 
-        if isinstance(geo_input, basestring):
-            if isinstance(geo_input, UnicodeType):
-                # Encoding to ASCII, WKT or HEXEWKB doesn't need any more.
-                geo_input = geo_input.encode('ascii')
-                            
-            wkt_m = wkt_regex.match(geo_input)
-            if wkt_m:
-                # Handling WKT input.
-                if wkt_m.group('srid'): srid = int(wkt_m.group('srid'))
-                g = from_wkt(wkt_m.group('wkt'))
-            elif hex_regex.match(geo_input):
-                # Handling HEXEWKB input.
-                g = from_hex(geo_input, len(geo_input))
-            elif GEOJSON and json_regex.match(geo_input):
-                # Handling GeoJSON input.
-                wkb_input = str(OGRGeometry(geo_input).wkb)
-                g = from_wkb(wkb_input, len(wkb_input))
-            else:
-                raise ValueError('String or unicode input unrecognized as WKT EWKT, and HEXEWKB.')
-        elif isinstance(geo_input, GEOM_PTR):
-            # When the input is a pointer to a geomtry (GEOM_PTR).
-            g = geo_input
-        elif isinstance(geo_input, buffer):
-            # When the input is a buffer (WKB).
-            wkb_input = str(geo_input)
-            g = from_wkb(wkb_input, len(wkb_input))
-        else:
-            # Invalid geometry type.
-            raise TypeError('Improper geometry input type: %s' % str(type(geo_input)))
-
-        if bool(g):
-            # Setting the pointer object with a valid pointer.
-            self._ptr = g
-        else:
-            raise GEOSException('Could not initialize GEOS Geometry with given input.')
-
-        # Post-initialization setup.
-        self._post_init(srid)
-
-    def _post_init(self, srid):
-        "Helper routine for performing post-initialization setup."
-        # Setting the SRID, if given.
-        if srid and isinstance(srid, int): self.srid = srid
-        
-        # Setting the class type (e.g., Point, Polygon, etc.)
-        self.__class__ = GEOS_CLASSES[self.geom_typeid]
-
-        # Setting the coordinate sequence for the geometry (will be None on 
-        # geometries that do not have coordinate sequences)
-        self._set_cs()
-
-    @property
-    def ptr(self):
-        """
-        Property for controlling access to the GEOS geometry pointer.  Using
-        this raises an exception when the pointer is NULL, thus preventing
-        the C library from attempting to access an invalid memory location.
-        """
-        if self._ptr: 
-            return self._ptr
-        else:
-            raise GEOSException('NULL GEOS pointer encountered; was this geometry modified?')
-
-    def __del__(self):
-        """
-        Destroys this Geometry; in other words, frees the memory used by the
-        GEOS C++ object.
-        """
-        if self._ptr: destroy_geom(self._ptr)
-
-    def __copy__(self):
-        """
-        Returns a clone because the copy of a GEOSGeometry may contain an
-        invalid pointer location if the original is garbage collected.
-        """
-        return self.clone()
-
-    def __deepcopy__(self, memodict):
-        """
-        The `deepcopy` routine is used by the `Node` class of django.utils.tree;
-        thus, the protocol routine needs to be implemented to return correct 
-        copies (clones) of these GEOS objects, which use C pointers.
-        """
-        return self.clone()
-
-    def __str__(self):
-        "WKT is used for the string representation."
-        return self.wkt
-
-    def __repr__(self):
-        "Short-hand representation because WKT may be very large."
-        return '<%s object at %s>' % (self.geom_type, hex(addressof(self.ptr)))
-
-    # Pickling support
-    def __getstate__(self):
-        # The pickled state is simply a tuple of the WKB (in string form)
-        # and the SRID.
-        return str(self.wkb), self.srid
-
-    def __setstate__(self, state):
-        # Instantiating from the tuple state that was pickled.
-        wkb, srid = state
-        ptr = from_wkb(wkb, len(wkb))
-        if not ptr: raise GEOSException('Invalid Geometry loaded from pickled state.')
-        self._ptr = ptr
-        self._post_init(srid)
-
-    # Comparison operators
-    def __eq__(self, other):
-        """
-        Equivalence testing, a Geometry may be compared with another Geometry
-        or a WKT representation.
-        """
-        if isinstance(other, basestring):
-            return self.wkt == other
-        elif isinstance(other, GEOSGeometry):
-            return self.equals_exact(other)
-        else:
-            return False
-
-    def __ne__(self, other):
-        "The not equals operator."
-        return not (self == other)
-
-    ### Geometry set-like operations ###
-    # Thanks to Sean Gillies for inspiration:
-    #  http://lists.gispython.org/pipermail/community/2007-July/001034.html
-    # g = g1 | g2
-    def __or__(self, other):
-        "Returns the union of this Geometry and the other."
-        return self.union(other)
-
-    # g = g1 & g2
-    def __and__(self, other):
-        "Returns the intersection of this Geometry and the other."
-        return self.intersection(other)
-
-    # g = g1 - g2
-    def __sub__(self, other):
-        "Return the difference this Geometry and the other."
-        return self.difference(other)
-
-    # g = g1 ^ g2
-    def __xor__(self, other):
-        "Return the symmetric difference of this Geometry and the other."
-        return self.sym_difference(other)
-
-    #### Coordinate Sequence Routines ####
-    @property
-    def has_cs(self):
-        "Returns True if this Geometry has a coordinate sequence, False if not."
-        # Only these geometries are allowed to have coordinate sequences.
-        if isinstance(self, (Point, LineString, LinearRing)):
-            return True
-        else:
-            return False
-
-    def _set_cs(self):
-        "Sets the coordinate sequence for this Geometry."
-        if self.has_cs:
-            self._cs = GEOSCoordSeq(get_cs(self.ptr), self.hasz)
-        else:
-            self._cs = None
-
-    @property
-    def coord_seq(self):
-        "Returns a clone of the coordinate sequence for this Geometry."
-        if self.has_cs:
-            return self._cs.clone()
-
-    #### Geometry Info ####
-    @property
-    def geom_type(self):
-        "Returns a string representing the Geometry type, e.g. 'Polygon'"
-        return geos_type(self.ptr)
-
-    @property
-    def geom_typeid(self):
-        "Returns an integer representing the Geometry type."
-        return geos_typeid(self.ptr)
-
-    @property
-    def num_geom(self):
-        "Returns the number of geometries in the Geometry."
-        return get_num_geoms(self.ptr)
-
-    @property
-    def num_coords(self):
-        "Returns the number of coordinates in the Geometry."
-        return get_num_coords(self.ptr)
-
-    @property
-    def num_points(self):
-        "Returns the number points, or coordinates, in the Geometry."
-        return self.num_coords
-
-    @property
-    def dims(self):
-        "Returns the dimension of this Geometry (0=point, 1=line, 2=surface)."
-        return get_dims(self.ptr)
-
-    def normalize(self):
-        "Converts this Geometry to normal form (or canonical form)."
-        return geos_normalize(self.ptr)
-
-    #### Unary predicates ####
-    @property
-    def empty(self):
-        """
-        Returns a boolean indicating whether the set of points in this Geometry 
-        are empty.
-        """
-        return geos_isempty(self.ptr)
-
-    @property
-    def hasz(self):
-        "Returns whether the geometry has a 3D dimension."
-        return geos_hasz(self.ptr)
-
-    @property
-    def ring(self):
-        "Returns whether or not the geometry is a ring."
-        return geos_isring(self.ptr)
-
-    @property
-    def simple(self):
-        "Returns false if the Geometry not simple."
-        return geos_issimple(self.ptr)
-
-    @property
-    def valid(self):
-        "This property tests the validity of this Geometry."
-        return geos_isvalid(self.ptr)
-
-    #### Binary predicates. ####
-    def contains(self, other):
-        "Returns true if other.within(this) returns true."
-        return geos_contains(self.ptr, other.ptr)
-
-    def crosses(self, other):
-        """
-        Returns true if the DE-9IM intersection matrix for the two Geometries
-        is T*T****** (for a point and a curve,a point and an area or a line and
-        an area) 0******** (for two curves).
-        """
-        return geos_crosses(self.ptr, other.ptr)
-
-    def disjoint(self, other):
-        """
-        Returns true if the DE-9IM intersection matrix for the two Geometries
-        is FF*FF****.
-        """
-        return geos_disjoint(self.ptr, other.ptr)
-
-    def equals(self, other):
-        """
-        Returns true if the DE-9IM intersection matrix for the two Geometries 
-        is T*F**FFF*.
-        """
-        return geos_equals(self.ptr, other.ptr)
-
-    def equals_exact(self, other, tolerance=0):
-        """
-        Returns true if the two Geometries are exactly equal, up to a
-        specified tolerance.
-        """
-        return geos_equalsexact(self.ptr, other.ptr, float(tolerance))
-
-    def intersects(self, other):
-        "Returns true if disjoint returns false."
-        return geos_intersects(self.ptr, other.ptr)
-
-    def overlaps(self, other):
-        """
-        Returns true if the DE-9IM intersection matrix for the two Geometries
-        is T*T***T** (for two points or two surfaces) 1*T***T** (for two curves).
-        """
-        return geos_overlaps(self.ptr, other.ptr)
-
-    def relate_pattern(self, other, pattern):
-        """
-        Returns true if the elements in the DE-9IM intersection matrix for the
-        two Geometries match the elements in pattern.
-        """
-        if not isinstance(pattern, str) or len(pattern) > 9:
-            raise GEOSException('invalid intersection matrix pattern')
-        return geos_relatepattern(self.ptr, other.ptr, pattern)
-
-    def touches(self, other):
-        """
-        Returns true if the DE-9IM intersection matrix for the two Geometries
-        is FT*******, F**T***** or F***T****.
-        """
-        return geos_touches(self.ptr, other.ptr)
-
-    def within(self, other):
-        """
-        Returns true if the DE-9IM intersection matrix for the two Geometries
-        is T*F**F***.
-        """
-        return geos_within(self.ptr, other.ptr)
-
-    #### SRID Routines ####
-    def get_srid(self):
-        "Gets the SRID for the geometry, returns None if no SRID is set."
-        s = geos_get_srid(self.ptr)
-        if s == 0: return None
-        else: return s
-
-    def set_srid(self, srid):
-        "Sets the SRID for the geometry."
-        geos_set_srid(self.ptr, srid)
-    srid = property(get_srid, set_srid)
-
-    #### Output Routines ####
-    @property
-    def ewkt(self):
-        "Returns the EWKT (WKT + SRID) of the Geometry."
-        if self.get_srid(): return 'SRID=%s;%s' % (self.srid, self.wkt)
-        else: return self.wkt
-
-    @property
-    def wkt(self):
-        "Returns the WKT (Well-Known Text) of the Geometry."
-        return to_wkt(self.ptr)
-
-    @property
-    def hex(self):
-        """
-        Returns the HEX of the Geometry -- please note that the SRID is not
-        included in this representation, because the GEOS C library uses
-        -1 by default, even if the SRID is set.
-        """
-        # A possible faster, all-python, implementation: 
-        #  str(self.wkb).encode('hex')
-        return to_hex(self.ptr, byref(c_size_t()))
-
-    @property
-    def json(self):
-        """
-        Returns GeoJSON representation of this Geometry if GDAL 1.5+ 
-        is installed.
-        """
-        if GEOJSON: return self.ogr.json
-    geojson = json
-
-    @property
-    def wkb(self):
-        "Returns the WKB of the Geometry as a buffer."
-        bin = to_wkb(self.ptr, byref(c_size_t()))
-        return buffer(bin)
-
-    @property
-    def kml(self):
-        "Returns the KML representation of this Geometry."
-        gtype = self.geom_type
-        return '<%s>%s</%s>' % (gtype, self.coord_seq.kml, gtype)
-
-    #### GDAL-specific output routines ####
-    @property
-    def ogr(self):
-        "Returns the OGR Geometry for this Geometry."
-        if HAS_GDAL:
-            if self.srid:
-                return OGRGeometry(self.wkb, self.srid)
-            else:
-                return OGRGeometry(self.wkb)
-        else:
-            return None
-
-    @property
-    def srs(self):
-        "Returns the OSR SpatialReference for SRID of this Geometry."
-        if HAS_GDAL and self.srid:
-            return SpatialReference(self.srid)
-        else:
-            return None
-
-    @property
-    def crs(self):
-        "Alias for `srs` property."
-        return self.srs
-
-    def transform(self, ct, clone=False):
-        """
-        Requires GDAL. Transforms the geometry according to the given 
-        transformation object, which may be an integer SRID, and WKT or 
-        PROJ.4 string. By default, the geometry is transformed in-place and 
-        nothing is returned. However if the `clone` keyword is set, then this 
-        geometry will not be modified and a transformed clone will be returned
-        instead.
-        """
-        srid = self.srid
-        if HAS_GDAL and srid:
-            g = OGRGeometry(self.wkb, srid)
-            g.transform(ct)
-            wkb = str(g.wkb)
-            ptr = from_wkb(wkb, len(wkb))
-            if clone: 
-                # User wants a cloned transformed geometry returned.
-                return GEOSGeometry(ptr, srid=g.srid)
-            if ptr:
-                # Reassigning pointer, and performing post-initialization setup
-                # again due to the reassignment.
-                destroy_geom(self.ptr)
-                self._ptr = ptr
-                self._post_init(g.srid)
-            else:
-                raise GEOSException('Transformed WKB was invalid.')
-
-    #### Topology Routines ####
-    def _topology(self, gptr):
-        "Helper routine to return Geometry from the given pointer."
-        return GEOSGeometry(gptr, srid=self.srid)
-
-    @property
-    def boundary(self):
-        "Returns the boundary as a newly allocated Geometry object."
-        return self._topology(geos_boundary(self.ptr))
-
-    def buffer(self, width, quadsegs=8):
-        """
-        Returns a geometry that represents all points whose distance from this
-        Geometry is less than or equal to distance. Calculations are in the
-        Spatial Reference System of this Geometry. The optional third parameter sets
-        the number of segment used to approximate a quarter circle (defaults to 8).
-        (Text from PostGIS documentation at ch. 6.1.3)
-        """
-        return self._topology(geos_buffer(self.ptr, width, quadsegs))
-
-    @property
-    def centroid(self):
-        """
-        The centroid is equal to the centroid of the set of component Geometries
-        of highest dimension (since the lower-dimension geometries contribute zero
-        "weight" to the centroid).
-        """
-        return self._topology(geos_centroid(self.ptr))
-
-    @property
-    def convex_hull(self):
-        """
-        Returns the smallest convex Polygon that contains all the points 
-        in the Geometry.
-        """
-        return self._topology(geos_convexhull(self.ptr))
-
-    def difference(self, other):
-        """
-        Returns a Geometry representing the points making up this Geometry
-        that do not make up other.
-        """
-        return self._topology(geos_difference(self.ptr, other.ptr))
-
-    @property
-    def envelope(self):
-        "Return the envelope for this geometry (a polygon)."
-        return self._topology(geos_envelope(self.ptr))
-
-    def intersection(self, other):
-        "Returns a Geometry representing the points shared by this Geometry and other."
-        return self._topology(geos_intersection(self.ptr, other.ptr))
-
-    @property
-    def point_on_surface(self):
-        "Computes an interior point of this Geometry."
-        return self._topology(geos_pointonsurface(self.ptr))
-
-    def relate(self, other):
-        "Returns the DE-9IM intersection matrix for this Geometry and the other."
-        return geos_relate(self.ptr, other.ptr)
-
-    def simplify(self, tolerance=0.0, preserve_topology=False):
-        """
-        Returns the Geometry, simplified using the Douglas-Peucker algorithm
-        to the specified tolerance (higher tolerance => less points).  If no
-        tolerance provided, defaults to 0.
-
-        By default, this function does not preserve topology - e.g. polygons can 
-        be split, collapse to lines or disappear holes can be created or 
-        disappear, and lines can cross. By specifying preserve_topology=True, 
-        the result will have the same dimension and number of components as the 
-        input. This is significantly slower.         
-        """
-        if preserve_topology:
-            return self._topology(geos_preservesimplify(self.ptr, tolerance))
-        else:
-            return self._topology(geos_simplify(self.ptr, tolerance))
-
-    def sym_difference(self, other):
-        """
-        Returns a set combining the points in this Geometry not in other,
-        and the points in other not in this Geometry.
-        """
-        return self._topology(geos_symdifference(self.ptr, other.ptr))
-
-    def union(self, other):
-        "Returns a Geometry representing all the points in this Geometry and other."
-        return self._topology(geos_union(self.ptr, other.ptr))
-
-    #### Other Routines ####
-    @property
-    def area(self):
-        "Returns the area of the Geometry."
-        return geos_area(self.ptr, byref(c_double()))
-
-    def distance(self, other):
-        """
-        Returns the distance between the closest points on this Geometry
-        and the other. Units will be in those of the coordinate system of
-        the Geometry.
-        """
-        if not isinstance(other, GEOSGeometry): 
-            raise TypeError('distance() works only on other GEOS Geometries.')
-        return geos_distance(self.ptr, other.ptr, byref(c_double()))
-
-    @property
-    def extent(self):
-        """
-        Returns the extent of this geometry as a 4-tuple, consisting of
-        (xmin, ymin, xmax, ymax).
-        """
-        env = self.envelope
-        if isinstance(env, Point):
-            xmin, ymin = env.tuple
-            xmax, ymax = xmin, ymin
-        else:
-            xmin, ymin = env[0][0]
-            xmax, ymax = env[0][2]
-        return (xmin, ymin, xmax, ymax)
-
-    @property
-    def length(self):
-        """
-        Returns the length of this Geometry (e.g., 0 for point, or the
-        circumfrence of a Polygon).
-        """
-        return geos_length(self.ptr, byref(c_double()))
-    
-    def clone(self):
-        "Clones this Geometry."
-        return GEOSGeometry(geom_clone(self.ptr), srid=self.srid)
-
-# Class mapping dictionary
-from django.contrib.gis.geos.geometries import Point, Polygon, LineString, LinearRing
-from django.contrib.gis.geos.collections import GeometryCollection, MultiPoint, MultiLineString, MultiPolygon
-GEOS_CLASSES = {0 : Point,
-                1 : LineString,
-                2 : LinearRing,
-                3 : Polygon,
-                4 : MultiPoint,
-                5 : MultiLineString,
-                6 : MultiPolygon,
-                7 : GeometryCollection,
-                }
diff --git a/webapp/django/contrib/gis/geos/collections.py b/webapp/django/contrib/gis/geos/collections.py
deleted file mode 100644
index a69b2e7..0000000
--- a/webapp/django/contrib/gis/geos/collections.py
+++ /dev/null
@@ -1,105 +0,0 @@
-"""
- This module houses the Geometry Collection objects:
- GeometryCollection, MultiPoint, MultiLineString, and MultiPolygon
-"""
-from ctypes import c_int, c_uint, byref
-from types import TupleType, ListType
-from django.contrib.gis.geos.base import GEOSGeometry
-from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
-from django.contrib.gis.geos.geometries import Point, LineString, LinearRing, Polygon
-from django.contrib.gis.geos.libgeos import get_pointer_arr, GEOM_PTR
-from django.contrib.gis.geos.prototypes import create_collection, destroy_geom, geom_clone, geos_typeid, get_cs, get_geomn
-
-class GeometryCollection(GEOSGeometry):
-    _allowed = (Point, LineString, LinearRing, Polygon)
-    _typeid = 7
-
-    def __init__(self, *args, **kwargs):
-        "Initializes a Geometry Collection from a sequence of Geometry objects."
-
-        # Checking the arguments
-        if not args:
-            raise TypeError, 'Must provide at least one Geometry to initialize %s.' % self.__class__.__name__
-
-        if len(args) == 1: 
-            # If only one geometry provided or a list of geometries is provided
-            #  in the first argument.
-            if isinstance(args[0], (TupleType, ListType)):
-                init_geoms = args[0]
-            else:
-                init_geoms = args
-        else:
-            init_geoms = args
-
-        # Ensuring that only the permitted geometries are allowed in this collection
-        if False in [isinstance(geom, self._allowed) for geom in init_geoms]:
-            raise TypeError('Invalid Geometry type encountered in the arguments.')
-
-        # Creating the geometry pointer array.
-        ngeoms = len(init_geoms)
-        geoms = get_pointer_arr(ngeoms)
-        for i in xrange(ngeoms): geoms[i] = geom_clone(init_geoms[i].ptr)
-        super(GeometryCollection, self).__init__(create_collection(c_int(self._typeid), byref(geoms), c_uint(ngeoms)), **kwargs)
-
-    def __getitem__(self, index):
-        "Returns the Geometry from this Collection at the given index (0-based)."
-        # Checking the index and returning the corresponding GEOS geometry.
-        self._checkindex(index)
-        return GEOSGeometry(geom_clone(get_geomn(self.ptr, index)), srid=self.srid)
-
-    def __setitem__(self, index, geom):
-        "Sets the Geometry at the specified index."
-        self._checkindex(index)
-        if not isinstance(geom, self._allowed):
-            raise TypeError('Incompatible Geometry for collection.')
-        
-        ngeoms = len(self)
-        geoms = get_pointer_arr(ngeoms)
-        for i in xrange(ngeoms):
-            if i == index:
-                geoms[i] = geom_clone(geom.ptr)
-            else:
-                geoms[i] = geom_clone(get_geomn(self.ptr, i))
-        
-        # Creating a new collection, and destroying the contents of the previous poiner.
-        prev_ptr = self.ptr
-        srid = self.srid
-        self._ptr = create_collection(c_int(self._typeid), byref(geoms), c_uint(ngeoms))
-        if srid: self.srid = srid
-        destroy_geom(prev_ptr)
-
-    def __iter__(self):
-        "Iterates over each Geometry in the Collection."
-        for i in xrange(len(self)):
-            yield self.__getitem__(i)
-
-    def __len__(self):
-        "Returns the number of geometries in this Collection."
-        return self.num_geom
-
-    def _checkindex(self, index):
-        "Checks the given geometry index."
-        if index < 0 or index >= self.num_geom:
-            raise GEOSIndexError('invalid GEOS Geometry index: %s' % str(index))
-
-    @property
-    def kml(self):
-        "Returns the KML for this Geometry Collection."
-        return '<MultiGeometry>%s</MultiGeometry>' % ''.join([g.kml for g in self])
-
-    @property
-    def tuple(self):
-        "Returns a tuple of all the coordinates in this Geometry Collection"
-        return tuple([g.tuple for g in self])
-    coords = tuple
-
-# MultiPoint, MultiLineString, and MultiPolygon class definitions.
-class MultiPoint(GeometryCollection): 
-    _allowed = Point
-    _typeid = 4
-class MultiLineString(GeometryCollection): 
-    _allowed = (LineString, LinearRing)
-    _typeid = 5
-class MultiPolygon(GeometryCollection): 
-    _allowed = Polygon
-    _typeid = 6
diff --git a/webapp/django/contrib/gis/geos/coordseq.py b/webapp/django/contrib/gis/geos/coordseq.py
deleted file mode 100644
index bc0c479..0000000
--- a/webapp/django/contrib/gis/geos/coordseq.py
+++ /dev/null
@@ -1,164 +0,0 @@
-"""
- This module houses the GEOSCoordSeq object, which is used internally
- by GEOSGeometry to house the actual coordinates of the Point,
- LineString, and LinearRing geometries.
-"""
-from ctypes import c_double, c_uint, byref
-from types import ListType, TupleType
-from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
-from django.contrib.gis.geos.libgeos import CS_PTR, HAS_NUMPY
-from django.contrib.gis.geos.prototypes import cs_clone, cs_getdims, cs_getordinate, cs_getsize, cs_setordinate
-if HAS_NUMPY: from numpy import ndarray
-
-class GEOSCoordSeq(object):
-    "The internal representation of a list of coordinates inside a Geometry."
-
-    #### Python 'magic' routines ####
-    def __init__(self, ptr, z=False):
-        "Initializes from a GEOS pointer."
-        if not isinstance(ptr, CS_PTR):
-            raise TypeError('Coordinate sequence should initialize with a CS_PTR.')
-        self._ptr = ptr
-        self._z = z
-
-    def __iter__(self):
-        "Iterates over each point in the coordinate sequence."
-        for i in xrange(self.size):
-            yield self[i]
-
-    def __len__(self):
-        "Returns the number of points in the coordinate sequence."
-        return int(self.size)
-
-    def __str__(self):
-        "Returns the string representation of the coordinate sequence."
-        return str(self.tuple)
-
-    def __getitem__(self, index):
-        "Returns the coordinate sequence value at the given index."
-        coords = [self.getX(index), self.getY(index)]
-        if self.dims == 3 and self._z:
-            coords.append(self.getZ(index))
-        return tuple(coords)
-
-    def __setitem__(self, index, value):
-        "Sets the coordinate sequence value at the given index."
-        # Checking the input value
-        if isinstance(value, (ListType, TupleType)):
-            pass
-        elif HAS_NUMPY and isinstance(value, ndarray):
-            pass
-        else:
-            raise TypeError('Must set coordinate with a sequence (list, tuple, or numpy array).')
-        # Checking the dims of the input
-        if self.dims == 3 and self._z:
-            n_args = 3
-            set_3d = True
-        else:
-            n_args = 2
-            set_3d = False
-        if len(value) != n_args:
-            raise TypeError('Dimension of value does not match.')
-        # Setting the X, Y, Z
-        self.setX(index, value[0])
-        self.setY(index, value[1])
-        if set_3d: self.setZ(index, value[2])
-
-    #### Internal Routines ####
-    def _checkindex(self, index):
-        "Checks the given index."
-        sz = self.size
-        if (sz < 1) or (index < 0) or (index >= sz):
-            raise GEOSIndexError('invalid GEOS Geometry index: %s' % str(index))
-
-    def _checkdim(self, dim):
-        "Checks the given dimension."
-        if dim < 0 or dim > 2:
-            raise GEOSException('invalid ordinate dimension "%d"' % dim)
-
-    @property
-    def ptr(self):
-        """
-        Property for controlling access to coordinate sequence pointer,
-        preventing attempted access to a NULL memory location.
-        """
-        if self._ptr: return self._ptr
-        else: raise GEOSException('NULL coordinate sequence pointer encountered.')
-
-    #### Ordinate getting and setting routines ####
-    def getOrdinate(self, dimension, index):
-        "Returns the value for the given dimension and index."
-        self._checkindex(index)
-        self._checkdim(dimension)
-        return cs_getordinate(self.ptr, index, dimension, byref(c_double()))
-
-    def setOrdinate(self, dimension, index, value):
-        "Sets the value for the given dimension and index."
-        self._checkindex(index)
-        self._checkdim(dimension)
-        cs_setordinate(self.ptr, index, dimension, value)
-
-    def getX(self, index):
-        "Get the X value at the index."
-        return self.getOrdinate(0, index)
-
-    def setX(self, index, value):
-        "Set X with the value at the given index."
-        self.setOrdinate(0, index, value)
-
-    def getY(self, index):
-        "Get the Y value at the given index."
-        return self.getOrdinate(1, index)
-
-    def setY(self, index, value):
-        "Set Y with the value at the given index."
-        self.setOrdinate(1, index, value)
-
-    def getZ(self, index):
-        "Get Z with the value at the given index."
-        return self.getOrdinate(2, index)
-
-    def setZ(self, index, value):
-        "Set Z with the value at the given index."
-        self.setOrdinate(2, index, value)
-
-    ### Dimensions ###
-    @property
-    def size(self):
-        "Returns the size of this coordinate sequence."
-        return cs_getsize(self.ptr, byref(c_uint()))
-
-    @property
-    def dims(self):
-        "Returns the dimensions of this coordinate sequence."
-        return cs_getdims(self.ptr, byref(c_uint()))
-
-    @property
-    def hasz(self):
-        """
-        Returns whether this coordinate sequence is 3D.  This property value is
-        inherited from the parent Geometry.
-        """
-        return self._z
-
-    ### Other Methods ###
-    def clone(self):
-        "Clones this coordinate sequence."
-        return GEOSCoordSeq(cs_clone(self.ptr), self.hasz)
-
-    @property
-    def kml(self):
-        "Returns the KML representation for the coordinates."
-        # Getting the substitution string depending on whether the coordinates have
-        #  a Z dimension.
-        if self.hasz: substr = '%s,%s,%s '
-        else: substr = '%s,%s,0 '
-        return '<coordinates>%s</coordinates>' % \
-            ''.join([substr % self[i] for i in xrange(len(self))]).strip()
-
-    @property
-    def tuple(self):
-        "Returns a tuple version of this coordinate sequence."
-        n = self.size
-        if n == 1: return self[0]
-        else: return tuple([self[i] for i in xrange(n)])
diff --git a/webapp/django/contrib/gis/geos/error.py b/webapp/django/contrib/gis/geos/error.py
deleted file mode 100644
index 46bdfe6..0000000
--- a/webapp/django/contrib/gis/geos/error.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""
- This module houses the GEOS exceptions, specifically, GEOSException and
- GEOSGeometryIndexError.
-"""
-
-class GEOSException(Exception):
-    "The base GEOS exception, indicates a GEOS-related error."
-    pass
-
-class GEOSIndexError(GEOSException, KeyError):
-    """
-    This exception is raised when an invalid index is encountered, and has
-    the 'silent_variable_feature' attribute set to true.  This ensures that
-    django's templates proceed to use the next lookup type gracefully when
-    an Exception is raised.  Fixes ticket #4740.
-    """
-    # "If, during the method lookup, a method raises an exception, the exception
-    #  will be propagated, unless the exception has an attribute 
-    #  `silent_variable_failure` whose value is True." -- Django template docs.
-    silent_variable_failure = True
diff --git a/webapp/django/contrib/gis/geos/geometries.py b/webapp/django/contrib/gis/geos/geometries.py
deleted file mode 100644
index c5420e9..0000000
--- a/webapp/django/contrib/gis/geos/geometries.py
+++ /dev/null
@@ -1,391 +0,0 @@
-"""
- This module houses the Point, LineString, LinearRing, and Polygon OGC
- geometry classes.  All geometry classes in this module inherit from 
- GEOSGeometry.
-"""
-from ctypes import c_uint, byref
-from django.contrib.gis.geos.base import GEOSGeometry
-from django.contrib.gis.geos.coordseq import GEOSCoordSeq
-from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
-from django.contrib.gis.geos.libgeos import get_pointer_arr, GEOM_PTR, HAS_NUMPY
-from django.contrib.gis.geos.prototypes import *
-if HAS_NUMPY: from numpy import ndarray, array
-
-class Point(GEOSGeometry):
-
-    def __init__(self, x, y=None, z=None, srid=None):
-        """
-        The Point object may be initialized with either a tuple, or individual
-        parameters.
-        
-        For Example:
-        >>> p = Point((5, 23)) # 2D point, passed in as a tuple
-        >>> p = Point(5, 23, 8) # 3D point, passed in with individual parameters
-        """
-
-        if isinstance(x, (tuple, list)):
-            # Here a tuple or list was passed in under the `x` parameter.
-            ndim = len(x)
-            if ndim < 2 or ndim > 3:
-                raise TypeError('Invalid sequence parameter: %s' % str(x))
-            coords = x
-        elif isinstance(x, (int, float, long)) and isinstance(y, (int, float, long)):
-            # Here X, Y, and (optionally) Z were passed in individually, as parameters.
-            if isinstance(z, (int, float, long)):
-                ndim = 3
-                coords = [x, y, z]
-            else:
-                ndim = 2
-                coords = [x, y]
-        else:
-            raise TypeError('Invalid parameters given for Point initialization.')
-
-        # Creating the coordinate sequence, and setting X, Y, [Z]
-        cs = create_cs(c_uint(1), c_uint(ndim))
-        cs_setx(cs, 0, coords[0])
-        cs_sety(cs, 0, coords[1])
-        if ndim == 3: cs_setz(cs, 0, coords[2])
-
-        # Initializing using the address returned from the GEOS 
-        #  createPoint factory.
-        super(Point, self).__init__(create_point(cs), srid=srid)
-
-    def __len__(self):
-        "Returns the number of dimensions for this Point (either 0, 2 or 3)."
-        if self.empty: return 0
-        if self.hasz: return 3
-        else: return 2
-        
-    def get_x(self):
-        "Returns the X component of the Point."
-        return self._cs.getOrdinate(0, 0)
-
-    def set_x(self, value):
-        "Sets the X component of the Point."
-        self._cs.setOrdinate(0, 0, value)
-
-    def get_y(self):
-        "Returns the Y component of the Point."
-        return self._cs.getOrdinate(1, 0)
-
-    def set_y(self, value):
-        "Sets the Y component of the Point."
-        self._cs.setOrdinate(1, 0, value)
-
-    def get_z(self):
-        "Returns the Z component of the Point."
-        if self.hasz:
-            return self._cs.getOrdinate(2, 0)
-        else:
-            return None
-
-    def set_z(self, value):
-        "Sets the Z component of the Point."
-        if self.hasz:
-            self._cs.setOrdinate(2, 0, value)
-        else:
-            raise GEOSException('Cannot set Z on 2D Point.')
-
-    # X, Y, Z properties
-    x = property(get_x, set_x)
-    y = property(get_y, set_y)
-    z = property(get_z, set_z)
-
-    ### Tuple setting and retrieval routines. ###
-    def get_coords(self):
-        "Returns a tuple of the point."
-        return self._cs.tuple
-
-    def set_coords(self, tup):
-        "Sets the coordinates of the point with the given tuple."
-        self._cs[0] = tup
-    
-    # The tuple and coords properties
-    tuple = property(get_coords, set_coords)
-    coords = tuple
-
-class LineString(GEOSGeometry):
-
-    #### Python 'magic' routines ####
-    def __init__(self, *args, **kwargs):
-        """
-        Initializes on the given sequence -- may take lists, tuples, NumPy arrays
-        of X,Y pairs, or Point objects.  If Point objects are used, ownership is
-        _not_ transferred to the LineString object.
-
-        Examples:
-         ls = LineString((1, 1), (2, 2))
-         ls = LineString([(1, 1), (2, 2)])
-         ls = LineString(array([(1, 1), (2, 2)]))
-         ls = LineString(Point(1, 1), Point(2, 2))
-        """
-        # If only one argument provided, set the coords array appropriately
-        if len(args) == 1: coords = args[0]
-        else: coords = args
-
-        if isinstance(coords, (tuple, list)):
-            # Getting the number of coords and the number of dimensions -- which
-            #  must stay the same, e.g., no LineString((1, 2), (1, 2, 3)).
-            ncoords = len(coords)
-            if coords: ndim = len(coords[0])
-            else: raise TypeError('Cannot initialize on empty sequence.')
-            self._checkdim(ndim)
-            # Incrementing through each of the coordinates and verifying
-            for i in xrange(1, ncoords):
-                if not isinstance(coords[i], (tuple, list, Point)):
-                    raise TypeError('each coordinate should be a sequence (list or tuple)')
-                if len(coords[i]) != ndim: raise TypeError('Dimension mismatch.')
-            numpy_coords = False
-        elif HAS_NUMPY and isinstance(coords, ndarray):
-            shape = coords.shape # Using numpy's shape.
-            if len(shape) != 2: raise TypeError('Too many dimensions.')
-            self._checkdim(shape[1])
-            ncoords = shape[0]
-            ndim = shape[1]
-            numpy_coords = True
-        else:
-            raise TypeError('Invalid initialization input for LineStrings.')
-
-        # Creating a coordinate sequence object because it is easier to 
-        #  set the points using GEOSCoordSeq.__setitem__().
-        cs = GEOSCoordSeq(create_cs(ncoords, ndim), z=bool(ndim==3))
-        for i in xrange(ncoords):
-            if numpy_coords: cs[i] = coords[i,:]
-            elif isinstance(coords[i], Point): cs[i] = coords[i].tuple
-            else: cs[i] = coords[i]        
-
-        # Getting the correct initialization function
-        if kwargs.get('ring', False):
-            func = create_linearring
-        else:
-            func = create_linestring
-
-        # If SRID was passed in with the keyword arguments
-        srid = kwargs.get('srid', None)
-       
-        # Calling the base geometry initialization with the returned pointer 
-        #  from the function.
-        super(LineString, self).__init__(func(cs.ptr), srid=srid)
-
-    def __getitem__(self, index):
-        "Gets the point at the specified index."
-        return self._cs[index]
-
-    def __setitem__(self, index, value):
-        "Sets the point at the specified index, e.g., line_str[0] = (1, 2)."
-        self._cs[index] = value
-
-    def __iter__(self):
-        "Allows iteration over this LineString."
-        for i in xrange(len(self)):
-            yield self[i]
-
-    def __len__(self):
-        "Returns the number of points in this LineString."
-        return len(self._cs)
-
-    def _checkdim(self, dim):
-        if dim not in (2, 3): raise TypeError('Dimension mismatch.')
-
-    #### Sequence Properties ####
-    @property
-    def tuple(self):
-        "Returns a tuple version of the geometry from the coordinate sequence."
-        return self._cs.tuple
-    coords = tuple
-
-    def _listarr(self, func):
-        """
-        Internal routine that returns a sequence (list) corresponding with
-        the given function.  Will return a numpy array if possible.
-        """
-        lst = [func(i) for i in xrange(len(self))]
-        if HAS_NUMPY: return array(lst) # ARRRR!
-        else: return lst
-
-    @property
-    def array(self):
-        "Returns a numpy array for the LineString."
-        return self._listarr(self._cs.__getitem__)
-
-    @property
-    def x(self):
-        "Returns a list or numpy array of the X variable."
-        return self._listarr(self._cs.getX)
-    
-    @property
-    def y(self):
-        "Returns a list or numpy array of the Y variable."
-        return self._listarr(self._cs.getY)
-
-    @property
-    def z(self):
-        "Returns a list or numpy array of the Z variable."
-        if not self.hasz: return None
-        else: return self._listarr(self._cs.getZ)
-
-# LinearRings are LineStrings used within Polygons.
-class LinearRing(LineString):
-    def __init__(self, *args, **kwargs):
-        "Overriding the initialization function to set the ring keyword."
-        kwargs['ring'] = True # Setting the ring keyword argument to True
-        super(LinearRing, self).__init__(*args, **kwargs)
-
-class Polygon(GEOSGeometry):
-
-    def __init__(self, *args, **kwargs):
-        """
-        Initializes on an exterior ring and a sequence of holes (both
-        instances may be either LinearRing instances, or a tuple/list
-        that may be constructed into a LinearRing).
-        
-        Examples of initialization, where shell, hole1, and hole2 are 
-        valid LinearRing geometries:
-        >>> poly = Polygon(shell, hole1, hole2)
-        >>> poly = Polygon(shell, (hole1, hole2))
-
-        Example where a tuple parameters are used:
-        >>> poly = Polygon(((0, 0), (0, 10), (10, 10), (0, 10), (0, 0)), 
-                           ((4, 4), (4, 6), (6, 6), (6, 4), (4, 4)))
-        """
-        if not args:
-            raise TypeError('Must provide at list one LinearRing instance to initialize Polygon.')
-
-        # Getting the ext_ring and init_holes parameters from the argument list
-        ext_ring = args[0]
-        init_holes = args[1:]
-        n_holes = len(init_holes)
-
-        # If initialized as Polygon(shell, (LinearRing, LinearRing)) [for backward-compatibility]
-        if n_holes == 1 and isinstance(init_holes[0], (tuple, list)) and \
-                (len(init_holes[0]) == 0 or isinstance(init_holes[0][0], LinearRing)): 
-            init_holes = init_holes[0]
-            n_holes = len(init_holes)
-
-        # Ensuring the exterior ring and holes parameters are LinearRing objects
-        # or may be instantiated into LinearRings.
-        ext_ring = self._construct_ring(ext_ring, 'Exterior parameter must be a LinearRing or an object that can initialize a LinearRing.')
-        holes_list = [] # Create new list, cause init_holes is a tuple.
-        for i in xrange(n_holes):
-            holes_list.append(self._construct_ring(init_holes[i], 'Holes parameter must be a sequence of LinearRings or objects that can initialize to LinearRings'))
-
-        # Why another loop?  Because if a TypeError is raised, cloned pointers will
-        # be around that can't be cleaned up.
-        holes = get_pointer_arr(n_holes)
-        for i in xrange(n_holes): holes[i] = geom_clone(holes_list[i].ptr)
-                      
-        # Getting the shell pointer address.
-        shell = geom_clone(ext_ring.ptr)
-
-        # Calling with the GEOS createPolygon factory.
-        super(Polygon, self).__init__(create_polygon(shell, byref(holes), c_uint(n_holes)), **kwargs)
-
-    def __getitem__(self, index):
-        """
-        Returns the ring at the specified index.  The first index, 0, will 
-        always return the exterior ring.  Indices > 0 will return the 
-        interior ring at the given index (e.g., poly[1] and poly[2] would
-        return the first and second interior ring, respectively).
-        """
-        if index == 0:
-            return self.exterior_ring
-        else:
-            # Getting the interior ring, have to subtract 1 from the index.
-            return self.get_interior_ring(index-1) 
-
-    def __setitem__(self, index, ring):
-        "Sets the ring at the specified index with the given ring."
-        # Checking the index and ring parameters.
-        self._checkindex(index)
-        if not isinstance(ring, LinearRing):
-            raise TypeError('must set Polygon index with a LinearRing object')
-
-        # Getting the shell
-        if index == 0:
-            shell = geom_clone(ring.ptr)
-        else:
-            shell = geom_clone(get_extring(self.ptr))
-
-        # Getting the interior rings (holes)
-        nholes = len(self)-1
-        if nholes > 0:
-            holes = get_pointer_arr(nholes)
-            for i in xrange(nholes):
-                if i == (index-1):
-                    holes[i] = geom_clone(ring.ptr)
-                else:
-                    holes[i] = geom_clone(get_intring(self.ptr, i))
-            holes_param = byref(holes)
-        else:
-            holes_param = None
-         
-        # Getting the current pointer, replacing with the newly constructed
-        # geometry, and destroying the old geometry.
-        prev_ptr = self.ptr
-        srid = self.srid
-        self._ptr = create_polygon(shell, holes_param, c_uint(nholes))
-        if srid: self.srid = srid
-        destroy_geom(prev_ptr)
-
-    def __iter__(self):
-        "Iterates over each ring in the polygon."
-        for i in xrange(len(self)):
-            yield self[i]
-
-    def __len__(self):
-        "Returns the number of rings in this Polygon."
-        return self.num_interior_rings + 1
-
-    def _checkindex(self, index):
-        "Internal routine for checking the given ring index."
-        if index < 0 or index >= len(self):
-            raise GEOSIndexError('invalid Polygon ring index: %s' % index)
-
-    def _construct_ring(self, param, msg=''):
-        "Helper routine for trying to construct a ring from the given parameter."
-        if isinstance(param, LinearRing): return param
-        try:
-            ring = LinearRing(param)
-            return ring
-        except TypeError:
-            raise TypeError(msg)
-
-    def get_interior_ring(self, ring_i):
-        """
-        Gets the interior ring at the specified index, 0 is for the first 
-        interior ring, not the exterior ring.
-        """
-        self._checkindex(ring_i+1)
-        return GEOSGeometry(geom_clone(get_intring(self.ptr, ring_i)), srid=self.srid)
-                                                        
-    #### Polygon Properties ####
-    @property
-    def num_interior_rings(self):
-        "Returns the number of interior rings."
-        # Getting the number of rings
-        return get_nrings(self.ptr)
-
-    def get_ext_ring(self):
-        "Gets the exterior ring of the Polygon."
-        return GEOSGeometry(geom_clone(get_extring(self.ptr)), srid=self.srid)
-
-    def set_ext_ring(self, ring):
-        "Sets the exterior ring of the Polygon."
-        self[0] = ring
-
-    # properties for the exterior ring/shell
-    exterior_ring = property(get_ext_ring, set_ext_ring)
-    shell = exterior_ring
-    
-    @property
-    def tuple(self):
-        "Gets the tuple for each ring in this Polygon."
-        return tuple([self[i].tuple for i in xrange(len(self))])
-    coords = tuple
-
-    @property
-    def kml(self):
-        "Returns the KML representation of this Polygon."
-        inner_kml = ''.join(["<innerBoundaryIs>%s</innerBoundaryIs>" % self[i+1].kml 
-                             for i in xrange(self.num_interior_rings)])
-        return "<Polygon><outerBoundaryIs>%s</outerBoundaryIs>%s</Polygon>" % (self[0].kml, inner_kml)
diff --git a/webapp/django/contrib/gis/geos/libgeos.py b/webapp/django/contrib/gis/geos/libgeos.py
deleted file mode 100644
index d2990a6d..0000000
--- a/webapp/django/contrib/gis/geos/libgeos.py
+++ /dev/null
@@ -1,126 +0,0 @@
-"""
- This module houses the ctypes initialization procedures, as well
- as the notice and error handler function callbacks (get called
- when an error occurs in GEOS).
-
- This module also houses GEOS Pointer utilities, including
- get_pointer_arr(), and GEOM_PTR.
-"""
-import atexit, os, re, sys
-from ctypes import c_char_p, Structure, CDLL, CFUNCTYPE, POINTER
-from ctypes.util import find_library
-from django.contrib.gis.geos.error import GEOSException
-
-# NumPy supported?
-try:
-    from numpy import array, ndarray
-    HAS_NUMPY = True
-except ImportError:
-    HAS_NUMPY = False
-
-# Custom library path set?
-try:
-    from django.conf import settings
-    lib_path = settings.GEOS_LIBRARY_PATH
-except (AttributeError, EnvironmentError, ImportError):
-    lib_path = None
-
-# Setting the appropriate names for the GEOS-C library.
-if lib_path:
-    lib_names = None
-elif os.name == 'nt':
-    # Windows NT libraries
-    lib_names = ['libgeos_c-1']
-elif os.name == 'posix':
-    # *NIX libraries
-    lib_names = ['geos_c']
-else:
-    raise GEOSException('Unsupported OS "%s"' % os.name)
-
-# Using the ctypes `find_library` utility to find the the path to the GEOS 
-# shared library.  This is better than manually specifiying each library name 
-# and extension (e.g., libgeos_c.[so|so.1|dylib].).
-if lib_names: 
-    for lib_name in lib_names:
-        lib_path = find_library(lib_name)
-        if not lib_path is None: break
-
-# No GEOS library could be found.
-if lib_path is None: 
-    raise GEOSException('Could not find the GEOS library (tried "%s"). '
-                        'Try setting GEOS_LIBRARY_PATH in your settings.' % 
-                        '", "'.join(lib_names))
-
-# Getting the GEOS C library.  The C interface (CDLL) is used for
-#  both *NIX and Windows.
-# See the GEOS C API source code for more details on the library function calls:
-#  http://geos.refractions.net/ro/doxygen_docs/html/geos__c_8h-source.html
-lgeos = CDLL(lib_path)
-
-# The notice and error handler C function callback definitions.
-#  Supposed to mimic the GEOS message handler (C below):
-#  "typedef void (*GEOSMessageHandler)(const char *fmt, ...);"
-NOTICEFUNC = CFUNCTYPE(None, c_char_p, c_char_p)
-def notice_h(fmt, lst, output_h=sys.stdout):
-    try:
-        warn_msg = fmt % lst
-    except:
-        warn_msg = fmt 
-    output_h.write('GEOS_NOTICE: %s\n' % warn_msg)
-notice_h = NOTICEFUNC(notice_h)
-
-ERRORFUNC = CFUNCTYPE(None, c_char_p, c_char_p)
-def error_h(fmt, lst, output_h=sys.stderr):
-    try:
-        err_msg = fmt % lst
-    except:
-        err_msg = fmt
-    output_h.write('GEOS_ERROR: %s\n' % err_msg)
-error_h = ERRORFUNC(error_h)
-
-# The initGEOS routine should be called first, however, that routine takes
-#  the notice and error functions as parameters.  Here is the C code that
-#  is wrapped:
-#  "extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function);"
-lgeos.initGEOS(notice_h, error_h)
-
-#### GEOS Geometry C data structures, and utility functions. ####
-
-# Opaque GEOS geometry structures, used for GEOM_PTR and CS_PTR
-class GEOSGeom_t(Structure): pass
-class GEOSCoordSeq_t(Structure): pass
-
-# Pointers to opaque GEOS geometry structures.
-GEOM_PTR = POINTER(GEOSGeom_t)
-CS_PTR = POINTER(GEOSCoordSeq_t)
-
-# Used specifically by the GEOSGeom_createPolygon and GEOSGeom_createCollection 
-#  GEOS routines
-def get_pointer_arr(n):
-    "Gets a ctypes pointer array (of length `n`) for GEOSGeom_t opaque pointer."
-    GeomArr = GEOM_PTR * n
-    return GeomArr()
-
-# Returns the string version of the GEOS library. Have to set the restype 
-# explicitly to c_char_p to ensure compatibility accross 32 and 64-bit platforms.
-geos_version = lgeos.GEOSversion
-geos_version.argtypes = None   
-geos_version.restype = c_char_p
-
-# Regular expression should be able to parse version strings such as
-# '3.0.0rc4-CAPI-1.3.3', or '3.0.0-CAPI-1.4.1'
-version_regex = re.compile(r'^(?P<version>\d+\.\d+\.\d+)(rc(?P<release_candidate>\d+))?-CAPI-(?P<capi_version>\d+\.\d+\.\d+)$')
-def geos_version_info():
-    """
-    Returns a dictionary containing the various version metadata parsed from
-    the GEOS version string, including the version number, whether the version
-    is a release candidate (and what number release candidate), and the C API
-    version.
-    """
-    ver = geos_version()
-    m = version_regex.match(ver)
-    if not m: raise GEOSException('Could not parse version info string "%s"' % ver)
-    return dict((key, m.group(key)) for key in ('version', 'release_candidate', 'capi_version'))
-
-# Calling the finishGEOS() upon exit of the interpreter.
-atexit.register(lgeos.finishGEOS)
diff --git a/webapp/django/contrib/gis/geos/prototypes/__init__.py b/webapp/django/contrib/gis/geos/prototypes/__init__.py
deleted file mode 100644
index b4639f3..0000000
--- a/webapp/django/contrib/gis/geos/prototypes/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""
- This module contains all of the GEOS ctypes function prototypes. Each
- prototype handles the interaction between the GEOS library and Python
- via ctypes.
-"""
-
-# Coordinate sequence routines.
-from django.contrib.gis.geos.prototypes.coordseq import create_cs, get_cs, \
-    cs_clone, cs_getordinate, cs_setordinate, cs_getx, cs_gety, cs_getz, \
-    cs_setx, cs_sety, cs_setz, cs_getsize, cs_getdims
-
-# Geometry routines.
-from django.contrib.gis.geos.prototypes.geom import from_hex, from_wkb, from_wkt, \
-    create_point, create_linestring, create_linearring, create_polygon, create_collection, \
-    destroy_geom, get_extring, get_intring, get_nrings, get_geomn, geom_clone, \
-    geos_normalize, geos_type, geos_typeid, geos_get_srid, geos_set_srid, \
-    get_dims, get_num_coords, get_num_geoms, \
-    to_hex, to_wkb, to_wkt
-
-# Miscellaneous routines.
-from django.contrib.gis.geos.prototypes.misc import geos_area, geos_distance, geos_length
-
-# Predicates
-from django.contrib.gis.geos.prototypes.predicates import geos_hasz, geos_isempty, \
-    geos_isring, geos_issimple, geos_isvalid, geos_contains, geos_crosses, \
-    geos_disjoint, geos_equals, geos_equalsexact, geos_intersects, \
-    geos_intersects, geos_overlaps, geos_relatepattern, geos_touches, geos_within
-
-# Topology routines
-from django.contrib.gis.geos.prototypes.topology import \
-    geos_boundary, geos_buffer, geos_centroid, geos_convexhull, geos_difference, \
-    geos_envelope, geos_intersection, geos_pointonsurface, geos_preservesimplify, \
-    geos_simplify, geos_symdifference, geos_union, geos_relate
diff --git a/webapp/django/contrib/gis/geos/prototypes/coordseq.py b/webapp/django/contrib/gis/geos/prototypes/coordseq.py
deleted file mode 100644
index 3b5fb2c..0000000
--- a/webapp/django/contrib/gis/geos/prototypes/coordseq.py
+++ /dev/null
@@ -1,82 +0,0 @@
-from ctypes import c_double, c_int, c_uint, POINTER
-from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR, CS_PTR
-from django.contrib.gis.geos.prototypes.errcheck import last_arg_byref, GEOSException
-
-## Error-checking routines specific to coordinate sequences. ##
-def check_cs_ptr(result, func, cargs):
-    "Error checking on routines that return Geometries."
-    if not result:
-        raise GEOSException('Error encountered checking Coordinate Sequence returned from GEOS C function "%s".' % func.__name__)
-    return result
-
-def check_cs_op(result, func, cargs):
-    "Checks the status code of a coordinate sequence operation."
-    if result == 0:
-        raise GEOSException('Could not set value on coordinate sequence')
-    else:
-        return result
-
-def check_cs_get(result, func, cargs):
-    "Checking the coordinate sequence retrieval."
-    check_cs_op(result, func, cargs)
-    # Object in by reference, return its value.
-    return last_arg_byref(cargs)
-
-## Coordinate sequence prototype generation functions. ##
-def cs_int(func):
-    "For coordinate sequence routines that return an integer."
-    func.argtypes = [CS_PTR, POINTER(c_uint)]
-    func.restype = c_int
-    func.errcheck = check_cs_get
-    return func
-
-def cs_operation(func, ordinate=False, get=False):
-    "For coordinate sequence operations."
-    if get:
-        # Get routines get double parameter passed-in by reference.
-        func.errcheck = check_cs_get
-        dbl_param = POINTER(c_double)
-    else:
-        func.errcheck = check_cs_op
-        dbl_param = c_double
-
-    if ordinate:
-        # Get/Set ordinate routines have an extra uint parameter.
-        func.argtypes = [CS_PTR, c_uint, c_uint, dbl_param]
-    else:
-        func.argtypes = [CS_PTR, c_uint, dbl_param]
-
-    func.restype = c_int
-    return func
-
-def cs_output(func, argtypes):
-    "For routines that return a coordinate sequence."
-    func.argtypes = argtypes
-    func.restype = CS_PTR
-    func.errcheck = check_cs_ptr
-    return func
-
-## Coordinate Sequence ctypes prototypes ##
-
-# Coordinate Sequence constructors & cloning.
-cs_clone = cs_output(lgeos.GEOSCoordSeq_clone, [CS_PTR])
-create_cs = cs_output(lgeos.GEOSCoordSeq_create, [c_uint, c_uint])
-get_cs = cs_output(lgeos.GEOSGeom_getCoordSeq, [GEOM_PTR])
-
-# Getting, setting ordinate
-cs_getordinate = cs_operation(lgeos.GEOSCoordSeq_getOrdinate, ordinate=True, get=True)
-cs_setordinate = cs_operation(lgeos.GEOSCoordSeq_setOrdinate, ordinate=True)
-
-# For getting, x, y, z
-cs_getx = cs_operation(lgeos.GEOSCoordSeq_getX, get=True)
-cs_gety = cs_operation(lgeos.GEOSCoordSeq_getY, get=True)
-cs_getz = cs_operation(lgeos.GEOSCoordSeq_getZ, get=True)
-
-# For setting, x, y, z
-cs_setx = cs_operation(lgeos.GEOSCoordSeq_setX)
-cs_sety = cs_operation(lgeos.GEOSCoordSeq_setY)
-cs_setz = cs_operation(lgeos.GEOSCoordSeq_setZ)
-
-# These routines return size & dimensions.
-cs_getsize = cs_int(lgeos.GEOSCoordSeq_getSize)
-cs_getdims = cs_int(lgeos.GEOSCoordSeq_getDimensions)
diff --git a/webapp/django/contrib/gis/geos/prototypes/errcheck.py b/webapp/django/contrib/gis/geos/prototypes/errcheck.py
deleted file mode 100644
index 6fcc1a7..0000000
--- a/webapp/django/contrib/gis/geos/prototypes/errcheck.py
+++ /dev/null
@@ -1,76 +0,0 @@
-"""
- Error checking functions for GEOS ctypes prototype functions.
-"""
-import os
-from ctypes import string_at, CDLL
-from ctypes.util import find_library
-from django.contrib.gis.geos.error import GEOSException
-
-# Getting the C library, needed to free the string pointers
-# returned from GEOS.
-if os.name == 'nt':
-    libc_name = 'msvcrt'
-else:
-    libc_name = 'libc'
-libc = CDLL(find_library(libc_name))
-
-### ctypes error checking routines ###
-def last_arg_byref(args):
-    "Returns the last C argument's by reference value."
-    return args[-1]._obj.value
-        
-def check_dbl(result, func, cargs):
-    "Checks the status code and returns the double value passed in by reference."
-    # Checking the status code
-    if result != 1: return None
-    # Double passed in by reference, return its value.
-    return last_arg_byref(cargs)
-
-def check_geom(result, func, cargs):
-    "Error checking on routines that return Geometries."
-    if not result: 
-        raise GEOSException('Error encountered checking Geometry returned from GEOS C function "%s".' % func.__name__)
-    return result
-
-def check_minus_one(result, func, cargs):
-    "Error checking on routines that should not return -1."
-    if result == -1:
-        raise GEOSException('Error encountered in GEOS C function "%s".' % func.__name__)
-    else:
-        return result
-
-def check_predicate(result, func, cargs):
-    "Error checking for unary/binary predicate functions."
-    val = ord(result) # getting the ordinal from the character
-    if val == 1: return True
-    elif val == 0: return False
-    else:
-        raise GEOSException('Error encountered on GEOS C predicate function "%s".' % func.__name__)
-
-def check_sized_string(result, func, cargs):
-    "Error checking for routines that return explicitly sized strings."
-    if not result:
-        raise GEOSException('Invalid string pointer returned by GEOS C function "%s"' % func.__name__)
-    # A c_size_t object is passed in by reference for the second
-    # argument on these routines, and its needed to determine the
-    # correct size.
-    s = string_at(result, last_arg_byref(cargs))
-    libc.free(result)
-    return s
-
-def check_string(result, func, cargs):
-    "Error checking for routines that return strings."
-    if not result: raise GEOSException('Error encountered checking string return value in GEOS C function "%s".' % func.__name__)
-    # Getting the string value at the pointer address.
-    s = string_at(result)
-    # Freeing the memory allocated by the GEOS library.
-    libc.free(result)
-    return s
-
-def check_zero(result, func, cargs):
-    "Error checking on routines that should not return 0."
-    if result == 0:
-        raise GEOSException('Error encountered in GEOS C function "%s".' % func.__name__)
-    else:
-        return result
-                            
diff --git a/webapp/django/contrib/gis/geos/prototypes/geom.py b/webapp/django/contrib/gis/geos/prototypes/geom.py
deleted file mode 100644
index e5942a5..0000000
--- a/webapp/django/contrib/gis/geos/prototypes/geom.py
+++ /dev/null
@@ -1,111 +0,0 @@
-from ctypes import c_char_p, c_int, c_size_t, c_uint, POINTER
-from django.contrib.gis.geos.libgeos import lgeos, CS_PTR, GEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import \
-    check_geom, check_minus_one, check_sized_string, check_string, check_zero
-
-### ctypes generation functions ###
-def bin_constructor(func):
-    "Generates a prototype for binary construction (HEX, WKB) GEOS routines."
-    func.argtypes = [c_char_p, c_size_t]
-    func.restype = GEOM_PTR
-    func.errcheck = check_geom
-    return func
-
-# HEX & WKB output
-def bin_output(func):
-    "Generates a prototype for the routines that return a a sized string."
-    func.argtypes = [GEOM_PTR, POINTER(c_size_t)]
-    func.errcheck = check_sized_string
-    return func
-
-def geom_output(func, argtypes):
-    "For GEOS routines that return a geometry."
-    if argtypes: func.argtypes = argtypes
-    func.restype = GEOM_PTR
-    func.errcheck = check_geom
-    return func
-
-def geom_index(func):
-    "For GEOS routines that return geometries from an index."
-    return geom_output(func, [GEOM_PTR, c_int])
-
-def int_from_geom(func, zero=False):
-    "Argument is a geometry, return type is an integer."
-    func.argtypes = [GEOM_PTR]
-    func.restype = c_int
-    if zero: 
-        func.errcheck = check_zero
-    else:
-        func.errcheck = check_minus_one
-    return func
-
-def string_from_geom(func):
-    "Argument is a Geometry, return type is a string."
-    # We do _not_ specify an argument type because we want just an
-    # address returned from the function.
-    func.argtypes = [GEOM_PTR]
-    func.errcheck = check_string
-    return func
-
-### ctypes prototypes ###
-
-# TODO: Tell all users to use GEOS 3.0.0, instead of the release 
-#  candidates, and use the new Reader and Writer APIs (e.g.,
-#  GEOSWKT[Reader|Writer], GEOSWKB[Reader|Writer]).  A good time
-#  to do this will be when Refractions releases a Windows PostGIS
-#  installer using GEOS 3.0.0.
-
-# Creation routines from WKB, HEX, WKT
-from_hex = bin_constructor(lgeos.GEOSGeomFromHEX_buf)
-from_wkb = bin_constructor(lgeos.GEOSGeomFromWKB_buf)
-from_wkt = geom_output(lgeos.GEOSGeomFromWKT, [c_char_p])
-
-# Output routines
-to_hex = bin_output(lgeos.GEOSGeomToHEX_buf)
-to_wkb = bin_output(lgeos.GEOSGeomToWKB_buf)
-to_wkt = string_from_geom(lgeos.GEOSGeomToWKT)
-
-# The GEOS geometry type, typeid, num_coordites and number of geometries
-geos_normalize = int_from_geom(lgeos.GEOSNormalize)
-geos_type = string_from_geom(lgeos.GEOSGeomType)
-geos_typeid = int_from_geom(lgeos.GEOSGeomTypeId)
-get_dims = int_from_geom(lgeos.GEOSGeom_getDimensions, zero=True)
-get_num_coords = int_from_geom(lgeos.GEOSGetNumCoordinates)
-get_num_geoms = int_from_geom(lgeos.GEOSGetNumGeometries)
-
-# Geometry creation factories
-create_point = geom_output(lgeos.GEOSGeom_createPoint, [CS_PTR])
-create_linestring = geom_output(lgeos.GEOSGeom_createLineString, [CS_PTR]) 
-create_linearring = geom_output(lgeos.GEOSGeom_createLinearRing, [CS_PTR])
-
-# Polygon and collection creation routines are special and will not
-# have their argument types defined.
-create_polygon = geom_output(lgeos.GEOSGeom_createPolygon, None)
-create_collection = geom_output(lgeos.GEOSGeom_createCollection, None)
-
-# Ring routines
-get_extring = geom_output(lgeos.GEOSGetExteriorRing, [GEOM_PTR])
-get_intring = geom_index(lgeos.GEOSGetInteriorRingN)
-get_nrings = int_from_geom(lgeos.GEOSGetNumInteriorRings)
-
-# Collection Routines
-get_geomn = geom_index(lgeos.GEOSGetGeometryN)
-
-# Cloning
-geom_clone = lgeos.GEOSGeom_clone
-geom_clone.argtypes = [GEOM_PTR]
-geom_clone.restype = GEOM_PTR
-
-# Destruction routine.
-destroy_geom = lgeos.GEOSGeom_destroy
-destroy_geom.argtypes = [GEOM_PTR]
-destroy_geom.restype = None
-
-# SRID routines
-geos_get_srid = lgeos.GEOSGetSRID
-geos_get_srid.argtypes = [GEOM_PTR]
-geos_get_srid.restype = c_int
-
-geos_set_srid = lgeos.GEOSSetSRID
-geos_set_srid.argtypes = [GEOM_PTR, c_int]
-geos_set_srid.restype = None
diff --git a/webapp/django/contrib/gis/geos/prototypes/misc.py b/webapp/django/contrib/gis/geos/prototypes/misc.py
deleted file mode 100644
index 255da91..0000000
--- a/webapp/django/contrib/gis/geos/prototypes/misc.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""
- This module is for the miscellaneous GEOS routines, particularly the
- ones that return the area, distance, and length.
-"""
-from ctypes import c_int, c_double, POINTER
-from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import check_dbl
-
-### ctypes generator function ###
-def dbl_from_geom(func, num_geom=1):
-    """
-    Argument is a Geometry, return type is double that is passed
-    in by reference as the last argument.
-    """
-    argtypes = [GEOM_PTR for i in xrange(num_geom)]
-    argtypes += [POINTER(c_double)]
-    func.argtypes = argtypes
-    func.restype = c_int # Status code returned
-    func.errcheck = check_dbl
-    return func
-
-### ctypes prototypes ###
-
-# Area, distance, and length prototypes.
-geos_area = dbl_from_geom(lgeos.GEOSArea)
-geos_distance = dbl_from_geom(lgeos.GEOSDistance, num_geom=2)
-geos_length = dbl_from_geom(lgeos.GEOSLength)
diff --git a/webapp/django/contrib/gis/geos/prototypes/predicates.py b/webapp/django/contrib/gis/geos/prototypes/predicates.py
deleted file mode 100644
index 45240d9..0000000
--- a/webapp/django/contrib/gis/geos/prototypes/predicates.py
+++ /dev/null
@@ -1,43 +0,0 @@
-"""
- This module houses the GEOS ctypes prototype functions for the 
- unary and binary predicate operations on geometries.
-"""
-from ctypes import c_char, c_char_p, c_double
-from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import check_predicate
-
-## Binary & unary predicate functions ##
-def binary_predicate(func, *args):
-    "For GEOS binary predicate functions."
-    argtypes = [GEOM_PTR, GEOM_PTR]
-    if args: argtypes += args
-    func.argtypes = argtypes
-    func.restype = c_char
-    func.errcheck = check_predicate
-    return func
-
-def unary_predicate(func):
-    "For GEOS unary predicate functions."
-    func.argtypes = [GEOM_PTR]
-    func.restype = c_char
-    func.errcheck = check_predicate
-    return func
-
-## Unary Predicates ##
-geos_hasz = unary_predicate(lgeos.GEOSHasZ)
-geos_isempty = unary_predicate(lgeos.GEOSisEmpty)
-geos_isring = unary_predicate(lgeos.GEOSisRing)
-geos_issimple = unary_predicate(lgeos.GEOSisSimple)
-geos_isvalid = unary_predicate(lgeos.GEOSisValid)
-
-## Binary Predicates ##
-geos_contains = binary_predicate(lgeos.GEOSContains)
-geos_crosses = binary_predicate(lgeos.GEOSCrosses)
-geos_disjoint = binary_predicate(lgeos.GEOSDisjoint)
-geos_equals = binary_predicate(lgeos.GEOSEquals)
-geos_equalsexact = binary_predicate(lgeos.GEOSEqualsExact, c_double)
-geos_intersects = binary_predicate(lgeos.GEOSIntersects)
-geos_overlaps = binary_predicate(lgeos.GEOSOverlaps)
-geos_relatepattern = binary_predicate(lgeos.GEOSRelatePattern, c_char_p)
-geos_touches = binary_predicate(lgeos.GEOSTouches)
-geos_within = binary_predicate(lgeos.GEOSWithin)
diff --git a/webapp/django/contrib/gis/geos/prototypes/topology.py b/webapp/django/contrib/gis/geos/prototypes/topology.py
deleted file mode 100644
index 70cf900..0000000
--- a/webapp/django/contrib/gis/geos/prototypes/topology.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""
- This module houses the GEOS ctypes prototype functions for the 
- topological operations on geometries.
-"""
-from ctypes import c_char_p, c_double, c_int
-from django.contrib.gis.geos.libgeos import lgeos, GEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import check_geom, check_string
-
-def topology(func, *args):
-    "For GEOS unary topology functions."
-    argtypes = [GEOM_PTR]
-    if args: argtypes += args
-    func.argtypes = argtypes
-    func.restype = GEOM_PTR
-    func.errcheck = check_geom
-    return func
-
-### Topology Routines ###
-geos_boundary = topology(lgeos.GEOSBoundary)
-geos_buffer = topology(lgeos.GEOSBuffer, c_double, c_int)
-geos_centroid = topology(lgeos.GEOSGetCentroid)
-geos_convexhull = topology(lgeos.GEOSConvexHull)
-geos_difference = topology(lgeos.GEOSDifference, GEOM_PTR)
-geos_envelope = topology(lgeos.GEOSEnvelope)
-geos_intersection = topology(lgeos.GEOSIntersection, GEOM_PTR)
-geos_pointonsurface = topology(lgeos.GEOSPointOnSurface)
-geos_preservesimplify = topology(lgeos.GEOSTopologyPreserveSimplify, c_double)
-geos_simplify = topology(lgeos.GEOSSimplify, c_double)
-geos_symdifference = topology(lgeos.GEOSSymDifference, GEOM_PTR)
-geos_union = topology(lgeos.GEOSUnion, GEOM_PTR)
-
-# GEOSRelate returns a string, not a geometry.
-geos_relate = lgeos.GEOSRelate
-geos_relate.argtypes = [GEOM_PTR, GEOM_PTR]
-geos_relate.errcheck = check_string
diff --git a/webapp/django/contrib/gis/management/__init__.py b/webapp/django/contrib/gis/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/management/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/management/base.py b/webapp/django/contrib/gis/management/base.py
deleted file mode 100644
index c998063..0000000
--- a/webapp/django/contrib/gis/management/base.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from django.core.management.base import BaseCommand, CommandError
-
-class ArgsCommand(BaseCommand):
-    """
-    Command class for commands that take multiple arguments.
-    """
-    args = '<arg arg ...>'
-
-    def handle(self, *args, **options):
-        if not args:
-            raise CommandError('Must provide the following arguments: %s' % self.args)
-        return self.handle_args(*args, **options)
-
-    def handle_args(self, *args, **options):
-        raise NotImplementedError()
diff --git a/webapp/django/contrib/gis/management/commands/__init__.py b/webapp/django/contrib/gis/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/management/commands/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/management/commands/inspectdb.py b/webapp/django/contrib/gis/management/commands/inspectdb.py
deleted file mode 100644
index d4fe210..0000000
--- a/webapp/django/contrib/gis/management/commands/inspectdb.py
+++ /dev/null
@@ -1,188 +0,0 @@
-"""
- This overrides the traditional `inspectdb` command so that geographic databases
- may be introspected.
-"""
-
-from django.core.management.commands.inspectdb import Command as InspectCommand
-from django.contrib.gis.db.backend import SpatialBackend
-
-class Command(InspectCommand):
-
-    # Mapping from lower-case OGC type to the corresponding GeoDjango field.
-    geofield_mapping = {'point' : 'PointField',
-                        'linestring' : 'LineStringField',
-                        'polygon' : 'PolygonField',
-                        'multipoint' : 'MultiPointField',
-                        'multilinestring' : 'MultiLineStringField',
-                        'multipolygon' : 'MultiPolygonField',
-                        'geometrycollection' : 'GeometryCollectionField',
-                        'geometry' : 'GeometryField',
-                        }
-
-    def geometry_columns(self):
-        """
-        Returns a datastructure of metadata information associated with the
-        `geometry_columns` (or equivalent) table.
-        """
-        # The `geo_cols` is a dictionary data structure that holds information
-        # about any geographic columns in the database.
-        geo_cols = {}
-        def add_col(table, column, coldata):
-            if table in geo_cols:
-                # If table already has a geometry column.
-                geo_cols[table][column] = coldata
-            else:
-                # Otherwise, create a dictionary indexed by column.
-                geo_cols[table] = { column : coldata }
-
-        if SpatialBackend.name == 'postgis':
-            # PostGIS holds all geographic column information in the `geometry_columns` table.
-            from django.contrib.gis.models import GeometryColumns
-            for geo_col in GeometryColumns.objects.all():
-                table = geo_col.f_table_name
-                column = geo_col.f_geometry_column
-                coldata = {'type' : geo_col.type, 'srid' : geo_col.srid, 'dim' : geo_col.coord_dimension}
-                add_col(table, column, coldata)
-            return geo_cols
-        elif SpatialBackend.name == 'mysql':
-            # On MySQL have to get all table metadata before hand; this means walking through
-            # each table and seeing if any column types are spatial.  Can't detect this with
-            # `cursor.description` (what the introspection module does) because all spatial types
-            # have the same integer type (255 for GEOMETRY).
-            from django.db import connection
-            cursor = connection.cursor()
-            cursor.execute('SHOW TABLES')
-            tables = cursor.fetchall();
-            for table_tup in tables:
-                table = table_tup[0]
-                table_desc = cursor.execute('DESCRIBE `%s`' % table)
-                col_info = cursor.fetchall()
-                for column, typ, null, key, default, extra in col_info:
-                    if typ in self.geofield_mapping: add_col(table, column, {'type' : typ})
-            return geo_cols
-        else:
-            # TODO: Oracle (has incomplete `geometry_columns` -- have to parse
-            #  SDO SQL to get specific type, SRID, and other information).
-            raise NotImplementedError('Geographic database inspection not available.')
-
-    def handle_inspection(self):
-        "Overloaded from Django's version to handle geographic database tables."
-        from django.db import connection
-        import keyword
-
-        geo_cols = self.geometry_columns()
-
-        table2model = lambda table_name: table_name.title().replace('_', '')
-
-        cursor = connection.cursor()
-        yield "# This is an auto-generated Django model module."
-        yield "# You'll have to do the following manually to clean this up:"
-        yield "#     * Rearrange models' order"
-        yield "#     * Make sure each model has one field with primary_key=True"
-        yield "# Feel free to rename the models, but don't rename db_table values or field names."
-        yield "#"
-        yield "# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'"
-        yield "# into your database."
-        yield ''
-        yield 'from django.contrib.gis.db import models'
-        yield ''
-        for table_name in connection.introspection.get_table_list(cursor):
-            # Getting the geographic table dictionary.
-            geo_table = geo_cols.get(table_name, {})
-
-            yield 'class %s(models.Model):' % table2model(table_name)
-            try:
-                relations = connection.introspection.get_relations(cursor, table_name)
-            except NotImplementedError:
-                relations = {}
-            try:
-                indexes = connection.introspection.get_indexes(cursor, table_name)
-            except NotImplementedError:
-                indexes = {}
-            for i, row in enumerate(connection.introspection.get_table_description(cursor, table_name)):
-                att_name, iatt_name = row[0].lower(), row[0]
-                comment_notes = [] # Holds Field notes, to be displayed in a Python comment.
-                extra_params = {}  # Holds Field parameters such as 'db_column'.
-
-                if ' ' in att_name:
-                    extra_params['db_column'] = att_name
-                    att_name = att_name.replace(' ', '')
-                    comment_notes.append('Field renamed to remove spaces.')
-                if keyword.iskeyword(att_name):
-                    extra_params['db_column'] = att_name
-                    att_name += '_field'
-                    comment_notes.append('Field renamed because it was a Python reserved word.')
-
-                if i in relations:
-                    rel_to = relations[i][1] == table_name and "'self'" or table2model(relations[i][1])
-                    field_type = 'ForeignKey(%s' % rel_to
-                    if att_name.endswith('_id'):
-                        att_name = att_name[:-3]
-                    else:
-                        extra_params['db_column'] = att_name
-                else:
-                    if iatt_name in geo_table:
-                        ## Customization for Geographic Columns ##
-                        geo_col = geo_table[iatt_name]
-                        field_type = self.geofield_mapping[geo_col['type'].lower()]
-                        # Adding extra keyword arguments for the SRID and dimension (if not defaults).
-                        dim, srid = geo_col.get('dim', 2), geo_col.get('srid', 4326)
-                        if dim != 2: extra_params['dim'] = dim
-                        if srid != 4326: extra_params['srid'] = srid
-                    else:
-                        try:
-                            field_type = connection.introspection.data_types_reverse[row[1]]
-                        except KeyError:
-                            field_type = 'TextField'
-                            comment_notes.append('This field type is a guess.')
-
-                    # This is a hook for data_types_reverse to return a tuple of
-                    # (field_type, extra_params_dict).
-                    if type(field_type) is tuple:
-                        field_type, new_params = field_type
-                        extra_params.update(new_params)
-
-                    # Add max_length for all CharFields.
-                    if field_type == 'CharField' and row[3]:
-                        extra_params['max_length'] = row[3]
-
-                    if field_type == 'DecimalField':
-                        extra_params['max_digits'] = row[4]
-                        extra_params['decimal_places'] = row[5]
-
-                    # Add primary_key and unique, if necessary.
-                    column_name = extra_params.get('db_column', att_name)
-                    if column_name in indexes:
-                        if indexes[column_name]['primary_key']:
-                            extra_params['primary_key'] = True
-                        elif indexes[column_name]['unique']:
-                            extra_params['unique'] = True
-
-                    field_type += '('
-
-                # Don't output 'id = meta.AutoField(primary_key=True)', because
-                # that's assumed if it doesn't exist.
-                if att_name == 'id' and field_type == 'AutoField(' and extra_params == {'primary_key': True}:
-                    continue
-
-                # Add 'null' and 'blank', if the 'null_ok' flag was present in the
-                # table description.
-                if row[6]: # If it's NULL...
-                    extra_params['blank'] = True
-                    if not field_type in ('TextField(', 'CharField('):
-                        extra_params['null'] = True
-
-                field_desc = '%s = models.%s' % (att_name, field_type)
-                if extra_params:
-                    if not field_desc.endswith('('):
-                        field_desc += ', '
-                    field_desc += ', '.join(['%s=%r' % (k, v) for k, v in extra_params.items()])
-                field_desc += ')'
-                if comment_notes:
-                    field_desc += ' # ' + ' '.join(comment_notes)
-                yield '    %s' % field_desc
-            if table_name in geo_cols:
-                yield '    objects = models.GeoManager()'
-            yield '    class Meta:'
-            yield '        db_table = %r' % table_name
-            yield ''
diff --git a/webapp/django/contrib/gis/management/commands/ogrinspect.py b/webapp/django/contrib/gis/management/commands/ogrinspect.py
deleted file mode 100644
index aa4f418..0000000
--- a/webapp/django/contrib/gis/management/commands/ogrinspect.py
+++ /dev/null
@@ -1,119 +0,0 @@
-import os, sys
-from optparse import make_option
-from django.contrib.gis import gdal
-from django.contrib.gis.management.base import ArgsCommand, CommandError
-
-def layer_option(option, opt, value, parser):
-    """
-    Callback for `make_option` for the `ogrinspect` `layer_key`
-    keyword option which may be an integer or a string.
-    """
-    try:
-        dest = int(value)
-    except ValueError:
-        dest = value
-    setattr(parser.values, option.dest, dest)
-
-def list_option(option, opt, value, parser):
-    """
-    Callback for `make_option` for `ogrinspect` keywords that require
-    a string list.  If the string is 'True'/'true' then the option 
-    value will be a boolean instead.
-    """
-    if value.lower() == 'true':
-        dest = True
-    else:
-        dest = [s for s in value.split(',')]
-    setattr(parser.values, option.dest, dest)
-    
-class Command(ArgsCommand):
-    help = ('Inspects the given OGR-compatible data source (e.g., a shapefile) and outputs\n'
-            'a GeoDjango model with the given model name. For example:\n'
-            ' ./manage.py ogrinspect zipcode.shp Zipcode')
-    args = '[data_source] [model_name]'
-
-    option_list = ArgsCommand.option_list + (
-        make_option('--blank', dest='blank', type='string', action='callback',  
-                    callback=list_option, default=False,
-                    help='Use a comma separated list of OGR field names to add '
-                    'the `blank=True` option to the field definition.  Set with'
-                    '`true` to apply to all applicable fields.'),
-        make_option('--decimal', dest='decimal', type='string', action='callback', 
-                    callback=list_option, default=False,
-                    help='Use a comma separated list of OGR float fields to '
-                    'generate `DecimalField` instead of the default '
-                    '`FloatField`. Set to `true` to apply to all OGR float fields.'),
-        make_option('--geom-name', dest='geom_name', type='string', default='geom',
-                    help='Specifies the model name for the Geometry Field '
-                    '(defaults to `geom`)'),
-        make_option('--layer', dest='layer_key', type='string', action='callback', 
-                    callback=layer_option, default=0,
-                    help='The key for specifying which layer in the OGR data '
-                    'source to use. Defaults to 0 (the first layer). May be '
-                    'an integer or a string identifier for the layer.'),
-        make_option('--multi-geom', action='store_true', dest='multi_geom', default=False,
-                    help='Treat the geometry in the data source as a geometry collection.'),
-        make_option('--name-field', dest='name_field',
-                    help='Specifies a field name to return for the `__unicode__` function.'),
-        make_option('--no-imports', action='store_false', dest='imports', default=True,
-                    help='Do not include `from django.contrib.gis.db import models` '
-                    'statement.'),
-        make_option('--null', dest='null', type='string', action='callback',  
-                    callback=list_option, default=False,
-                    help='Use a comma separated list of OGR field names to add '
-                    'the `null=True` option to the field definition.  Set with'
-                    '`true` to apply to all applicable fields.'),
-        make_option('--srid', dest='srid',
-                    help='The SRID to use for the Geometry Field.  If it can be '
-                    'determined, the SRID of the data source is used.'),
-        make_option('--mapping', action='store_true', dest='mapping',
-                    help='Generate mapping dictionary for use with `LayerMapping`.')
-        )
-
-    requires_model_validation = False
-
-    def handle_args(self, *args, **options):
-        try:
-            data_source, model_name = args
-        except ValueError:
-            raise CommandError('Invalid arguments, must provide: %s' % self.args)
-
-        if not gdal.HAS_GDAL:
-            raise CommandError('GDAL is required to inspect geospatial data sources.')
-
-        # TODO: Support non file-based OGR datasources.
-        if not os.path.isfile(data_source):
-            raise CommandError('The given data source cannot be found: "%s"' % data_source)
-        
-        # Removing options with `None` values.
-        options = dict([(k, v) for k, v in options.items() if not v is None])
-
-        # Getting the OGR DataSource from the string parameter.
-        try:
-            ds = gdal.DataSource(data_source)
-        except gdal.OGRException, msg:
-            raise CommandError(msg)
-
-        # Whether the user wants to generate the LayerMapping dictionary as well.
-        show_mapping = options.pop('mapping', False)
-
-        # Returning the output of ogrinspect with the given arguments
-        # and options.
-        from django.contrib.gis.utils.ogrinspect import _ogrinspect, mapping
-        output = [s for s in _ogrinspect(ds, model_name, **options)]
-        if show_mapping:
-            # Constructing the keyword arguments for `mapping`, and
-            # calling it on the data source.
-            kwargs = {'geom_name' : options['geom_name'],
-                      'layer_key' : options['layer_key'],
-                      'multi_geom' : options['multi_geom'],
-                      }
-            mapping_dict = mapping(ds, **kwargs)
-            # This extra legwork is so that the dictionary definition comes
-            # out in the same order as the fields in the model definition.
-            rev_mapping = dict([(v, k) for k, v in mapping_dict.items()])
-            output.extend(['', '# Auto-generated `LayerMapping` dictionary for %s model' % model_name, 
-                           '%s_mapping = {' % model_name.lower()])
-            output.extend(["    '%s' : '%s'," % (rev_mapping[ogr_fld], ogr_fld) for ogr_fld in ds[options['layer_key']].fields])
-            output.extend(["    '%s' : '%s'," % (options['geom_name'], mapping_dict[options['geom_name']]), '}'])
-        return '\n'.join(output)
diff --git a/webapp/django/contrib/gis/maps/__init__.py b/webapp/django/contrib/gis/maps/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/maps/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/maps/google/__init__.py b/webapp/django/contrib/gis/maps/google/__init__.py
deleted file mode 100644
index dfbbedc..0000000
--- a/webapp/django/contrib/gis/maps/google/__init__.py
+++ /dev/null
@@ -1,61 +0,0 @@
-"""
-  This module houses the GoogleMap object, used for generating
-   the needed javascript to embed Google Maps in a webpage.
-
-  Google(R) is a registered trademark of Google, Inc. of Mountain View, California.
-
-  Example:
-
-   * In the view:
-      return render_to_response('template.html', {'google' : GoogleMap(key="abcdefg")})
-
-   * In the template:
-
-     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-     {{ google.xhtml }}
-     <head>
-       <title>Google Maps via GeoDjango</title>
-       {{ google.style }}
-       {{ google.scripts }}
-     </head>
-     {{ google.body }}
-     <div id="{{ google.dom_id }}" style="width:600px;height:400px;"></div>
-     </body>
-     </html>
-
-     Note:  If you want to be more explicit in your templates, the following are
-      equivalent:
-      {{ google.body }} => "<body {{ google.onload }} {{ google.onunload }}>"
-      {{ google.xhtml }} => "<html xmlns="http://www.w3.org/1999/xhtml" {{ google.xmlns }}>"
-      {{ google.style }} => "<style>{{ google.vml_css }}</style>"
-
-  Explanation:
-   - The `xhtml` property provides the correct XML namespace needed for 
-     Google Maps to operate in IE using XHTML.  Google Maps on IE uses
-     VML to draw polylines.  Returns, by default: 
-     <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
-       
-   - The `style` property provides the correct style tag for the CSS
-     properties required by Google Maps on IE:
-     <style type="text/css">v\:* {behavior:url(#default#VML);}</style>
-
-   - The `scripts` property provides the necessary <script> tags for 
-     including the Google Maps javascript, as well as including the
-     generated javascript.
-
-   - The `body` property provides the correct attributes for the 
-     body tag to load the generated javascript.  By default, returns:
-     <body onload="gmap_load()" onunload="GUnload()">
-
-   - The `dom_id` property returns the DOM id for the map.  Defaults to "map".
-
-  The following attributes may be set or customized in your local settings:
-   * GOOGLE_MAPS_API_KEY: String of your Google Maps API key.  These are tied to
-      to a domain.  May be obtained from http://www.google.com/apis/maps/
-   * GOOGLE_MAPS_API_VERSION (optional): Defaults to using "2.x"
-   * GOOGLE_MAPS_URL (optional): Must have a substitution ('%s') for the API
-      version.
-"""
-from django.contrib.gis.maps.google.gmap import GoogleMap
-from django.contrib.gis.maps.google.overlays import GEvent, GMarker, GPolygon, GPolyline
-from django.contrib.gis.maps.google.zoom import GoogleZoom
diff --git a/webapp/django/contrib/gis/maps/google/gmap.py b/webapp/django/contrib/gis/maps/google/gmap.py
deleted file mode 100644
index 580ab7a..0000000
--- a/webapp/django/contrib/gis/maps/google/gmap.py
+++ /dev/null
@@ -1,138 +0,0 @@
-from django.conf import settings
-from django.contrib.gis import geos
-from django.template.loader import render_to_string
-from django.utils.safestring import mark_safe
-
-class GoogleMapException(Exception): pass
-from django.contrib.gis.maps.google.overlays import GPolygon, GPolyline, GMarker
-
-# The default Google Maps URL (for the API javascript)
-# TODO: Internationalize for Japan, UK, etc.
-GOOGLE_MAPS_URL='http://maps.google.com/maps?file=api&amp;v=%s&amp;key='
-
-class GoogleMap(object):
-    "A class for generating Google Maps JavaScript."
-
-    # String constants
-    onunload = mark_safe('onunload="GUnload()"') # Cleans up after Google Maps
-    vml_css  = mark_safe('v\:* {behavior:url(#default#VML);}') # CSS for IE VML
-    xmlns    = mark_safe('xmlns:v="urn:schemas-microsoft-com:vml"') # XML Namespace (for IE VML).
-
-    def __init__(self, key=None, api_url=None, version=None, 
-                 center=None, zoom=None, dom_id='map', load_func='gmap_load', 
-                 kml_urls=[], polygons=[], polylines=[], markers=[],
-                 template='gis/google/js/google-map.js',
-                 extra_context={}):
-
-        # The Google Maps API Key defined in the settings will be used
-        #  if not passed in as a parameter.  The use of an API key is
-        #  _required_.
-        if not key:
-            try:
-                self.key = settings.GOOGLE_MAPS_API_KEY
-            except AttributeError:
-                raise GoogleMapException('Google Maps API Key not found (try adding GOOGLE_MAPS_API_KEY to your settings).')
-        else:
-            self.key = key
-        
-        # Getting the Google Maps API version, defaults to using the latest ("2.x"),
-        #  this is not necessarily the most stable.
-        if not version:
-            self.version = getattr(settings, 'GOOGLE_MAPS_API_VERSION', '2.x')
-        else:
-            self.version = version
-
-        # Can specify the API URL in the `api_url` keyword.
-        if not api_url:
-            self.api_url = mark_safe(getattr(settings, 'GOOGLE_MAPS_URL', GOOGLE_MAPS_URL) % self.version)
-        else:
-            self.api_url = api_url
-
-        # Setting the DOM id of the map, the load function, the JavaScript
-        # template, and the KML URLs array.
-        self.dom_id = dom_id
-        self.load_func = load_func
-        self.template = template
-        self.kml_urls = kml_urls
-        
-        # Does the user want any GMarker, GPolygon, and/or GPolyline overlays?
-        self.polygons, self.polylines, self.markers = [], [], []
-        if markers:
-            for point in markers:
-                if isinstance(point, GMarker): 
-                    self.markers.append(point)
-                else:
-                    self.markers.append(GMarker(point))
-        if polygons:
-            for poly in polygons:
-                if isinstance(poly, GPolygon): 
-                    self.polygons.append(poly)
-                else:
-                    self.polygons.append(GPolygon(poly))
-        if polylines:
-            for pline in polylines:
-                if isinstance(pline, GPolyline):
-                    self.polylines.append(pline)
-                else:
-                    self.polylines.append(GPolyline(pline))
-       
-        # If GMarker, GPolygons, and/or GPolylines 
-        # are used the zoom will be automatically
-        # calculated via the Google Maps API.  If both a zoom level and a
-        # center coordinate are provided with polygons/polylines, no automatic
-        # determination will occur.
-        self.calc_zoom = False
-        if self.polygons or self.polylines  or self.markers:
-            if center is None or zoom is None:
-                self.calc_zoom = True
-    
-        # Defaults for the zoom level and center coordinates if the zoom
-        # is not automatically calculated.
-        if zoom is None: zoom = 4
-        self.zoom = zoom
-        if center is None: center = (0, 0)
-        self.center = center
-
-        # Setting the parameters for the javascript template.
-        params = {'calc_zoom' : self.calc_zoom,
-                  'center' : self.center,
-                  'dom_id' : self.dom_id,
-                  'kml_urls' : self.kml_urls,
-                  'load_func' : self.load_func,
-                  'zoom' : self.zoom,
-                  'polygons' : self.polygons,
-                  'polylines' : self.polylines,
-                  'markers' : self.markers,
-                  }
-        params.update(extra_context)
-        self.js = render_to_string(self.template, params)
-
-    @property
-    def body(self):
-        "Returns HTML body tag for loading and unloading Google Maps javascript."
-        return mark_safe('<body %s %s>' % (self.onload, self.onunload))
-
-    @property
-    def onload(self):
-        "Returns the `onload` HTML <body> attribute."
-        return mark_safe('onload="%s()"' % self.load_func)
-
-    @property
-    def api_script(self):
-        "Returns the <script> tag for the Google Maps API javascript."
-        return mark_safe('<script src="%s%s" type="text/javascript"></script>' % (self.api_url, self.key))
-
-    @property
-    def scripts(self):
-        "Returns all <script></script> tags required for Google Maps JavaScript."
-        return mark_safe('%s\n  <script type="text/javascript">\n//<![CDATA[\n%s//]]>\n  </script>' % (self.api_script, self.js))
-
-    @property
-    def style(self):
-        "Returns additional CSS styling needed for Google Maps on IE."
-        return mark_safe('<style type="text/css">%s</style>' % self.vml_css)
-
-    @property
-    def xhtml(self):
-        "Returns XHTML information needed for IE VML overlays."
-        return mark_safe('<html xmlns="http://www.w3.org/1999/xhtml" %s>' % self.xmlns)
diff --git a/webapp/django/contrib/gis/maps/google/overlays.py b/webapp/django/contrib/gis/maps/google/overlays.py
deleted file mode 100644
index 0efedf3..0000000
--- a/webapp/django/contrib/gis/maps/google/overlays.py
+++ /dev/null
@@ -1,220 +0,0 @@
-from django.utils.safestring import mark_safe
-from django.contrib.gis.geos import fromstr, Point, LineString, LinearRing, Polygon
-
-class GEvent(object):
-    """
-    A Python wrapper for the Google GEvent object.
-
-    Events can be attached to any object derived from GOverlayBase with the
-    add_event() call.
-
-    For more information please see the Google Maps API Reference:
-     http://code.google.com/apis/maps/documentation/reference.html#GEvent
-
-    Example:
-
-      from django.shortcuts import render_to_response
-      from django.contrib.gis.maps.google import GoogleMap, GEvent, GPolyline
-
-      def sample_request(request):
-          polyline = GPolyline('LINESTRING(101 26, 112 26, 102 31)')
-          event = GEvent('click', 
-            'function() { location.href = "http://www.google.com"}')
-          polyline.add_event(event)
-          return render_to_response('mytemplate.html', 
-          {'google' : GoogleMap(polylines=[polyline])})
-    """
-
-    def __init__(self, event, action):
-        """
-        Initializes a GEvent object. 
-        
-        Parameters:
-
-        event: 
-          string for the event, such as 'click'. The event must be a valid
-          event for the object in the Google Maps API. 
-          There is no validation of the event type within Django.
-
-        action:
-          string containing a Javascript function, such as 
-          'function() { location.href = "newurl";}'
-          The string must be a valid Javascript function. Again there is no 
-          validation fo the function within Django.
-        """
-        self.event = event
-        self.action = action
-
-    def __unicode__(self):
-        "Returns the parameter part of a GEvent."
-        return mark_safe('"%s", %s' %(self.event, self.action))
-
-class GOverlayBase(object):
-    def __init__(self):
-        self.events = []
-
-    def latlng_from_coords(self, coords):
-        "Generates a JavaScript array of GLatLng objects for the given coordinates."
-        return '[%s]' % ','.join(['new GLatLng(%s,%s)' % (y, x) for x, y in coords])
-
-    def add_event(self, event):
-        "Attaches a GEvent to the overlay object."
-        self.events.append(event)
-
-    def __unicode__(self):
-        "The string representation is the JavaScript API call."
-        return mark_safe('%s(%s)' % (self.__class__.__name__, self.js_params))
-
-class GPolygon(GOverlayBase):
-    """
-    A Python wrapper for the Google GPolygon object.  For more information
-    please see the Google Maps API Reference:
-     http://code.google.com/apis/maps/documentation/reference.html#GPolygon
-    """
-    def __init__(self, poly, 
-                 stroke_color='#0000ff', stroke_weight=2, stroke_opacity=1,
-                 fill_color='#0000ff', fill_opacity=0.4):
-        """
-        The GPolygon object initializes on a GEOS Polygon or a parameter that
-        may be instantiated into GEOS Polygon.  Please note that this will not
-        depict a Polygon's internal rings.
-
-        Keyword Options:
-
-          stroke_color:
-            The color of the polygon outline. Defaults to '#0000ff' (blue).
-
-          stroke_weight:
-            The width of the polygon outline, in pixels.  Defaults to 2.
-
-          stroke_opacity:
-            The opacity of the polygon outline, between 0 and 1.  Defaults to 1.
-
-          fill_color:
-            The color of the polygon fill.  Defaults to '#0000ff' (blue).
-
-          fill_opacity:
-            The opacity of the polygon fill.  Defaults to 0.4.
-        """
-        if isinstance(poly, basestring): poly = fromstr(poly)
-        if isinstance(poly, (tuple, list)): poly = Polygon(poly)
-        if not isinstance(poly, Polygon): 
-            raise TypeError('GPolygon may only initialize on GEOS Polygons.')
-
-        # Getting the envelope of the input polygon (used for automatically
-        # determining the zoom level).
-        self.envelope = poly.envelope
-
-        # Translating the coordinates into a JavaScript array of 
-        # Google `GLatLng` objects.
-        self.points = self.latlng_from_coords(poly.shell.coords)
-
-        # Stroke settings.
-        self.stroke_color, self.stroke_opacity, self.stroke_weight = stroke_color, stroke_opacity, stroke_weight
-      
-        # Fill settings.
-        self.fill_color, self.fill_opacity = fill_color, fill_opacity
-       
-        super(GPolygon, self).__init__()
- 
-    @property
-    def js_params(self):
-        return '%s, "%s", %s, %s, "%s", %s' % (self.points, self.stroke_color, self.stroke_weight, self.stroke_opacity,
-                                               self.fill_color, self.fill_opacity)
-
-class GPolyline(GOverlayBase):
-    """
-    A Python wrapper for the Google GPolyline object.  For more information
-    please see the Google Maps API Reference:
-     http://code.google.com/apis/maps/documentation/reference.html#GPolyline
-    """
-    def __init__(self, geom, color='#0000ff', weight=2, opacity=1):
-        """
-        The GPolyline object may be initialized on GEOS LineStirng, LinearRing,
-        and Polygon objects (internal rings not supported) or a parameter that
-        may instantiated into one of the above geometries.
-
-        Keyword Options:
-          
-          color:
-            The color to use for the polyline.  Defaults to '#0000ff' (blue).
-  
-          weight:
-            The width of the polyline, in pixels.  Defaults to 2.
-
-          opacity:
-            The opacity of the polyline, between 0 and 1.  Defaults to 1.
-        """
-        # If a GEOS geometry isn't passed in, try to contsruct one.
-        if isinstance(geom, basestring): geom = fromstr(geom)
-        if isinstance(geom, (tuple, list)): geom = Polygon(geom)
-        # Generating the lat/lng coordinate pairs.
-        if isinstance(geom, (LineString, LinearRing)):
-            self.latlngs = self.latlng_from_coords(geom.coords)
-        elif isinstance(geom, Polygon):
-            self.latlngs = self.latlng_from_coords(geom.shell.coords)
-        else:
-            raise TypeError('GPolyline may only initialize on GEOS LineString, LinearRing, and/or Polygon geometries.')
-
-        # Getting the envelope for automatic zoom determination.
-        self.envelope = geom.envelope
-        self.color, self.weight, self.opacity = color, weight, opacity
-        super(GPolyline, self).__init__()
-        
-    @property
-    def js_params(self):
-        return '%s, "%s", %s, %s' % (self.latlngs, self.color, self.weight, self.opacity)
-
-class GMarker(GOverlayBase):
-    """
-    A Python wrapper for the Google GMarker object.  For more information
-    please see the Google Maps API Reference:
-     http://code.google.com/apis/maps/documentation/reference.html#GMarker
-
-    Example:
-
-      from django.shortcuts import render_to_response
-      from django.contrib.gis.maps.google.overlays import GMarker, GEvent
-     
-      def sample_request(request):
-          marker = GMarker('POINT(101 26)')
-          event = GEvent('click', 
-                         'function() { location.href = "http://www.google.com"}')
-          marker.add_event(event)
-          return render_to_response('mytemplate.html', 
-                 {'google' : GoogleMap(markers=[marker])})
-    """
-    def __init__(self, geom, title=None):
-        """
-        The GMarker object may initialize on GEOS Points or a parameter
-        that may be instantiated into a GEOS point.  Keyword options map to
-        GMarkerOptions -- so far only the title option is supported.
-
-        Keyword Options:
-         title: 
-           Title option for GMarker, will be displayed as a tooltip.
-        """
-        # If a GEOS geometry isn't passed in, try to construct one.
-        if isinstance(geom, basestring): geom = fromstr(geom)
-        if isinstance(geom, (tuple, list)): geom = Point(geom)
-        if isinstance(geom, Point):
-            self.latlng = self.latlng_from_coords(geom.coords)
-        else:
-            raise TypeError('GMarker may only initialize on GEOS Point geometry.')
-        # Getting the envelope for automatic zoom determination.
-        self.envelope = geom.envelope
-        # TODO: Add support for more GMarkerOptions
-        self.title = title
-        super(GMarker, self).__init__()
-
-    def latlng_from_coords(self, coords):
-        return 'new GLatLng(%s,%s)' %(coords[1], coords[0])
-    
-    def options(self):
-        result = []
-        if self.title: result.append('title: "%s"' % self.title) 
-        return '{%s}' % ','.join(result)
-
-    @property
-    def js_params(self):
-        return '%s, %s' % (self.latlng, self.options())
diff --git a/webapp/django/contrib/gis/maps/google/zoom.py b/webapp/django/contrib/gis/maps/google/zoom.py
deleted file mode 100644
index abc3fbf..0000000
--- a/webapp/django/contrib/gis/maps/google/zoom.py
+++ /dev/null
@@ -1,161 +0,0 @@
-from django.contrib.gis.geos import GEOSGeometry, LinearRing, Polygon, Point
-from django.contrib.gis.maps.google.gmap import GoogleMapException
-from math import pi, sin, cos, log, exp, atan
-
-# Constants used for degree to radian conversion, and vice-versa.
-DTOR = pi / 180.
-RTOD = 180. / pi
-
-class GoogleZoom(object):
-    """
-    GoogleZoom is a utility for performing operations related to the zoom
-    levels on Google Maps.
-
-    This class is inspired by the OpenStreetMap Mapnik tile generation routine
-    `generate_tiles.py`, and the article "How Big Is the World" (Hack #16) in
-    "Google Maps Hacks" by Rich Gibson and Schuyler Erle.
-
-    `generate_tiles.py` may be found at:
-      http://trac.openstreetmap.org/browser/applications/rendering/mapnik/generate_tiles.py
-
-    "Google Maps Hacks" may be found at http://safari.oreilly.com/0596101619
-    """
-    
-    def __init__(self, num_zoom=19, tilesize=256):
-        "Initializes the Google Zoom object."
-        # Google's tilesize is 256x256, square tiles are assumed.
-        self._tilesize = tilesize
-        
-        # The number of zoom levels
-        self._nzoom = num_zoom
-
-        # Initializing arrays to hold the parameters for each one of the 
-        # zoom levels.
-        self._degpp = [] # Degrees per pixel
-        self._radpp = [] # Radians per pixel
-        self._npix  = [] # 1/2 the number of pixels for a tile at the given zoom level
-        
-        # Incrementing through the zoom levels and populating the parameter arrays.
-        z = tilesize # The number of pixels per zoom level.
-        for i in xrange(num_zoom):
-            # Getting the degrees and radians per pixel, and the 1/2 the number of
-            # for every zoom level.
-            self._degpp.append(z / 360.) # degrees per pixel
-            self._radpp.append(z / (2 * pi)) # radians per pixl
-            self._npix.append(z / 2) # number of pixels to center of tile
-
-            # Multiplying `z` by 2 for the next iteration.
-            z *= 2
-
-    def __len__(self):
-        "Returns the number of zoom levels."
-        return self._nzoom
-
-    def get_lon_lat(self, lonlat):
-        "Unpacks longitude, latitude from GEOS Points and 2-tuples."
-        if isinstance(lonlat, Point):
-            lon, lat = lonlat.coords
-        else:
-            lon, lat = lonlat
-        return lon, lat
-
-    def lonlat_to_pixel(self, lonlat, zoom):
-        "Converts a longitude, latitude coordinate pair for the given zoom level."
-        # Setting up, unpacking the longitude, latitude values and getting the
-        # number of pixels for the given zoom level.
-        lon, lat = self.get_lon_lat(lonlat)
-        npix = self._npix[zoom]
-
-        # Calculating the pixel x coordinate by multiplying the longitude value
-        # with with the number of degrees/pixel at the given zoom level.
-        px_x = round(npix + (lon * self._degpp[zoom]))
-
-        # Creating the factor, and ensuring that 1 or -1 is not passed in as the 
-        # base to the logarithm.  Here's why:
-        #  if fac = -1, we'll get log(0) which is undefined; 
-        #  if fac =  1, our logarithm base will be divided by 0, also undefined.
-        fac = min(max(sin(DTOR * lat), -0.9999), 0.9999)
-
-        # Calculating the pixel y coordinate.
-        px_y = round(npix + (0.5 * log((1 + fac)/(1 - fac)) * (-1.0 * self._radpp[zoom])))
-
-        # Returning the pixel x, y to the caller of the function.
-        return (px_x, px_y)
-
-    def pixel_to_lonlat(self, px, zoom):
-        "Converts a pixel to a longitude, latitude pair at the given zoom level."
-        if len(px) != 2:
-            raise TypeError('Pixel should be a sequence of two elements.')
-
-        # Getting the number of pixels for the given zoom level.
-        npix = self._npix[zoom]
-
-        # Calculating the longitude value, using the degrees per pixel.
-        lon = (px[0] - npix) / self._degpp[zoom]
-
-        # Calculating the latitude value.
-        lat = RTOD * ( 2 * atan(exp((px[1] - npix)/ (-1.0 * self._radpp[zoom]))) - 0.5 * pi)
-
-        # Returning the longitude, latitude coordinate pair.
-        return (lon, lat)
-    
-    def tile(self, lonlat, zoom):
-        """
-        Returns a Polygon  corresponding to the region represented by a fictional
-        Google Tile for the given longitude/latitude pair and zoom level. This
-        tile is used to determine the size of a tile at the given point.
-        """
-        # The given lonlat is the center of the tile.
-        delta = self._tilesize / 2
-
-        # Getting the pixel coordinates corresponding to the
-        # the longitude/latitude.
-        px = self.lonlat_to_pixel(lonlat, zoom)
-
-        # Getting the lower-left and upper-right lat/lon coordinates
-        # for the bounding box of the tile.
-        ll = self.pixel_to_lonlat((px[0]-delta, px[1]-delta), zoom)
-        ur = self.pixel_to_lonlat((px[0]+delta, px[1]+delta), zoom)
-
-        # Constructing the Polygon, representing the tile and returning.
-        return Polygon(LinearRing(ll, (ll[0], ur[1]), ur, (ur[0], ll[1]), ll), srid=4326)
-        
-    def get_zoom(self, geom):
-        "Returns the optimal Zoom level for the given geometry."
-        # Checking the input type.
-        if not isinstance(geom, GEOSGeometry) or geom.srid != 4326:
-            raise TypeError('get_zoom() expects a GEOS Geometry with an SRID of 4326.')
-
-        # Getting the envelope for the geometry, and its associated width, height
-        # and centroid.
-        env = geom.envelope
-        env_w, env_h = self.get_width_height(env.extent)
-        center = env.centroid
-
-        for z in xrange(self._nzoom):
-            # Getting the tile at the zoom level.
-            tile_w, tile_h = self.get_width_height(self.tile(center, z).extent)
-
-            # When we span more than one tile, this is an approximately good
-            # zoom level.
-            if (env_w > tile_w) or (env_h > tile_h):
-                if z == 0: 
-                    raise GoogleMapException('Geometry width and height should not exceed that of the Earth.')
-                return z-1
-        
-        # Otherwise, we've zoomed in to the max.
-        return self._nzoom-1
-
-    def get_width_height(self, extent):
-        """
-        Returns the width and height for the given extent.
-        """
-        # Getting the lower-left, upper-left, and upper-right
-        # coordinates from the extent.
-        ll = Point(extent[:2])
-        ul = Point(extent[0], extent[3])
-        ur = Point(extent[2:])
-        # Calculating the width and height.
-        height = ll.distance(ul)
-        width  = ul.distance(ur)
-        return width, height
diff --git a/webapp/django/contrib/gis/maps/openlayers/__init__.py b/webapp/django/contrib/gis/maps/openlayers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/maps/openlayers/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/measure.py b/webapp/django/contrib/gis/measure.py
deleted file mode 100644
index 42c49ce..0000000
--- a/webapp/django/contrib/gis/measure.py
+++ /dev/null
@@ -1,329 +0,0 @@
-# Copyright (c) 2007, Robert Coup <robert.coup@onetrackmind.co.nz>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-#   1. Redistributions of source code must retain the above copyright notice,
-#      this list of conditions and the following disclaimer.
-#
-#   2. Redistributions in binary form must reproduce the above copyright
-#      notice, this list of conditions and the following disclaimer in the
-#      documentation and/or other materials provided with the distribution.
-#
-#   3. Neither the name of Distance nor the names of its contributors may be used
-#      to endorse or promote products derived from this software without
-#      specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-"""
-Distance and Area objects to allow for sensible and convienient calculation 
-and conversions.
-
-Authors: Robert Coup, Justin Bronn
-
-Inspired by GeoPy (http://exogen.case.edu/projects/geopy/)
-and Geoff Biggs' PhD work on dimensioned units for robotics.
-"""
-__all__ = ['A', 'Area', 'D', 'Distance']
-from decimal import Decimal
-
-class MeasureBase(object):
-    def default_units(self, kwargs):
-        """
-        Return the unit value and the the default units specified
-        from the given keyword arguments dictionary.
-        """
-        val = 0.0
-        for unit, value in kwargs.iteritems():
-            if unit in self.UNITS:
-                val += self.UNITS[unit] * value
-                default_unit = unit
-            elif unit in self.ALIAS:
-                u = self.ALIAS[unit]
-                val += self.UNITS[u] * value
-                default_unit = u
-            else:
-                lower = unit.lower()
-                if lower in self.UNITS:
-                    val += self.UNITS[lower] * value
-                    default_unit = lower
-                elif lower in self.LALIAS:
-                    u = self.LALIAS[lower]
-                    val += self.UNITS[u] * value
-                    default_unit = u
-                else:
-                    raise AttributeError('Unknown unit type: %s' % unit)
-        return val, default_unit
-
-    @classmethod
-    def unit_attname(cls, unit_str):
-        """
-        Retrieves the unit attribute name for the given unit string.  
-        For example, if the given unit string is 'metre', 'm' would be returned.
-        An exception is raised if an attribute cannot be found.
-        """
-        lower = unit_str.lower()
-        if unit_str in cls.UNITS:
-            return unit_str
-        elif lower in cls.UNITS:
-            return lower
-        elif lower in cls.LALIAS:
-            return cls.LALIAS[lower]
-        else:
-            raise Exception('Could not find a unit keyword associated with "%s"' % unit_str)
-
-class Distance(MeasureBase):
-    UNITS = {
-        'chain' : 20.1168,
-        'chain_benoit' : 20.116782,
-        'chain_sears' : 20.1167645,
-        'british_chain_benoit' : 20.1167824944,
-        'british_chain_sears' : 20.1167651216,
-        'british_chain_sears_truncated' : 20.116756,
-        'cm' : 0.01,
-        'british_ft' : 0.304799471539,
-        'british_yd' : 0.914398414616,
-        'clarke_ft' : 0.3047972654,
-        'clarke_link' : 0.201166195164,
-        'fathom' :  1.8288,
-        'ft': 0.3048,
-        'german_m' : 1.0000135965,
-        'gold_coast_ft' : 0.304799710181508,
-        'indian_yd' : 0.914398530744,
-        'inch' : 0.0254,
-        'km': 1000.0,
-        'link' : 0.201168,
-        'link_benoit' : 0.20116782,
-        'link_sears' : 0.20116765,
-        'm': 1.0,
-        'mi': 1609.344,
-        'mm' : 0.001,
-        'nm': 1852.0,
-        'nm_uk' : 1853.184,
-        'rod' : 5.0292,
-        'sears_yd' : 0.91439841,
-        'survey_ft' : 0.304800609601,
-        'um' : 0.000001,
-        'yd': 0.9144,
-        }
-
-    # Unit aliases for `UNIT` terms encountered in Spatial Reference WKT.
-    ALIAS = {
-        'centimeter' : 'cm',
-        'foot' : 'ft',
-        'inches' : 'inch',
-        'kilometer' : 'km',
-        'kilometre' : 'km',
-        'meter' : 'm',
-        'metre' : 'm',
-        'micrometer' : 'um',
-        'micrometre' : 'um',
-        'millimeter' : 'mm',
-        'millimetre' : 'mm',
-        'mile' : 'mi',
-        'yard' : 'yd',
-        'British chain (Benoit 1895 B)' : 'british_chain_benoit',
-        'British chain (Sears 1922)' : 'british_chain_sears',
-        'British chain (Sears 1922 truncated)' : 'british_chain_sears_truncated',
-        'British foot (Sears 1922)' : 'british_ft',
-        'British foot' : 'british_ft',
-        'British yard (Sears 1922)' : 'british_yd',
-        'British yard' : 'british_yd',
-        "Clarke's Foot" : 'clarke_ft',
-        "Clarke's link" : 'clarke_link',
-        'Chain (Benoit)' : 'chain_benoit',
-        'Chain (Sears)' : 'chain_sears',
-        'Foot (International)' : 'ft',
-        'German legal metre' : 'german_m',
-        'Gold Coast foot' : 'gold_coast_ft',
-        'Indian yard' : 'indian_yd',
-        'Link (Benoit)': 'link_benoit',
-        'Link (Sears)': 'link_sears',
-        'Nautical Mile' : 'nm',
-        'Nautical Mile (UK)' : 'nm_uk',
-        'US survey foot' : 'survey_ft',
-        'U.S. Foot' : 'survey_ft',
-        'Yard (Indian)' : 'indian_yd',
-        'Yard (Sears)' : 'sears_yd'
-        }
-    LALIAS = dict([(k.lower(), v) for k, v in ALIAS.items()])
-
-    def __init__(self, default_unit=None, **kwargs):
-        # The base unit is in meters.
-        self.m, self._default_unit = self.default_units(kwargs)
-        if default_unit and isinstance(default_unit, str):
-            self._default_unit = default_unit
-    
-    def __getattr__(self, name):
-        if name in self.UNITS:
-            return self.m / self.UNITS[name]
-        else:
-            raise AttributeError('Unknown unit type: %s' % name)
-    
-    def __repr__(self):
-        return 'Distance(%s=%s)' % (self._default_unit, getattr(self, self._default_unit))
-
-    def __str__(self):
-        return '%s %s' % (getattr(self, self._default_unit), self._default_unit)
-        
-    def __cmp__(self, other):
-        if isinstance(other, Distance):
-            return cmp(self.m, other.m)
-        else:
-            return NotImplemented
-        
-    def __add__(self, other):
-        if isinstance(other, Distance):
-            return Distance(default_unit=self._default_unit, m=(self.m + other.m))
-        else:
-            raise TypeError('Distance must be added with Distance')
-    
-    def __iadd__(self, other):
-        if isinstance(other, Distance):
-            self.m += other.m
-            return self
-        else:
-            raise TypeError('Distance must be added with Distance')
-    
-    def __sub__(self, other):
-        if isinstance(other, Distance):
-            return Distance(default_unit=self._default_unit, m=(self.m - other.m))
-        else:
-            raise TypeError('Distance must be subtracted from Distance')
-    
-    def __isub__(self, other):
-        if isinstance(other, Distance):
-            self.m -= other.m
-            return self
-        else:
-            raise TypeError('Distance must be subtracted from Distance')
-    
-    def __mul__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            return Distance(default_unit=self._default_unit, m=(self.m * float(other)))
-        elif isinstance(other, Distance):
-            return Area(default_unit='sq_' + self._default_unit, sq_m=(self.m * other.m))
-        else:
-            raise TypeError('Distance must be multiplied with number or Distance')
-    
-    def __imul__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            self.m *= float(other)
-            return self
-        else:
-            raise TypeError('Distance must be multiplied with number')
-    
-    def __div__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            return Distance(default_unit=self._default_unit, m=(self.m / float(other)))
-        else:
-            raise TypeError('Distance must be divided with number')
-
-    def __idiv__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            self.m /= float(other)
-            return self
-        else:
-            raise TypeError('Distance must be divided with number')
-
-    def __nonzero__(self):
-        return bool(self.m)
-
-class Area(MeasureBase):
-    # Getting the square units values and the alias dictionary.
-    UNITS = dict([('sq_%s' % k, v ** 2) for k, v in Distance.UNITS.items()])
-    ALIAS = dict([(k, 'sq_%s' % v) for k, v in Distance.ALIAS.items()])
-    LALIAS = dict([(k.lower(), v) for k, v in ALIAS.items()])
-
-    def __init__(self, default_unit=None, **kwargs):
-        self.sq_m, self._default_unit = self.default_units(kwargs)
-        if default_unit and isinstance(default_unit, str):
-            self._default_unit = default_unit
-    
-    def __getattr__(self, name):
-        if name in self.UNITS:
-            return self.sq_m / self.UNITS[name]
-        else:
-            raise AttributeError('Unknown unit type: ' + name)
-    
-    def __repr__(self):
-        return 'Area(%s=%s)' % (self._default_unit, getattr(self, self._default_unit))
-
-    def __str__(self):
-        return '%s %s' % (getattr(self, self._default_unit), self._default_unit)
-
-    def __cmp__(self, other):
-        if isinstance(other, Area):
-            return cmp(self.sq_m, other.sq_m)
-        else:
-            return NotImplemented
-        
-    def __add__(self, other):
-        if isinstance(other, Area):
-            return Area(default_unit=self._default_unit, sq_m=(self.sq_m + other.sq_m))
-        else:
-            raise TypeError('Area must be added with Area')
-    
-    def __iadd__(self, other):
-        if isinstance(other, Area):
-            self.sq_m += other.sq_m
-            return self
-        else:
-            raise TypeError('Area must be added with Area')
-    
-    def __sub__(self, other):
-        if isinstance(other, Area):
-            return Area(default_unit=self._default_unit, sq_m=(self.sq_m - other.sq_m))
-        else:
-            raise TypeError('Area must be subtracted from Area')
-    
-    def __isub__(self, other):
-        if isinstance(other, Area):
-            self.sq_m -= other.sq_m
-            return self
-        else:
-            raise TypeError('Area must be subtracted from Area')
-    
-    def __mul__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            return Area(default_unit=self._default_unit, sq_m=(self.sq_m * float(other)))
-        else:
-            raise TypeError('Area must be multiplied with number')
-    
-    def __imul__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            self.sq_m *= float(other)
-            return self
-        else:
-            raise TypeError('Area must be multiplied with number')
-    
-    def __div__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            return Area(default_unit=self._default_unit, sq_m=(self.sq_m / float(other)))
-        else:
-            raise TypeError('Area must be divided with number')
-
-    def __idiv__(self, other):
-        if isinstance(other, (int, float, long, Decimal)):
-            self.sq_m /= float(other)
-            return self
-        else:
-            raise TypeError('Area must be divided with number')
-
-    def __nonzero__(self):
-        return bool(self.sq_m)
-        
-# Shortcuts
-D = Distance
-A = Area
diff --git a/webapp/django/contrib/gis/models.py b/webapp/django/contrib/gis/models.py
deleted file mode 100644
index 4453dd8..0000000
--- a/webapp/django/contrib/gis/models.py
+++ /dev/null
@@ -1,283 +0,0 @@
-"""
- Imports the SpatialRefSys and GeometryColumns models dependent on the
- spatial database backend.
-"""
-import re
-from django.conf import settings
-
-# Checking for the presence of GDAL (needed for the SpatialReference object)
-from django.contrib.gis.gdal import HAS_GDAL, PYTHON23
-if HAS_GDAL:
-    from django.contrib.gis.gdal import SpatialReference
-
-class SpatialRefSysMixin(object):
-    """
-    The SpatialRefSysMixin is a class used by the database-dependent
-    SpatialRefSys objects to reduce redundnant code.
-    """
-
-    # For pulling out the spheroid from the spatial reference string. This
-    # regular expression is used only if the user does not have GDAL installed.
-    #  TODO: Flattening not used in all ellipsoids, could also be a minor axis, or 'b'
-    #        parameter.
-    spheroid_regex = re.compile(r'.+SPHEROID\[\"(?P<name>.+)\",(?P<major>\d+(\.\d+)?),(?P<flattening>\d{3}\.\d+),')
-
-    # For pulling out the units on platforms w/o GDAL installed.
-    # TODO: Figure out how to pull out angular units of projected coordinate system and
-    # fix for LOCAL_CS types.  GDAL should be highly recommended for performing 
-    # distance queries.
-    units_regex = re.compile(r'.+UNIT ?\["(?P<unit_name>[\w \'\(\)]+)", ?(?P<unit>[\d\.]+)(,AUTHORITY\["(?P<unit_auth_name>[\w \'\(\)]+)","(?P<unit_auth_val>\d+)"\])?\]([\w ]+)?(,AUTHORITY\["(?P<auth_name>[\w \'\(\)]+)","(?P<auth_val>\d+)"\])?\]$')
-    
-    def srs(self):
-        """
-        Returns a GDAL SpatialReference object, if GDAL is installed.
-        """
-        if HAS_GDAL:
-            if hasattr(self, '_srs'):
-                # Returning a clone of the cached SpatialReference object.
-                return self._srs.clone()
-            else:
-                # Attempting to cache a SpatialReference object.
-
-                # Trying to get from WKT first.
-                try:
-                    self._srs = SpatialReference(self.wkt)
-                    return self.srs
-                except Exception, msg:
-                    pass
-                
-                raise Exception('Could not get OSR SpatialReference from WKT: %s\nError:\n%s' % (self.wkt, msg))
-        else:
-            raise Exception('GDAL is not installed.')
-    srs = property(srs)
-
-    def ellipsoid(self):
-        """
-        Returns a tuple of the ellipsoid parameters:
-        (semimajor axis, semiminor axis, and inverse flattening).
-        """
-        if HAS_GDAL:
-            return self.srs.ellipsoid
-        else:
-            m = self.spheroid_regex.match(self.wkt)
-            if m: return (float(m.group('major')), float(m.group('flattening')))
-            else: return None
-    ellipsoid = property(ellipsoid)
-
-    def name(self):
-        "Returns the projection name."
-        return self.srs.name
-    name = property(name)
-
-    def spheroid(self):
-        "Returns the spheroid name for this spatial reference."
-        return self.srs['spheroid']
-    spheroid = property(spheroid)
-
-    def datum(self):
-        "Returns the datum for this spatial reference."
-        return self.srs['datum']
-    datum = property(datum)
-
-    def projected(self):
-        "Is this Spatial Reference projected?"
-        if HAS_GDAL:
-            return self.srs.projected
-        else:
-            return self.wkt.startswith('PROJCS')
-    projected = property(projected)
-
-    def local(self):
-        "Is this Spatial Reference local?"
-        if HAS_GDAL:
-            return self.srs.local
-        else:
-            return self.wkt.startswith('LOCAL_CS')
-    local = property(local)
-
-    def geographic(self):
-        "Is this Spatial Reference geographic?"
-        if HAS_GDAL:
-            return self.srs.geographic
-        else:
-            return self.wkt.startswith('GEOGCS')
-    geographic = property(geographic)
-
-    def linear_name(self):
-        "Returns the linear units name."
-        if HAS_GDAL:
-            return self.srs.linear_name
-        elif self.geographic: 
-            return None
-        else:
-            m = self.units_regex.match(self.wkt)
-            return m.group('unit_name')
-    linear_name = property(linear_name)
-
-    def linear_units(self):
-        "Returns the linear units."
-        if HAS_GDAL:
-            return self.srs.linear_units
-        elif self.geographic:
-            return None
-        else:
-            m = self.units_regex.match(self.wkt)
-            return m.group('unit')
-    linear_units = property(linear_units)
-
-    def angular_name(self):
-        "Returns the name of the angular units."
-        if HAS_GDAL:
-            return self.srs.angular_name
-        elif self.projected:
-            return None
-        else:
-            m = self.units_regex.match(self.wkt)
-            return m.group('unit_name')
-    angular_name = property(angular_name)
-
-    def angular_units(self):
-        "Returns the angular units."
-        if HAS_GDAL:
-            return self.srs.angular_units
-        elif self.projected:
-            return None
-        else:
-            m = self.units_regex.match(self.wkt)
-            return m.group('unit')
-    angular_units = property(angular_units)
-
-    def units(self):
-        "Returns a tuple of the units and the name."
-        if self.projected or self.local:
-            return (self.linear_units, self.linear_name)
-        elif self.geographic:
-            return (self.angular_units, self.angular_name)
-        else:
-            return (None, None)
-    units = property(units)
-
-    def get_units(cls, wkt):
-        """
-        Class method used by GeometryField on initialization to
-        retrive the units on the given WKT, without having to use
-        any of the database fields.
-        """
-        if HAS_GDAL:
-            return SpatialReference(wkt).units
-        else:
-            m = cls.units_regex.match(wkt)
-            return m.group('unit'), m.group('unit_name')
-    get_units = classmethod(get_units)
-
-    def get_spheroid(cls, wkt, string=True):
-        """
-        Class method used by GeometryField on initialization to
-        retrieve the `SPHEROID[..]` parameters from the given WKT.
-        """
-        if HAS_GDAL:
-            srs = SpatialReference(wkt)
-            sphere_params = srs.ellipsoid
-            sphere_name = srs['spheroid']
-        else:
-            m = cls.spheroid_regex.match(wkt)
-            if m: 
-                sphere_params = (float(m.group('major')), float(m.group('flattening')))
-                sphere_name = m.group('name')
-            else: 
-                return None
-        
-        if not string: 
-            return sphere_name, sphere_params
-        else:
-            # `string` parameter used to place in format acceptable by PostGIS
-            if len(sphere_params) == 3:
-                radius, flattening = sphere_params[0], sphere_params[2]
-            else:
-                radius, flattening = sphere_params
-            return 'SPHEROID["%s",%s,%s]' % (sphere_name, radius, flattening) 
-    get_spheroid = classmethod(get_spheroid)
-
-    def __unicode__(self):
-        """
-        Returns the string representation.  If GDAL is installed,
-        it will be 'pretty' OGC WKT.
-        """
-        try:
-            return unicode(self.srs)
-        except:
-            return unicode(self.wkt)
-
-# The SpatialRefSys and GeometryColumns models
-_srid_info = True
-if not PYTHON23 and settings.DATABASE_ENGINE == 'postgresql_psycopg2':
-    # Because the PostGIS version is checked when initializing the spatial 
-    # backend a `ProgrammingError` will be raised if the PostGIS tables 
-    # and functions are not installed.  We catch here so it won't be raised when 
-    # running the Django test suite.  `ImportError` is also possible if no ctypes.
-    try:
-        from django.contrib.gis.db.backend.postgis.models import GeometryColumns, SpatialRefSys
-    except:
-        _srid_info = False
-elif not PYTHON23 and settings.DATABASE_ENGINE == 'oracle':
-    # Same thing as above, except the GEOS library is attempted to be loaded for
-    # `BaseSpatialBackend`, and an exception will be raised during the
-    # Django test suite if it doesn't exist.
-    try:
-        from django.contrib.gis.db.backend.oracle.models import GeometryColumns, SpatialRefSys
-    except:
-        _srid_info = False
-else:
-    _srid_info = False
-
-if _srid_info:
-    def get_srid_info(srid):
-        """
-        Returns the units, unit name, and spheroid WKT associated with the
-        given SRID from the `spatial_ref_sys` (or equivalent) spatial database
-        table.  We use a database cursor to execute the query because this
-        function is used when it is not possible to use the ORM (for example,
-        during field initialization).
-        """
-        # SRID=-1 is a common convention for indicating the geometry has no
-        # spatial reference information associated with it.  Thus, we will
-        # return all None values without raising an exception.
-        if srid == -1: return None, None, None
-
-        # Getting the spatial reference WKT associated with the SRID from the
-        # `spatial_ref_sys` (or equivalent) spatial database table. This query
-        # cannot be executed using the ORM because this information is needed
-        # when the ORM cannot be used (e.g., during the initialization of 
-        # `GeometryField`).
-        from django.db import connection
-        cur = connection.cursor()
-        qn = connection.ops.quote_name
-        stmt = 'SELECT %(table)s.%(wkt_col)s FROM %(table)s WHERE (%(table)s.%(srid_col)s = %(srid)s)'
-        stmt = stmt % {'table' : qn(SpatialRefSys._meta.db_table),
-                       'wkt_col' : qn(SpatialRefSys.wkt_col()),
-                       'srid_col' : qn('srid'),
-                       'srid' : srid,
-                       }
-        cur.execute(stmt)
-        
-        # Fetching the WKT from the cursor; if the query failed raise an Exception.
-        fetched = cur.fetchone()
-        if not fetched:
-            raise ValueError('Failed to find spatial reference entry in "%s" corresponding to SRID=%s.' % 
-                             (SpatialRefSys._meta.db_table, srid))
-        srs_wkt = fetched[0]
-
-        # Getting metadata associated with the spatial reference system identifier.
-        # Specifically, getting the unit information and spheroid information 
-        # (both required for distance queries).
-        unit, unit_name = SpatialRefSys.get_units(srs_wkt)
-        spheroid = SpatialRefSys.get_spheroid(srs_wkt)
-        return unit, unit_name, spheroid
-else:
-    def get_srid_info(srid):
-        """
-        Dummy routine for the backends that do not have the OGC required
-        spatial metadata tables (like MySQL).
-        """
-        return None, None, None
-   
diff --git a/webapp/django/contrib/gis/shortcuts.py b/webapp/django/contrib/gis/shortcuts.py
deleted file mode 100644
index 5310e58..0000000
--- a/webapp/django/contrib/gis/shortcuts.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import cStringIO, zipfile
-from django.http import HttpResponse
-from django.template import loader
-
-def compress_kml(kml):
-    "Returns compressed KMZ from the given KML string."
-    kmz = cStringIO.StringIO()
-    zf = zipfile.ZipFile(kmz, 'a', zipfile.ZIP_DEFLATED, False)
-    zf.writestr('doc.kml', kml)
-    zf.close()
-    kmz.seek(0)
-    return kmz.read()
-
-def render_to_kml(*args, **kwargs):
-    "Renders the response as KML (using the correct MIME type)."
-    return HttpResponse(loader.render_to_string(*args, **kwargs),
-                        mimetype='application/vnd.google-earth.kml+xml kml')
-
-def render_to_kmz(*args, **kwargs):
-    """
-    Compresses the KML content and returns as KMZ (using the correct 
-    MIME type).
-    """
-    return HttpResponse(compress_kml(loader.render_to_string(*args, **kwargs)),
-                        mimetype='application/vnd.google-earth.kmz')
-
-
-def render_to_text(*args, **kwargs):
-    "Renders the response using the MIME type for plain text."
-    return HttpResponse(loader.render_to_string(*args, **kwargs),
-                        mimetype='text/plain')
diff --git a/webapp/django/contrib/gis/sitemaps/__init__.py b/webapp/django/contrib/gis/sitemaps/__init__.py
deleted file mode 100644
index 9b6287f..0000000
--- a/webapp/django/contrib/gis/sitemaps/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Geo-enabled Sitemap classes.
-from django.contrib.gis.sitemaps.georss import GeoRSSSitemap
-from django.contrib.gis.sitemaps.kml import KMLSitemap, KMZSitemap
-
diff --git a/webapp/django/contrib/gis/sitemaps/georss.py b/webapp/django/contrib/gis/sitemaps/georss.py
deleted file mode 100644
index 45c97fb..0000000
--- a/webapp/django/contrib/gis/sitemaps/georss.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from django.core import urlresolvers
-from django.contrib.sitemaps import Sitemap
-
-class GeoRSSSitemap(Sitemap):
-    """
-    A minimal hook to produce sitemaps for GeoRSS feeds.
-    """
-    def __init__(self, feed_dict, slug_dict=None):
-        """
-        This sitemap object initializes on a feed dictionary (as would be passed
-        to `django.contrib.syndication.views.feed`) and a slug dictionary.  
-        If the slug dictionary is not defined, then it's assumed the keys provide
-        the URL parameter to the feed.  However, if you have a complex feed (e.g.,
-        you override `get_object`, then you'll need to provide a slug dictionary.
-        The slug dictionary should have the same keys as the feed dictionary, but 
-        each value in the slug dictionary should be a sequence of slugs that may 
-        be used for valid feeds.  For example, let's say we have a feed that 
-        returns objects for a specific ZIP code in our feed dictionary:
-
-            feed_dict = {'zipcode' : ZipFeed}
-
-        Then we would use a slug dictionary with a list of the zip code slugs
-        corresponding to feeds you want listed in the sitemap:
-
-            slug_dict = {'zipcode' : ['77002', '77054']}
-        """
-        # Setting up.
-        self.feed_dict = feed_dict
-        self.locations = []
-        if slug_dict is None: slug_dict = {}
-        # Getting the feed locations.
-        for section in feed_dict.keys():
-            if slug_dict.get(section, False):
-                for slug in slug_dict[section]:
-                    self.locations.append(('%s/%s' % (section, slug)))
-            else:
-                self.locations.append(section)
- 
-    def get_urls(self, page=1):
-        """
-        This method is overrridden so the appropriate `geo_format` attribute
-        is placed on each URL element.
-        """
-        urls = Sitemap.get_urls(self)
-        for url in urls: url['geo_format'] = 'georss'
-        return urls
-
-    def items(self):
-        return self.locations
-
-    def location(self, obj):
-        return urlresolvers.reverse('django.contrib.syndication.views.feed',
-                                    args=(obj,), kwargs={'feed_dict' : self.feed_dict})
diff --git a/webapp/django/contrib/gis/sitemaps/kml.py b/webapp/django/contrib/gis/sitemaps/kml.py
deleted file mode 100644
index d85744f..0000000
--- a/webapp/django/contrib/gis/sitemaps/kml.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from django.core import urlresolvers
-from django.contrib.sitemaps import Sitemap
-from django.contrib.gis.db.models.fields import GeometryField
-from django.db import models
-
-class KMLSitemap(Sitemap):
-    """
-    A minimal hook to produce KML sitemaps.
-    """
-    geo_format = 'kml'
-
-    def __init__(self, locations=None):
-        # If no locations specified, then we try to build for
-        # every model in installed applications.
-        self.locations = self._build_kml_sources(locations)
-        
-    def _build_kml_sources(self, sources):
-        """
-        Goes through the given sources and returns a 3-tuple of
-        the application label, module name, and field name of every
-        GeometryField encountered in the sources.
-
-        If no sources are provided, then all models.
-        """
-        kml_sources = []
-        if sources is None:
-            sources = models.get_models()
-        for source in sources:
-            if isinstance(source, models.base.ModelBase):
-                for field in source._meta.fields:
-                    if isinstance(field, GeometryField):
-                        kml_sources.append((source._meta.app_label,
-                                            source._meta.module_name,
-                                            field.name))
-            elif isinstance(source, (list, tuple)):
-                if len(source) != 3: 
-                    raise ValueError('Must specify a 3-tuple of (app_label, module_name, field_name).')
-                kml_sources.append(source)
-            else:
-                raise TypeError('KML Sources must be a model or a 3-tuple.')
-        return kml_sources
-
-    def get_urls(self, page=1):
-        """
-        This method is overrridden so the appropriate `geo_format` attribute
-        is placed on each URL element.
-        """
-        urls = Sitemap.get_urls(self, page=page)
-        for url in urls: url['geo_format'] = self.geo_format
-        return urls
-
-    def items(self):
-        return self.locations
-
-    def location(self, obj):
-        return urlresolvers.reverse('django.contrib.gis.sitemaps.views.%s' % self.geo_format,
-                                    kwargs={'label' : obj[0], 
-                                            'model' : obj[1],
-                                            'field_name': obj[2],
-                                            }
-                                    )
-class KMZSitemap(KMLSitemap):
-    geo_format = 'kmz'
diff --git a/webapp/django/contrib/gis/sitemaps/views.py b/webapp/django/contrib/gis/sitemaps/views.py
deleted file mode 100644
index d20f7c6..0000000
--- a/webapp/django/contrib/gis/sitemaps/views.py
+++ /dev/null
@@ -1,102 +0,0 @@
-from django.http import HttpResponse, Http404
-from django.template import loader
-from django.contrib.gis.db.backend import SpatialBackend
-from django.contrib.sites.models import Site
-from django.core import urlresolvers
-from django.core.paginator import EmptyPage, PageNotAnInteger
-from django.db.models import get_model
-from django.utils.encoding import smart_str
-
-from django.contrib.gis.shortcuts import render_to_kml, render_to_kmz
-
-class KMLNotFound(Exception):
-    pass
-
-def index(request, sitemaps):
-    """
-    This view generates a sitemap index that uses the proper view
-    for resolving geographic section sitemap URLs.
-    """
-    current_site = Site.objects.get_current()
-    sites = []
-    protocol = request.is_secure() and 'https' or 'http'
-    for section, site in sitemaps.items():
-        if callable(site):
-            pages = site().paginator.num_pages
-        else:
-            pages = site.paginator.num_pages
-        sitemap_url = urlresolvers.reverse('django.contrib.gis.sitemaps.views.sitemap', kwargs={'section': section})
-        sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url))
-      
-        if pages > 1:
-            for page in range(2, pages+1):
-                sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))
-    xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
-    return HttpResponse(xml, mimetype='application/xml')
-
-def sitemap(request, sitemaps, section=None):
-    """
-    This view generates a sitemap with additional geographic
-    elements defined by Google.
-    """
-    maps, urls = [], []
-    if section is not None:
-        if section not in sitemaps:
-            raise Http404("No sitemap available for section: %r" % section)
-        maps.append(sitemaps[section])
-    else:
-        maps = sitemaps.values()
-
-    page = request.GET.get("p", 1)
-    for site in maps:
-        try:
-            if callable(site):
-                urls.extend(site().get_urls(page))
-            else:
-                urls.extend(site.get_urls(page))
-        except EmptyPage:
-            raise Http404("Page %s empty" % page)
-        except PageNotAnInteger:
-            raise Http404("No page '%s'" % page)
-    xml = smart_str(loader.render_to_string('gis/sitemaps/geo_sitemap.xml', {'urlset': urls}))
-    return HttpResponse(xml, mimetype='application/xml')
-
-def kml(request, label, model, field_name=None, compress=False):
-    """
-    This view generates KML for the given app label, model, and field name.
-
-    The model's default manager must be GeoManager, and the field name
-    must be that of a geographic field.
-    """
-    placemarks = []
-    klass = get_model(label, model)
-    if not klass:
-        raise KMLNotFound("You must supply a valid app.model label.  Got %s.%s" % (label, model))
-
-    if SpatialBackend.postgis:
-        # PostGIS will take care of transformation.
-        placemarks = klass._default_manager.kml(field_name=field_name)
-    else:
-        # There's no KML method on Oracle or MySQL, so we use the `kml`
-        # attribute of the lazy geometry instead.
-        placemarks = []
-        if SpatialBackend.oracle:
-            qs = klass._default_manager.transform(4326, field_name=field_name)
-        else:
-            qs = klass._default_manager.all()
-        for mod in qs:
-            setattr(mod, 'kml', getattr(mod, field_name).kml)
-            placemarks.append(mod)
-
-    # Getting the render function and rendering to the correct.
-    if compress:
-        render = render_to_kmz
-    else:
-        render = render_to_kml
-    return render('gis/kml/placemarks.kml', {'places' : placemarks})
-
-def kmz(request, label, model, field_name=None):
-    """
-    This view returns KMZ for the given app label, model, and field name.
-    """
-    return kml(request, label, model, field_name, True)
diff --git a/webapp/django/contrib/gis/templates/gis/admin/openlayers.html b/webapp/django/contrib/gis/templates/gis/admin/openlayers.html
deleted file mode 100644
index acf82b2..0000000
--- a/webapp/django/contrib/gis/templates/gis/admin/openlayers.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{% block extrastyle %}
-<style type="text/css">
-  #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; }
-  #{{ id }}_map .aligned label { float:inherit; }
-  #{{ id }}_admin_map { position: relative; vertical-align: top; float: left; }
-  {% if not display_wkt %}#{{ id }} { display: none; }{% endif %}
-  .olControlEditingToolbar .olControlModifyFeatureItemActive { 
-     background-image: url("{{ admin_media_prefix }}img/gis/move_vertex_on.png");
-     background-repeat: no-repeat;
-  }
-  .olControlEditingToolbar .olControlModifyFeatureItemInactive { 
-     background-image: url("{{ admin_media_prefix }}img/gis/move_vertex_off.png");
-     background-repeat: no-repeat;
-  }
-</style>
-<!--[if IE]>
-<style type="text/css">
-  /* This fixes the the mouse offset issues in IE. */
-  #{{ id }}_admin_map { position: static; vertical-align: top; }
-  /* `font-size: 0` fixes the 1px border between tiles, but borks LayerSwitcher.
-      Thus, this is disabled until a better fix is found.
-  #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; font-size: 0; } */
-</style>
-<![endif]-->
-{% endblock %}
-<span id="{{ id }}_admin_map">
-<script type="text/javascript">
-//<![CDATA[
-{% block openlayers %}{% include "gis/admin/openlayers.js" %}{% endblock %}
-//]]>
-</script>
-<div id="{{ id }}_map"></div>
-<a href="javascript:{{ module }}.clearFeatures()">Delete all Features</a>
-{% if display_wkt %}<p> WKT debugging window:</p>{% endif %}
-<textarea id="{{ id }}" class="vWKTField required" cols="150" rows="10" name="{{ field_name }}">{{ wkt }}</textarea>
-<script type="text/javascript">{% block init_function %}{{ module }}.init();{% endblock %}</script>
-</span>
diff --git a/webapp/django/contrib/gis/templates/gis/admin/openlayers.js b/webapp/django/contrib/gis/templates/gis/admin/openlayers.js
deleted file mode 100644
index 7194261..0000000
--- a/webapp/django/contrib/gis/templates/gis/admin/openlayers.js
+++ /dev/null
@@ -1,157 +0,0 @@
-{# Author: Justin Bronn, Travis Pinney & Dane Springmeyer #}
-{% block vars %}var {{ module }} = {};
-{{ module }}.map = null; {{ module }}.controls = null; {{ module }}.panel = null; {{ module }}.re = new RegExp("^SRID=\d+;(.+)", "i"); {{ module }}.layers = {}; 
-{{ module }}.wkt_f = new OpenLayers.Format.WKT();
-{{ module }}.is_collection = {% if is_collection %}true{% else %}false{% endif %};
-{{ module }}.collection_type = '{{ collection_type }}';
-{{ module }}.is_linestring = {% if is_linestring %}true{% else %}false{% endif %};
-{{ module }}.is_polygon = {% if is_polygon %}true{% else %}false{% endif %};
-{{ module }}.is_point = {% if is_point %}true{% else %}false{% endif %};
-{% endblock %}
-{{ module }}.get_ewkt = function(feat){return 'SRID={{ srid }};' + {{ module }}.wkt_f.write(feat);}
-{{ module }}.read_wkt = function(wkt){
-  // OpenLayers cannot handle EWKT -- we make sure to strip it out.
-  // EWKT is only exposed to OL if there's a validation error in the admin.
-  var match = {{ module }}.re.exec(wkt);
-  if (match){wkt = match[1];}
-  return {{ module }}.wkt_f.read(wkt);
-}
-{{ module }}.write_wkt = function(feat){
-  if ({{ module }}.is_collection){ {{ module }}.num_geom = feat.geometry.components.length;}
-  else { {{ module }}.num_geom = 1;}
-  document.getElementById('{{ id }}').value = {{ module }}.get_ewkt(feat);
-}
-{{ module }}.add_wkt = function(event){
-  // This function will sync the contents of the `vector` layer with the
-  // WKT in the text field.
-  if ({{ module }}.is_collection){
-    var feat = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.{{ geom_type }}());
-    for (var i = 0; i < {{ module }}.layers.vector.features.length; i++){
-      feat.geometry.addComponents([{{ module }}.layers.vector.features[i].geometry]);
-    }
-    {{ module }}.write_wkt(feat);
-  } else {
-    // Make sure to remove any previously added features.
-    if ({{ module }}.layers.vector.features.length > 1){
-      old_feats = [{{ module }}.layers.vector.features[0]];
-      {{ module }}.layers.vector.removeFeatures(old_feats);
-      {{ module }}.layers.vector.destroyFeatures(old_feats);
-    }
-    {{ module }}.write_wkt(event.feature);
-  }
-}
-{{ module }}.modify_wkt = function(event){
-  if ({{ module }}.is_collection){
-    if ({{ module }}.is_point){
-      {{ module }}.add_wkt(event); 
-      return;
-    } else {
-      // When modifying the selected components are added to the 
-      // vector layer so we only increment to the `num_geom` value.
-      var feat = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.{{ geom_type }}());
-      for (var i = 0; i < {{ module }}.num_geom; i++){
-	feat.geometry.addComponents([{{ module }}.layers.vector.features[i].geometry]);
-      }
-      {{ module }}.write_wkt(feat);
-    }
-  } else {
-    {{ module }}.write_wkt(event.feature);
-  }
-}
-// Function to clear vector features and purge wkt from div
-{{ module }}.deleteFeatures = function(){
-  {{ module }}.layers.vector.removeFeatures({{ module }}.layers.vector.features);
-  {{ module }}.layers.vector.destroyFeatures();
-}
-{{ module }}.clearFeatures = function (){
-  {{ module }}.deleteFeatures();
-  document.getElementById('{{ id }}').value = '';
-  {{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }});
-}
-// Add Select control
-{{ module }}.addSelectControl = function(){   
-  var select = new OpenLayers.Control.SelectFeature({{ module }}.layers.vector, {'toggle' : true, 'clickout' : true});
-  {{ module }}.map.addControl(select);
-  select.activate();
-}
-{{ module }}.enableDrawing = function(){ {{ module }}.map.getControlsByClass('OpenLayers.Control.DrawFeature')[0].activate();}
-{{ module }}.enableEditing = function(){ {{ module }}.map.getControlsByClass('OpenLayers.Control.ModifyFeature')[0].activate();}
-// Create an array of controls based on geometry type
-{{ module }}.getControls = function(lyr){
-  {{ module }}.panel = new OpenLayers.Control.Panel({'displayClass': 'olControlEditingToolbar'});
-  var nav = new OpenLayers.Control.Navigation();
-  var draw_ctl;
-  if ({{ module }}.is_linestring){
-    draw_ctl = new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Path, {'displayClass': 'olControlDrawFeaturePath'});
-  } else if ({{ module }}.is_polygon){
-    draw_ctl = new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Polygon, {'displayClass': 'olControlDrawFeaturePolygon'});
-  } else if ({{ module }}.is_point){
-    draw_ctl = new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'});
-  }
-  {% if modifiable %}
-  var mod = new OpenLayers.Control.ModifyFeature(lyr, {'displayClass': 'olControlModifyFeature'});
-  {{ module }}.controls = [nav, draw_ctl, mod];
-  {% else %}
-  {{ module }}.controls = [nav, darw_ctl];
-  {% endif %}  
-}
-{{ module }}.init = function(){
-    {% block map_options %}// The options hash, w/ zoom, resolution, and projection settings.
-    var options = { 
-{% autoescape off %}{% for item in map_options.items %}      '{{ item.0 }}' : {{ item.1 }}{% if not forloop.last %},{% endif %}
-{% endfor %}{% endautoescape %}    };{% endblock %}
-    // The admin map for this geometry field.
-    {{ module }}.map = new OpenLayers.Map('{{ id }}_map', options);
-    // Base Layer
-    {{ module }}.layers.base = {% block base_layer %}new OpenLayers.Layer.WMS( "{{ wms_name }}", "{{ wms_url }}", {layers: '{{ wms_layer }}'} );{% endblock %}
-    {{ module }}.map.addLayer({{ module }}.layers.base);
-    {% block extra_layers %}{% endblock %}
-    {% if is_linestring %}OpenLayers.Feature.Vector.style["default"]["strokeWidth"] = 3; // Default too thin for linestrings. {% endif %}
-    {{ module }}.layers.vector = new OpenLayers.Layer.Vector(" {{ field_name }}");
-    {{ module }}.map.addLayer({{ module }}.layers.vector);
-    // Read WKT from the text field.
-    var wkt = document.getElementById('{{ id }}').value;
-    if (wkt){
-      // After reading into geometry, immediately write back to 
-      // WKT <textarea> as EWKT (so that SRID is included).
-      var admin_geom = {{ module }}.read_wkt(wkt);
-      {{ module }}.write_wkt(admin_geom);
-      if ({{ module }}.is_collection){
-	// If geometry collection, add each component individually so they may be
-	// edited individually.
-	for (var i = 0; i < {{ module }}.num_geom; i++){
-	  {{ module }}.layers.vector.addFeatures([new OpenLayers.Feature.Vector(admin_geom.geometry.components[i].clone())]);
-	}
-      } else {
-	{{ module }}.layers.vector.addFeatures([admin_geom]);
-      }
-      // Zooming to the bounds.
-      {{ module }}.map.zoomToExtent(admin_geom.geometry.getBounds());
-    } else {
-      {{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }});
-    }
-    // This allows editing of the geographic fields -- the modified WKT is
-    // written back to the content field (as EWKT, so that the ORM will know
-    // to transform back to original SRID). 
-    {{ module }}.layers.vector.events.on({"featuremodified" : {{ module }}.modify_wkt});
-    {{ module }}.layers.vector.events.on({"featureadded" : {{ module }}.add_wkt});
-    {% block controls %}
-    // Map controls:
-    // Add geometry specific panel of toolbar controls
-    {{ module }}.getControls({{ module }}.layers.vector);
-    {{ module }}.panel.addControls({{ module }}.controls);
-    {{ module }}.map.addControl({{ module }}.panel);
-    {{ module }}.addSelectControl();
-    // Then add optional visual controls
-    {% if mouse_position %}{{ module }}.map.addControl(new OpenLayers.Control.MousePosition());{% endif %}
-    {% if scale_text %}{{ module }}.map.addControl(new OpenLayers.Control.Scale());{% endif %}
-    {% if layerswitcher %}{{ module }}.map.addControl(new OpenLayers.Control.LayerSwitcher());{% endif %}
-    // Then add optional behavior controls
-    {% if scrollable %}{% else %}{{ module }}.map.getControlsByClass('OpenLayers.Control.Navigation')[0].disableZoomWheel();{% endif %}
-    {% endblock %}
-    if (wkt){
-      {{ module }}.enableEditing();
-    } else {
-      {{ module }}.enableDrawing();
-    }
-}
diff --git a/webapp/django/contrib/gis/templates/gis/admin/osm.html b/webapp/django/contrib/gis/templates/gis/admin/osm.html
deleted file mode 100644
index b74b41f..0000000
--- a/webapp/django/contrib/gis/templates/gis/admin/osm.html
+++ /dev/null
@@ -1,2 +0,0 @@
-{% extends "gis/admin/openlayers.html" %}
-{% block openlayers %}{% include "gis/admin/osm.js" %}{% endblock %}
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/templates/gis/admin/osm.js b/webapp/django/contrib/gis/templates/gis/admin/osm.js
deleted file mode 100644
index 2a1f59e..0000000
--- a/webapp/django/contrib/gis/templates/gis/admin/osm.js
+++ /dev/null
@@ -1,2 +0,0 @@
-{% extends "gis/admin/openlayers.js" %}
-{% block base_layer %}new OpenLayers.Layer.OSM.Mapnik("OpenStreetMap (Mapnik)");{% endblock %}
diff --git a/webapp/django/contrib/gis/templates/gis/google/js/google-map.js b/webapp/django/contrib/gis/templates/gis/google/js/google-map.js
deleted file mode 100644
index 5efdf90..0000000
--- a/webapp/django/contrib/gis/templates/gis/google/js/google-map.js
+++ /dev/null
@@ -1,34 +0,0 @@
-{% autoescape off %}{% block vars %}var map;{% endblock %}
-{% block functions %}{% endblock %}
-{% block load %}function {{ load_func }}(){
-  if (GBrowserIsCompatible()) {
-    map = new GMap2(document.getElementById("{{ dom_id }}"));
-    map.setCenter(new GLatLng({{ center.1 }}, {{ center.0 }}), {{ zoom }});
-    {% block controls %}map.addControl(new GSmallMapControl());
-    map.addControl(new GMapTypeControl());{% endblock %}
-    {% if calc_zoom %}var bounds = new GLatLngBounds(); var tmp_bounds = new GLatLngBounds();{% endif %}
-    {% for kml_url in kml_urls %}var kml{{ forloop.counter }} = new GGeoXml("{{ kml_url }}");
-    map.addOverlay(kml{{ forloop.counter }});{% endfor %}
-
-    {% for polygon in polygons %}var poly{{ forloop.counter }} = new {{ polygon }};
-    map.addOverlay(poly{{ forloop.counter }});
-    {% for event in polygon.events %}GEvent.addListener(poly{{ forloop.parentloop.counter }}, {{ event }});{% endfor %}
-    {% if calc_zoom %}tmp_bounds = poly{{ forloop.counter }}.getBounds(); bounds.extend(tmp_bounds.getSouthWest()); bounds.extend(tmp_bounds.getNorthEast());{% endif %}{% endfor %}
-
-    {% for polyline in polylines %}var polyline{{ forloop.counter }} = new {{ polyline }};
-    map.addOverlay(polyline{{ forloop.counter }});
-    {% for event in polyline.events %}GEvent.addListener(polyline{{ forloop.parentloop.counter }}, {{ event }}); {% endfor %}
-    {% if calc_zoom %}tmp_bounds = polyline{{ forloop.counter }}.getBounds(); bounds.extend(tmp_bounds.getSouthWest()); bounds.extend(tmp_bounds.getNorthEast());{% endif %}{% endfor %}
-    
-    {% for marker in markers %}var marker{{ forloop.counter }} = new {{ marker }};
-    map.addOverlay(marker{{ forloop.counter }});
-    {% for event in marker.events %}GEvent.addListener(marker{{ forloop.parentloop.counter }}, {{ event }}); {% endfor %}
-    {% if calc_zoom %}bounds.extend(marker{{ forloop.counter }}.getLatLng()); {% endif %}{% endfor %}
-
-    {% if calc_zoom %}map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));{% endif %}
-    {% block load_extra %}{% endblock %}
-  }else {
-    alert("Sorry, the Google Maps API is not compatible with this browser.");
-  }
-}
-{% endblock %}{% endautoescape %}
diff --git a/webapp/django/contrib/gis/templates/gis/kml/base.kml b/webapp/django/contrib/gis/templates/gis/kml/base.kml
deleted file mode 100644
index 374404c3..0000000
--- a/webapp/django/contrib/gis/templates/gis/kml/base.kml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<kml xmlns="http://earth.google.com/kml/{% block kml_version %}2.1{% endblock %}">
-<Document>{% block name %}{% endblock %}
-{% block placemarks %}{% endblock %}
-</Document>
-</kml>
diff --git a/webapp/django/contrib/gis/templates/gis/kml/placemarks.kml b/webapp/django/contrib/gis/templates/gis/kml/placemarks.kml
deleted file mode 100644
index ea2ac19..0000000
--- a/webapp/django/contrib/gis/templates/gis/kml/placemarks.kml
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "gis/kml/base.kml" %}
-{% block placemarks %}{% for place in places %}
-  <Placemark>
-    <name>{% if place.name %}{{ place.name }}{% else %}{{ place }}{% endif %}</name>
-    <description>{% if place.description %}{{ place.description }}{% else %}{{ place }}{% endif %}</description>
-    {{ place.kml|safe }}
-  </Placemark>{% endfor %}{% endblock %}
-
diff --git a/webapp/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml b/webapp/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml
deleted file mode 100644
index dbf858e..0000000
--- a/webapp/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-{% autoescape off %}<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:geo="http://www.google.com/geo/schemas/sitemap/1.0">
-{% spaceless %}
-{% for url in urlset %}
-  <url>
-    <loc>{{ url.location|escape }}</loc>
-    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
-    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
-    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
-    {% if url.geo_format %}<geo:geo>
-      <geo:format>{{ url.geo_format }}</geo:format>
-    </geo:geo>{% endif %}
-   </url>
-{% endfor %}
-{% endspaceless %}
-</urlset>
-{% endautoescape %}
diff --git a/webapp/django/contrib/gis/tests/__init__.py b/webapp/django/contrib/gis/tests/__init__.py
deleted file mode 100644
index 8aa3820..0000000
--- a/webapp/django/contrib/gis/tests/__init__.py
+++ /dev/null
@@ -1,202 +0,0 @@
-import sys, unittest
-
-from django.conf import settings
-from django.db import connection
-from django.db.models import get_app, get_apps, loading
-from django.test.simple import build_suite, build_test
-from django.test.utils import setup_test_environment, teardown_test_environment
-
-def geo_suite():
-    """
-    Builds a test suite for the GIS package.  This is not named
-    `suite` so it will not interfere with the Django test suite (since
-    spatial database tables are required to execute these tests on
-    some backends).
-    """
-    from django.contrib.gis.tests.utils import mysql, oracle, postgis
-    from django.contrib.gis.gdal import HAS_GDAL
-    from django.contrib.gis.utils import HAS_GEOIP
-
-    # Tests that require use of a spatial database (e.g., creation of models)
-    test_models = ['geoapp',]
-
-    # Tests that do not require setting up and tearing down a spatial database.
-    test_suite_names = [
-        'test_geos',
-        'test_measure',
-        ]
-    if HAS_GDAL:
-        if oracle:
-            # TODO: There's a problem with `select_related` and GeoQuerySet on
-            # Oracle -- e.g., GeoModel.objects.distance(geom, field_name='fk__point')
-            # doesn't work so we don't test `relatedapp`.
-            test_models += ['distapp', 'layermap']
-        elif postgis:
-            test_models += ['distapp', 'layermap', 'relatedapp']
-        elif mysql:
-            test_models += ['relatedapp']
-
-        test_suite_names += [
-            'test_gdal_driver',
-            'test_gdal_ds',
-            'test_gdal_envelope',
-            'test_gdal_geom',
-            'test_gdal_srs',
-            'test_spatialrefsys',
-            ]
-    else:
-        print >>sys.stderr, "GDAL not available - no GDAL tests will be run."
-
-    if HAS_GEOIP and hasattr(settings, 'GEOIP_PATH'):
-        test_suite_names.append('test_geoip')
-
-    s = unittest.TestSuite()
-    for test_suite in test_suite_names:
-        tsuite = getattr(__import__('django.contrib.gis.tests', globals(), locals(), [test_suite]),test_suite)
-        s.addTest(tsuite.suite())
-    return s, test_models
-
-def run_gis_tests(test_labels, **kwargs):
-    """
-    Use this routine as the TEST_RUNNER in your settings in order to run the
-    GeoDjango test suite.  This must be done as a database superuser for
-    PostGIS, so read the docstring in `run_test()` below for more details.
-    """
-    from django.contrib.gis.tests.utils import mysql
-
-    # Getting initial values.
-    old_installed = settings.INSTALLED_APPS
-    old_root_urlconf = settings.ROOT_URLCONF
-
-    # Based on ALWAYS_INSTALLED_APPS from django test suite --
-    # this prevents us from creating tables in our test database
-    # from locally installed apps.
-    new_installed =  ['django.contrib.contenttypes',
-                      'django.contrib.auth',
-                      'django.contrib.sites',
-                      'django.contrib.sitemaps',
-                      'django.contrib.flatpages',
-                      'django.contrib.gis',
-                      'django.contrib.redirects',
-                      'django.contrib.sessions',
-                      'django.contrib.comments',
-                      'django.contrib.admin',
-                      ]
-
-    # Setting the URLs.
-    settings.ROOT_URLCONF = 'django.contrib.gis.tests.urls'
-
-    # Creating the test suite, adding the test models to INSTALLED_APPS, and
-    # adding the model test suites to our suite package.
-    gis_suite, test_models = geo_suite()
-    for test_model in test_models:
-        module_name = 'django.contrib.gis.tests.%s' % test_model
-        if mysql:
-            test_module_name = 'tests_mysql'
-        else:
-            test_module_name = 'tests'
-        new_installed.append(module_name)
-
-        # Getting the model test suite
-        tsuite = getattr(__import__('django.contrib.gis.tests.%s' % test_model, globals(), locals(), [test_module_name]), 
-                         test_module_name)
-        gis_suite.addTest(tsuite.suite())
-
-    # Resetting the loaded flag to take into account what we appended to 
-    # the INSTALLED_APPS (since this routine is invoked through 
-    # django/core/management, it caches the apps; this ensures that syncdb 
-    # will see our appended models)
-    settings.INSTALLED_APPS = new_installed
-    loading.cache.loaded = False
-
-    # Running the tests using the GIS test runner.
-    result = run_tests(test_labels, suite=gis_suite, **kwargs)
-
-    # Restoring modified settings.
-    settings.INSTALLED_APPS = old_installed
-    settings.ROOT_URLCONF = old_root_urlconf
-
-    return result
-
-def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[], suite=None):
-    """
-    This module allows users to run tests for GIS apps that require the creation 
-    of a spatial database.  Currently, this is only required for PostgreSQL as
-    PostGIS needs extra overhead in test database creation.
-
-    In order to create a PostGIS database, the DATABASE_USER (or 
-    TEST_DATABASE_USER, if defined) will require superuser priviliges.  
-
-    To accomplish this outside the `postgres` user, you have a few options:
-      (A) Make your user a super user:
-        This may be done at the time the user is created, for example:
-        $ createuser --superuser <user_name>
-
-        Or you may alter the user's role from the SQL shell (assuming this
-        is done from an existing superuser role):
-        postgres# ALTER ROLE <user_name> SUPERUSER;
-
-      (B) Create your own PostgreSQL database as a local user:
-        1. Initialize database: `initdb -D /path/to/user/db`
-        2. If there's already a Postgres instance on the machine, it will need
-           to use a different TCP port than 5432. Edit postgresql.conf (in 
-           /path/to/user/db) to change the database port (e.g. `port = 5433`).  
-        3. Start this database `pg_ctl -D /path/to/user/db start`
-
-      (C) On Windows platforms the pgAdmin III utility may also be used as 
-        a simple way to add superuser privileges to your database user.
-
-    The TEST_RUNNER needs to be set in your settings like so:
-
-      TEST_RUNNER='django.contrib.gis.tests.run_tests'
-
-    Note: This test runner assumes that the PostGIS SQL files ('lwpostgis.sql'
-    and 'spatial_ref_sys.sql') are installed in the directory specified by 
-    `pg_config --sharedir` (and defaults to /usr/local/share if that fails).
-    This behavior is overridden if POSTGIS_SQL_PATH is set in your settings.
-    
-    Windows users should set POSTGIS_SQL_PATH manually because the output
-    of `pg_config` uses paths like 'C:/PROGRA~1/POSTGR~1/..'.
-
-    Finally, the tests may be run by invoking `./manage.py test`.
-    """
-    # The `create_spatial_db` routine abstracts away all the steps needed
-    # to properly construct a spatial database for the backend.
-    from django.contrib.gis.db.backend import create_spatial_db
-
-    # Setting up for testing.
-    setup_test_environment()
-    settings.DEBUG = False
-    old_name = settings.DATABASE_NAME
-
-    # The suite may be passed in manually, e.g., when we run the GeoDjango test,
-    # we want to build it and pass it in due to some customizations.  Otherwise, 
-    # the normal test suite creation process from `django.test.simple.run_tests` 
-    # is used to create the test suite.
-    if suite is None:
-        suite = unittest.TestSuite()
-        if test_labels:
-            for label in test_labels:
-                if '.' in label:
-                    suite.addTest(build_test(label))
-                else:
-                    app = get_app(label)
-                    suite.addTest(build_suite(app))
-        else:
-            for app in get_apps():
-                suite.addTest(build_suite(app))
-    
-        for test in extra_tests:
-            suite.addTest(test)
-
-    # Creating the test spatial database.
-    create_spatial_db(test=True, verbosity=verbosity)
-
-    # Executing the tests (including the model tests), and destorying the
-    # test database after the tests have completed.
-    result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
-    connection.creation.destroy_test_db(old_name, verbosity)
-    teardown_test_environment()
-
-    # Returning the total failures and errors
-    return len(result.failures) + len(result.errors)
diff --git a/webapp/django/contrib/gis/tests/data/test_point/test_point.dbf b/webapp/django/contrib/gis/tests/data/test_point/test_point.dbf
deleted file mode 100644
index b2b4eca..0000000
--- a/webapp/django/contrib/gis/tests/data/test_point/test_point.dbf
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/data/test_point/test_point.prj b/webapp/django/contrib/gis/tests/data/test_point/test_point.prj
deleted file mode 100644
index a30c00a..0000000
--- a/webapp/django/contrib/gis/tests/data/test_point/test_point.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/data/test_point/test_point.shp b/webapp/django/contrib/gis/tests/data/test_point/test_point.shp
deleted file mode 100644
index 95e8b0a..0000000
--- a/webapp/django/contrib/gis/tests/data/test_point/test_point.shp
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/data/test_point/test_point.shx b/webapp/django/contrib/gis/tests/data/test_point/test_point.shx
deleted file mode 100644
index 087f3da..0000000
--- a/webapp/django/contrib/gis/tests/data/test_point/test_point.shx
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.dbf b/webapp/django/contrib/gis/tests/data/test_poly/test_poly.dbf
deleted file mode 100644
index 7965bd6..0000000
--- a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.dbf
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.prj b/webapp/django/contrib/gis/tests/data/test_poly/test_poly.prj
deleted file mode 100644
index a30c00a..0000000
--- a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.shp b/webapp/django/contrib/gis/tests/data/test_poly/test_poly.shp
deleted file mode 100644
index b22930b..0000000
--- a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.shp
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.shx b/webapp/django/contrib/gis/tests/data/test_poly/test_poly.shx
deleted file mode 100644
index c92f78b..0000000
--- a/webapp/django/contrib/gis/tests/data/test_poly/test_poly.shx
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/data/test_vrt/test_vrt.csv b/webapp/django/contrib/gis/tests/data/test_vrt/test_vrt.csv
deleted file mode 100644
index dff648f..0000000
--- a/webapp/django/contrib/gis/tests/data/test_vrt/test_vrt.csv
+++ /dev/null
@@ -1,4 +0,0 @@
-POINT_X,POINT_Y,NUM
-1.0,2.0,5
-5.0,23.0,17
-100.0,523.5,23
diff --git a/webapp/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt b/webapp/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt
deleted file mode 100644
index 85e6be8..0000000
--- a/webapp/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt
+++ /dev/null
@@ -1,7 +0,0 @@
-<OGRVRTDataSource>
-<OGRVRTLayer name="test_vrt">
-<SrcDataSource relativeToVRT="1">test_vrt.csv</SrcDataSource>
-<GeometryType>wkbPoint</GeometryType>
-<GeometryField encoding="PointFromColumns" x="POINT_X" y="POINT_Y" z="NUM"/>
-</OGRVRTLayer>
-</OGRVRTDataSource>
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/distapp/__init__.py b/webapp/django/contrib/gis/tests/distapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/tests/distapp/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/tests/distapp/data.py b/webapp/django/contrib/gis/tests/distapp/data.py
deleted file mode 100644
index fefe313..0000000
--- a/webapp/django/contrib/gis/tests/distapp/data.py
+++ /dev/null
@@ -1,33 +0,0 @@
-au_cities = (('Wollongong', 150.902, -34.4245),
-             ('Shellharbour', 150.87, -34.5789),
-             ('Thirroul', 150.924, -34.3147),
-             ('Mittagong', 150.449, -34.4509),
-             ('Batemans Bay', 150.175, -35.7082),
-             ('Canberra', 144.963, -37.8143),
-             ('Melbourne', 145.963, -37.8143),
-             ('Sydney', 151.26071, -33.887034),
-             ('Hobart', 147.33, -42.8827),
-             ('Adelaide', 138.6, -34.9258),
-             ('Hillsdale', 151.231341, -33.952685),
-             )
-
-stx_cities = (('Downtown Houston', -95.363151, 29.763374),
-              ('West University Place', -95.448601, 29.713803),
-              ('Southside Place', -95.436920, 29.705777),
-              ('Bellaire', -95.458732, 29.705614),
-              ('Pearland', -95.287303, 29.563568),
-              ('Galveston', -94.797489, 29.301336),
-              ('Sealy', -96.156952, 29.780918),
-              ('San Antonio', -98.493183, 29.424170),
-              ('Saint Hedwig', -98.199820, 29.414197),
-              )
-
-# Data from U.S. Census ZCTA cartographic boundary file for Texas (`zt48_d00.shp`).
-stx_zips = (('77002', 'POLYGON ((-95.365015 29.772327, -95.362415 29.772327, -95.360915 29.771827, -95.354615 29.771827, -95.351515 29.772527, -95.350915 29.765327, -95.351015 29.762436, -95.350115 29.760328, -95.347515 29.758528, -95.352315 29.753928, -95.356415 29.756328, -95.358215 29.754028, -95.360215 29.756328, -95.363415 29.757128, -95.364014 29.75638, -95.363415 29.753928, -95.360015 29.751828, -95.361815 29.749528, -95.362715 29.750028, -95.367516 29.744128, -95.369316 29.745128, -95.373916 29.744128, -95.380116 29.738028, -95.387916 29.727929, -95.388516 29.729629, -95.387916 29.732129, -95.382916 29.737428, -95.376616 29.742228, -95.372616 29.747228, -95.378601 29.750846, -95.378616 29.752028, -95.378616 29.754428, -95.376016 29.754528, -95.374616 29.759828, -95.373616 29.761128, -95.371916 29.763928, -95.372316 29.768727, -95.365884 29.76791, -95.366015 29.767127, -95.358715 29.765327, -95.358615 29.766327, -95.359115 29.767227, -95.360215 29.767027, -95.362783 29.768267, -95.365315 29.770527, -95.365015 29.772327))'),
-            ('77005', 'POLYGON ((-95.447918 29.727275, -95.428017 29.728729, -95.421117 29.729029, -95.418617 29.727629, -95.418517 29.726429, -95.402117 29.726629, -95.402117 29.725729, -95.395316 29.725729, -95.391916 29.726229, -95.389716 29.725829, -95.396517 29.715429, -95.397517 29.715929, -95.400917 29.711429, -95.411417 29.715029, -95.418417 29.714729, -95.418317 29.70623, -95.440818 29.70593, -95.445018 29.70683, -95.446618 29.70763, -95.447418 29.71003, -95.447918 29.727275))'),
-            ('77025', 'POLYGON ((-95.418317 29.70623, -95.414717 29.706129, -95.414617 29.70533, -95.418217 29.70533, -95.419817 29.69533, -95.419484 29.694196, -95.417166 29.690901, -95.414517 29.69433, -95.413317 29.69263, -95.412617 29.68973, -95.412817 29.68753, -95.414087 29.685055, -95.419165 29.685428, -95.421617 29.68513, -95.425717 29.67983, -95.425017 29.67923, -95.424517 29.67763, -95.427418 29.67763, -95.438018 29.664631, -95.436713 29.664411, -95.440118 29.662231, -95.439218 29.661031, -95.437718 29.660131, -95.435718 29.659731, -95.431818 29.660331, -95.441418 29.656631, -95.441318 29.656331, -95.441818 29.656131, -95.441718 29.659031, -95.441118 29.661031, -95.446718 29.656431, -95.446518 29.673431, -95.446918 29.69013, -95.447418 29.71003, -95.446618 29.70763, -95.445018 29.70683, -95.440818 29.70593, -95.418317 29.70623))'),
-            ('77401', 'POLYGON ((-95.447918 29.727275, -95.447418 29.71003, -95.446918 29.69013, -95.454318 29.68893, -95.475819 29.68903, -95.475819 29.69113, -95.484419 29.69103, -95.484519 29.69903, -95.480419 29.70133, -95.480419 29.69833, -95.474119 29.69833, -95.474119 29.70453, -95.472719 29.71283, -95.468019 29.71293, -95.468219 29.720229, -95.464018 29.720229, -95.464118 29.724529, -95.463018 29.725929, -95.459818 29.726129, -95.459918 29.720329, -95.451418 29.720429, -95.451775 29.726303, -95.451318 29.727029, -95.447918 29.727275))'),
-            )
-
-interstates = (('I-25', 'LINESTRING(-104.4780170766108 36.66698791870694, -104.4468522338495 36.79925409393386, -104.46212692626 36.9372149776075, -104.5126119783768 37.08163268820887, -104.5247764602161 37.29300499892048, -104.7084397427668 37.49150259925398, -104.8126599016282 37.69514285621863, -104.8452887035466 37.87613395659479, -104.7160169341003 38.05951763337799, -104.6165437927668 38.30432045855106, -104.6437227858174 38.53979986564737, -104.7596170387259 38.7322907594295, -104.8380078676822 38.89998460604341, -104.8501253693506 39.09980189213358, -104.8791648316464 39.24368776457503, -104.8635041274215 39.3785278162751, -104.8894471170052 39.5929228239605, -104.9721242843344 39.69528482419685, -105.0112104500356 39.7273080432394, -105.0010368577104 39.76677607811571, -104.981835619 39.81466504121967, -104.9858891550477 39.88806911250832, -104.9873548059578 39.98117234571016, -104.9766220487419 40.09796423450692, -104.9818565932953 40.36056530662884, -104.9912746373997 40.74904484447656)'),
-               )
diff --git a/webapp/django/contrib/gis/tests/distapp/models.py b/webapp/django/contrib/gis/tests/distapp/models.py
deleted file mode 100644
index f23b277..0000000
--- a/webapp/django/contrib/gis/tests/distapp/models.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from django.contrib.gis.db import models
-
-class SouthTexasCity(models.Model):
-    "City model on projected coordinate system for South Texas."
-    name = models.CharField(max_length=30)
-    point = models.PointField(srid=32140)
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class SouthTexasCityFt(models.Model):
-    "Same City model as above, but U.S. survey feet are the units."
-    name = models.CharField(max_length=30)
-    point = models.PointField(srid=2278)
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class AustraliaCity(models.Model):
-    "City model for Australia, using WGS84."
-    name = models.CharField(max_length=30)
-    point = models.PointField()
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class CensusZipcode(models.Model):
-    "Model for a few South Texas ZIP codes (in original Census NAD83)."
-    name = models.CharField(max_length=5)
-    poly = models.PolygonField(srid=4269)
-    objects = models.GeoManager()
-
-class SouthTexasZipcode(models.Model):
-    "Model for a few South Texas ZIP codes."
-    name = models.CharField(max_length=5)
-    poly = models.PolygonField(srid=32140)
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class Interstate(models.Model):
-    "Geodetic model for U.S. Interstates."
-    name = models.CharField(max_length=10)
-    line = models.LineStringField()
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
diff --git a/webapp/django/contrib/gis/tests/distapp/tests.py b/webapp/django/contrib/gis/tests/distapp/tests.py
deleted file mode 100644
index 057e2f7..0000000
--- a/webapp/django/contrib/gis/tests/distapp/tests.py
+++ /dev/null
@@ -1,296 +0,0 @@
-import os, unittest
-from decimal import Decimal
-
-from django.db.models import Q
-from django.contrib.gis.gdal import DataSource
-from django.contrib.gis.geos import GEOSGeometry, Point, LineString
-from django.contrib.gis.measure import D # alias for Distance
-from django.contrib.gis.db.models import GeoQ
-from django.contrib.gis.tests.utils import oracle, postgis, no_oracle
-
-from models import AustraliaCity, Interstate, SouthTexasCity, SouthTexasCityFt, CensusZipcode, SouthTexasZipcode
-from data import au_cities, interstates, stx_cities, stx_zips
-
-class DistanceTest(unittest.TestCase):
-
-    # A point we are testing distances with -- using a WGS84
-    # coordinate that'll be implicitly transormed to that to
-    # the coordinate system of the field, EPSG:32140 (Texas South Central
-    # w/units in meters)
-    stx_pnt = GEOSGeometry('POINT (-95.370401017314293 29.704867409475465)', 4326)
-    # Another one for Australia
-    au_pnt = GEOSGeometry('POINT (150.791 -34.4919)', 4326)
-
-    def get_names(self, qs):
-        cities = [c.name for c in qs]
-        cities.sort()
-        return cities
-
-    def test01_init(self):
-        "Initialization of distance models."
-
-        # Loading up the cities.
-        def load_cities(city_model, data_tup):
-            for name, x, y in data_tup:
-                c = city_model(name=name, point=Point(x, y, srid=4326))
-                c.save()
-        
-        load_cities(SouthTexasCity, stx_cities)
-        load_cities(SouthTexasCityFt, stx_cities)
-        load_cities(AustraliaCity, au_cities)
-
-        self.assertEqual(9, SouthTexasCity.objects.count())
-        self.assertEqual(9, SouthTexasCityFt.objects.count())
-        self.assertEqual(11, AustraliaCity.objects.count())
-        
-        # Loading up the South Texas Zip Codes.
-        for name, wkt in stx_zips:
-            poly = GEOSGeometry(wkt, srid=4269)
-            SouthTexasZipcode(name=name, poly=poly).save()
-            CensusZipcode(name=name, poly=poly).save()
-        self.assertEqual(4, SouthTexasZipcode.objects.count())
-        self.assertEqual(4, CensusZipcode.objects.count())
-
-        # Loading up the Interstates.
-        for name, wkt in interstates:
-            Interstate(name=name, line=GEOSGeometry(wkt, srid=4326)).save()
-        self.assertEqual(1, Interstate.objects.count())
-
-    def test02_dwithin(self):
-        "Testing the `dwithin` lookup type."
-        # Distances -- all should be equal (except for the
-        # degree/meter pair in au_cities, that's somewhat
-        # approximate).
-        tx_dists = [(7000, 22965.83), D(km=7), D(mi=4.349)]
-        au_dists = [(0.5, 32000), D(km=32), D(mi=19.884)]
-        
-        # Expected cities for Australia and Texas.
-        tx_cities = ['Downtown Houston', 'Southside Place']
-        au_cities = ['Mittagong', 'Shellharbour', 'Thirroul', 'Wollongong']
-
-        # Performing distance queries on two projected coordinate systems one
-        # with units in meters and the other in units of U.S. survey feet.
-        for dist in tx_dists:
-            if isinstance(dist, tuple): dist1, dist2 = dist
-            else: dist1 = dist2 = dist
-            qs1 = SouthTexasCity.objects.filter(point__dwithin=(self.stx_pnt, dist1))
-            qs2 = SouthTexasCityFt.objects.filter(point__dwithin=(self.stx_pnt, dist2))
-            for qs in qs1, qs2:
-                self.assertEqual(tx_cities, self.get_names(qs))
-
-        # Now performing the `dwithin` queries on a geodetic coordinate system.
-        for dist in au_dists:
-            if isinstance(dist, D) and not oracle: type_error = True
-            else: type_error = False
-
-            if isinstance(dist, tuple):
-                if oracle: dist = dist[1]
-                else: dist = dist[0]
-                
-            # Creating the query set.
-            qs = AustraliaCity.objects.order_by('name')
-            if type_error:
-                # A TypeError should be raised on PostGIS when trying to pass
-                # Distance objects into a DWithin query using a geodetic field.  
-                self.assertRaises(TypeError, AustraliaCity.objects.filter, point__dwithin=(self.au_pnt, dist))
-            else:
-                self.assertEqual(au_cities, self.get_names(qs.filter(point__dwithin=(self.au_pnt, dist))))
-                                 
-    def test03a_distance_method(self):
-        "Testing the `distance` GeoQuerySet method on projected coordinate systems."
-        # The point for La Grange, TX
-        lagrange = GEOSGeometry('POINT(-96.876369 29.905320)', 4326)
-        # Reference distances in feet and in meters. Got these values from 
-        # using the provided raw SQL statements.
-        #  SELECT ST_Distance(point, ST_Transform(ST_GeomFromText('POINT(-96.876369 29.905320)', 4326), 32140)) FROM distapp_southtexascity;
-        m_distances = [147075.069813, 139630.198056, 140888.552826,
-                       138809.684197, 158309.246259, 212183.594374,
-                       70870.188967, 165337.758878, 139196.085105]
-        #  SELECT ST_Distance(point, ST_Transform(ST_GeomFromText('POINT(-96.876369 29.905320)', 4326), 2278)) FROM distapp_southtexascityft;
-        ft_distances = [482528.79154625, 458103.408123001, 462231.860397575,
-                        455411.438904354, 519386.252102563, 696139.009211594,
-                        232513.278304279, 542445.630586414, 456679.155883207]
-
-        # Testing using different variations of parameters and using models
-        # with different projected coordinate systems.
-        dist1 = SouthTexasCity.objects.distance(lagrange, field_name='point')
-        dist2 = SouthTexasCity.objects.distance(lagrange)  # Using GEOSGeometry parameter
-        dist3 = SouthTexasCityFt.objects.distance(lagrange.ewkt) # Using EWKT string parameter.
-        dist4 = SouthTexasCityFt.objects.distance(lagrange)
-
-        # Original query done on PostGIS, have to adjust AlmostEqual tolerance
-        # for Oracle.
-        if oracle: tol = 2
-        else: tol = 5
-
-        # Ensuring expected distances are returned for each distance queryset.
-        for qs in [dist1, dist2, dist3, dist4]:
-            for i, c in enumerate(qs):
-                self.assertAlmostEqual(m_distances[i], c.distance.m, tol)
-                self.assertAlmostEqual(ft_distances[i], c.distance.survey_ft, tol)
-
-    def test03b_distance_method(self):
-        "Testing the `distance` GeoQuerySet method on geodetic coordnate systems."
-        if oracle: tol = 2
-        else: tol = 5
-
-        # Now testing geodetic distance aggregation.
-        hillsdale = AustraliaCity.objects.get(name='Hillsdale')
-        if not oracle:
-            # PostGIS is limited to disance queries only to/from point geometries,
-            # ensuring a TypeError is raised if something else is put in.
-            self.assertRaises(TypeError, AustraliaCity.objects.distance, 'LINESTRING(0 0, 1 1)')
-            self.assertRaises(TypeError, AustraliaCity.objects.distance, LineString((0, 0), (1, 1)))
-
-        # Got the reference distances using the raw SQL statements:
-        #  SELECT ST_distance_spheroid(point, ST_GeomFromText('POINT(151.231341 -33.952685)', 4326), 'SPHEROID["WGS 84",6378137.0,298.257223563]') FROM distapp_australiacity WHERE (NOT (id = 11));
-        spheroid_distances = [60504.0628825298, 77023.948962654, 49154.8867507115, 90847.435881812, 217402.811862568, 709599.234619957, 640011.483583758, 7772.00667666425, 1047861.7859506, 1165126.55237647]
-        #  SELECT ST_distance_sphere(point, ST_GeomFromText('POINT(151.231341 -33.952685)', 4326)) FROM distapp_australiacity WHERE (NOT (id = 11));  st_distance_sphere
-        sphere_distances = [60580.7612632291, 77143.7785056615, 49199.2725132184, 90804.4414289463, 217712.63666124, 709131.691061906, 639825.959074112, 7786.80274606706, 1049200.46122281, 1162619.7297006]
-
-        # Testing with spheroid distances first.
-        qs = AustraliaCity.objects.exclude(id=hillsdale.id).distance(hillsdale.point, spheroid=True)
-        for i, c in enumerate(qs):
-            self.assertAlmostEqual(spheroid_distances[i], c.distance.m, tol)
-        if postgis:
-            # PostGIS uses sphere-only distances by default, testing these as well.
-            qs =  AustraliaCity.objects.exclude(id=hillsdale.id).distance(hillsdale.point)
-            for i, c in enumerate(qs):
-                self.assertAlmostEqual(sphere_distances[i], c.distance.m, tol)
-
-    @no_oracle # Oracle already handles geographic distance calculation.
-    def test03c_distance_method(self):
-        "Testing the `distance` GeoQuerySet method used with `transform` on a geographic field."
-        # Normally you can't compute distances from a geometry field
-        # that is not a PointField (on PostGIS).
-        self.assertRaises(TypeError, CensusZipcode.objects.distance, self.stx_pnt)
-        
-        # We'll be using a Polygon (created by buffering the centroid
-        # of 77005 to 100m) -- which aren't allowed in geographic distance
-        # queries normally, however our field has been transformed to
-        # a non-geographic system.
-        z = SouthTexasZipcode.objects.get(name='77005')
-
-        # Reference query:
-        # SELECT ST_Distance(ST_Transform("distapp_censuszipcode"."poly", 32140), ST_GeomFromText('<buffer_wkt>', 32140)) FROM "distapp_censuszipcode";
-        dists_m = [3553.30384972258, 1243.18391525602, 2186.15439472242]
-
-        # Having our buffer in the SRID of the transformation and of the field
-        # -- should get the same results. The first buffer has no need for
-        # transformation SQL because it is the same SRID as what was given
-        # to `transform()`.  The second buffer will need to be transformed,
-        # however.
-        buf1 = z.poly.centroid.buffer(100)
-        buf2 = buf1.transform(4269, clone=True)
-        for buf in [buf1, buf2]:
-            qs = CensusZipcode.objects.exclude(name='77005').transform(32140).distance(buf)
-            self.assertEqual(['77002', '77025', '77401'], self.get_names(qs))
-            for i, z in enumerate(qs):
-                self.assertAlmostEqual(z.distance.m, dists_m[i], 5)
-
-    def test04_distance_lookups(self):
-        "Testing the `distance_lt`, `distance_gt`, `distance_lte`, and `distance_gte` lookup types."
-        # Retrieving the cities within a 20km 'donut' w/a 7km radius 'hole'
-        # (thus, Houston and Southside place will be excluded as tested in
-        # the `test02_dwithin` above).
-        qs1 = SouthTexasCity.objects.filter(point__distance_gte=(self.stx_pnt, D(km=7))).filter(point__distance_lte=(self.stx_pnt, D(km=20)))
-        qs2 = SouthTexasCityFt.objects.filter(point__distance_gte=(self.stx_pnt, D(km=7))).filter(point__distance_lte=(self.stx_pnt, D(km=20)))
-        for qs in qs1, qs2:
-            cities = self.get_names(qs)
-            self.assertEqual(cities, ['Bellaire', 'Pearland', 'West University Place'])
-
-        # Doing a distance query using Polygons instead of a Point.
-        z = SouthTexasZipcode.objects.get(name='77005')
-        qs = SouthTexasZipcode.objects.exclude(name='77005').filter(poly__distance_lte=(z.poly, D(m=275)))
-        self.assertEqual(['77025', '77401'], self.get_names(qs))
-        # If we add a little more distance 77002 should be included.
-        qs = SouthTexasZipcode.objects.exclude(name='77005').filter(poly__distance_lte=(z.poly, D(m=300)))
-        self.assertEqual(['77002', '77025', '77401'], self.get_names(qs))
-        
-    def test05_geodetic_distance_lookups(self):
-        "Testing distance lookups on geodetic coordinate systems."
-        if not oracle:
-            # Oracle doesn't have this limitation -- PostGIS only allows geodetic
-            # distance queries from Points to PointFields.
-            mp = GEOSGeometry('MULTIPOINT(0 0, 5 23)')
-            self.assertRaises(TypeError,
-                              AustraliaCity.objects.filter(point__distance_lte=(mp, D(km=100))))
-            # Too many params (4 in this case) should raise a ValueError.
-            self.assertRaises(ValueError, 
-                              AustraliaCity.objects.filter, point__distance_lte=('POINT(5 23)', D(km=100), 'spheroid', '4'))
-
-        # Not enough params should raise a ValueError.
-        self.assertRaises(ValueError,
-                          AustraliaCity.objects.filter, point__distance_lte=('POINT(5 23)',))
-
-        # Getting all cities w/in 550 miles of Hobart.
-        hobart = AustraliaCity.objects.get(name='Hobart')
-        qs = AustraliaCity.objects.exclude(name='Hobart').filter(point__distance_lte=(hobart.point, D(mi=550)))
-        cities = self.get_names(qs)
-        self.assertEqual(cities, ['Batemans Bay', 'Canberra', 'Melbourne'])
-
-        # Cities that are either really close or really far from Wollongong --
-        # and using different units of distance.
-        wollongong = AustraliaCity.objects.get(name='Wollongong')
-        d1, d2 = D(yd=19500), D(nm=400) # Yards (~17km) & Nautical miles.
-
-        # Normal geodetic distance lookup (uses `distance_sphere` on PostGIS.
-        gq1 = GeoQ(point__distance_lte=(wollongong.point, d1))
-        gq2 = GeoQ(point__distance_gte=(wollongong.point, d2))
-        qs1 = AustraliaCity.objects.exclude(name='Wollongong').filter(gq1 | gq2)
-
-        # Geodetic distance lookup but telling GeoDjango to use `distance_spheroid`
-        # instead (we should get the same results b/c accuracy variance won't matter
-        # in this test case). Using `Q` instead of `GeoQ` to be different (post-qsrf
-        # it doesn't matter).
-        if postgis:
-            gq3 = Q(point__distance_lte=(wollongong.point, d1, 'spheroid'))
-            gq4 = Q(point__distance_gte=(wollongong.point, d2, 'spheroid'))
-            qs2 = AustraliaCity.objects.exclude(name='Wollongong').filter(gq3 | gq4)
-            querysets = [qs1, qs2]
-        else:
-            querysets = [qs1]
-
-        for qs in querysets:
-            cities = self.get_names(qs)
-            self.assertEqual(cities, ['Adelaide', 'Hobart', 'Shellharbour', 'Thirroul'])
-
-    def test06_area(self):
-        "Testing the `area` GeoQuerySet method."
-        # Reference queries:
-        # SELECT ST_Area(poly) FROM distapp_southtexaszipcode;
-        area_sq_m = [5437908.90234375, 10183031.4389648, 11254471.0073242, 9881708.91772461]
-        # Tolerance has to be lower for Oracle and differences
-        # with GEOS 3.0.0RC4
-        tol = 2
-        for i, z in enumerate(SouthTexasZipcode.objects.area()):
-            self.assertAlmostEqual(area_sq_m[i], z.area.sq_m, tol)
-
-    def test07_length(self):
-        "Testing the `length` GeoQuerySet method."
-        # Reference query (should use `length_spheroid`).
-        # SELECT ST_length_spheroid(ST_GeomFromText('<wkt>', 4326) 'SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]]');
-        len_m = 473504.769553813
-        qs = Interstate.objects.length()
-        if oracle: tol = 2
-        else: tol = 5
-        self.assertAlmostEqual(len_m, qs[0].length.m, tol)
-
-    def test08_perimeter(self):
-        "Testing the `perimeter` GeoQuerySet method."
-        # Reference query:
-        # SELECT ST_Perimeter(distapp_southtexaszipcode.poly) FROM distapp_southtexaszipcode;
-        perim_m = [18404.3550889361, 15627.2108551001, 20632.5588368978, 17094.5996143697]
-        if oracle: tol = 2
-        else: tol = 7
-        for i, z in enumerate(SouthTexasZipcode.objects.perimeter()):
-            self.assertAlmostEqual(perim_m[i], z.perimeter.m, tol)
-
-        # Running on points; should return 0.
-        for i, c in enumerate(SouthTexasCity.objects.perimeter(model_att='perim')):
-            self.assertEqual(0, c.perim.m)
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(DistanceTest))
-    return s
diff --git a/webapp/django/contrib/gis/tests/geoapp/__init__.py b/webapp/django/contrib/gis/tests/geoapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/tests/geoapp/feeds.py b/webapp/django/contrib/gis/tests/geoapp/feeds.py
deleted file mode 100644
index 942b140..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/feeds.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from django.contrib.gis import feeds
-from django.contrib.gis.tests.utils import mysql
-from models import City, Country
-
-class TestGeoRSS1(feeds.Feed):
-    link = '/city/'
-    title = 'Test GeoDjango Cities'
-
-    def items(self):
-        return City.objects.all()
-
-    def item_link(self, item):
-        return '/city/%s/' % item.pk
-
-    def item_geometry(self, item):
-        return item.point
-
-class TestGeoRSS2(TestGeoRSS1):
-    def geometry(self, obj):
-        # This should attach a <georss:box> element for the extent of
-        # of the cities in the database.  This tuple came from
-        # calling `City.objects.extent()` -- we can't do that call here
-        # because `extent` is not implemented for MySQL/Oracle.
-        return (-123.30, -41.32, 174.78, 48.46)
-
-    def item_geometry(self, item):
-        # Returning a simple tuple for the geometry.
-        return item.point.x, item.point.y
-
-class TestGeoAtom1(TestGeoRSS1):
-    feed_type = feeds.GeoAtom1Feed
-
-class TestGeoAtom2(TestGeoRSS2):
-    feed_type = feeds.GeoAtom1Feed
-
-    def geometry(self, obj):
-        # This time we'll use a 2-tuple of coordinates for the box.
-        return ((-123.30, -41.32), (174.78, 48.46))
-
-class TestW3CGeo1(TestGeoRSS1):
-    feed_type = feeds.W3CGeoFeed
-
-# The following feeds are invalid, and will raise exceptions.
-class TestW3CGeo2(TestGeoRSS2):
-    feed_type = feeds.W3CGeoFeed
-
-class TestW3CGeo3(TestGeoRSS1):
-    feed_type = feeds.W3CGeoFeed
-
-    def item_geometry(self, item):
-        from django.contrib.gis.geos import Polygon
-        return Polygon(((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))
-
-# The feed dictionary to use for URLs.
-feed_dict = {
-    'rss1' : TestGeoRSS1,
-    'rss2' : TestGeoRSS2,
-    'atom1' : TestGeoAtom1,
-    'atom2' : TestGeoAtom2,
-    'w3cgeo1' : TestW3CGeo1,
-    'w3cgeo2' : TestW3CGeo2,
-    'w3cgeo3' : TestW3CGeo3,
-}
diff --git a/webapp/django/contrib/gis/tests/geoapp/models.py b/webapp/django/contrib/gis/tests/geoapp/models.py
deleted file mode 100644
index fcb06e1..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/models.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from django.contrib.gis.db import models
-from django.contrib.gis.tests.utils import mysql
-
-# MySQL spatial indices can't handle NULL geometries.
-null_flag = not mysql
-
-class Country(models.Model):
-    name = models.CharField(max_length=30)
-    mpoly = models.MultiPolygonField() # SRID, by default, is 4326
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class City(models.Model):
-    name = models.CharField(max_length=30)
-    point = models.PointField() 
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class State(models.Model):
-    name = models.CharField(max_length=30)
-    poly = models.PolygonField(null=null_flag) # Allowing NULL geometries here.
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class Feature(models.Model):
-    name = models.CharField(max_length=20)
-    geom = models.GeometryField()
-    objects = models.GeoManager()
-    def __unicode__(self): return self.name
-
-class MinusOneSRID(models.Model):
-    geom = models.PointField(srid=-1) # Minus one SRID.
-    objects = models.GeoManager()
diff --git a/webapp/django/contrib/gis/tests/geoapp/sitemaps.py b/webapp/django/contrib/gis/tests/geoapp/sitemaps.py
deleted file mode 100644
index ca785f2..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sitemaps.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.contrib.gis.sitemaps import GeoRSSSitemap, KMLSitemap, KMZSitemap
-from models import City, Country
-from feeds import feed_dict
-
-sitemaps = {'kml' : KMLSitemap([City, Country]),
-            'kmz' : KMZSitemap([City, Country]),
-            'georss' : GeoRSSSitemap(feed_dict),
-            }
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/city.mysql.sql b/webapp/django/contrib/gis/tests/geoapp/sql/city.mysql.sql
deleted file mode 100644
index e73375c..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/city.mysql.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Houston', GeomFromText('POINT (-95.363151 29.763374)'));
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Dallas', GeomFromText('POINT (-96.801611 32.782057)'));
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Oklahoma City', GeomFromText('POINT (-97.521157 34.464642)'));
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Wellington', GeomFromText('POINT (174.783117 -41.315268)'));
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Pueblo', GeomFromText('POINT (-104.609252 38.255001)'));
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Lawrence', GeomFromText('POINT (-95.235060 38.971823)'));
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Chicago', GeomFromText('POINT (-87.650175 41.850385)'));
-INSERT INTO geoapp_city (`name`, `point`) VALUES ('Victoria', GeomFromText('POINT (-123.305196 48.462611)'));
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/city.oracle.sql b/webapp/django/contrib/gis/tests/geoapp/sql/city.oracle.sql
deleted file mode 100644
index 9e6d7b7..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/city.oracle.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Houston', SDO_GEOMETRY('POINT (-95.363151 29.763374)', 4326));
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Dallas', SDO_GEOMETRY('POINT (-96.801611 32.782057)', 4326));
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Oklahoma City', SDO_GEOMETRY('POINT (-97.521157 34.464642)', 4326));
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Wellington', SDO_GEOMETRY('POINT (174.783117 -41.315268)', 4326));
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Pueblo', SDO_GEOMETRY('POINT (-104.609252 38.255001)', 4326));
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Lawrence', SDO_GEOMETRY('POINT (-95.235060 38.971823)', 4326));
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Chicago', SDO_GEOMETRY('POINT (-87.650175 41.850385)', 4326));
-INSERT INTO GEOAPP_CITY ("NAME", "POINT") VALUES ('Victoria', SDO_GEOMETRY('POINT (-123.305196 48.462611)', 4326));
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/city.postgresql_psycopg2.sql b/webapp/django/contrib/gis/tests/geoapp/sql/city.postgresql_psycopg2.sql
deleted file mode 100644
index 3b9b01e..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/city.postgresql_psycopg2.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-INSERT INTO geoapp_city ("name", "point") VALUES ('Houston', 'SRID=4326;POINT (-95.363151 29.763374)');
-INSERT INTO geoapp_city ("name", "point") VALUES ('Dallas', 'SRID=4326;POINT (-96.801611 32.782057)');
-INSERT INTO geoapp_city ("name", "point") VALUES ('Oklahoma City', 'SRID=4326;POINT (-97.521157 34.464642)');
-INSERT INTO geoapp_city ("name", "point") VALUES ('Wellington', 'SRID=4326;POINT (174.783117 -41.315268)');
-INSERT INTO geoapp_city ("name", "point") VALUES ('Pueblo', 'SRID=4326;POINT (-104.609252 38.255001)');
-INSERT INTO geoapp_city ("name", "point") VALUES ('Lawrence', 'SRID=4326;POINT (-95.235060 38.971823)');
-INSERT INTO geoapp_city ("name", "point") VALUES ('Chicago', 'SRID=4326;POINT (-87.650175 41.850385)');
-INSERT INTO geoapp_city ("name", "point") VALUES ('Victoria', 'SRID=4326;POINT (-123.305196 48.462611)');
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/co.wkt b/webapp/django/contrib/gis/tests/geoapp/sql/co.wkt
deleted file mode 100644
index 17fad02..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/co.wkt
+++ /dev/null
@@ -1 +0,0 @@
-POLYGON ((-107.9184209999999800 41.0020359999999970, -107.6913358243141800 41.0021042503422490, -107.6256240000000000 41.0021240000000020, -107.5215053632723100 41.0025067105257720, -107.3674429999999900 41.0030730000000010, -107.3177944624011200 41.0029672133671140, -107.3053129562196700 41.0029406188977600, -107.2411939999999900 41.0028039999999980, -107.0006060000000000 41.0034439999999950, -106.8577729999999900 41.0026629999999910, -106.4538589999999900 41.0020569999999940, -106.4395630000000100 41.0019780000000010, -106.4374190000000100 41.0017949999999940, -106.4309500000000000 41.0017519999999960, -106.3918520000000000 41.0011760000000010, -106.3863560000000100 41.0011439999999960, -106.3211649999999900 40.9991229999999970, -106.2175730000000000 40.9977340000000010, -106.1946242545105400 40.9976261471179200, -106.1905405794911800 40.9976069549524670, -106.0611809999999900 40.9969990000000020, -105.7642468572674100 40.9968975561793200, -105.7304210000000100 40.9968860000000030, -105.7248040000000100 40.9969100000000000, -105.5544177044212800 40.9973907108230620, -105.4122207031675800 40.9977918911954480, -105.2771379999999800 40.9981730000000010, -105.2565270000000100 40.9981909999999980, -105.2547790000000000 40.9982100000000000, -105.1734357616781100 40.9981770152523170, -104.9433706805682100 40.9980837236793720, -104.8552730000000000 40.9980479999999970, -104.8295039999999900 40.9992700000000030, -104.6759990000000000 41.0009570000000000, -104.4971489999999900 41.0018280000000030, -104.4970580000000000 41.0018049999999970, -104.4676719999999800 41.0014729999999970, -104.2146920000000000 41.0016570000000020, -104.2141910000000000 41.0015679999999990, -104.2114730000000000 41.0015909999999980, -104.1235859999999900 41.0016259999999950, -104.1045900000000000 41.0015429999999910, -104.0860679999999800 41.0015629999999970, -104.0669609999999900 41.0015039999999970, -104.0532489999999900 41.0014059999999960, -104.0392380000000000 41.0015020000000020, -104.0233829999999800 41.0018870000000040, -104.0182230000000100 41.0016170000000030, -104.0108048867797200 41.0016166745085400, -103.9726419999999800 41.0016150000000010, -103.9713730000000000 41.0015240000000030, -103.9535250000000000 41.0015959999999990, -103.9063240000000000 41.0013870000000010, -103.8962070000000000 41.0017500000000010, -103.8779670000000000 41.0016729999999900, -103.8584489999999900 41.0016809999999980, -103.7504979999999900 41.0020540000000010, -103.5745220000000000 41.0017210000000030, -103.4974469999999900 41.0016350000000000, -103.4866970000000100 41.0019139999999990, -103.4219750000000000 41.0020069999999990, -103.4219250000000000 41.0019689999999950, -103.3969909999999900 41.0025580000000010, -103.3653139999999800 41.0018460000000000, -103.3629790000000000 41.0018439999999910, -103.0778040000000000 41.0022980000000030, -103.0765360000000000 41.0022530000000030, -103.0595379999999900 41.0023679999999970, -103.0579980000000000 41.0023679999999970, -103.0434439999999900 41.0023440000000010, -103.0387040000000000 41.0022510000000010, -103.0020260000000000 41.0024859999999980, -103.0001019999999800 41.0024000000000020, -102.9826900000000100 41.0021569999999970, -102.9814830000000000 41.0021119999999970, -102.9636689999999800 41.0021859999999950, -102.9625220000000100 41.0020719999999980, -102.9607060000000000 41.0020589999999960, -102.9596239999999900 41.0020949999999970, -102.9448300000000000 41.0023029999999980, -102.9431090000000100 41.0020510000000020, -102.9255680000000000 41.0022799999999990, -102.9240290000000000 41.0021419999999990, -102.9065469999999900 41.0022759999999950, -102.9047960000000000 41.0022069999999990, -102.8874069999999800 41.0021780000000010, -102.8857460000000000 41.0021309999999990, -102.8678220000000000 41.0021830000000020, -102.8657839999999900 41.0019879999999970, -102.8492629999999900 41.0023010000000030, -102.8464550000000100 41.0022560000000030, -102.8303029999999900 41.0023509999999970, -102.8272800000000000 41.0021429999999970, -102.7735460000000000 41.0024140000000020, -102.7667230000000000 41.0022749999999900, -102.7546170000000000 41.0023609999999930, -102.7396239999999900 41.0022299999999970, -102.6534629999999900 41.0023320000000030, -102.6210330000000000 41.0025970000000020, -102.5786959999999900 41.0022910000000000, -102.5757380000000000 41.0022680000000010, -102.5754960000000000 41.0022000000000020, -102.5660479999999900 41.0022000000000020, -102.5567889999999900 41.0022189999999970, -102.5177010715824500 41.0023473358779430, -102.4879549999999900 41.0024449999999940, -102.4705369999999800 41.0023819999999970, -102.4692230000000000 41.0024239999999980, -102.4603345936969100 41.0024118023655500, -102.3877509894849600 41.0023121952773270, -102.3803729919328400 41.0023020703894620, -102.3795930000000000 41.0023010000000030, -102.3640659999999900 41.0021739999999970, -102.2928330000000000 41.0022069999999990, -102.2926219999999900 41.0022299999999970, -102.2925530000000000 41.0022069999999990, -102.2913540000000000 41.0022069999999990, -102.2778034555739900 41.0022337435695480, -102.2720999999999900 41.0022450000000020, -102.2678119999999900 41.0023830000000020, -102.2319310000000000 41.0023270000000010, -102.2121999999999800 41.0024620000000010, -102.2093610000000000 41.0024420000000020, -102.2090839362510100 41.0024402293320020, -102.2077760551977500 41.0024318708833140, -102.1912100000000000 41.0023259999999960, -102.1249720000000000 41.0023380000000020, -102.0705980000000000 41.0024230000000000, -102.0516140000000000 41.0023770000000030, -102.0512919999999900 40.7495910000000020, -102.0516344326070000 40.5821295926172280, -102.0517250000000000 40.5378389999999910, -102.0515190000000000 40.5200940000000000, -102.0514649999999900 40.4400079999999990, -102.0518400000000000 40.3963960000000030, -102.0515719999999900 40.3930799999999980, -102.0517979999999900 40.3600690000000030, -102.0515855426165400 40.3506461457410240, -102.0513090000000000 40.3383809999999980, -102.0519220000000000 40.2353439999999980, -102.0518939999999900 40.2291929999999950, -102.0519089999999900 40.1626740000000030, -102.0520010000000000 40.1483589999999990, -102.0518526008886700 40.0644696175368220, -102.0517440000000000 40.0030780000000020, -102.0517155646578700 39.9781730274562650, -102.0515690000000000 39.8498050000000030, -102.0513629999999900 39.8434710000000010, -102.0513179999999900 39.8333110000000020, -102.0512540000000000 39.8189920000000010, -102.0505939999999900 39.6755939999999900, -102.0500990000000000 39.6538120000000020, -102.0504219999999800 39.6460479999999930, -102.0499540000000000 39.5923310000000010, -102.0498059999999900 39.5740580000000010, -102.0495539999999900 39.5389320000000030, -102.0496730000000000 39.5366909999999980, -102.0496790000000000 39.5061830000000000, -102.0493690000000000 39.4233330000000000, -102.0493700000000000 39.4182100000000020, -102.0491669999999800 39.4035969999999980, -102.0489599999999800 39.3737119999999900, -102.0484490000000100 39.3031379999999900, -102.0472500000000100 39.1370200000000000, -102.0471339999999900 39.1297009999999970, -102.0465709999999900 39.0470380000000010, -102.0453879999999900 38.8133919999999930, -102.0453340000000000 38.7994630000000030, -102.0454479999999900 38.7834530000000020, -102.0453710000000000 38.7700639999999980, -102.0452870000000000 38.7555279999999980, -102.0453750000000100 38.7543389999999950, -102.0452119999999900 38.6975669999999990, -102.0451560000000100 38.6885550000000010, -102.0451269999999900 38.6867250000000030, -102.0451600000000000 38.6752210000000010, -102.0451020000000000 38.6749459999999980, -102.0450740000000000 38.6696170000000020, -102.0452880000000000 38.6152489999999990, -102.0452109999999900 38.5816089999999930, -102.0451889999999800 38.5587319999999920, -102.0452229999999900 38.5437969999999980, -102.0451120000000000 38.5237839999999990, -102.0452619999999900 38.5055319999999950, -102.0452629999999900 38.5053950000000000, -102.0453239999999800 38.4536469999999970, -102.0449360000000100 38.4196800000000000, -102.0444419999999900 38.4158019999999990, -102.0449440000000000 38.3844190000000010, -102.0446130000000000 38.3123239999999970, -102.0445680000000000 38.2688190000000010, -102.0443980000000000 38.2500149999999980, -102.0442510000000000 38.1417779999999950, -102.0445353236236500 38.1276753800285280, -102.0445890000000000 38.1250129999999960, -102.0445402773320500 38.1232621932310920, -102.0442550000000100 38.1130109999999930, -102.0446235449346800 38.0490802965374900, -102.0446310070721800 38.0477858554663160, -102.0446440000000100 38.0455320000000010, -102.0446200858831200 38.0420217065706370, -102.0445393420861100 38.0301695264644910, -102.0438440000000100 37.9281019999999960, -102.0438450000000000 37.9261350000000020, -102.0432189999999900 37.8679289999999900, -102.0430329999999900 37.8241459999999990, -102.0429530000000000 37.8035349999999970, -102.0426680000000100 37.7887580000000010, -102.0421580000000000 37.7601640000000030, -102.0418760000000000 37.7238750000000000, -102.0415740000000000 37.6804360000000000, -102.0416940000000100 37.6656809999999990, -102.0415819999999900 37.6544949999999970, -102.0415850000000000 37.6442819999999970, -102.0416180000000000 37.6078680000000030, -102.0417794058394900 37.5786915552958260, -102.0418940000000000 37.5579770000000010, -102.0418990000000000 37.5411860000000030, -102.0420159999999900 37.5352609999999980, -102.0417860000000000 37.5060659999999970, -102.0418009999999900 37.4694879999999980, -102.0417549999999900 37.4348549999999920, -102.0416690000000000 37.4347399999999980, -102.0416759999999800 37.4098979999999910, -102.0415240000000000 37.3750179999999970, -102.0420890000000000 37.3528189999999970, -102.0419740000000000 37.3526129999999980, -102.0418169999999900 37.3094899999999970, -102.0416640000000000 37.2976499999999900, -102.0419630000000000 37.2581640000000010, -102.0420020000000000 37.1417440000000030, -102.0421350000000000 37.1250209999999970, -102.0420920000000000 37.1250209999999970, -102.0418089999999900 37.1119729999999990, -102.0419830000000000 37.1065510000000030, -102.0419199999999900 37.0350830000000000, -102.0417490000000000 37.0343969999999980, -102.0419210000000000 37.0321780000000020, -102.0419500000000000 37.0308050000000010, -102.0419519999999900 37.0247419999999960, -102.0422400000000100 36.9930829999999990, -102.0545030000000000 36.9931089999999970, -102.1842710000000000 36.9935929999999970, -102.2083160000000000 36.9937299999999990, -102.2607890000000000 36.9943880000000010, -102.2703456818352900 36.9943999333374620, -102.3075936504973800 36.9944464445206690, -102.3552880000000000 36.9945059999999940, -102.3553670000000000 36.9945749999999980, -102.6981420000000000 36.9951489999999980, -102.7420599999999800 36.9976890000000010, -102.7598600000000000 37.0000190000000020, -102.7785689999999900 36.9992420000000020, -102.8067620000000100 37.0000190000000020, -102.8146160000000000 37.0007829999999980, -102.8419890000000000 36.9995979999999990, -102.9796130000000000 36.9985489999999970, -102.9858069999999900 36.9985709999999980, -102.9869760000000000 36.9985240000000030, -103.0021990000000000 37.0001040000000000, -103.0861049694139500 37.0001738656940380, -103.1054053653286500 37.0001899364881130, -103.1559220000000000 37.0002319999999970, -103.2006317284721000 37.0000603865096880, -103.3271777694062600 36.9995746531243130, -103.4256788724330500 36.9991965672206930, -103.7332470000000100 36.9980159999999930, -103.7343639999999900 36.9980410000000010, -104.0078549999999900 36.9962390000000030, -104.2154754884639700 36.9948744321965890, -104.2505359999999800 36.9946440000000010, -104.2975706429598400 36.9940532503817470, -104.3388329999999900 36.9935350000000010, -104.3556505253503100 36.9935565317715810, -104.3664476855351100 36.9935703555644370, -104.3992028820832900 36.9936122926149620, -104.4297693866500100 36.9936514274448880, -104.4806103169752700 36.9937165199763950, -104.5192570000000000 36.9937659999999940, -104.6245560000000000 36.9943769999999930, -104.6255450000000000 36.9935990000000030, -104.6450289999999900 36.9933779999999930, -104.7061122072671500 36.9934264441886570, -104.7320310000000100 36.9934470000000030, -104.7321199999999800 36.9934840000000020, -104.8399904125201100 36.9933955928282070, -105.0005539999999800 36.9932640000000030, -105.0292279999999900 36.9927289999999900, -105.1208000000000000 36.9954279999999970, -105.1550419641015100 36.9953391471581630, -105.2206130000000000 36.9951689999999970, -105.2512960000000000 36.9956049999999980, -105.4193100000000000 36.9958560000000030, -105.4381027436132300 36.9959680306975970, -105.4424590000000000 36.9959940000000030, -105.4472550000000000 36.9960169999999950, -105.4651820000000000 36.9959909999999970, -105.4708767069258500 36.9959784767062560, -105.5088359999999900 36.9958949999999900, -105.5124850000000000 36.9957769999999970, -105.5339220000000000 36.9958749999999980, -105.6274699999999900 36.9956790000000030, -105.6647199999999900 36.9958740000000010, -105.7164710000000000 36.9958489999999930, -105.7184073045491700 36.9958460161492080, -105.9961590000000100 36.9954180000000010, -105.9974720000000000 36.9954170000000030, -106.0066339999999900 36.9953429999999980, -106.0998058674331200 36.9947591067049760, -106.1639713822180900 36.9943569916150140, -106.2014689999999900 36.9941219999999970, -106.2477050000000000 36.9942660000000030, -106.2486750000000100 36.9942879999999900, -106.2932790000000000 36.9938900000000000, -106.3254286788247500 36.9941092316646730, -106.3431389999999800 36.9942300000000020, -106.4762779528519600 36.9938393350510210, -106.5005890000000100 36.9937679999999960, -106.6171590000000000 36.9929670000000000, -106.6171249999999900 36.9930039999999990, -106.6286520000000000 36.9931750000000010, -106.6287329999999800 36.9931609999999940, -106.6613440000000000 36.9932430000000000, -106.6756259999999900 36.9931229999999970, -106.7505910000000000 36.9924609999999990, -106.7820952897146500 36.9924517499673660, -106.8697959999999900 36.9924259999999950, -106.8772919999999800 37.0001389999999900, -106.9188864633427000 37.0001287471619240, -106.9560183645763800 37.0001195943242540, -107.1072626267445100 37.0000823133304520, -107.2552027234696400 37.0000458467977750, -107.4209130000000000 37.0000049999999940, -107.4224150136806600 37.0000049896361030, -107.4421819991443200 37.0000048532438730, -107.4817370013986600 37.0000045803142900, -107.5240868464170200 37.0000042881002860, -107.6007136407778000 37.0000037593752680, -107.7124779008385600 37.0000029882016790, -107.8556954995019300 37.0000020000000020, -107.8663089376175300 37.0000019267672610, -107.8691399085863600 37.0000019072335460, -107.8691806993063300 37.0000019069521000, -108.0006230000000000 37.0000009999999970, -108.1791870752784600 36.9992931616249270, -108.1871395402988700 36.9992616375912750, -108.2493580000000000 36.9990150000000000, -108.2506349999999900 36.9995610000000000, -108.2880860000000100 36.9995550000000010, -108.2884000000000000 36.9995199999999970, -108.3204640000000000 36.9994990000000000, -108.3207209999999900 36.9995100000000010, -108.3791655704288800 36.9994589777070430, -108.6196889999999900 36.9992489999999990, -108.6203090000000100 36.9992870000000020, -108.7492698254058500 36.9991399338227680, -108.9544040000000000 36.9989059999999980, -108.9588680000000000 36.9989130000000020, -109.0452229999999900 36.9990840000000030, -109.0451659999999800 37.0727419999999980, -109.0450580000000000 37.0746609999999990, -109.0449950000000000 37.0864290000000030, -109.0451889999999900 37.0962709999999940, -109.0451730000000100 37.1094640000000030, -109.0452029999999900 37.1119579999999940, -109.0451559999999900 37.1120639999999970, -109.0459950000000000 37.1772789999999990, -109.0459780000000100 37.2018309999999990, -109.0458015051062800 37.2050708135988660, -109.0454869999999900 37.2108440000000020, -109.0455598795331900 37.2397756720027080, -109.0455601977475200 37.2399019965338450, -109.0455839999999900 37.2493509999999970, -109.0460389999999900 37.2499930000000030, -109.0458980422733100 37.3269349905485300, -109.0458100000000000 37.3749930000000030, -109.0437991323256200 37.4690283342420190, -109.0434637832608200 37.4847104508718160, -109.0434249427800400 37.4865267700853340, -109.0431370000000000 37.4999919999999990, -109.0419150000000000 37.5306530000000010, -109.0418650000000000 37.5307260000000010, -109.0418059999999900 37.6041710000000010, -109.0421310000000000 37.6176620000000030, -109.0420890000000000 37.6237950000000010, -109.0422690000000000 37.6660669999999980, -109.0417320000000000 37.7112139999999980, -109.0417600000000000 37.7131820000000030, -109.0416360000000000 37.7402099999999980, -109.0420980000000000 37.7499899999999970, -109.0420421489000700 37.7543839997998490, -109.0414610000000000 37.8001050000000020, -109.0417540000000000 37.8358259999999900, -109.0417229999999900 37.8420509999999980, -109.0418440000000000 37.8727880000000000, -109.0416528185789500 37.8811669027885570, -109.0410580000000100 37.9072359999999970, -109.0431209999999900 37.9742600000000010, -109.0428189999999900 37.9970679999999990, -109.0428199999999900 37.9993010000000030, -109.0419724039658400 38.1317991668174590, -109.0418366569747100 38.1530194495367920, -109.0417619999999900 38.1646900000000000, -109.0546480000000000 38.2449209999999980, -109.0600619999999900 38.2754890000000000, -109.0599620000000000 38.4999869999999900, -109.0602530000000000 38.5993279999999930, -109.0595410000000000 38.7198879999999970, -109.0573880000000000 38.7954559999999940, -109.0572160449167600 38.7997308495970760, -109.0541889999999900 38.8749839999999980, -109.0539429999999900 38.9044140000000030, -109.0537970000000000 38.9052839999999950, -109.0532330000000100 38.9424670000000010, -109.0532919999999800 38.9428780000000000, -109.0524359999999900 38.9999850000000020, -109.0515879125035400 39.1157342577700790, -109.0515835157382700 39.1163343400931040, -109.0515807806367500 39.1167076340895430, -109.0515120000000000 39.1260949999999990, -109.0507650000000000 39.3666770000000030, -109.0513629999999800 39.4976740000000040, -109.0510402483332400 39.6604720118441210, -109.0506149999999900 39.8749699999999980, -109.0508730000000000 40.0589149999999990, -109.0508130000000100 40.0595789999999920, -109.0509440000000000 40.1807119999999930, -109.0509730000000000 40.1808490000000020, -109.0509687158226500 40.2226624122704100, -109.0509460000000000 40.4443679999999970, -109.0503140000000000 40.4950920000000000, -109.0506979999999800 40.4999630000000010, -109.0499550000000000 40.5399010000000000, -109.0500740000000000 40.5403579999999980, -109.0500719640466700 40.5404371043087370, -109.0480440000000000 40.6192309999999990, -109.0482490000000000 40.6536009999999950, -109.0490880000000000 40.7145620000000010, -109.0484550000000000 40.8260810000000020, -109.0500760000000000 41.0006589999999990, -108.8841379999999900 41.0000939999999970, -108.6311080000000000 41.0001559999999900, -108.5266670000000000 40.9996080000000020, -108.5006590000000000 41.0001120000000010, -108.2506490000000000 41.0001140000000040, -108.1812270000000100 41.0004549999999950, -108.0892190031385500 41.0015541392473680, -108.0465390000000000 41.0020639999999970, -107.9232341223959400 41.0020370519008000, -107.9184209999999800 41.0020359999999970))
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/country.mysql.sql b/webapp/django/contrib/gis/tests/geoapp/sql/country.mysql.sql
deleted file mode 100644
index cd1cd78..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/country.mysql.sql
+++ /dev/null
@@ -1,4 +0,0 @@
--- New Zealand bondary courtesy of 'world_borders.shp', which was assembled from public domain sources by Schuyler Erle. See: http://mappinghacks.com/data/
--- Texas boundary data is a data product from the U.S. Census Bureau.  See 'state.sql' for more information.
-INSERT INTO geoapp_country (`name`, `mpoly`) VALUES ('New Zealand', GeomFromText('MULTIPOLYGON (((174.616364000000004 -36.100861000000002,174.634978999999987 -36.124718,174.708862000000011 -36.205559,174.781096999999988 -36.266945,174.812744000000009 -36.339165,174.768311000000011 -36.34639,174.710784999999987 -36.525832999999999,174.708587999999992 -36.533332999999999,174.70773299999999 -36.541671999999998,174.714690999999988 -36.595832999999999,174.717194000000006 -36.603057999999997,174.774414000000007 -36.730277999999998,174.808319000000012 -36.805275000000002,174.854400999999996 -36.847777999999998,174.896636999999998 -36.878334000000002,175.011658000000011 -36.871941,175.020813000000004 -36.873610999999997,175.055542000000003 -36.880279999999999,175.076629999999994 -36.890839,175.082458000000003 -36.895279000000002,175.087463000000014 -36.900832999999999,175.091644000000002 -36.925559999999997,175.161652000000004 -36.955559,175.221069 -36.937775000000002,175.230255 -36.939438000000003,175.278320000000008 -36.965279000000002,175.310516000000007 -36.995002999999997,175.319976999999994 -37.005836000000002,175.323853000000014 -37.012222,175.328856999999999 -37.026947,175.330261000000007 -37.035277999999998,175.330535999999995 -37.044449,175.321899000000002 -37.06472,175.31942699999999 -37.095275999999998,175.317748999999992 -37.144165,175.319121999999993 -37.152495999999999,175.328856999999999 -37.168892,175.373290999999995 -37.216659999999997,175.385254000000003 -37.225830000000002,175.404967999999997 -37.228050000000003,175.579131999999987 -37.244446000000003,175.58914200000001 -37.169449,175.551636000000002 -37.024718999999997,175.547484999999995 -37.009171000000002,175.542480000000012 -36.994446000000003,175.536102 -36.980826999999998,175.524993999999992 -36.961669999999998,175.498566000000011 -36.927222999999998,175.484406000000007 -36.920279999999998,175.476348999999999 -36.917777999999998,175.464416999999997 -36.90889,175.435241999999988 -36.866942999999999,175.46691899999999 -36.809998,175.509430000000009 -36.776108,175.486358999999993 -36.679726000000002,175.463593000000003 -36.621383999999999,175.378296000000006 -36.570557,175.366364000000004 -36.561667999999997,175.361633000000012 -36.556389000000003,175.356628 -36.541671999999998,175.353850999999992 -36.525002,175.35244800000001 -36.489998,175.353577 -36.481940999999999,175.360229000000004 -36.478050000000003,175.538025000000005 -36.514724999999999,175.542755 -36.519996999999996,175.604950000000002 -36.622771999999998,175.631072999999986 -36.710555999999997,175.763610999999997 -36.713614999999997,175.840789999999998 -36.754173000000002,175.733582000000013 -36.805832000000002,175.701629999999994 -36.844161999999997,175.707458000000003 -36.869995000000003,175.709960999999993 -36.875275000000002,175.714690999999988 -36.880828999999999,175.720519999999993 -36.885277000000002,175.735779000000008 -36.891387999999999,175.74383499999999 -36.893889999999999,175.758330999999998 -36.876106,175.761382999999995 -36.869446000000003,175.757751000000013 -36.863059999999997,175.753051999999997 -36.857779999999998,175.749114999999989 -36.851394999999997,175.75 -36.843055999999997,175.752196999999995 -36.835555999999997,175.756378000000012 -36.830002,175.765533000000005 -36.828055999999997,175.808013999999986 -36.824173000000002,175.817200000000014 -36.825836000000002,175.833587999999992 -36.830832999999998,175.845519999999993 -36.839722000000002,175.849120999999997 -36.846107000000003,175.878570999999994 -36.914444000000003,175.881072999999986 -36.921669,175.918304000000006 -37.067504999999997,175.917480000000012 -37.075836000000002,175.915253000000007 -37.083061,175.898314999999997 -37.115004999999996,175.884154999999993 -37.168892,175.883330999999998 -37.176949,175.887206999999989 -37.244163999999998,175.892212 -37.249724999999998,175.921082000000013 -37.251671000000002,175.927185000000009 -37.256110999999997,175.93081699999999 -37.262504999999997,175.936371000000008 -37.278885000000002,175.940093999999988 -37.299717,175.974396000000013 -37.418059999999997,175.976074000000011 -37.453055999999997,176.026931999999988 -37.483108999999999,176.035583000000003 -37.487282,176.059417999999994 -37.502502,176.088287000000008 -37.525557999999997,176.093291999999991 -37.531112999999998,176.165526999999997 -37.613892,176.169433999999995 -37.620277000000002,176.167205999999993 -37.625832000000003,176.160247999999996 -37.624167999999997,176.082458000000003 -37.602500999999997,176.066924999999998 -37.59639,176.061095999999992 -37.591942000000003,176.057189999999991 -37.585555999999997,176.062744000000009 -37.580832999999998,176.070800999999989 -37.577781999999999,176.088287000000008 -37.580002,176.095245000000006 -37.576110999999997,176.090239999999994 -37.570838999999999,176.062468999999993 -37.546669,176.023087000000004 -37.528221000000002,176.018767999999994 -37.526057999999999,176.013931000000014 -37.524554999999999,176.007598999999999 -37.524222999999999,175.955535999999995 -37.521110999999998,175.946349999999995 -37.523055999999997,175.940796000000006 -37.527779000000002,175.953583000000009 -37.558891000000003,175.994415000000004 -37.638893000000003,176.071899000000002 -37.655273,176.14498900000001 -37.675277999999999,176.242187999999999 -37.709442000000003,176.267486999999988 -37.676392,176.488281 -37.756667999999998,176.521636999999998 -37.769447,176.527771 -37.773887999999999,176.537475999999998 -37.784447,176.549712999999997 -37.793334999999999,176.656646999999992 -37.855559999999997,176.671082000000013 -37.862502999999997,176.686645999999996 -37.868332000000002,176.759154999999993 -37.892775999999998,176.784149000000014 -37.900275999999998,176.80304000000001 -37.903328000000002,176.819702000000007 -37.904442000000003,176.838287000000008 -37.907501000000003,176.917755 -37.926108999999997,176.943848000000003 -37.932502999999997,177.08273299999999 -37.967216,177.107468000000011 -37.987220999999998,177.159424 -38.013336000000002,177.415253000000007 -37.982498,177.47357199999999 -37.962502,177.545806999999996 -37.919167000000002,177.552459999999996 -37.915000999999997,177.571625000000012 -37.902222000000002,177.599120999999997 -37.878051999999997,177.603577 -37.872498,177.646941999999996 -37.805,177.732178000000005 -37.682502999999997,177.738861000000014 -37.678336999999999,177.746917999999994 -37.675277999999999,177.791931000000005 -37.666946000000003,177.849396000000013 -37.657218999999998,177.858856000000003 -37.656661999999997,177.868010999999996 -37.654442000000003,177.875792999999987 -37.651389999999999,178.0 -37.592224000000002,178.006653 -37.588332999999999,178.012206999999989 -37.583328000000002,178.018004999999988 -37.550831000000002,178.05581699999999 -37.542777999999998,178.064972000000012 -37.542228999999999,178.187744000000009 -37.546951,178.281921000000011 -37.560828999999998,178.306915000000004 -37.568061999999998,178.311919999999986 -37.573334000000003,178.312468999999993 -37.578887999999999,178.306915000000004 -37.583610999999998,178.321075000000008 -37.602500999999997,178.336365 -37.618332000000002,178.34970100000001 -37.626944999999999,178.367737000000005 -37.630828999999999,178.448028999999991 -37.645279000000002,178.457458000000003 -37.646667,178.468018 -37.646949999999997,178.488861000000014 -37.644165,178.497192000000013 -37.646667,178.504424999999998 -37.649994,178.550536999999991 -37.6875,178.555542000000003 -37.692497000000003,178.559692000000013 -37.698883000000002,178.56552099999999 -37.713332999999999,178.562468999999993 -37.719994,178.483306999999996 -37.826393000000003,178.455230999999998 -37.860000999999997,178.449982000000006 -37.865004999999996,178.429687999999999 -37.876944999999999,178.419983000000002 -37.887779000000002,178.350525000000005 -38.004722999999998,178.347473000000008 -38.011116,178.347197999999992 -38.019722000000002,178.348846000000009 -38.027779000000002,178.354950000000002 -38.032218999999998,178.360229000000004 -38.037506,178.364136000000002 -38.043616999999998,178.375792999999987 -38.072777000000002,178.378296000000006 -38.089995999999999,178.377746999999999 -38.09861,178.353850999999992 -38.185555,178.319976999999994 -38.248055,178.318024000000008 -38.255561999999998,178.317474000000004 -38.263893000000003,178.320800999999989 -38.398612999999997,178.302459999999996 -38.528885000000002,178.300536999999991 -38.536391999999999,178.296356000000003 -38.541946000000003,178.158874999999995 -38.649169999999998,178.074982000000006 -38.713889999999999,178.068297999999999 -38.717773,178.060241999999988 -38.721107000000003,178.050812000000008 -38.721381999999998,178.044433999999995 -38.717216,177.928864000000004 -38.722220999999998,177.941070999999994 -38.793616999999998,177.923858999999993 -38.918334999999999,177.917786000000007 -38.942802,177.909697999999992 -38.969718999999998,177.897705000000002 -39.047942999999997,177.893859999999989 -39.064776999999999,177.906708000000009 -39.064278000000002,177.923034999999999 -39.089165,177.942200000000014 -39.091942000000003,177.967743000000013 -39.098334999999999,177.991332999999997 -39.115004999999996,177.996612999999996 -39.120277000000002,177.999390000000005 -39.127495000000003,177.909973000000008 -39.256950000000003,177.898865 -39.267502,177.874968999999993 -39.286118000000002,177.868010999999996 -39.290283000000002,177.861908 -39.285834999999999,177.844970999999987 -39.251396,177.839416999999997 -39.236946000000003,177.824127000000004 -39.193053999999997,177.823577999999998 -39.183883999999999,177.826629999999994 -39.177222999999998,177.841644000000002 -39.152779000000002,177.822021000000007 -39.114445000000003,177.823195999999996 -39.110115,177.82351700000001 -39.105110000000003,177.82119800000001 -39.101275999999999,177.816696000000007 -39.099274,177.680266999999986 -39.075279000000002,177.628845000000013 -39.071114,177.426085999999998 -39.064163,177.387755999999996 -39.077781999999999,177.246917999999994 -39.128334000000002,177.206085000000002 -39.143616000000002,177.149138999999991 -39.165000999999997,177.054961999999989 -39.204445,176.935790999999995 -39.349997999999999,176.931365999999997 -39.355559999999997,176.903870000000012 -39.398055999999997,176.898865 -39.412216,176.89776599999999 -39.438048999999999,176.899414000000007 -39.446387999999999,176.946625000000012 -39.664444000000003,177.01080300000001 -39.654998999999997,177.107178000000005 -39.660828000000002,177.116913000000011 -39.662216,177.120789000000002 -39.66861,177.119110000000006 -39.676108999999997,177.115783999999991 -39.682502999999997,177.08273299999999 -39.729996,177.073577999999998 -39.741385999999999,177.068024000000008 -39.746108999999997,177.059692000000013 -39.749167999999997,177.050262000000004 -39.751396,177.033874999999995 -39.757506999999997,177.028045999999989 -39.762504999999997,177.023590000000013 -39.768059,177.020263999999997 -39.774718999999997,176.894713999999993 -40.034728999999999,176.890533000000005 -40.049728000000002,176.889983999999998 -40.058052000000004,176.89498900000001 -40.082779000000002,176.893035999999995 -40.090279000000002,176.874114999999989 -40.121383999999999,176.834136999999998 -40.181671,176.808319000000012 -40.216659999999997,176.796935999999988 -40.226387000000003,176.687195000000003 -40.321387999999999,176.644135000000006 -40.379997000000003,176.628296000000006 -40.421944000000003,176.539977999999991 -40.495002999999997,176.521362000000011 -40.513893000000003,176.500823999999994 -40.535004,176.441924999999998 -40.600281000000003,176.405243000000013 -40.643889999999999,176.386108000000007 -40.675002999999997,176.35522499999999 -40.688606,176.349396000000013 -40.693610999999997,176.288574000000011 -40.793892,176.239136000000002 -40.90889,176.22079500000001 -40.931671,176.195526 -40.941665999999998,176.172760000000011 -40.952224999999999,176.158600000000007 -40.959999000000003,176.152771 -40.964722000000002,176.142212 -40.975273,176.134154999999993 -40.987502999999997,176.120789000000002 -41.013618,176.11300700000001 -41.035277999999998,176.098297000000002 -41.087218999999997,176.087463000000014 -41.116112,176.080811000000011 -41.129165999999998,176.062195000000003 -41.151938999999999,175.984679999999997 -41.231383999999998,175.955230999999998 -41.255279999999999,175.819121999999993 -41.347220999999998,175.743561 -41.392226999999998,175.736358999999993 -41.396110999999998,175.557738999999998 -41.485000999999997,175.471069 -41.541389000000002,175.427459999999996 -41.564444999999999,175.323028999999991 -41.614449,175.313292999999987 -41.616394,175.230804000000006 -41.620834000000002,175.222197999999992 -41.618332000000002,175.21691899999999 -41.612777999999999,175.184692000000013 -41.535834999999999,175.181915000000004 -41.519447,175.181091000000009 -41.500838999999999,175.188568000000004 -41.461112999999997,175.193024000000008 -41.446106,175.193848000000003 -41.437775000000002,175.191070999999994 -41.430557,175.186095999999992 -41.425002999999997,175.080261000000007 -41.385559,175.063018999999997 -41.380279999999999,175.05304000000001 -41.378608999999997,175.045532000000009 -41.378608999999997,175.027190999999988 -41.381667999999998,174.993286000000012 -41.393332999999998,174.985779000000008 -41.397224,174.972747999999996 -41.405830000000002,174.960509999999999 -41.415275999999999,174.949982000000006 -41.425559999999997,174.944976999999994 -41.431114,174.94165000000001 -41.437775000000002,174.936919999999986 -41.443328999999999,174.918578999999994 -41.448051,174.908600000000007 -41.448334000000003,174.872467 -41.429442999999999,174.86605800000001 -41.425002999999997,174.861084000000005 -41.419724000000002,174.861633000000012 -41.347496,174.863861000000014 -41.340279000000002,174.870789000000002 -41.327224999999999,174.87912 -41.315002,174.883881000000002 -41.309441,174.894440000000003 -41.290000999999997,174.89776599999999 -41.282501000000003,174.899993999999992 -41.275002,174.901916999999997 -41.258338999999999,174.901916999999997 -41.251114,174.898865 -41.234444000000003,174.89498900000001 -41.228050000000003,174.887482000000006 -41.224442000000003,174.827179 -41.218887000000002,174.818848000000003 -41.221938999999999,174.787475999999998 -41.244446000000003,174.778045999999989 -41.255836000000002,174.774414000000007 -41.262222,174.771087999999992 -41.278053,174.778594999999996 -41.281387000000002,174.796082000000013 -41.286949,174.818024000000008 -41.284728999999999,174.824127000000004 -41.289169,174.829407000000003 -41.294724000000002,174.833313000000004 -41.301108999999997,174.832184000000012 -41.309441,174.82995600000001 -41.316665999999998,174.826355000000007 -41.323334000000003,174.821625000000012 -41.328887999999999,174.815796000000006 -41.333610999999998,174.807189999999991 -41.336387999999999,174.744689999999991 -41.347496,174.700531000000012 -41.344444000000003,174.671906000000007 -41.338332999999999,174.654694000000006 -41.333061,174.648314999999997 -41.328612999999997,174.629669000000007 -41.315002,174.59191899999999 -41.27861,174.591644000000002 -41.271385000000002,174.594116000000014 -41.263893000000003,174.601074000000011 -41.250838999999999,174.608306999999996 -41.237777999999999,174.61300700000001 -41.232216,174.619110000000006 -41.23111,174.627746999999999 -41.233887000000003,174.637482000000006 -41.235557999999997,174.648590000000013 -41.234444000000003,174.666931000000005 -41.229720999999998,174.681365999999997 -41.221938999999999,174.694702000000007 -41.213614999999997,174.712738000000002 -41.199440000000003,174.718567000000007 -41.194716999999997,174.800812000000008 -41.100281000000003,174.844421000000011 -41.041671999999998,174.874390000000005 -41.018059,174.882721000000004 -41.015006999999997,174.892486999999988 -41.013061999999998,174.901093000000003 -41.010283999999999,174.908324999999991 -41.006393000000003,174.932189999999991 -40.987502999999997,174.94165000000001 -40.976387000000003,174.945251000000013 -40.969718999999998,174.947478999999987 -40.962218999999997,175.014983999999998 -40.84861,175.09857199999999 -40.755836000000002,175.112731999999994 -40.738892,175.120789000000002 -40.726944000000003,175.127746999999999 -40.713614999999997,175.164153999999996 -40.631943,175.169708000000014 -40.616942999999999,175.171906000000007 -40.609726000000002,175.187468999999993 -40.530830000000002,175.23800700000001 -40.329726999999998,175.23135400000001 -40.280830000000002,175.201629999999994 -40.181671,175.196349999999995 -40.166946000000003,175.178314 -40.134171000000002,175.15554800000001 -40.095832999999999,175.071625000000012 -40.003059,175.055542000000003 -39.987777999999999,175.022217000000012 -39.958053999999997,174.986358999999993 -39.93,174.974120999999997 -39.920836999999999,174.960784999999987 -39.912773,174.938873 -39.902222000000002,174.923034999999999 -39.895836000000003,174.836638999999991 -39.865004999999996,174.828307999999993 -39.862502999999997,174.790802000000014 -39.854720999999998,174.781096999999988 -39.853057999999997,174.751373 -39.865555,174.740509000000003 -39.866661,174.729674999999986 -39.865836999999999,174.57607999999999 -39.829169999999998,174.558013999999986 -39.824722,174.549408 -39.822226999999998,174.542205999999993 -39.818610999999997,174.523865 -39.805,174.421356000000003 -39.726944000000003,174.410521999999986 -39.716942000000003,174.376068000000004 -39.678612,174.353577 -39.639999000000003,174.348846000000009 -39.634444999999999,174.336638999999991 -39.625557,174.316070999999994 -39.613892,174.30886799999999 -39.610283000000003,174.217194000000006 -39.579726999999998,174.208862000000011 -39.577224999999999,174.040802000000014 -39.552779999999998,173.997741999999988 -39.551392,173.986908 -39.550552000000003,173.970245000000006 -39.545279999999998,173.963012999999989 -39.541671999999998,173.871062999999992 -39.483330000000002,173.851898000000006 -39.470551,173.839966000000004 -39.461387999999999,173.810790999999995 -39.4375,173.79525799999999 -39.421944000000003,173.786652000000004 -39.409996,173.775817999999987 -39.390839,173.769713999999993 -39.376944999999999,173.762206999999989 -39.354720999999998,173.754424999999998 -39.305,173.751923000000005 -39.288612,173.751647999999989 -39.269996999999996,173.781921000000011 -39.191383000000002,173.785247999999996 -39.184998,173.800536999999991 -39.169167000000002,173.82995600000001 -39.145836000000003,173.844421000000011 -39.138336000000002,173.868010999999996 -39.128883000000002,173.892761000000007 -39.120552000000004,174.011108000000007 -39.073334000000003,174.114685000000009 -39.024445,174.187744000000009 -38.988608999999997,174.209136999999998 -38.977218999999998,174.226623999999987 -38.972496,174.248016000000007 -38.970551,174.259978999999987 -38.970275999999998,174.281372000000005 -38.969994,174.293029999999987 -38.969994,174.313292999999987 -38.972496,174.351348999999999 -38.979438999999999,174.375244000000009 -38.979163999999997,174.384704999999997 -38.977218999999998,174.392761000000007 -38.974442000000003,174.456359999999989 -38.940277000000002,174.546082000000013 -38.871941,174.557738999999998 -38.860557999999997,174.568024000000008 -38.850281000000003,174.587738000000002 -38.828887999999999,174.594421000000011 -38.815834000000002,174.603302000000014 -38.786118000000002,174.608582000000013 -38.763061999999998,174.625518999999997 -38.677779999999998,174.642486999999988 -38.590836000000003,174.681091000000009 -38.379165999999998,174.724396000000013 -38.185828999999998,174.838561999999996 -38.157218999999998,174.848021999999986 -38.156944000000003,174.85635400000001 -38.154167,174.926636000000002 -38.116112,174.932465000000008 -38.111389000000003,174.940246999999999 -38.101112,174.898590000000013 -38.075004999999997,174.877166999999986 -38.064163,174.892486999999988 -37.976387000000003,174.893585000000002 -37.969994,174.868286000000012 -37.943610999999997,174.861084000000005 -37.939995000000003,174.85522499999999 -37.944716999999997,174.834686000000005 -37.963614999999997,174.830261000000007 -37.969161999999997,174.828033000000005 -37.976661999999997,174.828583000000009 -37.995002999999997,174.822754000000003 -37.999724999999998,174.814696999999995 -38.002502,174.804137999999995 -38.001944999999999,174.797211000000004 -37.998336999999999,174.791077 -37.993614,174.786376999999987 -37.988334999999999,174.783874999999995 -37.980826999999998,174.783600000000007 -37.971663999999997,174.788025000000005 -37.868332000000002,174.788879000000009 -37.860000999999997,174.791077 -37.852783000000002,174.795532000000009 -37.846947,174.819702000000007 -37.829169999999998,174.826629999999994 -37.825279000000002,174.841339000000005 -37.818610999999997,174.872741999999988 -37.806106999999997,174.883330999999998 -37.805,174.903045999999989 -37.807502999999997,174.945251000000013 -37.810555,174.967467999999997 -37.809165999999998,174.975525000000005 -37.806389000000003,174.974975999999998 -37.75,174.974670000000003 -37.740836999999999,174.966644000000002 -37.739998,174.951355000000007 -37.743057,174.94442699999999 -37.745002999999997,174.93081699999999 -37.752502,174.906921000000011 -37.774169999999998,174.870789000000002 -37.783057999999997,174.861633000000012 -37.785004,174.848297000000002 -37.769722000000002,174.828307999999993 -37.710830999999999,174.764160000000004 -37.527779000000002,174.744415000000004 -37.487502999999997,174.724975999999998 -37.447220000000002,174.717467999999997 -37.425002999999997,174.714690999999988 -37.408607000000003,174.714690999999988 -37.399445,174.719116000000014 -37.393616000000002,174.725799999999992 -37.389999000000003,174.744415000000004 -37.385834000000003,174.760528999999991 -37.380279999999999,174.767486999999988 -37.376389000000003,174.773041000000006 -37.371665999999998,174.831635000000006 -37.308052000000004,174.840789999999998 -37.296951,174.840515000000011 -37.291389000000002,174.82995600000001 -37.290557999999997,174.821899000000002 -37.291671999999998,174.812744000000009 -37.293616999999998,174.804687999999999 -37.296393999999999,174.797760000000011 -37.300277999999999,174.766083000000009 -37.321114,174.754700000000014 -37.330559,174.751373 -37.336945,174.744965000000008 -37.359169,174.740509000000003 -37.364722999999998,174.733582000000013 -37.368606999999997,174.724120999999997 -37.368889000000003,174.717194000000006 -37.365279999999998,174.711365 -37.360557999999997,174.701629999999994 -37.349724000000002,174.69442699999999 -37.336945,174.660187000000008 -37.273311999999997,174.645813000000004 -37.236389000000003,174.639709000000011 -37.224442000000003,174.599975999999998 -37.153885000000002,174.578307999999993 -37.115555,174.569976999999994 -37.103614999999998,174.555542000000003 -37.087502,174.551909999999992 -37.080832999999998,174.549712999999997 -37.073616,174.55304000000001 -37.067222999999998,174.558593999999999 -37.0625,174.568848000000003 -37.061385999999999,174.644135000000006 -37.061110999999997,174.661376999999987 -37.065551999999997,174.664977999999991 -37.071944999999999,174.666381999999999 -37.080283999999999,174.661925999999994 -37.085830999999999,174.650542999999999 -37.095275999999998,174.646087999999992 -37.100838000000003,174.648590000000013 -37.108055,174.703856999999999 -37.197777000000002,174.733856000000003 -37.196106,174.716644000000002 -37.154167,174.72357199999999 -37.150275999999998,174.87912 -37.088889999999999,174.887482000000006 -37.059165999999998,174.795532000000009 -37.023055999999997,174.804413000000011 -36.972220999999998,174.824982000000006 -36.960830999999999,174.829407000000003 -36.955002,174.83273299999999 -36.948608,174.828033000000005 -36.943053999999997,174.818848000000003 -36.941383000000002,174.770263999999997 -36.936661,174.696625000000012 -36.93972,174.686095999999992 -36.940834000000002,174.659697999999992 -36.947495000000004,174.653045999999989 -36.951393000000003,174.641662999999994 -36.960830999999999,174.622467 -36.982216,174.619110000000006 -36.988892,174.617187999999999 -36.996108999999997,174.600525000000005 -37.022224,174.524688999999995 -37.045555,174.515533000000005 -37.045555,174.508605999999986 -37.041946000000003,174.502472000000012 -37.037506,174.498016000000007 -37.031944000000003,174.490783999999991 -37.019165,174.484679999999997 -37.005561999999998,174.459228999999993 -36.944031000000003,174.451904000000013 -36.923889000000003,174.446930000000009 -36.909163999999997,174.443024000000008 -36.893616000000002,174.439147999999989 -36.868606999999997,174.436645999999996 -36.852226000000002,174.43386799999999 -36.835555999999997,174.427764999999994 -36.812775000000002,174.422760000000011 -36.798057999999997,174.416655999999989 -36.784171999999998,174.409697999999992 -36.771385000000002,174.406096999999988 -36.765006999999997,174.390533000000005 -36.740279999999998,174.344299000000007 -36.679336999999997,174.301085999999998 -36.62722,174.284973000000008 -36.612777999999999,174.267486999999988 -36.599167,174.236908 -36.568061999999998,174.208862000000011 -36.535277999999998,174.187744000000009 -36.496948000000003,174.17804000000001 -36.467498999999997,174.177764999999994 -36.458336000000003,174.178864000000004 -36.449997000000003,174.181091000000009 -36.442497000000003,174.184417999999994 -36.436110999999997,174.189972000000012 -36.431389000000003,174.196930000000009 -36.427779999999998,174.20495600000001 -36.428612,174.24383499999999 -36.440834000000002,174.251923000000005 -36.443610999999997,174.257751000000013 -36.448051,174.300262000000004 -36.515839,174.348846000000009 -36.601944000000003,174.367919999999998 -36.629165999999998,174.370728000000014 -36.6325,174.422484999999995 -36.667220999999998,174.430542000000003 -36.668059999999997,174.453033000000005 -36.651108,174.456359999999989 -36.644722000000002,174.465515000000011 -36.582779000000002,174.465515000000011 -36.532218999999998,174.442474000000004 -36.414718999999998,174.422211000000004 -36.366112,174.41885400000001 -36.370834000000002,174.391937000000013 -36.395004,174.384978999999987 -36.398887999999999,174.377166999999986 -36.401665,174.303864000000004 -36.395279000000002,174.296935999999988 -36.391669999999998,174.285247999999996 -36.3825,174.276916999999997 -36.370552000000004,174.26998900000001 -36.357779999999998,174.268585000000002 -36.349442000000003,174.268585000000002 -36.342224000000002,174.292205999999993 -36.316947999999996,174.299988000000013 -36.314163,174.308013999999986 -36.316947999999996,174.325531000000012 -36.330283999999999,174.334686000000005 -36.332222000000002,174.36883499999999 -36.331673000000002,174.376891999999998 -36.330832999999998,174.421248999999989 -36.310611999999999,174.50692699999999 -36.267220000000002,174.518311000000011 -36.258057,174.521636999999998 -36.251396,174.519135000000006 -36.245834000000002,174.505248999999992 -36.231383999999998,174.413299999999992 -36.263061999999998,174.378296000000006 -36.286667,174.364685000000009 -36.294167000000002,174.346619000000004 -36.298057999999997,174.336365 -36.298889000000003,174.305237000000005 -36.287506,174.365233999999987 -36.260002,174.442200000000014 -36.169724000000002,174.396087999999992 -36.144447,174.396362000000011 -36.151938999999999,174.394135000000006 -36.159163999999997,174.373290999999995 -36.206389999999999,174.369965000000008 -36.213057999999997,174.358856000000003 -36.222220999999998,174.345245000000006 -36.229720999999998,174.337463000000014 -36.232773000000002,174.33273299999999 -36.229163999999997,174.307738999999998 -36.176949,174.282745000000006 -36.121108999999997,174.274993999999992 -36.118332000000002,174.239409999999992 -36.111389000000003,174.229126000000008 -36.112502999999997,174.195251000000013 -36.131110999999997,174.188568000000004 -36.144165,174.185790999999995 -36.171944000000003,174.191345000000013 -36.176392,174.19830300000001 -36.18,174.217743000000013 -36.182502999999997,174.226898000000006 -36.182502999999997,174.236084000000005 -36.180557,174.244110000000006 -36.183059999999998,174.287749999999988 -36.210281000000002,174.312468999999993 -36.236663999999998,174.314696999999995 -36.243889000000003,174.267212 -36.270279000000002,174.259430000000009 -36.273055999999997,174.251373 -36.272499000000003,174.065796000000006 -36.168334999999999,173.999114999999989 -36.121108999999997,173.994415000000004 -36.115836999999999,173.99105800000001 -36.109444000000003,173.931091000000009 -35.981940999999999,173.938568000000004 -35.934998,173.947478999999987 -35.923889000000003,173.948577999999998 -35.915550000000003,173.946075000000008 -35.908051,173.913879000000009 -35.86972,173.908324999999991 -35.874442999999999,173.903870000000012 -35.879997000000003,173.904967999999997 -35.888336000000002,173.921356000000003 -36.003059,173.980804000000006 -36.121383999999999,173.987731999999994 -36.134171000000002,173.992461999999989 -36.139724999999999,174.124390000000005 -36.263618,174.176085999999998 -36.276947,174.180542000000003 -36.282501000000003,174.198853000000014 -36.343887000000002,174.199982000000006 -36.352226000000002,174.198028999999991 -36.368606999999997,174.194702000000007 -36.375275000000002,174.189147999999989 -36.379722999999998,174.115233999999987 -36.40361,174.089966000000004 -36.411385000000003,174.080811000000011 -36.409438999999999,174.06942699999999 -36.400275999999998,174.065796000000006 -36.393889999999999,174.057465000000008 -36.374718,174.049133000000012 -36.353614999999998,174.044433999999995 -36.338889999999999,174.039703000000003 -36.323334000000003,174.031096999999988 -36.293059999999997,174.020537999999988 -36.273887999999999,173.82607999999999 -36.032501000000003,173.737457000000006 -35.933608999999997,173.727172999999993 -35.923614999999998,173.590515000000011 -35.778053,173.398865 -35.573891000000003,173.395537999999988 -35.567504999999997,173.398865 -35.553612,173.446625000000012 -35.440277000000002,173.465789999999998 -35.429169000000002,173.501923000000005 -35.419724000000002,173.506378000000012 -35.425277999999999,173.540253000000007 -35.430832000000002,173.629943999999995 -35.356667000000002,173.65554800000001 -35.322502,173.65554800000001 -35.313332000000003,173.564147999999989 -35.278053,173.556091000000009 -35.280830000000002,173.551636000000002 -35.286391999999999,173.549712999999997 -35.302779999999998,173.549712999999997 -35.321114,173.551909999999992 -35.328612999999997,173.566924999999998 -35.344161999999997,173.568024000000008 -35.361671,173.566924999999998 -35.36972,173.559143000000006 -35.372771999999998,173.439696999999995 -35.376106,173.416077 -35.384444999999999,173.410247999999996 -35.388893000000003,173.391356999999999 -35.423057999999997,173.39498900000001 -35.449722,173.396087999999992 -35.458053999999997,173.392761000000007 -35.482773000000002,173.386382999999995 -35.523330999999999,173.380524000000008 -35.528053,173.37384 -35.524169999999998,173.306915000000004 -35.449165,173.237731999999994 -35.370277000000002,173.154144000000002 -35.276665,173.103302000000014 -35.226104999999997,173.09191899999999 -35.216942000000003,173.087463000000014 -35.211387999999999,173.09191899999999 -35.1875,173.098846000000009 -35.183608999999997,173.119110000000006 -35.185555,173.12802099999999 -35.1875,173.134704999999997 -35.191108999999997,173.14498900000001 -35.191940000000002,173.152771 -35.189163,173.163879000000009 -35.179169000000002,173.168578999999994 -35.173614999999998,173.18081699999999 -35.156104999999997,173.187468999999993 -35.143332999999998,173.191924999999998 -35.128334000000002,173.196349999999995 -35.104446000000003,173.197478999999987 -35.09639,173.198577999999998 -35.078887999999999,173.198577999999998 -35.051108999999997,173.193848000000003 -35.027222000000002,173.189423000000005 -35.012779000000002,173.179413000000011 -34.993332000000002,173.175812000000008 -34.986946000000003,173.159149000000014 -34.958336000000003,173.151093000000003 -34.946663,173.137755999999996 -34.93,172.947204999999997 -34.716942000000003,172.828033000000005 -34.584442000000003,172.812468999999993 -34.568893000000003,172.722473000000008 -34.495277000000002,172.739136000000002 -34.435555,172.900817999999987 -34.414718999999998,172.911925999999994 -34.414718999999998,173.020813000000004 -34.422226000000002,173.038879000000009 -34.436942999999999,173.043304000000006 -34.517775999999998,173.039977999999991 -34.522224,173.033324999999991 -34.525832999999999,173.024414000000007 -34.527779000000002,173.016662999999994 -34.52861,173.007476999999994 -34.526947,172.997467 -34.498336999999999,172.984130999999991 -34.472771000000002,172.961914000000007 -34.465279000000002,172.955230999999998 -34.468887000000002,172.908324999999991 -34.544167000000002,172.912749999999988 -34.549728000000002,172.923858999999993 -34.558891000000003,172.936095999999992 -34.567222999999998,172.973021999999986 -34.581116000000002,173.053314 -34.665550000000003,173.057738999999998 -34.680283000000003,173.110503999999992 -34.791389000000002,173.120789000000002 -34.810555,173.128570999999994 -34.822502,173.133026 -34.828055999999997,173.13857999999999 -34.832504,173.151916999999997 -34.839995999999999,173.213593000000003 -34.871941,173.242737000000005 -34.884726999999998,173.273314999999997 -34.940834000000002,173.268859999999989 -34.946387999999999,173.262206999999989 -34.959167,173.259978999999987 -34.966659999999997,173.258881000000002 -34.974716,173.259978999999987 -34.983055,173.264709000000011 -35.014449999999997,173.269135000000006 -35.019722000000002,173.317474000000004 -35.018889999999999,173.328583000000009 -35.009444999999999,173.358856000000003 -34.98111,173.36300700000001 -34.975555,173.366364000000004 -34.968887000000002,173.373259999999988 -34.936774999999997,173.371246000000014 -34.927444,173.400817999999987 -34.863334999999999,173.426085999999998 -34.82,173.450806 -34.807777000000002,173.500274999999988 -34.864722999999998,173.499114999999989 -34.871108999999997,173.492461999999989 -34.874718,173.452453999999989 -34.887779000000002,173.443297999999999 -34.889724999999999,173.433319000000012 -34.890555999999997,173.413025000000005 -34.888893000000003,173.405243000000013 -34.892502,173.399719000000005 -34.897224,173.399719000000005 -34.906387000000002,173.402190999999988 -34.913887000000003,173.411590999999987 -34.931778,173.419128 -34.945830999999998,173.426909999999992 -34.957779000000002,173.431641000000013 -34.963332999999999,173.44165000000001 -34.973328000000002,173.454131999999987 -34.981667000000002,173.467467999999997 -34.988892,173.475525000000005 -34.991669000000002,173.493286000000012 -34.995277000000002,173.541655999999989 -34.988608999999997,173.561645999999996 -34.958893000000003,173.562468999999993 -34.950836000000002,173.566924999999998 -34.936110999999997,173.572478999999987 -34.931389000000003,173.579131999999987 -34.927779999999998,173.589416999999997 -34.928612,173.83914200000001 -35.004173000000002,174.101074000000011 -35.121108999999997,174.098297000000002 -35.161667,174.091644000000002 -35.158051,174.056641000000013 -35.155555999999997,174.021911999999986 -35.164161999999997,174.008026 -35.207504,174.008026 -35.215004,174.011382999999995 -35.221381999999998,174.018311000000011 -35.224997999999999,174.093841999999995 -35.225273,174.100525000000005 -35.228881999999999,174.143585000000002 -35.328612999999997,174.208008000000007 -35.323334000000003,174.218018 -35.322226999999998,174.247741999999988 -35.27861,174.319976999999994 -35.232773000000002,174.383881000000002 -35.337775999999998,174.461638999999991 -35.445273999999998,174.491913000000011 -35.485275,174.575806 -35.601944000000003,174.577179 -35.610000999999997,174.577147999999994 -35.618088,174.569976999999994 -35.648055999999997,174.563292999999987 -35.651665,174.530272999999994 -35.649445,174.520263999999997 -35.648612999999997,174.513306 -35.645004,174.505248999999992 -35.642502,174.479126000000008 -35.641945,174.47357199999999 -35.646393000000003,174.474975999999998 -35.654716,174.518311000000011 -35.724167,174.523041000000006 -35.729438999999999,174.554137999999995 -35.750281999999999,174.561919999999986 -35.753059,174.583862000000011 -35.764724999999999,174.60244800000001 -35.844444000000003,174.596924 -35.849167,174.58914200000001 -35.851944000000003,174.577758999999986 -35.852226000000002,174.560790999999995 -35.847777999999998,174.554961999999989 -35.843330000000002,174.538574000000011 -35.819450000000003,174.523314999999997 -35.796669,174.519713999999993 -35.790283000000002,174.49105800000001 -35.769447,174.361908 -35.723328000000002,174.357451999999995 -35.72361,174.34857199999999 -35.734726000000002,174.346924 -35.833061,174.350525000000005 -35.839438999999999,174.35522499999999 -35.845001000000003,174.360779000000008 -35.849442000000003,174.381348000000003 -35.851112,174.384704999999997 -35.844718999999998,174.385528999999991 -35.828887999999999,174.391083000000009 -35.824173000000002,174.398865 -35.821387999999999,174.437468999999993 -35.822777000000002,174.476074000000011 -35.824173000000002,174.486358999999993 -35.824722,174.519713999999993 -35.844718999999998,174.525542999999999 -35.849167,174.524414000000007 -35.855559999999997,174.521362000000011 -35.862220999999998,174.501373 -35.889999000000003,174.496917999999994 -35.895553999999997,174.487182999999987 -35.915000999999997,174.495513999999986 -35.988608999999997,174.498016000000007 -35.994163999999998,174.514160000000004 -36.008614,174.56942699999999 -36.037224000000002,174.578583000000009 -36.038894999999997,174.587738000000002 -36.038894999999997,174.596619000000004 -36.036667,174.606902999999988 -36.037506,174.612731999999994 -36.042228999999999,174.622192000000013 -36.053055,174.62912 -36.065834000000002,174.629394999999988 -36.075004999999997,174.616364000000004 -36.100861000000002)),((171.185241999999988 -44.938332000000003,171.182129000000003 -44.94173,171.175017999999994 -44.949902000000002,171.167923000000002 -44.959850000000003,171.165436 -44.966599000000002,171.164703000000003 -44.970275999999998,171.163299999999992 -44.978332999999999,171.149719000000005 -44.996665999999998,171.07995600000001 -45.067222999999998,171.02664200000001 -45.103332999999999,170.975525000000005 -45.151108,170.966063999999989 -45.163055,170.961914000000007 -45.169167000000002,170.921630999999991 -45.243057,170.873566000000011 -45.358055,170.873290999999995 -45.367218,170.876891999999998 -45.373885999999999,170.871338000000009 -45.424171,170.859955000000014 -45.487502999999997,170.855804000000006 -45.493889000000003,170.750274999999988 -45.61972,170.674682999999987 -45.745002999999997,170.616913000000011 -45.839438999999999,170.55886799999999 -45.881667999999998,170.554413000000011 -45.888053999999997,170.555542000000003 -45.896110999999998,170.591063999999989 -45.894165,170.600525000000005 -45.891669999999998,170.608582000000013 -45.888053999999997,170.658600000000007 -45.858612,170.718018 -45.817504999999997,170.724670000000003 -45.813057,170.773314999999997 -45.782775999999998,170.781096999999988 -45.786391999999999,170.790802000000014 -45.806946000000003,170.790802000000014 -45.84639,170.788879000000009 -45.863892,170.783051 -45.878334000000002,170.776366999999993 -45.882773999999998,170.699982000000006 -45.911667,170.664429000000013 -45.908332999999999,170.57330300000001 -45.916663999999997,170.550536999999991 -45.919167000000002,170.484406000000007 -45.926949,170.452453999999989 -45.931946000000003,170.424408 -45.939438000000003,170.382721000000004 -45.956108,170.342467999999997 -45.97361,170.315246999999999 -45.991385999999999,170.309692000000013 -45.996948000000003,170.294433999999995 -46.013893000000003,170.281646999999992 -46.029442000000003,170.263610999999997 -46.051940999999999,170.256378000000012 -46.065551999999997,170.253051999999997 -46.081947,170.252472000000012 -46.09111,170.254424999999998 -46.107779999999998,170.252777000000009 -46.115836999999999,170.240783999999991 -46.146949999999997,170.237731999999994 -46.154167,170.226623999999987 -46.165000999999997,170.214416999999997 -46.174720999999998,170.193848000000003 -46.188048999999999,170.169433999999995 -46.198608,170.067748999999992 -46.246665999999998,169.911925999999994 -46.340279000000002,169.863585999999998 -46.371383999999999,169.858001999999999 -46.376663,169.849396000000013 -46.389442000000003,169.848021999999986 -46.416946000000003,169.849975999999998 -46.433326999999998,169.852172999999993 -46.440834000000002,169.853850999999992 -46.457504,169.850799999999992 -46.464722000000002,169.845245000000006 -46.469994,169.701904000000013 -46.558052000000004,169.631348000000003 -46.581947,169.458008000000007 -46.623328999999998,169.266388000000006 -46.656387000000002,169.133026 -46.670836999999999,169.107727000000011 -46.669167000000002,169.097197999999992 -46.666946000000003,169.084411999999986 -46.657501000000003,169.067200000000014 -46.635002,169.061919999999986 -46.675002999999997,169.053864000000004 -46.678612,169.008026 -46.680832000000002,168.883330999999998 -46.667777999999998,168.878296000000006 -46.661942000000003,168.861908 -46.628334000000002,168.862457000000006 -46.619446000000003,168.864409999999992 -46.611114999999998,168.864959999999996 -46.603889000000002,168.844970999999987 -46.563614,168.835784999999987 -46.560555,168.823853000000014 -46.561110999999997,168.733306999999996 -46.577499000000003,168.640533000000005 -46.603889000000002,168.633605999999986 -46.606392,168.614685000000009 -46.611114999999998,168.593018 -46.614165999999997,168.568848000000003 -46.615004999999996,168.516937000000013 -46.614165999999997,168.492737000000005 -46.613334999999999,168.442138999999997 -46.601500999999999,168.436630000000008 -46.599666999999997,168.446625000000012 -46.584003000000003,168.442200000000014 -46.575004999999997,168.454407000000003 -46.574447999999997,168.490509000000003 -46.573059,168.502472000000012 -46.574173000000002,168.506103999999993 -46.578887999999999,168.499114999999989 -46.583328000000002,168.505553999999989 -46.588051,168.551636000000002 -46.594444000000003,168.561371000000008 -46.591942000000003,168.566924999999998 -46.586661999999997,168.563599000000011 -46.580002,168.550812000000008 -46.570557,168.541655999999989 -46.567504999999997,168.391356999999999 -46.540000999999997,168.361908 -46.544449,168.353577 -46.547783000000003,168.351623999999987 -46.556106999999997,168.352172999999993 -46.564444999999999,168.362731999999994 -46.583885000000002,168.348236000000014 -46.582165000000003,168.352904999999993 -46.584499,168.359267999999986 -46.585830999999999,168.365082 -46.592666999999999,168.367248999999987 -46.596668,168.367599000000013 -46.601497999999999,168.364928999999989 -46.605331,168.35775799999999 -46.604500000000002,168.351409999999987 -46.603164999999997,168.275269000000009 -46.557777000000002,168.269135000000006 -46.535561,168.268311000000011 -46.529167,168.27664200000001 -46.525832999999999,168.286102 -46.523330999999999,168.307738999999998 -46.520553999999997,168.318297999999999 -46.520836000000003,168.318848000000003 -46.529167,168.321075000000008 -46.536667,168.328856999999999 -46.540557999999997,168.339416999999997 -46.539169,168.386658000000011 -46.497779999999999,168.392486999999988 -46.492226000000002,168.395537999999988 -46.485000999999997,168.396087999999992 -46.477775999999999,168.394135000000006 -46.470275999999998,168.37384 -46.421944000000003,168.36883499999999 -46.416106999999997,168.359679999999997 -46.415000999999997,168.350249999999988 -46.417503000000004,168.250274999999988 -46.400832999999999,168.211090000000013 -46.355277999999998,168.206085000000002 -46.351394999999997,168.194702000000007 -46.345551,168.185516000000007 -46.342498999999997,168.174988000000013 -46.340279000000002,168.116364000000004 -46.343612999999998,168.063873 -46.351669,167.955535999999995 -46.371383999999999,167.893035999999995 -46.387222,167.850799999999992 -46.399445,167.832184000000012 -46.398612999999997,167.824401999999992 -46.394447,167.753875999999991 -46.333885000000002,167.776916999999997 -46.312775000000002,167.781372000000005 -46.306389000000003,167.783600000000007 -46.298340000000003,167.781372000000005 -46.290840000000003,167.778045999999989 -46.284171999999998,167.701904000000013 -46.209442000000003,167.596924 -46.166389000000002,167.556641000000013 -46.156387000000002,167.546356000000003 -46.154167,167.534424 -46.152779000000002,167.483032000000009 -46.149726999999999,167.471069 -46.149994,167.460236000000009 -46.151389999999999,167.451904000000013 -46.154716,167.446075000000008 -46.159996,167.415526999999997 -46.204720000000002,167.356628 -46.254447999999996,167.280272999999994 -46.273055999999997,167.261108000000007 -46.267775999999998,167.238555999999988 -46.263893000000003,167.086638999999991 -46.240555,167.001373 -46.229163999999997,166.966063999999989 -46.224716,166.949982000000006 -46.223885000000003,166.915253000000007 -46.226104999999997,166.883026 -46.229996,166.836365 -46.232498,166.823028999999991 -46.231667000000002,166.768035999999995 -46.22361,166.726348999999999 -46.214165,166.717467999999997 -46.210830999999999,166.705230999999998 -46.201110999999997,166.670806999999996 -46.161667,166.67025799999999 -46.15361,166.684417999999994 -46.145004,166.693848000000003 -46.142775999999998,166.709411999999986 -46.135277000000002,166.738861000000014 -46.119163999999998,166.761230000000012 -46.093612999999998,166.784911999999991 -46.064945000000002,166.804748999999987 -46.033279,166.82995600000001 -46.003891000000003,166.854674999999986 -45.994163999999998,166.886932000000002 -45.990279999999998,166.943297999999999 -45.956108,166.949127000000004 -45.950836000000002,166.946930000000009 -45.945273999999998,166.939147999999989 -45.944716999999997,166.929687999999999 -45.947220000000002,166.836365 -45.981383999999998,166.828033000000005 -45.984444000000003,166.791350999999992 -46.005004999999997,166.785797000000002 -46.010283999999999,166.781096999999988 -46.016396,166.759308000000004 -46.035553,166.762969999999996 -46.038387,166.764969000000008 -46.042392999999997,166.763656999999995 -46.047221999999998,166.760162000000008 -46.050392000000002,166.740982000000002 -46.066059000000003,166.737793000000011 -46.066558999999998,166.670532000000009 -46.087218999999997,166.615783999999991 -46.090836000000003,166.613585999999998 -46.086387999999999,166.617461999999989 -46.059722999999998,166.621062999999992 -46.052498,166.640807999999993 -46.015006999999997,166.661652000000004 -45.991942999999999,166.625792999999987 -45.967216,166.492461999999989 -46.013061999999998,166.484406000000007 -46.014449999999997,166.474975999999998 -46.002785000000003,166.467194000000006 -45.990555,166.465239999999994 -45.983055,166.464690999999988 -45.839438999999999,166.468841999999995 -45.823059,166.472473000000008 -45.815834000000002,166.476898000000006 -45.809722999999998,166.537475999999998 -45.798889000000003,166.613861000000014 -45.801108999999997,166.652190999999988 -45.800277999999999,166.699982000000006 -45.798889000000003,166.881348000000003 -45.779998999999997,166.890807999999993 -45.777779000000002,166.974120999999997 -45.735000999999997,166.987182999999987 -45.709724,166.923034999999999 -45.705832999999998,166.912475999999998 -45.705275999999998,166.887482000000006 -45.705002,166.854126000000008 -45.707779000000002,166.825806 -45.714722000000002,166.809417999999994 -45.721381999999998,166.787475999999998 -45.689995000000003,166.775817999999987 -45.662773,166.81153900000001 -45.617942999999997,166.811217999999997 -45.613109999999999,166.812531000000007 -45.608111999999998,166.816710999999998 -45.605606000000002,166.869689999999991 -45.588779000000002,166.881026999999989 -45.586112999999997,166.88736 -45.585278000000002,166.895203000000009 -45.585608999999998,166.901366999999993 -45.587108999999998,166.912871999999993 -45.590946000000002,166.980255 -45.578612999999997,166.991913000000011 -45.580002,167.0 -45.576949999999997,167.005829000000006 -45.571671000000002,167.032470999999987 -45.527779000000002,167.041350999999992 -45.501396,166.989685000000009 -45.519165,166.891693000000004 -45.544724000000002,166.796875 -45.569389,166.791199000000006 -45.570720999999999,166.784836000000013 -45.571556,166.777023000000014 -45.571219999999997,166.710509999999999 -45.579445,166.704407000000003 -45.574447999999997,166.697204999999997 -45.554718,166.699127000000004 -45.546669,166.757476999999994 -45.425277999999999,166.801361000000014 -45.353614999999998,166.821625000000012 -45.320557,166.86883499999999 -45.279724000000002,166.880797999999999 -45.279167,167.008330999999998 -45.341667,167.038299999999992 -45.357779999999998,167.146941999999996 -45.427222999999998,167.16885400000001 -45.472496,167.205230999999998 -45.477775999999999,167.211914000000007 -45.475273,167.21414200000001 -45.467216,167.209411999999986 -45.461387999999999,167.173584000000005 -45.422775,167.158019999999993 -45.406661999999997,167.134978999999987 -45.386116,167.12912 -45.381385999999999,167.115509000000003 -45.372222999999998,167.097747999999996 -45.366112,167.087463000000014 -45.363616999999998,167.061645999999996 -45.345001000000003,167.051085999999998 -45.333328000000002,167.081421000000006 -45.325333,167.08407600000001 -45.321666999999998,167.092407000000009 -45.316498000000003,167.097243999999989 -45.314498999999998,167.114227 -45.310333,167.163574000000011 -45.302833999999997,167.169922000000014 -45.302998000000002,167.173584000000005 -45.305999999999997,167.176422000000002 -45.309330000000003,167.17756700000001 -45.313834999999997,167.212738000000002 -45.313332000000003,167.218841999999995 -45.318336000000002,167.232178000000005 -45.327224999999999,167.239685000000009 -45.331116000000002,167.248566000000011 -45.334167,167.260254000000003 -45.335830999999999,167.270813000000004 -45.334442000000003,167.301636000000002 -45.329445,167.309692000000013 -45.326110999999997,167.307738999999998 -45.318610999999997,167.300262000000004 -45.314444999999999,167.19464099999999 -45.271445999999997,167.138290000000012 -45.268943999999998,167.099471999999992 -45.272114000000002,167.094146999999992 -45.271278000000002,167.08964499999999 -45.268776000000003,167.002196999999995 -45.201110999999997,166.996917999999994 -45.145836000000003,167.146362000000011 -45.001671000000002,167.198577999999998 -44.956108,167.204407000000003 -44.951110999999997,167.228302000000014 -44.930832000000002,167.24105800000001 -44.921387000000003,167.260528999999991 -44.907501000000003,167.267486999999988 -44.903053,167.312744000000009 -44.875,167.320800999999989 -44.871383999999999,167.393462999999997 -44.862999000000002,167.398987000000005 -44.861496000000002,167.404312000000004 -44.863498999999997,167.421798999999993 -44.894168999999998,167.422974000000011 -44.898665999999999,167.420638999999994 -44.908496999999997,167.417968999999999 -44.912166999999997,167.440796000000006 -44.928612,167.439972000000012 -44.9375,167.441924999999998 -44.945,167.459686000000005 -44.99472,167.497741999999988 -45.003891000000003,167.507202000000007 -45.001396,167.508224000000013 -45.0,167.511658000000011 -44.995277000000002,167.511108000000007 -44.986946000000003,167.47908000000001 -44.903446000000002,167.465912000000003 -44.876441999999997,167.462752999999992 -44.867947,167.461578000000003 -44.863444999999999,167.460097999999988 -44.853946999999998,167.459411999999986 -44.843944999999998,167.459914999999995 -44.838444000000003,167.448577999999998 -44.795279999999998,167.453033000000005 -44.788894999999997,167.458587999999992 -44.783614999999998,167.59970100000001 -44.683883999999999,167.743010999999996 -44.611671,167.838866999999993 -44.498610999999997,167.850249999999988 -44.488052000000003,167.949982000000006 -44.40361,167.963593000000003 -44.395004,168.034973000000008 -44.353614999999998,168.12802099999999 -44.316947999999996,168.141662999999994 -44.308052000000004,168.144713999999993 -44.300834999999999,168.144135000000006 -44.292503000000004,168.124099999999999 -44.251404,168.143311000000011 -44.253059,168.153594999999996 -44.251396,168.169708000000014 -44.24472,168.288299999999992 -44.172775,168.29385400000001 -44.167503000000004,168.336638999999991 -44.123885999999999,168.339966000000004 -44.116661,168.337738000000002 -44.109169,168.334411999999986 -44.102783000000002,168.336365 -44.094444000000003,168.369689999999991 -44.043334999999999,168.374968999999993 -44.037781000000003,168.383026 -44.034447,168.402771 -44.029724000000002,168.672211000000004 -43.987777999999999,168.676909999999992 -43.993614,168.683043999999995 -43.998336999999999,168.690246999999999 -44.002228000000002,168.715239999999994 -44.012222,168.723021999999986 -44.012504999999997,168.753875999999991 -44.010002,168.764160000000004 -44.008614,168.824401999999992 -43.988334999999999,168.858582000000013 -43.976661999999997,168.866364000000004 -43.973328000000002,168.879669000000007 -43.964447,168.885254000000003 -43.959167,168.961914000000007 -43.90361,169.080765000000014 -43.848472999999998,169.142212 -43.794167000000002,169.224396000000013 -43.743332000000002,169.271636999999998 -43.722496,169.387482000000006 -43.679169000000002,169.491318000000007 -43.643467,169.539153999999996 -43.633614,169.62661700000001 -43.613892,169.64498900000001 -43.608893999999999,169.652771 -43.605559999999997,169.660521999999986 -43.601944000000003,169.721619000000004 -43.573334000000003,169.728302000000014 -43.568893000000003,169.739136000000002 -43.558052000000004,169.767486999999988 -43.522773999999998,169.790526999999997 -43.496665999999998,169.871062999999992 -43.406661999999997,169.884154999999993 -43.397781000000002,169.961638999999991 -43.371941,170.021911999999986 -43.352500999999997,170.028594999999996 -43.347777999999998,170.033874999999995 -43.342498999999997,170.038025000000005 -43.336112999999997,170.049408 -43.306946000000003,170.111358999999993 -43.254173000000002,170.288299999999992 -43.107779999999998,170.418029999999987 -43.052498,170.523041000000006 -43.010559,170.531921000000011 -43.008057,170.583037999999988 -42.990555,170.674347000000012 -42.958739999999999,170.704407000000003 -42.945830999999998,170.750549000000007 -42.924720999999998,170.781096999999988 -42.910553,170.794128 -42.901389999999999,171.065796000000006 -42.648055999999997,171.108306999999996 -42.608055,171.149719000000005 -42.563614,171.153594999999996 -42.55722,171.196075000000008 -42.476661999999997,171.225799999999992 -42.433608999999997,171.230255 -42.40889,171.235779000000008 -42.394165,171.247467 -42.375,171.260254000000003 -42.366112,171.270537999999988 -42.355003000000004,171.297760000000011 -42.310279999999999,171.304413000000011 -42.296669,171.309692000000013 -42.281944000000003,171.31665000000001 -42.249724999999998,171.321075000000008 -42.224716,171.322754000000003 -42.207222000000002,171.324401999999992 -42.18972,171.326355000000007 -42.172226000000002,171.329131999999987 -42.155830000000002,171.343841999999995 -42.110832000000002,171.361084000000005 -42.067779999999999,171.461638999999991 -41.859726000000002,171.51080300000001 -41.764449999999997,171.533051 -41.766396,171.557738999999998 -41.766663,171.569121999999993 -41.766112999999997,171.650817999999987 -41.761391000000003,171.663025000000005 -41.757781999999999,171.685790999999995 -41.746948000000003,171.790526999999997 -41.696387999999999,171.85522499999999 -41.652779000000002,171.886658000000011 -41.629997000000003,171.942200000000014 -41.550277999999999,172.02276599999999 -41.443053999999997,172.053864000000004 -41.417503000000004,172.064972000000012 -41.40361,172.122192000000013 -41.277779000000002,172.111633000000012 -41.236114999999998,172.10522499999999 -41.153053,172.106078999999994 -40.911385000000003,172.10635400000001 -40.893059,172.108856000000003 -40.885559,172.113861000000014 -40.879997000000003,172.186645999999996 -40.813332000000003,172.218567000000007 -40.785834999999999,172.22470100000001 -40.781109,172.255248999999992 -40.776947,172.263884999999988 -40.774169999999998,172.271362000000011 -40.770553999999997,172.299408 -40.755004999999997,172.348297000000002 -40.727493000000003,172.382721000000004 -40.698334000000003,172.426909999999992 -40.657775999999998,172.478302000000014 -40.613892,172.513320999999991 -40.598441999999999,172.517639000000003 -40.596783000000002,172.523482999999999 -40.597946,172.522644000000014 -40.602943000000003,172.521132999999992 -40.607277000000003,172.520813000000004 -40.625,172.519440000000003 -40.631385999999999,172.525542999999999 -40.6325,172.534149000000014 -40.631667999999998,172.571899000000002 -40.617775000000002,172.596343999999988 -40.601394999999997,172.62802099999999 -40.573891000000003,172.631621999999993 -40.567222999999998,172.631621999999993 -40.559998,172.608582000000013 -40.556946000000003,172.601348999999999 -40.558891000000003,172.597014999999999 -40.553333000000002,172.589690999999988 -40.558838000000002,172.583862000000011 -40.560004999999997,172.581024000000014 -40.556671,172.581848000000008 -40.551665999999997,172.589843999999999 -40.541172000000003,172.627166999999986 -40.511947999999997,172.633330999999998 -40.509171000000002,172.661376999999987 -40.502785000000003,172.712188999999995 -40.495552000000004,172.817748999999992 -40.504173000000002,172.861358999999993 -40.507781999999999,172.981628 -40.527222000000002,172.991332999999997 -40.529167,172.989959999999996 -40.53389,172.978026999999997 -40.53389,172.945251000000013 -40.530830000000002,172.895263999999997 -40.524445,172.797211000000004 -40.516112999999997,172.739959999999996 -40.516945,172.731628 -40.519722000000002,172.656921000000011 -40.653328000000002,172.701355000000007 -40.748336999999999,172.855804000000006 -40.853057999999997,172.865509000000003 -40.853057999999997,172.875244000000009 -40.851112,172.907195999999999 -40.828887999999999,172.930266999999986 -40.802222999999998,172.935241999999988 -40.796669,172.976623999999987 -40.781944000000003,172.985229000000004 -40.781112999999998,173.002196999999995 -40.786667,173.008330999999998 -40.791114999999998,173.013306 -40.796669,173.020537999999988 -40.809722999999998,173.051085999999998 -40.869446000000003,173.059692000000013 -40.962775999999998,173.059692000000013 -40.971938999999999,173.056091000000009 -40.978606999999997,173.031646999999992 -41.027495999999999,173.075806 -41.291114999999998,173.079680999999994 -41.297500999999997,173.085784999999987 -41.302222999999998,173.105529999999987 -41.313332000000003,173.168029999999987 -41.316108999999997,173.188873 -41.313332000000003,173.198853000000014 -41.311385999999999,173.207184000000012 -41.308608999999997,173.272217000000012 -41.274445,173.278320000000008 -41.269722000000002,173.32607999999999 -41.222496,173.340515000000011 -41.205832999999998,173.351623999999987 -41.195549,173.377166999999986 -41.178055,173.426085999999998 -41.150275999999998,173.598021999999986 -41.053612,173.606628 -41.052498,173.639709000000011 -41.073616,173.672760000000011 -41.070557,173.720519999999993 -41.060279999999999,173.727753000000007 -41.056389000000003,173.739959999999996 -41.047226000000002,173.744689999999991 -41.032501000000003,173.743286000000012 -41.024169999999998,173.738281 -41.018608,173.72744800000001 -41.019447,173.718841999999995 -41.022499000000003,173.696930000000009 -41.033614999999998,173.690796000000006 -41.038338000000003,173.682189999999991 -41.041114999999998,173.676085999999998 -41.036391999999999,173.673584000000005 -41.029167,173.674682999999987 -41.020836000000003,173.678314 -41.014449999999997,173.696625000000012 -41.000281999999999,173.751373 -40.976944000000003,173.800262000000004 -40.969161999999997,173.913299999999992 -40.931671,173.984679999999997 -40.896949999999997,173.994415000000004 -40.896667,174.02276599999999 -40.913055,174.027771 -40.91861,174.030272999999994 -40.925834999999999,174.03054800000001 -40.935271999999998,174.02941899999999 -40.943610999999997,174.022217000000012 -40.947220000000002,173.929961999999989 -40.992226000000002,173.832184000000012 -40.995002999999997,173.821075000000008 -40.994163999999998,173.782195999999999 -41.009171000000002,173.778594999999996 -41.015555999999997,173.769713999999993 -41.09861,173.778594999999996 -41.114449,173.794433999999995 -41.109444000000003,173.822204999999997 -41.080832999999998,173.821899000000002 -41.062218,173.836638999999991 -41.055,173.846343999999988 -41.053055,173.93081699999999 -41.049446000000003,173.946625000000012 -41.055832000000002,173.953033000000005 -41.060555,173.917755 -41.087502,173.887482000000006 -41.103332999999999,173.848846000000009 -41.144165,173.820526 -41.245834000000002,173.763306 -41.267502,173.76080300000001 -41.273055999999997,173.775817999999987 -41.289726000000002,173.788025000000005 -41.290557999999997,173.806365999999997 -41.289444000000003,174.03720100000001 -41.218330000000002,174.09970100000001 -41.198334000000003,174.128845000000013 -41.187218,174.133605999999986 -41.181671,174.133605999999986 -41.176108999999997,174.126068000000004 -41.174171,174.008605999999986 -41.175277999999999,174.001099000000011 -41.178885999999999,174.001373 -41.186385999999999,174.000274999999988 -41.194716999999997,173.993010999999996 -41.198334000000003,173.981902999999988 -41.199440000000003,173.932738999999998 -41.199997000000003,173.908324999999991 -41.199997000000003,173.899719000000005 -41.197495000000004,173.893585000000002 -41.192771999999998,173.887206999999989 -41.169724000000002,173.88580300000001 -41.161667,173.888031000000012 -41.154167,173.89776599999999 -41.133614,173.902466000000004 -41.128334000000002,174.032745000000006 -40.999724999999998,174.084411999999986 -41.021385000000002,174.094116000000014 -41.023330999999999,174.246338000000009 -41.044724000000002,174.258330999999998 -41.035277999999998,174.299408 -41.003616,174.315246999999999 -41.000557,174.323853000000014 -41.003334000000002,174.323853000000014 -41.010834000000003,174.321625000000012 -41.018059,174.209960999999993 -41.197495000000004,174.161376999999987 -41.225555,174.152771 -41.226661999999997,174.114685000000009 -41.231383999999998,174.052185000000009 -41.235000999999997,174.02664200000001 -41.236114999999998,174.053864000000004 -41.254173000000002,174.206359999999989 -41.269447,174.214966000000004 -41.266663,174.291655999999989 -41.238892,174.303588999999988 -41.229720999999998,174.320800999999989 -41.220275999999998,174.326904000000013 -41.222771000000002,174.288574000000011 -41.276947,174.249114999999989 -41.322502,174.241637999999995 -41.326110999999997,174.231902999999988 -41.328055999999997,174.208587999999992 -41.329445,174.193572999999986 -41.320281999999999,174.155243000000013 -41.305,174.148041000000006 -41.308608999999997,174.111633000000012 -41.336661999999997,174.052764999999994 -41.421112,174.049133000000012 -41.427779999999998,174.044433999999995 -41.442497000000003,174.045806999999996 -41.450836000000002,174.049988000000013 -41.466392999999997,174.063873 -41.493057,174.084136999999998 -41.526108,174.097473000000008 -41.519447,174.096069 -41.511116,174.100799999999992 -41.505561999999998,174.108306999999996 -41.509171000000002,174.114685000000009 -41.513893000000003,174.125792999999987 -41.523887999999999,174.151093000000003 -41.551392,174.176085999999998 -41.578612999999997,174.178864000000004 -41.586112999999997,174.179961999999989 -41.594444000000003,174.179137999999995 -41.602783000000002,174.174133000000012 -41.608336999999999,174.163299999999992 -41.618606999999997,174.157195999999999 -41.623328999999998,174.193024000000008 -41.685555,174.287749999999988 -41.734444000000003,174.291655999999989 -41.740836999999999,174.289153999999996 -41.748336999999999,174.283324999999991 -41.762222,174.236358999999993 -41.837218999999997,174.212188999999995 -41.865279999999998,174.201355000000007 -41.875557,174.184143000000006 -41.890555999999997,174.17804000000001 -41.895004,174.164703000000003 -41.90361,174.157195999999999 -41.907218999999998,174.143585000000002 -41.915832999999999,174.088561999999996 -41.957779000000002,174.009154999999993 -42.027495999999999,173.979674999999986 -42.061110999999997,173.965239999999994 -42.086945,173.959136999999998 -42.100838000000003,173.954407000000003 -42.115555,173.953307999999993 -42.123885999999999,173.953583000000009 -42.133330999999998,173.956359999999989 -42.166389000000002,173.933319000000012 -42.196944999999999,173.928314 -42.202499000000003,173.884154999999993 -42.243614,173.87802099999999 -42.248055,173.870513999999986 -42.251944999999999,173.86300700000001 -42.255561999999998,173.834686000000005 -42.271385000000002,173.801361000000014 -42.293059999999997,173.794983000000002 -42.297500999999997,173.568572999999986 -42.476944000000003,173.558593999999999 -42.487777999999999,173.541350999999992 -42.511947999999997,173.533874999999995 -42.525002,173.531372000000005 -42.532218999999998,173.500823999999994 -42.599724000000002,173.480804000000006 -42.621941,173.466063999999989 -42.656944000000003,173.459960999999993 -42.670836999999999,173.448853000000014 -42.690277000000002,173.387755999999996 -42.793616999999998,173.351623999999987 -42.840836000000003,173.328033000000005 -42.898887999999999,173.328033000000005 -42.906387000000002,173.325806 -42.913612,173.285521999999986 -42.958053999999997,173.106902999999988 -43.057777000000002,173.099396000000013 -43.061385999999999,173.090515000000011 -43.064444999999999,173.026366999999993 -43.081947,172.975799999999992 -43.09111,172.953033000000005 -43.092773,172.935516000000007 -43.098334999999999,172.92025799999999 -43.105834999999999,172.838012999999989 -43.148055999999997,172.818024000000008 -43.160828000000002,172.797760000000011 -43.183059999999998,172.772217000000012 -43.219718999999998,172.76080300000001 -43.239165999999997,172.758026 -43.246665999999998,172.726944000000003 -43.415539000000003,172.726593000000008 -43.423355,172.775817999999987 -43.612220999999998,172.894135000000006 -43.61972,172.90554800000001 -43.620834000000002,173.059692000000013 -43.653053,173.100525000000005 -43.697220000000002,173.105529999999987 -43.703612999999997,173.114409999999992 -43.741385999999999,173.116913000000011 -43.762504999999997,173.116913000000011 -43.769996999999996,173.112182999999987 -43.825004999999997,173.110779000000008 -43.833328000000002,173.091644000000002 -43.856392,173.058593999999999 -43.871108999999997,173.006088000000005 -43.869498999999998,173.002242999999993 -43.868999000000002,172.999236999999994 -43.865668999999997,172.990905999999995 -43.849670000000003,172.965239999999994 -43.802222999999998,172.961365 -43.764449999999997,172.958862000000011 -43.756950000000003,172.951355000000007 -43.755279999999999,172.939972000000012 -43.756110999999997,172.927185000000009 -43.766112999999997,172.921906000000007 -43.771667,172.920532000000009 -43.824173000000002,172.920532000000009 -43.833328000000002,172.917572000000007 -43.869221000000003,172.923584000000005 -43.875884999999997,172.931243999999992 -43.881390000000003,172.937408000000005 -43.887886000000002,172.938904000000008 -43.892384,172.938247999999987 -43.896220999999997,172.870789000000002 -43.904442000000003,172.861633000000012 -43.901389999999999,172.811919999999986 -43.882216999999997,172.804413000000011 -43.878334000000002,172.745789000000002 -43.837775999999998,172.740783999999991 -43.832222000000002,172.736908 -43.825836000000002,172.715239999999994 -43.808334000000002,172.642761000000007 -43.772224,172.513031000000012 -43.729438999999999,172.495238999999998 -43.723885000000003,172.483582000000013 -43.722771000000002,172.472197999999992 -43.72361,172.424988000000013 -43.733612,172.413299999999992 -43.743614,172.390258999999986 -43.763893000000003,172.384978999999987 -43.77861,172.382445999999987 -43.795006,172.383330999999998 -43.8125,172.384704999999997 -43.820838999999999,172.394713999999993 -43.850281000000003,172.393311000000011 -43.858612,172.386932000000002 -43.863334999999999,172.367461999999989 -43.867775000000002,172.297211000000004 -43.881110999999997,172.286925999999994 -43.883057,172.275542999999999 -43.883887999999999,172.189696999999995 -43.909163999999997,172.050812000000008 -43.965279000000002,171.978577 -43.995834000000002,171.955230999999998 -44.006667999999998,171.941070999999994 -44.015006999999997,171.782470999999987 -44.076949999999997,171.654694000000006 -44.122498,171.583587999999992 -44.153885000000002,171.547211000000004 -44.173889000000003,171.538483000000014 -44.178775999999999,171.355559999999997 -44.285491999999998,171.346465999999992 -44.292186999999998,171.342467999999997 -44.295555,171.319976999999994 -44.316391000000003,171.293578999999994 -44.343612999999998,171.285521999999986 -44.356392,171.278594999999996 -44.369995000000003,171.271911999999986 -44.383887999999999,171.269135000000006 -44.391112999999997,171.275542999999999 -44.395836000000003,171.279144000000002 -44.402495999999999,171.278594999999996 -44.420836999999999,171.277190999999988 -44.428885999999999,171.275542999999999 -44.437218,171.26998900000001 -44.451942000000003,171.263306 -44.465553,171.254974000000004 -44.478332999999999,171.214966000000004 -44.533057999999997,171.208313000000004 -44.537506,171.200531000000012 -44.541114999999998,171.196075000000008 -44.560279999999999,171.192200000000014 -44.645836000000003,171.193024000000008 -44.663330000000002,171.20495600000001 -44.700279000000002,171.21414200000001 -44.739165999999997,171.215239999999994 -44.747498,171.207184000000012 -44.851112,171.198577999999998 -44.919998,171.195800999999989 -44.927498,171.185241999999988 -44.938332000000003)))'));
-INSERT INTO geoapp_country (`name`, `mpoly`) VALUES ('Texas', GeomFromText('MULTIPOLYGON (((-103.00243399999998 36.500397,-102.90421904194784 36.500393342967676,-102.8402359524855 36.500390960558398,-102.840235952479716 36.500390960558398,-102.840235952474345 36.500390960558398,-102.840235952468362 36.500390960558398,-102.840235952461725 36.500390960558398,-102.840235952455885 36.500390960558398,-102.792077446284736 36.500389167377229,-102.643207699865854 36.500383624214699,-102.366462330167067 36.500373319605465,-102.250452999999979 36.500368999999999,-102.24499 36.500703999999999,-102.162463000000002 36.500326,-102.12545 36.500323999999999,-102.124752896301885 36.500398159967887,-102.122066000000004 36.500684,-101.930244999999999 36.500526,-101.925344139375468 36.500484781341967,-101.914929315957153 36.500397187533892,-101.826564999999988 36.499653999999992,-101.826498 36.499535000000002,-101.81449312121488 36.499579719643286,-101.788110000000003 36.499678000000003,-101.783359000000004 36.499709000000003,-101.781987 36.499718,-101.780609999999982 36.499727,-101.779435000000007 36.499733999999997,-101.773235954788092 36.499732939140301,-101.709314000000006 36.499721999999998,-101.698684999999998 36.499507999999999,-101.653707999999995 36.499572999999998,-101.649966000000006 36.499572999999998,-101.623914999999997 36.499527999999998,-101.414793008557069 36.499417763984319,-101.392608849457574 36.499406069885133,-101.340061173170298 36.499378370041477,-101.085155999999984 36.499243999999997,-101.052418000000003 36.499562999999995,-101.04533099999999 36.499540000000003,-100.977087999999995 36.499594999999999,-100.936058000000003 36.499602000000003,-100.918513000000004 36.499620999999998,-100.884174000000002 36.499682,-100.884079999999997 36.499682,-100.859656999999984 36.499687000000002,-100.850840000000005 36.49969999999999,-100.824235999999999 36.499617999999998,-100.824218000000002 36.499617999999998,-100.80619 36.499673999999999,-100.806172000000004 36.499634,-100.802909 36.499620999999998,-100.802886 36.499620999999998,-100.761810999999994 36.499617999999998,-100.761810999999994 36.499580000000002,-100.724361999999999 36.499580000000002,-100.724361000000002 36.499558,-100.708625999999995 36.499552999999999,-100.708628000000004 36.499520999999994,-100.657762999999989 36.499482999999991,-100.657762999999989 36.499499999999998,-100.648342999999997 36.499495000000003,-100.648343999999994 36.499462999999999,-100.592613999999998 36.499468999999998,-100.592555999999988 36.499468999999998,-100.592551 36.499428999999999,-100.583539000000002 36.499482999999991,-100.583378999999994 36.499442999999999,-100.578113999999999 36.499462999999999,-100.578113999999999 36.499439000000002,-100.546144999999996 36.499343000000003,-100.531215000000003 36.499341,-100.531215000000003 36.499290000000002,-100.530478000000002 36.49924,-100.530314000000004 36.499357000000003,-100.522227 36.499290999999999,-100.441064999999995 36.499490000000002,-100.441063999999997 36.499462,-100.433959000000002 36.499456000000002,-100.421327999999988 36.499447000000004,-100.421300999999985 36.499487999999999,-100.413634000000002 36.499443999999997,-100.41355 36.499468999999998,-100.378634000000005 36.499516999999997,-100.378591999999998 36.499445,-100.35185199999998 36.499487000000002,-100.351841999999991 36.499473000000002,-100.334463999999997 36.49942,-100.334440999999998 36.49944,-100.324150000000003 36.499679,-100.311244999999985 36.499631,-100.311018000000004 36.499687999999999,-100.310642999999985 36.499642,-100.253572851827684 36.499638031344489,-100.181220999999994 36.499633000000003,-100.090020999999993 36.499634,-100.000405999999984 36.499701999999999,-100.0004059967807 36.499497793115623,-100.00040222345956 36.260147946939995,-100.000399000000002 36.055677000000003,-100.000396170268971 35.879197994164429,-100.000394020347557 35.745115995014778,-100.000391999999991 35.619115,-100.000390396259149 35.519130234823749,-100.000386875554753 35.299632926398459,-100.000386874882437 35.299591010324292,-100.000386852473085 35.298193905884737,-100.000384999999994 35.182701999999999,-100.000381972929958 34.852568985943549,-100.000381605014198 34.812443999872983,-100.000381000000004 34.746460999999996,-100.000381000000004 34.570853999999997,-100.000381000000004 34.570647,-100.000381000000004 34.560509000000003,-99.998254592787575 34.560446149085699,-99.997501461048799 34.560423888524269,-99.985833 34.560079000000002,-99.974761999999998 34.561317999999993,-99.971554999999995 34.562179,-99.965608000000003 34.565843999999998,-99.958898000000005 34.571271000000003,-99.957540999999992 34.572708999999996,-99.95755299999999 34.574168999999998,-99.956716999999998 34.576523999999992,-99.954566999999997 34.578195,-99.94571999999998 34.579273,-99.930492488760507 34.576894921075187,-99.930189904388058 34.576847666503667,-99.929333999999997 34.576714000000003,-99.923210999999995 34.574551999999997,-99.921801000000002 34.570253,-99.915771000000007 34.565975000000002,-99.914151070156151 34.564995899308187,-99.898943000000003 34.555804000000002,-99.896006999999997 34.555529999999997,-99.89376 34.554219000000003,-99.887146999999999 34.549047000000002,-99.885392392967745 34.547401436342639,-99.884583851343237 34.546643143067669,-99.87806651563541 34.540530839522475,-99.87650823800611 34.539069404005723,-99.874403 34.537095,-99.873254000000003 34.535350999999999,-99.872356999999994 34.532096000000003,-99.868953000000005 34.52761499999999,-99.867217250163094 34.525864500605081,-99.853065999999998 34.511592999999998,-99.832903999999985 34.500067999999999,-99.825324999999992 34.497596,-99.818185999999997 34.487839999999991,-99.818738999999979 34.484975999999996,-99.814544624457952 34.476663062301249,-99.814312999999984 34.476204000000003,-99.793683999999999 34.453893999999998,-99.783787954821193 34.445078397966533,-99.782985999999994 34.444364,-99.775743000000006 34.444225000000003,-99.774224411180043 34.443216449834381,-99.765598999999995 34.437488000000002,-99.764825999999999 34.436433999999998,-99.764881999999986 34.435265999999999,-99.767647999999994 34.431854,-99.767234000000002 34.430501999999997,-99.754248000000004 34.421288999999994,-99.740907000000007 34.414763,-99.735679661059166 34.413018903486261,-99.730348000000006 34.411239999999992,-99.720258999999999 34.406295,-99.719721039768913 34.405807854123296,-99.716415999999995 34.402814999999997,-99.715089000000006 34.400753999999999,-99.714231999999996 34.397821999999998,-99.714838 34.394523999999997,-99.712682 34.390928000000002,-99.707900999999993 34.387538999999997,-99.696461999999997 34.381036000000002,-99.678282999999979 34.379798999999998,-99.672337448339604 34.378003970284972,-99.671377000000007 34.377713999999997,-99.666676988468737 34.374633899592595,-99.665992000000003 34.374184999999997,-99.665404581506792 34.374094751646162,-99.662705000000003 34.373679999999993,-99.659863615570984 34.374283464835351,-99.659362000000002 34.374389999999998,-99.654194000000004 34.376519000000002,-99.649662000000006 34.379885000000002,-99.630904999999998 34.376007,-99.628541546335526 34.375150829397036,-99.624196999999995 34.373576999999997,-99.600026 34.374687999999999,-99.596322999999998 34.377136999999998,-99.587595999999991 34.385866999999998,-99.587235087741874 34.386377538370702,-99.585718954359294 34.388522226586467,-99.585441999999986 34.388914,-99.584530999999984 34.391204999999999,-99.585306000000003 34.398122,-99.584479999999985 34.407673000000003,-99.580059999999989 34.416652999999997,-99.574366999999995 34.418281,-99.569695999999993 34.418418000000003,-99.563067665646059 34.417445690943012,-99.562203999999994 34.417318999999999,-99.561530791054494 34.417028950664999,-99.555986000000004 34.414639999999999,-99.549242000000007 34.412714999999992,-99.529786 34.411451999999997,-99.528744576810823 34.411579971493573,-99.523649999999989 34.412205999999998,-99.517623999999998 34.414493999999991,-99.514279999999999 34.414034999999998,-99.499874999999989 34.409607999999999,-99.497090999999983 34.407730999999991,-99.494103999999993 34.404755000000002,-99.490425999999999 34.399693999999997,-99.487218999999982 34.397955000000003,-99.477547 34.396355,-99.477019613816751 34.396364300212412,-99.474810232095294 34.396403261641368,-99.472297823530695 34.396447566809115,-99.470968999999997 34.396470999999991,-99.463286816319666 34.393024688790533,-99.452647999999996 34.388252,-99.445020999999983 34.379891999999998,-99.440759999999997 34.374122999999997,-99.430994999999982 34.373413999999997,-99.43081720973791 34.373532661492725,-99.420432000000005 34.380464000000003,-99.408847999999992 34.372776000000002,-99.407167999999999 34.372605,-99.406018176721332 34.372844364351735,-99.404336527339453 34.373194441551952,-99.402959999999979 34.373480999999998,-99.399602999999999 34.375078999999999,-99.397253000000006 34.377870999999999,-99.396160718377317 34.383134276834824,-99.391492 34.405631,-99.393918999999997 34.415273999999989,-99.396488000000005 34.417290999999999,-99.396901999999997 34.418688000000003,-99.397009999999995 34.424002999999999,-99.395768462359129 34.43494110377263,-99.394955999999993 34.442098999999999,-99.381011 34.456935999999999,-99.376037841709419 34.458617501802458,-99.375365000000002 34.458844999999997,-99.369609999999994 34.458699000000003,-99.358795 34.455862999999994,-99.354671999999994 34.451856999999997,-99.35478257092818 34.450383391084422,-99.354837000000003 34.449657999999999,-99.356770999999995 34.446542,-99.357101999999998 34.444915000000002,-99.356712999999999 34.442143999999999,-99.350407000000004 34.437083,-99.342020261837703 34.431514649700844,-99.341336999999996 34.431061,-99.341016600261696 34.430906286427735,-99.334036999999995 34.427536000000003,-99.331050066208874 34.424666026137302,-99.328674000000007 34.422383000000004,-99.325094009617374 34.416010263301388,-99.324222000000006 34.414458000000003,-99.321411663781888 34.411055277053073,-99.319798627189357 34.409102230797522,-99.319605999999979 34.408869000000003,-99.318363000000005 34.408295999999993,-99.316372999999999 34.408204999999995,-99.308273999999997 34.410013999999997,-99.299098 34.414227999999994,-99.294647999999981 34.415373000000002,-99.289922000000004 34.414731000000003,-99.287844819286008 34.413958196831629,-99.264167 34.405149000000002,-99.261320999999981 34.403498999999996,-99.261255940568432 34.403158389836314,-99.260996786434447 34.401801622187399,-99.259199386422964 34.392391568987605,-99.258998120407611 34.391337867029385,-99.258979999999994 34.391243000000003,-99.259239630132384 34.391043961974496,-99.260703756811225 34.389921531074158,-99.261190999999997 34.389547999999998,-99.262646013804954 34.388906249865343,-99.264243556741917 34.388201635660714,-99.264508000000006 34.388084999999997,-99.271031915197597 34.387722560266795,-99.271781628057255 34.38768090955238,-99.273607516746409 34.387579471291865,-99.273957999999993 34.38756,-99.27534 34.386598999999997,-99.274925999999994 34.384903999999999,-99.271845396288441 34.382114976063626,-99.271280999999988 34.381603999999996,-99.258696 34.372633999999998,-99.254722 34.372405,-99.251407999999984 34.375079999999997,-99.248969000000002 34.375984000000003,-99.242944999999992 34.372667999999997,-99.239138083830497 34.366035888164781,-99.237232999999989 34.362716999999996,-99.237183660287812 34.362563767173611,-99.235448627455725 34.357175329079247,-99.234251999999984 34.353459,-99.233273999999994 34.344101000000002,-99.23260599999999 34.342379999999999,-99.229993999999991 34.340538000000002,-99.226152999999982 34.339725999999999,-99.221975 34.340020000000003,-99.219768999999999 34.341377,-99.217335000000006 34.341520000000003,-99.213134999999994 34.340369000000003,-99.210957832415772 34.336710386428308,-99.210716000000005 34.336303999999998,-99.20972399999998 34.324934999999996,-99.211600000000004 34.313969999999998,-99.213476 34.310671999999997,-99.213233598142949 34.308226764636807,-99.211647999999997 34.292231999999991,-99.211468055040228 34.291676209875057,-99.209990337717599 34.287112032604114,-99.209742000000006 34.286344999999997,-99.209514950796304 34.286049346749877,-99.207560999999998 34.283504999999998,-99.203681000000003 34.281925999999999,-99.200221999999997 34.281151999999999,-99.196259999999995 34.281463000000002,-99.196052113016066 34.281264951942028,-99.19571031750732 34.280939333014615,-99.195605 34.280839,-99.194569999999985 34.272424,-99.196926000000005 34.260928999999997,-99.197153 34.244298,-99.19555299999999 34.24006,-99.191138999999993 34.23234,-99.190145999999984 34.229660000000003,-99.190036000000006 34.227186000000003,-99.192076 34.222192,-99.192683000000002 34.218825000000002,-99.192104 34.216693999999997,-99.189758414718312 34.214539281858485,-99.189510999999996 34.214312,-99.188483307800709 34.214128939694163,-99.159015999999994 34.20888,-99.143985 34.214762999999998,-99.138220000000004 34.219158999999998,-99.130609000000007 34.219408,-99.128513999999996 34.218766000000002,-99.127549000000002 34.217986000000003,-99.126614000000004 34.21532899999999,-99.127525000000006 34.213771,-99.130089999999996 34.212192000000002,-99.131552999999997 34.209352000000003,-99.131884999999997 34.207382000000003,-99.129791999999995 34.204402999999999,-99.126566999999994 34.203004,-99.119203999999996 34.201746999999997,-99.108757999999995 34.203400999999999,-99.102001344898341 34.205813362825268,-99.092190999999985 34.209316,-99.08119261238302 34.211229594305671,-99.079534999999993 34.211517999999991,-99.075978000000006 34.211221000000002,-99.06646499999998 34.208404000000002,-99.060343999999986 34.204760999999991,-99.059158999999994 34.202928999999997,-99.058800000000005 34.201256,-99.058083999999994 34.200569000000002,-99.048792000000006 34.198208999999999,-99.043470999999997 34.198208,-99.040961999999993 34.200842000000002,-99.039004000000006 34.204667,-99.037458999999998 34.206454,-99.036272999999994 34.206912000000003,-99.013074999999986 34.203221999999997,-99.005790000000005 34.206646999999997,-99.002916243275195 34.208781598893673,-99.002945441244265 34.209102775846141,-99.003147197273819 34.211322087284138,-99.003432988816769 34.214465787333673,-99.000760999999997 34.217643000000002,-98.99085199999999 34.221632999999997,-98.987293999999991 34.221223000000002,-98.981363999999999 34.217582999999991,-98.978684999999984 34.210231,-98.976586999999995 34.206291,-98.974131999999983 34.203566000000002,-98.969003 34.201298999999999,-98.966301999999999 34.201323000000002,-98.962469999999996 34.204667999999998,-98.962085000000002 34.206386000000002,-98.962306999999981 34.211312,-98.960791 34.213029999999996,-98.958474999999993 34.213854999999995,-98.952512999999982 34.212649999999996,-98.950395999999984 34.21168,-98.940219999999997 34.203685999999998,-98.928145 34.192689,-98.927456000000006 34.191155000000002,-98.923128999999989 34.185977999999999,-98.920704 34.183435000000003,-98.918333000000004 34.181831000000003,-98.909348999999992 34.177498999999997,-98.892677318093561 34.17250349095427,-98.87651287834953 34.167659972141138,-98.872921999999988 34.166584,-98.871543000000003 34.165026999999995,-98.871211000000002 34.163012000000002,-98.872229000000004 34.160446,-98.874954999999986 34.157031000000003,-98.874871999999996 34.155656999999998,-98.873271000000003 34.153596,-98.868116 34.149635000000004,-98.862549999999999 34.149110999999998,-98.860124999999996 34.149912999999998,-98.858418999999998 34.152732,-98.8579 34.159627,-98.857321999999982 34.161093999999999,-98.855585000000005 34.161620999999997,-98.854264541670545 34.16164976192438,-98.831114999999983 34.162154,-98.812953999999991 34.158444000000003,-98.806809999999984 34.155901,-98.804411553093104 34.153928907629435,-98.792015000000006 34.143735999999997,-98.779288744496085 34.140194111533035,-98.773070373738221 34.138463455122455,-98.767587610783494 34.136937528280072,-98.765569999999983 34.136375999999998,-98.764702233233265 34.135780085954792,-98.763778343962841 34.135145631382905,-98.761796999999987 34.133785000000003,-98.760558000000003 34.132387999999999,-98.759485999999995 34.128881999999997,-98.759653 34.126911999999997,-98.757118934362524 34.12470437936247,-98.757036999999983 34.124633000000003,-98.753813984496389 34.124468645349353,-98.749290999999999 34.124237999999998,-98.741966000000005 34.125529999999998,-98.740191287161664 34.126850584722824,-98.739461000000006 34.127394000000002,-98.737231999999992 34.130991999999999,-98.736819999999994 34.133374000000003,-98.735471000000004 34.135207999999999,-98.734286999999995 34.135758000000003,-98.730242646678789 34.1359250861193,-98.717536999999993 34.136450000000004,-98.716104 34.135947000000002,-98.70640034274598 34.134745066348501,-98.696517999999998 34.133521000000002,-98.690291400890658 34.133167457450512,-98.690072 34.133155000000002,-98.688275858887323 34.134465065675442,-98.685589983550884 34.136424083851644,-98.676900633591032 34.14276190388366,-98.676457484208683 34.143085127260051,-98.670573548505118 34.147376740066704,-98.655654999999982 34.158257999999996,-98.650582999999997 34.163113000000003,-98.648072999999997 34.164440999999997,-98.643223000000006 34.164530999999997,-98.635729999999995 34.161617999999997,-98.634085211037615 34.161100728840964,-98.630950281399748 34.160114822001631,-98.621666000000005 34.157195000000002,-98.620507214282355 34.157012478916968,-98.617663812339856 34.156564612849806,-98.616732999999996 34.156418000000002,-98.615748434938936 34.156446107485429,-98.612133570686254 34.156549305078279,-98.611829 34.156557999999997,-98.610173632571488 34.157093658210222,-98.610154152422197 34.157099961766605,-98.608852999999996 34.157521000000003,-98.603977999999998 34.160249,-98.599789 34.160570999999997,-98.577135999999996 34.148961999999997,-98.572451 34.145091,-98.560191000000003 34.133201999999997,-98.558593000000002 34.128253999999998,-98.550916999999998 34.119334000000002,-98.536257000000006 34.107343,-98.530610999999993 34.099843,-98.528199999999998 34.094960999999998,-98.504182 34.072370999999997,-98.487068052145446 34.063003092954936,-98.486783271268621 34.06284720836274,-98.486328 34.062598,-98.483944186894661 34.06241565608709,-98.482821069121968 34.062329745958955,-98.482039999999998 34.062269999999998,-98.475065999999998 34.064269000000003,-98.449033999999983 34.073461999999999,-98.446378999999993 34.075429999999997,-98.445784000000003 34.076827000000002,-98.445590305319797 34.079232123390703,-98.445584999999994 34.079298,-98.445259148452962 34.079797720749731,-98.443724000000003 34.082152,-98.442807999999999 34.083143999999997,-98.442148160210323 34.083427517317581,-98.441104460406791 34.083875970068213,-98.440092000000007 34.084311,-98.439068026005657 34.084479541105658,-98.434822808733685 34.08517828308225,-98.432126999999994 34.085622,-98.43151641213494 34.085605425226575,-98.43092946822253 34.085589492282431,-98.428479999999993 34.085523000000002,-98.425229999999999 34.084798999999997,-98.422252999999998 34.083036999999997,-98.419995 34.082487999999998,-98.419161945519861 34.082694545588339,-98.41804644206556 34.082971120917755,-98.417812999999995 34.083029000000003,-98.414426000000006 34.085073999999999,-98.400747497198822 34.098985940284976,-98.399776999999986 34.099972999999999,-98.398505572550647 34.104180252359392,-98.39838899999998 34.104565999999998,-98.398160000000004 34.121395999999997,-98.400493999999995 34.121777999999999,-98.400966999999994 34.122236,-98.398441000000005 34.128456,-98.384381000000005 34.146317000000003,-98.381237999999996 34.149453999999999,-98.367493999999994 34.156190999999993,-98.366862955318183 34.156357896864854,-98.364023000000003 34.157108999999998,-98.34173552164826 34.153594120579292,-98.339428832109121 34.153230340726623,-98.331172907733077 34.151928328079421,-98.326986688030772 34.151268134169193,-98.325445000000002 34.151024999999997,-98.324621914768684 34.150650086831803,-98.323612587945547 34.150190341106089,-98.322580000000002 34.149720000000002,-98.320651676675396 34.148059023851737,-98.318749999999994 34.146420999999997,-98.315432139066189 34.144301906683673,-98.312023538956254 34.142124858924547,-98.300208999999995 34.134579000000002,-98.299345719035045 34.134365643147696,-98.29862570169189 34.134187693395319,-98.293901000000005 34.133020000000002,-98.280321 34.130749999999999,-98.258217018239392 34.129574098564007,-98.256467 34.129480999999998,-98.254901718278489 34.129708262798985,-98.247953999999993 34.13071699999999,-98.241012999999995 34.133102999999998,-98.225282000000007 34.127245000000002,-98.223600000000005 34.125093,-98.216463000000005 34.121820999999997,-98.203710999999998 34.117676000000003,-98.200074999999998 34.116782999999998,-98.191455000000005 34.115752999999998,-98.169120000000007 34.114170999999999,-98.157411999999994 34.120466999999998,-98.154353999999998 34.122734,-98.142753999999996 34.136358999999999,-98.136769999999999 34.144992000000002,-98.130815999999996 34.150531999999998,-98.123377000000005 34.154539999999997,-98.114506000000006 34.154727,-98.109461999999979 34.154110999999993,-98.107064999999992 34.152531000000003,-98.101937000000007 34.146829999999994,-98.092021474678845 34.132735952269094,-98.090223999999992 34.130181,-98.089754999999982 34.128211,-98.090659999999986 34.12198,-98.092421000000002 34.116917,-98.095117999999999 34.11119,-98.096177285423778 34.109455137055363,-98.096466125075011 34.108982084942461,-98.099327999999986 34.104295,-98.101378023037029 34.101786489578267,-98.103538246996251 34.099143131812454,-98.104308999999986 34.098199999999999,-98.119416999999999 34.084474,-98.121038999999996 34.081265999999999,-98.120207999999991 34.072127000000002,-98.11802999999999 34.067064999999999,-98.114587 34.06228,-98.100919767943822 34.050244792175462,-98.099096110217346 34.048638900093685,-98.096177018664264 34.044625138601674,-98.096541898037387 34.040976263553816,-98.09727167092565 34.038969381040054,-98.097731364247636 34.038509687718062,-98.098001443813914 34.038239608151798,-98.102015208841422 34.03732738850595,-98.104022094890695 34.036232725638037,-98.104083244997014 34.036133356900422,-98.105481647738245 34.033860956680144,-98.105481647738245 34.032444902147553,-98.105481647738245 34.031306746267951,-98.103616999999986 34.029206999999992,-98.088202999999993 34.005481000000003,-98.085260000000005 34.003259,-98.082839000000007 34.002412,-98.055197000000007 33.995840999999999,-98.050169864666017 33.994989457544634,-98.041117 33.993456000000002,-98.027671999999981 33.993357000000003,-98.019485000000003 33.993803999999997,-98.018481521828946 33.993960861546498,-98.005667000000003 33.995964,-97.987387999999996 33.999822999999999,-97.982805999999997 34.001949000000003,-97.978243000000006 34.005386999999999,-97.974597608872358 34.00657735007583,-97.974172999999993 34.006715999999997,-97.973934144800623 34.006593661859519,-97.971670000000003 34.005434,-97.968339999999998 34.000529999999998,-97.965354903485249 33.996992503283089,-97.963375425210828 33.994646717187933,-97.96302799999998 33.994235000000003,-97.962715090700769 33.994009516348072,-97.958325000000002 33.990845999999998,-97.955849999999998 33.990136,-97.952687999999995 33.990113999999998,-97.947571999999994 33.991053,-97.946472999999997 33.990731999999994,-97.945729999999998 33.989839000000003,-97.945949999999982 33.988395999999995,-97.952184120103468 33.971402949359636,-97.95307606469359 33.968971674482539,-97.95691699999999 33.958502000000003,-97.960351000000003 33.951928000000002,-97.965737000000004 33.947392,-97.972662 33.944527,-97.974172999999993 33.942832000000003,-97.974062000000004 33.940289,-97.972493999999998 33.937907000000003,-97.971175000000002 33.937128999999999,-97.965952999999999 33.936191,-97.963425 33.936236999999998,-97.955511 33.938186000000002,-97.954466999999994 33.937773999999997,-97.953395 33.936444999999999,-97.952679000000003 33.929482,-97.953694999999996 33.924373000000003,-97.957155 33.914453999999999,-97.960615000000004 33.910353999999998,-97.961188664141474 33.909913087050903,-97.963139679674441 33.908413554571595,-97.964461 33.907398,-97.964803587866868 33.907309441163022,-97.9693952279504 33.906122503898267,-97.969873000000007 33.905999,-97.970298415583201 33.906261144464871,-97.973142999999993 33.908014,-97.976962999999998 33.912548999999999,-97.978803999999997 33.912548,-97.979984999999999 33.911402000000002,-97.983551999999989 33.904001999999991,-97.984539999999996 33.900703,-97.984566 33.899076999999998,-97.984416725907181 33.89872544733722,-97.984025057628415 33.897803036597892,-97.98383498894799 33.897355409354304,-97.983768999999995 33.897199999999991,-97.977858999999995 33.889929000000002,-97.974177999999995 33.886642999999999,-97.967776999999998 33.882429999999999,-97.958438 33.879179,-97.951215000000005 33.878424000000003,-97.946463999999992 33.878883000000002,-97.942729999999997 33.879845000000003,-97.938801999999995 33.879891,-97.936743000000007 33.879204,-97.933120450042608 33.877388671138185,-97.918328311832767 33.869976048610916,-97.905467000000002 33.863530999999995,-97.896737999999985 33.857984999999999,-97.877386999999999 33.850236000000002,-97.871447000000003 33.849001,-97.865764999999982 33.849392999999999,-97.835425213046037 33.857383352392631,-97.834333 33.857671000000003,-97.833886750888084 33.857971936447115,-97.833218553718808 33.858422547723912,-97.806802470257153 33.876236728393856,-97.805423000000005 33.877167,-97.803472999999997 33.880189999999999,-97.801578000000006 33.885137999999998,-97.784656999999982 33.890631999999997,-97.78061799999999 33.895533,-97.779683000000006 33.899242999999998,-97.780339999999995 33.904833000000004,-97.783716999999996 33.910559999999997,-97.772672 33.914382000000003,-97.765445999999997 33.913531999999989,-97.763769999999994 33.914240999999997,-97.762914903547767 33.914953098088951,-97.761142192227695 33.916429357685161,-97.760223999999994 33.917194000000002,-97.759399000000002 33.91881999999999,-97.759833999999984 33.92521,-97.762660999999994 33.930846000000003,-97.762767999999994 33.934396,-97.752956999999995 33.937049000000002,-97.738478 33.937421,-97.736553999999998 33.936574999999998,-97.735919542935619 33.936533987763056,-97.734773489745407 33.936459905200778,-97.733722999999998 33.936391999999998,-97.732266999999993 33.936691000000003,-97.725289000000004 33.941045000000003,-97.720699142354164 33.94461309292862,-97.716772000000006 33.947665999999998,-97.714693355370301 33.94981590741822,-97.712051708440285 33.952548118711093,-97.709683999999996 33.954996999999999,-97.708350195107343 33.95701014009046,-97.70415899999999 33.963335999999998,-97.69792099999998 33.977331,-97.69310999999999 33.983699,-97.688023 33.986606999999999,-97.671772000000004 33.991370000000003,-97.661489000000003 33.990817999999997,-97.656210000000002 33.989488,-97.633778000000007 33.981256999999999,-97.609091000000006 33.968093000000003,-97.589597999999995 33.953553999999997,-97.588828000000007 33.951881999999998,-97.591270649549756 33.930345579062646,-97.591514000000004 33.928199999999997,-97.595084 33.922953999999997,-97.596154999999996 33.922105999999999,-97.59697899999999 33.920228000000002,-97.597115000000002 33.917867999999999,-97.596955673755872 33.917077348335745,-97.596288999999985 33.913769000000002,-97.593782375104212 33.910260437761373,-97.589253999999997 33.903922,-97.587440999999984 33.902479,-97.582744000000005 33.900784999999999,-97.578907598302408 33.900207204108142,-97.558269999999993 33.897098999999997,-97.555002000000002 33.897281999999997,-97.551541 33.897947000000002,-97.543245999999996 33.901288999999998,-97.533617322522971 33.906127586572126,-97.532723000000004 33.906576999999999,-97.525277000000003 33.911750999999995,-97.519170999999986 33.913637999999999,-97.504870374844515 33.918353570482601,-97.500960000000006 33.919643,-97.495648860558163 33.919307898609453,-97.494857999999979 33.919257999999999,-97.492061582842766 33.918500058129531,-97.487115891787269 33.917159576320657,-97.48650499999998 33.916993999999995,-97.484158940985964 33.915822631562747,-97.460375999999982 33.903948,-97.458068999999995 33.901634999999999,-97.451065249608234 33.891558064966901,-97.450953999999996 33.891398000000002,-97.451469000000003 33.87093,-97.452287410342421 33.86882620086994,-97.455665873415143 33.860141550511862,-97.457616999999999 33.855125999999998,-97.459565999999995 33.853316,-97.461485999999994 33.849559999999997,-97.462857 33.841771999999999,-97.459067999999988 33.834581,-97.453056999999987 33.828536,-97.444192999999999 33.823773000000003,-97.426492999999994 33.819398,-97.410387 33.818845000000003,-97.403235695189224 33.818961304668854,-97.384901622687948 33.819259479377855,-97.372940999999997 33.819454,-97.368744000000007 33.821471000000003,-97.365506999999994 33.823762999999992,-97.358512999999988 33.830018000000003,-97.348337999999984 33.843876000000002,-97.340900078515631 33.860236176367188,-97.339391593410966 33.867629740388111,-97.337846311291798 33.870430566802547,-97.336524008254173 33.872827243260353,-97.33293952159849 33.874440259476913,-97.329175814777756 33.874440259476913,-97.327562805507441 33.873902588562437,-97.326564370247013 33.872737756024428,-97.326487449786001 33.872648016149064,-97.324157539016809 33.866016724171544,-97.322365295688968 33.864941382342593,-97.318243141591921 33.865120602507631,-97.31654836796514 33.865642075591225,-97.315913230822716 33.865837504006514,-97.314412999999988 33.866988999999997,-97.310479256695203 33.873361218982971,-97.307489695517361 33.878203969770759,-97.302471419756401 33.880175433263638,-97.299245387323282 33.880175433263638,-97.295170524880618 33.877119286431629,-97.294227111562321 33.876411726442917,-97.286921603026471 33.869423850720118,-97.28598279642199 33.868525862052032,-97.284253187903744 33.867526845294535,-97.279107999999979 33.864555000000003,-97.275347999999994 33.863225,-97.271531999999993 33.862560000000002,-97.257971626565464 33.863220416657512,-97.256624999999985 33.863286000000002,-97.255635999999996 33.863697999999999,-97.254234999999994 33.865322999999997,-97.249208999999993 33.875100999999994,-97.246418496348156 33.898356425448434,-97.246179999999981 33.900343999999997,-97.245398270620598 33.902084836575838,-97.245057441245748 33.90284383100218,-97.244945999999999 33.903092,-97.242092 33.906277000000003,-97.241794392023195 33.906436890220043,-97.238755934556053 33.908069304909361,-97.226522000000003 33.914642,-97.210920999999999 33.916063999999999,-97.210512235443105 33.915911440173737,-97.206141000000002 33.914279999999998,-97.185457999999997 33.9007,-97.180845000000005 33.895203999999993,-97.179608999999999 33.892249999999997,-97.170773789281327 33.861660975771436,-97.166629 33.847310999999998,-97.166824000000005 33.840395,-97.171627 33.835335,-97.180939422624874 33.831550006302521,-97.181369999999987 33.831375,-97.186254000000005 33.830894,-97.193690000000004 33.831307000000002,-97.195830999999998 33.830803000000003,-97.197477000000006 33.829794999999997,-97.199700000000007 33.827322000000002,-97.203513999999998 33.821824999999997,-97.204994999999997 33.81886999999999,-97.205652 33.809823999999999,-97.205556910941183 33.806237292333442,-97.205445103342427 33.802019970418343,-97.205431000000004 33.801487999999999,-97.205114487332324 33.800890302957832,-97.203236000000004 33.797342999999998,-97.194785999999993 33.785344000000002,-97.190397000000004 33.781153000000003,-97.187792000000002 33.769702000000002,-97.181842999999986 33.755869999999994,-97.173532726140948 33.740090726508434,-97.172577000695028 33.738276026602087,-97.172191999999995 33.737544999999997,-97.168438536634085 33.734131892706188,-97.163454368039083 33.729599677915004,-97.163149000000004 33.729322000000003,-97.162807288850388 33.729115696596551,-97.155066000000005 33.724442000000003,-97.152609597300682 33.723370138808036,-97.150103410774264 33.72227655424301,-97.149393999999987 33.721966999999999,-97.137529999999998 33.718663999999997,-97.126102000000003 33.716940999999998,-97.121101999999993 33.717174,-97.119522126797463 33.717502594273334,-97.114921749218269 33.718459416457094,-97.113264999999998 33.718803999999999,-97.112398501853761 33.719102240295193,-97.110065570752283 33.719905212653977,-97.108936 33.720294000000003,-97.108097026518521 33.720734123472262,-97.106518853348803 33.721562029324609,-97.104524999999995 33.722608,-97.097154000000003 33.727809,-97.094085000000007 33.730992,-97.092697209381924 33.732891057656268,-97.092130098039192 33.733667094850453,-97.091071999999983 33.735115,-97.089936943375889 33.737167271747261,-97.087911027802278 33.740830286618703,-97.086195000000004 33.743932999999998,-97.084820762198987 33.752363244406453,-97.084693 33.753146999999998,-97.08461299999999 33.759993,-97.085217999999998 33.765512,-97.087362453285593 33.77250304797397,-97.087851999999998 33.774099,-97.093101265647221 33.787040841586602,-97.093917000000005 33.789051999999998,-97.094675961767678 33.791977368936216,-97.095047178759813 33.793408200769441,-97.095235999999986 33.794136000000002,-97.095080023591905 33.79561056406444,-97.094877682854474 33.797523445530629,-97.094770999999994 33.798532000000002,-97.093897185962049 33.800360798466031,-97.09266432242093 33.802941048788071,-97.092111999999986 33.804096999999999,-97.087998999999982 33.808746999999997,-97.078589999999991 33.812755999999993,-97.067977124183287 33.814475679891196,-97.064604445188394 33.815487484896828,-97.062631847535258 33.816079264957295,-97.058622892638837 33.818751903281317,-97.055415722506638 33.823829921794093,-97.055412197115942 33.8238546000754,-97.055148464371385 33.82570077017467,-97.055682980641905 33.830778788687446,-97.057821087157734 33.834520485448607,-97.058282726048489 33.836367011192308,-97.058622892638837 33.837727655580807,-97.057553829022481 33.840133030590344,-97.055415722506638 33.841202089027483,-97.052208542016004 33.841736615656437,-97.048734113748537 33.840934820533782,-97.045339940802535 33.839496399893775,-97.041245000000004 33.837761,-97.038858000000005 33.838264000000002,-97.023899 33.844213000000003,-97.017857000000006 33.850141999999998,-97.010381749407998 33.858564100233409,-96.999664164722446 33.87063922351804,-96.985567000000003 33.886521999999999,-96.983970999999997 33.892082999999992,-96.984938999999997 33.904865999999991,-96.985275905099471 33.906070041818985,-96.988744999999994 33.918467999999997,-96.993996999999979 33.928978999999998,-96.995022999999989 33.932034999999999,-96.995140238436761 33.933014648420269,-96.996024643022366 33.940404763634284,-96.996183000000002 33.941727999999998,-96.996167702736543 33.941832622020257,-96.995421139189489 33.946938567064805,-96.995367999999999 33.947302,-96.994947208134789 33.948043840473474,-96.994456760007211 33.948908482357652,-96.994287999999983 33.949205999999997,-96.990835000000004 33.952700999999998,-96.988126301178397 33.954514162310069,-96.987892000000002 33.954670999999998,-96.982723774786024 33.956016867344054,-96.981537499896135 33.956325787441237,-96.981336999999982 33.956377999999994,-96.979415000000003 33.956178,-96.979347000000004 33.955129999999997,-96.980675999999988 33.951813999999999,-96.981031000000002 33.949159999999999,-96.97981799999998 33.941588000000003,-96.976955000000004 33.937452999999998,-96.973806999999979 33.935696999999998,-96.97254199999999 33.935794999999999,-96.952313000000004 33.944581999999997,-96.944610999999995 33.949216999999997,-96.933309804512817 33.955134148312766,-96.932252000000005 33.955688000000002,-96.924267999999998 33.959159,-96.922113999999979 33.959578999999998,-96.921429967464036 33.959451233053208,-96.919039990098355 33.959004821377064,-96.918617999999995 33.958925999999998,-96.91833921313939 33.958790334953079,-96.917063225391544 33.958169405626251,-96.916299999999993 33.957797999999997,-96.91417790611122 33.956157267456653,-96.911732563120111 33.95426660943896,-96.911336000000006 33.953960000000002,-96.910857206749995 33.953482904168467,-96.908421363636307 33.951055696608989,-96.907387 33.950024999999997,-96.905252999999988 33.947218999999997,-96.902433999999985 33.942017999999997,-96.901946611333699 33.940667581536225,-96.899441999999993 33.933728000000002,-96.896468999999996 33.91331799999999,-96.897193999999999 33.902954,-96.895728000000005 33.896414,-96.887761838797758 33.878628251663962,-96.883009999999999 33.868018999999997,-96.875280999999987 33.860505000000003,-96.87198767019855 33.857765462058182,-96.866438000000002 33.853149000000002,-96.85608999999998 33.84749,-96.850593000000003 33.847211,-96.845895999999996 33.848974999999996,-96.841592000000006 33.852893999999999,-96.840818999999996 33.863644999999998,-96.839777999999995 33.868395999999997,-96.837412999999984 33.871349000000002,-96.833926235310372 33.873661568818115,-96.832156999999995 33.874834999999997,-96.812777999999994 33.872646000000003,-96.794275999999996 33.868886000000003,-96.786859371055769 33.865207582975678,-96.783484999999999 33.863533999999994,-96.780568999999986 33.860098,-96.779588000000004 33.857939000000002,-96.777202000000003 33.848162000000002,-96.776765999999995 33.841976000000003,-96.770675999999995 33.829621000000003,-96.769378000000003 33.827477000000002,-96.766316855179326 33.825510582121247,-96.766234999999995 33.825457999999998,-96.761588000000003 33.824406000000003,-96.754041 33.824657999999999,-96.746233969152598 33.825673509073113,-96.746037999999984 33.825699,-96.741799282455162 33.826447231494264,-96.71318112067361 33.831498997677379,-96.712421999999989 33.831632999999997,-96.708134 33.833060000000003,-96.704457000000005 33.835020999999998,-96.700318655907978 33.838434731313264,-96.699573999999998 33.839049000000003,-96.695480719177567 33.844085960723298,-96.693127324791789 33.84698191524042,-96.690708 33.849958999999998,-96.688190999999989 33.854613,-96.687524326814838 33.85620885855986,-96.684726999999995 33.862904999999998,-96.682762564556768 33.871464102957781,-96.682209 33.873876000000003,-96.682102999999998 33.876645000000003,-96.683464 33.884217,-96.681051007513375 33.895708672998403,-96.680947000000003 33.89620399999999,-96.675306000000006 33.909114000000002,-96.673449000000005 33.912278,-96.670618000000005 33.914913999999996,-96.667186999999998 33.916939999999997,-96.665308436653305 33.917161206414967,-96.66440999999999 33.917267000000002,-96.659896000000003 33.916665999999999,-96.65150600931733 33.910998546998165,-96.644049999999979 33.905962000000002,-96.630116999999998 33.895422000000003,-96.628293999999997 33.894477000000002,-96.616355751891987 33.894625565889051,-96.614680358047494 33.89464641537834,-96.611821556077771 33.89468199182577,-96.607562 33.894734999999997,-96.592948000000007 33.895615999999997,-96.588319642127203 33.894847991673281,-96.587934000000004 33.894784,-96.58760387584924 33.894318075382706,-96.585452000000004 33.891280999999999,-96.585359999999994 33.888947999999999,-96.587494000000007 33.884250999999999,-96.590112000000005 33.880665,-96.597347999999982 33.875100999999994,-96.601685999999987 33.872822999999997,-96.611969999999999 33.869016000000002,-96.625399000000002 33.856541999999997,-96.628968999999998 33.852406999999999,-96.629746999999995 33.850866000000003,-96.630021999999983 33.847541,-96.629842405402627 33.847037300944812,-96.629577623992816 33.846294683138318,-96.629289999999997 33.845488000000003,-96.627812273090953 33.844523322531259,-96.626623854929747 33.84374750920842,-96.623154999999997 33.84148299999999,-96.622548607895212 33.841284829387497,-96.620258613641042 33.840536452948584,-96.605267599881515 33.835637348301233,-96.601258 33.834327000000002,-96.599141379811712 33.83346048638235,-96.597030984690946 33.832596521217091,-96.595164098773168 33.831832245189069,-96.592925999999991 33.830916000000002,-96.587067000000005 33.828009000000002,-96.573054340771023 33.81917200025552,-96.572936999999996 33.819097999999997,-96.568822993124115 33.818734252140963,-96.566549213959448 33.818533211567136,-96.566298000000003 33.818511,-96.551222999999993 33.81912899999999,-96.541502252916899 33.82118138128849,-96.537683599711926 33.821987629236112,-96.532865 33.823005000000002,-96.532141353898353 33.822830017549641,-96.529233999999988 33.822127000000002,-96.526655000000005 33.820891000000003,-96.526331240434345 33.820568979830284,-96.523863000000006 33.818114,-96.519910999999993 33.811346999999998,-96.517492044660074 33.805400310572544,-96.516583999999995 33.803167999999999,-96.515958999999995 33.798933999999996,-96.515952403498957 33.797370629253059,-96.5159410675722 33.794684014612457,-96.515912 33.787795000000003,-96.51191399999999 33.781477999999993,-96.502285999999998 33.773459999999993,-96.500268000000005 33.772582999999997,-96.486059999999995 33.773009999999999,-96.459153999999998 33.775232000000003,-96.456254 33.776035,-96.450509999999994 33.780588000000002,-96.448044999999993 33.781030999999999,-96.436454999999995 33.780050000000003,-96.430214000000007 33.778654000000003,-96.423664429058576 33.776393528613141,-96.422642999999994 33.776040999999999,-96.422322840041474 33.775682043625913,-96.420980388055867 33.774176915691271,-96.419961 33.773034000000003,-96.419583102042878 33.772404537625398,-96.417562000000004 33.769038000000002,-96.416145999999998 33.76609899999999,-96.413408000000004 33.757714,-96.411885201063754 33.755703128434462,-96.408468999999997 33.751191999999996,-96.403507000000005 33.746288999999997,-96.384116000000006 33.730141000000003,-96.383299027856694 33.729391180874664,-96.380090129695702 33.726446045924753,-96.379450023740389 33.7258585550397,-96.370956555983966 33.718063228581727,-96.370761536889887 33.717884239557762,-96.369590000000002 33.716808999999998,-96.369084597701828 33.715741445126696,-96.366945 33.711221999999999,-96.363253 33.701050000000002,-96.363143372320295 33.69469995601051,-96.363135 33.694215,-96.362964209763192 33.693778090504111,-96.362198000000006 33.691817999999998,-96.356236230636398 33.68737146600408,-96.355945999999989 33.687154999999997,-96.355455421824701 33.68710517164083,-96.352724507664888 33.686827790830883,-96.348305999999994 33.686378999999995,-96.346643697131185 33.686554630652331,-96.344174978865311 33.686815463144171,-96.342664999999997 33.686974999999997,-96.337175125435976 33.689043696356201,-96.321102999999994 33.695099999999996,-96.318759999999997 33.696753,-96.318590686098233 33.696960051986665,-96.318010443675675 33.697669623646739,-96.316924999999998 33.698996999999999,-96.314798583555884 33.702507526903553,-96.309963999999994 33.710489000000003,-96.308342766341951 33.715746247280322,-96.307034999999985 33.719987000000003,-96.307001890234133 33.720499786556005,-96.306595999999999 33.726785999999997,-96.307389 33.735005,-96.3061 33.741002000000002,-96.30525491425243 33.743702118680943,-96.304087485467235 33.747432149959735,-96.303009000000003 33.750878,-96.301705999999982 33.753756000000003,-96.294866999999996 33.764771000000003,-96.292482000000007 33.766418999999999,-96.277269000000004 33.769734999999997,-96.269895999999989 33.768405,-96.251497151236435 33.760405611313516,-96.248231999999987 33.758986,-96.23960043273749 33.754058875473291,-96.229595766085112 33.748347949873668,-96.229022999999998 33.748021,-96.220521000000005 33.747390000000003,-96.1999 33.752116999999998,-96.196336040977513 33.753254070097242,-96.186553999999987 33.756374999999998,-96.178059000000005 33.760517999999998,-96.174632999999986 33.763699000000003,-96.169932696734321 33.769534234627457,-96.169452000000007 33.770130999999999,-96.167888847884015 33.774482610028038,-96.162756999999985 33.788769000000002,-96.162122572851359 33.796140263149638,-96.162213638666273 33.796174412747511,-96.166837334419654 33.79790829445497,-96.170373408451042 33.799381659586444,-96.173025461119408 33.800560352833699,-96.175150000000002 33.801951000000003,-96.17734 33.805117000000003,-96.17895107878303 33.810509748931381,-96.178963999999993 33.810552999999999,-96.176910000000007 33.813934000000003,-96.175889999999981 33.814627000000002,-96.164217431250009 33.817001137011715,-96.150765000000007 33.816986999999997,-96.148792 33.819197000000003,-96.151629999999983 33.831945999999995,-96.150147000000004 33.835856,-96.148457006953691 33.837436961236868,-96.14806999999999 33.83779899999999,-96.147446683377808 33.837891494337825,-96.138904999999994 33.839159000000002,-96.128108733462625 33.839703753325978,-96.122951 33.839963999999995,-96.118168999999995 33.837883999999995,-96.109992999999989 33.832396000000003,-96.104074999999995 33.830730000000003,-96.099360000000004 33.830469999999998,-96.097448 33.832724999999996,-96.097637999999989 33.837935000000002,-96.099152999999987 33.842409000000004,-96.100785000000002 33.844230000000003,-96.101348999999999 33.845720999999998,-96.101472999999999 33.846708999999997,-96.100094999999996 33.847971,-96.084626 33.846656000000003,-96.063924 33.841522999999995,-96.055357999999984 33.838262,-96.049381559404907 33.836618570443349,-96.048833999999999 33.836468000000004,-96.044074587870469 33.838420736557822,-96.037191000000007 33.841245,-96.031783693249977 33.849934429642978,-96.031271075997878 33.850758194920559,-96.029462717056688 33.852402158173604,-96.025188419607474 33.852073366797306,-96.022229284477689 33.850922593794486,-96.021900493101384 33.849114234853282,-96.022507000000004 33.846130000000002,-96.022064891975305 33.843195970965255,-96.021407302851145 33.841880802274289,-96.019950829321616 33.840821548098475,-96.019598947095744 33.84056563358331,-96.005296 33.845505000000003,-96.000534603789163 33.849305889934179,-95.998351 33.851049000000003,-95.997709 33.852181999999992,-95.997673906338932 33.852568581878202,-95.997405462294296 33.855525685805766,-95.9977342536706 33.860950759443568,-95.997376655326022 33.862202357114477,-95.996747879541701 33.864403078452035,-95.993624351909531 33.866211440579008,-95.991487204777812 33.866869023331596,-95.988856861024331 33.866869023331596,-95.984753921632091 33.864671017651808,-95.984253769013037 33.864403078452035,-95.980965842506947 33.859306796190523,-95.9735403792467 33.856832331211713,-95.972155999999998 33.856371000000003,-95.971744371228908 33.856383941655046,-95.951609000000005 33.857016999999999,-95.945502988542614 33.859346036998218,-95.944283999999982 33.859811,-95.943359355023844 33.860365112733476,-95.941777921153459 33.861312819872232,-95.941266999999996 33.861618999999997,-95.936631000000006 33.870615,-95.93550004724635 33.874497995518659,-95.935325000000006 33.875098999999999,-95.935308000000006 33.878723999999998,-95.935637 33.880370999999997,-95.936817000000005 33.882385999999997,-95.937201999999999 33.884652000000003,-95.936131999999986 33.886825999999999,-95.935198 33.887100999999994,-95.922712000000004 33.883758,-95.915960999999996 33.881148000000003,-95.905343000000002 33.875629000000004,-95.893305999999995 33.868161,-95.887490999999997 33.863855999999998,-95.881292000000002 33.860627,-95.859469000000004 33.852455999999997,-95.849863999999997 33.844951999999999,-95.843772999999999 33.838949,-95.841300369514457 33.837329726167006,-95.840012000000002 33.836486,-95.839442445999168 33.836292954052603,-95.838335071878717 33.835917618112738,-95.837515999999994 33.835639999999998,-95.831947999999997 33.835160999999999,-95.828244999999995 33.836053999999997,-95.827967044704152 33.836191602640042,-95.826538854622555 33.836898632614485,-95.822787000000005 33.838755999999989,-95.821905415666805 33.839551758599306,-95.821112514659319 33.840267467546653,-95.820784000000003 33.840564,-95.819357999999994 33.842784999999999,-95.818975999999992 33.844456,-95.819524999999999 33.848438999999999,-95.820676999999989 33.850750999999995,-95.821665999999979 33.855443,-95.821665999999979 33.856633000000002,-95.82138191533943 33.857119395418813,-95.820824189768416 33.858074304994595,-95.820595999999995 33.858464999999995,-95.820256321913618 33.858527429344676,-95.805149 33.861303999999997,-95.800842000000003 33.861212000000002,-95.790314669347865 33.857829825250164,-95.789867 33.857685999999994,-95.789358977006231 33.85733891951336,-95.788304168820886 33.85661827626933,-95.787891000000002 33.856335999999999,-95.776255000000006 33.845145000000002,-95.773281999999995 33.843834,-95.772067000000007 33.843817,-95.763621999999984 33.847954,-95.758311274366889 33.849968021173019,-95.758015999999998 33.850079999999998,-95.757640875431136 33.850475976069447,-95.754310000000004 33.853991999999998,-95.753512999999984 33.856464000000003,-95.753688987366843 33.856976705401074,-95.75729390188404 33.867478931648478,-95.757457999999986 33.86795699999999,-95.758009454152003 33.868443703186436,-95.760805000000005 33.870911,-95.762558999999996 33.874366999999992,-95.76194240701966 33.883030946465368,-95.761915999999999 33.883401999999997,-95.758343999999994 33.890610999999993,-95.756366999999997 33.892625000000002,-95.747335000000007 33.895755999999999,-95.737508000000005 33.895966999999999,-95.729445045960333 33.893952819075864,-95.728448999999998 33.893704,-95.723226300470785 33.890698381785455,-95.717160861060378 33.887207774089354,-95.713910181462765 33.885337036216413,-95.713539999999981 33.885123999999998,-95.710877999999994 33.884551999999999,-95.696961999999999 33.885218000000002,-95.684831000000003 33.890231999999997,-95.676924999999983 33.897236999999997,-95.669978 33.905844000000002,-95.665338000000006 33.908132000000002,-95.659818 33.909092,-95.647272999999998 33.905976000000003,-95.636977999999999 33.906613,-95.609439392746168 33.923623282239362,-95.603656999999998 33.927194999999998,-95.599677999999983 33.934246999999999,-95.585944999999981 33.93448,-95.570311428427317 33.932892416047835,-95.564667905744443 33.932319318211334,-95.563423999999998 33.932192999999998,-95.562724847986416 33.932007581530534,-95.561592737930383 33.931707340510293,-95.561007000000004 33.931551999999996,-95.560415995740641 33.931042615914556,-95.559931936825777 33.930625407571753,-95.559414000000004 33.930179000000003,-95.558286100391328 33.928753215740784,-95.557777967458279 33.928110882033096,-95.556914999999989 33.927019999999999,-95.551147999999984 33.914566,-95.549144999999996 33.90795,-95.549475 33.901310999999993,-95.552330999999981 33.894419999999997,-95.55209457427955 33.888655441173519,-95.552085000000005 33.888421999999998,-95.551943532854764 33.888208369560985,-95.548485831718622 33.882986873004867,-95.548324999999991 33.882744000000002,-95.547838962671932 33.882363312195096,-95.545708294665019 33.880694470565629,-95.545197000000002 33.880293999999999,-95.54352178779898 33.880173169084813,-95.541265054919734 33.880010393826282,-95.539789999999996 33.879904000000003,-95.537358049249164 33.88037416967029,-95.534038375697051 33.881015963020303,-95.533282999999997 33.881161999999996,-95.531798241123994 33.881968630089013,-95.525321999999989 33.885486999999998,-95.521418133191162 33.888379988113826,-95.520137966641357 33.88932866459119,-95.515301759339067 33.891142240377064,-95.510062536063273 33.890134704348199,-95.506233872599807 33.886306036979761,-95.506495 33.878588999999998,-95.506084999999999 33.87639,-95.502407477038815 33.874787101867227,-95.502303999999995 33.874741999999998,-95.492028000000005 33.874822000000002,-95.480004545492946 33.87882505156746,-95.478574999999992 33.879300999999998,-95.477829321179073 33.879890044047791,-95.469962325642697 33.886104525088022,-95.467351237093553 33.886417854985297,-95.464924614258621 33.886709049048328,-95.462909526581015 33.885903021006229,-95.461498966768687 33.883686425341857,-95.46277824472287 33.878821065729895,-95.464211000000006 33.873372000000003,-95.463346 33.872312999999998,-95.461127233926518 33.871832054399569,-95.447370000000006 33.868850000000002,-95.418546279096461 33.866998581211959,-95.411345060268999 33.866536029139695,-95.407794999999979 33.866307999999989,-95.406882133018115 33.866362247208706,-95.404325916920058 33.866514150597617,-95.375232999999994 33.868243,-95.352338000000003 33.867789000000002,-95.339561303488324 33.868836967540759,-95.339121999999989 33.868873,-95.339014688391742 33.869073090388603,-95.33835013321854 33.870312202400832,-95.334854000000007 33.876830999999996,-95.334836460323601 33.877305631062114,-95.334523000000004 33.885787999999998,-95.333451999999994 33.886285999999998,-95.325571999999994 33.885703999999997,-95.310579050797429 33.880679668661742,-95.294789354523203 33.875388337067108,-95.287864786488143 33.87494634339312,-95.28344485260331 33.877745636185885,-95.281676877907344 33.882902226669891,-95.281529544303439 33.887616824907447,-95.281317419351268 33.889260797911334,-95.280350898312903 33.896751357029835,-95.279761569607459 33.899108654721076,-95.277846267017765 33.900876629417048,-95.275341635722626 33.901760616765031,-95.272542342929853 33.902055281117747,-95.267212735027385 33.900338966530455,-95.263849803053915 33.899255988324974,-95.261050510261143 33.899992642069066,-95.255746586173245 33.902939265610648,-95.253094626984378 33.90544389690578,-95.250884657186859 33.913105118684925,-95.250737329293145 33.917083057468233,-95.251326652288412 33.924154956252103,-95.253020000000006 33.927236999999998,-95.253623000000005 33.92971,-95.252905999999982 33.933647999999998,-95.250453815364224 33.936614470603772,-95.23166760862577 33.959340626388752,-95.231194814374604 33.959912577712174,-95.230491 33.960763999999998,-95.226393000000002 33.961953999999999,-95.219358 33.961567000000002,-95.184075000000007 33.950353,-95.174181557651636 33.944707625858101,-95.173657196254922 33.944408415920272,-95.168745999999999 33.941605999999993,-95.166685999999984 33.939728000000002,-95.161108999999982 33.937598,-95.149462 33.936335999999997,-95.131725657216535 33.936903570678005,-95.131056 33.936924999999995,-95.130760550144942 33.936820411866918,-95.124700000000004 33.934674999999991,-95.121184 33.931306999999997,-95.121974867397924 33.925542192115131,-95.122499622273722 33.921717137430115,-95.122365486317321 33.918632002634986,-95.119951031304154 33.915815139752631,-95.110963896232136 33.912998276870283,-95.103318123323447 33.913668959251616,-95.10214780889666 33.912991409673538,-95.100769532353866 33.912193461131935,-95.098489218495843 33.909913139475762,-95.095001673232161 33.904815960136006,-95.095247706914634 33.899772255341666,-95.095269945144935 33.899316370327696,-95.09392858558104 33.895962961020395,-95.090441035118587 33.893280234094433,-95.084002493615529 33.893280234094433,-95.079139333602001 33.898143394107954,-95.078905311676394 33.898377416033576,-95.074957661870556 33.900039583313315,-95.073630040977179 33.900598581227868,-95.071259538767663 33.901596686785098,-95.065491679645973 33.899584642240477,-95.06106518008815 33.895292278639054,-95.058834000000004 33.886812999999997,-95.049025 33.864089999999997,-95.046567999999994 33.862564999999996,-95.038661112238941 33.860609605793528,-95.037206999999995 33.86025,-95.033518790033554 33.860141698175291,-95.03143098776043 33.86008039125462,-95.030255193062573 33.860045864827867,-95.022324999999995 33.859813000000003,-95.016999191469623 33.861237606415294,-95.016422000000006 33.861392000000002,-95.008375999999984 33.866088999999995,-95.000223000000005 33.862504999999999,-94.995524000000003 33.857438000000002,-94.992810330111539 33.852698351540766,-94.992671 33.852454999999999,-94.992523097811741 33.852403566519136,-94.990494037024106 33.851697953840834,-94.988486999999992 33.850999999999999,-94.98739725328582 33.851074415574232,-94.983303000000006 33.851354,-94.981650000000002 33.852283999999997,-94.976208 33.859846999999995,-94.973410999999999 33.861730999999999,-94.971435 33.862122999999997,-94.968895000000003 33.860916000000003,-94.965888000000007 33.848421999999999,-94.964400999999995 33.837020999999993,-94.957676000000006 33.835003999999998,-94.949533421399437 33.825707838785306,-94.949112883549958 33.821754768331147,-94.948729542346143 33.818151347643564,-94.948715939727023 33.818023482549535,-94.944301522854289 33.81213759866646,-94.939560116480934 33.810502632153295,-94.935799688114457 33.810339132650462,-94.932366255585293 33.810993121156741,-94.928442330884351 33.812628087669893,-94.92451840618341 33.812791587172725,-94.924196338046286 33.812670811231236,-94.921902464831703 33.811810605997493,-94.919450010309433 33.810175636315982,-94.917815040627914 33.808704169305649,-94.917091634856007 33.805689966907131,-94.916834062621035 33.804616745101868,-94.916997555787162 33.801510305241678,-94.91961350347556 33.794152948011565,-94.920034399525505 33.790224602097751,-94.920103995647338 33.789575041141042,-94.920095560257593 33.789518805381888,-94.91961350347556 33.786305103362189,-94.913003475392784 33.779908559849432,-94.912450337640749 33.77937328682863,-94.911427000000003 33.778382999999998,-94.906244999999998 33.778191999999997,-94.902276 33.776288999999998,-94.89497736748055 33.771540270803243,-94.89019868072495 33.768431100796676,-94.888367999999986 33.76724,-94.887910246679809 33.766674529711281,-94.886225692565191 33.764593571999796,-94.885411379435553 33.764756432942491,-94.881447983999394 33.765549103837166,-94.879218389137634 33.764912090842074,-94.876033253179955 33.760771407616105,-94.875653319149677 33.757021753168047,-94.875534806260347 33.755852122792213,-94.875497398046861 33.755482932714841,-94.877080000000007 33.75222,-94.874668 33.749164,-94.870299604394191 33.746484207390097,-94.869443369718425 33.745958950164457,-94.869299999999996 33.745871,-94.8570941233355 33.742035460072337,-94.849295999999981 33.739584999999991,-94.841633779899112 33.739430990835892,-94.830804318260235 33.740068022348083,-94.828875382311935 33.74092532536806,-94.827937698058648 33.741342073027738,-94.826026615866809 33.743890180559411,-94.824752565187154 33.749304914465036,-94.82447272313469 33.749460382205008,-94.821885938813196 33.750897483986968,-94.817426749089677 33.752171534666616,-94.815635414888177 33.752066164468857,-94.813744972719192 33.751954964523563,-94.81275807295215 33.751896912919612,-94.812012015184067 33.751853028169073,-94.80914539498248 33.749304914465036,-94.798634446013509 33.744527205899239,-94.789716054221742 33.746119775421171,-94.777638928565466 33.753471071068567,-94.775064434371529 33.755038154868203,-94.770923763490302 33.754401129528375,-94.768057130944001 33.753445597691005,-94.766464573766783 33.750897483986968,-94.766146067269247 33.748030863785381,-94.766818924318841 33.746124416643802,-94.768057130944001 33.742616129879757,-94.767738636791165 33.737519908644046,-94.767244154304578 33.736926531576607,-94.76296091588064 33.731786662068515,-94.759138751496963 33.729557067206756,-94.758159820145337 33.729557067206756,-94.753087004596253 33.729557067206756,-94.750011775433265 33.728811557489699,-94.742576055627282 33.727008959675082,-94.742176780415733 33.726449974997927,-94.739390916583417 33.72254976995157,-94.737479828219207 33.716179498036198,-94.737788227808608 33.71500758055268,-94.73907239774114 33.71012773879076,-94.73746132453816 33.705563045258067,-94.73716130937693 33.704713004885136,-94.732383613155861 33.700253815161624,-94.728242929929891 33.699616789821789,-94.725694828570582 33.702483410023376,-94.724525908047042 33.704821269192259,-94.724102271393392 33.705668549067234,-94.721872664186904 33.707261118589173,-94.719006043985303 33.708216656598914,-94.714865360759347 33.707261118589173,-94.711043208720398 33.705668549067234,-94.709450639198465 33.699616789821789,-94.710289486124168 33.697309952648205,-94.710724689878106 33.696113138108018,-94.710724689878106 33.691653948384499,-94.710106194192988 33.688252279047049,-94.71008765219355 33.688150299756906,-94.707858069676533 33.686876245991066,-94.691547961569825 33.685092048879412,-94.684792000000002 33.684353000000002,-94.659166999999997 33.692138,-94.652265035786613 33.690979104454883,-94.649628372726468 33.688049476940073,-94.649099284135872 33.686462209886628,-94.648456523423718 33.684533926193204,-94.64818493525776 33.682632803768527,-94.647928021538007 33.680834402751707,-94.647870600191638 33.680432452214262,-94.648456523423718 33.673401362074948,-94.647827859209684 33.672301196274027,-94.646112824818204 33.669299876741562,-94.642890235687361 33.668420997570671,-94.635273213800133 33.669885811328072,-94.631328876730365 33.67284406472757,-94.630585813750528 33.673401362074948,-94.627656194751552 33.677795791992715,-94.62121101648988 33.681018386800773,-94.616816575217669 33.679553573043371,-94.614284398758912 33.677302743466427,-94.611543254774574 33.674866164477912,-94.611424034353576 33.674789522931938,-94.607441775118403 33.672229504256364,-94.60304734520065 33.671350625085473,-94.596895128555005 33.671350625085473,-94.593672545101384 33.673987285307021,-94.590449961647764 33.677502836053897,-94.590316660066918 33.67755410593854,-94.586641449284855 33.678967649811298,-94.579620000000006 33.677622999999997,-94.576973687569549 33.673401362074948,-94.5728722135906 33.669885811328072,-94.571305222138406 33.668005422800071,-94.569942586075811 33.666370260581196,-94.569356662843745 33.663440621711956,-94.571445361022185 33.660423619728157,-94.571993323065286 33.659632120703485,-94.572286279004103 33.656995454804722,-94.570821465246695 33.654944723492456,-94.568770728257221 33.65465176187643,-94.564669254278257 33.655823608340576,-94.563858010166513 33.65591721375597,-94.557052229552454 33.656702498865904,-94.552071876402621 33.653479904057846,-94.551192985877293 33.650257320604226,-94.551311999999982 33.644569999999995,-94.553536678805585 33.642054372646328,-94.552657799634687 33.638245860283412,-94.549142248887819 33.635902161677912,-94.543868917090279 33.635902161677912,-94.538888563940446 33.637952898667386,-94.538195599937964 33.637916426989378,-94.537583502619341 33.637884211439605,-94.533322276204103 33.637659937051346,-94.529220802225154 33.63443734792051,-94.528408204203203 33.630103504051213,-94.528341911699826 33.629749945032266,-94.52980672545722 33.627406252103981,-94.528927834931892 33.621839964367631,-94.526291174710352 33.619203298468861,-94.521363727720257 33.61686924674752,-94.520724886974008 33.61656663824732,-94.504615 33.620682000000002,-94.493418698303032 33.624467326832118,-94.492501061148843 33.624777568252533,-94.491502999999994 33.625115,-94.491295462081894 33.62531395337146,-94.487514000000004 33.628939000000003,-94.485874999999993 33.637867,-94.481313 33.638818999999998,-94.476415000000003 33.638947000000002,-94.466075000000004 33.636262000000002,-94.464185999999998 33.637655000000002,-94.461453000000006 33.643615999999994,-94.459197999999986 33.645145999999997,-94.454819999999998 33.644902999999999,-94.448637000000005 33.642766000000002,-94.446871000000002 33.640177999999999,-94.447513999999998 33.636254999999991,-94.448451000000006 33.634497000000003,-94.458816999999982 33.632444,-94.462736000000007 33.63091,-94.461129 33.625414999999997,-94.460285999999996 33.624420999999998,-94.45525499999998 33.622917,-94.452710999999994 33.622621000000002,-94.452325000000002 33.618817,-94.452961000000002 33.616985999999997,-94.454768999999999 33.615155999999992,-94.462335999999993 33.610567000000003,-94.469451000000007 33.60731599999999,-94.472166 33.604199,-94.471974000000003 33.602665000000002,-94.471151999999989 33.601588,-94.468086 33.599435999999997,-94.461794602929331 33.598691554192769,-94.458900358388505 33.598349085232492,-94.458231999999995 33.598269999999999,-94.454858239556387 33.593453869357283,-94.453995999999989 33.592222999999997,-94.453435550445548 33.592019500625121,-94.452150252013013 33.591552808439438,-94.451622 33.591360999999999,-94.449112 33.590893999999992,-94.442363999999998 33.591242999999999,-94.441536999999997 33.591501999999991,-94.439518000000007 33.594154000000003,-94.430358101189597 33.59122600196271,-94.430038999999994 33.591124,-94.429672337173542 33.590855074196774,-94.427920122643982 33.589569927010331,-94.427577999999983 33.589319000000003,-94.425982000000005 33.586424999999998,-94.413155000000003 33.569367999999997,-94.412481642075306 33.56890283335202,-94.412480771235352 33.568902231761562,-94.412480202418593 33.568901838813659,-94.412175000000005 33.568691,-94.408900999999986 33.568196999999998,-94.403341999999995 33.568424,-94.397341999999981 33.571607999999998,-94.385926999999995 33.581887999999999,-94.382886999999997 33.58326799999999,-94.379649 33.580607,-94.378075999999993 33.577019,-94.377759999999981 33.574609000000002,-94.378561000000005 33.571328999999999,-94.380090999999993 33.568942999999997,-94.382534000000007 33.567056999999998,-94.388052000000002 33.565511,-94.392357000000004 33.565286999999998,-94.394655618773015 33.564059042448399,-94.397398454287298 33.562313601959417,-94.399227012370631 33.559903231990447,-94.399393244337958 33.557077279687135,-94.399143896386974 33.555498071165481,-94.397957000000005 33.554389999999998,-94.392572999999999 33.551141999999999,-94.389515000000003 33.546778000000003,-94.386086000000006 33.544922999999997,-94.381666999999993 33.544035,-94.373392999999993 33.544471,-94.371597999999992 33.545000999999999,-94.363297000000003 33.544956999999997,-94.361350999999999 33.544612999999998,-94.358969999999999 33.54323,-94.355945000000006 33.54318,-94.348944999999986 33.548358999999998,-94.347382999999979 33.55107799999999,-94.34729 33.552197,-94.352653000000004 33.560611000000002,-94.352433000000005 33.56217199999999,-94.345512999999997 33.567312999999999,-94.344023000000007 33.567824000000002,-94.340576999999996 33.567878,-94.340047258358467 33.56768232744934,-94.338972839399958 33.567285465504582,-94.33842199999998 33.567081999999999,-94.337996277272822 33.566655299162022,-94.334939999999989 33.563592,-94.334379999999996 33.562536,-94.333929800646288 33.557825151092565,-94.333894999999998 33.557461000000004,-94.333202999999997 33.555365999999992,-94.331833000000003 33.553348,-94.33059 33.552692,-94.323660000000004 33.549835000000002,-94.319491999999997 33.548864000000002,-94.309582000000006 33.551673,-94.30641 33.555616,-94.306214999999995 33.557676,-94.307180999999986 33.559797000000003,-94.303577000000004 33.56828,-94.301022999999986 33.573022000000002,-94.298392000000007 33.576217999999997,-94.293257999999994 33.580418999999999,-94.289129000000003 33.582143999999992,-94.287025 33.582410000000003,-94.283581999999996 33.581890999999999,-94.282647999999995 33.580978000000002,-94.280849000000003 33.577187000000002,-94.280604999999994 33.574907999999994,-94.282171999999989 33.572989,-94.290372000000005 33.567905000000003,-94.291686999999996 33.563481000000003,-94.290901000000005 33.558872,-94.289439999999999 33.557634999999998,-94.287571999999997 33.557178,-94.279089999999997 33.557026,-94.275600999999995 33.557963999999998,-94.274473 33.558652000000002,-94.271997999999996 33.561517999999992,-94.270978999999997 33.563220999999999,-94.270853000000002 33.564782999999998,-94.265668999999988 33.573588999999998,-94.262754999999999 33.577354,-94.257801 33.582507999999997,-94.257524288354617 33.582703553652586,-94.252656000000002 33.586143999999997,-94.245931999999996 33.589113999999995,-94.242777000000004 33.589708999999999,-94.240178999999998 33.589536000000003,-94.236971999999994 33.587411000000003,-94.236362999999997 33.585991999999997,-94.236835999999997 33.580914,-94.237975000000006 33.577756999999998,-94.238867999999997 33.576721999999997,-94.244365999999999 33.573549,-94.251108000000002 33.56528,-94.252330999999984 33.561855,-94.252283000000006 33.560445,-94.251569000000003 33.558188,-94.250197 33.556764999999999,-94.237903999999986 33.552675,-94.233128263729824 33.552212399803537,-94.233017493976078 33.552201670126067,-94.231843999999981 33.552087999999998,-94.226392000000004 33.552911999999999,-94.222920999999999 33.554088,-94.21922099999999 33.556095999999997,-94.213604000000004 33.563133999999998,-94.21268334130005 33.563763266722709,-94.208078 33.566910999999998,-94.205634000000003 33.567228999999998,-94.203593999999981 33.566546000000002,-94.202594978382763 33.562850001484037,-94.201237000000006 33.557825999999999,-94.199485999999993 33.556085000000003,-94.197816999999986 33.555238000000003,-94.196394999999995 33.555123000000002,-94.193247999999997 33.556153999999999,-94.191332999999986 33.55766599999999,-94.189883999999992 33.562454000000002,-94.192482999999996 33.570425,-94.194399000000004 33.573678,-94.196366991504703 33.574779501237479,-94.201105911663163 33.575851400157113,-94.204265191768783 33.575005164570705,-94.207404999999994 33.574353000000002,-94.209665 33.573509999999999,-94.211329000000006 33.573774,-94.216140999999993 33.576391999999998,-94.217408000000006 33.579259999999998,-94.217197999999982 33.580736999999999,-94.214431000000005 33.583187000000002,-94.212997 33.583486999999991,-94.210966999999997 33.583143,-94.205788416261612 33.581380140341984,-94.203588205048902 33.580815984742067,-94.199751933850294 33.581098061448763,-94.196536237091394 33.581718635888464,-94.194464999999994 33.582886000000002,-94.190890999999979 33.587474,-94.183913000000004 33.594681999999999,-94.180879999999988 33.592612000000003,-94.176327 33.591076999999999,-94.162266000000002 33.588906,-94.161081999999993 33.587972,-94.162009999999995 33.580877,-94.161276999999998 33.579270999999999,-94.156782000000007 33.575749000000002,-94.152625999999998 33.575923000000003,-94.148731999999995 33.580196999999998,-94.146047999999993 33.581975,-94.144383000000005 33.582097999999995,-94.142160000000004 33.581389999999999,-94.141852 33.579590000000003,-94.143023999999983 33.577725,-94.145668999999984 33.575599999999994,-94.149506000000002 33.573602,-94.151257 33.571793,-94.151754999999994 33.569476000000002,-94.151455999999996 33.568387,-94.148520000000005 33.565677999999991,-94.145239000000004 33.564987000000002,-94.143401999999995 33.565504999999995,-94.136863999999989 33.570999999999998,-94.136045999999993 33.571387999999999,-94.135142000000002 33.571033,-94.134308000000004 33.569209,-94.133047999999988 33.557952999999998,-94.131382000000002 33.552934,-94.128658 33.550952000000002,-94.126897999999983 33.550646999999991,-94.123897999999997 33.552100000000003,-94.122878999999983 33.553111999999999,-94.12071899999998 33.560555,-94.120354999999989 33.5655,-94.119902152897509 33.566998927274319,-94.112842999999998 33.566991000000002,-94.103176000000005 33.570349999999998,-94.100106999999994 33.57256799999999,-94.097439999999992 33.573718999999997,-94.088943 33.575322,-94.082640999999995 33.575491999999997,-94.072670000000002 33.572234000000002,-94.072231491265512 33.572605318678747,-94.072031926011121 33.573523317998088,-94.072031926011121 33.573846369634623,-94.072031926011121 33.574161925883949,-94.071815412538413 33.574459631515609,-94.071712621294751 33.574600969288895,-94.071353404455635 33.574840447439463,-94.070395493400298 33.574561056392717,-94.069534727631535 33.574169799087244,-94.069517406590393 33.574161925883949,-94.068559493988133 33.573563230894273,-94.068280102941401 33.571966710019424,-94.06782332144887 33.570215714974232,-94.067801146640278 33.570130711574109,-94.066845999999998 33.568908999999998,-94.061283000000003 33.568804999999998,-94.056597999999994 33.567824999999999,-94.056095999999997 33.567252000000003,-94.055662999999996 33.561886999999999,-94.056442000000004 33.560997999999991,-94.059849999999997 33.559249,-94.061179999999993 33.559159,-94.066685000000007 33.560953999999995,-94.067984999999993 33.560960999999999,-94.071719999999999 33.559682000000002,-94.073744000000005 33.558284999999998,-94.073825999999997 33.555833999999997,-94.072156000000007 33.553863999999997,-94.069091999999998 33.553406000000003,-94.06547999999998 33.550908999999997,-94.061896000000004 33.549764000000003,-94.056095999999997 33.550725999999997,-94.051882000000006 33.552585,-94.050211999999988 33.551082999999998,-94.046040000000005 33.551321000000002,-94.043449999999993 33.552253,-94.043428000000006 33.551424999999995,-94.043374999999997 33.542315000000002,-94.043020107474533 33.494534442391668,-94.043008999999998 33.493039000000003,-94.043278999999998 33.491029999999995,-94.043271947583932 33.489425304099555,-94.043188 33.470323999999991,-94.043130608695648 33.460424000000003,-94.043089437732434 33.453322008844353,-94.043061045958495 33.448424427841935,-94.043010021810147 33.439622762252007,-94.042987999999994 33.435823999999997,-94.042987999999994 33.434442436873745,-94.042987999999994 33.431023999999994,-94.042886999999993 33.420225000000002,-94.042890126641851 33.419424334827802,-94.042891364631132 33.419107312620362,-94.042967439944888 33.399626074590046,-94.043053 33.377715999999999,-94.042868999999996 33.371169999999999,-94.043127999999996 33.358756999999997,-94.043066999999979 33.352097,-94.043066999999979 33.347351000000003,-94.043066999999979 33.339614667914582,-94.043066999999979 33.330497999999999,-94.042990000000003 33.271227000000003,-94.043049999999994 33.260903999999996,-94.043003999999996 33.250127999999997,-94.042730000000006 33.241822999999997,-94.042876000000007 33.215218999999998,-94.042891999999995 33.202666,-94.042874999999995 33.199784999999999,-94.042718999999991 33.160290999999994,-94.043184999999994 33.143476,-94.043076999999982 33.138162,-94.043007000000003 33.13389,-94.042951563372725 33.117233519058104,-94.042869999999994 33.092726999999996,-94.043036 33.079484999999998,-94.042963999999998 33.019219,-94.042986850316112 33.007494023677346,-94.043068075862834 32.965815492539427,-94.043087999999997 32.955592000000003,-94.043066999999979 32.937902999999999,-94.043092 32.910021,-94.042884999999998 32.898910999999998,-94.042859000000007 32.892771000000003,-94.042885999999996 32.880965000000003,-94.043025 32.880445999999999,-94.042784999999995 32.871485999999997,-94.042921087938623 32.829694015190334,-94.043025999999983 32.797476000000003,-94.042747000000006 32.786973000000003,-94.042828999999998 32.785277,-94.042937999999992 32.780557999999999,-94.043026999999995 32.776862999999999,-94.042946999999998 32.767991000000002,-94.042974715046569 32.757603400545236,-94.04314699999999 32.693030999999998,-94.042912999999999 32.655126999999993,-94.042779999999993 32.643465999999997,-94.042823999999996 32.640304999999998,-94.042925999999994 32.622014999999998,-94.042929 32.618259999999992,-94.042918999999998 32.610142000000003,-94.042939007208048 32.604544739553475,-94.043082999999996 32.564261000000002,-94.043142000000003 32.559502000000002,-94.043081 32.513612999999999,-94.042884999999998 32.505144999999999,-94.042911000000004 32.492851999999999,-94.043088999999995 32.486561000000002,-94.043071999999995 32.48429999999999,-94.042955000000006 32.480260999999999,-94.042995000000005 32.478003999999999,-94.042901999999998 32.472905999999995,-94.042874999999995 32.471347999999992,-94.042902999999981 32.470385999999998,-94.042907999999997 32.439890999999996,-94.042985999999999 32.435507,-94.042898999999991 32.400658999999997,-94.042923000000002 32.399918,-94.042900999999986 32.392282999999999,-94.042762999999994 32.373331999999998,-94.042738999999997 32.363559000000002,-94.042733519218956 32.277818574933548,-94.042732999999998 32.269696000000003,-94.042732 32.269620000000003,-94.042671451745775 32.225096273752321,-94.042662000000007 32.218145999999997,-94.042600205901905 32.185155675879351,-94.042565999999994 32.166893999999999,-94.042538999999991 32.166826,-94.042591000000002 32.158096999999998,-94.042681000000002 32.137956000000003,-94.042751999999993 32.125163,-94.042337000000003 32.119914,-94.042699999999996 32.056012000000003,-94.042717288248511 32.00695918811028,-94.042720000000003 31.999265,-94.042490448495869 31.997488887291052,-94.042251674184627 31.995641414801661,-94.041832999999997 31.992401999999998,-94.038411999999994 31.992436999999999,-94.029282999999992 31.995864999999998,-94.027080554152732 31.994823406342874,-94.018664 31.990842999999998,-94.011671046736083 31.979908989829021,-94.008352361284565 31.974719974671689,-94.002944198469422 31.966263903968002,-93.995504541226836 31.954631438414648,-93.994147015257326 31.952508844111783,-93.977461000000005 31.926418999999996,-93.971711999999982 31.920383999999995,-93.953546000000003 31.910562999999996,-93.943541310721315 31.908563758569336,-93.938002035663573 31.906916949339585,-93.935007833635339 31.903773037645127,-93.932462763507019 31.895538979891644,-93.931327794714704 31.894581351390723,-93.92767203678045 31.891496810199779,-93.923929283519882 31.889849995167665,-93.919587694495533 31.890748256066246,-93.915948999999998 31.892861000000003,-93.909557114944889 31.893143619429534,-93.905252294448232 31.890856686636408,-93.90476638821832 31.890598549301192,-93.901173350426333 31.885957535142037,-93.901888 31.880063,-93.898135577976262 31.874953416991548,-93.896981462364707 31.873381885463036,-93.889196542313442 31.867692899288475,-93.888241004857136 31.85786451213389,-93.888148571748644 31.856913771406646,-93.887306164689562 31.854968889155742,-93.884117000000003 31.847605999999995,-93.880377455095243 31.844791786271248,-93.879654915472827 31.84424803536659,-93.874821999999995 31.840611000000003,-93.874804231839249 31.835091218914506,-93.874787826198073 31.829994712349503,-93.874761000000007 31.821660999999999,-93.870917000000006 31.816836999999996,-93.868473098390325 31.815251608244314,-93.853390000000005 31.805467,-93.846187999999998 31.802021,-93.839950728453459 31.798597132180646,-93.836868453653821 31.794158659336233,-93.836868453653821 31.791454071635616,-93.836868453653821 31.788733862378688,-93.834649214842401 31.783309060642711,-93.831197070889573 31.780226788232302,-93.827450999999996 31.777740999999999,-93.823442999999997 31.775098,-93.822597999999985 31.773558999999995,-93.826519525540022 31.761832440276638,-93.827342999999999 31.759369999999997,-93.830112066651125 31.754555168030393,-93.830647423185951 31.745811043570992,-93.824579 31.734396999999998,-93.819048075401312 31.72885814427071,-93.818932598107111 31.728523867973351,-93.815657495541259 31.719043310199801,-93.815835943108667 31.711905251886723,-93.815525624652665 31.710796971318612,-93.814600367558683 31.707492480599399,-93.814586782471608 31.707443962415162,-93.811060073548262 31.705827553684028,-93.810303944025605 31.705480994217723,-93.807270273132957 31.704231833580664,-93.806045429297654 31.703104120446881,-93.803419352361757 31.700686292667093,-93.802693549340276 31.697783082925291,-93.802451615781152 31.693186330065117,-93.804479 31.685663999999999,-93.812820813246589 31.676953615984285,-93.81562111199878 31.674029590143711,-93.817425 31.672146,-93.821829497696953 31.673879806810671,-93.822051000000002 31.673966999999998,-93.822341750589956 31.673502431839047,-93.826462000000006 31.666919,-93.8257324849111 31.66154827530681,-93.825660999999997 31.661021999999996,-93.825228912080746 31.660277861177896,-93.81803699999999 31.647891999999999,-93.817707248836442 31.6409111211136,-93.816838000000004 31.622509,-93.818717000000007 31.614555999999997,-93.823976999999999 31.614227999999997,-93.825414416100287 31.615089707767993,-93.827851999999993 31.616550999999998,-93.838056999999992 31.606795000000002,-93.839382999999998 31.599074999999999,-93.837534908858984 31.593743346167731,-93.834924 31.586210999999999,-93.822958 31.568129999999996,-93.822219025006859 31.564792487143556,-93.820763999999997 31.558221000000003,-93.818582000000006 31.554825999999998,-93.798086999999995 31.534044000000002,-93.787687000000005 31.527343999999996,-93.781574079702807 31.525595412174177,-93.780834999999996 31.525383999999999,-93.777170583402579 31.525128039451072,-93.760062000000005 31.523933,-93.753860000000003 31.525331,-93.751899169046524 31.525601857922521,-93.749869902733366 31.526210635456998,-93.746826003263621 31.526007705679731,-93.743376259969125 31.525196002300419,-93.742401241878753 31.523787647735123,-93.74154991556837 31.522557958452786,-93.741111000000004 31.520101,-93.740752889151466 31.518711098615515,-93.740332360499409 31.517078940980245,-93.739317727342822 31.515049678599539,-93.734411826534469 31.513527159467717,-93.733432858180635 31.513223342063657,-93.726736285639134 31.511599931372594,-93.725924582259807 31.504091651519342,-93.728765551952293 31.496786301443361,-93.730997740177827 31.492118989316349,-93.733996137544537 31.48847587643743,-93.737167999999997 31.484621999999998,-93.741884999999982 31.483535,-93.745608448194673 31.481972669547908,-93.746355058504165 31.481633300507966,-93.747840636420193 31.480958036391328,-93.749869902733366 31.478928770078173,-93.749869902733366 31.475276095040186,-93.749626709600278 31.47120988033301,-93.749476 31.468689999999999,-93.709416000000004 31.442995,-93.706857276389258 31.44142369846492,-93.700929751125955 31.437783629836048,-93.697919763270235 31.429300939077926,-93.697603150134782 31.428408665937056,-93.704678 31.418899999999997,-93.704697874245824 31.418107106580852,-93.704878999999991 31.410881,-93.701611 31.409333999999998,-93.695865999999995 31.409391999999997,-93.689953513429003 31.406208353384852,-93.678362516190631 31.399967047179565,-93.675064666986117 31.398191282223291,-93.674659331220113 31.397973024503138,-93.674116999999981 31.397680999999995,-93.671643999999986 31.393352,-93.670181999999983 31.387184,-93.668532759396427 31.379357124595749,-93.668145986696857 31.37510269235548,-93.669064113561134 31.373151679996884,-93.669693055010129 31.371815184369147,-93.669512094168894 31.370548454097019,-93.668919524600994 31.366400452767671,-93.667402247962755 31.365414223393856,-93.665051865060306 31.363886475190469,-93.663891561951601 31.361952641672623,-93.663698175601809 31.360018811902275,-93.664665092360735 31.357698213179859,-93.665825387974422 31.355184231855155,-93.668439000000006 31.353011999999996,-93.669515978941746 31.350266666374935,-93.673736148309771 31.339509006758242,-93.677277000000004 31.330482999999997,-93.687850999999995 31.309835,-93.686922292404276 31.305369360695714,-93.686880000000002 31.305166,-93.686723586265984 31.304979085312567,-93.684737187533131 31.30260533533086,-93.684038999999999 31.301770999999995,-93.683824154244718 31.301752735987076,-93.675439999999995 31.30104,-93.668927999999994 31.297974999999997,-93.657003999999986 31.281735999999999,-93.647719584117951 31.27389987096868,-93.642516 31.269508000000002,-93.632650200244299 31.270182983909681,-93.620343000000005 31.271025000000002,-93.615257056394739 31.261768439618621,-93.61394199999998 31.259374999999995,-93.614287999999988 31.251631,-93.616308000000004 31.244595000000004,-93.616007481020262 31.233959925788763,-93.613835693061347 31.232449117569455,-93.609977782626956 31.229765355202261,-93.609827614285464 31.229660890324059,-93.608033931702224 31.227867209671889,-93.60740940488401 31.227242683526022,-93.605259887151632 31.224152751460338,-93.604319472818304 31.220794125122111,-93.604319472818304 31.215285983654958,-93.607287999999997 31.205403,-93.602442999999994 31.182541,-93.600307999999998 31.176157999999997,-93.598827999999997 31.174679,-93.595531708436056 31.171774432382691,-93.588772842417583 31.16581877494577,-93.588502999999989 31.165581,-93.588046655571759 31.165671453282986,-93.583339301771971 31.166604510813709,-93.579215000000005 31.167421999999995,-93.578993496784307 31.167654977688123,-93.574136071231791 31.172764031170193,-93.569563000000002 31.177574,-93.560942999999995 31.182481999999997,-93.552649000000002 31.185575,-93.548930999999996 31.186601,-93.535096999999993 31.185614,-93.533756450961803 31.184752004501149,-93.533306999999994 31.184463,-93.5330935917342 31.183965183917415,-93.531744000000003 31.180816999999998,-93.533193520062923 31.174490811082034,-93.53417786817559 31.170194787673282,-93.536829999999981 31.158620000000003,-93.540253000000007 31.156578999999997,-93.544009577425854 31.153014849431809,-93.544887639546317 31.148844041597808,-93.544887639546317 31.143136612291205,-93.544701999999987 31.135888999999999,-93.540277800652078 31.128868068802213,-93.539619249807799 31.121843550568837,-93.541375382556595 31.113501939154769,-93.541635919885238 31.113241401693255,-93.548470239502265 31.106407078590973,-93.549716998224596 31.105160319232844,-93.55112206776522 31.099540038044921,-93.551692642249563 31.097257738879012,-93.551034091405285 31.091111287020031,-93.546643772295099 31.082989189009115,-93.540128999999993 31.078002999999995,-93.53104031045666 31.074698717981779,-93.527873992025093 31.072210897922254,-93.526043656150705 31.070772777782928,-93.524020490083288 31.067083472240864,-93.523009982318626 31.065240780256033,-93.523659621286654 31.063941504256789,-93.525329858273139 31.060601035263321,-93.529255791555698 31.057567354514948,-93.532069000000007 31.055264,-93.531218761655126 31.051678447674814,-93.523247999999995 31.037841999999998,-93.516942620821894 31.032584114108545,-93.516407263768343 31.029550433360171,-93.516883288197775 31.024314186160638,-93.516942620821894 31.023661529978199,-93.539525999999995 31.008497999999999,-93.540062152267268 31.008345085566372,-93.540618575989114 31.008186389569964,-93.555580999999989 31.003918999999996,-93.562626264226125 31.00599480945781,-93.566016847371429 31.004567194682853,-93.567979815741779 31.001533515663564,-93.569764334642755 30.996715319472376,-93.571101253513504 30.991033414001794,-93.571905755076102 30.987614282198351,-93.567971999999997 30.977981,-93.560533000000007 30.971285999999999,-93.55046299120518 30.967360467203815,-93.549841 30.967117999999996,-93.539153617393822 30.956968324013513,-93.532549000000003 30.950695999999997,-93.526524876707626 30.939912016599852,-93.526293050708773 30.939497017171423,-93.526245000000003 30.939411,-93.526242458076936 30.939167805401102,-93.526231146824912 30.938085618677029,-93.526146999999995 30.930035,-93.526269219450654 30.929894609689271,-93.530935999999983 30.924533999999998,-93.542488999999989 30.920064,-93.54502991280485 30.920837107400992,-93.546884259495414 30.92151141825828,-93.549244331161987 30.921005686748707,-93.550358562122057 30.920030731622223,-93.551941554990407 30.918645608548566,-93.555650241837967 30.911228247920597,-93.555751501305451 30.910053639118178,-93.555774257662236 30.909789665608852,-93.556493125509377 30.9014508058257,-93.562447641167196 30.896531852982324,-93.563812214002311 30.895404595987301,-93.564247644832776 30.895044891882932,-93.567787752332634 30.888301832311882,-93.567450600170787 30.878524390216981,-93.566008182600839 30.875519355165832,-93.565853452041281 30.875197,-93.565427680666076 30.874309976760035,-93.563763247930751 30.87311591407202,-93.559394659034922 30.869981891957959,-93.55904186947815 30.86972880101742,-93.558616999999984 30.869423999999999,-93.558608112367665 30.868835818489011,-93.558593354020289 30.867859114376206,-93.558393833586933 30.854654896933653,-93.558352334289978 30.851908482785802,-93.558231866260058 30.843935935637496,-93.558171999999999 30.839973999999998,-93.553625999999994 30.835139999999999,-93.55374115920948 30.832414921630001,-93.554057 30.824940999999995,-93.561666000000002 30.807738999999998,-93.563243 30.806218000000005,-93.564501487304341 30.805543276361082,-93.569303000000005 30.802969,-93.578395 30.802046999999998,-93.584264999999988 30.796662999999995,-93.588934854633479 30.787551489258888,-93.589380999999989 30.786681000000002,-93.589895999999996 30.77776,-93.591925627378814 30.768225181611253,-93.592827999999997 30.763985999999996,-93.607757000000007 30.757656999999995,-93.611581311334461 30.752392350515215,-93.615058988962588 30.747604886281291,-93.619129 30.742001999999996,-93.617688 30.738479000000005,-93.609908791486006 30.729403419430973,-93.609718999999998 30.729181999999998,-93.609544 30.723138999999996,-93.61030547238029 30.720788970554505,-93.611192000000003 30.718053,-93.61618399999999 30.713980000000003,-93.616977218405893 30.712276394979256,-93.620773999999997 30.704122000000005,-93.621061387132315 30.696047232392139,-93.621092999999988 30.695159,-93.62235785978659 30.692974242186811,-93.629903999999996 30.679939999999995,-93.632922525899005 30.677439880221801,-93.638212999999993 30.673057999999997,-93.646373493696458 30.671658473870171,-93.653439445062318 30.670446661945991,-93.654970999999989 30.670183999999999,-93.666219386787546 30.661299653678171,-93.670353999999989 30.658033999999997,-93.670860468306827 30.657347728689221,-93.683099999999996 30.640763000000003,-93.685120999999981 30.625201,-93.684323003112922 30.617258061147268,-93.683396999999985 30.608040999999997,-93.680812614601606 30.602993111696524,-93.680648411741274 30.602453589051585,-93.679828117977763 30.599758343304948,-93.681234543283509 30.596101640780542,-93.683902548646543 30.593069810094963,-93.684328672415049 30.59258557751615,-93.684347894395486 30.592579170189346,-93.687282162286593 30.59160108089231,-93.689533999999995 30.592759,-93.692869000000002 30.594382000000003,-93.712453999999994 30.588479,-93.72107859525056 30.580404159651369,-93.727657631584904 30.574244488790981,-93.727844000000005 30.574069999999995,-93.727840097341868 30.573768021870688,-93.72780696123904 30.571204031383882,-93.727747245613443 30.566583382517752,-93.727745999999996 30.566486999999999,-93.725846999999987 30.556978,-93.728764326223569 30.546403128121515,-93.729195000000004 30.544841999999999,-93.736587760607577 30.541316766984647,-93.740252999999996 30.539569,-93.738909526480768 30.537838512460276,-93.732793 30.529960000000003,-93.727721000000003 30.525671000000003,-93.718711305261792 30.520890798500346,-93.714321999999996 30.518561999999996,-93.710116999999997 30.506399999999996,-93.713193644304937 30.50058809182816,-93.716678000000002 30.494005999999995,-93.71365216083376 30.483878530555742,-93.711446941284677 30.476497671106777,-93.710595424186792 30.473647647388944,-93.709703157003446 30.47066123332699,-93.708899372668625 30.467970970942378,-93.705844999999997 30.457747999999999,-93.697828 30.443837999999996,-93.6978 30.440583,-93.698862234241474 30.438260713588438,-93.702220303997905 30.430919206922557,-93.702664999999996 30.429947000000002,-93.722313999999997 30.420729,-93.729486046484141 30.413342592858086,-93.738025291703323 30.404548123662593,-93.738321805525445 30.404242747530638,-93.745333000000002 30.397022,-93.751243378615428 30.396311282781173,-93.751436999999996 30.396287999999998,-93.754787283332149 30.393127406185759,-93.75746720581121 30.390599218098316,-93.757654000000002 30.390422999999995,-93.757872622462301 30.389610210267922,-93.758470934573069 30.387385818798332,-93.75855399999999 30.387077,-93.758091991038413 30.3842338214119,-93.758032188807945 30.383865801664729,-93.757931393201204 30.383245510859378,-93.75589426835937 30.370709152880856,-93.756044740613035 30.365928314513319,-93.75610723110799 30.3639428524199,-93.756352000000007 30.356166000000002,-93.758519945992674 30.350935458285047,-93.760658351649255 30.34577618769989,-93.763244572034736 30.339536487238696,-93.765822 30.333317999999995,-93.764264999999995 30.330222999999997,-93.760690955159149 30.32995156504764,-93.760328 30.329923999999998,-93.747921244232074 30.314935395431327,-93.743830002049762 30.309992764786195,-93.741160171732417 30.306767342150266,-93.738698999999997 30.303793999999996,-93.734966161369201 30.301561360829975,-93.729390287632427 30.298226388348422,-93.724220000000003 30.295133999999997,-93.718684474451791 30.295009979388311,-93.714319430116035 30.294282471059141,-93.71311219174963 30.293184979315004,-93.711118400234781 30.291372437742464,-93.709949692759622 30.289928741213533,-93.708644873043468 30.288316906143507,-93.708448001046747 30.287627854154977,-93.707590519980414 30.284626670422831,-93.706607851977495 30.281187332412603,-93.706635817233519 30.280914670488997,-93.707189856385114 30.275512775340033,-93.709131999999997 30.271826999999995,-93.707538803456245 30.253087036355307,-93.707271000000006 30.249936999999996,-93.705637767078656 30.244573755694763,-93.705083000000002 30.242751999999996,-93.707646217538425 30.23733474070027,-93.713358999999997 30.225261,-93.71802168481895 30.219915738218987,-93.719219999999993 30.218541999999999,-93.720945999999998 30.209852,-93.717397000000005 30.193439,-93.710467999999992 30.180670999999997,-93.706634735424259 30.17682001000631,-93.705927274531248 30.176109277739844,-93.705791510460429 30.175972885881706,-93.703764000000007 30.173936,-93.703646997347349 30.173527735424756,-93.702964616901454 30.171146663230584,-93.701744610591902 30.166889619937699,-93.701686103512344 30.166685467574972,-93.697748000000004 30.152943999999998,-93.696083741705934 30.150925109485563,-93.688211999999979 30.141376,-93.69286799999999 30.135216999999997,-93.69498 30.135185,-93.698276000000007 30.138608000000005,-93.700984936503929 30.137486558544058,-93.701251999999997 30.137376,-93.7012922571502 30.136537706048752,-93.701585086407604 30.130439981942867,-93.701656556414648 30.128951727699913,-93.701742498922442 30.127162105630983,-93.701985639262489 30.122099077688652,-93.702366286953335 30.114172668214064,-93.702403861450691 30.11339023643033,-93.702436000000006 30.112720999999997,-93.70268530105453 30.112503701678254,-93.704703872918159 30.110744253531749,-93.710410303455276 30.105770356484715,-93.714491639657382 30.10221294069715,-93.723764999999986 30.094129999999996,-93.727140999999989 30.092110594495406,-93.7293848599641 30.090768395691203,-93.72996305770063 30.09042253796256,-93.732484999999997 30.088913999999995,-93.734084999999979 30.086129999999997,-93.731705540540531 30.081478540540548,-93.731605000000002 30.081282000000002,-93.729179922109864 30.079341937687897,-93.727017487667368 30.077611990133899,-93.71640499999998 30.069121999999997,-93.716151269697463 30.069056930886212,-93.707507094464489 30.066840132907302,-93.702179999999998 30.065473999999995,-93.700580000000002 30.063666,-93.699479012508235 30.0595596142199,-93.699395999999993 30.059249999999995,-93.699786698153744 30.05843348475733,-93.700658293446523 30.056611948527472,-93.700819999999993 30.056273999999998,-93.702099264262131 30.055460929156467,-93.703267223154896 30.054718601437116,-93.703940000000003 30.054290999999999,-93.704473210548429 30.054251542735575,-93.709782747672762 30.053858640136632,-93.710785394684464 30.05378444485228,-93.720804999999999 30.053042999999995,-93.729054152595779 30.045230570163486,-93.729990027439044 30.044344241966268,-93.737446000000006 30.037282999999999,-93.739158000000003 30.032626999999998,-93.739733999999999 30.023987000000002,-93.741078000000002 30.021571000000002,-93.744068611359822 30.019549890100706,-93.74834924745744 30.01665695787004,-93.753252045558341 30.013343557169065,-93.766227014667976 30.004574835541469,-93.782835629207284 29.993350429819579,-93.786934999999986 29.990579999999998,-93.789430999999993 29.987812000000002,-93.803328792953494 29.962666096659486,-93.807814999999991 29.954549,-93.813734999999994 29.935126,-93.816550000000007 29.920725999999995,-93.818997999999993 29.914822,-93.830374000000006 29.894358999999998,-93.838374000000002 29.882854999999999,-93.853129483564672 29.866348149842587,-93.854474509531912 29.864843479256791,-93.855140000000006 29.864098999999996,-93.857517787207271 29.862146563102172,-93.862474802662518 29.858076283033213,-93.863569999999996 29.857177,-93.864820388168837 29.856398395289631,-93.872445999999997 29.851650000000003,-93.890679000000006 29.843159000000004,-93.900728 29.836967,-93.911111176241661 29.828996955749506,-93.916359999999997 29.824967999999998,-93.922743999999994 29.818808,-93.927992000000003 29.809640000000002,-93.929208000000003 29.802952,-93.928808000000004 29.79708,-93.926503999999994 29.789559999999998,-93.922407000000007 29.785048,-93.898470000000003 29.771576999999997,-93.893861999999999 29.767289000000002,-93.890820999999988 29.761672999999995,-93.891780610698319 29.758916671398389,-93.892526767476923 29.756773455119472,-93.893828999999997 29.753032999999999,-93.891732576672823 29.744984915009951,-93.891637000000003 29.744618000000003,-93.891484462723341 29.744488863328282,-93.888820999999993 29.742234000000003,-93.873941000000002 29.737770000000005,-93.870019999999997 29.735482,-93.863203999999996 29.724059,-93.837970999999982 29.690618999999998,-93.852868 29.675885,-93.866980999999996 29.673085,-93.889989999999997 29.674012999999999,-93.930999999999997 29.679611999999999,-93.955443390383635 29.680262610936268,-93.955453232202885 29.68026287289646,-93.991585827226885 29.681224615973395,-94.000169999999997 29.681453101326589,-94.000222586816207 29.681454501032487,-94.001406000000003 29.681486,-94.010062765207763 29.679864152681674,-94.056505999999999 29.671163,-94.132576999999984 29.646217,-94.354166823921716 29.561457673765378,-94.370794193562546 29.555097613439198,-94.391123278008692 29.54732162684321,-94.45341877657637 29.523493256060661,-94.456196753642018 29.522430664556182,-94.45805240375158 29.521720868184531,-94.499046371673685 29.506040450016997,-94.499089575343746 29.506023924375612,-94.500455432020999 29.505501476685335,-94.500806999999995 29.505367,-94.552043946167103 29.48495633977835,-94.552044379602123 29.484956167115939,-94.568074121423052 29.478570587212708,-94.593696728539513 29.46836361027578,-94.594852999999986 29.467903,-94.599458690353401 29.465813271763974,-94.62931993394271 29.452264405230761,-94.631084 29.451464,-94.634656044789836 29.449584234717392,-94.661528069434993 29.435443006940758,-94.670389 29.430779999999999,-94.674924987623086 29.427889211977174,-94.680871144138621 29.42409972235215,-94.694158000000002 29.415631999999999,-94.708472999999998 29.403049000000003,-94.723958999999979 29.383268000000005,-94.730956033155138 29.369322304827527,-94.731047000000004 29.369140999999996,-94.731324722869132 29.369141342444962,-94.731537324603394 29.369141604592603,-94.742750849251038 29.369155431380086,-94.744595216508316 29.369157705569055,-94.744833999999997 29.369157999999999,-94.761491000000007 29.361882999999999,-94.772184717669788 29.3616343088914,-94.778690999999995 29.361483,-94.780073439975141 29.362532749099824,-94.782355999999993 29.364266,-94.782645420567292 29.368514320481975,-94.783130999999997 29.375641999999996,-94.766847999999996 29.393488999999999,-94.754099999999994 29.400999999999996,-94.743385419572206 29.410035318862811,-94.73704402931665 29.415382843516582,-94.727822669267709 29.423158969605012,-94.723817999999994 29.426535999999995,-94.716270519001597 29.430976788539081,-94.706539419927282 29.436702374764607,-94.706364999999991 29.436804999999996,-94.686385999999999 29.466508999999995,-94.681540999999996 29.471388999999999,-94.672399999999996 29.476842999999999,-94.665852999999998 29.478401000000002,-94.656737000000007 29.478032999999996,-94.645948000000004 29.473769,-94.628217000000006 29.475986000000002,-94.608557000000005 29.483344999999996,-94.594211 29.492127,-94.595122262498009 29.503650874486677,-94.595439999999996 29.507669,-94.591407000000004 29.513857999999999,-94.580274000000003 29.525295,-94.566674000000006 29.531987999999995,-94.553989999999985 29.529558999999999,-94.546993999999998 29.524379,-94.532347999999999 29.5178,-94.511044999999996 29.519649999999995,-94.495024999999984 29.525030999999998,-94.503428999999997 29.543249999999997,-94.509486999999993 29.542589999999997,-94.523742999999996 29.545987,-94.523871183237745 29.546315590042923,-94.5261306113389 29.55210749848424,-94.526336 29.552633999999998,-94.542531999999994 29.568999999999999,-94.546193009360195 29.571896121601313,-94.546385 29.572047999999995,-94.546803832691651 29.57214903106096,-94.55398799999999 29.573882,-94.570006000000006 29.572232,-94.578210999999982 29.567281,-94.593518000000003 29.561319,-94.625889999999998 29.552807999999999,-94.634988842169335 29.550728838088908,-94.643914431984982 29.54868926579681,-94.666855093063802 29.543447131924982,-94.691625000000002 29.537787000000002,-94.693243673136905 29.537529479678042,-94.718275999999989 29.533546999999995,-94.740699000000006 29.525857999999999,-94.757688999999999 29.524616999999999,-94.768675999999999 29.525659,-94.780938000000006 29.531093000000002,-94.785987568065153 29.540133852805589,-94.789123822994313 29.545749069554745,-94.789562096440733 29.546533763545689,-94.78971899677407 29.546814681200559,-94.790604999999999 29.548400999999998,-94.779438999999996 29.549472000000002,-94.772471009935998 29.548613672580952,-94.771052999999995 29.548438999999995,-94.762972090755014 29.555767305595641,-94.75523699999998 29.562781999999999,-94.750081379755628 29.56810096117977,-94.734626000000006 29.584046,-94.731874420576986 29.588423440241069,-94.724443803393115 29.600244680945409,-94.708741000000003 29.625226,-94.705273448792255 29.640626536822896,-94.703938528752261 29.6465553563269,-94.702680930363101 29.65214076491651,-94.702542126991759 29.652757236398369,-94.699660909360375 29.665553672721437,-94.69780371146922 29.673802100155214,-94.694887994254785 29.686751760487848,-94.693153999999993 29.694452999999999,-94.692434000000006 29.70361,-94.692611750388934 29.704808689927841,-94.695098387970873 29.721577752663908,-94.695317000000003 29.723051999999999,-94.695611486157915 29.72357178078331,-94.697558868014866 29.727008993840069,-94.705700105090941 29.741378628781629,-94.713878412983604 29.755813695314995,-94.714586470042065 29.757063446593907,-94.722078339612551 29.770286919851305,-94.724615999999983 29.774766,-94.735270999999997 29.785433,-94.738125273271791 29.786265833277604,-94.740919000000005 29.787080999999997,-94.749144589762409 29.783534045463153,-94.75591801041729 29.780613280409739,-94.771512 29.773888999999997,-94.792237999999998 29.767432999999997,-94.798897371247961 29.764438558858895,-94.816085 29.756710000000002,-94.81943931055217 29.753325616252695,-94.823987131664666 29.748737021482022,-94.851107999999996 29.721373000000003,-94.856932183541645 29.710462974624775,-94.860426638443812 29.703917062844585,-94.864167858487249 29.696908903620852,-94.865007000000006 29.695336999999999,-94.865123196353878 29.694545038919138,-94.867438000000007 29.678768000000002,-94.872550999999987 29.67125,-94.893107 29.661335999999999,-94.915413 29.656613999999998,-94.921317999999999 29.658177999999999,-94.928410408640929 29.669495826038883,-94.930071799099807 29.672147016790593,-94.930110565443542 29.672208878811933,-94.930656833967475 29.673080595662611,-94.931474856161643 29.67438596783704,-94.934166999999988 29.678681999999998,-94.935264231405057 29.686686879688732,-94.935319060033862 29.687086883348073,-94.935997030967087 29.692033037575822,-94.936088999999996 29.692703999999999,-94.936280063994801 29.692851065945039,-94.941277009519624 29.696697319220664,-94.942680999999993 29.697778,-94.942922907078852 29.697804516058127,-94.95311095436017 29.698921254167477,-94.965343618259496 29.700262107971746,-94.965962999999988 29.70033,-94.972666000000004 29.684869999999997,-94.980123280315652 29.679059463608382,-94.986438191421769 29.674139034277729,-94.988580124776774 29.672470090483102,-95.001800051879343 29.662169436052462,-95.002396227716986 29.661704909944582,-95.005398 29.659365999999995,-95.011683000000005 29.649802000000005,-95.013860566469219 29.644103309100927,-95.014229369455222 29.643138151779844,-95.015636 29.639457,-95.015582911847446 29.639202042718885,-95.014543866006605 29.634211997110764,-95.013498999999996 29.629193999999998,-95.006633444897872 29.623869765921089,-95.00056235200779 29.61916163683599,-95.000370188745762 29.619012614335521,-94.997782627529062 29.617005962082896,-94.997731096758997 29.616965999999998,-94.995478872439179 29.615219401320278,-94.993499353954022 29.613684285860323,-94.988871000000003 29.610095,-94.988045541621688 29.608923290953985,-94.982835617337045 29.60152798723708,-94.982705999999993 29.601344000000005,-94.982886347998431 29.601051719777942,-94.983895794498991 29.599415764569699,-94.98693593300419 29.594488776939745,-94.988992999999994 29.591155,-94.991605757589539 29.588791109774153,-94.991811610459919 29.588604864563266,-94.992208959522046 29.588245363334387,-95.006677600766466 29.575154872369662,-95.007235451984087 29.574650156950938,-95.007670000000005 29.574256999999996,-95.00815781845921 29.573398130166158,-95.016627 29.558487,-95.018253 29.554884999999999,-95.016926355758628 29.548485488141377,-95.015164999999996 29.539988999999998,-95.012091452887788 29.536262245236642,-95.011587670186657 29.535651395780732,-95.011086587278399 29.535043819893005,-95.001666768519442 29.523622047865974,-94.999580999999992 29.521093,-94.989064037839412 29.515168017977793,-94.982063906682782 29.511224326765198,-94.981915999999998 29.511140999999995,-94.981645984265953 29.511070508097891,-94.961088181447877 29.505703566689924,-94.958443000000003 29.505013000000002,-94.958183821928699 29.504969740154092,-94.957844913785792 29.504913172428417,-94.95747910332102 29.504852114391142,-94.955724072517796 29.504559179260749,-94.952845264169682 29.504078672538427,-94.930551536860648 29.500357589179547,-94.927405495678158 29.499832478177321,-94.909464999999997 29.496837999999997,-94.913072085311995 29.488019044482122,-94.913385000000005 29.487254,-94.917178632618899 29.481741136316387,-94.925104227340569 29.470223752399235,-94.925293406029382 29.469948840084836,-94.925914000000006 29.469047,-94.930860999999993 29.450503999999999,-94.923011455799639 29.448810114938265,-94.920334997737442 29.448232551169699,-94.919400999999993 29.448030999999997,-94.916063708203708 29.446327523795176,-94.890799999999984 29.433432,-94.888257132054065 29.420136433311271,-94.887299999999996 29.415132,-94.887087039327696 29.40154064293051,-94.886938304445962 29.392048238229908,-94.886925408340758 29.391225196262944,-94.886904215833582 29.389872669858736,-94.886764190565785 29.380936121184895,-94.886591910643261 29.369941049100753,-94.886536208040312 29.366386054846032,-94.886982892003275 29.364738908620176,-94.888420210858001 29.359438798199445,-94.888544709543254 29.358979709544975,-94.888781730376067 29.358105695694917,-94.894234145274325 29.337999926591962,-94.894147383920654 29.327241695272729,-94.894002695197727 29.309300588032027,-94.893993580875261 29.308170430590454,-94.891329624021282 29.304475264201969,-94.888683946869179 29.30080545353194,-94.886599269217157 29.297913803549264,-94.886536208040312 29.297826331584119,-94.885816422022174 29.297499155955627,-94.884216982863776 29.296772137788121,-94.876917125093229 29.293454018939102,-94.875951551627523 29.293015121686942,-94.86617837453683 29.293883848703121,-94.865126326153927 29.293977364132552,-94.861112574100105 29.294855372432302,-94.849730461009372 29.297345209778594,-94.825607939204673 29.30577638202961,-94.824952733476934 29.30600538596191,-94.823862547308252 29.313200608971236,-94.822547126780194 29.321882377573708,-94.82230657170463 29.344254498409398,-94.810695999999993 29.353434999999998,-94.797913847039041 29.344567105809805,-94.79693012269928 29.343884625840758,-94.784895000000006 29.335535,-94.779995 29.334935000000002,-94.777063999999996 29.336811,-94.773074869484503 29.336485139838025,-94.745528999999991 29.334235,-94.744945 29.33641,-94.731319999999997 29.338066,-94.722529999999992 29.331445999999996,-94.731082 29.331833,-94.769694999999999 29.304936,-94.780304129101268 29.295750693651897,-94.786095000000003 29.290737,-94.793321795438203 29.286014946162535,-94.795651468635626 29.284492716516493,-94.803695000000005 29.279236999999998,-94.809348860129617 29.275904173901317,-94.81020919937113 29.275397022855465,-94.819018398045671 29.270204194137058,-94.82210781776098 29.268383049216432,-94.825036245866656 29.266656805306088,-94.825782574142963 29.266216861214712,-94.826962003659688 29.265521613475173,-94.833188167130103 29.261851427154124,-94.844390135018429 29.255248113651685,-94.870677905110114 29.23975205180561,-94.881596387366812 29.233315846843187,-94.896165027201874 29.224727954332334,-94.925556066041452 29.207402583865772,-94.927613957028456 29.206189502425392,-94.940693735267132 29.198479261054111,-94.968741214129224 29.181945889621023,-94.978383546115566 29.176261947153485,-94.981700088962569 29.174306918145966,-95.026218999999998 29.148064000000002,-95.076832914261459 29.114498139229923,-95.081772999999998 29.111222,-95.084611040272236 29.108948681405003,-95.100241410561338 29.096428488590096,-95.110484 29.088224,-95.116308293211759 29.081343778536318,-95.119264367911811 29.077851775668329,-95.119484217932538 29.077592067446851,-95.122403192505772 29.074143890856067,-95.122524999999996 29.074000000000002,-95.122638295373392 29.073709965581063,-95.125134000000003 29.067321,-95.183550616106302 29.028323983126334,-95.191390999999996 29.023089999999996,-95.192301227546167 29.02243038040822,-95.237672480263356 28.989550945676651,-95.238923999999997 28.988644,-95.240558404572027 28.987315672512366,-95.251568580535192 28.978367386619187,-95.251619678822578 28.978325857575001,-95.272266000000002 28.961545999999995,-95.29656403895315 28.934716691525271,-95.297146999999981 28.934073,-95.309703999999996 28.928262,-95.334686660244515 28.911063042846731,-95.353450999999993 28.898145,-95.376979000000006 28.876159999999999,-95.377903963555724 28.874482723635413,-95.38239 28.866347999999999,-95.416173999999998 28.859482,-95.436326577581042 28.85908617652915,-95.439594 28.859022000000003,-95.449516932572138 28.854239851149391,-95.480746000949352 28.839189657836059,-95.485144835951402 28.837069731735976,-95.486768999999995 28.836286999999995,-95.506945757563287 28.824808612805594,-95.536465934189138 28.808014833314715,-95.564052739104355 28.79232093268277,-95.564094788066555 28.792297011382839,-95.564132228771385 28.792275711681647,-95.568135999999981 28.789997999999997,-95.576201168007842 28.785870627961152,-95.606319447682353 28.770457515020929,-95.613122366343802 28.766976102576891,-95.695711236705606 28.724711019702028,-95.715243498124195 28.714715330888584,-95.812504000000004 28.664942,-95.854124934570734 28.646410960033691,-95.884026000000006 28.633098,-95.920915435374582 28.618912188118028,-95.97832748198536 28.596834417485056,-96.000681999999983 28.588238,-96.000998496292368 28.588108377001081,-96.024040703743012 28.578671299526803,-96.035336417502748 28.574045070633311,-96.05294532761279 28.566833233429691,-96.077867999999995 28.556625999999998,-96.194412 28.502223999999998,-96.220123346321373 28.492065891861738,-96.220376184174313 28.491966,-96.226882700448613 28.487451845000788,-96.241923733725443 28.477016528665938,-96.244750999999994 28.475055,-96.270391000000004 28.461929999999999,-96.303212000000002 28.441870999999999,-96.321560000000005 28.425148,-96.328817 28.423658999999997,-96.341616999999999 28.417333999999997,-96.371116999999998 28.397660999999999,-96.372100999999986 28.393874999999998,-96.370716999999985 28.387667,-96.378616389014681 28.383909329746462,-96.379349732835649 28.386024690464755,-96.381702691108558 28.392811896356477,-96.381863685354148 28.393276290946375,-96.375880899310658 28.401794149460329,-96.37413840285555 28.404274990018202,-96.340801887331921 28.432913073072363,-96.338559687910475 28.434839257985413,-96.335119195902806 28.437794848703732,-96.312964581561445 28.451131053409146,-96.280819757359396 28.470480970729877,-96.274497619264608 28.474286648703266,-96.268341347214189 28.477992481854848,-96.252027698910211 28.484249764669329,-96.250247000000002 28.484932771712327,-96.223824788704931 28.495067307260509,-96.218978121459415 28.500382701101032,-96.21505000939203 28.509679222336811,-96.145447855080619 28.544740658174199,-96.10473518795402 28.559498996555909,-96.046210731424992 28.586980036018211,-96.032979113622659 28.589015683181284,-96.007533711461477 28.59970275682273,-95.986159544454679 28.60631857558586,-95.982088289576367 28.614461085342473,-95.98565064745685 28.621076904105603,-95.983106103295938 28.641942154390655,-95.97852589224803 28.650593590730978,-95.986065974637228 28.655467849280154,-95.996337701374344 28.658736120211515,-96.002953500413568 28.656191585912577,-96.006515878017979 28.648049056432036,-96.010005951759737 28.648641710656278,-96.010506546843942 28.648726717396318,-96.011440067305529 28.648885239790378,-96.014343010193883 28.649378192516537,-96.026200716522851 28.65139176594381,-96.03348799089656 28.652629228032097,-96.039323368019012 28.651170385770797,-96.047737442142406 28.649066870151618,-96.049244844336243 28.648218956037223,-96.052682972641108 28.646285007998213,-96.05836686193534 28.643087818836001,-96.072165030584017 28.635326345489485,-96.092812363862251 28.627145317384699,-96.098878916233431 28.624741586366319,-96.099137163186526 28.624639261986079,-96.099760206508392 28.62447226081035,-96.102639895829256 28.623700385909448,-96.141413249033207 28.613307536255487,-96.148501276515404 28.611407654045699,-96.187178316202875 28.593595864643298,-96.198374286842139 28.586980055742131,-96.221784081288092 28.580364246840958,-96.228908787187095 28.580873158631725,-96.233997875508891 28.596649310733014,-96.233997875508891 28.601738394123839,-96.222292978285921 28.607336389305434,-96.214150448805384 28.613443281484855,-96.212623728226021 28.62260364440889,-96.2309444244882 28.64143324753087,-96.208552463485731 28.662298487953962,-96.214659365527126 28.665351929112688,-96.192267404524671 28.68774389011514,-96.1912495908051 28.694359708878277,-96.195829762405154 28.698939880478335,-96.202445561444364 28.700975507917487,-96.208747675276499 28.700187749031503,-96.21684000834783 28.699176214258408,-96.221467818495611 28.69859774191346,-96.222801895007663 28.698430983480506,-96.223384071149837 28.698294,-96.224163927167865 28.698110503315906,-96.227000018566372 28.697443183508955,-96.229623268039219 28.696825944469072,-96.231453341209956 28.69639533631743,-96.233964222112746 28.695240331316239,-96.23422531976 28.695120226420762,-96.234426397558138 28.695027730650764,-96.243315632596989 28.690938683290845,-96.256898753233088 28.684690448956413,-96.263514562134276 28.683672635236839,-96.268603640594122 28.688761723558645,-96.287942160437836 28.68316371851509,-96.304227224329892 28.671458831154069,-96.305245042980445 28.660262850652849,-96.303866760710434 28.646480081370939,-96.303718312539132 28.644995605411349,-96.322902111893882 28.641863561491792,-96.322903115546453 28.641863397630402,-96.328654788116609 28.640924350533034,-96.373438710121519 28.626674919011112,-96.376492171004159 28.620059100247982,-96.384634680760783 28.615987845369677,-96.473693647496702 28.573239550803915,-96.48794308888057 28.569677192923439,-96.482854000558774 28.580364266564878,-96.480309456397848 28.596649335387912,-96.485907441717487 28.60784531588914,-96.490487633041468 28.610898766909834,-96.510843966604781 28.614970031650095,-96.510335069606953 28.617514575811001,-96.497612348802434 28.625148188569788,-96.496594535082863 28.630746183751381,-96.49964797624159 28.635835272073191,-96.506263795004728 28.638379806372129,-96.513590449607946 28.639711925390898,-96.518002756430107 28.640514162994929,-96.524548246905439 28.641704252172264,-96.541744210187403 28.644830790950802,-96.545449731689985 28.645504522133091,-96.555118991611849 28.64601343885484,-96.5632615210924 28.64448670841351,-96.564664053901609 28.647882315216158,-96.572092291837293 28.665866475800886,-96.572930781014264 28.667896502859467,-96.570386236853366 28.674003385176928,-96.559190266214102 28.687235002979271,-96.559699163211917 28.6913062775815,-96.561225893653244 28.696395346179383,-96.566823878972883 28.697922096344637,-96.575158129308363 28.702846874961025,-96.578019859474111 28.704537895383844,-96.57828826199534 28.705826226653553,-96.579938546079447 28.713747585140421,-96.580564403635009 28.716751699466613,-96.584126761515478 28.722858581784067,-96.584439828543964 28.722940967911413,-96.591359183115401 28.724761852179114,-96.593796021437342 28.725403125944972,-96.611342043876562 28.720366765465901,-96.616906294097589 28.718769618875786,-96.625254999999996 28.716373230030175,-96.632357663078409 28.714334501780041,-96.638120426114043 28.71268037463507,-96.643733366943522 28.711069252030907,-96.64589364157122 28.710449172933409,-96.648758110223909 28.709626963981723,-96.65548660082564 28.704200766225345,-96.664534272187169 28.696904262901135,-96.657918463285995 28.687743919701024,-96.642136214348383 28.67476740345478,-96.635017595423747 28.668914316579048,-96.634564255386636 28.662567599984854,-96.634358790297441 28.659691108644115,-96.634304719917793 28.658934128568227,-96.633999771842213 28.654664885057134,-96.627892869800831 28.650084693733149,-96.626425176648581 28.649921620227584,-96.623312698200763 28.64957579673532,-96.621378075676532 28.648286046719594,-96.615940371111847 28.64466090565978,-96.615679075580019 28.64448670841351,-96.614055987266909 28.642701311583636,-96.613585709918453 28.642184006591457,-96.613038272810982 28.641581825879328,-96.612716570908134 28.641227953848528,-96.611999586497333 28.640439271135588,-96.610589997120172 28.638888723093881,-96.610589997120172 28.638695619081329,-96.610589997120172 28.63634418879494,-96.61975034032028 28.62769274259265,-96.620390401117646 28.626519297452973,-96.620672695530928 28.626001757543317,-96.621575870071126 28.624345937066781,-96.622336527533278 28.62295139797671,-96.622803791340985 28.622094747411062,-96.621924089240224 28.619379144726071,-96.621515564809087 28.618118047314677,-96.621338841511317 28.617572510068054,-96.620571817957583 28.61520474122884,-96.620437729127232 28.614790814755992,-96.617253050911174 28.604959849584038,-96.615239196090883 28.598743166058551,-96.614649885719274 28.596923990196654,-96.613008078443599 28.591855801497097,-96.611528402529856 28.587288105363601,-96.611113505533794 28.586007336117376,-96.611098903979951 28.585962261746474,-96.608298572876635 28.583628658523324,-96.608045443097311 28.583417717585569,-96.607377235577218 28.583437664220053,-96.600365219155734 28.58364697962633,-96.593251058093557 28.583859344147964,-96.573948594733835 28.584435541167107,-96.565297148531556 28.582399903865994,-96.564279334811971 28.57629300182461,-96.563658896232639 28.575155527088082,-96.562968608029692 28.573889994257026,-96.561225893653244 28.570695006643017,-96.557566061723506 28.569051817003789,-96.543745727976315 28.562846769979732,-96.536289388489891 28.559499026141786,-96.535271536438941 28.559346348925885,-96.526111211846271 28.557972305562419,-96.524846286909124 28.55686549700842,-96.523547686998668 28.555729222873186,-96.522039937244045 28.554409942750958,-96.516783301381025 28.541093122164042,-96.514406314623301 28.535071417976255,-96.512075206364955 28.532603188828926,-96.505754868421008 28.525911074776143,-96.496773944100411 28.520225902118948,-96.493684489370622 28.518270192113103,-96.482894459981281 28.511439806078794,-96.464303363514816 28.49967112954555,-96.450283853050735 28.49079639296917,-96.41974938229167 28.46738661824714,-96.410828816467941 28.459457253614527,-96.410588999643707 28.459244083835621,-96.409758652296418 28.458206146634446,-96.408886828651134 28.457116363910039,-96.40506625078595 28.452340627696451,-96.402446489887097 28.449065917053971,-96.402758256176753 28.447714917044181,-96.403973200604497 28.442450108152798,-96.407195206365273 28.441281062045864,-96.417343901660857 28.437598792799108,-96.461479843413926 28.421584870195201,-96.476120924474287 28.411702150055138,-96.481836236149007 28.407844318412668,-96.504737094149291 28.397666161492985,-96.511137484289378 28.396220910815867,-96.520513236388609 28.394103803612502,-96.534249520963641 28.388796609353736,-96.542905217114992 28.385452367272176,-96.559699173073881 28.377818734789468,-96.57038624671533 28.368658381727396,-96.577905378446388 28.364719789411506,-96.5917603939982 28.357462401226169,-96.600411840200493 28.354408960067438,-96.650793747525029 28.34677533744669,-96.672676831253582 28.335579347083499,-96.688452973492915 28.347284234444516,-96.694559875534281 28.347284234444516,-96.698122233414779 28.342704062844462,-96.705246949175717 28.348810964885843,-96.700157860853906 28.369676195446971,-96.705755865897487 28.400210705653887,-96.710336037497541 28.406826524417021,-96.710425531143088 28.406841439843959,-96.711757514930511 28.407063434453107,-96.711949596522956 28.407095447664108,-96.71209813364915 28.407120203551969,-96.7125191933293 28.40719037931537,-96.712878460543081 28.407250256459115,-96.722549831718325 28.408862132132249,-96.749013067323034 28.408862132132249,-96.762244685125353 28.411915593014903,-96.76554491144303 28.411090543097366,-96.768351577304784 28.410388882297497,-96.775985199925543 28.405808690973519,-96.777118787058129 28.404067826336821,-96.778115367638478 28.402537364460464,-96.780337941159374 28.399124129135416,-96.780820705165937 28.398382742114745,-96.790234641309425 28.383925636830853,-96.794392274787313 28.366371177405831,-96.794814812909479 28.364587126849088,-96.794810066932399 28.364444747076842,-96.79477772408616 28.363474458555832,-96.794305906049686 28.349319871745632,-96.794064195689629 28.347593374049037,-96.792754716842737 28.338239980125699,-96.790743538307225 28.323874459722486,-96.791161640090152 28.319066463411133,-96.791737095961722 28.312448960638157,-96.791761391474679 28.312169572361466,-96.791798306096766 28.312130020933203,-96.806010803272656 28.29690232711997,-96.809573161153153 28.290286508356836,-96.806010803272656 28.282143978876302,-96.799480493673911 28.2729662335258,-96.799349781293685 28.272782529381054,-96.787181219874626 28.255680743271615,-96.787181219874626 28.250082757951983,-96.800412817953031 28.224128419345121,-96.810027933605966 28.21709297064087,-96.81015126416365 28.217002728792142,-96.823379937963566 28.207323213817581,-96.836184503007971 28.197954022244446,-96.84100213695676 28.194428925121734,-96.842143298799229 28.193593928862132,-96.847274602334139 28.190686192954498,-96.857267971405633 28.185023289193378,-96.872677809006134 28.176291056181483,-96.877474270970822 28.171878306563691,-96.886067200578026 28.1639728030657,-96.898123211167331 28.152881261735526,-96.906497631141988 28.149042991548708,-96.910337015250093 28.147283276415891,-96.926704620510804 28.131597659113019,-96.934764623415617 28.123873491831901,-96.962356663895278 28.123371819605953,-96.962754569737697 28.123364584972112,-96.979717515560068 28.129783000626698,-96.995398793779131 28.135716460690723,-97.000413785843605 28.137614026355994,-97.007520616950742 28.136091128354632,-97.007538501604586 28.136087295914667,-97.009222611239821 28.135094102666635,-97.00939982996681 28.134989589017771,-97.027385928308092 28.12438239869169,-97.028912648887456 28.117257682930727,-97.025203084589847 28.111384210119862,-97.023365428929196 28.108474590635566,-97.022805746846075 28.107588427939849,-97.02290356380766 28.107197159145706,-97.023379876854563 28.105291902342927,-97.02382356056566 28.10351716319958,-97.025496807419856 28.101530180660298,-97.031966099908146 28.09384788848477,-97.033883146887263 28.088918342142531,-97.035528457788629 28.084687545284659,-97.035528457788629 28.083043098067591,-97.035528457788629 28.081818766572983,-97.035528457788629 28.074000471643224,-97.033022532693735 28.061470870449408,-97.032801767679686 28.060367047518316,-97.031459273912688 28.053654591691117,-97.031457183186404 28.053644138079921,-97.025859197866765 28.041939250718904,-97.030948266464648 28.033287814378582,-97.03239348781301 28.032603236465789,-97.040617526386512 28.028707642778524,-97.041168915404441 28.028259640036232,-97.046718327422383 28.023750751173218,-97.048760075590963 28.022091833877354,-97.050263648357429 28.019142519014494,-97.059727497080047 28.000578821719444,-97.061991693393324 27.99613751499442,-97.06790259446116 27.99219690579767,-97.073772658186698 27.988283521554418,-97.075732208193486 27.986977152070377,-97.083740513918784 27.975854507337193,-97.090858162154831 27.965968886660271,-97.094600599978094 27.960771057335059,-97.101378519421061 27.951357282114685,-97.101544336287489 27.951126980954953,-97.101629253046639 27.951009041034034,-97.112670327945679 27.935674217691009,-97.118292397880069 27.927865788706086,-97.121533983365822 27.923363587495643,-97.122089895488358 27.923104160785101,-97.123659587861624 27.92237163470331,-97.129167576400675 27.91980122961516,-97.134800331352182 27.902469771509406,-97.13578341488774 27.899444915775788,-97.139044920333077 27.897526377912126,-97.141761509630356 27.895928379836029,-97.144434841366106 27.894355827453982,-97.155121915007527 27.880615312653809,-97.156735458496229 27.877916799393841,-97.171211094589736 27.85370753808861,-97.17159000749372 27.853073838716419,-97.18273536107327 27.834434189625789,-97.184638591770963 27.831251199324921,-97.187183135931861 27.824126483563962,-97.18941247112663 27.823657146727278,-97.196852395853725 27.822090836400886,-97.201135366472329 27.822090836400886,-97.208766105658313 27.822090836400886,-97.209575096934316 27.822090836400886,-97.21103842611052 27.822356897891609,-97.21191517248603 27.822516307306422,-97.214117494684729 27.822916731993345,-97.215541825234411 27.823175702780983,-97.217387510601711 27.823511284007832,-97.220771087297493 27.824126483563962,-97.222189700736266 27.82464074101355,-97.223091414240102 27.824967618564596,-97.225175600069406 27.825723150734085,-97.225442194074731 27.826156365185522,-97.225555528799433 27.826340533769983,-97.225696025109201 27.826568839847944,-97.22598639723725 27.82704069367685,-97.227317456819009 27.829203661466853,-97.227317456819009 27.832884543697009,-97.227317456819009 27.832951908184537,-97.22711696094737 27.834288541284948,-97.22651425924083 27.838306534493725,-97.227537582741903 27.841230302974814,-97.228388390382094 27.843661171179477,-97.233100025453197 27.847817700825228,-97.234045759551762 27.848652012430087,-97.234511621821596 27.849062988727319,-97.238500481248579 27.854279199579018,-97.239439164419366 27.855506710708827,-97.241127420860792 27.857714434929608,-97.24139627838295 27.858969111470945,-97.242350826195675 27.863423696705052,-97.242654131578206 27.86483913096664,-97.243132066142749 27.865496290124597,-97.244364366034702 27.867190700237273,-97.250796680782656 27.876035121329831,-97.263010484865433 27.88010639593206,-97.267085449659064 27.88068852838779,-97.272090543185925 27.881403535150675,-97.273697558506882 27.881633106649463,-97.276628649874411 27.881144591421538,-97.283916343274228 27.879929975854907,-97.291452123510041 27.878674012482271,-97.291709327200167 27.878631145200583,-97.295071705789752 27.87807074876898,-97.29826066531912 27.876989746639367,-97.302276298241679 27.875628516526195,-97.30641171632756 27.874226681314273,-97.315889353880934 27.871013926092836,-97.325097299274915 27.867892591849294,-97.326845878314657 27.866807265961079,-97.334190606350404 27.862248465187459,-97.346213303335873 27.854786094892546,-97.354613966176373 27.849571885725148,-97.359768343966266 27.850509060182219,-97.360211961357962 27.850589719168646,-97.360654441244435 27.850290746360063,-97.363614400263117 27.848290774636723,-97.376904444631478 27.839311017562139,-97.379041564479934 27.837867018088055,-97.379057154646048 27.837837708581311,-97.379081675001302 27.837791610322164,-97.37968928125764 27.836649310776913,-97.391764280353456 27.813948316782309,-97.391812130016405 27.812975373996721,-97.391812459346511 27.812968677620422,-97.39203202611381 27.808504155006624,-97.392068018906713 27.807772301822137,-97.392095751995882 27.807208395884746,-97.393123788240075 27.786304999999999,-97.393168763213623 27.785390509210199,-97.393291005863816 27.782904909577571,-97.393142269808052 27.782564941361908,-97.39298939956177 27.782215523565412,-97.390949955785928 27.777553936582201,-97.390465068726371 27.776445623015572,-97.390185233729682 27.775805999999999,-97.389524844304646 27.774296538065283,-97.38835420640342 27.771620793596586,-97.388306220610531 27.771511111755789,-97.388011229692253 27.770836846624743,-97.38704242749894 27.768622441036733,-97.386166290102864 27.766619840754537,-97.385225495384532 27.765302728148875,-97.378862356737287 27.756394334042721,-97.375764970087644 27.752057992733249,-97.373069654276961 27.748284550598278,-97.368354500700462 27.741683335591173,-97.365855345900911 27.739779218033028,-97.354970329043653 27.731485873530172,-97.352272255056832 27.729430198526604,-97.34997871774064 27.727682741876539,-97.347507961666906 27.725800261438444,-97.346980343555629 27.725398266768138,-97.343485766084669 27.723942192633796,-97.323096068004702 27.715446484002907,-97.316445853072636 27.712675560756566,-97.312489136070184 27.711663774861414,-97.307771479065892 27.710457406346261,-97.30518751069485 27.709796650788128,-97.285725857752936 27.704820043684109,-97.259850586867117 27.698203387982087,-97.253955150197811 27.696695845323848,-97.254014647303208 27.696526337654994,-97.255455364792269 27.692421723465429,-97.259957004258851 27.67959652118169,-97.261636792970123 27.679316557300702,-97.26241778482418 27.679186392412099,-97.266063906300232 27.678578707462119,-97.266172011465457 27.678349884642419,-97.272736281666539 27.664455499360063,-97.273042341106247 27.663807672923248,-97.273584380560237 27.662660354976065,-97.276535709391737 27.656413369610792,-97.277059923980644 27.655303780997631,-97.278846463786479 27.651522268106756,-97.280071982275985 27.648928251476995,-97.280889132874719 27.647198614380269,-97.282300269490932 27.644211705671331,-97.282869528026779 27.64300677394548,-97.287959956150573 27.632232024058997,-97.288756326795195 27.630546371240786,-97.290370933329072 27.627128784125372,-97.290610159422798 27.626622421740255,-97.291264204229464 27.625238025568656,-97.291996439564016 27.623688125953898,-97.292910903535031 27.621752508687905,-97.293983233844585 27.619482740684056,-97.29528946695001 27.616717877953022,-97.296598377059297 27.613947348891728,-97.297587499071795 27.609496333379006,-97.298634024222366 27.60478700569162,-97.29761621050281 27.598680093788271,-97.294053852622326 27.594099922188217,-97.294182769084571 27.593971005725969,-97.300049926927869 27.588103847882682,-97.302196382102863 27.585957392707677,-97.311120578488044 27.579146819865922,-97.321534901946578 27.571199044464009,-97.325080504595888 27.561034984604785,-97.336802147188081 27.527432946040641,-97.343417965951204 27.517763686118776,-97.347489240553443 27.503005347737066,-97.350542661988243 27.478577729709574,-97.359194108190536 27.458221396146271,-97.365809926953673 27.450587783387487,-97.371916828995055 27.425142361502377,-97.369881181831957 27.412419660421783,-97.372934622990698 27.401223670058592,-97.379550422029908 27.390027689557368,-97.399397858595393 27.344734850830708,-97.401942402756291 27.335574497768633,-97.404995863638931 27.329976512448997,-97.413138393119482 27.321325066246711,-97.42026310888042 27.317253791644482,-97.430441285524054 27.313691423902039,-97.450797599363412 27.313691423902039,-97.482858840011673 27.297915271800758,-97.508304242172855 27.275014394076553,-97.532222933616623 27.278576761818989,-97.544436737699399 27.284174747138625,-97.546981281860297 27.290790556039799,-97.536803105216677 27.289263825598471,-97.526624948296998 27.291808369759369,-97.524589320857856 27.297915271800758,-97.51746460509689 27.305039987561717,-97.504741884292372 27.305039987561717,-97.498126085253162 27.308602345442196,-97.502706237129289 27.322342870104325,-97.499143898972747 27.327940855423961,-97.483876634007316 27.33862793892736,-97.483876634007316 27.351350640007954,-97.486930094889971 27.358984272490666,-97.501688443133645 27.366617904973374,-97.514411144214236 27.361528796927644,-97.520518046255617 27.352877370449281,-97.538329835658018 27.335574478044709,-97.570899973304094 27.315727061203152,-97.584131581244463 27.309620159161771,-97.609068086407831 27.285192570720163,-97.621790807212349 27.287228188297352,-97.63146005727225 27.286210384439741,-97.63654914066305 27.282139109837512,-97.636657939024673 27.281797172172649,-97.640111498543547 27.270943129336285,-97.639093679892994 27.253131339933887,-97.635022415152719 27.247024437892502,-97.628915513111338 27.242953173152234,-97.597363199046811 27.242444266292445,-97.5826048606651 27.240408628991332,-97.573953414462821 27.238881903480983,-97.56123071338223 27.232775006370584,-97.542910007258072 27.229212648490105,-97.520009129533875 27.231248285791217,-97.509830972614182 27.235319550531486,-97.503215153851045 27.23989972213154,-97.500161712692318 27.244479898662579,-97.485148876501881 27.25084127385778,-97.467082638600573 27.253640266517596,-97.45843119239828 27.259492710198106,-97.450288657986775 27.262546171080761,-97.424079880742951 27.264072891660124,-97.422298701802717 27.257711541119829,-97.434766954384401 27.202240525749552,-97.444945121166043 27.144733882940127,-97.443672849085587 27.116235010034327,-97.452324285425917 27.115217201245734,-97.455886653168363 27.110382571284802,-97.456650008527049 27.09969549764336,-97.46173908698691 27.095624227972113,-97.475479621510999 27.098423220631929,-97.480568699970846 27.102494490303176,-97.491510231973166 27.101222218222723,-97.495835955074313 27.09409750739275,-97.4932914109134 27.078066891999608,-97.477515248950155 27.066107546277717,-97.479041969529504 27.06279964182713,-97.482256963728076 27.061942305056665,-97.48693005051112 27.057710553505324,-97.487693415731783 27.053639288765055,-97.486675602012198 27.034809685643079,-97.477515248950141 27.032519589981089,-97.473952881207694 27.029211690461484,-97.473443984209865 27.022850330059228,-97.478300083716704 27.000269498406993,-97.478533072531675 26.999186101907302,-97.480568690108868 26.997659376396957,-97.483967678435022 27.000330000000002,-97.484131057851314 27.000458369056773,-97.492988547644813 27.000330000000002,-97.49889841702128 27.000244349959733,-97.533497176854453 26.999742920066073,-97.536803065768822 26.999695008767091,-97.549271318350492 26.995878197456715,-97.555378215460905 26.990280207206101,-97.551052502221722 26.980865400714134,-97.549525776711377 26.965343697111763,-97.552324769371197 26.95211208177491,-97.555378205598956 26.947277449348487,-97.555378205598956 26.938880461507075,-97.540874325578116 26.906310323861007,-97.540110950495503 26.900966796902246,-97.547999041339082 26.895114353221743,-97.552324764440229 26.888498544320569,-97.552324764440229 26.875332999999998,-97.552324764440229 26.873831771434514,-97.552324764440229 26.871753101924,-97.552324764440229 26.867633303897481,-97.555396527456509 26.865969429990074,-97.558431656619632 26.864325399446898,-97.558453748966258 26.864224239771101,-97.559853702000524 26.857813929560987,-97.562641307980527 26.845049630589628,-97.563266286580571 26.842187886943357,-97.552579212939136 26.827938454188693,-97.547744582978211 26.824630549738107,-97.537566416196555 26.824885004400745,-97.509830908511418 26.8035108521869,-97.48438549155729 26.763561555211936,-97.478024141017002 26.757200199740662,-97.471662790476714 26.758726925251008,-97.468609339456009 26.740915130917632,-97.467337057513589 26.710126182073765,-97.444945096511148 26.633535472850511,-97.445708451869848 26.609362327976836,-97.441206258760758 26.5999011976768,-97.435205432977895 26.587290766879221,-97.432741093635642 26.582112082834445,-97.429217375703914 26.574707168454967,-97.428151110966368 26.572466467229631,-97.418145193925739 26.555638334425574,-97.416955130465126 26.553636864107652,-97.41864075483771 26.543121778291471,-97.42039414733226 26.532183948458435,-97.422284917775215 26.520389141863415,-97.422298667285844 26.520303371102887,-97.425861015304378 26.516741008291426,-97.430695645265303 26.506562841509776,-97.430695645265303 26.494603495787885,-97.42802638225659 26.488322868889494,-97.42636993202612 26.484425333937217,-97.429168909893022 26.478063961207511,-97.43553026043331 26.470175880225888,-97.441382709044788 26.466613522345408,-97.441382709044788 26.455417541844177,-97.43756589773443 26.449819546662585,-97.425861005442428 26.446002740283195,-97.421026375481503 26.446766095641895,-97.417209564171131 26.449819546662585,-97.411611568989528 26.447275002501684,-97.412883841069984 26.433025580841726,-97.421789740702152 26.417249413947498,-97.419499649971158 26.413178149207234,-97.406013578738921 26.409106884466965,-97.398125502688274 26.410888063407203,-97.394308686446919 26.414450416356704,-97.395072051667569 26.417249413947498,-97.382484933201752 26.411326066613285,-97.377769169124974 26.409106884466965,-97.369626639644437 26.394602999515151,-97.374461259743413 26.38086247238753,-97.388965149626202 26.365849678110436,-97.392018610508856 26.339386444971247,-97.391000786927322 26.332261729210284,-97.38794734576858 26.330480545339064,-97.376242448545611 26.336332993950553,-97.372171183805335 26.339895346900054,-97.36937219114553 26.348546788171358,-97.358176200782339 26.356434874083959,-97.343417852538664 26.35923386920927,-97.342332537534404 26.358759043566288,-97.335275323058127 26.355671510096041,-97.335020017473738 26.355402767481841,-97.331108052904881 26.351284911668415,-97.330440693097202 26.350582427937965,-97.333762617526986 26.340749518544904,-97.336802038706509 26.331752819885011,-97.343786761143846 26.325987658774913,-97.344677525679145 26.325252425399061,-97.352414066956698 26.31886671611711,-97.352832659030639 26.318521211944631,-97.354359379610003 26.313941040344577,-97.348998828460125 26.312092573442666,-97.347821984790102 26.311686765063648,-97.346980205488165 26.311396496183672,-97.34736083223585 26.297503848546928,-97.347437236753805 26.2947151295396,-97.347489122209922 26.292821341560611,-97.347051378510429 26.289694600417153,-97.344137846000223 26.268883651035111,-97.343926764329439 26.267375924606483,-97.342629246748771 26.266550231912309,-97.341127771669619 26.265594748131736,-97.335282658907644 26.265594748131736,-97.331967408745584 26.265594748131736,-97.330307576264516 26.266747410222209,-97.323817586106017 26.271254350355399,-97.322807065545476 26.271956101137519,-97.313207351206557 26.273518846137112,-97.312102101648151 26.273698770576502,-97.311865543405119 26.273737280077761,-97.307030913444194 26.253126493084562,-97.308048727163751 26.249055213551365,-97.321280340035131 26.236078054109896,-97.321280340035131 26.228698889850026,-97.304486359421333 26.202490107675235,-97.296598288301666 26.200708923804015,-97.294817109361432 26.192311940893585,-97.296089381441874 26.182388227541828,-97.303096384204423 26.167373221160254,-97.305986772892751 26.161179530923267,-97.306776455083323 26.159487354748606,-97.300965235160419 26.149753561518516,-97.296881711355638 26.142913659244432,-97.296598288301666 26.14243892563589,-97.285549237329036 26.12861437636975,-97.28536038956149 26.128378090441405,-97.284582435540926 26.126454238998875,-97.282094393487881 26.120301403270393,-97.282839179410786 26.118439442973433,-97.28311220967295 26.117756868971455,-97.285501587752023 26.116923364107649,-97.294053737977038 26.113940052730097,-97.295071554162092 26.108342057548505,-97.292023254217796 26.105090538920617,-97.291924538345086 26.104985242032239,-97.291541272704407 26.104576425513905,-97.287190793518263 26.099935916255493,-97.286650074642992 26.099359149688052,-97.286603231473521 26.09930918366079,-97.283195451762182 26.095674220102872,-97.282639002190891 26.095080674133143,-97.282108002623801 26.094514274823585,-97.280435495761154 26.092730268223651,-97.279905974795895 26.09216544608875,-97.27980430522237 26.092056998587434,-97.27089841052117 26.086459003405839,-97.267086875013263 26.085485845069449,-97.24859983335169 26.080765747704277,-97.246979719077387 26.080352101364454,-97.229515030031649 26.08000965739204,-97.220290685310772 26.079828788368793,-97.208048240752987 26.079588741074772,-97.205005053278043 26.078666562185607,-97.199651252911579 26.077044196913871,-97.199152512570265 26.073220535461079,-97.199134106850465 26.073079425477676,-97.198725011196004 26.069943037351702,-97.198302051934135 26.066700361972018,-97.196018989165054 26.049196947106083,-97.195939794821285 26.0485897927724,-97.195071061587612 26.04192952989985,-97.204994779870347 26.030224637607851,-97.214918488291119 26.030733549398622,-97.224842206573854 26.027425644948035,-97.226114478654296 26.024372193927345,-97.219244211392265 25.99612778184791,-97.216954125592238 25.993837693582392,-97.208557137750816 25.991802058746771,-97.195834416946283 25.993074335758202,-97.174460269663413 26.000071824804216,-97.167208324722026 26.007069313850227,-97.162755377371425 26.014575709756024,-97.16262814819099 26.023481604457221,-97.172042954682937 26.044728528107019,-97.178658763584124 26.045491893327686,-97.182730028324386 26.053125515948434,-97.164981847348457 26.063876207878327,-97.152009000000007 26.062107999999998,-97.152012551274964 26.062039393270581,-97.15321 26.038906,-97.151921999999999 26.017652999999999,-97.14747181118706 25.985075937251509,-97.145567 25.971132,-97.146880999999993 25.969781,-97.146293999999997 25.955606,-97.147784999999985 25.953132,-97.156608000000006 25.949021999999999,-97.160293999999993 25.950243,-97.168198638692317 25.959262149012673,-97.178362000000007 25.962114,-97.187583000000004 25.958174,-97.206945000000005 25.960899,-97.214339285966162 25.960186817526893,-97.227626420907342 25.958907063854085,-97.229225999999997 25.958753000000002,-97.239867000000004 25.954974,-97.244841570811701 25.950784663302475,-97.248032999999992 25.948097,-97.255343503388133 25.949129556975723,-97.276707000000002 25.952147,-97.28138899999999 25.948036999999996,-97.277163000000002 25.935438,-97.284201820237172 25.935775045516863,-97.290083634347766 25.936056689174489,-97.293963761326751 25.936242484429805,-97.303601999999998 25.936703999999999,-97.316138101068788 25.931602038234757,-97.320560999999984 25.929801999999999,-97.324914000000007 25.924040999999999,-97.332235861490744 25.923541683060932,-97.33463605770983 25.923378000829199,-97.338346 25.923124999999999,-97.339310160867683 25.923294280152341,-97.350397999999998 25.925241,-97.367642000000004 25.915679999999998,-97.369283543255307 25.913688286645449,-97.373641276386991 25.908400972256459,-97.374430000000004 25.907443999999998,-97.372365000000002 25.905015999999996,-97.365976000000003 25.902446999999999,-97.365883578347024 25.900015396466173,-97.365521 25.890476,-97.364300486696564 25.885628504434479,-97.362421560218849 25.878165998501085,-97.360082000000006 25.868874000000002,-97.364783621478566 25.852096838905283,-97.36542 25.849826,-97.372864000000007 25.840116999999996,-97.394513000000003 25.837377,-97.422635999999997 25.840377999999998,-97.42853949246836 25.842912007889609,-97.434188204901034 25.845336654308195,-97.441181027463472 25.848338244915578,-97.445113000000006 25.850026,-97.445601387363794 25.851485440010176,-97.447179184935308 25.856200346812667,-97.448271000000005 25.859463000000002,-97.449172000000004 25.871677999999996,-97.452166849899044 25.875807172885114,-97.453724626189043 25.87795496921364,-97.454727000000005 25.879337,-97.45488774919265 25.879394304385261,-97.462586893331732 25.882138919861518,-97.468261999999982 25.884162,-97.468599721544905 25.884059457735212,-97.481532785459223 25.880132596436578,-97.486059999999995 25.878758,-97.490359999998347 25.879275544671589,-97.494739403174762 25.879802646248233,-97.496860999999996 25.880057999999998,-97.519591990380178 25.88590026892226,-97.521761999999995 25.886458,-97.52344767329889 25.891064017588189,-97.524375103029939 25.893598172727145,-97.528116959024402 25.903822606212749,-97.528119935206945 25.903830738482007,-97.52812430798204 25.903842686870224,-97.528627999999998 25.905218999999999,-97.528849446448064 25.906732522417784,-97.530321999999998 25.916796999999999,-97.530415259581318 25.916820899843632,-97.539878370214808 25.919246032588486,-97.542957 25.920034999999999,-97.545169999999999 25.923974999999999,-97.545468770003851 25.926387609575503,-97.545470694802859 25.92640315259677,-97.546397824784293 25.933889856891241,-97.546420999999995 25.934076999999998,-97.546611329705271 25.934141994258589,-97.555160182125618 25.937061277530951,-97.555378999999988 25.937135999999999,-97.555477252221124 25.937015705749829,-97.559364000000002 25.932257,-97.582565000000002 25.937856999999997,-97.580418999999992 25.945115999999995,-97.583044 25.955442999999999,-97.598043000000004 25.957556,-97.5981230356591 25.957681442330628,-97.607733999999994 25.972745,-97.60783562843973 25.973457509771446,-97.607844088251909 25.973516820913719,-97.608283 25.976593999999999,-97.609461531117333 25.977846566488182,-97.613191727531174 25.981811093986448,-97.613466053312663 25.982102652924251,-97.616041456343709 25.984839842874308,-97.624938181905222 25.994295461083137,-97.627225999999993 25.996727,-97.634804000000003 25.999508999999996,-97.635072411453706 25.99971613545971,-97.639164724998494 26.00287420951236,-97.642117661027001 26.005153015998879,-97.644011365977178 26.006614404624422,-97.643848619841975 26.01214811069886,-97.643707610985203 26.016942704231127,-97.649175518723894 26.021499311673544,-97.65096419129361 26.02118629315062,-97.659123404318109 26.019758427116106,-97.661326460130226 26.019372891335045,-97.66298585459532 26.019511685247039,-97.668297999999993 26.019955999999997,-97.669519566971061 26.021667429940447,-97.671350987084779 26.024233271429612,-97.671567999996611 26.024226704244594,-97.691453959129774 26.023624920821636,-97.697068999999999 26.023454999999998,-97.703247203861338 26.030308742132775,-97.706066818770353 26.031284762516545,-97.709294717923569 26.032402112038366,-97.711145328137576 26.033042707775564,-97.719920000000002 26.030837999999999,-97.723585926686539 26.030959832537771,-97.729354247932832 26.031151535557555,-97.735180242251758 26.031345155270547,-97.758837769919694 26.032131383932391,-97.76309059882324 26.033650253079866,-97.763351431657455 26.034258862745556,-97.76491324062286 26.037903081983409,-97.769788888528993 26.041344719068825,-97.770077387482857 26.041548365582649,-97.776788595669075 26.042443189872706,-97.779190602367677 26.042763456191249,-97.784050976575529 26.040637041739476,-97.789822674626535 26.0424596835391,-97.792252861730461 26.04428232533872,-97.793102878401371 26.047342389307317,-97.793537334820812 26.048906434437896,-97.794638769549053 26.052871604582215,-97.795290594138677 26.055218176136449,-97.801344 26.060016999999998,-97.803973303988229 26.059548218630308,-97.8082126910423 26.058792373859696,-97.819424117916668 26.056793476786609,-97.820997703829306 26.056512920501468,-97.825546000000003 26.055702,-97.826721102251625 26.055271667399982,-97.830409376527257 26.053920989485444,-97.836607999999984 26.051650999999996,-97.848759348822554 26.052295281844582,-97.85186756815483 26.052460084066457,-97.859824237628374 26.052881958029587,-97.860225497621784 26.05290323340671,-97.860503999999992 26.052917999999998,-97.861874999990562 26.053580848914272,-97.869705222636284 26.057366592615971,-97.871187000000006 26.058082999999996,-97.876982999999996 26.064482999999999,-97.886529999999993 26.066338999999999,-97.901546631929207 26.060958662441269,-97.905109129229899 26.05968224852101,-97.913882 26.056539,-97.935419999999993 26.052687999999996,-97.944344999999984 26.059620999999996,-97.950095000000005 26.061827999999998,-97.96210735288345 26.054793018383155,-97.96735799999999 26.051718,-97.971403108419892 26.054550391225565,-97.978769 26.059707999999997,-97.979877702655912 26.062937323324391,-97.981335 26.067181999999995,-98.010970999999998 26.063862999999998,-98.015122209308288 26.064471399070538,-98.026123959861238 26.06608380989196,-98.028288992822496 26.066401115993269,-98.028758999999994 26.066469999999999,-98.029241090705753 26.065867136858621,-98.033102 26.061039,-98.034402999999998 26.051375,-98.034479464439173 26.051215303797409,-98.034525269179767 26.051119640464091,-98.039238999999981 26.041274999999995,-98.054365285842039 26.044575736209502,-98.070020999999997 26.047992,-98.070022345126233 26.049160242153427,-98.070025 26.051466,-98.071425788568789 26.055027814897404,-98.076094939927231 26.066900165398668,-98.076139697069991 26.067013970337847,-98.076205751241318 26.067181927684643,-98.076543999999998 26.068041999999998,-98.076994427275579 26.068371469710563,-98.080289992888041 26.070782045417982,-98.080494999999999 26.070931999999999,-98.080906883185932 26.070920010911959,-98.084755 26.070808,-98.085506402845155 26.069709056167966,-98.085848999999982 26.069208,-98.085628527723046 26.069048386721494,-98.081567000000007 26.066108,-98.081855064865067 26.063941606819231,-98.081884000000002 26.063724,-98.082307152201508 26.063513440869801,-98.091037999999998 26.059169,-98.093593108176947 26.058759459973995,-98.094431999999998 26.058624999999996,-98.095078111969258 26.058956205325877,-98.096949561841043 26.059915534659098,-98.097643000000005 26.060270999999997,-98.105504999999994 26.067537000000002,-98.122952624574893 26.063250384797335,-98.12786358062813 26.062043837809401,-98.128331000000003 26.061928999999999,-98.142925292417388 26.051941751725515,-98.14645163947533 26.049528582072455,-98.146621999999994 26.049412,-98.146852932570667 26.049588146033326,-98.149462999999997 26.051579,-98.149462999999997 26.055813,-98.151730999999998 26.058187,-98.158277994458601 26.062311711597108,-98.16142849281799 26.064296576133319,-98.161911645017582 26.064600969774318,-98.167608590156348 26.068190136655492,-98.172071527808072 26.071001859012309,-98.177897000000002 26.074672,-98.179863281323136 26.072661506851002,-98.189059999999998 26.063257999999998,-98.191534000000004 26.057117999999999,-98.197046 26.056152999999998,-98.200871000000006 26.059161,-98.203328791159265 26.063523594334541,-98.204415309491765 26.065452171017675,-98.20496 26.066419,-98.205720285634712 26.066905180236589,-98.2057544964389 26.066927057036718,-98.220672999999991 26.076467,-98.228363119990576 26.077028417928002,-98.230097 26.077155,-98.231072909449267 26.07694353295701,-98.240214327563166 26.074962705064888,-98.248806000000002 26.073101,-98.250234708208026 26.074229377516481,-98.260964088277859 26.082703320039151,-98.264514000000005 26.085506999999996,-98.272091468517374 26.0934369782697,-98.272527821536428 26.09389363077193,-98.277218000000005 26.098801999999999,-98.277020629370639 26.099144109090908,-98.272932087266241 26.106230915405163,-98.272897999999998 26.10629,-98.272099931737145 26.106512924095771,-98.270258188934392 26.107027377392626,-98.270033999999995 26.107089999999999,-98.269661374787887 26.108231250649609,-98.268046405073434 26.113177467856264,-98.266755660647689 26.117130670341034,-98.265753950746401 26.120198637935399,-98.265698 26.12037,-98.266046753689267 26.120369439652073,-98.268388964369507 26.120365676386069,-98.271048543344023 26.120361403199535,-98.2713587738927 26.120360904747326,-98.279433560913844 26.12034793086255,-98.289509742149562 26.120331741306838,-98.296194999999997 26.120321,-98.299522999999979 26.11749,-98.299575546893735 26.117376878214852,-98.299577897643644 26.117371817572689,-98.299619756950364 26.117281703787395,-98.301477861619162 26.113281617347607,-98.302978999999993 26.110049999999998,-98.307788398559808 26.112633359128559,-98.31093219000293 26.114322040617914,-98.314784784069062 26.116391454064445,-98.31781148535309 26.118017240801439,-98.323055746360907 26.120834185452331,-98.323827999999992 26.121248999999995,-98.324165904650499 26.121735183484471,-98.335204000000004 26.137616999999999,-98.337914801547555 26.149187638321976,-98.338210450252006 26.150449569219312,-98.338419999999999 26.151344000000002,-98.338123748811455 26.151776768193923,-98.337139471603692 26.153214615149455,-98.336278203634194 26.154472768358826,-98.335109254490916 26.156180386856505,-98.334230366689056 26.157464279382136,-98.333315999999996 26.158799999999999,-98.333279392301918 26.159609030127591,-98.333194378655719 26.161487831708563,-98.333156000000002 26.162336,-98.33332593363771 26.162525092143447,-98.336569396995017 26.166134227137082,-98.336837000000003 26.166432,-98.337709251548077 26.166391430160555,-98.345513373134324 26.166028447761192,-98.345781000000002 26.166015999999999,-98.345955918391979 26.165759937155421,-98.34781294946896 26.163041431373035,-98.354645000000005 26.15304,-98.380009845764519 26.156864235849298,-98.386243919298991 26.157804141722139,-98.386694000000006 26.157872,-98.386714843024777 26.157901012682096,-98.387178289965661 26.158546112849205,-98.389418830831929 26.161664858836595,-98.394322667090904 26.168490808715738,-98.402249554153599 26.179524728065878,-98.404432999999997 26.182563999999999,-98.41082579547016 26.183537375155975,-98.418120000000002 26.184647999999999,-98.44253599999999 26.199151,-98.444302622216625 26.201317032456906,-98.444376000000005 26.201407,-98.444366742625562 26.201566115583965,-98.444174812576264 26.204865005795593,-98.443681770155465 26.213339409994948,-98.45054565332704 26.219516919037407,-98.450975699346984 26.219903961344286,-98.465077324681431 26.222335272645303,-98.467962758220992 26.221802674698019,-98.47639547470331 26.220246150374404,-98.481645999999998 26.219277000000002,-98.483269000000007 26.216439,-98.496684404575589 26.212853148677059,-98.500574513964963 26.213825676024403,-98.503492081872309 26.214798198660183,-98.504399410834864 26.216045775617395,-98.509275818143593 26.222750833698164,-98.509327236533252 26.222821533963195,-98.516621175147847 26.223550930651591,-98.520846190978133 26.222726536052498,-98.524733007990875 26.221968131567948,-98.526589565145571 26.221605875956907,-98.528323413163747 26.222421776495104,-98.535240999999999 26.225677,-98.538016739096946 26.231331135295655,-98.538505426714039 26.231595841236214,-98.543851889046309 26.23449184328507,-98.556093449912439 26.231976454911809,-98.561600478976516 26.23084487397777,-98.564343479612191 26.231667774301364,-98.575891642961039 26.235132223865481,-98.57618836327309 26.235221239973473,-98.581780384919284 26.243001439905978,-98.583095590242166 26.247416774401941,-98.585184223567666 26.254428618568909,-98.588002268837087 26.255070784392117,-98.599153999999999 26.257611999999998,-98.610401443364651 26.253223367217647,-98.613465000000005 26.252027999999999,-98.617434734670965 26.252082931217494,-98.618976176235122 26.252104260920568,-98.625299999997523 26.252191766854153,-98.626653663614832 26.252210498179227,-98.633391522135483 26.243617562727948,-98.63418 26.242612,-98.636673745354344 26.241784277127035,-98.654221000000007 26.235959999999999,-98.669397000000004 26.236319999999996,-98.675206000000003 26.239989,-98.678410535728389 26.244637915883345,-98.679041999999995 26.245553999999998,-98.678977427258005 26.246060764449961,-98.677766000000005 26.255568,-98.679196310064967 26.258571609080832,-98.681167000000002 26.262709999999998,-98.687156000000002 26.26512,-98.698855915315121 26.265619481498664,-98.707451416076225 26.272152066874316,-98.710601999999994 26.279018,-98.709170532219119 26.284185773270103,-98.710647239525585 26.288123668959596,-98.711233447604599 26.289686894290245,-98.722550749196131 26.295571625529284,-98.729196000000002 26.299026999999999,-98.73263614407044 26.29899082409209,-98.734613221934339 26.298970033513189,-98.745271658069271 26.303095890935232,-98.745297595683382 26.304159357241051,-98.745599830797417 26.316551278053844,-98.745615470637418 26.317192526042046,-98.748245116157776 26.32061106368975,-98.74905366960931 26.321662182706675,-98.754840366886953 26.324877004144408,-98.755242435754027 26.32510037501579,-98.766685638772316 26.325769085950686,-98.779858354339893 26.326538865087553,-98.779911999999996 26.326541999999996,-98.779946859358333 26.326559704051515,-98.789821999999987 26.331575,-98.796251999999996 26.349104,-98.797592059971961 26.356670995104565,-98.798210999999995 26.360166,-98.807348000000005 26.369420999999999,-98.808280016253249 26.369491024329768,-98.813413043374013 26.369876679389535,-98.81818280466733 26.370235041528161,-98.81932575812273 26.370320914010964,-98.824571000000006 26.370715,-98.828353477559162 26.367368473620303,-98.832909 26.363337999999999,-98.838554497099707 26.360957856802237,-98.842229804437778 26.359408346173527,-98.844057000000006 26.358637999999999,-98.847707 26.359594999999999,-98.853132332741467 26.364754198689674,-98.853414999999998 26.365023,-98.853852117327648 26.365076242531281,-98.854321671505204 26.365133435992636,-98.861354000000006 26.365989999999996,-98.861661690067152 26.365902494757481,-98.869113443480302 26.363783259984523,-98.874117355796216 26.362360176799562,-98.876164212939671 26.361778062685843,-98.882912762903771 26.359858814831277,-98.890964919192157 26.357568829017531,-98.895015448091129 26.359360408468842,-98.900432100164338 26.361756234493352,-98.900829697862818 26.361932094951143,-98.905559653818443 26.364024190108832,-98.91296803413384 26.372226331500926,-98.915344992389564 26.37485796579432,-98.921277034399395 26.381425588572444,-98.922831447878195 26.38166472803821,-98.923508557916591 26.381768898347495,-98.924925720775448 26.381986922427696,-98.926689551972586 26.38116380140492,-98.934437533628781 26.377548077521784,-98.937555770591459 26.376092900630621,-98.942046463189357 26.375531566775365,-98.950185820407469 26.380302920861933,-98.952073083609605 26.383491745197549,-98.952938578460817 26.384954133189183,-98.953327659277917 26.385611545667039,-98.958325183064531 26.394055638388448,-98.960041959595969 26.394835991082342,-98.96758721887106 26.398265653180793,-98.981979903868819 26.396488780147621,-98.98323657723455 26.396333635432413,-98.985344372930967 26.396073413984297,-98.99032130527651 26.395458978465552,-99.008003378826189 26.395458978465552,-99.014739404125635 26.398826987036053,-99.018845438188137 26.404005475794783,-99.021934999999999 26.407902,-99.025336792347318 26.409271761295809,-99.030462148109507 26.411335530401477,-99.031104888479149 26.411594335405351,-99.032315999999994 26.412082000000002,-99.033086386506682 26.412180127570064,-99.037216923343138 26.412706252494743,-99.039107 26.412946999999999,-99.039645291109963 26.412681959983438,-99.045466000000005 26.409815999999999,-99.053184999999999 26.402006,-99.062093000000004 26.397371,-99.082001999999989 26.396509999999996,-99.085125999999988 26.398782,-99.089412999999979 26.408099999999997,-99.092044248326658 26.410330707587079,-99.0977332288968 26.415153685331873,-99.099649490160544 26.416778244479925,-99.110855 26.426278,-99.113807999999992 26.434002,-99.110485406379198 26.436329519428725,-99.103082999999998 26.441514999999999,-99.097481906444941 26.458865277747179,-99.094712087984234 26.467445230774196,-99.091634999999997 26.476977000000002,-99.105030999999997 26.500335,-99.114051328117867 26.510193091438737,-99.123438026388797 26.520451579672599,-99.126618350727256 26.523927276756307,-99.127319211298612 26.524693229780183,-99.127781999999996 26.525199,-99.128040494672888 26.525242991472329,-99.131554903978838 26.52584108518932,-99.136510932879688 26.526684518463242,-99.143658999999985 26.527901,-99.157083944984777 26.532657279516766,-99.166741999999985 26.536078999999997,-99.170704 26.540316,-99.171403999999995 26.549848,-99.167459686682065 26.559874693319248,-99.167410000000004 26.560001,-99.168618869529794 26.566870928153797,-99.16946034016965 26.571652951934592,-99.178064000000006 26.620546999999998,-99.200522000000007 26.656442999999999,-99.209947999999997 26.693937999999999,-99.208906999999982 26.724761,-99.240022999999979 26.745850999999998,-99.242444000000006 26.788262,-99.243132825912184 26.78921716914337,-99.262208 26.815667999999999,-99.268613000000002 26.843212999999999,-99.274832961326339 26.850997131057774,-99.280470999999991 26.858053000000002,-99.295146000000003 26.86544,-99.316753000000006 26.865831,-99.328801222539823 26.879647723469141,-99.328900000000004 26.879760999999998,-99.328852280051947 26.879943529980665,-99.328653604395157 26.88070346927794,-99.326247644284351 26.88990632616278,-99.321819000000005 26.906846000000002,-99.324684000000005 26.915973,-99.337297000000007 26.922758999999999,-99.361143999999996 26.928920999999999,-99.367053999999996 26.929033999999998,-99.379148999999998 26.934489999999997,-99.388253000000006 26.944216999999998,-99.393748000000002 26.960730000000002,-99.390189000000007 26.966348,-99.377312000000003 26.973818999999999,-99.376593 26.977716999999998,-99.378434999999996 26.980034,-99.385448615007036 26.981891053234623,-99.387366999999998 26.982399,-99.403694000000002 26.997355999999996,-99.407320999999996 27.005808999999999,-99.415475999999998 27.017239999999997,-99.420446999999996 27.016567999999999,-99.429379999999981 27.010833000000002,-99.432154999999995 27.010698999999995,-99.438721 27.01463,-99.445682828533535 27.022104842939122,-99.446523999999997 27.023008,-99.446589518313687 27.0234513503828,-99.446929167151652 27.025749691622671,-99.446969999999979 27.026026000000002,-99.446787747918748 27.026353589968604,-99.444062000000002 27.031253,-99.443973 27.036457999999996,-99.447729715193731 27.048260380671568,-99.452315999999996 27.062668999999996,-99.450282 27.067705,-99.439210578806851 27.075275465844946,-99.434470000000005 27.078517000000002,-99.429209 27.090981999999997,-99.430274999999995 27.094871999999999,-99.437646 27.100442,-99.442122999999995 27.106839,-99.441108999999997 27.110041999999996,-99.433369999999982 27.119218,-99.430581000000004 27.126611999999998,-99.431354999999996 27.13758,-99.438264999999987 27.144791999999995,-99.439971 27.151071999999996,-99.437950999999998 27.154121,-99.42998399999999 27.159148999999999,-99.426616441133064 27.174998569551711,-99.42634799999999 27.176261999999998,-99.426389092127664 27.176475083747437,-99.428025433058153 27.184960350328335,-99.432794999999999 27.209693,-99.441928000000004 27.217984999999995,-99.442101400955139 27.218265584747954,-99.445237999999989 27.223341,-99.443121431464945 27.230753685991843,-99.441406999999998 27.236757999999998,-99.441548999999995 27.249919999999999,-99.452207395848959 27.263806782859465,-99.452390999999992 27.264046,-99.452635348600225 27.264144272092288,-99.454218033886534 27.264780796280988,-99.462735864984637 27.268206496624611,-99.463308999999981 27.268436999999995,-99.463731957038988 27.268231398925973,-99.480688 27.259988999999997,-99.487909999999999 27.260721,-99.492407 27.264118,-99.496069429210138 27.270723950024919,-99.496615000000006 27.271707999999997,-99.496412995851571 27.272119287725655,-99.490870463706145 27.283404082904614,-99.487572835142558 27.290118173493504,-99.487513000000007 27.29024,-99.487552182270463 27.290674424182523,-99.487937000000002 27.294941,-99.493651777311726 27.30231355132117,-99.494603999999995 27.303542,-99.494999311050705 27.30367917804087,-99.501697839297435 27.306003653868146,-99.502036000000004 27.306121,-99.50260564894451 27.305998370990778,-99.511531000000005 27.304076999999999,-99.522353224815092 27.304131436852781,-99.523657999999983 27.304137999999995,-99.527521386758664 27.305370598210363,-99.529216737576675 27.305911493159478,-99.529653999999994 27.306051,-99.533911450776046 27.310119063512179,-99.536090758332008 27.312201427353024,-99.536443000000006 27.312538,-99.537771000000006 27.316072999999996,-99.53137599999998 27.323809,-99.52136037329538 27.324774325824137,-99.521259999999998 27.324784,-99.520793197388144 27.325167862222077,-99.515101491997058 27.329848278790703,-99.509737777509301 27.334258981108004,-99.504836999999995 27.338289,-99.507830999999996 27.348637,-99.507785758525344 27.353517859091919,-99.507778999999999 27.354247,-99.505884699626023 27.358359262089539,-99.503847413823948 27.362781925614613,-99.502763417847504 27.36513512979511,-99.502013099315448 27.366763966750881,-99.499076000000002 27.373139999999999,-99.492143999999996 27.380516999999998,-99.488110785984318 27.408328989964531,-99.487887470616073 27.409868914391197,-99.487633320470721 27.411621467383494,-99.487521 27.412396,-99.487591555014376 27.412624523015491,-99.489856740583164 27.419961308946796,-99.495313182879073 27.437634363915539,-99.495699000000002 27.438884000000002,-99.495681276107845 27.439260342274874,-99.495103999999998 27.451518,-99.489866073767956 27.458841813736395,-99.48498035355378 27.465673163249864,-99.484933241276849 27.465739036942171,-99.483818999999997 27.467296999999995,-99.483170086267094 27.470026063960816,-99.480813109028745 27.479938539705284,-99.480418999999998 27.481595999999996,-99.480219000000005 27.485795999999997,-99.483519 27.491095999999999,-99.494943552274876 27.498766770813134,-99.497518999999997 27.500495999999998,-99.501722168778215 27.500229993495459,-99.502529258718056 27.500178915086504,-99.513319999999993 27.499496,-99.516119999999361 27.498282666666942,-99.519319999999979 27.496896,-99.525819999999982 27.496696,-99.528319999999994 27.498895999999998,-99.525855930815595 27.516294999999385,-99.525849791073696 27.516338353233991,-99.525316190784537 27.520106149807926,-99.523876376642917 27.530272798702207,-99.522431296340699 27.540476632400054,-99.521918999999997 27.544094,-99.518818999999993 27.553194,-99.514319 27.556994,-99.511118999999994 27.564493999999996,-99.512219000000002 27.568093999999995,-99.515978000000004 27.572130999999999,-99.51621006287597 27.572263354504685,-99.516956092136581 27.572688844074506,-99.522907946893667 27.576083418863931,-99.530137999999994 27.580207,-99.536560517954015 27.595669560441458,-99.539721999999998 27.603280999999999,-99.549741780062789 27.610632655019803,-99.554405160028892 27.614054243170667,-99.554950000000005 27.614453999999999,-99.555217670042637 27.614437037021997,-99.556811999999994 27.614335999999998,-99.559466999999998 27.609075999999998,-99.562869000000006 27.607264,-99.580005999999997 27.602250999999995,-99.584175941853502 27.603675176957196,-99.584843000000006 27.603902999999999,-99.584876722760043 27.604178863233781,-99.585148000000004 27.606397999999999,-99.578360965974085 27.610254799100861,-99.578159999999983 27.610368999999999,-99.578158133228257 27.610639131051315,-99.578098999999995 27.619195999999999,-99.584782000000004 27.622006999999996,-99.591372000000007 27.627464,-99.592626330929548 27.632690692534315,-99.594037999999998 27.638573,-99.596231000000003 27.639857999999997,-99.603532999999999 27.641991999999998,-99.612907806834755 27.638651258855042,-99.615318942915422 27.637792043123689,-99.624515000000002 27.634515,-99.625321999999997 27.631136999999999,-99.638929000000005 27.626757999999999,-99.654323999999988 27.629615999999999,-99.665948 27.635967999999998,-99.665422000000007 27.640274999999999,-99.660175716081199 27.644678795569117,-99.659499999999994 27.645246,-99.659300532255756 27.646059100049566,-99.658294999999995 27.650158,-99.661845 27.655753,-99.668942 27.659973999999998,-99.672015651285406 27.660163655087903,-99.685812999999982 27.661014999999999,-99.699355999999995 27.655417,-99.704600999999997 27.654953999999996,-99.711511000000002 27.658365,-99.721518999999986 27.666154999999996,-99.723715999999996 27.673328,-99.727277746539684 27.678262316066267,-99.732288643517421 27.685204233237535,-99.732448000000005 27.685424999999999,-99.732610774853441 27.685596448480599,-99.757538999999994 27.711853,-99.758533999999997 27.717071,-99.770740000000004 27.732133999999999,-99.774900999999986 27.73354,-99.785365999999996 27.730354999999999,-99.788844999999981 27.730718,-99.796341999999981 27.735586,-99.801651000000007 27.741771,-99.805670000000006 27.758687999999999,-99.813085999999998 27.773952,-99.817390803736785 27.775433523363962,-99.819091999999998 27.776019000000002,-99.822192999999999 27.766855,-99.825793000000004 27.764373999999997,-99.835127 27.762881,-99.841707999999997 27.766463999999999,-99.843346625073153 27.773142384459568,-99.844736999999981 27.778808999999999,-99.849281022020321 27.790032142335203,-99.850876999999997 27.793973999999999,-99.857944055165163 27.794214491272228,-99.870065999999994 27.794626999999998,-99.877441689362087 27.799278597548025,-99.877677000000006 27.799427,-99.877679299916537 27.799779028327777,-99.877693551047656 27.801960325692491,-99.877840000000006 27.824375999999997,-99.876677795668783 27.832975173255242,-99.876002999999997 27.837968,-99.877201999999997 27.842179000000002,-99.882014999999996 27.850391999999996,-99.89364999999998 27.856193,-99.901486000000006 27.864162,-99.904385000000005 27.875283999999997,-99.901231999999993 27.884405999999995,-99.894091000000003 27.892949999999999,-99.893456 27.899208000000002,-99.895827999999995 27.904177999999998,-99.900080000000003 27.912141999999999,-99.905861237749605 27.914081496997749,-99.917461000000003 27.917973,-99.925935042520848 27.927688375003317,-99.93714199999998 27.940536999999999,-99.938541 27.954059,-99.932160999999979 27.96771,-99.931811999999994 27.980967,-99.962768999999994 27.983536,-99.984922999999995 27.990729000000002,-99.991446999999994 27.99456,-99.998749958954292 28.00705628754028,-100.000278657311796 28.009672084008166,-100.008630999999994 28.023963999999999,-100.012838999999985 28.037203000000002,-100.014975394500183 28.048814882934586,-100.016570970484992 28.057487270710915,-100.017914000000005 28.064786999999999,-100.028724999999994 28.073118,-100.046108000000004 28.079067999999999,-100.053122999999985 28.08473,-100.056983000000002 28.094207,-100.05559599999998 28.101140999999998,-100.056492999999989 28.104185999999995,-100.064147158981442 28.110644603904401,-100.067651999999995 28.113602,-100.075474 28.124881999999999,-100.083393 28.144034999999999,-100.090288999999984 28.148312999999998,-100.119627999999992 28.155588000000002,-100.12658652988236 28.159659080291213,-100.141098 28.168149,-100.159890345070792 28.168159605160877,-100.160589999999999 28.16816,-100.1644540887186 28.169825181963088,-100.168437999999995 28.171541999999999,-100.173949604741296 28.178834844700365,-100.174413 28.179448,-100.17569869464343 28.180169771489844,-100.185693999999998 28.185780999999999,-100.195825662217615 28.189941498404405,-100.196499000000003 28.190218000000002,-100.19841872968675 28.190245400986015,-100.202449991411854 28.190302940621361,-100.208059000000006 28.190382999999997,-100.21208061434919 28.196473071951928,-100.212104999999994 28.196509999999996,-100.212111438897693 28.196576571978802,-100.212136678181992 28.196837521783539,-100.213449999999995 28.210415999999999,-100.217564999999993 28.226934,-100.220284000000007 28.232209999999995,-100.22363 28.235223999999995,-100.227575000000002 28.235856999999999,-100.246200000000002 28.234092,-100.251633999999996 28.236177,-100.261135590980771 28.244561246718906,-100.267604000000006 28.250268999999999,-100.280518 28.267969,-100.289383999999998 28.273491,-100.293468000000004 28.278475,-100.294296000000003 28.284381,-100.287553999999986 28.301093000000002,-100.286470999999992 28.312295999999996,-100.288638999999989 28.316977999999995,-100.314198000000005 28.345859,-100.317245999999997 28.357382,-100.320392999999996 28.362116999999998,-100.341869000000003 28.384952999999996,-100.344399999999979 28.389662,-100.34934096344108 28.4019924953441,-100.349585999999988 28.402603999999997,-100.349394820211828 28.402858691740477,-100.345766407828719 28.407692501181913,-100.343945000000005 28.410119000000002,-100.337058999999996 28.427150999999995,-100.336185999999998 28.430180999999997,-100.337474638078888 28.440402915586755,-100.337648113426326 28.441778981052359,-100.337796999999995 28.442959999999999,-100.338752462381066 28.444650728533539,-100.341532999999998 28.449570999999995,-100.350785999999999 28.459246,-100.353875644654778 28.461269551534915,-100.357498000000007 28.463642,-100.35795880406117 28.464220845064407,-100.358193534884933 28.464515705266944,-100.367961112704847 28.47678537623738,-100.368288000000007 28.477195999999999,-100.368051363629903 28.477598261305609,-100.365982000000002 28.481116,-100.356642877924983 28.482149981508559,-100.352234999999979 28.482638,-100.344180999999992 28.486249,-100.337140000000005 28.491728999999999,-100.33381399999999 28.499251999999998,-100.338517999999993 28.501833,-100.362147999999991 28.508399,-100.379079000000004 28.511638999999999,-100.388859999999994 28.515747999999995,-100.405057999999983 28.535779999999999,-100.411413999999994 28.551898999999999,-100.40430324537553 28.563833042228197,-100.397270000000006 28.575637,-100.396799999999999 28.580400999999998,-100.398385000000005 28.584883999999999,-100.403243426032972 28.586668145075244,-100.425819035320046 28.594958517689108,-100.429856 28.596440999999995,-100.431892715674053 28.597943579291371,-100.447320000000005 28.609324999999998,-100.448648000000006 28.616773999999999,-100.447280739633683 28.625703494601449,-100.445528999999993 28.637143999999996,-100.44560646842767 28.637394606891831,-100.447014715516048 28.641950223113035,-100.447091 28.642196999999999,-100.447325484276334 28.642184618041064,-100.447599559425257 28.642170145483281,-100.456522261830528 28.641698981546444,-100.462866000000005 28.641363999999999,-100.474494000000007 28.647071,-100.479445543783555 28.654922981332383,-100.479495071011698 28.655001519842354,-100.479635999999999 28.655225000000002,-100.481416494659797 28.655591917738484,-100.492493911747701 28.657874710783531,-100.493322226012125 28.658045406716248,-100.495863 28.658568999999996,-100.496129521434568 28.658770241190073,-100.500353999999987 28.661960000000004,-100.502122125123847 28.667202406240314,-100.505211969634487 28.676363647108229,-100.509438609439442 28.688895431533517,-100.510054999999994 28.690722999999995,-100.510127443340068 28.69126843161186,-100.510538898440004 28.694366309458967,-100.51077198772829 28.696121257064849,-100.511998000000006 28.705352,-100.511351260759739 28.706743032691019,-100.510646631791559 28.708258576930099,-100.509872363628347 28.709923903942272,-100.509406561254394 28.710925770365975,-100.508636802312012 28.712581398765199,-100.507069450532313 28.715952521820881,-100.506701000000007 28.716745000000003,-100.506745928327234 28.717920131927187,-100.506786973330165 28.718993692782757,-100.507152057645129 28.728542729239727,-100.507513721430456 28.738002299344281,-100.507590113222051 28.740000380261673,-100.507613000000006 28.740599,-100.507694735304739 28.740708529390524,-100.51442566685138 28.749728313832868,-100.519226000000003 28.756160999999999,-100.533017 28.763279999999998,-100.537772000000004 28.780775999999996,-100.534846642084489 28.786410367511117,-100.532431000000003 28.791062999999998,-100.535830000000004 28.805887999999999,-100.546431879116881 28.824270186264151,-100.546968759195195 28.825201061771438,-100.547323999999989 28.825817,-100.548186025546428 28.826178082695296,-100.553129999999982 28.828249,-100.561442999999997 28.829174000000002,-100.570509999999999 28.826317,-100.574698999999995 28.828786999999998,-100.576846000000003 28.836168000000004,-100.572991999999999 28.848463999999996,-100.580501999999996 28.856007999999999,-100.591040000000007 28.863054000000002,-100.598061272695219 28.874286065303028,-100.598877000000002 28.875590999999996,-100.602654 28.887660000000004,-100.602394435759351 28.893839359355621,-100.602053999999995 28.901944,-100.615584686670886 28.902906942475386,-100.627205999999987 28.903734,-100.631611000000007 28.902838999999997,-100.633502414453218 28.905240591668694,-100.640568000000002 28.914211999999999,-100.639169999999979 28.916288999999999,-100.638857000000002 28.927621999999996,-100.651511999999997 28.943431999999998,-100.64789859018552 28.954344193790252,-100.646992999999995 28.957078999999997,-100.646600907687997 28.967547400926616,-100.64647463428885 28.970918751315974,-100.645893999999998 28.986421,-100.647406325643686 28.99295674936236,-100.647835962928511 28.994813493392339,-100.648681241069511 28.998466493719445,-100.65094599999999 29.008254000000004,-100.653757999999996 29.015356,-100.656109999999998 29.017223999999999,-100.660207999999997 29.031497000000002,-100.663212 29.048041999999995,-100.662508000000003 29.058106999999996,-100.664064999999994 29.073205999999999,-100.666359117032755 29.07896154562156,-100.668483863047285 29.084292168447689,-100.674655999999999 29.099777000000003,-100.684472 29.110657,-100.692326999999992 29.115227999999995,-100.70996599999998 29.119684000000003,-100.727461999999989 29.129122999999996,-100.737795000000006 29.139078999999999,-100.739115999999996 29.141658,-100.737590999999995 29.147406999999998,-100.739681000000004 29.150486000000004,-100.746139999999997 29.154149000000004,-100.752330696165359 29.155516457617566,-100.759726 29.157149999999998,-100.76337082361762 29.160348915845475,-100.772648999999987 29.168492,-100.775904999999995 29.173344,-100.772154104961558 29.17809434863841,-100.766030999999998 29.185848999999997,-100.767059000000003 29.195287,-100.768348510582513 29.197581465531123,-100.775064591152173 29.209531592641572,-100.785521000000003 29.228136999999997,-100.791371999999996 29.225944999999999,-100.795681000000002 29.227729999999998,-100.79704599999998 29.235585999999998,-100.795234211471239 29.241421249558652,-100.795010188783237 29.242142762180318,-100.794911999999997 29.242459,-100.795310930062826 29.24310735172228,-100.797670999999994 29.246943000000002,-100.805332448258866 29.251327106905226,-100.815767091023289 29.257298117587734,-100.823532999999998 29.261742000000002,-100.834039999999987 29.261399999999998,-100.839016 29.263259,-100.841581161127962 29.265429071012271,-100.848663999999999 29.271420999999997,-100.856469000000004 29.275663999999999,-100.864659000000003 29.276076,-100.874739696506666 29.279181633366278,-100.876048999999995 29.279585,-100.876625364221198 29.280115401513385,-100.878513170701353 29.281852663087207,-100.878882999999988 29.282193000000003,-100.879105716359817 29.283377353454046,-100.880504361011205 29.290815018226784,-100.882051999999987 29.299044999999996,-100.886842 29.307848,-100.895590728097048 29.309871687341737,-100.904835000000006 29.31201,-100.906461302333199 29.313095095005444,-100.914770068080642 29.318638836799305,-100.916744062319239 29.319955917421627,-100.92203960930695 29.323489191321695,-100.922232587658954 29.323617949573855,-100.924041970395777 29.324825198761538,-100.926468967605715 29.326444530233299,-100.926628772437255 29.326551154580446,-100.926677999999981 29.326584,-100.92692137104487 29.32669794102517,-100.927819078352698 29.327118228044156,-100.92782883100196 29.32712279402223,-100.930446231588661 29.328348203997709,-100.940614999999994 29.333109,-100.941560773525751 29.336361493535293,-100.943196 29.341985,-100.945807189162338 29.344363370184055,-100.948971999999998 29.347245999999998,-100.95603875001359 29.347290187325033,-100.964324999999988 29.347342,-100.971743000000004 29.351370999999997,-100.972915999999998 29.354545000000005,-100.995606999999993 29.363403000000005,-101.004206999999994 29.364771999999999,-101.010614000000004 29.368669,-101.010768998319776 29.36895846820963,-101.014103165002794 29.375185214807839,-101.024016000000003 29.393697999999997,-101.036603999999997 29.406107999999996,-101.038600000000002 29.410713999999999,-101.037642000000005 29.414681000000002,-101.043363999999997 29.42988,-101.056956999999983 29.440773,-101.06011415724447 29.458454662113137,-101.060150999999991 29.458660999999999,-101.063843258270609 29.460131584976065,-101.087148999999997 29.469414,-101.103699000000006 29.470549999999999,-101.115253999999993 29.468458999999996,-101.130037999999985 29.47842,-101.137502999999995 29.473541999999998,-101.144336999999993 29.473246,-101.151876999999999 29.477004999999998,-101.163854997623304 29.493316894569897,-101.168923969306405 29.50021992913986,-101.171662999999995 29.503950000000003,-101.173821000000004 29.514566000000002,-101.192719999999994 29.520285,-101.227418999999998 29.522349999999996,-101.235274999999987 29.524854,-101.254895000000005 29.520341999999996,-101.260836999999981 29.529933,-101.261174999999994 29.536777,-101.252755240314642 29.553001111955531,-101.244355179006547 29.569187266927752,-101.24384013276574 29.574337712700849,-101.242022713082847 29.59251185083151,-101.251352546644355 29.604174135250076,-101.252152766968493 29.604494220898598,-101.259127443101093 29.607284069726152,-101.265347312053251 29.607284069726152,-101.274677145614746 29.602619152945408,-101.277624046978673 29.599940160672645,-101.283229510623855 29.594844301688571,-101.297224215766221 29.587069435365102,-101.30733154801338 29.587846934050759,-101.312894947857018 29.594028488101586,-101.314328915651188 29.595621785307589,-101.313192213312618 29.602947206633093,-101.31110792457288 29.616379301091623,-101.30733154801338 29.640715970810437,-101.311218981175116 29.64849082206727,-101.316661381574889 29.655488204771718,-101.325213716450733 29.657820655628775,-101.350093282659174 29.654710721152696,-101.353062961800887 29.655502634567405,-101.361755552011104 29.657820655628775,-101.364595571422868 29.66106639883844,-101.367197952410862 29.664040554714198,-101.371300910394638 29.676075888592084,-101.372874548462477 29.680691889931673,-101.378860251896057 29.698249939417508,-101.396947999999995 29.713947,-101.398362000000006 29.717000000000002,-101.396293999999997 29.727055,-101.397008999999997 29.733962999999999,-101.400635999999992 29.738078999999999,-101.410024000000007 29.741498,-101.415583999999996 29.746534,-101.415509877418046 29.750619769974676,-101.415402087456428 29.756561346443686,-101.424731921017937 29.758116313681725,-101.430388403484372 29.756500180308258,-101.441059122217254 29.75345141196761,-101.446501522617027 29.755006409338922,-101.451652003139955 29.758440048234313,-101.453498905321467 29.759671311053037,-101.455223999999987 29.771874,-101.467493655663716 29.779885945414083,-101.475268506920557 29.780663444099741,-101.503223000000006 29.764581999999997,-101.522695143280473 29.759671311053037,-101.526552276219391 29.761451532447605,-101.532802460460985 29.764336242900427,-101.53746737724174 29.782995910023434,-101.53804719015173 29.783865628452077,-101.546797210803248 29.796990645299058,-101.56156944476453 29.794658179375361,-101.572592853930203 29.778735448896484,-101.575564187573463 29.774443514881042,-101.582561562744587 29.771333610538232,-101.598573641854728 29.773657690388074,-101.603680999999995 29.774398999999999,-101.607256216824311 29.773863608191139,-101.625957999999997 29.771063000000002,-101.630319 29.768729,-101.632632680380155 29.763891873249722,-101.63512799999998 29.758675,-101.646417999999997 29.754303999999998,-101.652400999999983 29.758794999999996,-101.65328091488901 29.761368862201802,-101.654578 29.765162999999998,-101.662452999999985 29.77128,-101.689992000000004 29.771212999999996,-101.706636000000003 29.762736999999998,-101.714223999999987 29.767659999999999,-101.735201999999987 29.771591999999998,-101.754322999999999 29.777661999999999,-101.760919284561496 29.782457957985276,-101.763273999999981 29.784169999999996,-101.776796131253491 29.789191504347542,-101.777161000000007 29.789327,-101.777360180704861 29.789301830227139,-101.785668 29.788251999999996,-101.791002820423358 29.783037559970925,-101.796869557069002 29.782618516634159,-101.806507764952315 29.786389987871868,-101.809441149516488 29.790161459109573,-101.813855730843954 29.79253854440006,-101.814888826583982 29.793094827432377,-101.818909248247508 29.792167038125061,-101.830044431332681 29.789597381341238,-101.831231874027822 29.789323356194672,-101.852603555202364 29.801894932400803,-101.862241763085706 29.800218726571018,-101.866487373818487 29.79821962567333,-101.875399999999985 29.794022999999999,-101.878152615094365 29.794637055896249,-101.892739000000006 29.797891,-101.912406000000004 29.797849999999997,-101.917556726002999 29.792675767854249,-101.917942403066036 29.792482929945557,-101.922585359733716 29.790161459109573,-101.929709258872364 29.789323356194672,-101.932572380438657 29.791613852338052,-101.938090312383324 29.796028195755184,-101.946471365894325 29.797704401584976,-101.952535620779244 29.796990962273608,-101.953595265032959 29.796866298670082,-101.959462001678588 29.799380623656123,-101.965427194081556 29.806464275410743,-101.966166845299441 29.8073426094683,-101.970357372054934 29.81027599403247,-101.974547898810414 29.81027599403247,-101.982165144097308 29.804870201524977,-101.987538526473998 29.801056829485908,-101.993568005272067 29.802652866652032,-102.001318622543394 29.804704498914084,-102.001786318660763 29.804828300723614,-102.021918999999997 29.802490999999996,-102.032489182844799 29.803756293694118,-102.034758999999994 29.804027999999999,-102.039012999999997 29.802655,-102.041088000000002 29.799609999999998,-102.038411999999994 29.792831999999997,-102.039226999999997 29.790977000000002,-102.041308736499772 29.78984019520162,-102.048982832584102 29.785649487466547,-102.050044 29.785069999999997,-102.053123037129694 29.785312127485501,-102.073645999999982 29.786926,-102.076299925656656 29.790865308882584,-102.077348 29.792421,-102.084438999999989 29.794962000000002,-102.091420021879856 29.792967151942147,-102.091815999999994 29.792853999999995,-102.098789196918744 29.792718427915432,-102.115682000000007 29.792389999999997,-102.142325999999997 29.802854,-102.159600999999995 29.814355999999997,-102.161673999999991 29.819486999999999,-102.181894 29.846033999999996,-102.182859740836193 29.846584944255238,-102.18326563789924 29.846816503951921,-102.184058205433814 29.847268654791659,-102.186149999999998 29.848461999999998,-102.187393471220204 29.848699156882201,-102.188384798592551 29.848888224473839,-102.188671999999997 29.848942999999998,-102.189026115519184 29.848805138880103,-102.189342793483831 29.848681852617602,-102.205381000000003 29.842438,-102.216284162639099 29.842976962035557,-102.227553 29.843533999999995,-102.261388999999994 29.853283,-102.264041000000006 29.855964,-102.261776999999995 29.864001999999999,-102.264954000000003 29.867805999999998,-102.268816999999984 29.867990999999996,-102.276754999999994 29.862977999999998,-102.281249000000003 29.863116999999999,-102.297330999999986 29.875194,-102.301381000000006 29.877673999999995,-102.315388999999996 29.879919999999998,-102.320618999999994 29.878979999999995,-102.320667125014978 29.878900015386019,-102.320698585434869 29.878847727619664,-102.324634000000003 29.872306999999996,-102.333383999999995 29.868046,-102.341032999999996 29.869305000000004,-102.349861000000004 29.862316999999997,-102.361383773688715 29.849029038788231,-102.364542 29.845386999999995,-102.363642671554629 29.839963091609825,-102.362514000000004 29.833155999999995,-102.369522000000003 29.820395,-102.377253999999994 29.800163,-102.377312999999987 29.789971,-102.385270832882995 29.770348713937391,-102.386677616883858 29.766879890389689,-102.391739211722737 29.765814289574276,-102.392906191083 29.765568609270456,-102.402175111261812 29.766775086101941,-102.412062000000006 29.768061999999997,-102.433301 29.776608,-102.460890018677347 29.77909171043791,-102.468946430597143 29.779816991558327,-102.469957868267898 29.780012383523857,-102.481595292961757 29.782260529257879,-102.490330613701886 29.783948039559665,-102.492674483475767 29.783853017496881,-102.508312776666344 29.783219030534834,-102.508509848222559 29.783087649355906,-102.512686811979108 29.780303003853621,-102.512942156326147 29.774953626291172,-102.513380999999995 29.76576,-102.526400256170959 29.758693706517125,-102.535832205630967 29.753574449155192,-102.539417050278132 29.751628749336795,-102.545492105079163 29.750899740311965,-102.551081152293932 29.752357753652575,-102.556670813570321 29.757783010503054,-102.559343229460382 29.760376824671383,-102.565661280990938 29.761591836573395,-102.572255912443325 29.757095496286663,-102.57574472309652 29.754716761401177,-102.57635337725236 29.754301769870359,-102.585948674897452 29.751239442391949,-102.587774480184081 29.750656738873374,-102.597160000000002 29.751608,-102.612879000000007 29.748181999999996,-102.622534000000002 29.736632,-102.630150999999984 29.734314999999999,-102.64566499999998 29.733910000000002,-102.661251958261417 29.736122779697027,-102.66726872436665 29.739732837494621,-102.670971460158171 29.741954477821469,-102.677191937153026 29.738261067251376,-102.678467215476147 29.736427653943998,-102.6852530581628 29.72667193704833,-102.688163999999986 29.722486999999997,-102.690237999999979 29.707481999999999,-102.695507594622001 29.699754690880447,-102.698346999999984 29.695590999999997,-102.699316999999994 29.685029,-102.693466 29.676507,-102.697798916570122 29.672550546488289,-102.711337549653422 29.6601882100483,-102.724231000000003 29.648415000000004,-102.736947999999984 29.641537999999997,-102.742030999999997 29.632142000000002,-102.74048425929719 29.62775763619268,-102.738427999999999 29.621928999999998,-102.739991000000003 29.599041,-102.746201999999997 29.592875000000003,-102.757065999999995 29.597798999999998,-102.761810999999994 29.598396999999999,-102.768340999999992 29.594733999999999,-102.766929734823805 29.591197739636346,-102.762241000000003 29.579448999999997,-102.766124000000005 29.572347999999998,-102.768792219428661 29.572598581791439,-102.773961 29.573084,-102.776343296957975 29.562015327831393,-102.777530999999996 29.556497,-102.77572499999998 29.552188999999995,-102.771428999999998 29.548545999999998,-102.79216136048494 29.533953841063816,-102.807296321997939 29.523301326891541,-102.808565712504773 29.522407885546979,-102.808691999999979 29.522319000000003,-102.808681334358837 29.522097795383676,-102.808577631171161 29.519946998869006,-102.807327 29.494009000000002,-102.813953999999995 29.482805999999997,-102.814096473430837 29.482483316434472,-102.814383778328263 29.481832608662831,-102.822314986984821 29.463869465126457,-102.82537225240516 29.456945161410285,-102.827007089548758 29.453242470491304,-102.830969999999979 29.444267,-102.832538999999997 29.433109000000002,-102.830570753051859 29.427471931628293,-102.827354999999983 29.418261999999995,-102.825211066354328 29.40389180477127,-102.824564449740322 29.399557712155943,-102.831802092379931 29.389471209449322,-102.832669213065941 29.388262775214326,-102.84047188579207 29.377388836904565,-102.840778422425643 29.376961642203423,-102.841560439245441 29.370344567434586,-102.842457529677418 29.362753791491347,-102.843015380341285 29.358033509958585,-102.843020777220957 29.357987843989019,-102.861629999999991 29.351638999999995,-102.871857000000006 29.352092999999996,-102.876866000000007 29.354058999999996,-102.879534000000007 29.353326999999997,-102.883721999999992 29.348058999999999,-102.881857488401977 29.34363024944906,-102.879805000000005 29.338754999999999,-102.890489000000002 29.309498999999995,-102.88922161316745 29.299205074185686,-102.888328 29.291947,-102.891022000000007 29.287113000000002,-102.902604999999994 29.279440999999998,-102.90311226801488 29.27677066200776,-102.906295999999998 29.260010999999995,-102.903188999999983 29.254028999999999,-102.887901999999997 29.245611999999998,-102.881135 29.246022,-102.871347 29.241624999999999,-102.870795537867835 29.239589944231255,-102.86823682221636 29.230147538772215,-102.866845999999995 29.225014999999999,-102.878020000000006 29.214697999999999,-102.890063999999995 29.208813999999997,-102.899231 29.208863,-102.908656596973657 29.219194069767902,-102.908787000000004 29.219336999999996,-102.909098471667448 29.219296482603067,-102.910575587951939 29.219104333804097,-102.912131000000002 29.218902,-102.912650757516516 29.218481184275788,-102.915803535402844 29.215928573746115,-102.915865999999994 29.215877999999996,-102.915845750043147 29.215583596781208,-102.915608148145267 29.212129230727648,-102.915554 29.211341999999998,-102.915202931298523 29.21076702044931,-102.914525807203304 29.209658028088604,-102.912447999999998 29.206254999999999,-102.91453363655873 29.20019781620671,-102.917367531146525 29.191967513425833,-102.917805 29.190697,-102.922897000000006 29.192704085059273,-102.925481999999988 29.193722999999995,-102.932612000000006 29.194113000000005,-102.944911000000005 29.188819999999996,-102.947155999999993 29.180776999999999,-102.95089 29.176834999999997,-102.953474999999997 29.176307999999995,-102.977266 29.186226,-102.981742305424802 29.185103060319207,-102.989431999999994 29.183174,-102.98978258837333 29.182935350109393,-102.991725524817895 29.181612768970929,-102.994653 29.17962,-102.994906329461855 29.17910907354543,-102.99809599999999 29.172675999999996,-102.995688 29.161218999999999,-103.00243399999998 29.150260999999997,-103.0050672680876 29.149386797638936,-103.008362000000005 29.148292999999995,-103.010324999999995 29.137821999999996,-103.015028 29.125769999999996,-103.016945338084582 29.124525732477775,-103.024896087692937 29.119366048020158,-103.032982999999987 29.114118,-103.033302941039096 29.107355634443419,-103.034095953658579 29.105913798143234,-103.035682683422891 29.103028844591982,-103.04044215980575 29.099351067768175,-103.049126083320303 29.097714968852063,-103.055369601981923 29.096538655622457,-103.061557539334615 29.093936906572154,-103.06671291432167 29.091769303506382,-103.074407490743866 29.088534080562461,-103.076354546596249 29.085721668416742,-103.076667707631657 29.079576983004682,-103.076847 29.076059,-103.091926967746744 29.064237268591206,-103.100265999999991 29.057699999999997,-103.101359249603803 29.049403674773888,-103.102531654124817 29.040506667933872,-103.100975335951205 29.030701853789079,-103.100368259199087 29.026877266486249,-103.101607999999999 29.018122999999999,-103.107810999999998 29.013812,-103.117237999999986 29.000208999999998,-103.113922000000002 28.988546999999997,-103.115062910480361 28.985887850893185,-103.115327999999991 28.98527,-103.115773294260094 28.985147329619764,-103.126748000000006 28.982123999999995,-103.134930999999995 28.983525,-103.143274000000005 28.978073999999999,-103.156645999999995 28.972830999999999,-103.163865 28.972099,-103.165923000000006 28.974001999999999,-103.166234999999986 28.978836000000005,-103.174329720990258 28.980505274886987,-103.182663652045193 28.982223879127538,-103.194928465619142 28.984753100989199,-103.195705106971403 28.984913258196226,-103.207825367468075 28.987412670652219,-103.227338454203803 28.991436614861634,-103.227579101883322 28.991486240676846,-103.227800999999999 28.991532000000003,-103.228011662384262 28.991347921912006,-103.228737472224623 28.990713704806197,-103.239108999999985 28.981650999999996,-103.245121150470112 28.980239630911282,-103.2474464632202 28.980649978816817,-103.249155161185584 28.980951512720708,-103.25190330878641 28.984768118238364,-103.253285000000005 28.986686999999996,-103.26030800838916 28.989731411362609,-103.266003072061508 28.990206003834011,-103.270357000000004 28.988113999999996,-103.270725571428585 28.987466542857135,-103.27232562100086 28.984655789108508,-103.273357000000004 28.982844,-103.273647076585334 28.982817854078331,-103.281189929980513 28.982137982403092,-103.282424051550748 28.983865752282551,-103.284749352823042 28.987121173462914,-103.285935817906974 28.994002716014545,-103.289257951411443 28.999697788883793,-103.296614077237592 29.004443676810233,-103.302399476821606 29.006455988366771,-103.312987409437454 29.010138745081029,-103.315449022736544 29.011725838031147,-103.323993942362023 29.017235063099889,-103.331021803791103 29.021766184756,-103.332920159881368 29.026986669752301,-103.332783823258595 29.028827200289001,-103.332445567409962 29.033393619832523,-103.334818511373186 29.039800579109659,-103.341462759988346 29.041224342728523,-103.347869719265475 29.037427630547988,-103.350815999999995 29.028566999999999,-103.355428000000003 29.021529,-103.355590463621823 29.021464336016578,-103.361777791205157 29.019001647792766,-103.361998 29.018913999999999,-103.382125000000002 29.024248999999998,-103.386095607142025 29.025822707722725,-103.399799910010643 29.031254261761571,-103.402689272115182 29.032399429564627,-103.427474921518822 29.04222295692054,-103.427754276336316 29.042333676218103,-103.430481680804888 29.047455485683194,-103.434668000000002 29.055316999999995,-103.439550459717495 29.058547821156772,-103.449722032594721 29.065278554178825,-103.453029264571228 29.067467015663059,-103.457386392383299 29.068596640465525,-103.460381908910477 29.067681344107211,-103.463195887793432 29.066821517562918,-103.469166763983068 29.069242141692889,-103.471264639062966 29.073115142802621,-103.471299587628792 29.074897490538035,-103.471426016715213 29.08134526859719,-103.474814887995407 29.086670637304994,-103.484429000000006 29.094524,-103.49531945696836 29.1087608679228,-103.500928937954981 29.116094025764934,-103.503236 29.119109999999996,-103.506163032831353 29.119368513261239,-103.513192088151087 29.119989313955617,-103.524613000000002 29.120998,-103.524225442342612 29.124905426308125,-103.523383999999993 29.133389,-103.525026999999994 29.137353999999998,-103.539240927934515 29.144791265038371,-103.551909954693073 29.151420179312847,-103.558678999999984 29.154961999999998,-103.579462000000007 29.149964999999998,-103.592359999999999 29.150259999999999,-103.598960126757959 29.155019048637598,-103.606437999999997 29.160411,-103.607894091053709 29.162314354517299,-103.610539999999986 29.165772999999998,-103.624537921955991 29.163185608071569,-103.629433693714475 29.1622806680118,-103.638195234739996 29.160661174732635,-103.645634999999999 29.159286000000002,-103.653180000000006 29.162863999999995,-103.656807999999984 29.169098999999999,-103.660202999999996 29.170933999999999,-103.667724667668963 29.172878689431396,-103.669696386484915 29.173388467437,-103.688670000000002 29.178293999999998,-103.688830238367032 29.178273608722382,-103.690116124218548 29.178109972160996,-103.697314000000006 29.177194,-103.699305464408098 29.178139630948273,-103.713769999999997 29.185008,-103.724743000000004 29.191469999999999,-103.73193762439729 29.198544108660482,-103.742175000000003 29.20861,-103.750912464183997 29.219357091602017,-103.755265634411842 29.22471149629115,-103.75594348727293 29.225545256136954,-103.768569999999997 29.227360999999995,-103.777623396259372 29.232265264832392,-103.780085146052983 29.242351446713872,-103.780352362214714 29.243446273985068,-103.781659908552058 29.248803500057083,-103.789034484601103 29.257501704713096,-103.792700821322356 29.259284649416337,-103.795120675584712 29.260461427946989,-103.80876361213285 29.267096007175422,-103.816641821688407 29.27092719156084,-103.818617217853202 29.271599921312173,-103.838302999999982 29.278303999999999,-103.854966933859771 29.281484400071786,-103.856892999999999 29.281852,-103.880606 29.284961999999997,-103.896615144488038 29.284634799403065,-103.910231251371073 29.284356508561018,-103.916269383748329 29.284233099060927,-103.91710599999999 29.284215999999997,-103.91776286712728 29.284516760669142,-103.918698764585329 29.284945281345607,-103.918909999999997 29.285042,-103.918905327188597 29.285488562070029,-103.918900778480648 29.285923264066316,-103.918857000000003 29.290106999999995,-103.924975999999987 29.293913000000003,-103.943697999999983 29.294945999999996,-103.965795999999983 29.298586999999998,-103.975234999999998 29.296016999999999,-103.983459597310627 29.299165977024781,-103.998789342279238 29.305035323921498,-104.012357062242771 29.310230038851625,-104.018558084893087 29.312604243583909,-104.038281999999995 29.320155999999997,-104.047006656168747 29.325575022319434,-104.055595999999994 29.330909999999996,-104.056467149578211 29.334496091467582,-104.057243999999997 29.337694000000003,-104.068917843404819 29.342306667996301,-104.075923999999986 29.345075,-104.082149999999999 29.345922999999996,-104.091021999999995 29.353691999999995,-104.093326000000005 29.359926000000002,-104.098377999999983 29.366755999999999,-104.106466999999981 29.373127,-104.122882935723638 29.379859019095424,-104.125474999999994 29.380922000000002,-104.132831527553293 29.381873417846823,-104.136236243923818 29.382313748953422,-104.143691999999987 29.383277999999997,-104.1467332019064 29.385415391432094,-104.148888696362661 29.386930297552944,-104.151718842950046 29.388919356896473,-104.157422367906094 29.392927859373117,-104.166562999999996 29.399352,-104.180069999999986 29.412763999999999,-104.181273000000004 29.426265,-104.182051945448123 29.427144615030393,-104.195989999999995 29.442884000000003,-104.208194000000006 29.448201,-104.212529153241931 29.452438774515159,-104.213947876032222 29.456222068892099,-104.21370324326665 29.462011765001886,-104.213238514637069 29.473010445135856,-104.218538498245692 29.476600759818915,-104.220568643482977 29.477976020723915,-104.227547514371139 29.480496161448666,-104.229081071868791 29.481049944541308,-104.233824999999996 29.486544999999996,-104.233486999999997 29.492733999999995,-104.235847000000007 29.496744,-104.238313284768751 29.498023301020304,-104.246870092866089 29.50246185307569,-104.254473621536903 29.506405923975272,-104.260293266516271 29.50942466611497,-104.26168489846043 29.511073814728768,-104.264155000000002 29.514001,-104.271046277211582 29.51559593462645,-104.274575430964404 29.516412730896519,-104.293481117436073 29.520788310787555,-104.306646311930564 29.523835296697214,-104.308812834933008 29.524336722260216,-104.311570786550874 29.52540915148019,-104.318073989469781 29.527937921306467,-104.320711000000003 29.526326414398167,-104.326090351466348 29.523039031981277,-104.327483437129615 29.522187701603762,-104.334811000000002 29.519462999999998,-104.338113000000007 29.519967,-104.353150868059984 29.530471948300562,-104.369085650105362 29.541603450512167,-104.37074044290263 29.542759433043344,-104.371174999999994 29.543062999999997,-104.371454921502831 29.543072731712495,-104.371996954766473 29.543091575966443,-104.375901661123379 29.543227326450971,-104.381040999999996 29.543405999999997,-104.394588999999982 29.556087000000002,-104.394583075653415 29.556197720561212,-104.394577025204526 29.556310797858156,-104.394552364240909 29.55677168847231,-104.394503136758885 29.55769170460702,-104.394351 29.560534999999998,-104.39571704642303 29.563607040276512,-104.39636925661604 29.56507376640522,-104.397848504811165 29.56840038104859,-104.399550133070164 29.572227096202102,-104.399591 29.572319,-104.399981791506633 29.572551361916329,-104.452301000000006 29.60366,-104.466520000000003 29.609296,-104.483502 29.627740999999997,-104.486693164979016 29.629712817604439,-104.493658999999994 29.634016999999997,-104.503232654335022 29.63787621670291,-104.507568060311556 29.63962385355849,-104.51068846437596 29.64315687341222,-104.513969549435132 29.646871821353749,-104.51818442992635 29.651644041921735,-104.53325150001281 29.668703453669117,-104.535568725458901 29.671327089370656,-104.539761023554547 29.676073741438437,-104.540155514025756 29.678572204873163,-104.540559188867974 29.681128836544634,-104.537934834631798 29.684482179324355,-104.535770155740693 29.687248158943191,-104.536302269386866 29.690440851131939,-104.537991394981006 29.693268523024599,-104.544269904764263 29.703779029587054,-104.545505621253113 29.70584767433138,-104.552240999999995 29.717122999999997,-104.555600999999996 29.731220999999998,-104.554914970831931 29.738152096413199,-104.554660236582549 29.740725729903364,-104.557361904757329 29.745049367744027,-104.565950999999998 29.758794999999996,-104.565687999999994 29.770461999999998,-104.571279565966023 29.778773775962186,-104.586447318468245 29.801320404476364,-104.592472 29.810276000000002,-104.594023000000007 29.809220999999997,-104.599148999999997 29.811007,-104.610166000000007 29.819117999999996,-104.610205623651026 29.819231101342197,-104.610356932717465 29.819662996386217,-104.613081011852316 29.827438579869643,-104.615248982559379 29.833626813172685,-104.619039 29.844444999999997,-104.624350000000007 29.845221999999996,-104.629290740007292 29.852171499068138,-104.629713747950376 29.852766489555783,-104.630103000000005 29.853313999999997,-104.630111961493199 29.853664893019587,-104.630290851730521 29.860669455113747,-104.630338938536084 29.862552324858758,-104.630359999999996 29.863376999999996,-104.630588419131911 29.86393398222631,-104.633274999999998 29.870484999999999,-104.63616345635748 29.872800876528242,-104.645854762904364 29.880571071602066,-104.65678299999999 29.889332999999997,-104.658422170930251 29.891285606400047,-104.65864999999998 29.891556999999999,-104.658665881124946 29.891956296855856,-104.659041999999999 29.901413000000002,-104.661965712024596 29.903547518850328,-104.666224133352003 29.906656470935726,-104.672326999999996 29.911111999999996,-104.679772 29.924658999999998,-104.680850906343153 29.932111041680564,-104.684321999999995 29.956085999999999,-104.679660999999982 29.975271999999997,-104.680379178583593 29.977083,-104.685479 29.989943,-104.689640999999995 30.014949999999999,-104.693591999999995 30.019077000000003,-104.701242868742796 30.021046973658397,-104.702310999999995 30.021321999999998,-104.702447580064685 30.021555813412469,-104.7030116881661 30.022521518330599,-104.703997999999999 30.02421,-104.703882705803636 30.024660825787098,-104.703121214098445 30.027638426639932,-104.701101999999992 30.035533999999998,-104.706873999999999 30.050685,-104.706630611705322 30.051708605996314,-104.703831250551389 30.063481739403372,-104.703581999999997 30.06453,-104.699792220462342 30.065066336345112,-104.698848962238912 30.065199827927678,-104.698233000000002 30.065286999999998,-104.697787990647399 30.065651654776563,-104.69277799999999 30.069756999999996,-104.687313590037505 30.080921966773531,-104.685080632167896 30.08548438075637,-104.685002999999995 30.085643,-104.685554782105299 30.093963293324606,-104.685687 30.095957000000002,-104.686861171517634 30.098036494960315,-104.692093999999983 30.107303999999996,-104.693655813605488 30.119154117533654,-104.695366000000007 30.13213,-104.692122999999995 30.138662999999998,-104.690080458880587 30.149079251722458,-104.687506999999997 30.162202999999998,-104.687296000000003 30.179464000000003,-104.702787999999998 30.211735999999995,-104.707897632633845 30.218501061672534,-104.711235999999985 30.222920999999999,-104.713166 30.237956999999998,-104.722357186598074 30.248308653999679,-104.724410584274111 30.250621311025988,-104.72532436157617 30.251650460675243,-104.73347160041142 30.260826359409911,-104.733822000000004 30.261220999999999,-104.734059376092361 30.261231667834558,-104.737359999999995 30.261379999999996,-104.740448 30.259454000000002,-104.749663999999996 30.26126,-104.751566999999994 30.263643999999999,-104.754655151309422 30.272796681105522,-104.757893999999993 30.282395999999999,-104.761634 30.301147999999998,-104.779356000000007 30.313188,-104.790279572675416 30.323632238875831,-104.797291 30.330335999999999,-104.809794338457337 30.334925849121163,-104.810755485390246 30.338091979227556,-104.81211787963197 30.342579864771171,-104.813478341684558 30.347061385458392,-104.814379749150064 30.356375955470707,-104.814778573671205 30.360497153782266,-104.817595751374526 30.365914799658352,-104.824313633436745 30.370465624210016,-104.837492999999995 30.373909,-104.849824017938076 30.383147747051474,-104.859521 30.390413000000002,-104.857439999999997 30.408957,-104.852419999999995 30.418792,-104.861074000000002 30.428896999999996,-104.86474141169117 30.441297336779865,-104.865463293164552 30.443738179024677,-104.868454614768496 30.453852504447951,-104.869872 30.458644999999997,-104.86871099999999 30.463229999999996,-104.866118999999983 30.46479,-104.866094000000004 30.467379999999999,-104.870137228360662 30.483875070981508,-104.873288503237063 30.496731258693877,-104.873335488188886 30.496922942181985,-104.876786999999979 30.511004000000003,-104.878566789651714 30.514416830422793,-104.880108146577356 30.517372454871531,-104.88208573587417 30.521164575423189,-104.889375999999999 30.535143999999995,-104.890392881954469 30.540947215529823,-104.892228000000003 30.551419999999997,-104.895440150997459 30.560421421221292,-104.899000999999998 30.570399999999996,-104.909330873116318 30.584188648619556,-104.909747767935556 30.584745133303247,-104.918689620637082 30.596681007395873,-104.924796 30.604831999999998,-104.927016167130404 30.604700501077968,-104.934922481779466 30.604232215677584,-104.939873000000006 30.603939,-104.953391370086464 30.606003357240429,-104.967167000000003 30.608106999999997,-104.971627504383378 30.61006529240159,-104.972071 30.61026,-104.972794851616513 30.611297344530712,-104.980135850742045 30.621817657146149,-104.980290999999994 30.622039999999995,-104.982191641583043 30.62882153037463,-104.983981 30.635206,-104.985513855292751 30.652294791670293,-104.9863 30.661059000000002,-105.001239999999996 30.672583000000003,-105.002056999999994 30.680971999999997,-105.006614566555172 30.685839873047019,-105.006800999999996 30.686039,-105.007528432885024 30.6859080282745,-105.007959930235828 30.685830338698263,-105.020141999999993 30.683637,-105.035888798004834 30.686138071331488,-105.042930223005172 30.687256464175281,-105.044973600167665 30.685364445024991,-105.049769587265445 30.680923708581364,-105.049884734287517 30.6808170907847,-105.050688284649809 30.681171184306308,-105.054688384336032 30.682933873306403,-105.062333999999993 30.686302999999995,-105.062477471553692 30.692159292631892,-105.062625999999995 30.698222,-105.084504902225902 30.710918832086001,-105.098281999999998 30.718914000000002,-105.108075999999997 30.730049999999995,-105.110705999999993 30.737749999999995,-105.110681999999983 30.743366000000002,-105.113815999999986 30.746001,-105.119547104826722 30.748125675649064,-105.123265000000004 30.749504000000005,-105.140207000000004 30.752502,-105.152361999999982 30.751451999999997,-105.157640215066564 30.754007791997694,-105.16015278062757 30.757058756266805,-105.160271207191187 30.758203550015399,-105.161229588477383 30.767467931854636,-105.164076390339474 30.771453450048199,-105.164818961888187 30.77249304906519,-105.164868027003308 30.772491740665838,-105.170370203038615 30.772345016388588,-105.178279098267282 30.772134113115257,-105.183436 30.776644999999995,-105.185930999999997 30.784391999999997,-105.195143999999999 30.792138,-105.195988495740664 30.791702299374609,-105.203522176185984 30.787815448176353,-105.206160999999994 30.786453999999996,-105.212916518294108 30.785414778041517,-105.215967484302155 30.786491589369188,-105.216685356202021 30.789542555377231,-105.215888956387687 30.792967070566242,-105.214890669496626 30.797259699168034,-105.218659510882389 30.801566944478708,-105.222008841883465 30.801829013843189,-105.231580057313238 30.802577916338681,-105.238364256021057 30.803108747911697,-105.249792715464977 30.799033957074698,-105.255416052233826 30.797028969328842,-105.261224946310648 30.798054073736733,-105.261360733612406 30.798078036329223,-105.27276013440985 30.808707209360072,-105.27887297001547 30.814407016614517,-105.283004544196217 30.818259431108679,-105.287237620233441 30.822206489243744,-105.289317685342255 30.822206489243744,-105.295630129130572 30.822206489243744,-105.300778681061615 30.818848737795758,-105.303672944509898 30.816961174571279,-105.314862960890409 30.816961174571279,-105.316949659843416 30.82296045428,-105.31766045482081 30.825003996727105,-105.320108268786385 30.827451797139727,-105.322675464925993 30.828439452154051,-105.330102631610075 30.831296841312803,-105.347695000000002 30.838065,-105.353219571709047 30.842032277683753,-105.358103536812379 30.84553952616983,-105.359771122039604 30.846737044096301,-105.360672052753856 30.84738401593513,-105.36720323988537 30.847875849249167,-105.377416999999994 30.848644999999998,-105.387780492422849 30.851314552204784,-105.394242074789418 30.852979003795937,-105.396689881978517 30.855426817761515,-105.396237319899697 30.858492407966825,-105.394628539050657 30.86939005724841,-105.394248999999988 30.871960999999999,-105.395681745186749 30.87649980844607,-105.399608999999998 30.888940999999996,-105.399828021807267 30.889112280223049,-105.402824820246408 30.891455847338634,-105.413505 30.899808,-105.430088999999995 30.905791999999998,-105.44547819369545 30.915748838601054,-105.448693870984556 30.917829388134351,-105.452149246331331 30.920065022782566,-105.4597280766598 30.924968540917344,-105.469954295993247 30.931584924947412,-105.472488639470896 30.933224650164071,-105.476269681741059 30.935670991952524,-105.488027000000002 30.943277999999999,-105.495516502166126 30.9493992090351,-105.4968561000139 30.950494069316512,-105.497422439936116 30.953962910943051,-105.497963910074574 30.957279424722472,-105.502256687477072 30.962680017552614,-105.507558525965123 30.966493977230062,-105.533087999999992 30.984859,-105.541468808393844 30.984769556162778,-105.543675999999991 30.984745999999998,-105.557430349577899 30.990228688381027,-105.570063935625512 31.008532833135739,-105.575218046011173 31.016000355201566,-105.578084306850855 31.020153131231776,-105.578407858220658 31.020621907958049,-105.57911399999999 31.021644999999999,-105.580554486932016 31.024917232759986,-105.581339666024604 31.026700857930102,-105.581404000000006 31.026847000000004,-105.581361569643192 31.027041810483581,-105.581235244876609 31.027621805343596,-105.579823718925667 31.034102543987302,-105.579541999999989 31.035395999999995,-105.579765234089464 31.036249085539566,-105.579847333127134 31.036562825712579,-105.585323000000002 31.057487999999996,-105.592709163135751 31.0626132919136,-105.595921000000004 31.064841999999999,-105.598772999999994 31.074925999999998,-105.60333 31.082624999999997,-105.627348999999995 31.098545,-105.641890000000004 31.098321999999996,-105.646730999999988 31.113907999999999,-105.647031366805422 31.114192798578223,-105.648833999999994 31.115902000000002,-105.662869191777489 31.12063916934996,-105.673930643060629 31.124372639388369,-105.709491 31.136374999999997,-105.717005999999998 31.141438,-105.717653520299876 31.143411480377267,-105.719539999999995 31.149160999999996,-105.742677999999998 31.164897,-105.763531 31.164121000000005,-105.773256999999987 31.166896999999999,-105.774148788612138 31.168976038235485,-105.780021000000005 31.182666,-105.779878030009812 31.18682806893737,-105.779724999999999 31.191282999999995,-105.782894999999996 31.197562999999999,-105.790659746923424 31.200723362140888,-105.794386000000003 31.20224,-105.818835000000007 31.230680999999997,-105.825806058218902 31.23733997673531,-105.835722000000004 31.246811999999995,-105.851073632158958 31.265902599748792,-105.86604427072389 31.284519412988434,-105.869353000000004 31.288633999999998,-105.869862116496506 31.288859823963843,-105.876014999999981 31.291588999999995,-105.890871999999987 31.290013999999996,-105.895034999999993 31.290977999999999,-105.903460999999993 31.306768999999999,-105.908770999999987 31.312773999999997,-105.914613899052299 31.312859252963214,-105.93196564998388 31.313112430054005,-105.932552999999999 31.313120999999995,-105.933375187723101 31.313903465142818,-105.938451999999984 31.318735,-105.948091000000005 31.340069,-105.945903 31.352809999999998,-105.953942999999995 31.364749,-105.970101 31.365936999999995,-105.997579969562565 31.386863626037869,-106.00418474278807 31.391893495117941,-106.004925999999998 31.392457999999998,-106.006143777923754 31.392558937255828,-106.022866323827969 31.393945009265412,-106.080091217088636 31.398688175961098,-106.080258 31.398702,-106.080335505244278 31.398768097394733,-106.096409750603954 31.412476405141465,-106.100621535494 31.416068265421309,-106.102641400977276 31.417790830744398,-106.10264993125142 31.41779810546371,-106.106876999999997 31.421403000000005,-106.112168999999994 31.423577999999996,-106.132782000000006 31.425367000000005,-106.143572676566535 31.431101721097118,-106.158218000000005 31.438885000000003,-106.175305198785026 31.455910533348611,-106.175674999999998 31.456278999999995,-106.17677981450808 31.456634312625521,-106.182946895641223 31.45861766980741,-106.20560859826729 31.465905761156737,-106.205826999999999 31.465975999999998,-106.205998876707866 31.466165148890862,-106.212686244283063 31.473524541419071,-106.218538531147885 31.479964934554566,-106.218843000000007 31.480299999999996,-106.218893022078106 31.480498686193428,-106.223908999999992 31.500422,-106.236804000000006 31.513376,-106.242649095206133 31.530650094003715,-106.245874455325477 31.540182047193959,-106.246202999999994 31.541153,-106.246406806009631 31.541315626597875,-106.254779999999997 31.547997000000002,-106.280345588488331 31.561810530102129,-106.280548572587122 31.561920205925162,-106.280811 31.562061999999997,-106.287785 31.584444999999999,-106.292254713772053 31.594651759250389,-106.295141086978958 31.601242900860864,-106.303535999999994 31.620412999999996,-106.308594276522342 31.627497440426588,-106.330970256390501 31.658836434185069,-106.33473699999999 31.664111999999999,-106.338265602146336 31.671883697950737,-106.346992532059133 31.691104641686092,-106.349537999999995 31.696711,-106.357472918704602 31.702103016258707,-106.368303742040567 31.709462886938788,-106.370138999999995 31.710709999999999,-106.373839000000004 31.714809999999996,-106.378039 31.72831,-106.381039 31.732109999999999,-106.38595139194058 31.734759025425479,-106.394642915450532 31.739445961452269,-106.404086535473255 31.744538468290354,-106.417940000000002 31.752009,-106.421739999999616 31.752623660686648,-106.431540999999996 31.754208999999996,-106.434644983693715 31.755853956158482,-106.444263765046571 31.76095142933643,-106.451540999999992 31.764807999999999,-106.467641999999998 31.759607999999997,-106.470742 31.753508,-106.472156160715315 31.752506597443457,-106.47367184987327 31.751433300058491,-106.475016438009845 31.750481163584279,-106.475542000000004 31.750108999999998,-106.48261401078824 31.748321568701869,-106.484641999999994 31.747809000000004,-106.486162292248409 31.747994847970777,-106.488078402545341 31.748229082678503,-106.489542 31.748407999999998,-106.507341999999994 31.761208,-106.509102011460428 31.762827435120251,-106.511609062807707 31.765134242258316,-106.523643000000007 31.776206999999996,-106.528643000000002 31.781807,-106.528542999999999 31.783906999999996,-106.528542999999999 31.784407000000002,-106.527996999999999 31.786944999999999,-106.527623000000006 31.789119000000003,-106.527737999999985 31.789760999999995,-106.527942999999993 31.790507000000002,-106.530514999999994 31.792103,-106.532480000000007 31.791913999999998,-106.533 31.791829,-106.533043000000006 31.791906999999995,-106.534743000000006 31.796106999999999,-106.535154000000006 31.797088999999996,-106.535342999999997 31.797507,-106.535842999999986 31.798607,-106.542096999999998 31.802145999999997,-106.542143999999993 31.802106999999996,-106.544713999999999 31.804286999999999,-106.545344 31.805007,-106.546561898485905 31.806561850400339,-106.546615562760394 31.806630361790774,-106.547143999999989 31.807304999999996,-106.551861034152338 31.808599471053657,-106.558443999999994 31.810406,-106.560680020141419 31.810752754512048,-106.560847305685968 31.810778696593822,-106.562944999999999 31.811104,-106.56344399999999 31.812605999999995,-106.566844000000003 31.813305999999997,-106.569123704016391 31.811582321353455,-106.570943999999997 31.810205999999997,-106.577243999999993 31.810406,-106.581344 31.813905999999996,-106.582144 31.815505999999999,-106.588044999999994 31.822105999999998,-106.589044999999984 31.822705999999997,-106.593826000000007 31.824901,-106.602727000000002 31.825023999999996,-106.605266999999998 31.827911999999998,-106.603310537982878 31.834798487166189,-106.601945 31.839604999999999,-106.60204499999999 31.844404999999998,-106.605244999999982 31.845904999999998,-106.605845000000002 31.846304999999997,-106.614637000000002 31.846489999999996,-106.621857000000006 31.852854,-106.625763000000006 31.856276,-106.627808000000002 31.860592999999998,-106.629708357956787 31.861913746439043,-106.635925999999998 31.866235,-106.635879999999986 31.871514,-106.634872999999999 31.874477999999996,-106.630798999999996 31.879696999999997,-106.629271361585637 31.8835303997664,-106.629197000000005 31.883717000000004,-106.629948941610351 31.885072003811555,-106.630443527558498 31.88596325099838,-106.630530381920593 31.886119763139838,-106.630691999999982 31.886410999999999,-106.633926999999986 31.889183999999997,-106.635073463799642 31.889856364267651,-106.636317332120683 31.890585853164694,-106.638154 31.891662999999998,-106.638364165758659 31.89171923904625,-106.642899999999983 31.892932999999999,-106.645296000000002 31.894859,-106.645645999999999 31.895648999999995,-106.645478999999995 31.898669999999999,-106.640839999999997 31.904598,-106.63512839833713 31.908732779117901,-106.633668 31.90979,-106.633408736085542 31.909871832166754,-106.625946999999996 31.912227,-106.62344499999999 31.914034,-106.618336531290581 31.916262323146238,-106.614677480394235 31.917858407661853,-106.614345999999998 31.918002999999995,-106.611846 31.920003,-106.616063629645311 31.921863544491501,-106.623932999999994 31.925334999999997,-106.624022586877501 31.92530240401349,-106.628663000000003 31.923614,-106.629746999999995 31.926570000000002,-106.625321999999983 31.930053000000004,-106.622529 31.934863000000004,-106.622117000000003 31.936620999999999,-106.622377 31.940863,-106.623659000000004 31.945509999999995,-106.616135999999983 31.948439,-106.614701999999994 31.956,-106.617707999999993 31.956008,-106.622819000000007 31.952891,-106.625123000000002 31.954530999999999,-106.625534999999985 31.957475999999996,-106.624298999999993 31.961054,-106.620453999999981 31.963402999999996,-106.619370999999987 31.964777000000005,-106.618745000000004 31.966954999999995,-106.619568999999998 31.971578,-106.621872999999994 31.972933,-106.623215999999999 31.972909999999999,-106.626465999999994 31.97069,-106.630114000000006 31.971257999999999,-106.638186000000005 31.976819999999996,-106.639528999999996 31.980347999999996,-106.63649199999999 31.985719,-106.631181999999995 31.989809,-106.629494617643616 31.990072722748106,-106.628337072326531 31.990253636712819,-106.62822051159516 31.990271854111079,-106.626910882874782 31.990476537349483,-106.623567999999992 31.990998999999999,-106.619448000000006 31.994733,-106.618486000000004 32.000494999999994,-106.599096000000003 32.000731000000002,-106.598639000000006 32.000753999999993,-106.595332999999997 32.000777999999997,-106.587971999999979 32.000748999999999,-106.582805114232855 32.000751357586125,-106.566056000000003 32.000759000000002,-106.565141999999994 32.000736000000003,-106.564298514026802 32.00073927393025,-106.562131862706067 32.000747683631808,-106.55942760630407 32.000758180008894,-106.517043115844388 32.000922692365819,-106.411074999999983 32.001334,-106.409326934223301 32.001349629127162,-106.409108574114072 32.001351581443814,-106.394297999999992 32.001483999999998,-106.376861000000005 32.001171999999997,-106.32356972407176 32.001457096670784,-106.313306999999995 32.001511999999998,-106.205915000000005 32.001761999999999,-106.200699 32.001784999999998,-106.18183999999998 32.002049999999997,-106.125534000000002 32.002532999999993,-106.05045734599986 32.002412317859424,-105.998002999999997 32.002327999999999,-105.900599999999997 32.002099999999992,-105.886159000000006 32.001969999999993,-105.854061000000002 32.00235,-105.750527000000005 32.002206,-105.731362000000004 32.001564000000002,-105.563520259526442 32.001015604709174,-105.429281000000003 32.000577,-105.428582000000006 32.000599999999999,-105.427048999999997 32.000638000000002,-105.390395999999981 32.000607000000002,-105.340142768272344 32.000583616714373,-105.200871148394683 32.000518812363367,-105.153993999999997 32.000497000000003,-105.150310000000005 32.000497000000003,-105.14824 32.000484999999998,-105.132915999999994 32.000518,-105.131377 32.000523999999999,-105.118039999999993 32.000484999999998,-105.078604999999996 32.000532999999997,-105.077045999999996 32.000578999999995,-104.918272000000002 32.000495999999991,-104.643525999999994 32.000442999999997,-104.640917999999999 32.000396000000002,-104.531936999999999 32.000311000000004,-104.531756 32.000117000000003,-104.024520999999993 32.000010000000003,-103.980179000000007 32.000124999999997,-103.875476000000006 32.000554,-103.748317 32.000197999999997,-103.72373965094468 32.000208021677786,-103.713395184678689 32.000212239744897,-103.713395184670219 32.000212239744904,-103.713395184654971 32.000212239744911,-103.713395184639609 32.000212239744918,-103.60161412595366 32.000257819670985,-103.326500999999993 32.00036999999999,-103.278520999999998 32.000419,-103.270382999999995 32.000326,-103.267707999999999 32.000323999999992,-103.267633000000004 32.000475000000002,-103.215641000000005 32.000512999999998,-103.133028835827503 32.000473953106116,-103.088697999999994 32.000452999999993,-103.085875999999985 32.000464999999998,-103.064422999999991 32.000518,-103.064344000000006 32.087051000000002,-103.064347999999995 32.123041,-103.064421999999993 32.145006000000002,-103.064695999999998 32.522193,-103.064761000000004 32.587983,-103.064787999999993 32.600397,-103.064761000000004 32.601863000000002,-103.064814999999996 32.624536999999997,-103.064633 32.646419999999992,-103.064864 32.682647000000003,-103.064797999999996 32.690761000000002,-103.064798999999994 32.708694,-103.064826999999994 32.726627999999998,-103.064807000000002 32.777302999999996,-103.064698000000007 32.783602000000002,-103.064711000000003 32.784593,-103.064699000000005 32.827531,-103.064672000000002 32.828470000000003,-103.064888999999994 32.849359,-103.064915999999982 32.857259999999997,-103.064807000000002 32.857695999999997,-103.064862000000005 32.868346000000003,-103.064700999999985 32.879354999999997,-103.064569000000006 32.900013999999999,-103.064656999999997 32.959097,-103.064678999999998 32.964373000000002,-103.064625000000007 32.999898999999999,-103.064452000000003 33.010289999999998,-103.06398 33.038693000000002,-103.063904999999991 33.042054999999998,-103.063382198608849 33.066417104805645,-103.0628188509327 33.092668632365545,-103.062136190569035 33.12448003074244,-103.060102999999984 33.219225000000002,-103.059719999999999 33.256262,-103.059241999999998 33.260370999999992,-103.057856 33.315233999999997,-103.057486999999995 33.32947699999999,-103.056655000000006 33.388437999999994,-103.052609999999987 33.570599,-103.051664000000002 33.629489,-103.051362999999995 33.64195,-103.051535 33.650486999999998,-103.051086999999981 33.658186,-103.050532000000004 33.672407999999997,-103.050147999999993 33.701971,-103.049608000000006 33.737766,-103.049096000000006 33.746270000000003,-103.047346000000005 33.824674999999999,-103.046907000000004 33.850299999999997,-103.045643999999996 33.901536999999998,-103.045698000000002 33.90629899999999,-103.044893000000002 33.945616999999999,-103.043949999999981 33.974629,-103.043616999999998 34.003633,-103.043531000000002 34.018014,-103.043554999999984 34.032713999999991,-103.043745999999999 34.037294000000003,-103.043771000000007 34.041538000000003,-103.043720999999991 34.042319999999997,-103.043767000000003 34.043544999999995,-103.043744000000004 34.049985999999997,-103.04368599999998 34.063077999999997,-103.043515999999983 34.079382000000003,-103.043569000000005 34.087947,-103.043571175003294 34.092846731402311,-103.043572866326429 34.096656853966635,-103.04358003846437 34.112813863799865,-103.043644 34.256903,-103.043718999999982 34.289440999999997,-103.043935999999988 34.302584999999993,-103.043978999999979 34.312763999999994,-103.043947553639484 34.376410480771497,-103.043947499824213 34.37651940122479,-103.043946000000005 34.379555000000003,-103.043943999999982 34.37966,-103.043919000000002 34.380915999999992,-103.043693000000005 34.383578,-103.043629999999993 34.384689999999999,-103.043614000000005 34.384968999999998,-103.043612999999993 34.388679000000003,-103.043612999999993 34.390442,-103.043606047260084 34.391254973944719,-103.043584999999993 34.393715999999998,-103.043610999999999 34.397105000000003,-103.043582999999998 34.400677999999999,-103.043537999999998 34.405462999999997,-103.043582 34.455657000000002,-103.043587999999986 34.459662000000002,-103.043588999999997 34.459774000000003,-103.043593999999985 34.46266,-103.043434927764125 34.510540742996007,-103.043071999999981 34.619782,-103.043277851519235 34.65183038816317,-103.0432796163159 34.65210514391012,-103.043285999999995 34.653098999999997,-103.042827000000003 34.671187999999994,-103.042768999999993 34.747360999999998,-103.042770000000004 34.792223999999997,-103.042781000000005 34.850242999999999,-103.042520999999979 34.899546,-103.0425974544018 35.032467348285799,-103.042641999999987 35.109912999999999,-103.043261 35.125058000000003,-103.042519999999996 35.135596,-103.042599999999993 35.142766000000002,-103.042710999999997 35.144734999999997,-103.042568000000003 35.159317999999999,-103.042394999999999 35.178573,-103.042338999999984 35.181922,-103.042366 35.182786,-103.042377000000002 35.183149,-103.042496999999997 35.211862000000004,-103.042775000000006 35.241236999999998,-103.042366 35.250056,-103.041554000000005 35.622487,-103.041484634909168 35.651235429903174,-103.041145999999998 35.791583000000003,-103.041916999999998 35.796441000000002,-103.041715999999994 35.814072000000003,-103.042186 35.825216999999995,-103.04130499999998 35.837693999999999,-103.040823999999986 36.055230999999992,-103.041387523024824 36.229129564686382,-103.041674 36.317534000000002,-103.041745000000006 36.318266999999999,-103.041923999999995 36.500439,-103.00243399999998 36.500397)),((-96.818513748151517 28.172441936006489,-96.816443421354066 28.174808025412563,-96.791958210781445 28.188687337716829,-96.733036581469989 28.190913261798631,-96.70383764358462 28.198245729538105,-96.697421731775194 28.2029594609741,-96.702659211994316 28.211208487181011,-96.703313894801497 28.216445964862743,-96.686815839850283 28.218410020896432,-96.662461568376486 28.227313732447904,-96.66062845144161 28.228884976259902,-96.663116248646261 28.233205895474203,-96.651855673914184 28.251275190431315,-96.607991796426646 28.277069769155677,-96.608122730450688 28.280081317680857,-96.611527096272326 28.281390688369981,-96.610479598706064 28.283092866206033,-96.592934048725994 28.296972182316367,-96.581018783574592 28.302209665072866,-96.553260151988255 28.302340591484768,-96.546975176740276 28.305614018207578,-96.542130508742858 28.315958034472228,-96.528905880514458 28.322504882843088,-96.476269225261575 28.330753906512612,-96.45099839278295 28.337038879223222,-96.434107525610045 28.344764159184386,-96.418918843885365 28.35484630740093,-96.415252604940861 28.362833452872817,-96.417216660974546 28.367154372087118,-96.412895739222876 28.36951123780511,-96.403206408302779 28.371475291301415,-96.401242352269094 28.366892498964241,-96.400558825492723 28.362187299887704,-96.398667286465624 28.349166496619617,-96.397846 28.343512999999998,-96.413700000000006 28.327342999999999,-96.439098999999999 28.319051999999999,-96.495600517783487 28.293964130304811,-96.547774000000004 28.270797999999999,-96.587113635820756 28.248878526668094,-96.611036668198281 28.235548960715661,-96.621533999999983 28.229699999999998,-96.694665999999998 28.18212,-96.758140999999995 28.136872999999998,-96.830820125734775 28.079724674840076,-96.849624000000006 28.064938999999999,-96.854049189790473 28.060788472935577,-96.855594496383262 28.059339080448503,-96.859762278796424 28.055429983997605,-96.896530613737951 28.020943786452513,-96.898080497387397 28.019490100997579,-96.929052999999996 27.990439999999996,-96.96699599999998 27.950531000000002,-97.001440999999986 27.911442,-97.031660000000002 27.869974999999997,-97.041798999999997 27.852925999999997,-97.045408776308051 27.837452569961062,-97.045409609838757 27.837448997003069,-97.04598 27.835004,-97.050599498412936 27.830109781194331,-97.058265753683145 27.821987615677948,-97.076304165860961 27.802876463727326,-97.079565315161531 27.799421374709375,-97.083535350812468 27.795215242050556,-97.085211615730273 27.793439290085495,-97.085394999999991 27.793244999999999,-97.11422230692618 27.755303327915222,-97.116276999999997 27.752599,-97.117304906633777 27.751048809529347,-97.118830196202964 27.748748513687826,-97.139140047561696 27.718119138409879,-97.139351757288111 27.717799858049549,-97.143807202733072 27.711080581371732,-97.165547551982726 27.678293865995041,-97.166583141799606 27.676732088482499,-97.166681999999994 27.676583,-97.184850261879149 27.644709535797791,-97.192144670654784 27.631912600211269,-97.198729900630283 27.620359811436909,-97.201865999999995 27.614857999999998,-97.211651066704889 27.596044174137351,-97.213608899397855 27.592279833590187,-97.221943360361436 27.576255098965802,-97.265194083077162 27.493096589152017,-97.265746568141566 27.492034321708481,-97.276090999999994 27.472145,-97.304469999999995 27.407734,-97.326522999999995 27.347611999999998,-97.347445832595042 27.277936119324231,-97.350397999999998 27.268104999999998,-97.363400999999996 27.210366,-97.370941000000002 27.161165999999998,-97.377001000000007 27.101020999999999,-97.379130000000004 27.047996,-97.378361999999996 26.992877,-97.370730999999992 26.909706,-97.365301177044699 26.875333999999995,-97.365282052674758 26.875212938438843,-97.364726000000005 26.871692999999997,-97.363633430415348 26.866515420001111,-97.352028350385282 26.811520085064032,-97.35141299999998 26.808603999999999,-97.350529648372714 26.805138580575584,-97.333027999999999 26.736478999999996,-97.304204860681779 26.646364129642233,-97.300690000000003 26.635375,-97.297812715808362 26.627503004299889,-97.297022484076606 26.625340999999999,-97.287871455917369 26.600304594305239,-97.275119000000004 26.565415000000002,-97.269391999999982 26.554046,-97.269132970349304 26.553256905349773,-97.257954534248029 26.519203490608863,-97.229844 26.433568999999999,-97.223724090442104 26.411478908273114,-97.206682644704898 26.34996703527348,-97.194643999999997 26.306512999999999,-97.185844000000003 26.267102999999995,-97.177979856301576 26.220346386353309,-97.177168840972797 26.215524458900923,-97.173264999999986 26.192314,-97.170387765328073 26.167037808112223,-97.169872392484734 26.162510314053797,-97.167099005951158 26.138146416702778,-97.161470999999992 26.088705,-97.158662630175101 26.080176913346069,-97.154270970414501 26.066840900880429,-97.161462285840642 26.067639941946975,-97.169842256221145 26.077853024187579,-97.171781452365479 26.102521767945923,-97.179531587141199 26.146202099560895,-97.178745972847352 26.177103221942961,-97.183983445454302 26.214289306886101,-97.194458400817808 26.271639686993655,-97.214884565299002 26.353606215503973,-97.226930759399721 26.385554824668418,-97.240286324189555 26.405980989149626,-97.240845398636537 26.411470089808617,-97.243166933615896 26.434263367616055,-97.247618791929028 26.456260775909261,-97.254165635225121 26.471187589585856,-97.262545605605609 26.482971915638458,-97.27642492679071 26.521729238684483,-97.292399243108349 26.528014213932472,-97.310730412457033 26.556558470596535,-97.308111681228326 26.5712234060755,-97.308635417324538 26.576722756880109,-97.317015387705027 26.597672667607057,-97.318434072834165 26.60022630157264,-97.324871601690262 26.611813856840271,-97.338489044677715 26.647428701777493,-97.33639404954522 26.666021744249065,-97.345821512417203 26.700589103038251,-97.363105189274393 26.710540307081217,-97.370437657013895 26.723895871871047,-97.370961403259614 26.736203954318924,-97.367557047587525 26.740393934434408,-97.364152671616353 26.758986971196869,-97.364646278833362 26.767121661774897,-97.368866408127118 26.774699404876429,-97.370437646864346 26.781508126370166,-97.368342661881371 26.795649318140761,-97.373056398392137 26.808481136684847,-97.387459455673451 26.820789208983193,-97.383531343606066 26.875520854055946,-97.385626348888096 26.88887641440536,-97.391649435788921 26.901970109878395,-97.389554460955466 26.945964918852653,-97.390340075249313 27.05228571820243,-97.389816329003565 27.067212531879022,-97.386411973331462 27.083186832972341,-97.387459455673422 27.090519300711819,-97.390601943297412 27.094185534581555,-97.390078197051665 27.156511519247964,-97.377508246555678 27.199458835730731,-97.379865109736301 27.202863196477598,-97.386673841379576 27.204696313412462,-97.382221972916923 27.229050589961044,-97.37488951532697 27.25026236588155,-97.373318276589728 27.276449754290233,-97.372896734486858 27.277942715507475,-97.367033301341749 27.298709035706306,-97.36467643816114 27.302637142698917,-97.359962701650375 27.304732132756659,-97.357605838469766 27.307874620380655,-97.362319574980518 27.32672953597509,-97.366771423144115 27.333276389420721,-97.36179581858525 27.359987519000377,-97.346607126710992 27.390364889744752,-97.336132171347501 27.402411088920228,-97.331156576938184 27.412362295500575,-97.329585328051422 27.418123524502818,-97.330894688591016 27.425455992242295,-97.329847196099536 27.434359703793774,-97.317277255753083 27.463689574751687,-97.293708603647858 27.497209429631152,-97.282971770086746 27.521563701104967,-97.267627232015485 27.541048841138782,-97.26651977444007 27.542455137362143,-97.266473727822444 27.542513609294531,-97.257831889393842 27.556392930479635,-97.261144559602045 27.562355746269706,-97.261759991311692 27.563463525096239,-97.260450620622564 27.56739163716362,-97.260303240478223 27.567589679048492,-97.252732825146552 27.577762415194865,-97.252070650242061 27.578652211895708,-97.247885553160842 27.581360217573209,-97.247618802078478 27.581532821322067,-97.236881968517352 27.598292751933528,-97.24107194863285 27.602482732049012,-97.241084821027414 27.602523494839662,-97.242643187370078 27.607458346757408,-97.231683715414945 27.631671123728168,-97.231553918442799 27.631957884363242,-97.231382612637987 27.632336350521356,-97.221955159915538 27.632860099304484,-97.221711030183002 27.632638163711842,-97.219074540339648 27.630241360463614,-97.217418907944051 27.630677052710489,-97.214098935780783 27.631550728615359,-97.200743370990949 27.650143776161688,-97.197339005169326 27.664546838517776,-97.19760088336696 27.678426154628117,-97.203474366386629 27.684532651921231,-97.20308902068453 27.688000774441392,-97.200450811776179 27.688974477466285,-97.190006537429824 27.692829222058965,-97.188284576858237 27.695272543577584,-97.170627865440125 27.720325976082009,-97.166176017276527 27.732372180332245,-97.161200407642937 27.734074342943998,-97.153606061705801 27.733288721037997,-97.147321086457822 27.735383711095739,-97.130823034043985 27.751619892924076,-97.127942424617643 27.75580987303956,-97.127680546420009 27.759999858229808,-97.125046985317312 27.763143140340585,-97.103326269871417 27.789067861139614,-97.102999946318647 27.791923200131116,-97.10255066693685 27.795854405604921,-97.102495980878558 27.796332909939515,-97.102278777379922 27.798233445813956,-97.100865886772965 27.802472121847156,-97.098874421707819 27.808446522979796,-97.095168997779496 27.812151946908138,-97.092851314507953 27.81446963017968,-97.092589446459854 27.819183356540908,-97.098874421707819 27.822849590410645,-97.104263831428213 27.822227735056668,-97.126109297533233 27.819707102786651,-97.130299287798252 27.820492727230029,-97.134489267913736 27.825206463740791,-97.132394272781227 27.827301438574235,-97.10670775348396 27.832389859144307,-97.087681973298601 27.836158807756469,-97.056712719518927 27.842293721800239,-97.055822986229373 27.843403727743151,-97.04322620548075 27.859119113080268,-97.013634476624247 27.906780143237341,-97.017955395838555 27.911493874673329,-97.016384146951765 27.917255079570445,-96.985744902767337 27.954048356415132,-96.977888688782102 27.976438572489602,-96.978805242174786 27.978271691961854,-96.980900237307296 27.978271691961854,-96.986006780964971 27.976176699366729,-96.986661461234775 27.980759491703903,-96.978281501003806 28.001709402430844,-96.967806540565562 28.020040576854303,-96.966759042999328 28.020367911280101,-96.965187799187319 28.013297317932185,-96.962569062883844 28.012380759464751,-96.952617853766114 28.01643980428749,-96.946987563862692 28.02652194996665,-96.932453562407773 28.035425661518129,-96.926430465357427 28.043412814602167,-96.929572952981431 28.051399967686208,-96.927085150701998 28.057292130712504,-96.906004298338829 28.076147047258459,-96.890946545563423 28.076801730065643,-96.886232814127425 28.084396073465374,-96.88832780925992 28.086622002621937,-96.889113433703315 28.099453823703399,-96.886887499471996 28.117130312782294,-96.879424092633712 28.131402425890027,-96.874972236857971 28.133235547899659,-96.87078225420511 28.13127149186597,-96.86462821551855 28.126295887307109,-96.857164811217643 28.115559058820768,-96.845380482627661 28.108881273888468,-96.830128556765757 28.111822717849165,-96.827049318353744 28.112416571196771,-96.816574357915513 28.119618104912195,-96.810420321766344 28.126034014184238,-96.810944073086844 28.136378030448888,-96.816836228500989 28.158048094801106,-96.820248352517055 28.163388807027481,-96.822859330626116 28.167475552598326,-96.818513748151517 28.172441936006489)))'));
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/country.postgresql_psycopg2.sql b/webapp/django/contrib/gis/tests/geoapp/sql/country.postgresql_psycopg2.sql
deleted file mode 100644
index 01c9e73..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/country.postgresql_psycopg2.sql
+++ /dev/null
@@ -1,4 +0,0 @@
--- New Zealand bondary courtesy of 'world_borders.shp', which was assembled from public domain sources by Schuyler Erle. See: http://mappinghacks.com/data/
--- Texas boundary data is a data product from the U.S. Census Bureau.  See 'state.sql' for more information.
-INSERT INTO geoapp_country ("name", "mpoly") VALUES ('New Zealand', 'SRID=4326;MULTIPOLYGON (((174.616364000000004 -36.100861000000002,174.634978999999987 -36.124718,174.708862000000011 -36.205559,174.781096999999988 -36.266945,174.812744000000009 -36.339165,174.768311000000011 -36.34639,174.710784999999987 -36.525832999999999,174.708587999999992 -36.533332999999999,174.70773299999999 -36.541671999999998,174.714690999999988 -36.595832999999999,174.717194000000006 -36.603057999999997,174.774414000000007 -36.730277999999998,174.808319000000012 -36.805275000000002,174.854400999999996 -36.847777999999998,174.896636999999998 -36.878334000000002,175.011658000000011 -36.871941,175.020813000000004 -36.873610999999997,175.055542000000003 -36.880279999999999,175.076629999999994 -36.890839,175.082458000000003 -36.895279000000002,175.087463000000014 -36.900832999999999,175.091644000000002 -36.925559999999997,175.161652000000004 -36.955559,175.221069 -36.937775000000002,175.230255 -36.939438000000003,175.278320000000008 -36.965279000000002,175.310516000000007 -36.995002999999997,175.319976999999994 -37.005836000000002,175.323853000000014 -37.012222,175.328856999999999 -37.026947,175.330261000000007 -37.035277999999998,175.330535999999995 -37.044449,175.321899000000002 -37.06472,175.31942699999999 -37.095275999999998,175.317748999999992 -37.144165,175.319121999999993 -37.152495999999999,175.328856999999999 -37.168892,175.373290999999995 -37.216659999999997,175.385254000000003 -37.225830000000002,175.404967999999997 -37.228050000000003,175.579131999999987 -37.244446000000003,175.58914200000001 -37.169449,175.551636000000002 -37.024718999999997,175.547484999999995 -37.009171000000002,175.542480000000012 -36.994446000000003,175.536102 -36.980826999999998,175.524993999999992 -36.961669999999998,175.498566000000011 -36.927222999999998,175.484406000000007 -36.920279999999998,175.476348999999999 -36.917777999999998,175.464416999999997 -36.90889,175.435241999999988 -36.866942999999999,175.46691899999999 -36.809998,175.509430000000009 -36.776108,175.486358999999993 -36.679726000000002,175.463593000000003 -36.621383999999999,175.378296000000006 -36.570557,175.366364000000004 -36.561667999999997,175.361633000000012 -36.556389000000003,175.356628 -36.541671999999998,175.353850999999992 -36.525002,175.35244800000001 -36.489998,175.353577 -36.481940999999999,175.360229000000004 -36.478050000000003,175.538025000000005 -36.514724999999999,175.542755 -36.519996999999996,175.604950000000002 -36.622771999999998,175.631072999999986 -36.710555999999997,175.763610999999997 -36.713614999999997,175.840789999999998 -36.754173000000002,175.733582000000013 -36.805832000000002,175.701629999999994 -36.844161999999997,175.707458000000003 -36.869995000000003,175.709960999999993 -36.875275000000002,175.714690999999988 -36.880828999999999,175.720519999999993 -36.885277000000002,175.735779000000008 -36.891387999999999,175.74383499999999 -36.893889999999999,175.758330999999998 -36.876106,175.761382999999995 -36.869446000000003,175.757751000000013 -36.863059999999997,175.753051999999997 -36.857779999999998,175.749114999999989 -36.851394999999997,175.75 -36.843055999999997,175.752196999999995 -36.835555999999997,175.756378000000012 -36.830002,175.765533000000005 -36.828055999999997,175.808013999999986 -36.824173000000002,175.817200000000014 -36.825836000000002,175.833587999999992 -36.830832999999998,175.845519999999993 -36.839722000000002,175.849120999999997 -36.846107000000003,175.878570999999994 -36.914444000000003,175.881072999999986 -36.921669,175.918304000000006 -37.067504999999997,175.917480000000012 -37.075836000000002,175.915253000000007 -37.083061,175.898314999999997 -37.115004999999996,175.884154999999993 -37.168892,175.883330999999998 -37.176949,175.887206999999989 -37.244163999999998,175.892212 -37.249724999999998,175.921082000000013 -37.251671000000002,175.927185000000009 -37.256110999999997,175.93081699999999 -37.262504999999997,175.936371000000008 -37.278885000000002,175.940093999999988 -37.299717,175.974396000000013 -37.418059999999997,175.976074000000011 -37.453055999999997,176.026931999999988 -37.483108999999999,176.035583000000003 -37.487282,176.059417999999994 -37.502502,176.088287000000008 -37.525557999999997,176.093291999999991 -37.531112999999998,176.165526999999997 -37.613892,176.169433999999995 -37.620277000000002,176.167205999999993 -37.625832000000003,176.160247999999996 -37.624167999999997,176.082458000000003 -37.602500999999997,176.066924999999998 -37.59639,176.061095999999992 -37.591942000000003,176.057189999999991 -37.585555999999997,176.062744000000009 -37.580832999999998,176.070800999999989 -37.577781999999999,176.088287000000008 -37.580002,176.095245000000006 -37.576110999999997,176.090239999999994 -37.570838999999999,176.062468999999993 -37.546669,176.023087000000004 -37.528221000000002,176.018767999999994 -37.526057999999999,176.013931000000014 -37.524554999999999,176.007598999999999 -37.524222999999999,175.955535999999995 -37.521110999999998,175.946349999999995 -37.523055999999997,175.940796000000006 -37.527779000000002,175.953583000000009 -37.558891000000003,175.994415000000004 -37.638893000000003,176.071899000000002 -37.655273,176.14498900000001 -37.675277999999999,176.242187999999999 -37.709442000000003,176.267486999999988 -37.676392,176.488281 -37.756667999999998,176.521636999999998 -37.769447,176.527771 -37.773887999999999,176.537475999999998 -37.784447,176.549712999999997 -37.793334999999999,176.656646999999992 -37.855559999999997,176.671082000000013 -37.862502999999997,176.686645999999996 -37.868332000000002,176.759154999999993 -37.892775999999998,176.784149000000014 -37.900275999999998,176.80304000000001 -37.903328000000002,176.819702000000007 -37.904442000000003,176.838287000000008 -37.907501000000003,176.917755 -37.926108999999997,176.943848000000003 -37.932502999999997,177.08273299999999 -37.967216,177.107468000000011 -37.987220999999998,177.159424 -38.013336000000002,177.415253000000007 -37.982498,177.47357199999999 -37.962502,177.545806999999996 -37.919167000000002,177.552459999999996 -37.915000999999997,177.571625000000012 -37.902222000000002,177.599120999999997 -37.878051999999997,177.603577 -37.872498,177.646941999999996 -37.805,177.732178000000005 -37.682502999999997,177.738861000000014 -37.678336999999999,177.746917999999994 -37.675277999999999,177.791931000000005 -37.666946000000003,177.849396000000013 -37.657218999999998,177.858856000000003 -37.656661999999997,177.868010999999996 -37.654442000000003,177.875792999999987 -37.651389999999999,178.0 -37.592224000000002,178.006653 -37.588332999999999,178.012206999999989 -37.583328000000002,178.018004999999988 -37.550831000000002,178.05581699999999 -37.542777999999998,178.064972000000012 -37.542228999999999,178.187744000000009 -37.546951,178.281921000000011 -37.560828999999998,178.306915000000004 -37.568061999999998,178.311919999999986 -37.573334000000003,178.312468999999993 -37.578887999999999,178.306915000000004 -37.583610999999998,178.321075000000008 -37.602500999999997,178.336365 -37.618332000000002,178.34970100000001 -37.626944999999999,178.367737000000005 -37.630828999999999,178.448028999999991 -37.645279000000002,178.457458000000003 -37.646667,178.468018 -37.646949999999997,178.488861000000014 -37.644165,178.497192000000013 -37.646667,178.504424999999998 -37.649994,178.550536999999991 -37.6875,178.555542000000003 -37.692497000000003,178.559692000000013 -37.698883000000002,178.56552099999999 -37.713332999999999,178.562468999999993 -37.719994,178.483306999999996 -37.826393000000003,178.455230999999998 -37.860000999999997,178.449982000000006 -37.865004999999996,178.429687999999999 -37.876944999999999,178.419983000000002 -37.887779000000002,178.350525000000005 -38.004722999999998,178.347473000000008 -38.011116,178.347197999999992 -38.019722000000002,178.348846000000009 -38.027779000000002,178.354950000000002 -38.032218999999998,178.360229000000004 -38.037506,178.364136000000002 -38.043616999999998,178.375792999999987 -38.072777000000002,178.378296000000006 -38.089995999999999,178.377746999999999 -38.09861,178.353850999999992 -38.185555,178.319976999999994 -38.248055,178.318024000000008 -38.255561999999998,178.317474000000004 -38.263893000000003,178.320800999999989 -38.398612999999997,178.302459999999996 -38.528885000000002,178.300536999999991 -38.536391999999999,178.296356000000003 -38.541946000000003,178.158874999999995 -38.649169999999998,178.074982000000006 -38.713889999999999,178.068297999999999 -38.717773,178.060241999999988 -38.721107000000003,178.050812000000008 -38.721381999999998,178.044433999999995 -38.717216,177.928864000000004 -38.722220999999998,177.941070999999994 -38.793616999999998,177.923858999999993 -38.918334999999999,177.917786000000007 -38.942802,177.909697999999992 -38.969718999999998,177.897705000000002 -39.047942999999997,177.893859999999989 -39.064776999999999,177.906708000000009 -39.064278000000002,177.923034999999999 -39.089165,177.942200000000014 -39.091942000000003,177.967743000000013 -39.098334999999999,177.991332999999997 -39.115004999999996,177.996612999999996 -39.120277000000002,177.999390000000005 -39.127495000000003,177.909973000000008 -39.256950000000003,177.898865 -39.267502,177.874968999999993 -39.286118000000002,177.868010999999996 -39.290283000000002,177.861908 -39.285834999999999,177.844970999999987 -39.251396,177.839416999999997 -39.236946000000003,177.824127000000004 -39.193053999999997,177.823577999999998 -39.183883999999999,177.826629999999994 -39.177222999999998,177.841644000000002 -39.152779000000002,177.822021000000007 -39.114445000000003,177.823195999999996 -39.110115,177.82351700000001 -39.105110000000003,177.82119800000001 -39.101275999999999,177.816696000000007 -39.099274,177.680266999999986 -39.075279000000002,177.628845000000013 -39.071114,177.426085999999998 -39.064163,177.387755999999996 -39.077781999999999,177.246917999999994 -39.128334000000002,177.206085000000002 -39.143616000000002,177.149138999999991 -39.165000999999997,177.054961999999989 -39.204445,176.935790999999995 -39.349997999999999,176.931365999999997 -39.355559999999997,176.903870000000012 -39.398055999999997,176.898865 -39.412216,176.89776599999999 -39.438048999999999,176.899414000000007 -39.446387999999999,176.946625000000012 -39.664444000000003,177.01080300000001 -39.654998999999997,177.107178000000005 -39.660828000000002,177.116913000000011 -39.662216,177.120789000000002 -39.66861,177.119110000000006 -39.676108999999997,177.115783999999991 -39.682502999999997,177.08273299999999 -39.729996,177.073577999999998 -39.741385999999999,177.068024000000008 -39.746108999999997,177.059692000000013 -39.749167999999997,177.050262000000004 -39.751396,177.033874999999995 -39.757506999999997,177.028045999999989 -39.762504999999997,177.023590000000013 -39.768059,177.020263999999997 -39.774718999999997,176.894713999999993 -40.034728999999999,176.890533000000005 -40.049728000000002,176.889983999999998 -40.058052000000004,176.89498900000001 -40.082779000000002,176.893035999999995 -40.090279000000002,176.874114999999989 -40.121383999999999,176.834136999999998 -40.181671,176.808319000000012 -40.216659999999997,176.796935999999988 -40.226387000000003,176.687195000000003 -40.321387999999999,176.644135000000006 -40.379997000000003,176.628296000000006 -40.421944000000003,176.539977999999991 -40.495002999999997,176.521362000000011 -40.513893000000003,176.500823999999994 -40.535004,176.441924999999998 -40.600281000000003,176.405243000000013 -40.643889999999999,176.386108000000007 -40.675002999999997,176.35522499999999 -40.688606,176.349396000000013 -40.693610999999997,176.288574000000011 -40.793892,176.239136000000002 -40.90889,176.22079500000001 -40.931671,176.195526 -40.941665999999998,176.172760000000011 -40.952224999999999,176.158600000000007 -40.959999000000003,176.152771 -40.964722000000002,176.142212 -40.975273,176.134154999999993 -40.987502999999997,176.120789000000002 -41.013618,176.11300700000001 -41.035277999999998,176.098297000000002 -41.087218999999997,176.087463000000014 -41.116112,176.080811000000011 -41.129165999999998,176.062195000000003 -41.151938999999999,175.984679999999997 -41.231383999999998,175.955230999999998 -41.255279999999999,175.819121999999993 -41.347220999999998,175.743561 -41.392226999999998,175.736358999999993 -41.396110999999998,175.557738999999998 -41.485000999999997,175.471069 -41.541389000000002,175.427459999999996 -41.564444999999999,175.323028999999991 -41.614449,175.313292999999987 -41.616394,175.230804000000006 -41.620834000000002,175.222197999999992 -41.618332000000002,175.21691899999999 -41.612777999999999,175.184692000000013 -41.535834999999999,175.181915000000004 -41.519447,175.181091000000009 -41.500838999999999,175.188568000000004 -41.461112999999997,175.193024000000008 -41.446106,175.193848000000003 -41.437775000000002,175.191070999999994 -41.430557,175.186095999999992 -41.425002999999997,175.080261000000007 -41.385559,175.063018999999997 -41.380279999999999,175.05304000000001 -41.378608999999997,175.045532000000009 -41.378608999999997,175.027190999999988 -41.381667999999998,174.993286000000012 -41.393332999999998,174.985779000000008 -41.397224,174.972747999999996 -41.405830000000002,174.960509999999999 -41.415275999999999,174.949982000000006 -41.425559999999997,174.944976999999994 -41.431114,174.94165000000001 -41.437775000000002,174.936919999999986 -41.443328999999999,174.918578999999994 -41.448051,174.908600000000007 -41.448334000000003,174.872467 -41.429442999999999,174.86605800000001 -41.425002999999997,174.861084000000005 -41.419724000000002,174.861633000000012 -41.347496,174.863861000000014 -41.340279000000002,174.870789000000002 -41.327224999999999,174.87912 -41.315002,174.883881000000002 -41.309441,174.894440000000003 -41.290000999999997,174.89776599999999 -41.282501000000003,174.899993999999992 -41.275002,174.901916999999997 -41.258338999999999,174.901916999999997 -41.251114,174.898865 -41.234444000000003,174.89498900000001 -41.228050000000003,174.887482000000006 -41.224442000000003,174.827179 -41.218887000000002,174.818848000000003 -41.221938999999999,174.787475999999998 -41.244446000000003,174.778045999999989 -41.255836000000002,174.774414000000007 -41.262222,174.771087999999992 -41.278053,174.778594999999996 -41.281387000000002,174.796082000000013 -41.286949,174.818024000000008 -41.284728999999999,174.824127000000004 -41.289169,174.829407000000003 -41.294724000000002,174.833313000000004 -41.301108999999997,174.832184000000012 -41.309441,174.82995600000001 -41.316665999999998,174.826355000000007 -41.323334000000003,174.821625000000012 -41.328887999999999,174.815796000000006 -41.333610999999998,174.807189999999991 -41.336387999999999,174.744689999999991 -41.347496,174.700531000000012 -41.344444000000003,174.671906000000007 -41.338332999999999,174.654694000000006 -41.333061,174.648314999999997 -41.328612999999997,174.629669000000007 -41.315002,174.59191899999999 -41.27861,174.591644000000002 -41.271385000000002,174.594116000000014 -41.263893000000003,174.601074000000011 -41.250838999999999,174.608306999999996 -41.237777999999999,174.61300700000001 -41.232216,174.619110000000006 -41.23111,174.627746999999999 -41.233887000000003,174.637482000000006 -41.235557999999997,174.648590000000013 -41.234444000000003,174.666931000000005 -41.229720999999998,174.681365999999997 -41.221938999999999,174.694702000000007 -41.213614999999997,174.712738000000002 -41.199440000000003,174.718567000000007 -41.194716999999997,174.800812000000008 -41.100281000000003,174.844421000000011 -41.041671999999998,174.874390000000005 -41.018059,174.882721000000004 -41.015006999999997,174.892486999999988 -41.013061999999998,174.901093000000003 -41.010283999999999,174.908324999999991 -41.006393000000003,174.932189999999991 -40.987502999999997,174.94165000000001 -40.976387000000003,174.945251000000013 -40.969718999999998,174.947478999999987 -40.962218999999997,175.014983999999998 -40.84861,175.09857199999999 -40.755836000000002,175.112731999999994 -40.738892,175.120789000000002 -40.726944000000003,175.127746999999999 -40.713614999999997,175.164153999999996 -40.631943,175.169708000000014 -40.616942999999999,175.171906000000007 -40.609726000000002,175.187468999999993 -40.530830000000002,175.23800700000001 -40.329726999999998,175.23135400000001 -40.280830000000002,175.201629999999994 -40.181671,175.196349999999995 -40.166946000000003,175.178314 -40.134171000000002,175.15554800000001 -40.095832999999999,175.071625000000012 -40.003059,175.055542000000003 -39.987777999999999,175.022217000000012 -39.958053999999997,174.986358999999993 -39.93,174.974120999999997 -39.920836999999999,174.960784999999987 -39.912773,174.938873 -39.902222000000002,174.923034999999999 -39.895836000000003,174.836638999999991 -39.865004999999996,174.828307999999993 -39.862502999999997,174.790802000000014 -39.854720999999998,174.781096999999988 -39.853057999999997,174.751373 -39.865555,174.740509000000003 -39.866661,174.729674999999986 -39.865836999999999,174.57607999999999 -39.829169999999998,174.558013999999986 -39.824722,174.549408 -39.822226999999998,174.542205999999993 -39.818610999999997,174.523865 -39.805,174.421356000000003 -39.726944000000003,174.410521999999986 -39.716942000000003,174.376068000000004 -39.678612,174.353577 -39.639999000000003,174.348846000000009 -39.634444999999999,174.336638999999991 -39.625557,174.316070999999994 -39.613892,174.30886799999999 -39.610283000000003,174.217194000000006 -39.579726999999998,174.208862000000011 -39.577224999999999,174.040802000000014 -39.552779999999998,173.997741999999988 -39.551392,173.986908 -39.550552000000003,173.970245000000006 -39.545279999999998,173.963012999999989 -39.541671999999998,173.871062999999992 -39.483330000000002,173.851898000000006 -39.470551,173.839966000000004 -39.461387999999999,173.810790999999995 -39.4375,173.79525799999999 -39.421944000000003,173.786652000000004 -39.409996,173.775817999999987 -39.390839,173.769713999999993 -39.376944999999999,173.762206999999989 -39.354720999999998,173.754424999999998 -39.305,173.751923000000005 -39.288612,173.751647999999989 -39.269996999999996,173.781921000000011 -39.191383000000002,173.785247999999996 -39.184998,173.800536999999991 -39.169167000000002,173.82995600000001 -39.145836000000003,173.844421000000011 -39.138336000000002,173.868010999999996 -39.128883000000002,173.892761000000007 -39.120552000000004,174.011108000000007 -39.073334000000003,174.114685000000009 -39.024445,174.187744000000009 -38.988608999999997,174.209136999999998 -38.977218999999998,174.226623999999987 -38.972496,174.248016000000007 -38.970551,174.259978999999987 -38.970275999999998,174.281372000000005 -38.969994,174.293029999999987 -38.969994,174.313292999999987 -38.972496,174.351348999999999 -38.979438999999999,174.375244000000009 -38.979163999999997,174.384704999999997 -38.977218999999998,174.392761000000007 -38.974442000000003,174.456359999999989 -38.940277000000002,174.546082000000013 -38.871941,174.557738999999998 -38.860557999999997,174.568024000000008 -38.850281000000003,174.587738000000002 -38.828887999999999,174.594421000000011 -38.815834000000002,174.603302000000014 -38.786118000000002,174.608582000000013 -38.763061999999998,174.625518999999997 -38.677779999999998,174.642486999999988 -38.590836000000003,174.681091000000009 -38.379165999999998,174.724396000000013 -38.185828999999998,174.838561999999996 -38.157218999999998,174.848021999999986 -38.156944000000003,174.85635400000001 -38.154167,174.926636000000002 -38.116112,174.932465000000008 -38.111389000000003,174.940246999999999 -38.101112,174.898590000000013 -38.075004999999997,174.877166999999986 -38.064163,174.892486999999988 -37.976387000000003,174.893585000000002 -37.969994,174.868286000000012 -37.943610999999997,174.861084000000005 -37.939995000000003,174.85522499999999 -37.944716999999997,174.834686000000005 -37.963614999999997,174.830261000000007 -37.969161999999997,174.828033000000005 -37.976661999999997,174.828583000000009 -37.995002999999997,174.822754000000003 -37.999724999999998,174.814696999999995 -38.002502,174.804137999999995 -38.001944999999999,174.797211000000004 -37.998336999999999,174.791077 -37.993614,174.786376999999987 -37.988334999999999,174.783874999999995 -37.980826999999998,174.783600000000007 -37.971663999999997,174.788025000000005 -37.868332000000002,174.788879000000009 -37.860000999999997,174.791077 -37.852783000000002,174.795532000000009 -37.846947,174.819702000000007 -37.829169999999998,174.826629999999994 -37.825279000000002,174.841339000000005 -37.818610999999997,174.872741999999988 -37.806106999999997,174.883330999999998 -37.805,174.903045999999989 -37.807502999999997,174.945251000000013 -37.810555,174.967467999999997 -37.809165999999998,174.975525000000005 -37.806389000000003,174.974975999999998 -37.75,174.974670000000003 -37.740836999999999,174.966644000000002 -37.739998,174.951355000000007 -37.743057,174.94442699999999 -37.745002999999997,174.93081699999999 -37.752502,174.906921000000011 -37.774169999999998,174.870789000000002 -37.783057999999997,174.861633000000012 -37.785004,174.848297000000002 -37.769722000000002,174.828307999999993 -37.710830999999999,174.764160000000004 -37.527779000000002,174.744415000000004 -37.487502999999997,174.724975999999998 -37.447220000000002,174.717467999999997 -37.425002999999997,174.714690999999988 -37.408607000000003,174.714690999999988 -37.399445,174.719116000000014 -37.393616000000002,174.725799999999992 -37.389999000000003,174.744415000000004 -37.385834000000003,174.760528999999991 -37.380279999999999,174.767486999999988 -37.376389000000003,174.773041000000006 -37.371665999999998,174.831635000000006 -37.308052000000004,174.840789999999998 -37.296951,174.840515000000011 -37.291389000000002,174.82995600000001 -37.290557999999997,174.821899000000002 -37.291671999999998,174.812744000000009 -37.293616999999998,174.804687999999999 -37.296393999999999,174.797760000000011 -37.300277999999999,174.766083000000009 -37.321114,174.754700000000014 -37.330559,174.751373 -37.336945,174.744965000000008 -37.359169,174.740509000000003 -37.364722999999998,174.733582000000013 -37.368606999999997,174.724120999999997 -37.368889000000003,174.717194000000006 -37.365279999999998,174.711365 -37.360557999999997,174.701629999999994 -37.349724000000002,174.69442699999999 -37.336945,174.660187000000008 -37.273311999999997,174.645813000000004 -37.236389000000003,174.639709000000011 -37.224442000000003,174.599975999999998 -37.153885000000002,174.578307999999993 -37.115555,174.569976999999994 -37.103614999999998,174.555542000000003 -37.087502,174.551909999999992 -37.080832999999998,174.549712999999997 -37.073616,174.55304000000001 -37.067222999999998,174.558593999999999 -37.0625,174.568848000000003 -37.061385999999999,174.644135000000006 -37.061110999999997,174.661376999999987 -37.065551999999997,174.664977999999991 -37.071944999999999,174.666381999999999 -37.080283999999999,174.661925999999994 -37.085830999999999,174.650542999999999 -37.095275999999998,174.646087999999992 -37.100838000000003,174.648590000000013 -37.108055,174.703856999999999 -37.197777000000002,174.733856000000003 -37.196106,174.716644000000002 -37.154167,174.72357199999999 -37.150275999999998,174.87912 -37.088889999999999,174.887482000000006 -37.059165999999998,174.795532000000009 -37.023055999999997,174.804413000000011 -36.972220999999998,174.824982000000006 -36.960830999999999,174.829407000000003 -36.955002,174.83273299999999 -36.948608,174.828033000000005 -36.943053999999997,174.818848000000003 -36.941383000000002,174.770263999999997 -36.936661,174.696625000000012 -36.93972,174.686095999999992 -36.940834000000002,174.659697999999992 -36.947495000000004,174.653045999999989 -36.951393000000003,174.641662999999994 -36.960830999999999,174.622467 -36.982216,174.619110000000006 -36.988892,174.617187999999999 -36.996108999999997,174.600525000000005 -37.022224,174.524688999999995 -37.045555,174.515533000000005 -37.045555,174.508605999999986 -37.041946000000003,174.502472000000012 -37.037506,174.498016000000007 -37.031944000000003,174.490783999999991 -37.019165,174.484679999999997 -37.005561999999998,174.459228999999993 -36.944031000000003,174.451904000000013 -36.923889000000003,174.446930000000009 -36.909163999999997,174.443024000000008 -36.893616000000002,174.439147999999989 -36.868606999999997,174.436645999999996 -36.852226000000002,174.43386799999999 -36.835555999999997,174.427764999999994 -36.812775000000002,174.422760000000011 -36.798057999999997,174.416655999999989 -36.784171999999998,174.409697999999992 -36.771385000000002,174.406096999999988 -36.765006999999997,174.390533000000005 -36.740279999999998,174.344299000000007 -36.679336999999997,174.301085999999998 -36.62722,174.284973000000008 -36.612777999999999,174.267486999999988 -36.599167,174.236908 -36.568061999999998,174.208862000000011 -36.535277999999998,174.187744000000009 -36.496948000000003,174.17804000000001 -36.467498999999997,174.177764999999994 -36.458336000000003,174.178864000000004 -36.449997000000003,174.181091000000009 -36.442497000000003,174.184417999999994 -36.436110999999997,174.189972000000012 -36.431389000000003,174.196930000000009 -36.427779999999998,174.20495600000001 -36.428612,174.24383499999999 -36.440834000000002,174.251923000000005 -36.443610999999997,174.257751000000013 -36.448051,174.300262000000004 -36.515839,174.348846000000009 -36.601944000000003,174.367919999999998 -36.629165999999998,174.370728000000014 -36.6325,174.422484999999995 -36.667220999999998,174.430542000000003 -36.668059999999997,174.453033000000005 -36.651108,174.456359999999989 -36.644722000000002,174.465515000000011 -36.582779000000002,174.465515000000011 -36.532218999999998,174.442474000000004 -36.414718999999998,174.422211000000004 -36.366112,174.41885400000001 -36.370834000000002,174.391937000000013 -36.395004,174.384978999999987 -36.398887999999999,174.377166999999986 -36.401665,174.303864000000004 -36.395279000000002,174.296935999999988 -36.391669999999998,174.285247999999996 -36.3825,174.276916999999997 -36.370552000000004,174.26998900000001 -36.357779999999998,174.268585000000002 -36.349442000000003,174.268585000000002 -36.342224000000002,174.292205999999993 -36.316947999999996,174.299988000000013 -36.314163,174.308013999999986 -36.316947999999996,174.325531000000012 -36.330283999999999,174.334686000000005 -36.332222000000002,174.36883499999999 -36.331673000000002,174.376891999999998 -36.330832999999998,174.421248999999989 -36.310611999999999,174.50692699999999 -36.267220000000002,174.518311000000011 -36.258057,174.521636999999998 -36.251396,174.519135000000006 -36.245834000000002,174.505248999999992 -36.231383999999998,174.413299999999992 -36.263061999999998,174.378296000000006 -36.286667,174.364685000000009 -36.294167000000002,174.346619000000004 -36.298057999999997,174.336365 -36.298889000000003,174.305237000000005 -36.287506,174.365233999999987 -36.260002,174.442200000000014 -36.169724000000002,174.396087999999992 -36.144447,174.396362000000011 -36.151938999999999,174.394135000000006 -36.159163999999997,174.373290999999995 -36.206389999999999,174.369965000000008 -36.213057999999997,174.358856000000003 -36.222220999999998,174.345245000000006 -36.229720999999998,174.337463000000014 -36.232773000000002,174.33273299999999 -36.229163999999997,174.307738999999998 -36.176949,174.282745000000006 -36.121108999999997,174.274993999999992 -36.118332000000002,174.239409999999992 -36.111389000000003,174.229126000000008 -36.112502999999997,174.195251000000013 -36.131110999999997,174.188568000000004 -36.144165,174.185790999999995 -36.171944000000003,174.191345000000013 -36.176392,174.19830300000001 -36.18,174.217743000000013 -36.182502999999997,174.226898000000006 -36.182502999999997,174.236084000000005 -36.180557,174.244110000000006 -36.183059999999998,174.287749999999988 -36.210281000000002,174.312468999999993 -36.236663999999998,174.314696999999995 -36.243889000000003,174.267212 -36.270279000000002,174.259430000000009 -36.273055999999997,174.251373 -36.272499000000003,174.065796000000006 -36.168334999999999,173.999114999999989 -36.121108999999997,173.994415000000004 -36.115836999999999,173.99105800000001 -36.109444000000003,173.931091000000009 -35.981940999999999,173.938568000000004 -35.934998,173.947478999999987 -35.923889000000003,173.948577999999998 -35.915550000000003,173.946075000000008 -35.908051,173.913879000000009 -35.86972,173.908324999999991 -35.874442999999999,173.903870000000012 -35.879997000000003,173.904967999999997 -35.888336000000002,173.921356000000003 -36.003059,173.980804000000006 -36.121383999999999,173.987731999999994 -36.134171000000002,173.992461999999989 -36.139724999999999,174.124390000000005 -36.263618,174.176085999999998 -36.276947,174.180542000000003 -36.282501000000003,174.198853000000014 -36.343887000000002,174.199982000000006 -36.352226000000002,174.198028999999991 -36.368606999999997,174.194702000000007 -36.375275000000002,174.189147999999989 -36.379722999999998,174.115233999999987 -36.40361,174.089966000000004 -36.411385000000003,174.080811000000011 -36.409438999999999,174.06942699999999 -36.400275999999998,174.065796000000006 -36.393889999999999,174.057465000000008 -36.374718,174.049133000000012 -36.353614999999998,174.044433999999995 -36.338889999999999,174.039703000000003 -36.323334000000003,174.031096999999988 -36.293059999999997,174.020537999999988 -36.273887999999999,173.82607999999999 -36.032501000000003,173.737457000000006 -35.933608999999997,173.727172999999993 -35.923614999999998,173.590515000000011 -35.778053,173.398865 -35.573891000000003,173.395537999999988 -35.567504999999997,173.398865 -35.553612,173.446625000000012 -35.440277000000002,173.465789999999998 -35.429169000000002,173.501923000000005 -35.419724000000002,173.506378000000012 -35.425277999999999,173.540253000000007 -35.430832000000002,173.629943999999995 -35.356667000000002,173.65554800000001 -35.322502,173.65554800000001 -35.313332000000003,173.564147999999989 -35.278053,173.556091000000009 -35.280830000000002,173.551636000000002 -35.286391999999999,173.549712999999997 -35.302779999999998,173.549712999999997 -35.321114,173.551909999999992 -35.328612999999997,173.566924999999998 -35.344161999999997,173.568024000000008 -35.361671,173.566924999999998 -35.36972,173.559143000000006 -35.372771999999998,173.439696999999995 -35.376106,173.416077 -35.384444999999999,173.410247999999996 -35.388893000000003,173.391356999999999 -35.423057999999997,173.39498900000001 -35.449722,173.396087999999992 -35.458053999999997,173.392761000000007 -35.482773000000002,173.386382999999995 -35.523330999999999,173.380524000000008 -35.528053,173.37384 -35.524169999999998,173.306915000000004 -35.449165,173.237731999999994 -35.370277000000002,173.154144000000002 -35.276665,173.103302000000014 -35.226104999999997,173.09191899999999 -35.216942000000003,173.087463000000014 -35.211387999999999,173.09191899999999 -35.1875,173.098846000000009 -35.183608999999997,173.119110000000006 -35.185555,173.12802099999999 -35.1875,173.134704999999997 -35.191108999999997,173.14498900000001 -35.191940000000002,173.152771 -35.189163,173.163879000000009 -35.179169000000002,173.168578999999994 -35.173614999999998,173.18081699999999 -35.156104999999997,173.187468999999993 -35.143332999999998,173.191924999999998 -35.128334000000002,173.196349999999995 -35.104446000000003,173.197478999999987 -35.09639,173.198577999999998 -35.078887999999999,173.198577999999998 -35.051108999999997,173.193848000000003 -35.027222000000002,173.189423000000005 -35.012779000000002,173.179413000000011 -34.993332000000002,173.175812000000008 -34.986946000000003,173.159149000000014 -34.958336000000003,173.151093000000003 -34.946663,173.137755999999996 -34.93,172.947204999999997 -34.716942000000003,172.828033000000005 -34.584442000000003,172.812468999999993 -34.568893000000003,172.722473000000008 -34.495277000000002,172.739136000000002 -34.435555,172.900817999999987 -34.414718999999998,172.911925999999994 -34.414718999999998,173.020813000000004 -34.422226000000002,173.038879000000009 -34.436942999999999,173.043304000000006 -34.517775999999998,173.039977999999991 -34.522224,173.033324999999991 -34.525832999999999,173.024414000000007 -34.527779000000002,173.016662999999994 -34.52861,173.007476999999994 -34.526947,172.997467 -34.498336999999999,172.984130999999991 -34.472771000000002,172.961914000000007 -34.465279000000002,172.955230999999998 -34.468887000000002,172.908324999999991 -34.544167000000002,172.912749999999988 -34.549728000000002,172.923858999999993 -34.558891000000003,172.936095999999992 -34.567222999999998,172.973021999999986 -34.581116000000002,173.053314 -34.665550000000003,173.057738999999998 -34.680283000000003,173.110503999999992 -34.791389000000002,173.120789000000002 -34.810555,173.128570999999994 -34.822502,173.133026 -34.828055999999997,173.13857999999999 -34.832504,173.151916999999997 -34.839995999999999,173.213593000000003 -34.871941,173.242737000000005 -34.884726999999998,173.273314999999997 -34.940834000000002,173.268859999999989 -34.946387999999999,173.262206999999989 -34.959167,173.259978999999987 -34.966659999999997,173.258881000000002 -34.974716,173.259978999999987 -34.983055,173.264709000000011 -35.014449999999997,173.269135000000006 -35.019722000000002,173.317474000000004 -35.018889999999999,173.328583000000009 -35.009444999999999,173.358856000000003 -34.98111,173.36300700000001 -34.975555,173.366364000000004 -34.968887000000002,173.373259999999988 -34.936774999999997,173.371246000000014 -34.927444,173.400817999999987 -34.863334999999999,173.426085999999998 -34.82,173.450806 -34.807777000000002,173.500274999999988 -34.864722999999998,173.499114999999989 -34.871108999999997,173.492461999999989 -34.874718,173.452453999999989 -34.887779000000002,173.443297999999999 -34.889724999999999,173.433319000000012 -34.890555999999997,173.413025000000005 -34.888893000000003,173.405243000000013 -34.892502,173.399719000000005 -34.897224,173.399719000000005 -34.906387000000002,173.402190999999988 -34.913887000000003,173.411590999999987 -34.931778,173.419128 -34.945830999999998,173.426909999999992 -34.957779000000002,173.431641000000013 -34.963332999999999,173.44165000000001 -34.973328000000002,173.454131999999987 -34.981667000000002,173.467467999999997 -34.988892,173.475525000000005 -34.991669000000002,173.493286000000012 -34.995277000000002,173.541655999999989 -34.988608999999997,173.561645999999996 -34.958893000000003,173.562468999999993 -34.950836000000002,173.566924999999998 -34.936110999999997,173.572478999999987 -34.931389000000003,173.579131999999987 -34.927779999999998,173.589416999999997 -34.928612,173.83914200000001 -35.004173000000002,174.101074000000011 -35.121108999999997,174.098297000000002 -35.161667,174.091644000000002 -35.158051,174.056641000000013 -35.155555999999997,174.021911999999986 -35.164161999999997,174.008026 -35.207504,174.008026 -35.215004,174.011382999999995 -35.221381999999998,174.018311000000011 -35.224997999999999,174.093841999999995 -35.225273,174.100525000000005 -35.228881999999999,174.143585000000002 -35.328612999999997,174.208008000000007 -35.323334000000003,174.218018 -35.322226999999998,174.247741999999988 -35.27861,174.319976999999994 -35.232773000000002,174.383881000000002 -35.337775999999998,174.461638999999991 -35.445273999999998,174.491913000000011 -35.485275,174.575806 -35.601944000000003,174.577179 -35.610000999999997,174.577147999999994 -35.618088,174.569976999999994 -35.648055999999997,174.563292999999987 -35.651665,174.530272999999994 -35.649445,174.520263999999997 -35.648612999999997,174.513306 -35.645004,174.505248999999992 -35.642502,174.479126000000008 -35.641945,174.47357199999999 -35.646393000000003,174.474975999999998 -35.654716,174.518311000000011 -35.724167,174.523041000000006 -35.729438999999999,174.554137999999995 -35.750281999999999,174.561919999999986 -35.753059,174.583862000000011 -35.764724999999999,174.60244800000001 -35.844444000000003,174.596924 -35.849167,174.58914200000001 -35.851944000000003,174.577758999999986 -35.852226000000002,174.560790999999995 -35.847777999999998,174.554961999999989 -35.843330000000002,174.538574000000011 -35.819450000000003,174.523314999999997 -35.796669,174.519713999999993 -35.790283000000002,174.49105800000001 -35.769447,174.361908 -35.723328000000002,174.357451999999995 -35.72361,174.34857199999999 -35.734726000000002,174.346924 -35.833061,174.350525000000005 -35.839438999999999,174.35522499999999 -35.845001000000003,174.360779000000008 -35.849442000000003,174.381348000000003 -35.851112,174.384704999999997 -35.844718999999998,174.385528999999991 -35.828887999999999,174.391083000000009 -35.824173000000002,174.398865 -35.821387999999999,174.437468999999993 -35.822777000000002,174.476074000000011 -35.824173000000002,174.486358999999993 -35.824722,174.519713999999993 -35.844718999999998,174.525542999999999 -35.849167,174.524414000000007 -35.855559999999997,174.521362000000011 -35.862220999999998,174.501373 -35.889999000000003,174.496917999999994 -35.895553999999997,174.487182999999987 -35.915000999999997,174.495513999999986 -35.988608999999997,174.498016000000007 -35.994163999999998,174.514160000000004 -36.008614,174.56942699999999 -36.037224000000002,174.578583000000009 -36.038894999999997,174.587738000000002 -36.038894999999997,174.596619000000004 -36.036667,174.606902999999988 -36.037506,174.612731999999994 -36.042228999999999,174.622192000000013 -36.053055,174.62912 -36.065834000000002,174.629394999999988 -36.075004999999997,174.616364000000004 -36.100861000000002)),((171.185241999999988 -44.938332000000003,171.182129000000003 -44.94173,171.175017999999994 -44.949902000000002,171.167923000000002 -44.959850000000003,171.165436 -44.966599000000002,171.164703000000003 -44.970275999999998,171.163299999999992 -44.978332999999999,171.149719000000005 -44.996665999999998,171.07995600000001 -45.067222999999998,171.02664200000001 -45.103332999999999,170.975525000000005 -45.151108,170.966063999999989 -45.163055,170.961914000000007 -45.169167000000002,170.921630999999991 -45.243057,170.873566000000011 -45.358055,170.873290999999995 -45.367218,170.876891999999998 -45.373885999999999,170.871338000000009 -45.424171,170.859955000000014 -45.487502999999997,170.855804000000006 -45.493889000000003,170.750274999999988 -45.61972,170.674682999999987 -45.745002999999997,170.616913000000011 -45.839438999999999,170.55886799999999 -45.881667999999998,170.554413000000011 -45.888053999999997,170.555542000000003 -45.896110999999998,170.591063999999989 -45.894165,170.600525000000005 -45.891669999999998,170.608582000000013 -45.888053999999997,170.658600000000007 -45.858612,170.718018 -45.817504999999997,170.724670000000003 -45.813057,170.773314999999997 -45.782775999999998,170.781096999999988 -45.786391999999999,170.790802000000014 -45.806946000000003,170.790802000000014 -45.84639,170.788879000000009 -45.863892,170.783051 -45.878334000000002,170.776366999999993 -45.882773999999998,170.699982000000006 -45.911667,170.664429000000013 -45.908332999999999,170.57330300000001 -45.916663999999997,170.550536999999991 -45.919167000000002,170.484406000000007 -45.926949,170.452453999999989 -45.931946000000003,170.424408 -45.939438000000003,170.382721000000004 -45.956108,170.342467999999997 -45.97361,170.315246999999999 -45.991385999999999,170.309692000000013 -45.996948000000003,170.294433999999995 -46.013893000000003,170.281646999999992 -46.029442000000003,170.263610999999997 -46.051940999999999,170.256378000000012 -46.065551999999997,170.253051999999997 -46.081947,170.252472000000012 -46.09111,170.254424999999998 -46.107779999999998,170.252777000000009 -46.115836999999999,170.240783999999991 -46.146949999999997,170.237731999999994 -46.154167,170.226623999999987 -46.165000999999997,170.214416999999997 -46.174720999999998,170.193848000000003 -46.188048999999999,170.169433999999995 -46.198608,170.067748999999992 -46.246665999999998,169.911925999999994 -46.340279000000002,169.863585999999998 -46.371383999999999,169.858001999999999 -46.376663,169.849396000000013 -46.389442000000003,169.848021999999986 -46.416946000000003,169.849975999999998 -46.433326999999998,169.852172999999993 -46.440834000000002,169.853850999999992 -46.457504,169.850799999999992 -46.464722000000002,169.845245000000006 -46.469994,169.701904000000013 -46.558052000000004,169.631348000000003 -46.581947,169.458008000000007 -46.623328999999998,169.266388000000006 -46.656387000000002,169.133026 -46.670836999999999,169.107727000000011 -46.669167000000002,169.097197999999992 -46.666946000000003,169.084411999999986 -46.657501000000003,169.067200000000014 -46.635002,169.061919999999986 -46.675002999999997,169.053864000000004 -46.678612,169.008026 -46.680832000000002,168.883330999999998 -46.667777999999998,168.878296000000006 -46.661942000000003,168.861908 -46.628334000000002,168.862457000000006 -46.619446000000003,168.864409999999992 -46.611114999999998,168.864959999999996 -46.603889000000002,168.844970999999987 -46.563614,168.835784999999987 -46.560555,168.823853000000014 -46.561110999999997,168.733306999999996 -46.577499000000003,168.640533000000005 -46.603889000000002,168.633605999999986 -46.606392,168.614685000000009 -46.611114999999998,168.593018 -46.614165999999997,168.568848000000003 -46.615004999999996,168.516937000000013 -46.614165999999997,168.492737000000005 -46.613334999999999,168.442138999999997 -46.601500999999999,168.436630000000008 -46.599666999999997,168.446625000000012 -46.584003000000003,168.442200000000014 -46.575004999999997,168.454407000000003 -46.574447999999997,168.490509000000003 -46.573059,168.502472000000012 -46.574173000000002,168.506103999999993 -46.578887999999999,168.499114999999989 -46.583328000000002,168.505553999999989 -46.588051,168.551636000000002 -46.594444000000003,168.561371000000008 -46.591942000000003,168.566924999999998 -46.586661999999997,168.563599000000011 -46.580002,168.550812000000008 -46.570557,168.541655999999989 -46.567504999999997,168.391356999999999 -46.540000999999997,168.361908 -46.544449,168.353577 -46.547783000000003,168.351623999999987 -46.556106999999997,168.352172999999993 -46.564444999999999,168.362731999999994 -46.583885000000002,168.348236000000014 -46.582165000000003,168.352904999999993 -46.584499,168.359267999999986 -46.585830999999999,168.365082 -46.592666999999999,168.367248999999987 -46.596668,168.367599000000013 -46.601497999999999,168.364928999999989 -46.605331,168.35775799999999 -46.604500000000002,168.351409999999987 -46.603164999999997,168.275269000000009 -46.557777000000002,168.269135000000006 -46.535561,168.268311000000011 -46.529167,168.27664200000001 -46.525832999999999,168.286102 -46.523330999999999,168.307738999999998 -46.520553999999997,168.318297999999999 -46.520836000000003,168.318848000000003 -46.529167,168.321075000000008 -46.536667,168.328856999999999 -46.540557999999997,168.339416999999997 -46.539169,168.386658000000011 -46.497779999999999,168.392486999999988 -46.492226000000002,168.395537999999988 -46.485000999999997,168.396087999999992 -46.477775999999999,168.394135000000006 -46.470275999999998,168.37384 -46.421944000000003,168.36883499999999 -46.416106999999997,168.359679999999997 -46.415000999999997,168.350249999999988 -46.417503000000004,168.250274999999988 -46.400832999999999,168.211090000000013 -46.355277999999998,168.206085000000002 -46.351394999999997,168.194702000000007 -46.345551,168.185516000000007 -46.342498999999997,168.174988000000013 -46.340279000000002,168.116364000000004 -46.343612999999998,168.063873 -46.351669,167.955535999999995 -46.371383999999999,167.893035999999995 -46.387222,167.850799999999992 -46.399445,167.832184000000012 -46.398612999999997,167.824401999999992 -46.394447,167.753875999999991 -46.333885000000002,167.776916999999997 -46.312775000000002,167.781372000000005 -46.306389000000003,167.783600000000007 -46.298340000000003,167.781372000000005 -46.290840000000003,167.778045999999989 -46.284171999999998,167.701904000000013 -46.209442000000003,167.596924 -46.166389000000002,167.556641000000013 -46.156387000000002,167.546356000000003 -46.154167,167.534424 -46.152779000000002,167.483032000000009 -46.149726999999999,167.471069 -46.149994,167.460236000000009 -46.151389999999999,167.451904000000013 -46.154716,167.446075000000008 -46.159996,167.415526999999997 -46.204720000000002,167.356628 -46.254447999999996,167.280272999999994 -46.273055999999997,167.261108000000007 -46.267775999999998,167.238555999999988 -46.263893000000003,167.086638999999991 -46.240555,167.001373 -46.229163999999997,166.966063999999989 -46.224716,166.949982000000006 -46.223885000000003,166.915253000000007 -46.226104999999997,166.883026 -46.229996,166.836365 -46.232498,166.823028999999991 -46.231667000000002,166.768035999999995 -46.22361,166.726348999999999 -46.214165,166.717467999999997 -46.210830999999999,166.705230999999998 -46.201110999999997,166.670806999999996 -46.161667,166.67025799999999 -46.15361,166.684417999999994 -46.145004,166.693848000000003 -46.142775999999998,166.709411999999986 -46.135277000000002,166.738861000000014 -46.119163999999998,166.761230000000012 -46.093612999999998,166.784911999999991 -46.064945000000002,166.804748999999987 -46.033279,166.82995600000001 -46.003891000000003,166.854674999999986 -45.994163999999998,166.886932000000002 -45.990279999999998,166.943297999999999 -45.956108,166.949127000000004 -45.950836000000002,166.946930000000009 -45.945273999999998,166.939147999999989 -45.944716999999997,166.929687999999999 -45.947220000000002,166.836365 -45.981383999999998,166.828033000000005 -45.984444000000003,166.791350999999992 -46.005004999999997,166.785797000000002 -46.010283999999999,166.781096999999988 -46.016396,166.759308000000004 -46.035553,166.762969999999996 -46.038387,166.764969000000008 -46.042392999999997,166.763656999999995 -46.047221999999998,166.760162000000008 -46.050392000000002,166.740982000000002 -46.066059000000003,166.737793000000011 -46.066558999999998,166.670532000000009 -46.087218999999997,166.615783999999991 -46.090836000000003,166.613585999999998 -46.086387999999999,166.617461999999989 -46.059722999999998,166.621062999999992 -46.052498,166.640807999999993 -46.015006999999997,166.661652000000004 -45.991942999999999,166.625792999999987 -45.967216,166.492461999999989 -46.013061999999998,166.484406000000007 -46.014449999999997,166.474975999999998 -46.002785000000003,166.467194000000006 -45.990555,166.465239999999994 -45.983055,166.464690999999988 -45.839438999999999,166.468841999999995 -45.823059,166.472473000000008 -45.815834000000002,166.476898000000006 -45.809722999999998,166.537475999999998 -45.798889000000003,166.613861000000014 -45.801108999999997,166.652190999999988 -45.800277999999999,166.699982000000006 -45.798889000000003,166.881348000000003 -45.779998999999997,166.890807999999993 -45.777779000000002,166.974120999999997 -45.735000999999997,166.987182999999987 -45.709724,166.923034999999999 -45.705832999999998,166.912475999999998 -45.705275999999998,166.887482000000006 -45.705002,166.854126000000008 -45.707779000000002,166.825806 -45.714722000000002,166.809417999999994 -45.721381999999998,166.787475999999998 -45.689995000000003,166.775817999999987 -45.662773,166.81153900000001 -45.617942999999997,166.811217999999997 -45.613109999999999,166.812531000000007 -45.608111999999998,166.816710999999998 -45.605606000000002,166.869689999999991 -45.588779000000002,166.881026999999989 -45.586112999999997,166.88736 -45.585278000000002,166.895203000000009 -45.585608999999998,166.901366999999993 -45.587108999999998,166.912871999999993 -45.590946000000002,166.980255 -45.578612999999997,166.991913000000011 -45.580002,167.0 -45.576949999999997,167.005829000000006 -45.571671000000002,167.032470999999987 -45.527779000000002,167.041350999999992 -45.501396,166.989685000000009 -45.519165,166.891693000000004 -45.544724000000002,166.796875 -45.569389,166.791199000000006 -45.570720999999999,166.784836000000013 -45.571556,166.777023000000014 -45.571219999999997,166.710509999999999 -45.579445,166.704407000000003 -45.574447999999997,166.697204999999997 -45.554718,166.699127000000004 -45.546669,166.757476999999994 -45.425277999999999,166.801361000000014 -45.353614999999998,166.821625000000012 -45.320557,166.86883499999999 -45.279724000000002,166.880797999999999 -45.279167,167.008330999999998 -45.341667,167.038299999999992 -45.357779999999998,167.146941999999996 -45.427222999999998,167.16885400000001 -45.472496,167.205230999999998 -45.477775999999999,167.211914000000007 -45.475273,167.21414200000001 -45.467216,167.209411999999986 -45.461387999999999,167.173584000000005 -45.422775,167.158019999999993 -45.406661999999997,167.134978999999987 -45.386116,167.12912 -45.381385999999999,167.115509000000003 -45.372222999999998,167.097747999999996 -45.366112,167.087463000000014 -45.363616999999998,167.061645999999996 -45.345001000000003,167.051085999999998 -45.333328000000002,167.081421000000006 -45.325333,167.08407600000001 -45.321666999999998,167.092407000000009 -45.316498000000003,167.097243999999989 -45.314498999999998,167.114227 -45.310333,167.163574000000011 -45.302833999999997,167.169922000000014 -45.302998000000002,167.173584000000005 -45.305999999999997,167.176422000000002 -45.309330000000003,167.17756700000001 -45.313834999999997,167.212738000000002 -45.313332000000003,167.218841999999995 -45.318336000000002,167.232178000000005 -45.327224999999999,167.239685000000009 -45.331116000000002,167.248566000000011 -45.334167,167.260254000000003 -45.335830999999999,167.270813000000004 -45.334442000000003,167.301636000000002 -45.329445,167.309692000000013 -45.326110999999997,167.307738999999998 -45.318610999999997,167.300262000000004 -45.314444999999999,167.19464099999999 -45.271445999999997,167.138290000000012 -45.268943999999998,167.099471999999992 -45.272114000000002,167.094146999999992 -45.271278000000002,167.08964499999999 -45.268776000000003,167.002196999999995 -45.201110999999997,166.996917999999994 -45.145836000000003,167.146362000000011 -45.001671000000002,167.198577999999998 -44.956108,167.204407000000003 -44.951110999999997,167.228302000000014 -44.930832000000002,167.24105800000001 -44.921387000000003,167.260528999999991 -44.907501000000003,167.267486999999988 -44.903053,167.312744000000009 -44.875,167.320800999999989 -44.871383999999999,167.393462999999997 -44.862999000000002,167.398987000000005 -44.861496000000002,167.404312000000004 -44.863498999999997,167.421798999999993 -44.894168999999998,167.422974000000011 -44.898665999999999,167.420638999999994 -44.908496999999997,167.417968999999999 -44.912166999999997,167.440796000000006 -44.928612,167.439972000000012 -44.9375,167.441924999999998 -44.945,167.459686000000005 -44.99472,167.497741999999988 -45.003891000000003,167.507202000000007 -45.001396,167.508224000000013 -45.0,167.511658000000011 -44.995277000000002,167.511108000000007 -44.986946000000003,167.47908000000001 -44.903446000000002,167.465912000000003 -44.876441999999997,167.462752999999992 -44.867947,167.461578000000003 -44.863444999999999,167.460097999999988 -44.853946999999998,167.459411999999986 -44.843944999999998,167.459914999999995 -44.838444000000003,167.448577999999998 -44.795279999999998,167.453033000000005 -44.788894999999997,167.458587999999992 -44.783614999999998,167.59970100000001 -44.683883999999999,167.743010999999996 -44.611671,167.838866999999993 -44.498610999999997,167.850249999999988 -44.488052000000003,167.949982000000006 -44.40361,167.963593000000003 -44.395004,168.034973000000008 -44.353614999999998,168.12802099999999 -44.316947999999996,168.141662999999994 -44.308052000000004,168.144713999999993 -44.300834999999999,168.144135000000006 -44.292503000000004,168.124099999999999 -44.251404,168.143311000000011 -44.253059,168.153594999999996 -44.251396,168.169708000000014 -44.24472,168.288299999999992 -44.172775,168.29385400000001 -44.167503000000004,168.336638999999991 -44.123885999999999,168.339966000000004 -44.116661,168.337738000000002 -44.109169,168.334411999999986 -44.102783000000002,168.336365 -44.094444000000003,168.369689999999991 -44.043334999999999,168.374968999999993 -44.037781000000003,168.383026 -44.034447,168.402771 -44.029724000000002,168.672211000000004 -43.987777999999999,168.676909999999992 -43.993614,168.683043999999995 -43.998336999999999,168.690246999999999 -44.002228000000002,168.715239999999994 -44.012222,168.723021999999986 -44.012504999999997,168.753875999999991 -44.010002,168.764160000000004 -44.008614,168.824401999999992 -43.988334999999999,168.858582000000013 -43.976661999999997,168.866364000000004 -43.973328000000002,168.879669000000007 -43.964447,168.885254000000003 -43.959167,168.961914000000007 -43.90361,169.080765000000014 -43.848472999999998,169.142212 -43.794167000000002,169.224396000000013 -43.743332000000002,169.271636999999998 -43.722496,169.387482000000006 -43.679169000000002,169.491318000000007 -43.643467,169.539153999999996 -43.633614,169.62661700000001 -43.613892,169.64498900000001 -43.608893999999999,169.652771 -43.605559999999997,169.660521999999986 -43.601944000000003,169.721619000000004 -43.573334000000003,169.728302000000014 -43.568893000000003,169.739136000000002 -43.558052000000004,169.767486999999988 -43.522773999999998,169.790526999999997 -43.496665999999998,169.871062999999992 -43.406661999999997,169.884154999999993 -43.397781000000002,169.961638999999991 -43.371941,170.021911999999986 -43.352500999999997,170.028594999999996 -43.347777999999998,170.033874999999995 -43.342498999999997,170.038025000000005 -43.336112999999997,170.049408 -43.306946000000003,170.111358999999993 -43.254173000000002,170.288299999999992 -43.107779999999998,170.418029999999987 -43.052498,170.523041000000006 -43.010559,170.531921000000011 -43.008057,170.583037999999988 -42.990555,170.674347000000012 -42.958739999999999,170.704407000000003 -42.945830999999998,170.750549000000007 -42.924720999999998,170.781096999999988 -42.910553,170.794128 -42.901389999999999,171.065796000000006 -42.648055999999997,171.108306999999996 -42.608055,171.149719000000005 -42.563614,171.153594999999996 -42.55722,171.196075000000008 -42.476661999999997,171.225799999999992 -42.433608999999997,171.230255 -42.40889,171.235779000000008 -42.394165,171.247467 -42.375,171.260254000000003 -42.366112,171.270537999999988 -42.355003000000004,171.297760000000011 -42.310279999999999,171.304413000000011 -42.296669,171.309692000000013 -42.281944000000003,171.31665000000001 -42.249724999999998,171.321075000000008 -42.224716,171.322754000000003 -42.207222000000002,171.324401999999992 -42.18972,171.326355000000007 -42.172226000000002,171.329131999999987 -42.155830000000002,171.343841999999995 -42.110832000000002,171.361084000000005 -42.067779999999999,171.461638999999991 -41.859726000000002,171.51080300000001 -41.764449999999997,171.533051 -41.766396,171.557738999999998 -41.766663,171.569121999999993 -41.766112999999997,171.650817999999987 -41.761391000000003,171.663025000000005 -41.757781999999999,171.685790999999995 -41.746948000000003,171.790526999999997 -41.696387999999999,171.85522499999999 -41.652779000000002,171.886658000000011 -41.629997000000003,171.942200000000014 -41.550277999999999,172.02276599999999 -41.443053999999997,172.053864000000004 -41.417503000000004,172.064972000000012 -41.40361,172.122192000000013 -41.277779000000002,172.111633000000012 -41.236114999999998,172.10522499999999 -41.153053,172.106078999999994 -40.911385000000003,172.10635400000001 -40.893059,172.108856000000003 -40.885559,172.113861000000014 -40.879997000000003,172.186645999999996 -40.813332000000003,172.218567000000007 -40.785834999999999,172.22470100000001 -40.781109,172.255248999999992 -40.776947,172.263884999999988 -40.774169999999998,172.271362000000011 -40.770553999999997,172.299408 -40.755004999999997,172.348297000000002 -40.727493000000003,172.382721000000004 -40.698334000000003,172.426909999999992 -40.657775999999998,172.478302000000014 -40.613892,172.513320999999991 -40.598441999999999,172.517639000000003 -40.596783000000002,172.523482999999999 -40.597946,172.522644000000014 -40.602943000000003,172.521132999999992 -40.607277000000003,172.520813000000004 -40.625,172.519440000000003 -40.631385999999999,172.525542999999999 -40.6325,172.534149000000014 -40.631667999999998,172.571899000000002 -40.617775000000002,172.596343999999988 -40.601394999999997,172.62802099999999 -40.573891000000003,172.631621999999993 -40.567222999999998,172.631621999999993 -40.559998,172.608582000000013 -40.556946000000003,172.601348999999999 -40.558891000000003,172.597014999999999 -40.553333000000002,172.589690999999988 -40.558838000000002,172.583862000000011 -40.560004999999997,172.581024000000014 -40.556671,172.581848000000008 -40.551665999999997,172.589843999999999 -40.541172000000003,172.627166999999986 -40.511947999999997,172.633330999999998 -40.509171000000002,172.661376999999987 -40.502785000000003,172.712188999999995 -40.495552000000004,172.817748999999992 -40.504173000000002,172.861358999999993 -40.507781999999999,172.981628 -40.527222000000002,172.991332999999997 -40.529167,172.989959999999996 -40.53389,172.978026999999997 -40.53389,172.945251000000013 -40.530830000000002,172.895263999999997 -40.524445,172.797211000000004 -40.516112999999997,172.739959999999996 -40.516945,172.731628 -40.519722000000002,172.656921000000011 -40.653328000000002,172.701355000000007 -40.748336999999999,172.855804000000006 -40.853057999999997,172.865509000000003 -40.853057999999997,172.875244000000009 -40.851112,172.907195999999999 -40.828887999999999,172.930266999999986 -40.802222999999998,172.935241999999988 -40.796669,172.976623999999987 -40.781944000000003,172.985229000000004 -40.781112999999998,173.002196999999995 -40.786667,173.008330999999998 -40.791114999999998,173.013306 -40.796669,173.020537999999988 -40.809722999999998,173.051085999999998 -40.869446000000003,173.059692000000013 -40.962775999999998,173.059692000000013 -40.971938999999999,173.056091000000009 -40.978606999999997,173.031646999999992 -41.027495999999999,173.075806 -41.291114999999998,173.079680999999994 -41.297500999999997,173.085784999999987 -41.302222999999998,173.105529999999987 -41.313332000000003,173.168029999999987 -41.316108999999997,173.188873 -41.313332000000003,173.198853000000014 -41.311385999999999,173.207184000000012 -41.308608999999997,173.272217000000012 -41.274445,173.278320000000008 -41.269722000000002,173.32607999999999 -41.222496,173.340515000000011 -41.205832999999998,173.351623999999987 -41.195549,173.377166999999986 -41.178055,173.426085999999998 -41.150275999999998,173.598021999999986 -41.053612,173.606628 -41.052498,173.639709000000011 -41.073616,173.672760000000011 -41.070557,173.720519999999993 -41.060279999999999,173.727753000000007 -41.056389000000003,173.739959999999996 -41.047226000000002,173.744689999999991 -41.032501000000003,173.743286000000012 -41.024169999999998,173.738281 -41.018608,173.72744800000001 -41.019447,173.718841999999995 -41.022499000000003,173.696930000000009 -41.033614999999998,173.690796000000006 -41.038338000000003,173.682189999999991 -41.041114999999998,173.676085999999998 -41.036391999999999,173.673584000000005 -41.029167,173.674682999999987 -41.020836000000003,173.678314 -41.014449999999997,173.696625000000012 -41.000281999999999,173.751373 -40.976944000000003,173.800262000000004 -40.969161999999997,173.913299999999992 -40.931671,173.984679999999997 -40.896949999999997,173.994415000000004 -40.896667,174.02276599999999 -40.913055,174.027771 -40.91861,174.030272999999994 -40.925834999999999,174.03054800000001 -40.935271999999998,174.02941899999999 -40.943610999999997,174.022217000000012 -40.947220000000002,173.929961999999989 -40.992226000000002,173.832184000000012 -40.995002999999997,173.821075000000008 -40.994163999999998,173.782195999999999 -41.009171000000002,173.778594999999996 -41.015555999999997,173.769713999999993 -41.09861,173.778594999999996 -41.114449,173.794433999999995 -41.109444000000003,173.822204999999997 -41.080832999999998,173.821899000000002 -41.062218,173.836638999999991 -41.055,173.846343999999988 -41.053055,173.93081699999999 -41.049446000000003,173.946625000000012 -41.055832000000002,173.953033000000005 -41.060555,173.917755 -41.087502,173.887482000000006 -41.103332999999999,173.848846000000009 -41.144165,173.820526 -41.245834000000002,173.763306 -41.267502,173.76080300000001 -41.273055999999997,173.775817999999987 -41.289726000000002,173.788025000000005 -41.290557999999997,173.806365999999997 -41.289444000000003,174.03720100000001 -41.218330000000002,174.09970100000001 -41.198334000000003,174.128845000000013 -41.187218,174.133605999999986 -41.181671,174.133605999999986 -41.176108999999997,174.126068000000004 -41.174171,174.008605999999986 -41.175277999999999,174.001099000000011 -41.178885999999999,174.001373 -41.186385999999999,174.000274999999988 -41.194716999999997,173.993010999999996 -41.198334000000003,173.981902999999988 -41.199440000000003,173.932738999999998 -41.199997000000003,173.908324999999991 -41.199997000000003,173.899719000000005 -41.197495000000004,173.893585000000002 -41.192771999999998,173.887206999999989 -41.169724000000002,173.88580300000001 -41.161667,173.888031000000012 -41.154167,173.89776599999999 -41.133614,173.902466000000004 -41.128334000000002,174.032745000000006 -40.999724999999998,174.084411999999986 -41.021385000000002,174.094116000000014 -41.023330999999999,174.246338000000009 -41.044724000000002,174.258330999999998 -41.035277999999998,174.299408 -41.003616,174.315246999999999 -41.000557,174.323853000000014 -41.003334000000002,174.323853000000014 -41.010834000000003,174.321625000000012 -41.018059,174.209960999999993 -41.197495000000004,174.161376999999987 -41.225555,174.152771 -41.226661999999997,174.114685000000009 -41.231383999999998,174.052185000000009 -41.235000999999997,174.02664200000001 -41.236114999999998,174.053864000000004 -41.254173000000002,174.206359999999989 -41.269447,174.214966000000004 -41.266663,174.291655999999989 -41.238892,174.303588999999988 -41.229720999999998,174.320800999999989 -41.220275999999998,174.326904000000013 -41.222771000000002,174.288574000000011 -41.276947,174.249114999999989 -41.322502,174.241637999999995 -41.326110999999997,174.231902999999988 -41.328055999999997,174.208587999999992 -41.329445,174.193572999999986 -41.320281999999999,174.155243000000013 -41.305,174.148041000000006 -41.308608999999997,174.111633000000012 -41.336661999999997,174.052764999999994 -41.421112,174.049133000000012 -41.427779999999998,174.044433999999995 -41.442497000000003,174.045806999999996 -41.450836000000002,174.049988000000013 -41.466392999999997,174.063873 -41.493057,174.084136999999998 -41.526108,174.097473000000008 -41.519447,174.096069 -41.511116,174.100799999999992 -41.505561999999998,174.108306999999996 -41.509171000000002,174.114685000000009 -41.513893000000003,174.125792999999987 -41.523887999999999,174.151093000000003 -41.551392,174.176085999999998 -41.578612999999997,174.178864000000004 -41.586112999999997,174.179961999999989 -41.594444000000003,174.179137999999995 -41.602783000000002,174.174133000000012 -41.608336999999999,174.163299999999992 -41.618606999999997,174.157195999999999 -41.623328999999998,174.193024000000008 -41.685555,174.287749999999988 -41.734444000000003,174.291655999999989 -41.740836999999999,174.289153999999996 -41.748336999999999,174.283324999999991 -41.762222,174.236358999999993 -41.837218999999997,174.212188999999995 -41.865279999999998,174.201355000000007 -41.875557,174.184143000000006 -41.890555999999997,174.17804000000001 -41.895004,174.164703000000003 -41.90361,174.157195999999999 -41.907218999999998,174.143585000000002 -41.915832999999999,174.088561999999996 -41.957779000000002,174.009154999999993 -42.027495999999999,173.979674999999986 -42.061110999999997,173.965239999999994 -42.086945,173.959136999999998 -42.100838000000003,173.954407000000003 -42.115555,173.953307999999993 -42.123885999999999,173.953583000000009 -42.133330999999998,173.956359999999989 -42.166389000000002,173.933319000000012 -42.196944999999999,173.928314 -42.202499000000003,173.884154999999993 -42.243614,173.87802099999999 -42.248055,173.870513999999986 -42.251944999999999,173.86300700000001 -42.255561999999998,173.834686000000005 -42.271385000000002,173.801361000000014 -42.293059999999997,173.794983000000002 -42.297500999999997,173.568572999999986 -42.476944000000003,173.558593999999999 -42.487777999999999,173.541350999999992 -42.511947999999997,173.533874999999995 -42.525002,173.531372000000005 -42.532218999999998,173.500823999999994 -42.599724000000002,173.480804000000006 -42.621941,173.466063999999989 -42.656944000000003,173.459960999999993 -42.670836999999999,173.448853000000014 -42.690277000000002,173.387755999999996 -42.793616999999998,173.351623999999987 -42.840836000000003,173.328033000000005 -42.898887999999999,173.328033000000005 -42.906387000000002,173.325806 -42.913612,173.285521999999986 -42.958053999999997,173.106902999999988 -43.057777000000002,173.099396000000013 -43.061385999999999,173.090515000000011 -43.064444999999999,173.026366999999993 -43.081947,172.975799999999992 -43.09111,172.953033000000005 -43.092773,172.935516000000007 -43.098334999999999,172.92025799999999 -43.105834999999999,172.838012999999989 -43.148055999999997,172.818024000000008 -43.160828000000002,172.797760000000011 -43.183059999999998,172.772217000000012 -43.219718999999998,172.76080300000001 -43.239165999999997,172.758026 -43.246665999999998,172.726944000000003 -43.415539000000003,172.726593000000008 -43.423355,172.775817999999987 -43.612220999999998,172.894135000000006 -43.61972,172.90554800000001 -43.620834000000002,173.059692000000013 -43.653053,173.100525000000005 -43.697220000000002,173.105529999999987 -43.703612999999997,173.114409999999992 -43.741385999999999,173.116913000000011 -43.762504999999997,173.116913000000011 -43.769996999999996,173.112182999999987 -43.825004999999997,173.110779000000008 -43.833328000000002,173.091644000000002 -43.856392,173.058593999999999 -43.871108999999997,173.006088000000005 -43.869498999999998,173.002242999999993 -43.868999000000002,172.999236999999994 -43.865668999999997,172.990905999999995 -43.849670000000003,172.965239999999994 -43.802222999999998,172.961365 -43.764449999999997,172.958862000000011 -43.756950000000003,172.951355000000007 -43.755279999999999,172.939972000000012 -43.756110999999997,172.927185000000009 -43.766112999999997,172.921906000000007 -43.771667,172.920532000000009 -43.824173000000002,172.920532000000009 -43.833328000000002,172.917572000000007 -43.869221000000003,172.923584000000005 -43.875884999999997,172.931243999999992 -43.881390000000003,172.937408000000005 -43.887886000000002,172.938904000000008 -43.892384,172.938247999999987 -43.896220999999997,172.870789000000002 -43.904442000000003,172.861633000000012 -43.901389999999999,172.811919999999986 -43.882216999999997,172.804413000000011 -43.878334000000002,172.745789000000002 -43.837775999999998,172.740783999999991 -43.832222000000002,172.736908 -43.825836000000002,172.715239999999994 -43.808334000000002,172.642761000000007 -43.772224,172.513031000000012 -43.729438999999999,172.495238999999998 -43.723885000000003,172.483582000000013 -43.722771000000002,172.472197999999992 -43.72361,172.424988000000013 -43.733612,172.413299999999992 -43.743614,172.390258999999986 -43.763893000000003,172.384978999999987 -43.77861,172.382445999999987 -43.795006,172.383330999999998 -43.8125,172.384704999999997 -43.820838999999999,172.394713999999993 -43.850281000000003,172.393311000000011 -43.858612,172.386932000000002 -43.863334999999999,172.367461999999989 -43.867775000000002,172.297211000000004 -43.881110999999997,172.286925999999994 -43.883057,172.275542999999999 -43.883887999999999,172.189696999999995 -43.909163999999997,172.050812000000008 -43.965279000000002,171.978577 -43.995834000000002,171.955230999999998 -44.006667999999998,171.941070999999994 -44.015006999999997,171.782470999999987 -44.076949999999997,171.654694000000006 -44.122498,171.583587999999992 -44.153885000000002,171.547211000000004 -44.173889000000003,171.538483000000014 -44.178775999999999,171.355559999999997 -44.285491999999998,171.346465999999992 -44.292186999999998,171.342467999999997 -44.295555,171.319976999999994 -44.316391000000003,171.293578999999994 -44.343612999999998,171.285521999999986 -44.356392,171.278594999999996 -44.369995000000003,171.271911999999986 -44.383887999999999,171.269135000000006 -44.391112999999997,171.275542999999999 -44.395836000000003,171.279144000000002 -44.402495999999999,171.278594999999996 -44.420836999999999,171.277190999999988 -44.428885999999999,171.275542999999999 -44.437218,171.26998900000001 -44.451942000000003,171.263306 -44.465553,171.254974000000004 -44.478332999999999,171.214966000000004 -44.533057999999997,171.208313000000004 -44.537506,171.200531000000012 -44.541114999999998,171.196075000000008 -44.560279999999999,171.192200000000014 -44.645836000000003,171.193024000000008 -44.663330000000002,171.20495600000001 -44.700279000000002,171.21414200000001 -44.739165999999997,171.215239999999994 -44.747498,171.207184000000012 -44.851112,171.198577999999998 -44.919998,171.195800999999989 -44.927498,171.185241999999988 -44.938332000000003)))');
-INSERT INTO geoapp_country ("name", "mpoly") VALUES ('Texas', 'SRID=4326;MULTIPOLYGON (((-103.00243399999998 36.500397,-102.90421904194784 36.500393342967676,-102.8402359524855 36.500390960558398,-102.840235952479716 36.500390960558398,-102.840235952474345 36.500390960558398,-102.840235952468362 36.500390960558398,-102.840235952461725 36.500390960558398,-102.840235952455885 36.500390960558398,-102.792077446284736 36.500389167377229,-102.643207699865854 36.500383624214699,-102.366462330167067 36.500373319605465,-102.250452999999979 36.500368999999999,-102.24499 36.500703999999999,-102.162463000000002 36.500326,-102.12545 36.500323999999999,-102.124752896301885 36.500398159967887,-102.122066000000004 36.500684,-101.930244999999999 36.500526,-101.925344139375468 36.500484781341967,-101.914929315957153 36.500397187533892,-101.826564999999988 36.499653999999992,-101.826498 36.499535000000002,-101.81449312121488 36.499579719643286,-101.788110000000003 36.499678000000003,-101.783359000000004 36.499709000000003,-101.781987 36.499718,-101.780609999999982 36.499727,-101.779435000000007 36.499733999999997,-101.773235954788092 36.499732939140301,-101.709314000000006 36.499721999999998,-101.698684999999998 36.499507999999999,-101.653707999999995 36.499572999999998,-101.649966000000006 36.499572999999998,-101.623914999999997 36.499527999999998,-101.414793008557069 36.499417763984319,-101.392608849457574 36.499406069885133,-101.340061173170298 36.499378370041477,-101.085155999999984 36.499243999999997,-101.052418000000003 36.499562999999995,-101.04533099999999 36.499540000000003,-100.977087999999995 36.499594999999999,-100.936058000000003 36.499602000000003,-100.918513000000004 36.499620999999998,-100.884174000000002 36.499682,-100.884079999999997 36.499682,-100.859656999999984 36.499687000000002,-100.850840000000005 36.49969999999999,-100.824235999999999 36.499617999999998,-100.824218000000002 36.499617999999998,-100.80619 36.499673999999999,-100.806172000000004 36.499634,-100.802909 36.499620999999998,-100.802886 36.499620999999998,-100.761810999999994 36.499617999999998,-100.761810999999994 36.499580000000002,-100.724361999999999 36.499580000000002,-100.724361000000002 36.499558,-100.708625999999995 36.499552999999999,-100.708628000000004 36.499520999999994,-100.657762999999989 36.499482999999991,-100.657762999999989 36.499499999999998,-100.648342999999997 36.499495000000003,-100.648343999999994 36.499462999999999,-100.592613999999998 36.499468999999998,-100.592555999999988 36.499468999999998,-100.592551 36.499428999999999,-100.583539000000002 36.499482999999991,-100.583378999999994 36.499442999999999,-100.578113999999999 36.499462999999999,-100.578113999999999 36.499439000000002,-100.546144999999996 36.499343000000003,-100.531215000000003 36.499341,-100.531215000000003 36.499290000000002,-100.530478000000002 36.49924,-100.530314000000004 36.499357000000003,-100.522227 36.499290999999999,-100.441064999999995 36.499490000000002,-100.441063999999997 36.499462,-100.433959000000002 36.499456000000002,-100.421327999999988 36.499447000000004,-100.421300999999985 36.499487999999999,-100.413634000000002 36.499443999999997,-100.41355 36.499468999999998,-100.378634000000005 36.499516999999997,-100.378591999999998 36.499445,-100.35185199999998 36.499487000000002,-100.351841999999991 36.499473000000002,-100.334463999999997 36.49942,-100.334440999999998 36.49944,-100.324150000000003 36.499679,-100.311244999999985 36.499631,-100.311018000000004 36.499687999999999,-100.310642999999985 36.499642,-100.253572851827684 36.499638031344489,-100.181220999999994 36.499633000000003,-100.090020999999993 36.499634,-100.000405999999984 36.499701999999999,-100.0004059967807 36.499497793115623,-100.00040222345956 36.260147946939995,-100.000399000000002 36.055677000000003,-100.000396170268971 35.879197994164429,-100.000394020347557 35.745115995014778,-100.000391999999991 35.619115,-100.000390396259149 35.519130234823749,-100.000386875554753 35.299632926398459,-100.000386874882437 35.299591010324292,-100.000386852473085 35.298193905884737,-100.000384999999994 35.182701999999999,-100.000381972929958 34.852568985943549,-100.000381605014198 34.812443999872983,-100.000381000000004 34.746460999999996,-100.000381000000004 34.570853999999997,-100.000381000000004 34.570647,-100.000381000000004 34.560509000000003,-99.998254592787575 34.560446149085699,-99.997501461048799 34.560423888524269,-99.985833 34.560079000000002,-99.974761999999998 34.561317999999993,-99.971554999999995 34.562179,-99.965608000000003 34.565843999999998,-99.958898000000005 34.571271000000003,-99.957540999999992 34.572708999999996,-99.95755299999999 34.574168999999998,-99.956716999999998 34.576523999999992,-99.954566999999997 34.578195,-99.94571999999998 34.579273,-99.930492488760507 34.576894921075187,-99.930189904388058 34.576847666503667,-99.929333999999997 34.576714000000003,-99.923210999999995 34.574551999999997,-99.921801000000002 34.570253,-99.915771000000007 34.565975000000002,-99.914151070156151 34.564995899308187,-99.898943000000003 34.555804000000002,-99.896006999999997 34.555529999999997,-99.89376 34.554219000000003,-99.887146999999999 34.549047000000002,-99.885392392967745 34.547401436342639,-99.884583851343237 34.546643143067669,-99.87806651563541 34.540530839522475,-99.87650823800611 34.539069404005723,-99.874403 34.537095,-99.873254000000003 34.535350999999999,-99.872356999999994 34.532096000000003,-99.868953000000005 34.52761499999999,-99.867217250163094 34.525864500605081,-99.853065999999998 34.511592999999998,-99.832903999999985 34.500067999999999,-99.825324999999992 34.497596,-99.818185999999997 34.487839999999991,-99.818738999999979 34.484975999999996,-99.814544624457952 34.476663062301249,-99.814312999999984 34.476204000000003,-99.793683999999999 34.453893999999998,-99.783787954821193 34.445078397966533,-99.782985999999994 34.444364,-99.775743000000006 34.444225000000003,-99.774224411180043 34.443216449834381,-99.765598999999995 34.437488000000002,-99.764825999999999 34.436433999999998,-99.764881999999986 34.435265999999999,-99.767647999999994 34.431854,-99.767234000000002 34.430501999999997,-99.754248000000004 34.421288999999994,-99.740907000000007 34.414763,-99.735679661059166 34.413018903486261,-99.730348000000006 34.411239999999992,-99.720258999999999 34.406295,-99.719721039768913 34.405807854123296,-99.716415999999995 34.402814999999997,-99.715089000000006 34.400753999999999,-99.714231999999996 34.397821999999998,-99.714838 34.394523999999997,-99.712682 34.390928000000002,-99.707900999999993 34.387538999999997,-99.696461999999997 34.381036000000002,-99.678282999999979 34.379798999999998,-99.672337448339604 34.378003970284972,-99.671377000000007 34.377713999999997,-99.666676988468737 34.374633899592595,-99.665992000000003 34.374184999999997,-99.665404581506792 34.374094751646162,-99.662705000000003 34.373679999999993,-99.659863615570984 34.374283464835351,-99.659362000000002 34.374389999999998,-99.654194000000004 34.376519000000002,-99.649662000000006 34.379885000000002,-99.630904999999998 34.376007,-99.628541546335526 34.375150829397036,-99.624196999999995 34.373576999999997,-99.600026 34.374687999999999,-99.596322999999998 34.377136999999998,-99.587595999999991 34.385866999999998,-99.587235087741874 34.386377538370702,-99.585718954359294 34.388522226586467,-99.585441999999986 34.388914,-99.584530999999984 34.391204999999999,-99.585306000000003 34.398122,-99.584479999999985 34.407673000000003,-99.580059999999989 34.416652999999997,-99.574366999999995 34.418281,-99.569695999999993 34.418418000000003,-99.563067665646059 34.417445690943012,-99.562203999999994 34.417318999999999,-99.561530791054494 34.417028950664999,-99.555986000000004 34.414639999999999,-99.549242000000007 34.412714999999992,-99.529786 34.411451999999997,-99.528744576810823 34.411579971493573,-99.523649999999989 34.412205999999998,-99.517623999999998 34.414493999999991,-99.514279999999999 34.414034999999998,-99.499874999999989 34.409607999999999,-99.497090999999983 34.407730999999991,-99.494103999999993 34.404755000000002,-99.490425999999999 34.399693999999997,-99.487218999999982 34.397955000000003,-99.477547 34.396355,-99.477019613816751 34.396364300212412,-99.474810232095294 34.396403261641368,-99.472297823530695 34.396447566809115,-99.470968999999997 34.396470999999991,-99.463286816319666 34.393024688790533,-99.452647999999996 34.388252,-99.445020999999983 34.379891999999998,-99.440759999999997 34.374122999999997,-99.430994999999982 34.373413999999997,-99.43081720973791 34.373532661492725,-99.420432000000005 34.380464000000003,-99.408847999999992 34.372776000000002,-99.407167999999999 34.372605,-99.406018176721332 34.372844364351735,-99.404336527339453 34.373194441551952,-99.402959999999979 34.373480999999998,-99.399602999999999 34.375078999999999,-99.397253000000006 34.377870999999999,-99.396160718377317 34.383134276834824,-99.391492 34.405631,-99.393918999999997 34.415273999999989,-99.396488000000005 34.417290999999999,-99.396901999999997 34.418688000000003,-99.397009999999995 34.424002999999999,-99.395768462359129 34.43494110377263,-99.394955999999993 34.442098999999999,-99.381011 34.456935999999999,-99.376037841709419 34.458617501802458,-99.375365000000002 34.458844999999997,-99.369609999999994 34.458699000000003,-99.358795 34.455862999999994,-99.354671999999994 34.451856999999997,-99.35478257092818 34.450383391084422,-99.354837000000003 34.449657999999999,-99.356770999999995 34.446542,-99.357101999999998 34.444915000000002,-99.356712999999999 34.442143999999999,-99.350407000000004 34.437083,-99.342020261837703 34.431514649700844,-99.341336999999996 34.431061,-99.341016600261696 34.430906286427735,-99.334036999999995 34.427536000000003,-99.331050066208874 34.424666026137302,-99.328674000000007 34.422383000000004,-99.325094009617374 34.416010263301388,-99.324222000000006 34.414458000000003,-99.321411663781888 34.411055277053073,-99.319798627189357 34.409102230797522,-99.319605999999979 34.408869000000003,-99.318363000000005 34.408295999999993,-99.316372999999999 34.408204999999995,-99.308273999999997 34.410013999999997,-99.299098 34.414227999999994,-99.294647999999981 34.415373000000002,-99.289922000000004 34.414731000000003,-99.287844819286008 34.413958196831629,-99.264167 34.405149000000002,-99.261320999999981 34.403498999999996,-99.261255940568432 34.403158389836314,-99.260996786434447 34.401801622187399,-99.259199386422964 34.392391568987605,-99.258998120407611 34.391337867029385,-99.258979999999994 34.391243000000003,-99.259239630132384 34.391043961974496,-99.260703756811225 34.389921531074158,-99.261190999999997 34.389547999999998,-99.262646013804954 34.388906249865343,-99.264243556741917 34.388201635660714,-99.264508000000006 34.388084999999997,-99.271031915197597 34.387722560266795,-99.271781628057255 34.38768090955238,-99.273607516746409 34.387579471291865,-99.273957999999993 34.38756,-99.27534 34.386598999999997,-99.274925999999994 34.384903999999999,-99.271845396288441 34.382114976063626,-99.271280999999988 34.381603999999996,-99.258696 34.372633999999998,-99.254722 34.372405,-99.251407999999984 34.375079999999997,-99.248969000000002 34.375984000000003,-99.242944999999992 34.372667999999997,-99.239138083830497 34.366035888164781,-99.237232999999989 34.362716999999996,-99.237183660287812 34.362563767173611,-99.235448627455725 34.357175329079247,-99.234251999999984 34.353459,-99.233273999999994 34.344101000000002,-99.23260599999999 34.342379999999999,-99.229993999999991 34.340538000000002,-99.226152999999982 34.339725999999999,-99.221975 34.340020000000003,-99.219768999999999 34.341377,-99.217335000000006 34.341520000000003,-99.213134999999994 34.340369000000003,-99.210957832415772 34.336710386428308,-99.210716000000005 34.336303999999998,-99.20972399999998 34.324934999999996,-99.211600000000004 34.313969999999998,-99.213476 34.310671999999997,-99.213233598142949 34.308226764636807,-99.211647999999997 34.292231999999991,-99.211468055040228 34.291676209875057,-99.209990337717599 34.287112032604114,-99.209742000000006 34.286344999999997,-99.209514950796304 34.286049346749877,-99.207560999999998 34.283504999999998,-99.203681000000003 34.281925999999999,-99.200221999999997 34.281151999999999,-99.196259999999995 34.281463000000002,-99.196052113016066 34.281264951942028,-99.19571031750732 34.280939333014615,-99.195605 34.280839,-99.194569999999985 34.272424,-99.196926000000005 34.260928999999997,-99.197153 34.244298,-99.19555299999999 34.24006,-99.191138999999993 34.23234,-99.190145999999984 34.229660000000003,-99.190036000000006 34.227186000000003,-99.192076 34.222192,-99.192683000000002 34.218825000000002,-99.192104 34.216693999999997,-99.189758414718312 34.214539281858485,-99.189510999999996 34.214312,-99.188483307800709 34.214128939694163,-99.159015999999994 34.20888,-99.143985 34.214762999999998,-99.138220000000004 34.219158999999998,-99.130609000000007 34.219408,-99.128513999999996 34.218766000000002,-99.127549000000002 34.217986000000003,-99.126614000000004 34.21532899999999,-99.127525000000006 34.213771,-99.130089999999996 34.212192000000002,-99.131552999999997 34.209352000000003,-99.131884999999997 34.207382000000003,-99.129791999999995 34.204402999999999,-99.126566999999994 34.203004,-99.119203999999996 34.201746999999997,-99.108757999999995 34.203400999999999,-99.102001344898341 34.205813362825268,-99.092190999999985 34.209316,-99.08119261238302 34.211229594305671,-99.079534999999993 34.211517999999991,-99.075978000000006 34.211221000000002,-99.06646499999998 34.208404000000002,-99.060343999999986 34.204760999999991,-99.059158999999994 34.202928999999997,-99.058800000000005 34.201256,-99.058083999999994 34.200569000000002,-99.048792000000006 34.198208999999999,-99.043470999999997 34.198208,-99.040961999999993 34.200842000000002,-99.039004000000006 34.204667,-99.037458999999998 34.206454,-99.036272999999994 34.206912000000003,-99.013074999999986 34.203221999999997,-99.005790000000005 34.206646999999997,-99.002916243275195 34.208781598893673,-99.002945441244265 34.209102775846141,-99.003147197273819 34.211322087284138,-99.003432988816769 34.214465787333673,-99.000760999999997 34.217643000000002,-98.99085199999999 34.221632999999997,-98.987293999999991 34.221223000000002,-98.981363999999999 34.217582999999991,-98.978684999999984 34.210231,-98.976586999999995 34.206291,-98.974131999999983 34.203566000000002,-98.969003 34.201298999999999,-98.966301999999999 34.201323000000002,-98.962469999999996 34.204667999999998,-98.962085000000002 34.206386000000002,-98.962306999999981 34.211312,-98.960791 34.213029999999996,-98.958474999999993 34.213854999999995,-98.952512999999982 34.212649999999996,-98.950395999999984 34.21168,-98.940219999999997 34.203685999999998,-98.928145 34.192689,-98.927456000000006 34.191155000000002,-98.923128999999989 34.185977999999999,-98.920704 34.183435000000003,-98.918333000000004 34.181831000000003,-98.909348999999992 34.177498999999997,-98.892677318093561 34.17250349095427,-98.87651287834953 34.167659972141138,-98.872921999999988 34.166584,-98.871543000000003 34.165026999999995,-98.871211000000002 34.163012000000002,-98.872229000000004 34.160446,-98.874954999999986 34.157031000000003,-98.874871999999996 34.155656999999998,-98.873271000000003 34.153596,-98.868116 34.149635000000004,-98.862549999999999 34.149110999999998,-98.860124999999996 34.149912999999998,-98.858418999999998 34.152732,-98.8579 34.159627,-98.857321999999982 34.161093999999999,-98.855585000000005 34.161620999999997,-98.854264541670545 34.16164976192438,-98.831114999999983 34.162154,-98.812953999999991 34.158444000000003,-98.806809999999984 34.155901,-98.804411553093104 34.153928907629435,-98.792015000000006 34.143735999999997,-98.779288744496085 34.140194111533035,-98.773070373738221 34.138463455122455,-98.767587610783494 34.136937528280072,-98.765569999999983 34.136375999999998,-98.764702233233265 34.135780085954792,-98.763778343962841 34.135145631382905,-98.761796999999987 34.133785000000003,-98.760558000000003 34.132387999999999,-98.759485999999995 34.128881999999997,-98.759653 34.126911999999997,-98.757118934362524 34.12470437936247,-98.757036999999983 34.124633000000003,-98.753813984496389 34.124468645349353,-98.749290999999999 34.124237999999998,-98.741966000000005 34.125529999999998,-98.740191287161664 34.126850584722824,-98.739461000000006 34.127394000000002,-98.737231999999992 34.130991999999999,-98.736819999999994 34.133374000000003,-98.735471000000004 34.135207999999999,-98.734286999999995 34.135758000000003,-98.730242646678789 34.1359250861193,-98.717536999999993 34.136450000000004,-98.716104 34.135947000000002,-98.70640034274598 34.134745066348501,-98.696517999999998 34.133521000000002,-98.690291400890658 34.133167457450512,-98.690072 34.133155000000002,-98.688275858887323 34.134465065675442,-98.685589983550884 34.136424083851644,-98.676900633591032 34.14276190388366,-98.676457484208683 34.143085127260051,-98.670573548505118 34.147376740066704,-98.655654999999982 34.158257999999996,-98.650582999999997 34.163113000000003,-98.648072999999997 34.164440999999997,-98.643223000000006 34.164530999999997,-98.635729999999995 34.161617999999997,-98.634085211037615 34.161100728840964,-98.630950281399748 34.160114822001631,-98.621666000000005 34.157195000000002,-98.620507214282355 34.157012478916968,-98.617663812339856 34.156564612849806,-98.616732999999996 34.156418000000002,-98.615748434938936 34.156446107485429,-98.612133570686254 34.156549305078279,-98.611829 34.156557999999997,-98.610173632571488 34.157093658210222,-98.610154152422197 34.157099961766605,-98.608852999999996 34.157521000000003,-98.603977999999998 34.160249,-98.599789 34.160570999999997,-98.577135999999996 34.148961999999997,-98.572451 34.145091,-98.560191000000003 34.133201999999997,-98.558593000000002 34.128253999999998,-98.550916999999998 34.119334000000002,-98.536257000000006 34.107343,-98.530610999999993 34.099843,-98.528199999999998 34.094960999999998,-98.504182 34.072370999999997,-98.487068052145446 34.063003092954936,-98.486783271268621 34.06284720836274,-98.486328 34.062598,-98.483944186894661 34.06241565608709,-98.482821069121968 34.062329745958955,-98.482039999999998 34.062269999999998,-98.475065999999998 34.064269000000003,-98.449033999999983 34.073461999999999,-98.446378999999993 34.075429999999997,-98.445784000000003 34.076827000000002,-98.445590305319797 34.079232123390703,-98.445584999999994 34.079298,-98.445259148452962 34.079797720749731,-98.443724000000003 34.082152,-98.442807999999999 34.083143999999997,-98.442148160210323 34.083427517317581,-98.441104460406791 34.083875970068213,-98.440092000000007 34.084311,-98.439068026005657 34.084479541105658,-98.434822808733685 34.08517828308225,-98.432126999999994 34.085622,-98.43151641213494 34.085605425226575,-98.43092946822253 34.085589492282431,-98.428479999999993 34.085523000000002,-98.425229999999999 34.084798999999997,-98.422252999999998 34.083036999999997,-98.419995 34.082487999999998,-98.419161945519861 34.082694545588339,-98.41804644206556 34.082971120917755,-98.417812999999995 34.083029000000003,-98.414426000000006 34.085073999999999,-98.400747497198822 34.098985940284976,-98.399776999999986 34.099972999999999,-98.398505572550647 34.104180252359392,-98.39838899999998 34.104565999999998,-98.398160000000004 34.121395999999997,-98.400493999999995 34.121777999999999,-98.400966999999994 34.122236,-98.398441000000005 34.128456,-98.384381000000005 34.146317000000003,-98.381237999999996 34.149453999999999,-98.367493999999994 34.156190999999993,-98.366862955318183 34.156357896864854,-98.364023000000003 34.157108999999998,-98.34173552164826 34.153594120579292,-98.339428832109121 34.153230340726623,-98.331172907733077 34.151928328079421,-98.326986688030772 34.151268134169193,-98.325445000000002 34.151024999999997,-98.324621914768684 34.150650086831803,-98.323612587945547 34.150190341106089,-98.322580000000002 34.149720000000002,-98.320651676675396 34.148059023851737,-98.318749999999994 34.146420999999997,-98.315432139066189 34.144301906683673,-98.312023538956254 34.142124858924547,-98.300208999999995 34.134579000000002,-98.299345719035045 34.134365643147696,-98.29862570169189 34.134187693395319,-98.293901000000005 34.133020000000002,-98.280321 34.130749999999999,-98.258217018239392 34.129574098564007,-98.256467 34.129480999999998,-98.254901718278489 34.129708262798985,-98.247953999999993 34.13071699999999,-98.241012999999995 34.133102999999998,-98.225282000000007 34.127245000000002,-98.223600000000005 34.125093,-98.216463000000005 34.121820999999997,-98.203710999999998 34.117676000000003,-98.200074999999998 34.116782999999998,-98.191455000000005 34.115752999999998,-98.169120000000007 34.114170999999999,-98.157411999999994 34.120466999999998,-98.154353999999998 34.122734,-98.142753999999996 34.136358999999999,-98.136769999999999 34.144992000000002,-98.130815999999996 34.150531999999998,-98.123377000000005 34.154539999999997,-98.114506000000006 34.154727,-98.109461999999979 34.154110999999993,-98.107064999999992 34.152531000000003,-98.101937000000007 34.146829999999994,-98.092021474678845 34.132735952269094,-98.090223999999992 34.130181,-98.089754999999982 34.128211,-98.090659999999986 34.12198,-98.092421000000002 34.116917,-98.095117999999999 34.11119,-98.096177285423778 34.109455137055363,-98.096466125075011 34.108982084942461,-98.099327999999986 34.104295,-98.101378023037029 34.101786489578267,-98.103538246996251 34.099143131812454,-98.104308999999986 34.098199999999999,-98.119416999999999 34.084474,-98.121038999999996 34.081265999999999,-98.120207999999991 34.072127000000002,-98.11802999999999 34.067064999999999,-98.114587 34.06228,-98.100919767943822 34.050244792175462,-98.099096110217346 34.048638900093685,-98.096177018664264 34.044625138601674,-98.096541898037387 34.040976263553816,-98.09727167092565 34.038969381040054,-98.097731364247636 34.038509687718062,-98.098001443813914 34.038239608151798,-98.102015208841422 34.03732738850595,-98.104022094890695 34.036232725638037,-98.104083244997014 34.036133356900422,-98.105481647738245 34.033860956680144,-98.105481647738245 34.032444902147553,-98.105481647738245 34.031306746267951,-98.103616999999986 34.029206999999992,-98.088202999999993 34.005481000000003,-98.085260000000005 34.003259,-98.082839000000007 34.002412,-98.055197000000007 33.995840999999999,-98.050169864666017 33.994989457544634,-98.041117 33.993456000000002,-98.027671999999981 33.993357000000003,-98.019485000000003 33.993803999999997,-98.018481521828946 33.993960861546498,-98.005667000000003 33.995964,-97.987387999999996 33.999822999999999,-97.982805999999997 34.001949000000003,-97.978243000000006 34.005386999999999,-97.974597608872358 34.00657735007583,-97.974172999999993 34.006715999999997,-97.973934144800623 34.006593661859519,-97.971670000000003 34.005434,-97.968339999999998 34.000529999999998,-97.965354903485249 33.996992503283089,-97.963375425210828 33.994646717187933,-97.96302799999998 33.994235000000003,-97.962715090700769 33.994009516348072,-97.958325000000002 33.990845999999998,-97.955849999999998 33.990136,-97.952687999999995 33.990113999999998,-97.947571999999994 33.991053,-97.946472999999997 33.990731999999994,-97.945729999999998 33.989839000000003,-97.945949999999982 33.988395999999995,-97.952184120103468 33.971402949359636,-97.95307606469359 33.968971674482539,-97.95691699999999 33.958502000000003,-97.960351000000003 33.951928000000002,-97.965737000000004 33.947392,-97.972662 33.944527,-97.974172999999993 33.942832000000003,-97.974062000000004 33.940289,-97.972493999999998 33.937907000000003,-97.971175000000002 33.937128999999999,-97.965952999999999 33.936191,-97.963425 33.936236999999998,-97.955511 33.938186000000002,-97.954466999999994 33.937773999999997,-97.953395 33.936444999999999,-97.952679000000003 33.929482,-97.953694999999996 33.924373000000003,-97.957155 33.914453999999999,-97.960615000000004 33.910353999999998,-97.961188664141474 33.909913087050903,-97.963139679674441 33.908413554571595,-97.964461 33.907398,-97.964803587866868 33.907309441163022,-97.9693952279504 33.906122503898267,-97.969873000000007 33.905999,-97.970298415583201 33.906261144464871,-97.973142999999993 33.908014,-97.976962999999998 33.912548999999999,-97.978803999999997 33.912548,-97.979984999999999 33.911402000000002,-97.983551999999989 33.904001999999991,-97.984539999999996 33.900703,-97.984566 33.899076999999998,-97.984416725907181 33.89872544733722,-97.984025057628415 33.897803036597892,-97.98383498894799 33.897355409354304,-97.983768999999995 33.897199999999991,-97.977858999999995 33.889929000000002,-97.974177999999995 33.886642999999999,-97.967776999999998 33.882429999999999,-97.958438 33.879179,-97.951215000000005 33.878424000000003,-97.946463999999992 33.878883000000002,-97.942729999999997 33.879845000000003,-97.938801999999995 33.879891,-97.936743000000007 33.879204,-97.933120450042608 33.877388671138185,-97.918328311832767 33.869976048610916,-97.905467000000002 33.863530999999995,-97.896737999999985 33.857984999999999,-97.877386999999999 33.850236000000002,-97.871447000000003 33.849001,-97.865764999999982 33.849392999999999,-97.835425213046037 33.857383352392631,-97.834333 33.857671000000003,-97.833886750888084 33.857971936447115,-97.833218553718808 33.858422547723912,-97.806802470257153 33.876236728393856,-97.805423000000005 33.877167,-97.803472999999997 33.880189999999999,-97.801578000000006 33.885137999999998,-97.784656999999982 33.890631999999997,-97.78061799999999 33.895533,-97.779683000000006 33.899242999999998,-97.780339999999995 33.904833000000004,-97.783716999999996 33.910559999999997,-97.772672 33.914382000000003,-97.765445999999997 33.913531999999989,-97.763769999999994 33.914240999999997,-97.762914903547767 33.914953098088951,-97.761142192227695 33.916429357685161,-97.760223999999994 33.917194000000002,-97.759399000000002 33.91881999999999,-97.759833999999984 33.92521,-97.762660999999994 33.930846000000003,-97.762767999999994 33.934396,-97.752956999999995 33.937049000000002,-97.738478 33.937421,-97.736553999999998 33.936574999999998,-97.735919542935619 33.936533987763056,-97.734773489745407 33.936459905200778,-97.733722999999998 33.936391999999998,-97.732266999999993 33.936691000000003,-97.725289000000004 33.941045000000003,-97.720699142354164 33.94461309292862,-97.716772000000006 33.947665999999998,-97.714693355370301 33.94981590741822,-97.712051708440285 33.952548118711093,-97.709683999999996 33.954996999999999,-97.708350195107343 33.95701014009046,-97.70415899999999 33.963335999999998,-97.69792099999998 33.977331,-97.69310999999999 33.983699,-97.688023 33.986606999999999,-97.671772000000004 33.991370000000003,-97.661489000000003 33.990817999999997,-97.656210000000002 33.989488,-97.633778000000007 33.981256999999999,-97.609091000000006 33.968093000000003,-97.589597999999995 33.953553999999997,-97.588828000000007 33.951881999999998,-97.591270649549756 33.930345579062646,-97.591514000000004 33.928199999999997,-97.595084 33.922953999999997,-97.596154999999996 33.922105999999999,-97.59697899999999 33.920228000000002,-97.597115000000002 33.917867999999999,-97.596955673755872 33.917077348335745,-97.596288999999985 33.913769000000002,-97.593782375104212 33.910260437761373,-97.589253999999997 33.903922,-97.587440999999984 33.902479,-97.582744000000005 33.900784999999999,-97.578907598302408 33.900207204108142,-97.558269999999993 33.897098999999997,-97.555002000000002 33.897281999999997,-97.551541 33.897947000000002,-97.543245999999996 33.901288999999998,-97.533617322522971 33.906127586572126,-97.532723000000004 33.906576999999999,-97.525277000000003 33.911750999999995,-97.519170999999986 33.913637999999999,-97.504870374844515 33.918353570482601,-97.500960000000006 33.919643,-97.495648860558163 33.919307898609453,-97.494857999999979 33.919257999999999,-97.492061582842766 33.918500058129531,-97.487115891787269 33.917159576320657,-97.48650499999998 33.916993999999995,-97.484158940985964 33.915822631562747,-97.460375999999982 33.903948,-97.458068999999995 33.901634999999999,-97.451065249608234 33.891558064966901,-97.450953999999996 33.891398000000002,-97.451469000000003 33.87093,-97.452287410342421 33.86882620086994,-97.455665873415143 33.860141550511862,-97.457616999999999 33.855125999999998,-97.459565999999995 33.853316,-97.461485999999994 33.849559999999997,-97.462857 33.841771999999999,-97.459067999999988 33.834581,-97.453056999999987 33.828536,-97.444192999999999 33.823773000000003,-97.426492999999994 33.819398,-97.410387 33.818845000000003,-97.403235695189224 33.818961304668854,-97.384901622687948 33.819259479377855,-97.372940999999997 33.819454,-97.368744000000007 33.821471000000003,-97.365506999999994 33.823762999999992,-97.358512999999988 33.830018000000003,-97.348337999999984 33.843876000000002,-97.340900078515631 33.860236176367188,-97.339391593410966 33.867629740388111,-97.337846311291798 33.870430566802547,-97.336524008254173 33.872827243260353,-97.33293952159849 33.874440259476913,-97.329175814777756 33.874440259476913,-97.327562805507441 33.873902588562437,-97.326564370247013 33.872737756024428,-97.326487449786001 33.872648016149064,-97.324157539016809 33.866016724171544,-97.322365295688968 33.864941382342593,-97.318243141591921 33.865120602507631,-97.31654836796514 33.865642075591225,-97.315913230822716 33.865837504006514,-97.314412999999988 33.866988999999997,-97.310479256695203 33.873361218982971,-97.307489695517361 33.878203969770759,-97.302471419756401 33.880175433263638,-97.299245387323282 33.880175433263638,-97.295170524880618 33.877119286431629,-97.294227111562321 33.876411726442917,-97.286921603026471 33.869423850720118,-97.28598279642199 33.868525862052032,-97.284253187903744 33.867526845294535,-97.279107999999979 33.864555000000003,-97.275347999999994 33.863225,-97.271531999999993 33.862560000000002,-97.257971626565464 33.863220416657512,-97.256624999999985 33.863286000000002,-97.255635999999996 33.863697999999999,-97.254234999999994 33.865322999999997,-97.249208999999993 33.875100999999994,-97.246418496348156 33.898356425448434,-97.246179999999981 33.900343999999997,-97.245398270620598 33.902084836575838,-97.245057441245748 33.90284383100218,-97.244945999999999 33.903092,-97.242092 33.906277000000003,-97.241794392023195 33.906436890220043,-97.238755934556053 33.908069304909361,-97.226522000000003 33.914642,-97.210920999999999 33.916063999999999,-97.210512235443105 33.915911440173737,-97.206141000000002 33.914279999999998,-97.185457999999997 33.9007,-97.180845000000005 33.895203999999993,-97.179608999999999 33.892249999999997,-97.170773789281327 33.861660975771436,-97.166629 33.847310999999998,-97.166824000000005 33.840395,-97.171627 33.835335,-97.180939422624874 33.831550006302521,-97.181369999999987 33.831375,-97.186254000000005 33.830894,-97.193690000000004 33.831307000000002,-97.195830999999998 33.830803000000003,-97.197477000000006 33.829794999999997,-97.199700000000007 33.827322000000002,-97.203513999999998 33.821824999999997,-97.204994999999997 33.81886999999999,-97.205652 33.809823999999999,-97.205556910941183 33.806237292333442,-97.205445103342427 33.802019970418343,-97.205431000000004 33.801487999999999,-97.205114487332324 33.800890302957832,-97.203236000000004 33.797342999999998,-97.194785999999993 33.785344000000002,-97.190397000000004 33.781153000000003,-97.187792000000002 33.769702000000002,-97.181842999999986 33.755869999999994,-97.173532726140948 33.740090726508434,-97.172577000695028 33.738276026602087,-97.172191999999995 33.737544999999997,-97.168438536634085 33.734131892706188,-97.163454368039083 33.729599677915004,-97.163149000000004 33.729322000000003,-97.162807288850388 33.729115696596551,-97.155066000000005 33.724442000000003,-97.152609597300682 33.723370138808036,-97.150103410774264 33.72227655424301,-97.149393999999987 33.721966999999999,-97.137529999999998 33.718663999999997,-97.126102000000003 33.716940999999998,-97.121101999999993 33.717174,-97.119522126797463 33.717502594273334,-97.114921749218269 33.718459416457094,-97.113264999999998 33.718803999999999,-97.112398501853761 33.719102240295193,-97.110065570752283 33.719905212653977,-97.108936 33.720294000000003,-97.108097026518521 33.720734123472262,-97.106518853348803 33.721562029324609,-97.104524999999995 33.722608,-97.097154000000003 33.727809,-97.094085000000007 33.730992,-97.092697209381924 33.732891057656268,-97.092130098039192 33.733667094850453,-97.091071999999983 33.735115,-97.089936943375889 33.737167271747261,-97.087911027802278 33.740830286618703,-97.086195000000004 33.743932999999998,-97.084820762198987 33.752363244406453,-97.084693 33.753146999999998,-97.08461299999999 33.759993,-97.085217999999998 33.765512,-97.087362453285593 33.77250304797397,-97.087851999999998 33.774099,-97.093101265647221 33.787040841586602,-97.093917000000005 33.789051999999998,-97.094675961767678 33.791977368936216,-97.095047178759813 33.793408200769441,-97.095235999999986 33.794136000000002,-97.095080023591905 33.79561056406444,-97.094877682854474 33.797523445530629,-97.094770999999994 33.798532000000002,-97.093897185962049 33.800360798466031,-97.09266432242093 33.802941048788071,-97.092111999999986 33.804096999999999,-97.087998999999982 33.808746999999997,-97.078589999999991 33.812755999999993,-97.067977124183287 33.814475679891196,-97.064604445188394 33.815487484896828,-97.062631847535258 33.816079264957295,-97.058622892638837 33.818751903281317,-97.055415722506638 33.823829921794093,-97.055412197115942 33.8238546000754,-97.055148464371385 33.82570077017467,-97.055682980641905 33.830778788687446,-97.057821087157734 33.834520485448607,-97.058282726048489 33.836367011192308,-97.058622892638837 33.837727655580807,-97.057553829022481 33.840133030590344,-97.055415722506638 33.841202089027483,-97.052208542016004 33.841736615656437,-97.048734113748537 33.840934820533782,-97.045339940802535 33.839496399893775,-97.041245000000004 33.837761,-97.038858000000005 33.838264000000002,-97.023899 33.844213000000003,-97.017857000000006 33.850141999999998,-97.010381749407998 33.858564100233409,-96.999664164722446 33.87063922351804,-96.985567000000003 33.886521999999999,-96.983970999999997 33.892082999999992,-96.984938999999997 33.904865999999991,-96.985275905099471 33.906070041818985,-96.988744999999994 33.918467999999997,-96.993996999999979 33.928978999999998,-96.995022999999989 33.932034999999999,-96.995140238436761 33.933014648420269,-96.996024643022366 33.940404763634284,-96.996183000000002 33.941727999999998,-96.996167702736543 33.941832622020257,-96.995421139189489 33.946938567064805,-96.995367999999999 33.947302,-96.994947208134789 33.948043840473474,-96.994456760007211 33.948908482357652,-96.994287999999983 33.949205999999997,-96.990835000000004 33.952700999999998,-96.988126301178397 33.954514162310069,-96.987892000000002 33.954670999999998,-96.982723774786024 33.956016867344054,-96.981537499896135 33.956325787441237,-96.981336999999982 33.956377999999994,-96.979415000000003 33.956178,-96.979347000000004 33.955129999999997,-96.980675999999988 33.951813999999999,-96.981031000000002 33.949159999999999,-96.97981799999998 33.941588000000003,-96.976955000000004 33.937452999999998,-96.973806999999979 33.935696999999998,-96.97254199999999 33.935794999999999,-96.952313000000004 33.944581999999997,-96.944610999999995 33.949216999999997,-96.933309804512817 33.955134148312766,-96.932252000000005 33.955688000000002,-96.924267999999998 33.959159,-96.922113999999979 33.959578999999998,-96.921429967464036 33.959451233053208,-96.919039990098355 33.959004821377064,-96.918617999999995 33.958925999999998,-96.91833921313939 33.958790334953079,-96.917063225391544 33.958169405626251,-96.916299999999993 33.957797999999997,-96.91417790611122 33.956157267456653,-96.911732563120111 33.95426660943896,-96.911336000000006 33.953960000000002,-96.910857206749995 33.953482904168467,-96.908421363636307 33.951055696608989,-96.907387 33.950024999999997,-96.905252999999988 33.947218999999997,-96.902433999999985 33.942017999999997,-96.901946611333699 33.940667581536225,-96.899441999999993 33.933728000000002,-96.896468999999996 33.91331799999999,-96.897193999999999 33.902954,-96.895728000000005 33.896414,-96.887761838797758 33.878628251663962,-96.883009999999999 33.868018999999997,-96.875280999999987 33.860505000000003,-96.87198767019855 33.857765462058182,-96.866438000000002 33.853149000000002,-96.85608999999998 33.84749,-96.850593000000003 33.847211,-96.845895999999996 33.848974999999996,-96.841592000000006 33.852893999999999,-96.840818999999996 33.863644999999998,-96.839777999999995 33.868395999999997,-96.837412999999984 33.871349000000002,-96.833926235310372 33.873661568818115,-96.832156999999995 33.874834999999997,-96.812777999999994 33.872646000000003,-96.794275999999996 33.868886000000003,-96.786859371055769 33.865207582975678,-96.783484999999999 33.863533999999994,-96.780568999999986 33.860098,-96.779588000000004 33.857939000000002,-96.777202000000003 33.848162000000002,-96.776765999999995 33.841976000000003,-96.770675999999995 33.829621000000003,-96.769378000000003 33.827477000000002,-96.766316855179326 33.825510582121247,-96.766234999999995 33.825457999999998,-96.761588000000003 33.824406000000003,-96.754041 33.824657999999999,-96.746233969152598 33.825673509073113,-96.746037999999984 33.825699,-96.741799282455162 33.826447231494264,-96.71318112067361 33.831498997677379,-96.712421999999989 33.831632999999997,-96.708134 33.833060000000003,-96.704457000000005 33.835020999999998,-96.700318655907978 33.838434731313264,-96.699573999999998 33.839049000000003,-96.695480719177567 33.844085960723298,-96.693127324791789 33.84698191524042,-96.690708 33.849958999999998,-96.688190999999989 33.854613,-96.687524326814838 33.85620885855986,-96.684726999999995 33.862904999999998,-96.682762564556768 33.871464102957781,-96.682209 33.873876000000003,-96.682102999999998 33.876645000000003,-96.683464 33.884217,-96.681051007513375 33.895708672998403,-96.680947000000003 33.89620399999999,-96.675306000000006 33.909114000000002,-96.673449000000005 33.912278,-96.670618000000005 33.914913999999996,-96.667186999999998 33.916939999999997,-96.665308436653305 33.917161206414967,-96.66440999999999 33.917267000000002,-96.659896000000003 33.916665999999999,-96.65150600931733 33.910998546998165,-96.644049999999979 33.905962000000002,-96.630116999999998 33.895422000000003,-96.628293999999997 33.894477000000002,-96.616355751891987 33.894625565889051,-96.614680358047494 33.89464641537834,-96.611821556077771 33.89468199182577,-96.607562 33.894734999999997,-96.592948000000007 33.895615999999997,-96.588319642127203 33.894847991673281,-96.587934000000004 33.894784,-96.58760387584924 33.894318075382706,-96.585452000000004 33.891280999999999,-96.585359999999994 33.888947999999999,-96.587494000000007 33.884250999999999,-96.590112000000005 33.880665,-96.597347999999982 33.875100999999994,-96.601685999999987 33.872822999999997,-96.611969999999999 33.869016000000002,-96.625399000000002 33.856541999999997,-96.628968999999998 33.852406999999999,-96.629746999999995 33.850866000000003,-96.630021999999983 33.847541,-96.629842405402627 33.847037300944812,-96.629577623992816 33.846294683138318,-96.629289999999997 33.845488000000003,-96.627812273090953 33.844523322531259,-96.626623854929747 33.84374750920842,-96.623154999999997 33.84148299999999,-96.622548607895212 33.841284829387497,-96.620258613641042 33.840536452948584,-96.605267599881515 33.835637348301233,-96.601258 33.834327000000002,-96.599141379811712 33.83346048638235,-96.597030984690946 33.832596521217091,-96.595164098773168 33.831832245189069,-96.592925999999991 33.830916000000002,-96.587067000000005 33.828009000000002,-96.573054340771023 33.81917200025552,-96.572936999999996 33.819097999999997,-96.568822993124115 33.818734252140963,-96.566549213959448 33.818533211567136,-96.566298000000003 33.818511,-96.551222999999993 33.81912899999999,-96.541502252916899 33.82118138128849,-96.537683599711926 33.821987629236112,-96.532865 33.823005000000002,-96.532141353898353 33.822830017549641,-96.529233999999988 33.822127000000002,-96.526655000000005 33.820891000000003,-96.526331240434345 33.820568979830284,-96.523863000000006 33.818114,-96.519910999999993 33.811346999999998,-96.517492044660074 33.805400310572544,-96.516583999999995 33.803167999999999,-96.515958999999995 33.798933999999996,-96.515952403498957 33.797370629253059,-96.5159410675722 33.794684014612457,-96.515912 33.787795000000003,-96.51191399999999 33.781477999999993,-96.502285999999998 33.773459999999993,-96.500268000000005 33.772582999999997,-96.486059999999995 33.773009999999999,-96.459153999999998 33.775232000000003,-96.456254 33.776035,-96.450509999999994 33.780588000000002,-96.448044999999993 33.781030999999999,-96.436454999999995 33.780050000000003,-96.430214000000007 33.778654000000003,-96.423664429058576 33.776393528613141,-96.422642999999994 33.776040999999999,-96.422322840041474 33.775682043625913,-96.420980388055867 33.774176915691271,-96.419961 33.773034000000003,-96.419583102042878 33.772404537625398,-96.417562000000004 33.769038000000002,-96.416145999999998 33.76609899999999,-96.413408000000004 33.757714,-96.411885201063754 33.755703128434462,-96.408468999999997 33.751191999999996,-96.403507000000005 33.746288999999997,-96.384116000000006 33.730141000000003,-96.383299027856694 33.729391180874664,-96.380090129695702 33.726446045924753,-96.379450023740389 33.7258585550397,-96.370956555983966 33.718063228581727,-96.370761536889887 33.717884239557762,-96.369590000000002 33.716808999999998,-96.369084597701828 33.715741445126696,-96.366945 33.711221999999999,-96.363253 33.701050000000002,-96.363143372320295 33.69469995601051,-96.363135 33.694215,-96.362964209763192 33.693778090504111,-96.362198000000006 33.691817999999998,-96.356236230636398 33.68737146600408,-96.355945999999989 33.687154999999997,-96.355455421824701 33.68710517164083,-96.352724507664888 33.686827790830883,-96.348305999999994 33.686378999999995,-96.346643697131185 33.686554630652331,-96.344174978865311 33.686815463144171,-96.342664999999997 33.686974999999997,-96.337175125435976 33.689043696356201,-96.321102999999994 33.695099999999996,-96.318759999999997 33.696753,-96.318590686098233 33.696960051986665,-96.318010443675675 33.697669623646739,-96.316924999999998 33.698996999999999,-96.314798583555884 33.702507526903553,-96.309963999999994 33.710489000000003,-96.308342766341951 33.715746247280322,-96.307034999999985 33.719987000000003,-96.307001890234133 33.720499786556005,-96.306595999999999 33.726785999999997,-96.307389 33.735005,-96.3061 33.741002000000002,-96.30525491425243 33.743702118680943,-96.304087485467235 33.747432149959735,-96.303009000000003 33.750878,-96.301705999999982 33.753756000000003,-96.294866999999996 33.764771000000003,-96.292482000000007 33.766418999999999,-96.277269000000004 33.769734999999997,-96.269895999999989 33.768405,-96.251497151236435 33.760405611313516,-96.248231999999987 33.758986,-96.23960043273749 33.754058875473291,-96.229595766085112 33.748347949873668,-96.229022999999998 33.748021,-96.220521000000005 33.747390000000003,-96.1999 33.752116999999998,-96.196336040977513 33.753254070097242,-96.186553999999987 33.756374999999998,-96.178059000000005 33.760517999999998,-96.174632999999986 33.763699000000003,-96.169932696734321 33.769534234627457,-96.169452000000007 33.770130999999999,-96.167888847884015 33.774482610028038,-96.162756999999985 33.788769000000002,-96.162122572851359 33.796140263149638,-96.162213638666273 33.796174412747511,-96.166837334419654 33.79790829445497,-96.170373408451042 33.799381659586444,-96.173025461119408 33.800560352833699,-96.175150000000002 33.801951000000003,-96.17734 33.805117000000003,-96.17895107878303 33.810509748931381,-96.178963999999993 33.810552999999999,-96.176910000000007 33.813934000000003,-96.175889999999981 33.814627000000002,-96.164217431250009 33.817001137011715,-96.150765000000007 33.816986999999997,-96.148792 33.819197000000003,-96.151629999999983 33.831945999999995,-96.150147000000004 33.835856,-96.148457006953691 33.837436961236868,-96.14806999999999 33.83779899999999,-96.147446683377808 33.837891494337825,-96.138904999999994 33.839159000000002,-96.128108733462625 33.839703753325978,-96.122951 33.839963999999995,-96.118168999999995 33.837883999999995,-96.109992999999989 33.832396000000003,-96.104074999999995 33.830730000000003,-96.099360000000004 33.830469999999998,-96.097448 33.832724999999996,-96.097637999999989 33.837935000000002,-96.099152999999987 33.842409000000004,-96.100785000000002 33.844230000000003,-96.101348999999999 33.845720999999998,-96.101472999999999 33.846708999999997,-96.100094999999996 33.847971,-96.084626 33.846656000000003,-96.063924 33.841522999999995,-96.055357999999984 33.838262,-96.049381559404907 33.836618570443349,-96.048833999999999 33.836468000000004,-96.044074587870469 33.838420736557822,-96.037191000000007 33.841245,-96.031783693249977 33.849934429642978,-96.031271075997878 33.850758194920559,-96.029462717056688 33.852402158173604,-96.025188419607474 33.852073366797306,-96.022229284477689 33.850922593794486,-96.021900493101384 33.849114234853282,-96.022507000000004 33.846130000000002,-96.022064891975305 33.843195970965255,-96.021407302851145 33.841880802274289,-96.019950829321616 33.840821548098475,-96.019598947095744 33.84056563358331,-96.005296 33.845505000000003,-96.000534603789163 33.849305889934179,-95.998351 33.851049000000003,-95.997709 33.852181999999992,-95.997673906338932 33.852568581878202,-95.997405462294296 33.855525685805766,-95.9977342536706 33.860950759443568,-95.997376655326022 33.862202357114477,-95.996747879541701 33.864403078452035,-95.993624351909531 33.866211440579008,-95.991487204777812 33.866869023331596,-95.988856861024331 33.866869023331596,-95.984753921632091 33.864671017651808,-95.984253769013037 33.864403078452035,-95.980965842506947 33.859306796190523,-95.9735403792467 33.856832331211713,-95.972155999999998 33.856371000000003,-95.971744371228908 33.856383941655046,-95.951609000000005 33.857016999999999,-95.945502988542614 33.859346036998218,-95.944283999999982 33.859811,-95.943359355023844 33.860365112733476,-95.941777921153459 33.861312819872232,-95.941266999999996 33.861618999999997,-95.936631000000006 33.870615,-95.93550004724635 33.874497995518659,-95.935325000000006 33.875098999999999,-95.935308000000006 33.878723999999998,-95.935637 33.880370999999997,-95.936817000000005 33.882385999999997,-95.937201999999999 33.884652000000003,-95.936131999999986 33.886825999999999,-95.935198 33.887100999999994,-95.922712000000004 33.883758,-95.915960999999996 33.881148000000003,-95.905343000000002 33.875629000000004,-95.893305999999995 33.868161,-95.887490999999997 33.863855999999998,-95.881292000000002 33.860627,-95.859469000000004 33.852455999999997,-95.849863999999997 33.844951999999999,-95.843772999999999 33.838949,-95.841300369514457 33.837329726167006,-95.840012000000002 33.836486,-95.839442445999168 33.836292954052603,-95.838335071878717 33.835917618112738,-95.837515999999994 33.835639999999998,-95.831947999999997 33.835160999999999,-95.828244999999995 33.836053999999997,-95.827967044704152 33.836191602640042,-95.826538854622555 33.836898632614485,-95.822787000000005 33.838755999999989,-95.821905415666805 33.839551758599306,-95.821112514659319 33.840267467546653,-95.820784000000003 33.840564,-95.819357999999994 33.842784999999999,-95.818975999999992 33.844456,-95.819524999999999 33.848438999999999,-95.820676999999989 33.850750999999995,-95.821665999999979 33.855443,-95.821665999999979 33.856633000000002,-95.82138191533943 33.857119395418813,-95.820824189768416 33.858074304994595,-95.820595999999995 33.858464999999995,-95.820256321913618 33.858527429344676,-95.805149 33.861303999999997,-95.800842000000003 33.861212000000002,-95.790314669347865 33.857829825250164,-95.789867 33.857685999999994,-95.789358977006231 33.85733891951336,-95.788304168820886 33.85661827626933,-95.787891000000002 33.856335999999999,-95.776255000000006 33.845145000000002,-95.773281999999995 33.843834,-95.772067000000007 33.843817,-95.763621999999984 33.847954,-95.758311274366889 33.849968021173019,-95.758015999999998 33.850079999999998,-95.757640875431136 33.850475976069447,-95.754310000000004 33.853991999999998,-95.753512999999984 33.856464000000003,-95.753688987366843 33.856976705401074,-95.75729390188404 33.867478931648478,-95.757457999999986 33.86795699999999,-95.758009454152003 33.868443703186436,-95.760805000000005 33.870911,-95.762558999999996 33.874366999999992,-95.76194240701966 33.883030946465368,-95.761915999999999 33.883401999999997,-95.758343999999994 33.890610999999993,-95.756366999999997 33.892625000000002,-95.747335000000007 33.895755999999999,-95.737508000000005 33.895966999999999,-95.729445045960333 33.893952819075864,-95.728448999999998 33.893704,-95.723226300470785 33.890698381785455,-95.717160861060378 33.887207774089354,-95.713910181462765 33.885337036216413,-95.713539999999981 33.885123999999998,-95.710877999999994 33.884551999999999,-95.696961999999999 33.885218000000002,-95.684831000000003 33.890231999999997,-95.676924999999983 33.897236999999997,-95.669978 33.905844000000002,-95.665338000000006 33.908132000000002,-95.659818 33.909092,-95.647272999999998 33.905976000000003,-95.636977999999999 33.906613,-95.609439392746168 33.923623282239362,-95.603656999999998 33.927194999999998,-95.599677999999983 33.934246999999999,-95.585944999999981 33.93448,-95.570311428427317 33.932892416047835,-95.564667905744443 33.932319318211334,-95.563423999999998 33.932192999999998,-95.562724847986416 33.932007581530534,-95.561592737930383 33.931707340510293,-95.561007000000004 33.931551999999996,-95.560415995740641 33.931042615914556,-95.559931936825777 33.930625407571753,-95.559414000000004 33.930179000000003,-95.558286100391328 33.928753215740784,-95.557777967458279 33.928110882033096,-95.556914999999989 33.927019999999999,-95.551147999999984 33.914566,-95.549144999999996 33.90795,-95.549475 33.901310999999993,-95.552330999999981 33.894419999999997,-95.55209457427955 33.888655441173519,-95.552085000000005 33.888421999999998,-95.551943532854764 33.888208369560985,-95.548485831718622 33.882986873004867,-95.548324999999991 33.882744000000002,-95.547838962671932 33.882363312195096,-95.545708294665019 33.880694470565629,-95.545197000000002 33.880293999999999,-95.54352178779898 33.880173169084813,-95.541265054919734 33.880010393826282,-95.539789999999996 33.879904000000003,-95.537358049249164 33.88037416967029,-95.534038375697051 33.881015963020303,-95.533282999999997 33.881161999999996,-95.531798241123994 33.881968630089013,-95.525321999999989 33.885486999999998,-95.521418133191162 33.888379988113826,-95.520137966641357 33.88932866459119,-95.515301759339067 33.891142240377064,-95.510062536063273 33.890134704348199,-95.506233872599807 33.886306036979761,-95.506495 33.878588999999998,-95.506084999999999 33.87639,-95.502407477038815 33.874787101867227,-95.502303999999995 33.874741999999998,-95.492028000000005 33.874822000000002,-95.480004545492946 33.87882505156746,-95.478574999999992 33.879300999999998,-95.477829321179073 33.879890044047791,-95.469962325642697 33.886104525088022,-95.467351237093553 33.886417854985297,-95.464924614258621 33.886709049048328,-95.462909526581015 33.885903021006229,-95.461498966768687 33.883686425341857,-95.46277824472287 33.878821065729895,-95.464211000000006 33.873372000000003,-95.463346 33.872312999999998,-95.461127233926518 33.871832054399569,-95.447370000000006 33.868850000000002,-95.418546279096461 33.866998581211959,-95.411345060268999 33.866536029139695,-95.407794999999979 33.866307999999989,-95.406882133018115 33.866362247208706,-95.404325916920058 33.866514150597617,-95.375232999999994 33.868243,-95.352338000000003 33.867789000000002,-95.339561303488324 33.868836967540759,-95.339121999999989 33.868873,-95.339014688391742 33.869073090388603,-95.33835013321854 33.870312202400832,-95.334854000000007 33.876830999999996,-95.334836460323601 33.877305631062114,-95.334523000000004 33.885787999999998,-95.333451999999994 33.886285999999998,-95.325571999999994 33.885703999999997,-95.310579050797429 33.880679668661742,-95.294789354523203 33.875388337067108,-95.287864786488143 33.87494634339312,-95.28344485260331 33.877745636185885,-95.281676877907344 33.882902226669891,-95.281529544303439 33.887616824907447,-95.281317419351268 33.889260797911334,-95.280350898312903 33.896751357029835,-95.279761569607459 33.899108654721076,-95.277846267017765 33.900876629417048,-95.275341635722626 33.901760616765031,-95.272542342929853 33.902055281117747,-95.267212735027385 33.900338966530455,-95.263849803053915 33.899255988324974,-95.261050510261143 33.899992642069066,-95.255746586173245 33.902939265610648,-95.253094626984378 33.90544389690578,-95.250884657186859 33.913105118684925,-95.250737329293145 33.917083057468233,-95.251326652288412 33.924154956252103,-95.253020000000006 33.927236999999998,-95.253623000000005 33.92971,-95.252905999999982 33.933647999999998,-95.250453815364224 33.936614470603772,-95.23166760862577 33.959340626388752,-95.231194814374604 33.959912577712174,-95.230491 33.960763999999998,-95.226393000000002 33.961953999999999,-95.219358 33.961567000000002,-95.184075000000007 33.950353,-95.174181557651636 33.944707625858101,-95.173657196254922 33.944408415920272,-95.168745999999999 33.941605999999993,-95.166685999999984 33.939728000000002,-95.161108999999982 33.937598,-95.149462 33.936335999999997,-95.131725657216535 33.936903570678005,-95.131056 33.936924999999995,-95.130760550144942 33.936820411866918,-95.124700000000004 33.934674999999991,-95.121184 33.931306999999997,-95.121974867397924 33.925542192115131,-95.122499622273722 33.921717137430115,-95.122365486317321 33.918632002634986,-95.119951031304154 33.915815139752631,-95.110963896232136 33.912998276870283,-95.103318123323447 33.913668959251616,-95.10214780889666 33.912991409673538,-95.100769532353866 33.912193461131935,-95.098489218495843 33.909913139475762,-95.095001673232161 33.904815960136006,-95.095247706914634 33.899772255341666,-95.095269945144935 33.899316370327696,-95.09392858558104 33.895962961020395,-95.090441035118587 33.893280234094433,-95.084002493615529 33.893280234094433,-95.079139333602001 33.898143394107954,-95.078905311676394 33.898377416033576,-95.074957661870556 33.900039583313315,-95.073630040977179 33.900598581227868,-95.071259538767663 33.901596686785098,-95.065491679645973 33.899584642240477,-95.06106518008815 33.895292278639054,-95.058834000000004 33.886812999999997,-95.049025 33.864089999999997,-95.046567999999994 33.862564999999996,-95.038661112238941 33.860609605793528,-95.037206999999995 33.86025,-95.033518790033554 33.860141698175291,-95.03143098776043 33.86008039125462,-95.030255193062573 33.860045864827867,-95.022324999999995 33.859813000000003,-95.016999191469623 33.861237606415294,-95.016422000000006 33.861392000000002,-95.008375999999984 33.866088999999995,-95.000223000000005 33.862504999999999,-94.995524000000003 33.857438000000002,-94.992810330111539 33.852698351540766,-94.992671 33.852454999999999,-94.992523097811741 33.852403566519136,-94.990494037024106 33.851697953840834,-94.988486999999992 33.850999999999999,-94.98739725328582 33.851074415574232,-94.983303000000006 33.851354,-94.981650000000002 33.852283999999997,-94.976208 33.859846999999995,-94.973410999999999 33.861730999999999,-94.971435 33.862122999999997,-94.968895000000003 33.860916000000003,-94.965888000000007 33.848421999999999,-94.964400999999995 33.837020999999993,-94.957676000000006 33.835003999999998,-94.949533421399437 33.825707838785306,-94.949112883549958 33.821754768331147,-94.948729542346143 33.818151347643564,-94.948715939727023 33.818023482549535,-94.944301522854289 33.81213759866646,-94.939560116480934 33.810502632153295,-94.935799688114457 33.810339132650462,-94.932366255585293 33.810993121156741,-94.928442330884351 33.812628087669893,-94.92451840618341 33.812791587172725,-94.924196338046286 33.812670811231236,-94.921902464831703 33.811810605997493,-94.919450010309433 33.810175636315982,-94.917815040627914 33.808704169305649,-94.917091634856007 33.805689966907131,-94.916834062621035 33.804616745101868,-94.916997555787162 33.801510305241678,-94.91961350347556 33.794152948011565,-94.920034399525505 33.790224602097751,-94.920103995647338 33.789575041141042,-94.920095560257593 33.789518805381888,-94.91961350347556 33.786305103362189,-94.913003475392784 33.779908559849432,-94.912450337640749 33.77937328682863,-94.911427000000003 33.778382999999998,-94.906244999999998 33.778191999999997,-94.902276 33.776288999999998,-94.89497736748055 33.771540270803243,-94.89019868072495 33.768431100796676,-94.888367999999986 33.76724,-94.887910246679809 33.766674529711281,-94.886225692565191 33.764593571999796,-94.885411379435553 33.764756432942491,-94.881447983999394 33.765549103837166,-94.879218389137634 33.764912090842074,-94.876033253179955 33.760771407616105,-94.875653319149677 33.757021753168047,-94.875534806260347 33.755852122792213,-94.875497398046861 33.755482932714841,-94.877080000000007 33.75222,-94.874668 33.749164,-94.870299604394191 33.746484207390097,-94.869443369718425 33.745958950164457,-94.869299999999996 33.745871,-94.8570941233355 33.742035460072337,-94.849295999999981 33.739584999999991,-94.841633779899112 33.739430990835892,-94.830804318260235 33.740068022348083,-94.828875382311935 33.74092532536806,-94.827937698058648 33.741342073027738,-94.826026615866809 33.743890180559411,-94.824752565187154 33.749304914465036,-94.82447272313469 33.749460382205008,-94.821885938813196 33.750897483986968,-94.817426749089677 33.752171534666616,-94.815635414888177 33.752066164468857,-94.813744972719192 33.751954964523563,-94.81275807295215 33.751896912919612,-94.812012015184067 33.751853028169073,-94.80914539498248 33.749304914465036,-94.798634446013509 33.744527205899239,-94.789716054221742 33.746119775421171,-94.777638928565466 33.753471071068567,-94.775064434371529 33.755038154868203,-94.770923763490302 33.754401129528375,-94.768057130944001 33.753445597691005,-94.766464573766783 33.750897483986968,-94.766146067269247 33.748030863785381,-94.766818924318841 33.746124416643802,-94.768057130944001 33.742616129879757,-94.767738636791165 33.737519908644046,-94.767244154304578 33.736926531576607,-94.76296091588064 33.731786662068515,-94.759138751496963 33.729557067206756,-94.758159820145337 33.729557067206756,-94.753087004596253 33.729557067206756,-94.750011775433265 33.728811557489699,-94.742576055627282 33.727008959675082,-94.742176780415733 33.726449974997927,-94.739390916583417 33.72254976995157,-94.737479828219207 33.716179498036198,-94.737788227808608 33.71500758055268,-94.73907239774114 33.71012773879076,-94.73746132453816 33.705563045258067,-94.73716130937693 33.704713004885136,-94.732383613155861 33.700253815161624,-94.728242929929891 33.699616789821789,-94.725694828570582 33.702483410023376,-94.724525908047042 33.704821269192259,-94.724102271393392 33.705668549067234,-94.721872664186904 33.707261118589173,-94.719006043985303 33.708216656598914,-94.714865360759347 33.707261118589173,-94.711043208720398 33.705668549067234,-94.709450639198465 33.699616789821789,-94.710289486124168 33.697309952648205,-94.710724689878106 33.696113138108018,-94.710724689878106 33.691653948384499,-94.710106194192988 33.688252279047049,-94.71008765219355 33.688150299756906,-94.707858069676533 33.686876245991066,-94.691547961569825 33.685092048879412,-94.684792000000002 33.684353000000002,-94.659166999999997 33.692138,-94.652265035786613 33.690979104454883,-94.649628372726468 33.688049476940073,-94.649099284135872 33.686462209886628,-94.648456523423718 33.684533926193204,-94.64818493525776 33.682632803768527,-94.647928021538007 33.680834402751707,-94.647870600191638 33.680432452214262,-94.648456523423718 33.673401362074948,-94.647827859209684 33.672301196274027,-94.646112824818204 33.669299876741562,-94.642890235687361 33.668420997570671,-94.635273213800133 33.669885811328072,-94.631328876730365 33.67284406472757,-94.630585813750528 33.673401362074948,-94.627656194751552 33.677795791992715,-94.62121101648988 33.681018386800773,-94.616816575217669 33.679553573043371,-94.614284398758912 33.677302743466427,-94.611543254774574 33.674866164477912,-94.611424034353576 33.674789522931938,-94.607441775118403 33.672229504256364,-94.60304734520065 33.671350625085473,-94.596895128555005 33.671350625085473,-94.593672545101384 33.673987285307021,-94.590449961647764 33.677502836053897,-94.590316660066918 33.67755410593854,-94.586641449284855 33.678967649811298,-94.579620000000006 33.677622999999997,-94.576973687569549 33.673401362074948,-94.5728722135906 33.669885811328072,-94.571305222138406 33.668005422800071,-94.569942586075811 33.666370260581196,-94.569356662843745 33.663440621711956,-94.571445361022185 33.660423619728157,-94.571993323065286 33.659632120703485,-94.572286279004103 33.656995454804722,-94.570821465246695 33.654944723492456,-94.568770728257221 33.65465176187643,-94.564669254278257 33.655823608340576,-94.563858010166513 33.65591721375597,-94.557052229552454 33.656702498865904,-94.552071876402621 33.653479904057846,-94.551192985877293 33.650257320604226,-94.551311999999982 33.644569999999995,-94.553536678805585 33.642054372646328,-94.552657799634687 33.638245860283412,-94.549142248887819 33.635902161677912,-94.543868917090279 33.635902161677912,-94.538888563940446 33.637952898667386,-94.538195599937964 33.637916426989378,-94.537583502619341 33.637884211439605,-94.533322276204103 33.637659937051346,-94.529220802225154 33.63443734792051,-94.528408204203203 33.630103504051213,-94.528341911699826 33.629749945032266,-94.52980672545722 33.627406252103981,-94.528927834931892 33.621839964367631,-94.526291174710352 33.619203298468861,-94.521363727720257 33.61686924674752,-94.520724886974008 33.61656663824732,-94.504615 33.620682000000002,-94.493418698303032 33.624467326832118,-94.492501061148843 33.624777568252533,-94.491502999999994 33.625115,-94.491295462081894 33.62531395337146,-94.487514000000004 33.628939000000003,-94.485874999999993 33.637867,-94.481313 33.638818999999998,-94.476415000000003 33.638947000000002,-94.466075000000004 33.636262000000002,-94.464185999999998 33.637655000000002,-94.461453000000006 33.643615999999994,-94.459197999999986 33.645145999999997,-94.454819999999998 33.644902999999999,-94.448637000000005 33.642766000000002,-94.446871000000002 33.640177999999999,-94.447513999999998 33.636254999999991,-94.448451000000006 33.634497000000003,-94.458816999999982 33.632444,-94.462736000000007 33.63091,-94.461129 33.625414999999997,-94.460285999999996 33.624420999999998,-94.45525499999998 33.622917,-94.452710999999994 33.622621000000002,-94.452325000000002 33.618817,-94.452961000000002 33.616985999999997,-94.454768999999999 33.615155999999992,-94.462335999999993 33.610567000000003,-94.469451000000007 33.60731599999999,-94.472166 33.604199,-94.471974000000003 33.602665000000002,-94.471151999999989 33.601588,-94.468086 33.599435999999997,-94.461794602929331 33.598691554192769,-94.458900358388505 33.598349085232492,-94.458231999999995 33.598269999999999,-94.454858239556387 33.593453869357283,-94.453995999999989 33.592222999999997,-94.453435550445548 33.592019500625121,-94.452150252013013 33.591552808439438,-94.451622 33.591360999999999,-94.449112 33.590893999999992,-94.442363999999998 33.591242999999999,-94.441536999999997 33.591501999999991,-94.439518000000007 33.594154000000003,-94.430358101189597 33.59122600196271,-94.430038999999994 33.591124,-94.429672337173542 33.590855074196774,-94.427920122643982 33.589569927010331,-94.427577999999983 33.589319000000003,-94.425982000000005 33.586424999999998,-94.413155000000003 33.569367999999997,-94.412481642075306 33.56890283335202,-94.412480771235352 33.568902231761562,-94.412480202418593 33.568901838813659,-94.412175000000005 33.568691,-94.408900999999986 33.568196999999998,-94.403341999999995 33.568424,-94.397341999999981 33.571607999999998,-94.385926999999995 33.581887999999999,-94.382886999999997 33.58326799999999,-94.379649 33.580607,-94.378075999999993 33.577019,-94.377759999999981 33.574609000000002,-94.378561000000005 33.571328999999999,-94.380090999999993 33.568942999999997,-94.382534000000007 33.567056999999998,-94.388052000000002 33.565511,-94.392357000000004 33.565286999999998,-94.394655618773015 33.564059042448399,-94.397398454287298 33.562313601959417,-94.399227012370631 33.559903231990447,-94.399393244337958 33.557077279687135,-94.399143896386974 33.555498071165481,-94.397957000000005 33.554389999999998,-94.392572999999999 33.551141999999999,-94.389515000000003 33.546778000000003,-94.386086000000006 33.544922999999997,-94.381666999999993 33.544035,-94.373392999999993 33.544471,-94.371597999999992 33.545000999999999,-94.363297000000003 33.544956999999997,-94.361350999999999 33.544612999999998,-94.358969999999999 33.54323,-94.355945000000006 33.54318,-94.348944999999986 33.548358999999998,-94.347382999999979 33.55107799999999,-94.34729 33.552197,-94.352653000000004 33.560611000000002,-94.352433000000005 33.56217199999999,-94.345512999999997 33.567312999999999,-94.344023000000007 33.567824000000002,-94.340576999999996 33.567878,-94.340047258358467 33.56768232744934,-94.338972839399958 33.567285465504582,-94.33842199999998 33.567081999999999,-94.337996277272822 33.566655299162022,-94.334939999999989 33.563592,-94.334379999999996 33.562536,-94.333929800646288 33.557825151092565,-94.333894999999998 33.557461000000004,-94.333202999999997 33.555365999999992,-94.331833000000003 33.553348,-94.33059 33.552692,-94.323660000000004 33.549835000000002,-94.319491999999997 33.548864000000002,-94.309582000000006 33.551673,-94.30641 33.555616,-94.306214999999995 33.557676,-94.307180999999986 33.559797000000003,-94.303577000000004 33.56828,-94.301022999999986 33.573022000000002,-94.298392000000007 33.576217999999997,-94.293257999999994 33.580418999999999,-94.289129000000003 33.582143999999992,-94.287025 33.582410000000003,-94.283581999999996 33.581890999999999,-94.282647999999995 33.580978000000002,-94.280849000000003 33.577187000000002,-94.280604999999994 33.574907999999994,-94.282171999999989 33.572989,-94.290372000000005 33.567905000000003,-94.291686999999996 33.563481000000003,-94.290901000000005 33.558872,-94.289439999999999 33.557634999999998,-94.287571999999997 33.557178,-94.279089999999997 33.557026,-94.275600999999995 33.557963999999998,-94.274473 33.558652000000002,-94.271997999999996 33.561517999999992,-94.270978999999997 33.563220999999999,-94.270853000000002 33.564782999999998,-94.265668999999988 33.573588999999998,-94.262754999999999 33.577354,-94.257801 33.582507999999997,-94.257524288354617 33.582703553652586,-94.252656000000002 33.586143999999997,-94.245931999999996 33.589113999999995,-94.242777000000004 33.589708999999999,-94.240178999999998 33.589536000000003,-94.236971999999994 33.587411000000003,-94.236362999999997 33.585991999999997,-94.236835999999997 33.580914,-94.237975000000006 33.577756999999998,-94.238867999999997 33.576721999999997,-94.244365999999999 33.573549,-94.251108000000002 33.56528,-94.252330999999984 33.561855,-94.252283000000006 33.560445,-94.251569000000003 33.558188,-94.250197 33.556764999999999,-94.237903999999986 33.552675,-94.233128263729824 33.552212399803537,-94.233017493976078 33.552201670126067,-94.231843999999981 33.552087999999998,-94.226392000000004 33.552911999999999,-94.222920999999999 33.554088,-94.21922099999999 33.556095999999997,-94.213604000000004 33.563133999999998,-94.21268334130005 33.563763266722709,-94.208078 33.566910999999998,-94.205634000000003 33.567228999999998,-94.203593999999981 33.566546000000002,-94.202594978382763 33.562850001484037,-94.201237000000006 33.557825999999999,-94.199485999999993 33.556085000000003,-94.197816999999986 33.555238000000003,-94.196394999999995 33.555123000000002,-94.193247999999997 33.556153999999999,-94.191332999999986 33.55766599999999,-94.189883999999992 33.562454000000002,-94.192482999999996 33.570425,-94.194399000000004 33.573678,-94.196366991504703 33.574779501237479,-94.201105911663163 33.575851400157113,-94.204265191768783 33.575005164570705,-94.207404999999994 33.574353000000002,-94.209665 33.573509999999999,-94.211329000000006 33.573774,-94.216140999999993 33.576391999999998,-94.217408000000006 33.579259999999998,-94.217197999999982 33.580736999999999,-94.214431000000005 33.583187000000002,-94.212997 33.583486999999991,-94.210966999999997 33.583143,-94.205788416261612 33.581380140341984,-94.203588205048902 33.580815984742067,-94.199751933850294 33.581098061448763,-94.196536237091394 33.581718635888464,-94.194464999999994 33.582886000000002,-94.190890999999979 33.587474,-94.183913000000004 33.594681999999999,-94.180879999999988 33.592612000000003,-94.176327 33.591076999999999,-94.162266000000002 33.588906,-94.161081999999993 33.587972,-94.162009999999995 33.580877,-94.161276999999998 33.579270999999999,-94.156782000000007 33.575749000000002,-94.152625999999998 33.575923000000003,-94.148731999999995 33.580196999999998,-94.146047999999993 33.581975,-94.144383000000005 33.582097999999995,-94.142160000000004 33.581389999999999,-94.141852 33.579590000000003,-94.143023999999983 33.577725,-94.145668999999984 33.575599999999994,-94.149506000000002 33.573602,-94.151257 33.571793,-94.151754999999994 33.569476000000002,-94.151455999999996 33.568387,-94.148520000000005 33.565677999999991,-94.145239000000004 33.564987000000002,-94.143401999999995 33.565504999999995,-94.136863999999989 33.570999999999998,-94.136045999999993 33.571387999999999,-94.135142000000002 33.571033,-94.134308000000004 33.569209,-94.133047999999988 33.557952999999998,-94.131382000000002 33.552934,-94.128658 33.550952000000002,-94.126897999999983 33.550646999999991,-94.123897999999997 33.552100000000003,-94.122878999999983 33.553111999999999,-94.12071899999998 33.560555,-94.120354999999989 33.5655,-94.119902152897509 33.566998927274319,-94.112842999999998 33.566991000000002,-94.103176000000005 33.570349999999998,-94.100106999999994 33.57256799999999,-94.097439999999992 33.573718999999997,-94.088943 33.575322,-94.082640999999995 33.575491999999997,-94.072670000000002 33.572234000000002,-94.072231491265512 33.572605318678747,-94.072031926011121 33.573523317998088,-94.072031926011121 33.573846369634623,-94.072031926011121 33.574161925883949,-94.071815412538413 33.574459631515609,-94.071712621294751 33.574600969288895,-94.071353404455635 33.574840447439463,-94.070395493400298 33.574561056392717,-94.069534727631535 33.574169799087244,-94.069517406590393 33.574161925883949,-94.068559493988133 33.573563230894273,-94.068280102941401 33.571966710019424,-94.06782332144887 33.570215714974232,-94.067801146640278 33.570130711574109,-94.066845999999998 33.568908999999998,-94.061283000000003 33.568804999999998,-94.056597999999994 33.567824999999999,-94.056095999999997 33.567252000000003,-94.055662999999996 33.561886999999999,-94.056442000000004 33.560997999999991,-94.059849999999997 33.559249,-94.061179999999993 33.559159,-94.066685000000007 33.560953999999995,-94.067984999999993 33.560960999999999,-94.071719999999999 33.559682000000002,-94.073744000000005 33.558284999999998,-94.073825999999997 33.555833999999997,-94.072156000000007 33.553863999999997,-94.069091999999998 33.553406000000003,-94.06547999999998 33.550908999999997,-94.061896000000004 33.549764000000003,-94.056095999999997 33.550725999999997,-94.051882000000006 33.552585,-94.050211999999988 33.551082999999998,-94.046040000000005 33.551321000000002,-94.043449999999993 33.552253,-94.043428000000006 33.551424999999995,-94.043374999999997 33.542315000000002,-94.043020107474533 33.494534442391668,-94.043008999999998 33.493039000000003,-94.043278999999998 33.491029999999995,-94.043271947583932 33.489425304099555,-94.043188 33.470323999999991,-94.043130608695648 33.460424000000003,-94.043089437732434 33.453322008844353,-94.043061045958495 33.448424427841935,-94.043010021810147 33.439622762252007,-94.042987999999994 33.435823999999997,-94.042987999999994 33.434442436873745,-94.042987999999994 33.431023999999994,-94.042886999999993 33.420225000000002,-94.042890126641851 33.419424334827802,-94.042891364631132 33.419107312620362,-94.042967439944888 33.399626074590046,-94.043053 33.377715999999999,-94.042868999999996 33.371169999999999,-94.043127999999996 33.358756999999997,-94.043066999999979 33.352097,-94.043066999999979 33.347351000000003,-94.043066999999979 33.339614667914582,-94.043066999999979 33.330497999999999,-94.042990000000003 33.271227000000003,-94.043049999999994 33.260903999999996,-94.043003999999996 33.250127999999997,-94.042730000000006 33.241822999999997,-94.042876000000007 33.215218999999998,-94.042891999999995 33.202666,-94.042874999999995 33.199784999999999,-94.042718999999991 33.160290999999994,-94.043184999999994 33.143476,-94.043076999999982 33.138162,-94.043007000000003 33.13389,-94.042951563372725 33.117233519058104,-94.042869999999994 33.092726999999996,-94.043036 33.079484999999998,-94.042963999999998 33.019219,-94.042986850316112 33.007494023677346,-94.043068075862834 32.965815492539427,-94.043087999999997 32.955592000000003,-94.043066999999979 32.937902999999999,-94.043092 32.910021,-94.042884999999998 32.898910999999998,-94.042859000000007 32.892771000000003,-94.042885999999996 32.880965000000003,-94.043025 32.880445999999999,-94.042784999999995 32.871485999999997,-94.042921087938623 32.829694015190334,-94.043025999999983 32.797476000000003,-94.042747000000006 32.786973000000003,-94.042828999999998 32.785277,-94.042937999999992 32.780557999999999,-94.043026999999995 32.776862999999999,-94.042946999999998 32.767991000000002,-94.042974715046569 32.757603400545236,-94.04314699999999 32.693030999999998,-94.042912999999999 32.655126999999993,-94.042779999999993 32.643465999999997,-94.042823999999996 32.640304999999998,-94.042925999999994 32.622014999999998,-94.042929 32.618259999999992,-94.042918999999998 32.610142000000003,-94.042939007208048 32.604544739553475,-94.043082999999996 32.564261000000002,-94.043142000000003 32.559502000000002,-94.043081 32.513612999999999,-94.042884999999998 32.505144999999999,-94.042911000000004 32.492851999999999,-94.043088999999995 32.486561000000002,-94.043071999999995 32.48429999999999,-94.042955000000006 32.480260999999999,-94.042995000000005 32.478003999999999,-94.042901999999998 32.472905999999995,-94.042874999999995 32.471347999999992,-94.042902999999981 32.470385999999998,-94.042907999999997 32.439890999999996,-94.042985999999999 32.435507,-94.042898999999991 32.400658999999997,-94.042923000000002 32.399918,-94.042900999999986 32.392282999999999,-94.042762999999994 32.373331999999998,-94.042738999999997 32.363559000000002,-94.042733519218956 32.277818574933548,-94.042732999999998 32.269696000000003,-94.042732 32.269620000000003,-94.042671451745775 32.225096273752321,-94.042662000000007 32.218145999999997,-94.042600205901905 32.185155675879351,-94.042565999999994 32.166893999999999,-94.042538999999991 32.166826,-94.042591000000002 32.158096999999998,-94.042681000000002 32.137956000000003,-94.042751999999993 32.125163,-94.042337000000003 32.119914,-94.042699999999996 32.056012000000003,-94.042717288248511 32.00695918811028,-94.042720000000003 31.999265,-94.042490448495869 31.997488887291052,-94.042251674184627 31.995641414801661,-94.041832999999997 31.992401999999998,-94.038411999999994 31.992436999999999,-94.029282999999992 31.995864999999998,-94.027080554152732 31.994823406342874,-94.018664 31.990842999999998,-94.011671046736083 31.979908989829021,-94.008352361284565 31.974719974671689,-94.002944198469422 31.966263903968002,-93.995504541226836 31.954631438414648,-93.994147015257326 31.952508844111783,-93.977461000000005 31.926418999999996,-93.971711999999982 31.920383999999995,-93.953546000000003 31.910562999999996,-93.943541310721315 31.908563758569336,-93.938002035663573 31.906916949339585,-93.935007833635339 31.903773037645127,-93.932462763507019 31.895538979891644,-93.931327794714704 31.894581351390723,-93.92767203678045 31.891496810199779,-93.923929283519882 31.889849995167665,-93.919587694495533 31.890748256066246,-93.915948999999998 31.892861000000003,-93.909557114944889 31.893143619429534,-93.905252294448232 31.890856686636408,-93.90476638821832 31.890598549301192,-93.901173350426333 31.885957535142037,-93.901888 31.880063,-93.898135577976262 31.874953416991548,-93.896981462364707 31.873381885463036,-93.889196542313442 31.867692899288475,-93.888241004857136 31.85786451213389,-93.888148571748644 31.856913771406646,-93.887306164689562 31.854968889155742,-93.884117000000003 31.847605999999995,-93.880377455095243 31.844791786271248,-93.879654915472827 31.84424803536659,-93.874821999999995 31.840611000000003,-93.874804231839249 31.835091218914506,-93.874787826198073 31.829994712349503,-93.874761000000007 31.821660999999999,-93.870917000000006 31.816836999999996,-93.868473098390325 31.815251608244314,-93.853390000000005 31.805467,-93.846187999999998 31.802021,-93.839950728453459 31.798597132180646,-93.836868453653821 31.794158659336233,-93.836868453653821 31.791454071635616,-93.836868453653821 31.788733862378688,-93.834649214842401 31.783309060642711,-93.831197070889573 31.780226788232302,-93.827450999999996 31.777740999999999,-93.823442999999997 31.775098,-93.822597999999985 31.773558999999995,-93.826519525540022 31.761832440276638,-93.827342999999999 31.759369999999997,-93.830112066651125 31.754555168030393,-93.830647423185951 31.745811043570992,-93.824579 31.734396999999998,-93.819048075401312 31.72885814427071,-93.818932598107111 31.728523867973351,-93.815657495541259 31.719043310199801,-93.815835943108667 31.711905251886723,-93.815525624652665 31.710796971318612,-93.814600367558683 31.707492480599399,-93.814586782471608 31.707443962415162,-93.811060073548262 31.705827553684028,-93.810303944025605 31.705480994217723,-93.807270273132957 31.704231833580664,-93.806045429297654 31.703104120446881,-93.803419352361757 31.700686292667093,-93.802693549340276 31.697783082925291,-93.802451615781152 31.693186330065117,-93.804479 31.685663999999999,-93.812820813246589 31.676953615984285,-93.81562111199878 31.674029590143711,-93.817425 31.672146,-93.821829497696953 31.673879806810671,-93.822051000000002 31.673966999999998,-93.822341750589956 31.673502431839047,-93.826462000000006 31.666919,-93.8257324849111 31.66154827530681,-93.825660999999997 31.661021999999996,-93.825228912080746 31.660277861177896,-93.81803699999999 31.647891999999999,-93.817707248836442 31.6409111211136,-93.816838000000004 31.622509,-93.818717000000007 31.614555999999997,-93.823976999999999 31.614227999999997,-93.825414416100287 31.615089707767993,-93.827851999999993 31.616550999999998,-93.838056999999992 31.606795000000002,-93.839382999999998 31.599074999999999,-93.837534908858984 31.593743346167731,-93.834924 31.586210999999999,-93.822958 31.568129999999996,-93.822219025006859 31.564792487143556,-93.820763999999997 31.558221000000003,-93.818582000000006 31.554825999999998,-93.798086999999995 31.534044000000002,-93.787687000000005 31.527343999999996,-93.781574079702807 31.525595412174177,-93.780834999999996 31.525383999999999,-93.777170583402579 31.525128039451072,-93.760062000000005 31.523933,-93.753860000000003 31.525331,-93.751899169046524 31.525601857922521,-93.749869902733366 31.526210635456998,-93.746826003263621 31.526007705679731,-93.743376259969125 31.525196002300419,-93.742401241878753 31.523787647735123,-93.74154991556837 31.522557958452786,-93.741111000000004 31.520101,-93.740752889151466 31.518711098615515,-93.740332360499409 31.517078940980245,-93.739317727342822 31.515049678599539,-93.734411826534469 31.513527159467717,-93.733432858180635 31.513223342063657,-93.726736285639134 31.511599931372594,-93.725924582259807 31.504091651519342,-93.728765551952293 31.496786301443361,-93.730997740177827 31.492118989316349,-93.733996137544537 31.48847587643743,-93.737167999999997 31.484621999999998,-93.741884999999982 31.483535,-93.745608448194673 31.481972669547908,-93.746355058504165 31.481633300507966,-93.747840636420193 31.480958036391328,-93.749869902733366 31.478928770078173,-93.749869902733366 31.475276095040186,-93.749626709600278 31.47120988033301,-93.749476 31.468689999999999,-93.709416000000004 31.442995,-93.706857276389258 31.44142369846492,-93.700929751125955 31.437783629836048,-93.697919763270235 31.429300939077926,-93.697603150134782 31.428408665937056,-93.704678 31.418899999999997,-93.704697874245824 31.418107106580852,-93.704878999999991 31.410881,-93.701611 31.409333999999998,-93.695865999999995 31.409391999999997,-93.689953513429003 31.406208353384852,-93.678362516190631 31.399967047179565,-93.675064666986117 31.398191282223291,-93.674659331220113 31.397973024503138,-93.674116999999981 31.397680999999995,-93.671643999999986 31.393352,-93.670181999999983 31.387184,-93.668532759396427 31.379357124595749,-93.668145986696857 31.37510269235548,-93.669064113561134 31.373151679996884,-93.669693055010129 31.371815184369147,-93.669512094168894 31.370548454097019,-93.668919524600994 31.366400452767671,-93.667402247962755 31.365414223393856,-93.665051865060306 31.363886475190469,-93.663891561951601 31.361952641672623,-93.663698175601809 31.360018811902275,-93.664665092360735 31.357698213179859,-93.665825387974422 31.355184231855155,-93.668439000000006 31.353011999999996,-93.669515978941746 31.350266666374935,-93.673736148309771 31.339509006758242,-93.677277000000004 31.330482999999997,-93.687850999999995 31.309835,-93.686922292404276 31.305369360695714,-93.686880000000002 31.305166,-93.686723586265984 31.304979085312567,-93.684737187533131 31.30260533533086,-93.684038999999999 31.301770999999995,-93.683824154244718 31.301752735987076,-93.675439999999995 31.30104,-93.668927999999994 31.297974999999997,-93.657003999999986 31.281735999999999,-93.647719584117951 31.27389987096868,-93.642516 31.269508000000002,-93.632650200244299 31.270182983909681,-93.620343000000005 31.271025000000002,-93.615257056394739 31.261768439618621,-93.61394199999998 31.259374999999995,-93.614287999999988 31.251631,-93.616308000000004 31.244595000000004,-93.616007481020262 31.233959925788763,-93.613835693061347 31.232449117569455,-93.609977782626956 31.229765355202261,-93.609827614285464 31.229660890324059,-93.608033931702224 31.227867209671889,-93.60740940488401 31.227242683526022,-93.605259887151632 31.224152751460338,-93.604319472818304 31.220794125122111,-93.604319472818304 31.215285983654958,-93.607287999999997 31.205403,-93.602442999999994 31.182541,-93.600307999999998 31.176157999999997,-93.598827999999997 31.174679,-93.595531708436056 31.171774432382691,-93.588772842417583 31.16581877494577,-93.588502999999989 31.165581,-93.588046655571759 31.165671453282986,-93.583339301771971 31.166604510813709,-93.579215000000005 31.167421999999995,-93.578993496784307 31.167654977688123,-93.574136071231791 31.172764031170193,-93.569563000000002 31.177574,-93.560942999999995 31.182481999999997,-93.552649000000002 31.185575,-93.548930999999996 31.186601,-93.535096999999993 31.185614,-93.533756450961803 31.184752004501149,-93.533306999999994 31.184463,-93.5330935917342 31.183965183917415,-93.531744000000003 31.180816999999998,-93.533193520062923 31.174490811082034,-93.53417786817559 31.170194787673282,-93.536829999999981 31.158620000000003,-93.540253000000007 31.156578999999997,-93.544009577425854 31.153014849431809,-93.544887639546317 31.148844041597808,-93.544887639546317 31.143136612291205,-93.544701999999987 31.135888999999999,-93.540277800652078 31.128868068802213,-93.539619249807799 31.121843550568837,-93.541375382556595 31.113501939154769,-93.541635919885238 31.113241401693255,-93.548470239502265 31.106407078590973,-93.549716998224596 31.105160319232844,-93.55112206776522 31.099540038044921,-93.551692642249563 31.097257738879012,-93.551034091405285 31.091111287020031,-93.546643772295099 31.082989189009115,-93.540128999999993 31.078002999999995,-93.53104031045666 31.074698717981779,-93.527873992025093 31.072210897922254,-93.526043656150705 31.070772777782928,-93.524020490083288 31.067083472240864,-93.523009982318626 31.065240780256033,-93.523659621286654 31.063941504256789,-93.525329858273139 31.060601035263321,-93.529255791555698 31.057567354514948,-93.532069000000007 31.055264,-93.531218761655126 31.051678447674814,-93.523247999999995 31.037841999999998,-93.516942620821894 31.032584114108545,-93.516407263768343 31.029550433360171,-93.516883288197775 31.024314186160638,-93.516942620821894 31.023661529978199,-93.539525999999995 31.008497999999999,-93.540062152267268 31.008345085566372,-93.540618575989114 31.008186389569964,-93.555580999999989 31.003918999999996,-93.562626264226125 31.00599480945781,-93.566016847371429 31.004567194682853,-93.567979815741779 31.001533515663564,-93.569764334642755 30.996715319472376,-93.571101253513504 30.991033414001794,-93.571905755076102 30.987614282198351,-93.567971999999997 30.977981,-93.560533000000007 30.971285999999999,-93.55046299120518 30.967360467203815,-93.549841 30.967117999999996,-93.539153617393822 30.956968324013513,-93.532549000000003 30.950695999999997,-93.526524876707626 30.939912016599852,-93.526293050708773 30.939497017171423,-93.526245000000003 30.939411,-93.526242458076936 30.939167805401102,-93.526231146824912 30.938085618677029,-93.526146999999995 30.930035,-93.526269219450654 30.929894609689271,-93.530935999999983 30.924533999999998,-93.542488999999989 30.920064,-93.54502991280485 30.920837107400992,-93.546884259495414 30.92151141825828,-93.549244331161987 30.921005686748707,-93.550358562122057 30.920030731622223,-93.551941554990407 30.918645608548566,-93.555650241837967 30.911228247920597,-93.555751501305451 30.910053639118178,-93.555774257662236 30.909789665608852,-93.556493125509377 30.9014508058257,-93.562447641167196 30.896531852982324,-93.563812214002311 30.895404595987301,-93.564247644832776 30.895044891882932,-93.567787752332634 30.888301832311882,-93.567450600170787 30.878524390216981,-93.566008182600839 30.875519355165832,-93.565853452041281 30.875197,-93.565427680666076 30.874309976760035,-93.563763247930751 30.87311591407202,-93.559394659034922 30.869981891957959,-93.55904186947815 30.86972880101742,-93.558616999999984 30.869423999999999,-93.558608112367665 30.868835818489011,-93.558593354020289 30.867859114376206,-93.558393833586933 30.854654896933653,-93.558352334289978 30.851908482785802,-93.558231866260058 30.843935935637496,-93.558171999999999 30.839973999999998,-93.553625999999994 30.835139999999999,-93.55374115920948 30.832414921630001,-93.554057 30.824940999999995,-93.561666000000002 30.807738999999998,-93.563243 30.806218000000005,-93.564501487304341 30.805543276361082,-93.569303000000005 30.802969,-93.578395 30.802046999999998,-93.584264999999988 30.796662999999995,-93.588934854633479 30.787551489258888,-93.589380999999989 30.786681000000002,-93.589895999999996 30.77776,-93.591925627378814 30.768225181611253,-93.592827999999997 30.763985999999996,-93.607757000000007 30.757656999999995,-93.611581311334461 30.752392350515215,-93.615058988962588 30.747604886281291,-93.619129 30.742001999999996,-93.617688 30.738479000000005,-93.609908791486006 30.729403419430973,-93.609718999999998 30.729181999999998,-93.609544 30.723138999999996,-93.61030547238029 30.720788970554505,-93.611192000000003 30.718053,-93.61618399999999 30.713980000000003,-93.616977218405893 30.712276394979256,-93.620773999999997 30.704122000000005,-93.621061387132315 30.696047232392139,-93.621092999999988 30.695159,-93.62235785978659 30.692974242186811,-93.629903999999996 30.679939999999995,-93.632922525899005 30.677439880221801,-93.638212999999993 30.673057999999997,-93.646373493696458 30.671658473870171,-93.653439445062318 30.670446661945991,-93.654970999999989 30.670183999999999,-93.666219386787546 30.661299653678171,-93.670353999999989 30.658033999999997,-93.670860468306827 30.657347728689221,-93.683099999999996 30.640763000000003,-93.685120999999981 30.625201,-93.684323003112922 30.617258061147268,-93.683396999999985 30.608040999999997,-93.680812614601606 30.602993111696524,-93.680648411741274 30.602453589051585,-93.679828117977763 30.599758343304948,-93.681234543283509 30.596101640780542,-93.683902548646543 30.593069810094963,-93.684328672415049 30.59258557751615,-93.684347894395486 30.592579170189346,-93.687282162286593 30.59160108089231,-93.689533999999995 30.592759,-93.692869000000002 30.594382000000003,-93.712453999999994 30.588479,-93.72107859525056 30.580404159651369,-93.727657631584904 30.574244488790981,-93.727844000000005 30.574069999999995,-93.727840097341868 30.573768021870688,-93.72780696123904 30.571204031383882,-93.727747245613443 30.566583382517752,-93.727745999999996 30.566486999999999,-93.725846999999987 30.556978,-93.728764326223569 30.546403128121515,-93.729195000000004 30.544841999999999,-93.736587760607577 30.541316766984647,-93.740252999999996 30.539569,-93.738909526480768 30.537838512460276,-93.732793 30.529960000000003,-93.727721000000003 30.525671000000003,-93.718711305261792 30.520890798500346,-93.714321999999996 30.518561999999996,-93.710116999999997 30.506399999999996,-93.713193644304937 30.50058809182816,-93.716678000000002 30.494005999999995,-93.71365216083376 30.483878530555742,-93.711446941284677 30.476497671106777,-93.710595424186792 30.473647647388944,-93.709703157003446 30.47066123332699,-93.708899372668625 30.467970970942378,-93.705844999999997 30.457747999999999,-93.697828 30.443837999999996,-93.6978 30.440583,-93.698862234241474 30.438260713588438,-93.702220303997905 30.430919206922557,-93.702664999999996 30.429947000000002,-93.722313999999997 30.420729,-93.729486046484141 30.413342592858086,-93.738025291703323 30.404548123662593,-93.738321805525445 30.404242747530638,-93.745333000000002 30.397022,-93.751243378615428 30.396311282781173,-93.751436999999996 30.396287999999998,-93.754787283332149 30.393127406185759,-93.75746720581121 30.390599218098316,-93.757654000000002 30.390422999999995,-93.757872622462301 30.389610210267922,-93.758470934573069 30.387385818798332,-93.75855399999999 30.387077,-93.758091991038413 30.3842338214119,-93.758032188807945 30.383865801664729,-93.757931393201204 30.383245510859378,-93.75589426835937 30.370709152880856,-93.756044740613035 30.365928314513319,-93.75610723110799 30.3639428524199,-93.756352000000007 30.356166000000002,-93.758519945992674 30.350935458285047,-93.760658351649255 30.34577618769989,-93.763244572034736 30.339536487238696,-93.765822 30.333317999999995,-93.764264999999995 30.330222999999997,-93.760690955159149 30.32995156504764,-93.760328 30.329923999999998,-93.747921244232074 30.314935395431327,-93.743830002049762 30.309992764786195,-93.741160171732417 30.306767342150266,-93.738698999999997 30.303793999999996,-93.734966161369201 30.301561360829975,-93.729390287632427 30.298226388348422,-93.724220000000003 30.295133999999997,-93.718684474451791 30.295009979388311,-93.714319430116035 30.294282471059141,-93.71311219174963 30.293184979315004,-93.711118400234781 30.291372437742464,-93.709949692759622 30.289928741213533,-93.708644873043468 30.288316906143507,-93.708448001046747 30.287627854154977,-93.707590519980414 30.284626670422831,-93.706607851977495 30.281187332412603,-93.706635817233519 30.280914670488997,-93.707189856385114 30.275512775340033,-93.709131999999997 30.271826999999995,-93.707538803456245 30.253087036355307,-93.707271000000006 30.249936999999996,-93.705637767078656 30.244573755694763,-93.705083000000002 30.242751999999996,-93.707646217538425 30.23733474070027,-93.713358999999997 30.225261,-93.71802168481895 30.219915738218987,-93.719219999999993 30.218541999999999,-93.720945999999998 30.209852,-93.717397000000005 30.193439,-93.710467999999992 30.180670999999997,-93.706634735424259 30.17682001000631,-93.705927274531248 30.176109277739844,-93.705791510460429 30.175972885881706,-93.703764000000007 30.173936,-93.703646997347349 30.173527735424756,-93.702964616901454 30.171146663230584,-93.701744610591902 30.166889619937699,-93.701686103512344 30.166685467574972,-93.697748000000004 30.152943999999998,-93.696083741705934 30.150925109485563,-93.688211999999979 30.141376,-93.69286799999999 30.135216999999997,-93.69498 30.135185,-93.698276000000007 30.138608000000005,-93.700984936503929 30.137486558544058,-93.701251999999997 30.137376,-93.7012922571502 30.136537706048752,-93.701585086407604 30.130439981942867,-93.701656556414648 30.128951727699913,-93.701742498922442 30.127162105630983,-93.701985639262489 30.122099077688652,-93.702366286953335 30.114172668214064,-93.702403861450691 30.11339023643033,-93.702436000000006 30.112720999999997,-93.70268530105453 30.112503701678254,-93.704703872918159 30.110744253531749,-93.710410303455276 30.105770356484715,-93.714491639657382 30.10221294069715,-93.723764999999986 30.094129999999996,-93.727140999999989 30.092110594495406,-93.7293848599641 30.090768395691203,-93.72996305770063 30.09042253796256,-93.732484999999997 30.088913999999995,-93.734084999999979 30.086129999999997,-93.731705540540531 30.081478540540548,-93.731605000000002 30.081282000000002,-93.729179922109864 30.079341937687897,-93.727017487667368 30.077611990133899,-93.71640499999998 30.069121999999997,-93.716151269697463 30.069056930886212,-93.707507094464489 30.066840132907302,-93.702179999999998 30.065473999999995,-93.700580000000002 30.063666,-93.699479012508235 30.0595596142199,-93.699395999999993 30.059249999999995,-93.699786698153744 30.05843348475733,-93.700658293446523 30.056611948527472,-93.700819999999993 30.056273999999998,-93.702099264262131 30.055460929156467,-93.703267223154896 30.054718601437116,-93.703940000000003 30.054290999999999,-93.704473210548429 30.054251542735575,-93.709782747672762 30.053858640136632,-93.710785394684464 30.05378444485228,-93.720804999999999 30.053042999999995,-93.729054152595779 30.045230570163486,-93.729990027439044 30.044344241966268,-93.737446000000006 30.037282999999999,-93.739158000000003 30.032626999999998,-93.739733999999999 30.023987000000002,-93.741078000000002 30.021571000000002,-93.744068611359822 30.019549890100706,-93.74834924745744 30.01665695787004,-93.753252045558341 30.013343557169065,-93.766227014667976 30.004574835541469,-93.782835629207284 29.993350429819579,-93.786934999999986 29.990579999999998,-93.789430999999993 29.987812000000002,-93.803328792953494 29.962666096659486,-93.807814999999991 29.954549,-93.813734999999994 29.935126,-93.816550000000007 29.920725999999995,-93.818997999999993 29.914822,-93.830374000000006 29.894358999999998,-93.838374000000002 29.882854999999999,-93.853129483564672 29.866348149842587,-93.854474509531912 29.864843479256791,-93.855140000000006 29.864098999999996,-93.857517787207271 29.862146563102172,-93.862474802662518 29.858076283033213,-93.863569999999996 29.857177,-93.864820388168837 29.856398395289631,-93.872445999999997 29.851650000000003,-93.890679000000006 29.843159000000004,-93.900728 29.836967,-93.911111176241661 29.828996955749506,-93.916359999999997 29.824967999999998,-93.922743999999994 29.818808,-93.927992000000003 29.809640000000002,-93.929208000000003 29.802952,-93.928808000000004 29.79708,-93.926503999999994 29.789559999999998,-93.922407000000007 29.785048,-93.898470000000003 29.771576999999997,-93.893861999999999 29.767289000000002,-93.890820999999988 29.761672999999995,-93.891780610698319 29.758916671398389,-93.892526767476923 29.756773455119472,-93.893828999999997 29.753032999999999,-93.891732576672823 29.744984915009951,-93.891637000000003 29.744618000000003,-93.891484462723341 29.744488863328282,-93.888820999999993 29.742234000000003,-93.873941000000002 29.737770000000005,-93.870019999999997 29.735482,-93.863203999999996 29.724059,-93.837970999999982 29.690618999999998,-93.852868 29.675885,-93.866980999999996 29.673085,-93.889989999999997 29.674012999999999,-93.930999999999997 29.679611999999999,-93.955443390383635 29.680262610936268,-93.955453232202885 29.68026287289646,-93.991585827226885 29.681224615973395,-94.000169999999997 29.681453101326589,-94.000222586816207 29.681454501032487,-94.001406000000003 29.681486,-94.010062765207763 29.679864152681674,-94.056505999999999 29.671163,-94.132576999999984 29.646217,-94.354166823921716 29.561457673765378,-94.370794193562546 29.555097613439198,-94.391123278008692 29.54732162684321,-94.45341877657637 29.523493256060661,-94.456196753642018 29.522430664556182,-94.45805240375158 29.521720868184531,-94.499046371673685 29.506040450016997,-94.499089575343746 29.506023924375612,-94.500455432020999 29.505501476685335,-94.500806999999995 29.505367,-94.552043946167103 29.48495633977835,-94.552044379602123 29.484956167115939,-94.568074121423052 29.478570587212708,-94.593696728539513 29.46836361027578,-94.594852999999986 29.467903,-94.599458690353401 29.465813271763974,-94.62931993394271 29.452264405230761,-94.631084 29.451464,-94.634656044789836 29.449584234717392,-94.661528069434993 29.435443006940758,-94.670389 29.430779999999999,-94.674924987623086 29.427889211977174,-94.680871144138621 29.42409972235215,-94.694158000000002 29.415631999999999,-94.708472999999998 29.403049000000003,-94.723958999999979 29.383268000000005,-94.730956033155138 29.369322304827527,-94.731047000000004 29.369140999999996,-94.731324722869132 29.369141342444962,-94.731537324603394 29.369141604592603,-94.742750849251038 29.369155431380086,-94.744595216508316 29.369157705569055,-94.744833999999997 29.369157999999999,-94.761491000000007 29.361882999999999,-94.772184717669788 29.3616343088914,-94.778690999999995 29.361483,-94.780073439975141 29.362532749099824,-94.782355999999993 29.364266,-94.782645420567292 29.368514320481975,-94.783130999999997 29.375641999999996,-94.766847999999996 29.393488999999999,-94.754099999999994 29.400999999999996,-94.743385419572206 29.410035318862811,-94.73704402931665 29.415382843516582,-94.727822669267709 29.423158969605012,-94.723817999999994 29.426535999999995,-94.716270519001597 29.430976788539081,-94.706539419927282 29.436702374764607,-94.706364999999991 29.436804999999996,-94.686385999999999 29.466508999999995,-94.681540999999996 29.471388999999999,-94.672399999999996 29.476842999999999,-94.665852999999998 29.478401000000002,-94.656737000000007 29.478032999999996,-94.645948000000004 29.473769,-94.628217000000006 29.475986000000002,-94.608557000000005 29.483344999999996,-94.594211 29.492127,-94.595122262498009 29.503650874486677,-94.595439999999996 29.507669,-94.591407000000004 29.513857999999999,-94.580274000000003 29.525295,-94.566674000000006 29.531987999999995,-94.553989999999985 29.529558999999999,-94.546993999999998 29.524379,-94.532347999999999 29.5178,-94.511044999999996 29.519649999999995,-94.495024999999984 29.525030999999998,-94.503428999999997 29.543249999999997,-94.509486999999993 29.542589999999997,-94.523742999999996 29.545987,-94.523871183237745 29.546315590042923,-94.5261306113389 29.55210749848424,-94.526336 29.552633999999998,-94.542531999999994 29.568999999999999,-94.546193009360195 29.571896121601313,-94.546385 29.572047999999995,-94.546803832691651 29.57214903106096,-94.55398799999999 29.573882,-94.570006000000006 29.572232,-94.578210999999982 29.567281,-94.593518000000003 29.561319,-94.625889999999998 29.552807999999999,-94.634988842169335 29.550728838088908,-94.643914431984982 29.54868926579681,-94.666855093063802 29.543447131924982,-94.691625000000002 29.537787000000002,-94.693243673136905 29.537529479678042,-94.718275999999989 29.533546999999995,-94.740699000000006 29.525857999999999,-94.757688999999999 29.524616999999999,-94.768675999999999 29.525659,-94.780938000000006 29.531093000000002,-94.785987568065153 29.540133852805589,-94.789123822994313 29.545749069554745,-94.789562096440733 29.546533763545689,-94.78971899677407 29.546814681200559,-94.790604999999999 29.548400999999998,-94.779438999999996 29.549472000000002,-94.772471009935998 29.548613672580952,-94.771052999999995 29.548438999999995,-94.762972090755014 29.555767305595641,-94.75523699999998 29.562781999999999,-94.750081379755628 29.56810096117977,-94.734626000000006 29.584046,-94.731874420576986 29.588423440241069,-94.724443803393115 29.600244680945409,-94.708741000000003 29.625226,-94.705273448792255 29.640626536822896,-94.703938528752261 29.6465553563269,-94.702680930363101 29.65214076491651,-94.702542126991759 29.652757236398369,-94.699660909360375 29.665553672721437,-94.69780371146922 29.673802100155214,-94.694887994254785 29.686751760487848,-94.693153999999993 29.694452999999999,-94.692434000000006 29.70361,-94.692611750388934 29.704808689927841,-94.695098387970873 29.721577752663908,-94.695317000000003 29.723051999999999,-94.695611486157915 29.72357178078331,-94.697558868014866 29.727008993840069,-94.705700105090941 29.741378628781629,-94.713878412983604 29.755813695314995,-94.714586470042065 29.757063446593907,-94.722078339612551 29.770286919851305,-94.724615999999983 29.774766,-94.735270999999997 29.785433,-94.738125273271791 29.786265833277604,-94.740919000000005 29.787080999999997,-94.749144589762409 29.783534045463153,-94.75591801041729 29.780613280409739,-94.771512 29.773888999999997,-94.792237999999998 29.767432999999997,-94.798897371247961 29.764438558858895,-94.816085 29.756710000000002,-94.81943931055217 29.753325616252695,-94.823987131664666 29.748737021482022,-94.851107999999996 29.721373000000003,-94.856932183541645 29.710462974624775,-94.860426638443812 29.703917062844585,-94.864167858487249 29.696908903620852,-94.865007000000006 29.695336999999999,-94.865123196353878 29.694545038919138,-94.867438000000007 29.678768000000002,-94.872550999999987 29.67125,-94.893107 29.661335999999999,-94.915413 29.656613999999998,-94.921317999999999 29.658177999999999,-94.928410408640929 29.669495826038883,-94.930071799099807 29.672147016790593,-94.930110565443542 29.672208878811933,-94.930656833967475 29.673080595662611,-94.931474856161643 29.67438596783704,-94.934166999999988 29.678681999999998,-94.935264231405057 29.686686879688732,-94.935319060033862 29.687086883348073,-94.935997030967087 29.692033037575822,-94.936088999999996 29.692703999999999,-94.936280063994801 29.692851065945039,-94.941277009519624 29.696697319220664,-94.942680999999993 29.697778,-94.942922907078852 29.697804516058127,-94.95311095436017 29.698921254167477,-94.965343618259496 29.700262107971746,-94.965962999999988 29.70033,-94.972666000000004 29.684869999999997,-94.980123280315652 29.679059463608382,-94.986438191421769 29.674139034277729,-94.988580124776774 29.672470090483102,-95.001800051879343 29.662169436052462,-95.002396227716986 29.661704909944582,-95.005398 29.659365999999995,-95.011683000000005 29.649802000000005,-95.013860566469219 29.644103309100927,-95.014229369455222 29.643138151779844,-95.015636 29.639457,-95.015582911847446 29.639202042718885,-95.014543866006605 29.634211997110764,-95.013498999999996 29.629193999999998,-95.006633444897872 29.623869765921089,-95.00056235200779 29.61916163683599,-95.000370188745762 29.619012614335521,-94.997782627529062 29.617005962082896,-94.997731096758997 29.616965999999998,-94.995478872439179 29.615219401320278,-94.993499353954022 29.613684285860323,-94.988871000000003 29.610095,-94.988045541621688 29.608923290953985,-94.982835617337045 29.60152798723708,-94.982705999999993 29.601344000000005,-94.982886347998431 29.601051719777942,-94.983895794498991 29.599415764569699,-94.98693593300419 29.594488776939745,-94.988992999999994 29.591155,-94.991605757589539 29.588791109774153,-94.991811610459919 29.588604864563266,-94.992208959522046 29.588245363334387,-95.006677600766466 29.575154872369662,-95.007235451984087 29.574650156950938,-95.007670000000005 29.574256999999996,-95.00815781845921 29.573398130166158,-95.016627 29.558487,-95.018253 29.554884999999999,-95.016926355758628 29.548485488141377,-95.015164999999996 29.539988999999998,-95.012091452887788 29.536262245236642,-95.011587670186657 29.535651395780732,-95.011086587278399 29.535043819893005,-95.001666768519442 29.523622047865974,-94.999580999999992 29.521093,-94.989064037839412 29.515168017977793,-94.982063906682782 29.511224326765198,-94.981915999999998 29.511140999999995,-94.981645984265953 29.511070508097891,-94.961088181447877 29.505703566689924,-94.958443000000003 29.505013000000002,-94.958183821928699 29.504969740154092,-94.957844913785792 29.504913172428417,-94.95747910332102 29.504852114391142,-94.955724072517796 29.504559179260749,-94.952845264169682 29.504078672538427,-94.930551536860648 29.500357589179547,-94.927405495678158 29.499832478177321,-94.909464999999997 29.496837999999997,-94.913072085311995 29.488019044482122,-94.913385000000005 29.487254,-94.917178632618899 29.481741136316387,-94.925104227340569 29.470223752399235,-94.925293406029382 29.469948840084836,-94.925914000000006 29.469047,-94.930860999999993 29.450503999999999,-94.923011455799639 29.448810114938265,-94.920334997737442 29.448232551169699,-94.919400999999993 29.448030999999997,-94.916063708203708 29.446327523795176,-94.890799999999984 29.433432,-94.888257132054065 29.420136433311271,-94.887299999999996 29.415132,-94.887087039327696 29.40154064293051,-94.886938304445962 29.392048238229908,-94.886925408340758 29.391225196262944,-94.886904215833582 29.389872669858736,-94.886764190565785 29.380936121184895,-94.886591910643261 29.369941049100753,-94.886536208040312 29.366386054846032,-94.886982892003275 29.364738908620176,-94.888420210858001 29.359438798199445,-94.888544709543254 29.358979709544975,-94.888781730376067 29.358105695694917,-94.894234145274325 29.337999926591962,-94.894147383920654 29.327241695272729,-94.894002695197727 29.309300588032027,-94.893993580875261 29.308170430590454,-94.891329624021282 29.304475264201969,-94.888683946869179 29.30080545353194,-94.886599269217157 29.297913803549264,-94.886536208040312 29.297826331584119,-94.885816422022174 29.297499155955627,-94.884216982863776 29.296772137788121,-94.876917125093229 29.293454018939102,-94.875951551627523 29.293015121686942,-94.86617837453683 29.293883848703121,-94.865126326153927 29.293977364132552,-94.861112574100105 29.294855372432302,-94.849730461009372 29.297345209778594,-94.825607939204673 29.30577638202961,-94.824952733476934 29.30600538596191,-94.823862547308252 29.313200608971236,-94.822547126780194 29.321882377573708,-94.82230657170463 29.344254498409398,-94.810695999999993 29.353434999999998,-94.797913847039041 29.344567105809805,-94.79693012269928 29.343884625840758,-94.784895000000006 29.335535,-94.779995 29.334935000000002,-94.777063999999996 29.336811,-94.773074869484503 29.336485139838025,-94.745528999999991 29.334235,-94.744945 29.33641,-94.731319999999997 29.338066,-94.722529999999992 29.331445999999996,-94.731082 29.331833,-94.769694999999999 29.304936,-94.780304129101268 29.295750693651897,-94.786095000000003 29.290737,-94.793321795438203 29.286014946162535,-94.795651468635626 29.284492716516493,-94.803695000000005 29.279236999999998,-94.809348860129617 29.275904173901317,-94.81020919937113 29.275397022855465,-94.819018398045671 29.270204194137058,-94.82210781776098 29.268383049216432,-94.825036245866656 29.266656805306088,-94.825782574142963 29.266216861214712,-94.826962003659688 29.265521613475173,-94.833188167130103 29.261851427154124,-94.844390135018429 29.255248113651685,-94.870677905110114 29.23975205180561,-94.881596387366812 29.233315846843187,-94.896165027201874 29.224727954332334,-94.925556066041452 29.207402583865772,-94.927613957028456 29.206189502425392,-94.940693735267132 29.198479261054111,-94.968741214129224 29.181945889621023,-94.978383546115566 29.176261947153485,-94.981700088962569 29.174306918145966,-95.026218999999998 29.148064000000002,-95.076832914261459 29.114498139229923,-95.081772999999998 29.111222,-95.084611040272236 29.108948681405003,-95.100241410561338 29.096428488590096,-95.110484 29.088224,-95.116308293211759 29.081343778536318,-95.119264367911811 29.077851775668329,-95.119484217932538 29.077592067446851,-95.122403192505772 29.074143890856067,-95.122524999999996 29.074000000000002,-95.122638295373392 29.073709965581063,-95.125134000000003 29.067321,-95.183550616106302 29.028323983126334,-95.191390999999996 29.023089999999996,-95.192301227546167 29.02243038040822,-95.237672480263356 28.989550945676651,-95.238923999999997 28.988644,-95.240558404572027 28.987315672512366,-95.251568580535192 28.978367386619187,-95.251619678822578 28.978325857575001,-95.272266000000002 28.961545999999995,-95.29656403895315 28.934716691525271,-95.297146999999981 28.934073,-95.309703999999996 28.928262,-95.334686660244515 28.911063042846731,-95.353450999999993 28.898145,-95.376979000000006 28.876159999999999,-95.377903963555724 28.874482723635413,-95.38239 28.866347999999999,-95.416173999999998 28.859482,-95.436326577581042 28.85908617652915,-95.439594 28.859022000000003,-95.449516932572138 28.854239851149391,-95.480746000949352 28.839189657836059,-95.485144835951402 28.837069731735976,-95.486768999999995 28.836286999999995,-95.506945757563287 28.824808612805594,-95.536465934189138 28.808014833314715,-95.564052739104355 28.79232093268277,-95.564094788066555 28.792297011382839,-95.564132228771385 28.792275711681647,-95.568135999999981 28.789997999999997,-95.576201168007842 28.785870627961152,-95.606319447682353 28.770457515020929,-95.613122366343802 28.766976102576891,-95.695711236705606 28.724711019702028,-95.715243498124195 28.714715330888584,-95.812504000000004 28.664942,-95.854124934570734 28.646410960033691,-95.884026000000006 28.633098,-95.920915435374582 28.618912188118028,-95.97832748198536 28.596834417485056,-96.000681999999983 28.588238,-96.000998496292368 28.588108377001081,-96.024040703743012 28.578671299526803,-96.035336417502748 28.574045070633311,-96.05294532761279 28.566833233429691,-96.077867999999995 28.556625999999998,-96.194412 28.502223999999998,-96.220123346321373 28.492065891861738,-96.220376184174313 28.491966,-96.226882700448613 28.487451845000788,-96.241923733725443 28.477016528665938,-96.244750999999994 28.475055,-96.270391000000004 28.461929999999999,-96.303212000000002 28.441870999999999,-96.321560000000005 28.425148,-96.328817 28.423658999999997,-96.341616999999999 28.417333999999997,-96.371116999999998 28.397660999999999,-96.372100999999986 28.393874999999998,-96.370716999999985 28.387667,-96.378616389014681 28.383909329746462,-96.379349732835649 28.386024690464755,-96.381702691108558 28.392811896356477,-96.381863685354148 28.393276290946375,-96.375880899310658 28.401794149460329,-96.37413840285555 28.404274990018202,-96.340801887331921 28.432913073072363,-96.338559687910475 28.434839257985413,-96.335119195902806 28.437794848703732,-96.312964581561445 28.451131053409146,-96.280819757359396 28.470480970729877,-96.274497619264608 28.474286648703266,-96.268341347214189 28.477992481854848,-96.252027698910211 28.484249764669329,-96.250247000000002 28.484932771712327,-96.223824788704931 28.495067307260509,-96.218978121459415 28.500382701101032,-96.21505000939203 28.509679222336811,-96.145447855080619 28.544740658174199,-96.10473518795402 28.559498996555909,-96.046210731424992 28.586980036018211,-96.032979113622659 28.589015683181284,-96.007533711461477 28.59970275682273,-95.986159544454679 28.60631857558586,-95.982088289576367 28.614461085342473,-95.98565064745685 28.621076904105603,-95.983106103295938 28.641942154390655,-95.97852589224803 28.650593590730978,-95.986065974637228 28.655467849280154,-95.996337701374344 28.658736120211515,-96.002953500413568 28.656191585912577,-96.006515878017979 28.648049056432036,-96.010005951759737 28.648641710656278,-96.010506546843942 28.648726717396318,-96.011440067305529 28.648885239790378,-96.014343010193883 28.649378192516537,-96.026200716522851 28.65139176594381,-96.03348799089656 28.652629228032097,-96.039323368019012 28.651170385770797,-96.047737442142406 28.649066870151618,-96.049244844336243 28.648218956037223,-96.052682972641108 28.646285007998213,-96.05836686193534 28.643087818836001,-96.072165030584017 28.635326345489485,-96.092812363862251 28.627145317384699,-96.098878916233431 28.624741586366319,-96.099137163186526 28.624639261986079,-96.099760206508392 28.62447226081035,-96.102639895829256 28.623700385909448,-96.141413249033207 28.613307536255487,-96.148501276515404 28.611407654045699,-96.187178316202875 28.593595864643298,-96.198374286842139 28.586980055742131,-96.221784081288092 28.580364246840958,-96.228908787187095 28.580873158631725,-96.233997875508891 28.596649310733014,-96.233997875508891 28.601738394123839,-96.222292978285921 28.607336389305434,-96.214150448805384 28.613443281484855,-96.212623728226021 28.62260364440889,-96.2309444244882 28.64143324753087,-96.208552463485731 28.662298487953962,-96.214659365527126 28.665351929112688,-96.192267404524671 28.68774389011514,-96.1912495908051 28.694359708878277,-96.195829762405154 28.698939880478335,-96.202445561444364 28.700975507917487,-96.208747675276499 28.700187749031503,-96.21684000834783 28.699176214258408,-96.221467818495611 28.69859774191346,-96.222801895007663 28.698430983480506,-96.223384071149837 28.698294,-96.224163927167865 28.698110503315906,-96.227000018566372 28.697443183508955,-96.229623268039219 28.696825944469072,-96.231453341209956 28.69639533631743,-96.233964222112746 28.695240331316239,-96.23422531976 28.695120226420762,-96.234426397558138 28.695027730650764,-96.243315632596989 28.690938683290845,-96.256898753233088 28.684690448956413,-96.263514562134276 28.683672635236839,-96.268603640594122 28.688761723558645,-96.287942160437836 28.68316371851509,-96.304227224329892 28.671458831154069,-96.305245042980445 28.660262850652849,-96.303866760710434 28.646480081370939,-96.303718312539132 28.644995605411349,-96.322902111893882 28.641863561491792,-96.322903115546453 28.641863397630402,-96.328654788116609 28.640924350533034,-96.373438710121519 28.626674919011112,-96.376492171004159 28.620059100247982,-96.384634680760783 28.615987845369677,-96.473693647496702 28.573239550803915,-96.48794308888057 28.569677192923439,-96.482854000558774 28.580364266564878,-96.480309456397848 28.596649335387912,-96.485907441717487 28.60784531588914,-96.490487633041468 28.610898766909834,-96.510843966604781 28.614970031650095,-96.510335069606953 28.617514575811001,-96.497612348802434 28.625148188569788,-96.496594535082863 28.630746183751381,-96.49964797624159 28.635835272073191,-96.506263795004728 28.638379806372129,-96.513590449607946 28.639711925390898,-96.518002756430107 28.640514162994929,-96.524548246905439 28.641704252172264,-96.541744210187403 28.644830790950802,-96.545449731689985 28.645504522133091,-96.555118991611849 28.64601343885484,-96.5632615210924 28.64448670841351,-96.564664053901609 28.647882315216158,-96.572092291837293 28.665866475800886,-96.572930781014264 28.667896502859467,-96.570386236853366 28.674003385176928,-96.559190266214102 28.687235002979271,-96.559699163211917 28.6913062775815,-96.561225893653244 28.696395346179383,-96.566823878972883 28.697922096344637,-96.575158129308363 28.702846874961025,-96.578019859474111 28.704537895383844,-96.57828826199534 28.705826226653553,-96.579938546079447 28.713747585140421,-96.580564403635009 28.716751699466613,-96.584126761515478 28.722858581784067,-96.584439828543964 28.722940967911413,-96.591359183115401 28.724761852179114,-96.593796021437342 28.725403125944972,-96.611342043876562 28.720366765465901,-96.616906294097589 28.718769618875786,-96.625254999999996 28.716373230030175,-96.632357663078409 28.714334501780041,-96.638120426114043 28.71268037463507,-96.643733366943522 28.711069252030907,-96.64589364157122 28.710449172933409,-96.648758110223909 28.709626963981723,-96.65548660082564 28.704200766225345,-96.664534272187169 28.696904262901135,-96.657918463285995 28.687743919701024,-96.642136214348383 28.67476740345478,-96.635017595423747 28.668914316579048,-96.634564255386636 28.662567599984854,-96.634358790297441 28.659691108644115,-96.634304719917793 28.658934128568227,-96.633999771842213 28.654664885057134,-96.627892869800831 28.650084693733149,-96.626425176648581 28.649921620227584,-96.623312698200763 28.64957579673532,-96.621378075676532 28.648286046719594,-96.615940371111847 28.64466090565978,-96.615679075580019 28.64448670841351,-96.614055987266909 28.642701311583636,-96.613585709918453 28.642184006591457,-96.613038272810982 28.641581825879328,-96.612716570908134 28.641227953848528,-96.611999586497333 28.640439271135588,-96.610589997120172 28.638888723093881,-96.610589997120172 28.638695619081329,-96.610589997120172 28.63634418879494,-96.61975034032028 28.62769274259265,-96.620390401117646 28.626519297452973,-96.620672695530928 28.626001757543317,-96.621575870071126 28.624345937066781,-96.622336527533278 28.62295139797671,-96.622803791340985 28.622094747411062,-96.621924089240224 28.619379144726071,-96.621515564809087 28.618118047314677,-96.621338841511317 28.617572510068054,-96.620571817957583 28.61520474122884,-96.620437729127232 28.614790814755992,-96.617253050911174 28.604959849584038,-96.615239196090883 28.598743166058551,-96.614649885719274 28.596923990196654,-96.613008078443599 28.591855801497097,-96.611528402529856 28.587288105363601,-96.611113505533794 28.586007336117376,-96.611098903979951 28.585962261746474,-96.608298572876635 28.583628658523324,-96.608045443097311 28.583417717585569,-96.607377235577218 28.583437664220053,-96.600365219155734 28.58364697962633,-96.593251058093557 28.583859344147964,-96.573948594733835 28.584435541167107,-96.565297148531556 28.582399903865994,-96.564279334811971 28.57629300182461,-96.563658896232639 28.575155527088082,-96.562968608029692 28.573889994257026,-96.561225893653244 28.570695006643017,-96.557566061723506 28.569051817003789,-96.543745727976315 28.562846769979732,-96.536289388489891 28.559499026141786,-96.535271536438941 28.559346348925885,-96.526111211846271 28.557972305562419,-96.524846286909124 28.55686549700842,-96.523547686998668 28.555729222873186,-96.522039937244045 28.554409942750958,-96.516783301381025 28.541093122164042,-96.514406314623301 28.535071417976255,-96.512075206364955 28.532603188828926,-96.505754868421008 28.525911074776143,-96.496773944100411 28.520225902118948,-96.493684489370622 28.518270192113103,-96.482894459981281 28.511439806078794,-96.464303363514816 28.49967112954555,-96.450283853050735 28.49079639296917,-96.41974938229167 28.46738661824714,-96.410828816467941 28.459457253614527,-96.410588999643707 28.459244083835621,-96.409758652296418 28.458206146634446,-96.408886828651134 28.457116363910039,-96.40506625078595 28.452340627696451,-96.402446489887097 28.449065917053971,-96.402758256176753 28.447714917044181,-96.403973200604497 28.442450108152798,-96.407195206365273 28.441281062045864,-96.417343901660857 28.437598792799108,-96.461479843413926 28.421584870195201,-96.476120924474287 28.411702150055138,-96.481836236149007 28.407844318412668,-96.504737094149291 28.397666161492985,-96.511137484289378 28.396220910815867,-96.520513236388609 28.394103803612502,-96.534249520963641 28.388796609353736,-96.542905217114992 28.385452367272176,-96.559699173073881 28.377818734789468,-96.57038624671533 28.368658381727396,-96.577905378446388 28.364719789411506,-96.5917603939982 28.357462401226169,-96.600411840200493 28.354408960067438,-96.650793747525029 28.34677533744669,-96.672676831253582 28.335579347083499,-96.688452973492915 28.347284234444516,-96.694559875534281 28.347284234444516,-96.698122233414779 28.342704062844462,-96.705246949175717 28.348810964885843,-96.700157860853906 28.369676195446971,-96.705755865897487 28.400210705653887,-96.710336037497541 28.406826524417021,-96.710425531143088 28.406841439843959,-96.711757514930511 28.407063434453107,-96.711949596522956 28.407095447664108,-96.71209813364915 28.407120203551969,-96.7125191933293 28.40719037931537,-96.712878460543081 28.407250256459115,-96.722549831718325 28.408862132132249,-96.749013067323034 28.408862132132249,-96.762244685125353 28.411915593014903,-96.76554491144303 28.411090543097366,-96.768351577304784 28.410388882297497,-96.775985199925543 28.405808690973519,-96.777118787058129 28.404067826336821,-96.778115367638478 28.402537364460464,-96.780337941159374 28.399124129135416,-96.780820705165937 28.398382742114745,-96.790234641309425 28.383925636830853,-96.794392274787313 28.366371177405831,-96.794814812909479 28.364587126849088,-96.794810066932399 28.364444747076842,-96.79477772408616 28.363474458555832,-96.794305906049686 28.349319871745632,-96.794064195689629 28.347593374049037,-96.792754716842737 28.338239980125699,-96.790743538307225 28.323874459722486,-96.791161640090152 28.319066463411133,-96.791737095961722 28.312448960638157,-96.791761391474679 28.312169572361466,-96.791798306096766 28.312130020933203,-96.806010803272656 28.29690232711997,-96.809573161153153 28.290286508356836,-96.806010803272656 28.282143978876302,-96.799480493673911 28.2729662335258,-96.799349781293685 28.272782529381054,-96.787181219874626 28.255680743271615,-96.787181219874626 28.250082757951983,-96.800412817953031 28.224128419345121,-96.810027933605966 28.21709297064087,-96.81015126416365 28.217002728792142,-96.823379937963566 28.207323213817581,-96.836184503007971 28.197954022244446,-96.84100213695676 28.194428925121734,-96.842143298799229 28.193593928862132,-96.847274602334139 28.190686192954498,-96.857267971405633 28.185023289193378,-96.872677809006134 28.176291056181483,-96.877474270970822 28.171878306563691,-96.886067200578026 28.1639728030657,-96.898123211167331 28.152881261735526,-96.906497631141988 28.149042991548708,-96.910337015250093 28.147283276415891,-96.926704620510804 28.131597659113019,-96.934764623415617 28.123873491831901,-96.962356663895278 28.123371819605953,-96.962754569737697 28.123364584972112,-96.979717515560068 28.129783000626698,-96.995398793779131 28.135716460690723,-97.000413785843605 28.137614026355994,-97.007520616950742 28.136091128354632,-97.007538501604586 28.136087295914667,-97.009222611239821 28.135094102666635,-97.00939982996681 28.134989589017771,-97.027385928308092 28.12438239869169,-97.028912648887456 28.117257682930727,-97.025203084589847 28.111384210119862,-97.023365428929196 28.108474590635566,-97.022805746846075 28.107588427939849,-97.02290356380766 28.107197159145706,-97.023379876854563 28.105291902342927,-97.02382356056566 28.10351716319958,-97.025496807419856 28.101530180660298,-97.031966099908146 28.09384788848477,-97.033883146887263 28.088918342142531,-97.035528457788629 28.084687545284659,-97.035528457788629 28.083043098067591,-97.035528457788629 28.081818766572983,-97.035528457788629 28.074000471643224,-97.033022532693735 28.061470870449408,-97.032801767679686 28.060367047518316,-97.031459273912688 28.053654591691117,-97.031457183186404 28.053644138079921,-97.025859197866765 28.041939250718904,-97.030948266464648 28.033287814378582,-97.03239348781301 28.032603236465789,-97.040617526386512 28.028707642778524,-97.041168915404441 28.028259640036232,-97.046718327422383 28.023750751173218,-97.048760075590963 28.022091833877354,-97.050263648357429 28.019142519014494,-97.059727497080047 28.000578821719444,-97.061991693393324 27.99613751499442,-97.06790259446116 27.99219690579767,-97.073772658186698 27.988283521554418,-97.075732208193486 27.986977152070377,-97.083740513918784 27.975854507337193,-97.090858162154831 27.965968886660271,-97.094600599978094 27.960771057335059,-97.101378519421061 27.951357282114685,-97.101544336287489 27.951126980954953,-97.101629253046639 27.951009041034034,-97.112670327945679 27.935674217691009,-97.118292397880069 27.927865788706086,-97.121533983365822 27.923363587495643,-97.122089895488358 27.923104160785101,-97.123659587861624 27.92237163470331,-97.129167576400675 27.91980122961516,-97.134800331352182 27.902469771509406,-97.13578341488774 27.899444915775788,-97.139044920333077 27.897526377912126,-97.141761509630356 27.895928379836029,-97.144434841366106 27.894355827453982,-97.155121915007527 27.880615312653809,-97.156735458496229 27.877916799393841,-97.171211094589736 27.85370753808861,-97.17159000749372 27.853073838716419,-97.18273536107327 27.834434189625789,-97.184638591770963 27.831251199324921,-97.187183135931861 27.824126483563962,-97.18941247112663 27.823657146727278,-97.196852395853725 27.822090836400886,-97.201135366472329 27.822090836400886,-97.208766105658313 27.822090836400886,-97.209575096934316 27.822090836400886,-97.21103842611052 27.822356897891609,-97.21191517248603 27.822516307306422,-97.214117494684729 27.822916731993345,-97.215541825234411 27.823175702780983,-97.217387510601711 27.823511284007832,-97.220771087297493 27.824126483563962,-97.222189700736266 27.82464074101355,-97.223091414240102 27.824967618564596,-97.225175600069406 27.825723150734085,-97.225442194074731 27.826156365185522,-97.225555528799433 27.826340533769983,-97.225696025109201 27.826568839847944,-97.22598639723725 27.82704069367685,-97.227317456819009 27.829203661466853,-97.227317456819009 27.832884543697009,-97.227317456819009 27.832951908184537,-97.22711696094737 27.834288541284948,-97.22651425924083 27.838306534493725,-97.227537582741903 27.841230302974814,-97.228388390382094 27.843661171179477,-97.233100025453197 27.847817700825228,-97.234045759551762 27.848652012430087,-97.234511621821596 27.849062988727319,-97.238500481248579 27.854279199579018,-97.239439164419366 27.855506710708827,-97.241127420860792 27.857714434929608,-97.24139627838295 27.858969111470945,-97.242350826195675 27.863423696705052,-97.242654131578206 27.86483913096664,-97.243132066142749 27.865496290124597,-97.244364366034702 27.867190700237273,-97.250796680782656 27.876035121329831,-97.263010484865433 27.88010639593206,-97.267085449659064 27.88068852838779,-97.272090543185925 27.881403535150675,-97.273697558506882 27.881633106649463,-97.276628649874411 27.881144591421538,-97.283916343274228 27.879929975854907,-97.291452123510041 27.878674012482271,-97.291709327200167 27.878631145200583,-97.295071705789752 27.87807074876898,-97.29826066531912 27.876989746639367,-97.302276298241679 27.875628516526195,-97.30641171632756 27.874226681314273,-97.315889353880934 27.871013926092836,-97.325097299274915 27.867892591849294,-97.326845878314657 27.866807265961079,-97.334190606350404 27.862248465187459,-97.346213303335873 27.854786094892546,-97.354613966176373 27.849571885725148,-97.359768343966266 27.850509060182219,-97.360211961357962 27.850589719168646,-97.360654441244435 27.850290746360063,-97.363614400263117 27.848290774636723,-97.376904444631478 27.839311017562139,-97.379041564479934 27.837867018088055,-97.379057154646048 27.837837708581311,-97.379081675001302 27.837791610322164,-97.37968928125764 27.836649310776913,-97.391764280353456 27.813948316782309,-97.391812130016405 27.812975373996721,-97.391812459346511 27.812968677620422,-97.39203202611381 27.808504155006624,-97.392068018906713 27.807772301822137,-97.392095751995882 27.807208395884746,-97.393123788240075 27.786304999999999,-97.393168763213623 27.785390509210199,-97.393291005863816 27.782904909577571,-97.393142269808052 27.782564941361908,-97.39298939956177 27.782215523565412,-97.390949955785928 27.777553936582201,-97.390465068726371 27.776445623015572,-97.390185233729682 27.775805999999999,-97.389524844304646 27.774296538065283,-97.38835420640342 27.771620793596586,-97.388306220610531 27.771511111755789,-97.388011229692253 27.770836846624743,-97.38704242749894 27.768622441036733,-97.386166290102864 27.766619840754537,-97.385225495384532 27.765302728148875,-97.378862356737287 27.756394334042721,-97.375764970087644 27.752057992733249,-97.373069654276961 27.748284550598278,-97.368354500700462 27.741683335591173,-97.365855345900911 27.739779218033028,-97.354970329043653 27.731485873530172,-97.352272255056832 27.729430198526604,-97.34997871774064 27.727682741876539,-97.347507961666906 27.725800261438444,-97.346980343555629 27.725398266768138,-97.343485766084669 27.723942192633796,-97.323096068004702 27.715446484002907,-97.316445853072636 27.712675560756566,-97.312489136070184 27.711663774861414,-97.307771479065892 27.710457406346261,-97.30518751069485 27.709796650788128,-97.285725857752936 27.704820043684109,-97.259850586867117 27.698203387982087,-97.253955150197811 27.696695845323848,-97.254014647303208 27.696526337654994,-97.255455364792269 27.692421723465429,-97.259957004258851 27.67959652118169,-97.261636792970123 27.679316557300702,-97.26241778482418 27.679186392412099,-97.266063906300232 27.678578707462119,-97.266172011465457 27.678349884642419,-97.272736281666539 27.664455499360063,-97.273042341106247 27.663807672923248,-97.273584380560237 27.662660354976065,-97.276535709391737 27.656413369610792,-97.277059923980644 27.655303780997631,-97.278846463786479 27.651522268106756,-97.280071982275985 27.648928251476995,-97.280889132874719 27.647198614380269,-97.282300269490932 27.644211705671331,-97.282869528026779 27.64300677394548,-97.287959956150573 27.632232024058997,-97.288756326795195 27.630546371240786,-97.290370933329072 27.627128784125372,-97.290610159422798 27.626622421740255,-97.291264204229464 27.625238025568656,-97.291996439564016 27.623688125953898,-97.292910903535031 27.621752508687905,-97.293983233844585 27.619482740684056,-97.29528946695001 27.616717877953022,-97.296598377059297 27.613947348891728,-97.297587499071795 27.609496333379006,-97.298634024222366 27.60478700569162,-97.29761621050281 27.598680093788271,-97.294053852622326 27.594099922188217,-97.294182769084571 27.593971005725969,-97.300049926927869 27.588103847882682,-97.302196382102863 27.585957392707677,-97.311120578488044 27.579146819865922,-97.321534901946578 27.571199044464009,-97.325080504595888 27.561034984604785,-97.336802147188081 27.527432946040641,-97.343417965951204 27.517763686118776,-97.347489240553443 27.503005347737066,-97.350542661988243 27.478577729709574,-97.359194108190536 27.458221396146271,-97.365809926953673 27.450587783387487,-97.371916828995055 27.425142361502377,-97.369881181831957 27.412419660421783,-97.372934622990698 27.401223670058592,-97.379550422029908 27.390027689557368,-97.399397858595393 27.344734850830708,-97.401942402756291 27.335574497768633,-97.404995863638931 27.329976512448997,-97.413138393119482 27.321325066246711,-97.42026310888042 27.317253791644482,-97.430441285524054 27.313691423902039,-97.450797599363412 27.313691423902039,-97.482858840011673 27.297915271800758,-97.508304242172855 27.275014394076553,-97.532222933616623 27.278576761818989,-97.544436737699399 27.284174747138625,-97.546981281860297 27.290790556039799,-97.536803105216677 27.289263825598471,-97.526624948296998 27.291808369759369,-97.524589320857856 27.297915271800758,-97.51746460509689 27.305039987561717,-97.504741884292372 27.305039987561717,-97.498126085253162 27.308602345442196,-97.502706237129289 27.322342870104325,-97.499143898972747 27.327940855423961,-97.483876634007316 27.33862793892736,-97.483876634007316 27.351350640007954,-97.486930094889971 27.358984272490666,-97.501688443133645 27.366617904973374,-97.514411144214236 27.361528796927644,-97.520518046255617 27.352877370449281,-97.538329835658018 27.335574478044709,-97.570899973304094 27.315727061203152,-97.584131581244463 27.309620159161771,-97.609068086407831 27.285192570720163,-97.621790807212349 27.287228188297352,-97.63146005727225 27.286210384439741,-97.63654914066305 27.282139109837512,-97.636657939024673 27.281797172172649,-97.640111498543547 27.270943129336285,-97.639093679892994 27.253131339933887,-97.635022415152719 27.247024437892502,-97.628915513111338 27.242953173152234,-97.597363199046811 27.242444266292445,-97.5826048606651 27.240408628991332,-97.573953414462821 27.238881903480983,-97.56123071338223 27.232775006370584,-97.542910007258072 27.229212648490105,-97.520009129533875 27.231248285791217,-97.509830972614182 27.235319550531486,-97.503215153851045 27.23989972213154,-97.500161712692318 27.244479898662579,-97.485148876501881 27.25084127385778,-97.467082638600573 27.253640266517596,-97.45843119239828 27.259492710198106,-97.450288657986775 27.262546171080761,-97.424079880742951 27.264072891660124,-97.422298701802717 27.257711541119829,-97.434766954384401 27.202240525749552,-97.444945121166043 27.144733882940127,-97.443672849085587 27.116235010034327,-97.452324285425917 27.115217201245734,-97.455886653168363 27.110382571284802,-97.456650008527049 27.09969549764336,-97.46173908698691 27.095624227972113,-97.475479621510999 27.098423220631929,-97.480568699970846 27.102494490303176,-97.491510231973166 27.101222218222723,-97.495835955074313 27.09409750739275,-97.4932914109134 27.078066891999608,-97.477515248950155 27.066107546277717,-97.479041969529504 27.06279964182713,-97.482256963728076 27.061942305056665,-97.48693005051112 27.057710553505324,-97.487693415731783 27.053639288765055,-97.486675602012198 27.034809685643079,-97.477515248950141 27.032519589981089,-97.473952881207694 27.029211690461484,-97.473443984209865 27.022850330059228,-97.478300083716704 27.000269498406993,-97.478533072531675 26.999186101907302,-97.480568690108868 26.997659376396957,-97.483967678435022 27.000330000000002,-97.484131057851314 27.000458369056773,-97.492988547644813 27.000330000000002,-97.49889841702128 27.000244349959733,-97.533497176854453 26.999742920066073,-97.536803065768822 26.999695008767091,-97.549271318350492 26.995878197456715,-97.555378215460905 26.990280207206101,-97.551052502221722 26.980865400714134,-97.549525776711377 26.965343697111763,-97.552324769371197 26.95211208177491,-97.555378205598956 26.947277449348487,-97.555378205598956 26.938880461507075,-97.540874325578116 26.906310323861007,-97.540110950495503 26.900966796902246,-97.547999041339082 26.895114353221743,-97.552324764440229 26.888498544320569,-97.552324764440229 26.875332999999998,-97.552324764440229 26.873831771434514,-97.552324764440229 26.871753101924,-97.552324764440229 26.867633303897481,-97.555396527456509 26.865969429990074,-97.558431656619632 26.864325399446898,-97.558453748966258 26.864224239771101,-97.559853702000524 26.857813929560987,-97.562641307980527 26.845049630589628,-97.563266286580571 26.842187886943357,-97.552579212939136 26.827938454188693,-97.547744582978211 26.824630549738107,-97.537566416196555 26.824885004400745,-97.509830908511418 26.8035108521869,-97.48438549155729 26.763561555211936,-97.478024141017002 26.757200199740662,-97.471662790476714 26.758726925251008,-97.468609339456009 26.740915130917632,-97.467337057513589 26.710126182073765,-97.444945096511148 26.633535472850511,-97.445708451869848 26.609362327976836,-97.441206258760758 26.5999011976768,-97.435205432977895 26.587290766879221,-97.432741093635642 26.582112082834445,-97.429217375703914 26.574707168454967,-97.428151110966368 26.572466467229631,-97.418145193925739 26.555638334425574,-97.416955130465126 26.553636864107652,-97.41864075483771 26.543121778291471,-97.42039414733226 26.532183948458435,-97.422284917775215 26.520389141863415,-97.422298667285844 26.520303371102887,-97.425861015304378 26.516741008291426,-97.430695645265303 26.506562841509776,-97.430695645265303 26.494603495787885,-97.42802638225659 26.488322868889494,-97.42636993202612 26.484425333937217,-97.429168909893022 26.478063961207511,-97.43553026043331 26.470175880225888,-97.441382709044788 26.466613522345408,-97.441382709044788 26.455417541844177,-97.43756589773443 26.449819546662585,-97.425861005442428 26.446002740283195,-97.421026375481503 26.446766095641895,-97.417209564171131 26.449819546662585,-97.411611568989528 26.447275002501684,-97.412883841069984 26.433025580841726,-97.421789740702152 26.417249413947498,-97.419499649971158 26.413178149207234,-97.406013578738921 26.409106884466965,-97.398125502688274 26.410888063407203,-97.394308686446919 26.414450416356704,-97.395072051667569 26.417249413947498,-97.382484933201752 26.411326066613285,-97.377769169124974 26.409106884466965,-97.369626639644437 26.394602999515151,-97.374461259743413 26.38086247238753,-97.388965149626202 26.365849678110436,-97.392018610508856 26.339386444971247,-97.391000786927322 26.332261729210284,-97.38794734576858 26.330480545339064,-97.376242448545611 26.336332993950553,-97.372171183805335 26.339895346900054,-97.36937219114553 26.348546788171358,-97.358176200782339 26.356434874083959,-97.343417852538664 26.35923386920927,-97.342332537534404 26.358759043566288,-97.335275323058127 26.355671510096041,-97.335020017473738 26.355402767481841,-97.331108052904881 26.351284911668415,-97.330440693097202 26.350582427937965,-97.333762617526986 26.340749518544904,-97.336802038706509 26.331752819885011,-97.343786761143846 26.325987658774913,-97.344677525679145 26.325252425399061,-97.352414066956698 26.31886671611711,-97.352832659030639 26.318521211944631,-97.354359379610003 26.313941040344577,-97.348998828460125 26.312092573442666,-97.347821984790102 26.311686765063648,-97.346980205488165 26.311396496183672,-97.34736083223585 26.297503848546928,-97.347437236753805 26.2947151295396,-97.347489122209922 26.292821341560611,-97.347051378510429 26.289694600417153,-97.344137846000223 26.268883651035111,-97.343926764329439 26.267375924606483,-97.342629246748771 26.266550231912309,-97.341127771669619 26.265594748131736,-97.335282658907644 26.265594748131736,-97.331967408745584 26.265594748131736,-97.330307576264516 26.266747410222209,-97.323817586106017 26.271254350355399,-97.322807065545476 26.271956101137519,-97.313207351206557 26.273518846137112,-97.312102101648151 26.273698770576502,-97.311865543405119 26.273737280077761,-97.307030913444194 26.253126493084562,-97.308048727163751 26.249055213551365,-97.321280340035131 26.236078054109896,-97.321280340035131 26.228698889850026,-97.304486359421333 26.202490107675235,-97.296598288301666 26.200708923804015,-97.294817109361432 26.192311940893585,-97.296089381441874 26.182388227541828,-97.303096384204423 26.167373221160254,-97.305986772892751 26.161179530923267,-97.306776455083323 26.159487354748606,-97.300965235160419 26.149753561518516,-97.296881711355638 26.142913659244432,-97.296598288301666 26.14243892563589,-97.285549237329036 26.12861437636975,-97.28536038956149 26.128378090441405,-97.284582435540926 26.126454238998875,-97.282094393487881 26.120301403270393,-97.282839179410786 26.118439442973433,-97.28311220967295 26.117756868971455,-97.285501587752023 26.116923364107649,-97.294053737977038 26.113940052730097,-97.295071554162092 26.108342057548505,-97.292023254217796 26.105090538920617,-97.291924538345086 26.104985242032239,-97.291541272704407 26.104576425513905,-97.287190793518263 26.099935916255493,-97.286650074642992 26.099359149688052,-97.286603231473521 26.09930918366079,-97.283195451762182 26.095674220102872,-97.282639002190891 26.095080674133143,-97.282108002623801 26.094514274823585,-97.280435495761154 26.092730268223651,-97.279905974795895 26.09216544608875,-97.27980430522237 26.092056998587434,-97.27089841052117 26.086459003405839,-97.267086875013263 26.085485845069449,-97.24859983335169 26.080765747704277,-97.246979719077387 26.080352101364454,-97.229515030031649 26.08000965739204,-97.220290685310772 26.079828788368793,-97.208048240752987 26.079588741074772,-97.205005053278043 26.078666562185607,-97.199651252911579 26.077044196913871,-97.199152512570265 26.073220535461079,-97.199134106850465 26.073079425477676,-97.198725011196004 26.069943037351702,-97.198302051934135 26.066700361972018,-97.196018989165054 26.049196947106083,-97.195939794821285 26.0485897927724,-97.195071061587612 26.04192952989985,-97.204994779870347 26.030224637607851,-97.214918488291119 26.030733549398622,-97.224842206573854 26.027425644948035,-97.226114478654296 26.024372193927345,-97.219244211392265 25.99612778184791,-97.216954125592238 25.993837693582392,-97.208557137750816 25.991802058746771,-97.195834416946283 25.993074335758202,-97.174460269663413 26.000071824804216,-97.167208324722026 26.007069313850227,-97.162755377371425 26.014575709756024,-97.16262814819099 26.023481604457221,-97.172042954682937 26.044728528107019,-97.178658763584124 26.045491893327686,-97.182730028324386 26.053125515948434,-97.164981847348457 26.063876207878327,-97.152009000000007 26.062107999999998,-97.152012551274964 26.062039393270581,-97.15321 26.038906,-97.151921999999999 26.017652999999999,-97.14747181118706 25.985075937251509,-97.145567 25.971132,-97.146880999999993 25.969781,-97.146293999999997 25.955606,-97.147784999999985 25.953132,-97.156608000000006 25.949021999999999,-97.160293999999993 25.950243,-97.168198638692317 25.959262149012673,-97.178362000000007 25.962114,-97.187583000000004 25.958174,-97.206945000000005 25.960899,-97.214339285966162 25.960186817526893,-97.227626420907342 25.958907063854085,-97.229225999999997 25.958753000000002,-97.239867000000004 25.954974,-97.244841570811701 25.950784663302475,-97.248032999999992 25.948097,-97.255343503388133 25.949129556975723,-97.276707000000002 25.952147,-97.28138899999999 25.948036999999996,-97.277163000000002 25.935438,-97.284201820237172 25.935775045516863,-97.290083634347766 25.936056689174489,-97.293963761326751 25.936242484429805,-97.303601999999998 25.936703999999999,-97.316138101068788 25.931602038234757,-97.320560999999984 25.929801999999999,-97.324914000000007 25.924040999999999,-97.332235861490744 25.923541683060932,-97.33463605770983 25.923378000829199,-97.338346 25.923124999999999,-97.339310160867683 25.923294280152341,-97.350397999999998 25.925241,-97.367642000000004 25.915679999999998,-97.369283543255307 25.913688286645449,-97.373641276386991 25.908400972256459,-97.374430000000004 25.907443999999998,-97.372365000000002 25.905015999999996,-97.365976000000003 25.902446999999999,-97.365883578347024 25.900015396466173,-97.365521 25.890476,-97.364300486696564 25.885628504434479,-97.362421560218849 25.878165998501085,-97.360082000000006 25.868874000000002,-97.364783621478566 25.852096838905283,-97.36542 25.849826,-97.372864000000007 25.840116999999996,-97.394513000000003 25.837377,-97.422635999999997 25.840377999999998,-97.42853949246836 25.842912007889609,-97.434188204901034 25.845336654308195,-97.441181027463472 25.848338244915578,-97.445113000000006 25.850026,-97.445601387363794 25.851485440010176,-97.447179184935308 25.856200346812667,-97.448271000000005 25.859463000000002,-97.449172000000004 25.871677999999996,-97.452166849899044 25.875807172885114,-97.453724626189043 25.87795496921364,-97.454727000000005 25.879337,-97.45488774919265 25.879394304385261,-97.462586893331732 25.882138919861518,-97.468261999999982 25.884162,-97.468599721544905 25.884059457735212,-97.481532785459223 25.880132596436578,-97.486059999999995 25.878758,-97.490359999998347 25.879275544671589,-97.494739403174762 25.879802646248233,-97.496860999999996 25.880057999999998,-97.519591990380178 25.88590026892226,-97.521761999999995 25.886458,-97.52344767329889 25.891064017588189,-97.524375103029939 25.893598172727145,-97.528116959024402 25.903822606212749,-97.528119935206945 25.903830738482007,-97.52812430798204 25.903842686870224,-97.528627999999998 25.905218999999999,-97.528849446448064 25.906732522417784,-97.530321999999998 25.916796999999999,-97.530415259581318 25.916820899843632,-97.539878370214808 25.919246032588486,-97.542957 25.920034999999999,-97.545169999999999 25.923974999999999,-97.545468770003851 25.926387609575503,-97.545470694802859 25.92640315259677,-97.546397824784293 25.933889856891241,-97.546420999999995 25.934076999999998,-97.546611329705271 25.934141994258589,-97.555160182125618 25.937061277530951,-97.555378999999988 25.937135999999999,-97.555477252221124 25.937015705749829,-97.559364000000002 25.932257,-97.582565000000002 25.937856999999997,-97.580418999999992 25.945115999999995,-97.583044 25.955442999999999,-97.598043000000004 25.957556,-97.5981230356591 25.957681442330628,-97.607733999999994 25.972745,-97.60783562843973 25.973457509771446,-97.607844088251909 25.973516820913719,-97.608283 25.976593999999999,-97.609461531117333 25.977846566488182,-97.613191727531174 25.981811093986448,-97.613466053312663 25.982102652924251,-97.616041456343709 25.984839842874308,-97.624938181905222 25.994295461083137,-97.627225999999993 25.996727,-97.634804000000003 25.999508999999996,-97.635072411453706 25.99971613545971,-97.639164724998494 26.00287420951236,-97.642117661027001 26.005153015998879,-97.644011365977178 26.006614404624422,-97.643848619841975 26.01214811069886,-97.643707610985203 26.016942704231127,-97.649175518723894 26.021499311673544,-97.65096419129361 26.02118629315062,-97.659123404318109 26.019758427116106,-97.661326460130226 26.019372891335045,-97.66298585459532 26.019511685247039,-97.668297999999993 26.019955999999997,-97.669519566971061 26.021667429940447,-97.671350987084779 26.024233271429612,-97.671567999996611 26.024226704244594,-97.691453959129774 26.023624920821636,-97.697068999999999 26.023454999999998,-97.703247203861338 26.030308742132775,-97.706066818770353 26.031284762516545,-97.709294717923569 26.032402112038366,-97.711145328137576 26.033042707775564,-97.719920000000002 26.030837999999999,-97.723585926686539 26.030959832537771,-97.729354247932832 26.031151535557555,-97.735180242251758 26.031345155270547,-97.758837769919694 26.032131383932391,-97.76309059882324 26.033650253079866,-97.763351431657455 26.034258862745556,-97.76491324062286 26.037903081983409,-97.769788888528993 26.041344719068825,-97.770077387482857 26.041548365582649,-97.776788595669075 26.042443189872706,-97.779190602367677 26.042763456191249,-97.784050976575529 26.040637041739476,-97.789822674626535 26.0424596835391,-97.792252861730461 26.04428232533872,-97.793102878401371 26.047342389307317,-97.793537334820812 26.048906434437896,-97.794638769549053 26.052871604582215,-97.795290594138677 26.055218176136449,-97.801344 26.060016999999998,-97.803973303988229 26.059548218630308,-97.8082126910423 26.058792373859696,-97.819424117916668 26.056793476786609,-97.820997703829306 26.056512920501468,-97.825546000000003 26.055702,-97.826721102251625 26.055271667399982,-97.830409376527257 26.053920989485444,-97.836607999999984 26.051650999999996,-97.848759348822554 26.052295281844582,-97.85186756815483 26.052460084066457,-97.859824237628374 26.052881958029587,-97.860225497621784 26.05290323340671,-97.860503999999992 26.052917999999998,-97.861874999990562 26.053580848914272,-97.869705222636284 26.057366592615971,-97.871187000000006 26.058082999999996,-97.876982999999996 26.064482999999999,-97.886529999999993 26.066338999999999,-97.901546631929207 26.060958662441269,-97.905109129229899 26.05968224852101,-97.913882 26.056539,-97.935419999999993 26.052687999999996,-97.944344999999984 26.059620999999996,-97.950095000000005 26.061827999999998,-97.96210735288345 26.054793018383155,-97.96735799999999 26.051718,-97.971403108419892 26.054550391225565,-97.978769 26.059707999999997,-97.979877702655912 26.062937323324391,-97.981335 26.067181999999995,-98.010970999999998 26.063862999999998,-98.015122209308288 26.064471399070538,-98.026123959861238 26.06608380989196,-98.028288992822496 26.066401115993269,-98.028758999999994 26.066469999999999,-98.029241090705753 26.065867136858621,-98.033102 26.061039,-98.034402999999998 26.051375,-98.034479464439173 26.051215303797409,-98.034525269179767 26.051119640464091,-98.039238999999981 26.041274999999995,-98.054365285842039 26.044575736209502,-98.070020999999997 26.047992,-98.070022345126233 26.049160242153427,-98.070025 26.051466,-98.071425788568789 26.055027814897404,-98.076094939927231 26.066900165398668,-98.076139697069991 26.067013970337847,-98.076205751241318 26.067181927684643,-98.076543999999998 26.068041999999998,-98.076994427275579 26.068371469710563,-98.080289992888041 26.070782045417982,-98.080494999999999 26.070931999999999,-98.080906883185932 26.070920010911959,-98.084755 26.070808,-98.085506402845155 26.069709056167966,-98.085848999999982 26.069208,-98.085628527723046 26.069048386721494,-98.081567000000007 26.066108,-98.081855064865067 26.063941606819231,-98.081884000000002 26.063724,-98.082307152201508 26.063513440869801,-98.091037999999998 26.059169,-98.093593108176947 26.058759459973995,-98.094431999999998 26.058624999999996,-98.095078111969258 26.058956205325877,-98.096949561841043 26.059915534659098,-98.097643000000005 26.060270999999997,-98.105504999999994 26.067537000000002,-98.122952624574893 26.063250384797335,-98.12786358062813 26.062043837809401,-98.128331000000003 26.061928999999999,-98.142925292417388 26.051941751725515,-98.14645163947533 26.049528582072455,-98.146621999999994 26.049412,-98.146852932570667 26.049588146033326,-98.149462999999997 26.051579,-98.149462999999997 26.055813,-98.151730999999998 26.058187,-98.158277994458601 26.062311711597108,-98.16142849281799 26.064296576133319,-98.161911645017582 26.064600969774318,-98.167608590156348 26.068190136655492,-98.172071527808072 26.071001859012309,-98.177897000000002 26.074672,-98.179863281323136 26.072661506851002,-98.189059999999998 26.063257999999998,-98.191534000000004 26.057117999999999,-98.197046 26.056152999999998,-98.200871000000006 26.059161,-98.203328791159265 26.063523594334541,-98.204415309491765 26.065452171017675,-98.20496 26.066419,-98.205720285634712 26.066905180236589,-98.2057544964389 26.066927057036718,-98.220672999999991 26.076467,-98.228363119990576 26.077028417928002,-98.230097 26.077155,-98.231072909449267 26.07694353295701,-98.240214327563166 26.074962705064888,-98.248806000000002 26.073101,-98.250234708208026 26.074229377516481,-98.260964088277859 26.082703320039151,-98.264514000000005 26.085506999999996,-98.272091468517374 26.0934369782697,-98.272527821536428 26.09389363077193,-98.277218000000005 26.098801999999999,-98.277020629370639 26.099144109090908,-98.272932087266241 26.106230915405163,-98.272897999999998 26.10629,-98.272099931737145 26.106512924095771,-98.270258188934392 26.107027377392626,-98.270033999999995 26.107089999999999,-98.269661374787887 26.108231250649609,-98.268046405073434 26.113177467856264,-98.266755660647689 26.117130670341034,-98.265753950746401 26.120198637935399,-98.265698 26.12037,-98.266046753689267 26.120369439652073,-98.268388964369507 26.120365676386069,-98.271048543344023 26.120361403199535,-98.2713587738927 26.120360904747326,-98.279433560913844 26.12034793086255,-98.289509742149562 26.120331741306838,-98.296194999999997 26.120321,-98.299522999999979 26.11749,-98.299575546893735 26.117376878214852,-98.299577897643644 26.117371817572689,-98.299619756950364 26.117281703787395,-98.301477861619162 26.113281617347607,-98.302978999999993 26.110049999999998,-98.307788398559808 26.112633359128559,-98.31093219000293 26.114322040617914,-98.314784784069062 26.116391454064445,-98.31781148535309 26.118017240801439,-98.323055746360907 26.120834185452331,-98.323827999999992 26.121248999999995,-98.324165904650499 26.121735183484471,-98.335204000000004 26.137616999999999,-98.337914801547555 26.149187638321976,-98.338210450252006 26.150449569219312,-98.338419999999999 26.151344000000002,-98.338123748811455 26.151776768193923,-98.337139471603692 26.153214615149455,-98.336278203634194 26.154472768358826,-98.335109254490916 26.156180386856505,-98.334230366689056 26.157464279382136,-98.333315999999996 26.158799999999999,-98.333279392301918 26.159609030127591,-98.333194378655719 26.161487831708563,-98.333156000000002 26.162336,-98.33332593363771 26.162525092143447,-98.336569396995017 26.166134227137082,-98.336837000000003 26.166432,-98.337709251548077 26.166391430160555,-98.345513373134324 26.166028447761192,-98.345781000000002 26.166015999999999,-98.345955918391979 26.165759937155421,-98.34781294946896 26.163041431373035,-98.354645000000005 26.15304,-98.380009845764519 26.156864235849298,-98.386243919298991 26.157804141722139,-98.386694000000006 26.157872,-98.386714843024777 26.157901012682096,-98.387178289965661 26.158546112849205,-98.389418830831929 26.161664858836595,-98.394322667090904 26.168490808715738,-98.402249554153599 26.179524728065878,-98.404432999999997 26.182563999999999,-98.41082579547016 26.183537375155975,-98.418120000000002 26.184647999999999,-98.44253599999999 26.199151,-98.444302622216625 26.201317032456906,-98.444376000000005 26.201407,-98.444366742625562 26.201566115583965,-98.444174812576264 26.204865005795593,-98.443681770155465 26.213339409994948,-98.45054565332704 26.219516919037407,-98.450975699346984 26.219903961344286,-98.465077324681431 26.222335272645303,-98.467962758220992 26.221802674698019,-98.47639547470331 26.220246150374404,-98.481645999999998 26.219277000000002,-98.483269000000007 26.216439,-98.496684404575589 26.212853148677059,-98.500574513964963 26.213825676024403,-98.503492081872309 26.214798198660183,-98.504399410834864 26.216045775617395,-98.509275818143593 26.222750833698164,-98.509327236533252 26.222821533963195,-98.516621175147847 26.223550930651591,-98.520846190978133 26.222726536052498,-98.524733007990875 26.221968131567948,-98.526589565145571 26.221605875956907,-98.528323413163747 26.222421776495104,-98.535240999999999 26.225677,-98.538016739096946 26.231331135295655,-98.538505426714039 26.231595841236214,-98.543851889046309 26.23449184328507,-98.556093449912439 26.231976454911809,-98.561600478976516 26.23084487397777,-98.564343479612191 26.231667774301364,-98.575891642961039 26.235132223865481,-98.57618836327309 26.235221239973473,-98.581780384919284 26.243001439905978,-98.583095590242166 26.247416774401941,-98.585184223567666 26.254428618568909,-98.588002268837087 26.255070784392117,-98.599153999999999 26.257611999999998,-98.610401443364651 26.253223367217647,-98.613465000000005 26.252027999999999,-98.617434734670965 26.252082931217494,-98.618976176235122 26.252104260920568,-98.625299999997523 26.252191766854153,-98.626653663614832 26.252210498179227,-98.633391522135483 26.243617562727948,-98.63418 26.242612,-98.636673745354344 26.241784277127035,-98.654221000000007 26.235959999999999,-98.669397000000004 26.236319999999996,-98.675206000000003 26.239989,-98.678410535728389 26.244637915883345,-98.679041999999995 26.245553999999998,-98.678977427258005 26.246060764449961,-98.677766000000005 26.255568,-98.679196310064967 26.258571609080832,-98.681167000000002 26.262709999999998,-98.687156000000002 26.26512,-98.698855915315121 26.265619481498664,-98.707451416076225 26.272152066874316,-98.710601999999994 26.279018,-98.709170532219119 26.284185773270103,-98.710647239525585 26.288123668959596,-98.711233447604599 26.289686894290245,-98.722550749196131 26.295571625529284,-98.729196000000002 26.299026999999999,-98.73263614407044 26.29899082409209,-98.734613221934339 26.298970033513189,-98.745271658069271 26.303095890935232,-98.745297595683382 26.304159357241051,-98.745599830797417 26.316551278053844,-98.745615470637418 26.317192526042046,-98.748245116157776 26.32061106368975,-98.74905366960931 26.321662182706675,-98.754840366886953 26.324877004144408,-98.755242435754027 26.32510037501579,-98.766685638772316 26.325769085950686,-98.779858354339893 26.326538865087553,-98.779911999999996 26.326541999999996,-98.779946859358333 26.326559704051515,-98.789821999999987 26.331575,-98.796251999999996 26.349104,-98.797592059971961 26.356670995104565,-98.798210999999995 26.360166,-98.807348000000005 26.369420999999999,-98.808280016253249 26.369491024329768,-98.813413043374013 26.369876679389535,-98.81818280466733 26.370235041528161,-98.81932575812273 26.370320914010964,-98.824571000000006 26.370715,-98.828353477559162 26.367368473620303,-98.832909 26.363337999999999,-98.838554497099707 26.360957856802237,-98.842229804437778 26.359408346173527,-98.844057000000006 26.358637999999999,-98.847707 26.359594999999999,-98.853132332741467 26.364754198689674,-98.853414999999998 26.365023,-98.853852117327648 26.365076242531281,-98.854321671505204 26.365133435992636,-98.861354000000006 26.365989999999996,-98.861661690067152 26.365902494757481,-98.869113443480302 26.363783259984523,-98.874117355796216 26.362360176799562,-98.876164212939671 26.361778062685843,-98.882912762903771 26.359858814831277,-98.890964919192157 26.357568829017531,-98.895015448091129 26.359360408468842,-98.900432100164338 26.361756234493352,-98.900829697862818 26.361932094951143,-98.905559653818443 26.364024190108832,-98.91296803413384 26.372226331500926,-98.915344992389564 26.37485796579432,-98.921277034399395 26.381425588572444,-98.922831447878195 26.38166472803821,-98.923508557916591 26.381768898347495,-98.924925720775448 26.381986922427696,-98.926689551972586 26.38116380140492,-98.934437533628781 26.377548077521784,-98.937555770591459 26.376092900630621,-98.942046463189357 26.375531566775365,-98.950185820407469 26.380302920861933,-98.952073083609605 26.383491745197549,-98.952938578460817 26.384954133189183,-98.953327659277917 26.385611545667039,-98.958325183064531 26.394055638388448,-98.960041959595969 26.394835991082342,-98.96758721887106 26.398265653180793,-98.981979903868819 26.396488780147621,-98.98323657723455 26.396333635432413,-98.985344372930967 26.396073413984297,-98.99032130527651 26.395458978465552,-99.008003378826189 26.395458978465552,-99.014739404125635 26.398826987036053,-99.018845438188137 26.404005475794783,-99.021934999999999 26.407902,-99.025336792347318 26.409271761295809,-99.030462148109507 26.411335530401477,-99.031104888479149 26.411594335405351,-99.032315999999994 26.412082000000002,-99.033086386506682 26.412180127570064,-99.037216923343138 26.412706252494743,-99.039107 26.412946999999999,-99.039645291109963 26.412681959983438,-99.045466000000005 26.409815999999999,-99.053184999999999 26.402006,-99.062093000000004 26.397371,-99.082001999999989 26.396509999999996,-99.085125999999988 26.398782,-99.089412999999979 26.408099999999997,-99.092044248326658 26.410330707587079,-99.0977332288968 26.415153685331873,-99.099649490160544 26.416778244479925,-99.110855 26.426278,-99.113807999999992 26.434002,-99.110485406379198 26.436329519428725,-99.103082999999998 26.441514999999999,-99.097481906444941 26.458865277747179,-99.094712087984234 26.467445230774196,-99.091634999999997 26.476977000000002,-99.105030999999997 26.500335,-99.114051328117867 26.510193091438737,-99.123438026388797 26.520451579672599,-99.126618350727256 26.523927276756307,-99.127319211298612 26.524693229780183,-99.127781999999996 26.525199,-99.128040494672888 26.525242991472329,-99.131554903978838 26.52584108518932,-99.136510932879688 26.526684518463242,-99.143658999999985 26.527901,-99.157083944984777 26.532657279516766,-99.166741999999985 26.536078999999997,-99.170704 26.540316,-99.171403999999995 26.549848,-99.167459686682065 26.559874693319248,-99.167410000000004 26.560001,-99.168618869529794 26.566870928153797,-99.16946034016965 26.571652951934592,-99.178064000000006 26.620546999999998,-99.200522000000007 26.656442999999999,-99.209947999999997 26.693937999999999,-99.208906999999982 26.724761,-99.240022999999979 26.745850999999998,-99.242444000000006 26.788262,-99.243132825912184 26.78921716914337,-99.262208 26.815667999999999,-99.268613000000002 26.843212999999999,-99.274832961326339 26.850997131057774,-99.280470999999991 26.858053000000002,-99.295146000000003 26.86544,-99.316753000000006 26.865831,-99.328801222539823 26.879647723469141,-99.328900000000004 26.879760999999998,-99.328852280051947 26.879943529980665,-99.328653604395157 26.88070346927794,-99.326247644284351 26.88990632616278,-99.321819000000005 26.906846000000002,-99.324684000000005 26.915973,-99.337297000000007 26.922758999999999,-99.361143999999996 26.928920999999999,-99.367053999999996 26.929033999999998,-99.379148999999998 26.934489999999997,-99.388253000000006 26.944216999999998,-99.393748000000002 26.960730000000002,-99.390189000000007 26.966348,-99.377312000000003 26.973818999999999,-99.376593 26.977716999999998,-99.378434999999996 26.980034,-99.385448615007036 26.981891053234623,-99.387366999999998 26.982399,-99.403694000000002 26.997355999999996,-99.407320999999996 27.005808999999999,-99.415475999999998 27.017239999999997,-99.420446999999996 27.016567999999999,-99.429379999999981 27.010833000000002,-99.432154999999995 27.010698999999995,-99.438721 27.01463,-99.445682828533535 27.022104842939122,-99.446523999999997 27.023008,-99.446589518313687 27.0234513503828,-99.446929167151652 27.025749691622671,-99.446969999999979 27.026026000000002,-99.446787747918748 27.026353589968604,-99.444062000000002 27.031253,-99.443973 27.036457999999996,-99.447729715193731 27.048260380671568,-99.452315999999996 27.062668999999996,-99.450282 27.067705,-99.439210578806851 27.075275465844946,-99.434470000000005 27.078517000000002,-99.429209 27.090981999999997,-99.430274999999995 27.094871999999999,-99.437646 27.100442,-99.442122999999995 27.106839,-99.441108999999997 27.110041999999996,-99.433369999999982 27.119218,-99.430581000000004 27.126611999999998,-99.431354999999996 27.13758,-99.438264999999987 27.144791999999995,-99.439971 27.151071999999996,-99.437950999999998 27.154121,-99.42998399999999 27.159148999999999,-99.426616441133064 27.174998569551711,-99.42634799999999 27.176261999999998,-99.426389092127664 27.176475083747437,-99.428025433058153 27.184960350328335,-99.432794999999999 27.209693,-99.441928000000004 27.217984999999995,-99.442101400955139 27.218265584747954,-99.445237999999989 27.223341,-99.443121431464945 27.230753685991843,-99.441406999999998 27.236757999999998,-99.441548999999995 27.249919999999999,-99.452207395848959 27.263806782859465,-99.452390999999992 27.264046,-99.452635348600225 27.264144272092288,-99.454218033886534 27.264780796280988,-99.462735864984637 27.268206496624611,-99.463308999999981 27.268436999999995,-99.463731957038988 27.268231398925973,-99.480688 27.259988999999997,-99.487909999999999 27.260721,-99.492407 27.264118,-99.496069429210138 27.270723950024919,-99.496615000000006 27.271707999999997,-99.496412995851571 27.272119287725655,-99.490870463706145 27.283404082904614,-99.487572835142558 27.290118173493504,-99.487513000000007 27.29024,-99.487552182270463 27.290674424182523,-99.487937000000002 27.294941,-99.493651777311726 27.30231355132117,-99.494603999999995 27.303542,-99.494999311050705 27.30367917804087,-99.501697839297435 27.306003653868146,-99.502036000000004 27.306121,-99.50260564894451 27.305998370990778,-99.511531000000005 27.304076999999999,-99.522353224815092 27.304131436852781,-99.523657999999983 27.304137999999995,-99.527521386758664 27.305370598210363,-99.529216737576675 27.305911493159478,-99.529653999999994 27.306051,-99.533911450776046 27.310119063512179,-99.536090758332008 27.312201427353024,-99.536443000000006 27.312538,-99.537771000000006 27.316072999999996,-99.53137599999998 27.323809,-99.52136037329538 27.324774325824137,-99.521259999999998 27.324784,-99.520793197388144 27.325167862222077,-99.515101491997058 27.329848278790703,-99.509737777509301 27.334258981108004,-99.504836999999995 27.338289,-99.507830999999996 27.348637,-99.507785758525344 27.353517859091919,-99.507778999999999 27.354247,-99.505884699626023 27.358359262089539,-99.503847413823948 27.362781925614613,-99.502763417847504 27.36513512979511,-99.502013099315448 27.366763966750881,-99.499076000000002 27.373139999999999,-99.492143999999996 27.380516999999998,-99.488110785984318 27.408328989964531,-99.487887470616073 27.409868914391197,-99.487633320470721 27.411621467383494,-99.487521 27.412396,-99.487591555014376 27.412624523015491,-99.489856740583164 27.419961308946796,-99.495313182879073 27.437634363915539,-99.495699000000002 27.438884000000002,-99.495681276107845 27.439260342274874,-99.495103999999998 27.451518,-99.489866073767956 27.458841813736395,-99.48498035355378 27.465673163249864,-99.484933241276849 27.465739036942171,-99.483818999999997 27.467296999999995,-99.483170086267094 27.470026063960816,-99.480813109028745 27.479938539705284,-99.480418999999998 27.481595999999996,-99.480219000000005 27.485795999999997,-99.483519 27.491095999999999,-99.494943552274876 27.498766770813134,-99.497518999999997 27.500495999999998,-99.501722168778215 27.500229993495459,-99.502529258718056 27.500178915086504,-99.513319999999993 27.499496,-99.516119999999361 27.498282666666942,-99.519319999999979 27.496896,-99.525819999999982 27.496696,-99.528319999999994 27.498895999999998,-99.525855930815595 27.516294999999385,-99.525849791073696 27.516338353233991,-99.525316190784537 27.520106149807926,-99.523876376642917 27.530272798702207,-99.522431296340699 27.540476632400054,-99.521918999999997 27.544094,-99.518818999999993 27.553194,-99.514319 27.556994,-99.511118999999994 27.564493999999996,-99.512219000000002 27.568093999999995,-99.515978000000004 27.572130999999999,-99.51621006287597 27.572263354504685,-99.516956092136581 27.572688844074506,-99.522907946893667 27.576083418863931,-99.530137999999994 27.580207,-99.536560517954015 27.595669560441458,-99.539721999999998 27.603280999999999,-99.549741780062789 27.610632655019803,-99.554405160028892 27.614054243170667,-99.554950000000005 27.614453999999999,-99.555217670042637 27.614437037021997,-99.556811999999994 27.614335999999998,-99.559466999999998 27.609075999999998,-99.562869000000006 27.607264,-99.580005999999997 27.602250999999995,-99.584175941853502 27.603675176957196,-99.584843000000006 27.603902999999999,-99.584876722760043 27.604178863233781,-99.585148000000004 27.606397999999999,-99.578360965974085 27.610254799100861,-99.578159999999983 27.610368999999999,-99.578158133228257 27.610639131051315,-99.578098999999995 27.619195999999999,-99.584782000000004 27.622006999999996,-99.591372000000007 27.627464,-99.592626330929548 27.632690692534315,-99.594037999999998 27.638573,-99.596231000000003 27.639857999999997,-99.603532999999999 27.641991999999998,-99.612907806834755 27.638651258855042,-99.615318942915422 27.637792043123689,-99.624515000000002 27.634515,-99.625321999999997 27.631136999999999,-99.638929000000005 27.626757999999999,-99.654323999999988 27.629615999999999,-99.665948 27.635967999999998,-99.665422000000007 27.640274999999999,-99.660175716081199 27.644678795569117,-99.659499999999994 27.645246,-99.659300532255756 27.646059100049566,-99.658294999999995 27.650158,-99.661845 27.655753,-99.668942 27.659973999999998,-99.672015651285406 27.660163655087903,-99.685812999999982 27.661014999999999,-99.699355999999995 27.655417,-99.704600999999997 27.654953999999996,-99.711511000000002 27.658365,-99.721518999999986 27.666154999999996,-99.723715999999996 27.673328,-99.727277746539684 27.678262316066267,-99.732288643517421 27.685204233237535,-99.732448000000005 27.685424999999999,-99.732610774853441 27.685596448480599,-99.757538999999994 27.711853,-99.758533999999997 27.717071,-99.770740000000004 27.732133999999999,-99.774900999999986 27.73354,-99.785365999999996 27.730354999999999,-99.788844999999981 27.730718,-99.796341999999981 27.735586,-99.801651000000007 27.741771,-99.805670000000006 27.758687999999999,-99.813085999999998 27.773952,-99.817390803736785 27.775433523363962,-99.819091999999998 27.776019000000002,-99.822192999999999 27.766855,-99.825793000000004 27.764373999999997,-99.835127 27.762881,-99.841707999999997 27.766463999999999,-99.843346625073153 27.773142384459568,-99.844736999999981 27.778808999999999,-99.849281022020321 27.790032142335203,-99.850876999999997 27.793973999999999,-99.857944055165163 27.794214491272228,-99.870065999999994 27.794626999999998,-99.877441689362087 27.799278597548025,-99.877677000000006 27.799427,-99.877679299916537 27.799779028327777,-99.877693551047656 27.801960325692491,-99.877840000000006 27.824375999999997,-99.876677795668783 27.832975173255242,-99.876002999999997 27.837968,-99.877201999999997 27.842179000000002,-99.882014999999996 27.850391999999996,-99.89364999999998 27.856193,-99.901486000000006 27.864162,-99.904385000000005 27.875283999999997,-99.901231999999993 27.884405999999995,-99.894091000000003 27.892949999999999,-99.893456 27.899208000000002,-99.895827999999995 27.904177999999998,-99.900080000000003 27.912141999999999,-99.905861237749605 27.914081496997749,-99.917461000000003 27.917973,-99.925935042520848 27.927688375003317,-99.93714199999998 27.940536999999999,-99.938541 27.954059,-99.932160999999979 27.96771,-99.931811999999994 27.980967,-99.962768999999994 27.983536,-99.984922999999995 27.990729000000002,-99.991446999999994 27.99456,-99.998749958954292 28.00705628754028,-100.000278657311796 28.009672084008166,-100.008630999999994 28.023963999999999,-100.012838999999985 28.037203000000002,-100.014975394500183 28.048814882934586,-100.016570970484992 28.057487270710915,-100.017914000000005 28.064786999999999,-100.028724999999994 28.073118,-100.046108000000004 28.079067999999999,-100.053122999999985 28.08473,-100.056983000000002 28.094207,-100.05559599999998 28.101140999999998,-100.056492999999989 28.104185999999995,-100.064147158981442 28.110644603904401,-100.067651999999995 28.113602,-100.075474 28.124881999999999,-100.083393 28.144034999999999,-100.090288999999984 28.148312999999998,-100.119627999999992 28.155588000000002,-100.12658652988236 28.159659080291213,-100.141098 28.168149,-100.159890345070792 28.168159605160877,-100.160589999999999 28.16816,-100.1644540887186 28.169825181963088,-100.168437999999995 28.171541999999999,-100.173949604741296 28.178834844700365,-100.174413 28.179448,-100.17569869464343 28.180169771489844,-100.185693999999998 28.185780999999999,-100.195825662217615 28.189941498404405,-100.196499000000003 28.190218000000002,-100.19841872968675 28.190245400986015,-100.202449991411854 28.190302940621361,-100.208059000000006 28.190382999999997,-100.21208061434919 28.196473071951928,-100.212104999999994 28.196509999999996,-100.212111438897693 28.196576571978802,-100.212136678181992 28.196837521783539,-100.213449999999995 28.210415999999999,-100.217564999999993 28.226934,-100.220284000000007 28.232209999999995,-100.22363 28.235223999999995,-100.227575000000002 28.235856999999999,-100.246200000000002 28.234092,-100.251633999999996 28.236177,-100.261135590980771 28.244561246718906,-100.267604000000006 28.250268999999999,-100.280518 28.267969,-100.289383999999998 28.273491,-100.293468000000004 28.278475,-100.294296000000003 28.284381,-100.287553999999986 28.301093000000002,-100.286470999999992 28.312295999999996,-100.288638999999989 28.316977999999995,-100.314198000000005 28.345859,-100.317245999999997 28.357382,-100.320392999999996 28.362116999999998,-100.341869000000003 28.384952999999996,-100.344399999999979 28.389662,-100.34934096344108 28.4019924953441,-100.349585999999988 28.402603999999997,-100.349394820211828 28.402858691740477,-100.345766407828719 28.407692501181913,-100.343945000000005 28.410119000000002,-100.337058999999996 28.427150999999995,-100.336185999999998 28.430180999999997,-100.337474638078888 28.440402915586755,-100.337648113426326 28.441778981052359,-100.337796999999995 28.442959999999999,-100.338752462381066 28.444650728533539,-100.341532999999998 28.449570999999995,-100.350785999999999 28.459246,-100.353875644654778 28.461269551534915,-100.357498000000007 28.463642,-100.35795880406117 28.464220845064407,-100.358193534884933 28.464515705266944,-100.367961112704847 28.47678537623738,-100.368288000000007 28.477195999999999,-100.368051363629903 28.477598261305609,-100.365982000000002 28.481116,-100.356642877924983 28.482149981508559,-100.352234999999979 28.482638,-100.344180999999992 28.486249,-100.337140000000005 28.491728999999999,-100.33381399999999 28.499251999999998,-100.338517999999993 28.501833,-100.362147999999991 28.508399,-100.379079000000004 28.511638999999999,-100.388859999999994 28.515747999999995,-100.405057999999983 28.535779999999999,-100.411413999999994 28.551898999999999,-100.40430324537553 28.563833042228197,-100.397270000000006 28.575637,-100.396799999999999 28.580400999999998,-100.398385000000005 28.584883999999999,-100.403243426032972 28.586668145075244,-100.425819035320046 28.594958517689108,-100.429856 28.596440999999995,-100.431892715674053 28.597943579291371,-100.447320000000005 28.609324999999998,-100.448648000000006 28.616773999999999,-100.447280739633683 28.625703494601449,-100.445528999999993 28.637143999999996,-100.44560646842767 28.637394606891831,-100.447014715516048 28.641950223113035,-100.447091 28.642196999999999,-100.447325484276334 28.642184618041064,-100.447599559425257 28.642170145483281,-100.456522261830528 28.641698981546444,-100.462866000000005 28.641363999999999,-100.474494000000007 28.647071,-100.479445543783555 28.654922981332383,-100.479495071011698 28.655001519842354,-100.479635999999999 28.655225000000002,-100.481416494659797 28.655591917738484,-100.492493911747701 28.657874710783531,-100.493322226012125 28.658045406716248,-100.495863 28.658568999999996,-100.496129521434568 28.658770241190073,-100.500353999999987 28.661960000000004,-100.502122125123847 28.667202406240314,-100.505211969634487 28.676363647108229,-100.509438609439442 28.688895431533517,-100.510054999999994 28.690722999999995,-100.510127443340068 28.69126843161186,-100.510538898440004 28.694366309458967,-100.51077198772829 28.696121257064849,-100.511998000000006 28.705352,-100.511351260759739 28.706743032691019,-100.510646631791559 28.708258576930099,-100.509872363628347 28.709923903942272,-100.509406561254394 28.710925770365975,-100.508636802312012 28.712581398765199,-100.507069450532313 28.715952521820881,-100.506701000000007 28.716745000000003,-100.506745928327234 28.717920131927187,-100.506786973330165 28.718993692782757,-100.507152057645129 28.728542729239727,-100.507513721430456 28.738002299344281,-100.507590113222051 28.740000380261673,-100.507613000000006 28.740599,-100.507694735304739 28.740708529390524,-100.51442566685138 28.749728313832868,-100.519226000000003 28.756160999999999,-100.533017 28.763279999999998,-100.537772000000004 28.780775999999996,-100.534846642084489 28.786410367511117,-100.532431000000003 28.791062999999998,-100.535830000000004 28.805887999999999,-100.546431879116881 28.824270186264151,-100.546968759195195 28.825201061771438,-100.547323999999989 28.825817,-100.548186025546428 28.826178082695296,-100.553129999999982 28.828249,-100.561442999999997 28.829174000000002,-100.570509999999999 28.826317,-100.574698999999995 28.828786999999998,-100.576846000000003 28.836168000000004,-100.572991999999999 28.848463999999996,-100.580501999999996 28.856007999999999,-100.591040000000007 28.863054000000002,-100.598061272695219 28.874286065303028,-100.598877000000002 28.875590999999996,-100.602654 28.887660000000004,-100.602394435759351 28.893839359355621,-100.602053999999995 28.901944,-100.615584686670886 28.902906942475386,-100.627205999999987 28.903734,-100.631611000000007 28.902838999999997,-100.633502414453218 28.905240591668694,-100.640568000000002 28.914211999999999,-100.639169999999979 28.916288999999999,-100.638857000000002 28.927621999999996,-100.651511999999997 28.943431999999998,-100.64789859018552 28.954344193790252,-100.646992999999995 28.957078999999997,-100.646600907687997 28.967547400926616,-100.64647463428885 28.970918751315974,-100.645893999999998 28.986421,-100.647406325643686 28.99295674936236,-100.647835962928511 28.994813493392339,-100.648681241069511 28.998466493719445,-100.65094599999999 29.008254000000004,-100.653757999999996 29.015356,-100.656109999999998 29.017223999999999,-100.660207999999997 29.031497000000002,-100.663212 29.048041999999995,-100.662508000000003 29.058106999999996,-100.664064999999994 29.073205999999999,-100.666359117032755 29.07896154562156,-100.668483863047285 29.084292168447689,-100.674655999999999 29.099777000000003,-100.684472 29.110657,-100.692326999999992 29.115227999999995,-100.70996599999998 29.119684000000003,-100.727461999999989 29.129122999999996,-100.737795000000006 29.139078999999999,-100.739115999999996 29.141658,-100.737590999999995 29.147406999999998,-100.739681000000004 29.150486000000004,-100.746139999999997 29.154149000000004,-100.752330696165359 29.155516457617566,-100.759726 29.157149999999998,-100.76337082361762 29.160348915845475,-100.772648999999987 29.168492,-100.775904999999995 29.173344,-100.772154104961558 29.17809434863841,-100.766030999999998 29.185848999999997,-100.767059000000003 29.195287,-100.768348510582513 29.197581465531123,-100.775064591152173 29.209531592641572,-100.785521000000003 29.228136999999997,-100.791371999999996 29.225944999999999,-100.795681000000002 29.227729999999998,-100.79704599999998 29.235585999999998,-100.795234211471239 29.241421249558652,-100.795010188783237 29.242142762180318,-100.794911999999997 29.242459,-100.795310930062826 29.24310735172228,-100.797670999999994 29.246943000000002,-100.805332448258866 29.251327106905226,-100.815767091023289 29.257298117587734,-100.823532999999998 29.261742000000002,-100.834039999999987 29.261399999999998,-100.839016 29.263259,-100.841581161127962 29.265429071012271,-100.848663999999999 29.271420999999997,-100.856469000000004 29.275663999999999,-100.864659000000003 29.276076,-100.874739696506666 29.279181633366278,-100.876048999999995 29.279585,-100.876625364221198 29.280115401513385,-100.878513170701353 29.281852663087207,-100.878882999999988 29.282193000000003,-100.879105716359817 29.283377353454046,-100.880504361011205 29.290815018226784,-100.882051999999987 29.299044999999996,-100.886842 29.307848,-100.895590728097048 29.309871687341737,-100.904835000000006 29.31201,-100.906461302333199 29.313095095005444,-100.914770068080642 29.318638836799305,-100.916744062319239 29.319955917421627,-100.92203960930695 29.323489191321695,-100.922232587658954 29.323617949573855,-100.924041970395777 29.324825198761538,-100.926468967605715 29.326444530233299,-100.926628772437255 29.326551154580446,-100.926677999999981 29.326584,-100.92692137104487 29.32669794102517,-100.927819078352698 29.327118228044156,-100.92782883100196 29.32712279402223,-100.930446231588661 29.328348203997709,-100.940614999999994 29.333109,-100.941560773525751 29.336361493535293,-100.943196 29.341985,-100.945807189162338 29.344363370184055,-100.948971999999998 29.347245999999998,-100.95603875001359 29.347290187325033,-100.964324999999988 29.347342,-100.971743000000004 29.351370999999997,-100.972915999999998 29.354545000000005,-100.995606999999993 29.363403000000005,-101.004206999999994 29.364771999999999,-101.010614000000004 29.368669,-101.010768998319776 29.36895846820963,-101.014103165002794 29.375185214807839,-101.024016000000003 29.393697999999997,-101.036603999999997 29.406107999999996,-101.038600000000002 29.410713999999999,-101.037642000000005 29.414681000000002,-101.043363999999997 29.42988,-101.056956999999983 29.440773,-101.06011415724447 29.458454662113137,-101.060150999999991 29.458660999999999,-101.063843258270609 29.460131584976065,-101.087148999999997 29.469414,-101.103699000000006 29.470549999999999,-101.115253999999993 29.468458999999996,-101.130037999999985 29.47842,-101.137502999999995 29.473541999999998,-101.144336999999993 29.473246,-101.151876999999999 29.477004999999998,-101.163854997623304 29.493316894569897,-101.168923969306405 29.50021992913986,-101.171662999999995 29.503950000000003,-101.173821000000004 29.514566000000002,-101.192719999999994 29.520285,-101.227418999999998 29.522349999999996,-101.235274999999987 29.524854,-101.254895000000005 29.520341999999996,-101.260836999999981 29.529933,-101.261174999999994 29.536777,-101.252755240314642 29.553001111955531,-101.244355179006547 29.569187266927752,-101.24384013276574 29.574337712700849,-101.242022713082847 29.59251185083151,-101.251352546644355 29.604174135250076,-101.252152766968493 29.604494220898598,-101.259127443101093 29.607284069726152,-101.265347312053251 29.607284069726152,-101.274677145614746 29.602619152945408,-101.277624046978673 29.599940160672645,-101.283229510623855 29.594844301688571,-101.297224215766221 29.587069435365102,-101.30733154801338 29.587846934050759,-101.312894947857018 29.594028488101586,-101.314328915651188 29.595621785307589,-101.313192213312618 29.602947206633093,-101.31110792457288 29.616379301091623,-101.30733154801338 29.640715970810437,-101.311218981175116 29.64849082206727,-101.316661381574889 29.655488204771718,-101.325213716450733 29.657820655628775,-101.350093282659174 29.654710721152696,-101.353062961800887 29.655502634567405,-101.361755552011104 29.657820655628775,-101.364595571422868 29.66106639883844,-101.367197952410862 29.664040554714198,-101.371300910394638 29.676075888592084,-101.372874548462477 29.680691889931673,-101.378860251896057 29.698249939417508,-101.396947999999995 29.713947,-101.398362000000006 29.717000000000002,-101.396293999999997 29.727055,-101.397008999999997 29.733962999999999,-101.400635999999992 29.738078999999999,-101.410024000000007 29.741498,-101.415583999999996 29.746534,-101.415509877418046 29.750619769974676,-101.415402087456428 29.756561346443686,-101.424731921017937 29.758116313681725,-101.430388403484372 29.756500180308258,-101.441059122217254 29.75345141196761,-101.446501522617027 29.755006409338922,-101.451652003139955 29.758440048234313,-101.453498905321467 29.759671311053037,-101.455223999999987 29.771874,-101.467493655663716 29.779885945414083,-101.475268506920557 29.780663444099741,-101.503223000000006 29.764581999999997,-101.522695143280473 29.759671311053037,-101.526552276219391 29.761451532447605,-101.532802460460985 29.764336242900427,-101.53746737724174 29.782995910023434,-101.53804719015173 29.783865628452077,-101.546797210803248 29.796990645299058,-101.56156944476453 29.794658179375361,-101.572592853930203 29.778735448896484,-101.575564187573463 29.774443514881042,-101.582561562744587 29.771333610538232,-101.598573641854728 29.773657690388074,-101.603680999999995 29.774398999999999,-101.607256216824311 29.773863608191139,-101.625957999999997 29.771063000000002,-101.630319 29.768729,-101.632632680380155 29.763891873249722,-101.63512799999998 29.758675,-101.646417999999997 29.754303999999998,-101.652400999999983 29.758794999999996,-101.65328091488901 29.761368862201802,-101.654578 29.765162999999998,-101.662452999999985 29.77128,-101.689992000000004 29.771212999999996,-101.706636000000003 29.762736999999998,-101.714223999999987 29.767659999999999,-101.735201999999987 29.771591999999998,-101.754322999999999 29.777661999999999,-101.760919284561496 29.782457957985276,-101.763273999999981 29.784169999999996,-101.776796131253491 29.789191504347542,-101.777161000000007 29.789327,-101.777360180704861 29.789301830227139,-101.785668 29.788251999999996,-101.791002820423358 29.783037559970925,-101.796869557069002 29.782618516634159,-101.806507764952315 29.786389987871868,-101.809441149516488 29.790161459109573,-101.813855730843954 29.79253854440006,-101.814888826583982 29.793094827432377,-101.818909248247508 29.792167038125061,-101.830044431332681 29.789597381341238,-101.831231874027822 29.789323356194672,-101.852603555202364 29.801894932400803,-101.862241763085706 29.800218726571018,-101.866487373818487 29.79821962567333,-101.875399999999985 29.794022999999999,-101.878152615094365 29.794637055896249,-101.892739000000006 29.797891,-101.912406000000004 29.797849999999997,-101.917556726002999 29.792675767854249,-101.917942403066036 29.792482929945557,-101.922585359733716 29.790161459109573,-101.929709258872364 29.789323356194672,-101.932572380438657 29.791613852338052,-101.938090312383324 29.796028195755184,-101.946471365894325 29.797704401584976,-101.952535620779244 29.796990962273608,-101.953595265032959 29.796866298670082,-101.959462001678588 29.799380623656123,-101.965427194081556 29.806464275410743,-101.966166845299441 29.8073426094683,-101.970357372054934 29.81027599403247,-101.974547898810414 29.81027599403247,-101.982165144097308 29.804870201524977,-101.987538526473998 29.801056829485908,-101.993568005272067 29.802652866652032,-102.001318622543394 29.804704498914084,-102.001786318660763 29.804828300723614,-102.021918999999997 29.802490999999996,-102.032489182844799 29.803756293694118,-102.034758999999994 29.804027999999999,-102.039012999999997 29.802655,-102.041088000000002 29.799609999999998,-102.038411999999994 29.792831999999997,-102.039226999999997 29.790977000000002,-102.041308736499772 29.78984019520162,-102.048982832584102 29.785649487466547,-102.050044 29.785069999999997,-102.053123037129694 29.785312127485501,-102.073645999999982 29.786926,-102.076299925656656 29.790865308882584,-102.077348 29.792421,-102.084438999999989 29.794962000000002,-102.091420021879856 29.792967151942147,-102.091815999999994 29.792853999999995,-102.098789196918744 29.792718427915432,-102.115682000000007 29.792389999999997,-102.142325999999997 29.802854,-102.159600999999995 29.814355999999997,-102.161673999999991 29.819486999999999,-102.181894 29.846033999999996,-102.182859740836193 29.846584944255238,-102.18326563789924 29.846816503951921,-102.184058205433814 29.847268654791659,-102.186149999999998 29.848461999999998,-102.187393471220204 29.848699156882201,-102.188384798592551 29.848888224473839,-102.188671999999997 29.848942999999998,-102.189026115519184 29.848805138880103,-102.189342793483831 29.848681852617602,-102.205381000000003 29.842438,-102.216284162639099 29.842976962035557,-102.227553 29.843533999999995,-102.261388999999994 29.853283,-102.264041000000006 29.855964,-102.261776999999995 29.864001999999999,-102.264954000000003 29.867805999999998,-102.268816999999984 29.867990999999996,-102.276754999999994 29.862977999999998,-102.281249000000003 29.863116999999999,-102.297330999999986 29.875194,-102.301381000000006 29.877673999999995,-102.315388999999996 29.879919999999998,-102.320618999999994 29.878979999999995,-102.320667125014978 29.878900015386019,-102.320698585434869 29.878847727619664,-102.324634000000003 29.872306999999996,-102.333383999999995 29.868046,-102.341032999999996 29.869305000000004,-102.349861000000004 29.862316999999997,-102.361383773688715 29.849029038788231,-102.364542 29.845386999999995,-102.363642671554629 29.839963091609825,-102.362514000000004 29.833155999999995,-102.369522000000003 29.820395,-102.377253999999994 29.800163,-102.377312999999987 29.789971,-102.385270832882995 29.770348713937391,-102.386677616883858 29.766879890389689,-102.391739211722737 29.765814289574276,-102.392906191083 29.765568609270456,-102.402175111261812 29.766775086101941,-102.412062000000006 29.768061999999997,-102.433301 29.776608,-102.460890018677347 29.77909171043791,-102.468946430597143 29.779816991558327,-102.469957868267898 29.780012383523857,-102.481595292961757 29.782260529257879,-102.490330613701886 29.783948039559665,-102.492674483475767 29.783853017496881,-102.508312776666344 29.783219030534834,-102.508509848222559 29.783087649355906,-102.512686811979108 29.780303003853621,-102.512942156326147 29.774953626291172,-102.513380999999995 29.76576,-102.526400256170959 29.758693706517125,-102.535832205630967 29.753574449155192,-102.539417050278132 29.751628749336795,-102.545492105079163 29.750899740311965,-102.551081152293932 29.752357753652575,-102.556670813570321 29.757783010503054,-102.559343229460382 29.760376824671383,-102.565661280990938 29.761591836573395,-102.572255912443325 29.757095496286663,-102.57574472309652 29.754716761401177,-102.57635337725236 29.754301769870359,-102.585948674897452 29.751239442391949,-102.587774480184081 29.750656738873374,-102.597160000000002 29.751608,-102.612879000000007 29.748181999999996,-102.622534000000002 29.736632,-102.630150999999984 29.734314999999999,-102.64566499999998 29.733910000000002,-102.661251958261417 29.736122779697027,-102.66726872436665 29.739732837494621,-102.670971460158171 29.741954477821469,-102.677191937153026 29.738261067251376,-102.678467215476147 29.736427653943998,-102.6852530581628 29.72667193704833,-102.688163999999986 29.722486999999997,-102.690237999999979 29.707481999999999,-102.695507594622001 29.699754690880447,-102.698346999999984 29.695590999999997,-102.699316999999994 29.685029,-102.693466 29.676507,-102.697798916570122 29.672550546488289,-102.711337549653422 29.6601882100483,-102.724231000000003 29.648415000000004,-102.736947999999984 29.641537999999997,-102.742030999999997 29.632142000000002,-102.74048425929719 29.62775763619268,-102.738427999999999 29.621928999999998,-102.739991000000003 29.599041,-102.746201999999997 29.592875000000003,-102.757065999999995 29.597798999999998,-102.761810999999994 29.598396999999999,-102.768340999999992 29.594733999999999,-102.766929734823805 29.591197739636346,-102.762241000000003 29.579448999999997,-102.766124000000005 29.572347999999998,-102.768792219428661 29.572598581791439,-102.773961 29.573084,-102.776343296957975 29.562015327831393,-102.777530999999996 29.556497,-102.77572499999998 29.552188999999995,-102.771428999999998 29.548545999999998,-102.79216136048494 29.533953841063816,-102.807296321997939 29.523301326891541,-102.808565712504773 29.522407885546979,-102.808691999999979 29.522319000000003,-102.808681334358837 29.522097795383676,-102.808577631171161 29.519946998869006,-102.807327 29.494009000000002,-102.813953999999995 29.482805999999997,-102.814096473430837 29.482483316434472,-102.814383778328263 29.481832608662831,-102.822314986984821 29.463869465126457,-102.82537225240516 29.456945161410285,-102.827007089548758 29.453242470491304,-102.830969999999979 29.444267,-102.832538999999997 29.433109000000002,-102.830570753051859 29.427471931628293,-102.827354999999983 29.418261999999995,-102.825211066354328 29.40389180477127,-102.824564449740322 29.399557712155943,-102.831802092379931 29.389471209449322,-102.832669213065941 29.388262775214326,-102.84047188579207 29.377388836904565,-102.840778422425643 29.376961642203423,-102.841560439245441 29.370344567434586,-102.842457529677418 29.362753791491347,-102.843015380341285 29.358033509958585,-102.843020777220957 29.357987843989019,-102.861629999999991 29.351638999999995,-102.871857000000006 29.352092999999996,-102.876866000000007 29.354058999999996,-102.879534000000007 29.353326999999997,-102.883721999999992 29.348058999999999,-102.881857488401977 29.34363024944906,-102.879805000000005 29.338754999999999,-102.890489000000002 29.309498999999995,-102.88922161316745 29.299205074185686,-102.888328 29.291947,-102.891022000000007 29.287113000000002,-102.902604999999994 29.279440999999998,-102.90311226801488 29.27677066200776,-102.906295999999998 29.260010999999995,-102.903188999999983 29.254028999999999,-102.887901999999997 29.245611999999998,-102.881135 29.246022,-102.871347 29.241624999999999,-102.870795537867835 29.239589944231255,-102.86823682221636 29.230147538772215,-102.866845999999995 29.225014999999999,-102.878020000000006 29.214697999999999,-102.890063999999995 29.208813999999997,-102.899231 29.208863,-102.908656596973657 29.219194069767902,-102.908787000000004 29.219336999999996,-102.909098471667448 29.219296482603067,-102.910575587951939 29.219104333804097,-102.912131000000002 29.218902,-102.912650757516516 29.218481184275788,-102.915803535402844 29.215928573746115,-102.915865999999994 29.215877999999996,-102.915845750043147 29.215583596781208,-102.915608148145267 29.212129230727648,-102.915554 29.211341999999998,-102.915202931298523 29.21076702044931,-102.914525807203304 29.209658028088604,-102.912447999999998 29.206254999999999,-102.91453363655873 29.20019781620671,-102.917367531146525 29.191967513425833,-102.917805 29.190697,-102.922897000000006 29.192704085059273,-102.925481999999988 29.193722999999995,-102.932612000000006 29.194113000000005,-102.944911000000005 29.188819999999996,-102.947155999999993 29.180776999999999,-102.95089 29.176834999999997,-102.953474999999997 29.176307999999995,-102.977266 29.186226,-102.981742305424802 29.185103060319207,-102.989431999999994 29.183174,-102.98978258837333 29.182935350109393,-102.991725524817895 29.181612768970929,-102.994653 29.17962,-102.994906329461855 29.17910907354543,-102.99809599999999 29.172675999999996,-102.995688 29.161218999999999,-103.00243399999998 29.150260999999997,-103.0050672680876 29.149386797638936,-103.008362000000005 29.148292999999995,-103.010324999999995 29.137821999999996,-103.015028 29.125769999999996,-103.016945338084582 29.124525732477775,-103.024896087692937 29.119366048020158,-103.032982999999987 29.114118,-103.033302941039096 29.107355634443419,-103.034095953658579 29.105913798143234,-103.035682683422891 29.103028844591982,-103.04044215980575 29.099351067768175,-103.049126083320303 29.097714968852063,-103.055369601981923 29.096538655622457,-103.061557539334615 29.093936906572154,-103.06671291432167 29.091769303506382,-103.074407490743866 29.088534080562461,-103.076354546596249 29.085721668416742,-103.076667707631657 29.079576983004682,-103.076847 29.076059,-103.091926967746744 29.064237268591206,-103.100265999999991 29.057699999999997,-103.101359249603803 29.049403674773888,-103.102531654124817 29.040506667933872,-103.100975335951205 29.030701853789079,-103.100368259199087 29.026877266486249,-103.101607999999999 29.018122999999999,-103.107810999999998 29.013812,-103.117237999999986 29.000208999999998,-103.113922000000002 28.988546999999997,-103.115062910480361 28.985887850893185,-103.115327999999991 28.98527,-103.115773294260094 28.985147329619764,-103.126748000000006 28.982123999999995,-103.134930999999995 28.983525,-103.143274000000005 28.978073999999999,-103.156645999999995 28.972830999999999,-103.163865 28.972099,-103.165923000000006 28.974001999999999,-103.166234999999986 28.978836000000005,-103.174329720990258 28.980505274886987,-103.182663652045193 28.982223879127538,-103.194928465619142 28.984753100989199,-103.195705106971403 28.984913258196226,-103.207825367468075 28.987412670652219,-103.227338454203803 28.991436614861634,-103.227579101883322 28.991486240676846,-103.227800999999999 28.991532000000003,-103.228011662384262 28.991347921912006,-103.228737472224623 28.990713704806197,-103.239108999999985 28.981650999999996,-103.245121150470112 28.980239630911282,-103.2474464632202 28.980649978816817,-103.249155161185584 28.980951512720708,-103.25190330878641 28.984768118238364,-103.253285000000005 28.986686999999996,-103.26030800838916 28.989731411362609,-103.266003072061508 28.990206003834011,-103.270357000000004 28.988113999999996,-103.270725571428585 28.987466542857135,-103.27232562100086 28.984655789108508,-103.273357000000004 28.982844,-103.273647076585334 28.982817854078331,-103.281189929980513 28.982137982403092,-103.282424051550748 28.983865752282551,-103.284749352823042 28.987121173462914,-103.285935817906974 28.994002716014545,-103.289257951411443 28.999697788883793,-103.296614077237592 29.004443676810233,-103.302399476821606 29.006455988366771,-103.312987409437454 29.010138745081029,-103.315449022736544 29.011725838031147,-103.323993942362023 29.017235063099889,-103.331021803791103 29.021766184756,-103.332920159881368 29.026986669752301,-103.332783823258595 29.028827200289001,-103.332445567409962 29.033393619832523,-103.334818511373186 29.039800579109659,-103.341462759988346 29.041224342728523,-103.347869719265475 29.037427630547988,-103.350815999999995 29.028566999999999,-103.355428000000003 29.021529,-103.355590463621823 29.021464336016578,-103.361777791205157 29.019001647792766,-103.361998 29.018913999999999,-103.382125000000002 29.024248999999998,-103.386095607142025 29.025822707722725,-103.399799910010643 29.031254261761571,-103.402689272115182 29.032399429564627,-103.427474921518822 29.04222295692054,-103.427754276336316 29.042333676218103,-103.430481680804888 29.047455485683194,-103.434668000000002 29.055316999999995,-103.439550459717495 29.058547821156772,-103.449722032594721 29.065278554178825,-103.453029264571228 29.067467015663059,-103.457386392383299 29.068596640465525,-103.460381908910477 29.067681344107211,-103.463195887793432 29.066821517562918,-103.469166763983068 29.069242141692889,-103.471264639062966 29.073115142802621,-103.471299587628792 29.074897490538035,-103.471426016715213 29.08134526859719,-103.474814887995407 29.086670637304994,-103.484429000000006 29.094524,-103.49531945696836 29.1087608679228,-103.500928937954981 29.116094025764934,-103.503236 29.119109999999996,-103.506163032831353 29.119368513261239,-103.513192088151087 29.119989313955617,-103.524613000000002 29.120998,-103.524225442342612 29.124905426308125,-103.523383999999993 29.133389,-103.525026999999994 29.137353999999998,-103.539240927934515 29.144791265038371,-103.551909954693073 29.151420179312847,-103.558678999999984 29.154961999999998,-103.579462000000007 29.149964999999998,-103.592359999999999 29.150259999999999,-103.598960126757959 29.155019048637598,-103.606437999999997 29.160411,-103.607894091053709 29.162314354517299,-103.610539999999986 29.165772999999998,-103.624537921955991 29.163185608071569,-103.629433693714475 29.1622806680118,-103.638195234739996 29.160661174732635,-103.645634999999999 29.159286000000002,-103.653180000000006 29.162863999999995,-103.656807999999984 29.169098999999999,-103.660202999999996 29.170933999999999,-103.667724667668963 29.172878689431396,-103.669696386484915 29.173388467437,-103.688670000000002 29.178293999999998,-103.688830238367032 29.178273608722382,-103.690116124218548 29.178109972160996,-103.697314000000006 29.177194,-103.699305464408098 29.178139630948273,-103.713769999999997 29.185008,-103.724743000000004 29.191469999999999,-103.73193762439729 29.198544108660482,-103.742175000000003 29.20861,-103.750912464183997 29.219357091602017,-103.755265634411842 29.22471149629115,-103.75594348727293 29.225545256136954,-103.768569999999997 29.227360999999995,-103.777623396259372 29.232265264832392,-103.780085146052983 29.242351446713872,-103.780352362214714 29.243446273985068,-103.781659908552058 29.248803500057083,-103.789034484601103 29.257501704713096,-103.792700821322356 29.259284649416337,-103.795120675584712 29.260461427946989,-103.80876361213285 29.267096007175422,-103.816641821688407 29.27092719156084,-103.818617217853202 29.271599921312173,-103.838302999999982 29.278303999999999,-103.854966933859771 29.281484400071786,-103.856892999999999 29.281852,-103.880606 29.284961999999997,-103.896615144488038 29.284634799403065,-103.910231251371073 29.284356508561018,-103.916269383748329 29.284233099060927,-103.91710599999999 29.284215999999997,-103.91776286712728 29.284516760669142,-103.918698764585329 29.284945281345607,-103.918909999999997 29.285042,-103.918905327188597 29.285488562070029,-103.918900778480648 29.285923264066316,-103.918857000000003 29.290106999999995,-103.924975999999987 29.293913000000003,-103.943697999999983 29.294945999999996,-103.965795999999983 29.298586999999998,-103.975234999999998 29.296016999999999,-103.983459597310627 29.299165977024781,-103.998789342279238 29.305035323921498,-104.012357062242771 29.310230038851625,-104.018558084893087 29.312604243583909,-104.038281999999995 29.320155999999997,-104.047006656168747 29.325575022319434,-104.055595999999994 29.330909999999996,-104.056467149578211 29.334496091467582,-104.057243999999997 29.337694000000003,-104.068917843404819 29.342306667996301,-104.075923999999986 29.345075,-104.082149999999999 29.345922999999996,-104.091021999999995 29.353691999999995,-104.093326000000005 29.359926000000002,-104.098377999999983 29.366755999999999,-104.106466999999981 29.373127,-104.122882935723638 29.379859019095424,-104.125474999999994 29.380922000000002,-104.132831527553293 29.381873417846823,-104.136236243923818 29.382313748953422,-104.143691999999987 29.383277999999997,-104.1467332019064 29.385415391432094,-104.148888696362661 29.386930297552944,-104.151718842950046 29.388919356896473,-104.157422367906094 29.392927859373117,-104.166562999999996 29.399352,-104.180069999999986 29.412763999999999,-104.181273000000004 29.426265,-104.182051945448123 29.427144615030393,-104.195989999999995 29.442884000000003,-104.208194000000006 29.448201,-104.212529153241931 29.452438774515159,-104.213947876032222 29.456222068892099,-104.21370324326665 29.462011765001886,-104.213238514637069 29.473010445135856,-104.218538498245692 29.476600759818915,-104.220568643482977 29.477976020723915,-104.227547514371139 29.480496161448666,-104.229081071868791 29.481049944541308,-104.233824999999996 29.486544999999996,-104.233486999999997 29.492733999999995,-104.235847000000007 29.496744,-104.238313284768751 29.498023301020304,-104.246870092866089 29.50246185307569,-104.254473621536903 29.506405923975272,-104.260293266516271 29.50942466611497,-104.26168489846043 29.511073814728768,-104.264155000000002 29.514001,-104.271046277211582 29.51559593462645,-104.274575430964404 29.516412730896519,-104.293481117436073 29.520788310787555,-104.306646311930564 29.523835296697214,-104.308812834933008 29.524336722260216,-104.311570786550874 29.52540915148019,-104.318073989469781 29.527937921306467,-104.320711000000003 29.526326414398167,-104.326090351466348 29.523039031981277,-104.327483437129615 29.522187701603762,-104.334811000000002 29.519462999999998,-104.338113000000007 29.519967,-104.353150868059984 29.530471948300562,-104.369085650105362 29.541603450512167,-104.37074044290263 29.542759433043344,-104.371174999999994 29.543062999999997,-104.371454921502831 29.543072731712495,-104.371996954766473 29.543091575966443,-104.375901661123379 29.543227326450971,-104.381040999999996 29.543405999999997,-104.394588999999982 29.556087000000002,-104.394583075653415 29.556197720561212,-104.394577025204526 29.556310797858156,-104.394552364240909 29.55677168847231,-104.394503136758885 29.55769170460702,-104.394351 29.560534999999998,-104.39571704642303 29.563607040276512,-104.39636925661604 29.56507376640522,-104.397848504811165 29.56840038104859,-104.399550133070164 29.572227096202102,-104.399591 29.572319,-104.399981791506633 29.572551361916329,-104.452301000000006 29.60366,-104.466520000000003 29.609296,-104.483502 29.627740999999997,-104.486693164979016 29.629712817604439,-104.493658999999994 29.634016999999997,-104.503232654335022 29.63787621670291,-104.507568060311556 29.63962385355849,-104.51068846437596 29.64315687341222,-104.513969549435132 29.646871821353749,-104.51818442992635 29.651644041921735,-104.53325150001281 29.668703453669117,-104.535568725458901 29.671327089370656,-104.539761023554547 29.676073741438437,-104.540155514025756 29.678572204873163,-104.540559188867974 29.681128836544634,-104.537934834631798 29.684482179324355,-104.535770155740693 29.687248158943191,-104.536302269386866 29.690440851131939,-104.537991394981006 29.693268523024599,-104.544269904764263 29.703779029587054,-104.545505621253113 29.70584767433138,-104.552240999999995 29.717122999999997,-104.555600999999996 29.731220999999998,-104.554914970831931 29.738152096413199,-104.554660236582549 29.740725729903364,-104.557361904757329 29.745049367744027,-104.565950999999998 29.758794999999996,-104.565687999999994 29.770461999999998,-104.571279565966023 29.778773775962186,-104.586447318468245 29.801320404476364,-104.592472 29.810276000000002,-104.594023000000007 29.809220999999997,-104.599148999999997 29.811007,-104.610166000000007 29.819117999999996,-104.610205623651026 29.819231101342197,-104.610356932717465 29.819662996386217,-104.613081011852316 29.827438579869643,-104.615248982559379 29.833626813172685,-104.619039 29.844444999999997,-104.624350000000007 29.845221999999996,-104.629290740007292 29.852171499068138,-104.629713747950376 29.852766489555783,-104.630103000000005 29.853313999999997,-104.630111961493199 29.853664893019587,-104.630290851730521 29.860669455113747,-104.630338938536084 29.862552324858758,-104.630359999999996 29.863376999999996,-104.630588419131911 29.86393398222631,-104.633274999999998 29.870484999999999,-104.63616345635748 29.872800876528242,-104.645854762904364 29.880571071602066,-104.65678299999999 29.889332999999997,-104.658422170930251 29.891285606400047,-104.65864999999998 29.891556999999999,-104.658665881124946 29.891956296855856,-104.659041999999999 29.901413000000002,-104.661965712024596 29.903547518850328,-104.666224133352003 29.906656470935726,-104.672326999999996 29.911111999999996,-104.679772 29.924658999999998,-104.680850906343153 29.932111041680564,-104.684321999999995 29.956085999999999,-104.679660999999982 29.975271999999997,-104.680379178583593 29.977083,-104.685479 29.989943,-104.689640999999995 30.014949999999999,-104.693591999999995 30.019077000000003,-104.701242868742796 30.021046973658397,-104.702310999999995 30.021321999999998,-104.702447580064685 30.021555813412469,-104.7030116881661 30.022521518330599,-104.703997999999999 30.02421,-104.703882705803636 30.024660825787098,-104.703121214098445 30.027638426639932,-104.701101999999992 30.035533999999998,-104.706873999999999 30.050685,-104.706630611705322 30.051708605996314,-104.703831250551389 30.063481739403372,-104.703581999999997 30.06453,-104.699792220462342 30.065066336345112,-104.698848962238912 30.065199827927678,-104.698233000000002 30.065286999999998,-104.697787990647399 30.065651654776563,-104.69277799999999 30.069756999999996,-104.687313590037505 30.080921966773531,-104.685080632167896 30.08548438075637,-104.685002999999995 30.085643,-104.685554782105299 30.093963293324606,-104.685687 30.095957000000002,-104.686861171517634 30.098036494960315,-104.692093999999983 30.107303999999996,-104.693655813605488 30.119154117533654,-104.695366000000007 30.13213,-104.692122999999995 30.138662999999998,-104.690080458880587 30.149079251722458,-104.687506999999997 30.162202999999998,-104.687296000000003 30.179464000000003,-104.702787999999998 30.211735999999995,-104.707897632633845 30.218501061672534,-104.711235999999985 30.222920999999999,-104.713166 30.237956999999998,-104.722357186598074 30.248308653999679,-104.724410584274111 30.250621311025988,-104.72532436157617 30.251650460675243,-104.73347160041142 30.260826359409911,-104.733822000000004 30.261220999999999,-104.734059376092361 30.261231667834558,-104.737359999999995 30.261379999999996,-104.740448 30.259454000000002,-104.749663999999996 30.26126,-104.751566999999994 30.263643999999999,-104.754655151309422 30.272796681105522,-104.757893999999993 30.282395999999999,-104.761634 30.301147999999998,-104.779356000000007 30.313188,-104.790279572675416 30.323632238875831,-104.797291 30.330335999999999,-104.809794338457337 30.334925849121163,-104.810755485390246 30.338091979227556,-104.81211787963197 30.342579864771171,-104.813478341684558 30.347061385458392,-104.814379749150064 30.356375955470707,-104.814778573671205 30.360497153782266,-104.817595751374526 30.365914799658352,-104.824313633436745 30.370465624210016,-104.837492999999995 30.373909,-104.849824017938076 30.383147747051474,-104.859521 30.390413000000002,-104.857439999999997 30.408957,-104.852419999999995 30.418792,-104.861074000000002 30.428896999999996,-104.86474141169117 30.441297336779865,-104.865463293164552 30.443738179024677,-104.868454614768496 30.453852504447951,-104.869872 30.458644999999997,-104.86871099999999 30.463229999999996,-104.866118999999983 30.46479,-104.866094000000004 30.467379999999999,-104.870137228360662 30.483875070981508,-104.873288503237063 30.496731258693877,-104.873335488188886 30.496922942181985,-104.876786999999979 30.511004000000003,-104.878566789651714 30.514416830422793,-104.880108146577356 30.517372454871531,-104.88208573587417 30.521164575423189,-104.889375999999999 30.535143999999995,-104.890392881954469 30.540947215529823,-104.892228000000003 30.551419999999997,-104.895440150997459 30.560421421221292,-104.899000999999998 30.570399999999996,-104.909330873116318 30.584188648619556,-104.909747767935556 30.584745133303247,-104.918689620637082 30.596681007395873,-104.924796 30.604831999999998,-104.927016167130404 30.604700501077968,-104.934922481779466 30.604232215677584,-104.939873000000006 30.603939,-104.953391370086464 30.606003357240429,-104.967167000000003 30.608106999999997,-104.971627504383378 30.61006529240159,-104.972071 30.61026,-104.972794851616513 30.611297344530712,-104.980135850742045 30.621817657146149,-104.980290999999994 30.622039999999995,-104.982191641583043 30.62882153037463,-104.983981 30.635206,-104.985513855292751 30.652294791670293,-104.9863 30.661059000000002,-105.001239999999996 30.672583000000003,-105.002056999999994 30.680971999999997,-105.006614566555172 30.685839873047019,-105.006800999999996 30.686039,-105.007528432885024 30.6859080282745,-105.007959930235828 30.685830338698263,-105.020141999999993 30.683637,-105.035888798004834 30.686138071331488,-105.042930223005172 30.687256464175281,-105.044973600167665 30.685364445024991,-105.049769587265445 30.680923708581364,-105.049884734287517 30.6808170907847,-105.050688284649809 30.681171184306308,-105.054688384336032 30.682933873306403,-105.062333999999993 30.686302999999995,-105.062477471553692 30.692159292631892,-105.062625999999995 30.698222,-105.084504902225902 30.710918832086001,-105.098281999999998 30.718914000000002,-105.108075999999997 30.730049999999995,-105.110705999999993 30.737749999999995,-105.110681999999983 30.743366000000002,-105.113815999999986 30.746001,-105.119547104826722 30.748125675649064,-105.123265000000004 30.749504000000005,-105.140207000000004 30.752502,-105.152361999999982 30.751451999999997,-105.157640215066564 30.754007791997694,-105.16015278062757 30.757058756266805,-105.160271207191187 30.758203550015399,-105.161229588477383 30.767467931854636,-105.164076390339474 30.771453450048199,-105.164818961888187 30.77249304906519,-105.164868027003308 30.772491740665838,-105.170370203038615 30.772345016388588,-105.178279098267282 30.772134113115257,-105.183436 30.776644999999995,-105.185930999999997 30.784391999999997,-105.195143999999999 30.792138,-105.195988495740664 30.791702299374609,-105.203522176185984 30.787815448176353,-105.206160999999994 30.786453999999996,-105.212916518294108 30.785414778041517,-105.215967484302155 30.786491589369188,-105.216685356202021 30.789542555377231,-105.215888956387687 30.792967070566242,-105.214890669496626 30.797259699168034,-105.218659510882389 30.801566944478708,-105.222008841883465 30.801829013843189,-105.231580057313238 30.802577916338681,-105.238364256021057 30.803108747911697,-105.249792715464977 30.799033957074698,-105.255416052233826 30.797028969328842,-105.261224946310648 30.798054073736733,-105.261360733612406 30.798078036329223,-105.27276013440985 30.808707209360072,-105.27887297001547 30.814407016614517,-105.283004544196217 30.818259431108679,-105.287237620233441 30.822206489243744,-105.289317685342255 30.822206489243744,-105.295630129130572 30.822206489243744,-105.300778681061615 30.818848737795758,-105.303672944509898 30.816961174571279,-105.314862960890409 30.816961174571279,-105.316949659843416 30.82296045428,-105.31766045482081 30.825003996727105,-105.320108268786385 30.827451797139727,-105.322675464925993 30.828439452154051,-105.330102631610075 30.831296841312803,-105.347695000000002 30.838065,-105.353219571709047 30.842032277683753,-105.358103536812379 30.84553952616983,-105.359771122039604 30.846737044096301,-105.360672052753856 30.84738401593513,-105.36720323988537 30.847875849249167,-105.377416999999994 30.848644999999998,-105.387780492422849 30.851314552204784,-105.394242074789418 30.852979003795937,-105.396689881978517 30.855426817761515,-105.396237319899697 30.858492407966825,-105.394628539050657 30.86939005724841,-105.394248999999988 30.871960999999999,-105.395681745186749 30.87649980844607,-105.399608999999998 30.888940999999996,-105.399828021807267 30.889112280223049,-105.402824820246408 30.891455847338634,-105.413505 30.899808,-105.430088999999995 30.905791999999998,-105.44547819369545 30.915748838601054,-105.448693870984556 30.917829388134351,-105.452149246331331 30.920065022782566,-105.4597280766598 30.924968540917344,-105.469954295993247 30.931584924947412,-105.472488639470896 30.933224650164071,-105.476269681741059 30.935670991952524,-105.488027000000002 30.943277999999999,-105.495516502166126 30.9493992090351,-105.4968561000139 30.950494069316512,-105.497422439936116 30.953962910943051,-105.497963910074574 30.957279424722472,-105.502256687477072 30.962680017552614,-105.507558525965123 30.966493977230062,-105.533087999999992 30.984859,-105.541468808393844 30.984769556162778,-105.543675999999991 30.984745999999998,-105.557430349577899 30.990228688381027,-105.570063935625512 31.008532833135739,-105.575218046011173 31.016000355201566,-105.578084306850855 31.020153131231776,-105.578407858220658 31.020621907958049,-105.57911399999999 31.021644999999999,-105.580554486932016 31.024917232759986,-105.581339666024604 31.026700857930102,-105.581404000000006 31.026847000000004,-105.581361569643192 31.027041810483581,-105.581235244876609 31.027621805343596,-105.579823718925667 31.034102543987302,-105.579541999999989 31.035395999999995,-105.579765234089464 31.036249085539566,-105.579847333127134 31.036562825712579,-105.585323000000002 31.057487999999996,-105.592709163135751 31.0626132919136,-105.595921000000004 31.064841999999999,-105.598772999999994 31.074925999999998,-105.60333 31.082624999999997,-105.627348999999995 31.098545,-105.641890000000004 31.098321999999996,-105.646730999999988 31.113907999999999,-105.647031366805422 31.114192798578223,-105.648833999999994 31.115902000000002,-105.662869191777489 31.12063916934996,-105.673930643060629 31.124372639388369,-105.709491 31.136374999999997,-105.717005999999998 31.141438,-105.717653520299876 31.143411480377267,-105.719539999999995 31.149160999999996,-105.742677999999998 31.164897,-105.763531 31.164121000000005,-105.773256999999987 31.166896999999999,-105.774148788612138 31.168976038235485,-105.780021000000005 31.182666,-105.779878030009812 31.18682806893737,-105.779724999999999 31.191282999999995,-105.782894999999996 31.197562999999999,-105.790659746923424 31.200723362140888,-105.794386000000003 31.20224,-105.818835000000007 31.230680999999997,-105.825806058218902 31.23733997673531,-105.835722000000004 31.246811999999995,-105.851073632158958 31.265902599748792,-105.86604427072389 31.284519412988434,-105.869353000000004 31.288633999999998,-105.869862116496506 31.288859823963843,-105.876014999999981 31.291588999999995,-105.890871999999987 31.290013999999996,-105.895034999999993 31.290977999999999,-105.903460999999993 31.306768999999999,-105.908770999999987 31.312773999999997,-105.914613899052299 31.312859252963214,-105.93196564998388 31.313112430054005,-105.932552999999999 31.313120999999995,-105.933375187723101 31.313903465142818,-105.938451999999984 31.318735,-105.948091000000005 31.340069,-105.945903 31.352809999999998,-105.953942999999995 31.364749,-105.970101 31.365936999999995,-105.997579969562565 31.386863626037869,-106.00418474278807 31.391893495117941,-106.004925999999998 31.392457999999998,-106.006143777923754 31.392558937255828,-106.022866323827969 31.393945009265412,-106.080091217088636 31.398688175961098,-106.080258 31.398702,-106.080335505244278 31.398768097394733,-106.096409750603954 31.412476405141465,-106.100621535494 31.416068265421309,-106.102641400977276 31.417790830744398,-106.10264993125142 31.41779810546371,-106.106876999999997 31.421403000000005,-106.112168999999994 31.423577999999996,-106.132782000000006 31.425367000000005,-106.143572676566535 31.431101721097118,-106.158218000000005 31.438885000000003,-106.175305198785026 31.455910533348611,-106.175674999999998 31.456278999999995,-106.17677981450808 31.456634312625521,-106.182946895641223 31.45861766980741,-106.20560859826729 31.465905761156737,-106.205826999999999 31.465975999999998,-106.205998876707866 31.466165148890862,-106.212686244283063 31.473524541419071,-106.218538531147885 31.479964934554566,-106.218843000000007 31.480299999999996,-106.218893022078106 31.480498686193428,-106.223908999999992 31.500422,-106.236804000000006 31.513376,-106.242649095206133 31.530650094003715,-106.245874455325477 31.540182047193959,-106.246202999999994 31.541153,-106.246406806009631 31.541315626597875,-106.254779999999997 31.547997000000002,-106.280345588488331 31.561810530102129,-106.280548572587122 31.561920205925162,-106.280811 31.562061999999997,-106.287785 31.584444999999999,-106.292254713772053 31.594651759250389,-106.295141086978958 31.601242900860864,-106.303535999999994 31.620412999999996,-106.308594276522342 31.627497440426588,-106.330970256390501 31.658836434185069,-106.33473699999999 31.664111999999999,-106.338265602146336 31.671883697950737,-106.346992532059133 31.691104641686092,-106.349537999999995 31.696711,-106.357472918704602 31.702103016258707,-106.368303742040567 31.709462886938788,-106.370138999999995 31.710709999999999,-106.373839000000004 31.714809999999996,-106.378039 31.72831,-106.381039 31.732109999999999,-106.38595139194058 31.734759025425479,-106.394642915450532 31.739445961452269,-106.404086535473255 31.744538468290354,-106.417940000000002 31.752009,-106.421739999999616 31.752623660686648,-106.431540999999996 31.754208999999996,-106.434644983693715 31.755853956158482,-106.444263765046571 31.76095142933643,-106.451540999999992 31.764807999999999,-106.467641999999998 31.759607999999997,-106.470742 31.753508,-106.472156160715315 31.752506597443457,-106.47367184987327 31.751433300058491,-106.475016438009845 31.750481163584279,-106.475542000000004 31.750108999999998,-106.48261401078824 31.748321568701869,-106.484641999999994 31.747809000000004,-106.486162292248409 31.747994847970777,-106.488078402545341 31.748229082678503,-106.489542 31.748407999999998,-106.507341999999994 31.761208,-106.509102011460428 31.762827435120251,-106.511609062807707 31.765134242258316,-106.523643000000007 31.776206999999996,-106.528643000000002 31.781807,-106.528542999999999 31.783906999999996,-106.528542999999999 31.784407000000002,-106.527996999999999 31.786944999999999,-106.527623000000006 31.789119000000003,-106.527737999999985 31.789760999999995,-106.527942999999993 31.790507000000002,-106.530514999999994 31.792103,-106.532480000000007 31.791913999999998,-106.533 31.791829,-106.533043000000006 31.791906999999995,-106.534743000000006 31.796106999999999,-106.535154000000006 31.797088999999996,-106.535342999999997 31.797507,-106.535842999999986 31.798607,-106.542096999999998 31.802145999999997,-106.542143999999993 31.802106999999996,-106.544713999999999 31.804286999999999,-106.545344 31.805007,-106.546561898485905 31.806561850400339,-106.546615562760394 31.806630361790774,-106.547143999999989 31.807304999999996,-106.551861034152338 31.808599471053657,-106.558443999999994 31.810406,-106.560680020141419 31.810752754512048,-106.560847305685968 31.810778696593822,-106.562944999999999 31.811104,-106.56344399999999 31.812605999999995,-106.566844000000003 31.813305999999997,-106.569123704016391 31.811582321353455,-106.570943999999997 31.810205999999997,-106.577243999999993 31.810406,-106.581344 31.813905999999996,-106.582144 31.815505999999999,-106.588044999999994 31.822105999999998,-106.589044999999984 31.822705999999997,-106.593826000000007 31.824901,-106.602727000000002 31.825023999999996,-106.605266999999998 31.827911999999998,-106.603310537982878 31.834798487166189,-106.601945 31.839604999999999,-106.60204499999999 31.844404999999998,-106.605244999999982 31.845904999999998,-106.605845000000002 31.846304999999997,-106.614637000000002 31.846489999999996,-106.621857000000006 31.852854,-106.625763000000006 31.856276,-106.627808000000002 31.860592999999998,-106.629708357956787 31.861913746439043,-106.635925999999998 31.866235,-106.635879999999986 31.871514,-106.634872999999999 31.874477999999996,-106.630798999999996 31.879696999999997,-106.629271361585637 31.8835303997664,-106.629197000000005 31.883717000000004,-106.629948941610351 31.885072003811555,-106.630443527558498 31.88596325099838,-106.630530381920593 31.886119763139838,-106.630691999999982 31.886410999999999,-106.633926999999986 31.889183999999997,-106.635073463799642 31.889856364267651,-106.636317332120683 31.890585853164694,-106.638154 31.891662999999998,-106.638364165758659 31.89171923904625,-106.642899999999983 31.892932999999999,-106.645296000000002 31.894859,-106.645645999999999 31.895648999999995,-106.645478999999995 31.898669999999999,-106.640839999999997 31.904598,-106.63512839833713 31.908732779117901,-106.633668 31.90979,-106.633408736085542 31.909871832166754,-106.625946999999996 31.912227,-106.62344499999999 31.914034,-106.618336531290581 31.916262323146238,-106.614677480394235 31.917858407661853,-106.614345999999998 31.918002999999995,-106.611846 31.920003,-106.616063629645311 31.921863544491501,-106.623932999999994 31.925334999999997,-106.624022586877501 31.92530240401349,-106.628663000000003 31.923614,-106.629746999999995 31.926570000000002,-106.625321999999983 31.930053000000004,-106.622529 31.934863000000004,-106.622117000000003 31.936620999999999,-106.622377 31.940863,-106.623659000000004 31.945509999999995,-106.616135999999983 31.948439,-106.614701999999994 31.956,-106.617707999999993 31.956008,-106.622819000000007 31.952891,-106.625123000000002 31.954530999999999,-106.625534999999985 31.957475999999996,-106.624298999999993 31.961054,-106.620453999999981 31.963402999999996,-106.619370999999987 31.964777000000005,-106.618745000000004 31.966954999999995,-106.619568999999998 31.971578,-106.621872999999994 31.972933,-106.623215999999999 31.972909999999999,-106.626465999999994 31.97069,-106.630114000000006 31.971257999999999,-106.638186000000005 31.976819999999996,-106.639528999999996 31.980347999999996,-106.63649199999999 31.985719,-106.631181999999995 31.989809,-106.629494617643616 31.990072722748106,-106.628337072326531 31.990253636712819,-106.62822051159516 31.990271854111079,-106.626910882874782 31.990476537349483,-106.623567999999992 31.990998999999999,-106.619448000000006 31.994733,-106.618486000000004 32.000494999999994,-106.599096000000003 32.000731000000002,-106.598639000000006 32.000753999999993,-106.595332999999997 32.000777999999997,-106.587971999999979 32.000748999999999,-106.582805114232855 32.000751357586125,-106.566056000000003 32.000759000000002,-106.565141999999994 32.000736000000003,-106.564298514026802 32.00073927393025,-106.562131862706067 32.000747683631808,-106.55942760630407 32.000758180008894,-106.517043115844388 32.000922692365819,-106.411074999999983 32.001334,-106.409326934223301 32.001349629127162,-106.409108574114072 32.001351581443814,-106.394297999999992 32.001483999999998,-106.376861000000005 32.001171999999997,-106.32356972407176 32.001457096670784,-106.313306999999995 32.001511999999998,-106.205915000000005 32.001761999999999,-106.200699 32.001784999999998,-106.18183999999998 32.002049999999997,-106.125534000000002 32.002532999999993,-106.05045734599986 32.002412317859424,-105.998002999999997 32.002327999999999,-105.900599999999997 32.002099999999992,-105.886159000000006 32.001969999999993,-105.854061000000002 32.00235,-105.750527000000005 32.002206,-105.731362000000004 32.001564000000002,-105.563520259526442 32.001015604709174,-105.429281000000003 32.000577,-105.428582000000006 32.000599999999999,-105.427048999999997 32.000638000000002,-105.390395999999981 32.000607000000002,-105.340142768272344 32.000583616714373,-105.200871148394683 32.000518812363367,-105.153993999999997 32.000497000000003,-105.150310000000005 32.000497000000003,-105.14824 32.000484999999998,-105.132915999999994 32.000518,-105.131377 32.000523999999999,-105.118039999999993 32.000484999999998,-105.078604999999996 32.000532999999997,-105.077045999999996 32.000578999999995,-104.918272000000002 32.000495999999991,-104.643525999999994 32.000442999999997,-104.640917999999999 32.000396000000002,-104.531936999999999 32.000311000000004,-104.531756 32.000117000000003,-104.024520999999993 32.000010000000003,-103.980179000000007 32.000124999999997,-103.875476000000006 32.000554,-103.748317 32.000197999999997,-103.72373965094468 32.000208021677786,-103.713395184678689 32.000212239744897,-103.713395184670219 32.000212239744904,-103.713395184654971 32.000212239744911,-103.713395184639609 32.000212239744918,-103.60161412595366 32.000257819670985,-103.326500999999993 32.00036999999999,-103.278520999999998 32.000419,-103.270382999999995 32.000326,-103.267707999999999 32.000323999999992,-103.267633000000004 32.000475000000002,-103.215641000000005 32.000512999999998,-103.133028835827503 32.000473953106116,-103.088697999999994 32.000452999999993,-103.085875999999985 32.000464999999998,-103.064422999999991 32.000518,-103.064344000000006 32.087051000000002,-103.064347999999995 32.123041,-103.064421999999993 32.145006000000002,-103.064695999999998 32.522193,-103.064761000000004 32.587983,-103.064787999999993 32.600397,-103.064761000000004 32.601863000000002,-103.064814999999996 32.624536999999997,-103.064633 32.646419999999992,-103.064864 32.682647000000003,-103.064797999999996 32.690761000000002,-103.064798999999994 32.708694,-103.064826999999994 32.726627999999998,-103.064807000000002 32.777302999999996,-103.064698000000007 32.783602000000002,-103.064711000000003 32.784593,-103.064699000000005 32.827531,-103.064672000000002 32.828470000000003,-103.064888999999994 32.849359,-103.064915999999982 32.857259999999997,-103.064807000000002 32.857695999999997,-103.064862000000005 32.868346000000003,-103.064700999999985 32.879354999999997,-103.064569000000006 32.900013999999999,-103.064656999999997 32.959097,-103.064678999999998 32.964373000000002,-103.064625000000007 32.999898999999999,-103.064452000000003 33.010289999999998,-103.06398 33.038693000000002,-103.063904999999991 33.042054999999998,-103.063382198608849 33.066417104805645,-103.0628188509327 33.092668632365545,-103.062136190569035 33.12448003074244,-103.060102999999984 33.219225000000002,-103.059719999999999 33.256262,-103.059241999999998 33.260370999999992,-103.057856 33.315233999999997,-103.057486999999995 33.32947699999999,-103.056655000000006 33.388437999999994,-103.052609999999987 33.570599,-103.051664000000002 33.629489,-103.051362999999995 33.64195,-103.051535 33.650486999999998,-103.051086999999981 33.658186,-103.050532000000004 33.672407999999997,-103.050147999999993 33.701971,-103.049608000000006 33.737766,-103.049096000000006 33.746270000000003,-103.047346000000005 33.824674999999999,-103.046907000000004 33.850299999999997,-103.045643999999996 33.901536999999998,-103.045698000000002 33.90629899999999,-103.044893000000002 33.945616999999999,-103.043949999999981 33.974629,-103.043616999999998 34.003633,-103.043531000000002 34.018014,-103.043554999999984 34.032713999999991,-103.043745999999999 34.037294000000003,-103.043771000000007 34.041538000000003,-103.043720999999991 34.042319999999997,-103.043767000000003 34.043544999999995,-103.043744000000004 34.049985999999997,-103.04368599999998 34.063077999999997,-103.043515999999983 34.079382000000003,-103.043569000000005 34.087947,-103.043571175003294 34.092846731402311,-103.043572866326429 34.096656853966635,-103.04358003846437 34.112813863799865,-103.043644 34.256903,-103.043718999999982 34.289440999999997,-103.043935999999988 34.302584999999993,-103.043978999999979 34.312763999999994,-103.043947553639484 34.376410480771497,-103.043947499824213 34.37651940122479,-103.043946000000005 34.379555000000003,-103.043943999999982 34.37966,-103.043919000000002 34.380915999999992,-103.043693000000005 34.383578,-103.043629999999993 34.384689999999999,-103.043614000000005 34.384968999999998,-103.043612999999993 34.388679000000003,-103.043612999999993 34.390442,-103.043606047260084 34.391254973944719,-103.043584999999993 34.393715999999998,-103.043610999999999 34.397105000000003,-103.043582999999998 34.400677999999999,-103.043537999999998 34.405462999999997,-103.043582 34.455657000000002,-103.043587999999986 34.459662000000002,-103.043588999999997 34.459774000000003,-103.043593999999985 34.46266,-103.043434927764125 34.510540742996007,-103.043071999999981 34.619782,-103.043277851519235 34.65183038816317,-103.0432796163159 34.65210514391012,-103.043285999999995 34.653098999999997,-103.042827000000003 34.671187999999994,-103.042768999999993 34.747360999999998,-103.042770000000004 34.792223999999997,-103.042781000000005 34.850242999999999,-103.042520999999979 34.899546,-103.0425974544018 35.032467348285799,-103.042641999999987 35.109912999999999,-103.043261 35.125058000000003,-103.042519999999996 35.135596,-103.042599999999993 35.142766000000002,-103.042710999999997 35.144734999999997,-103.042568000000003 35.159317999999999,-103.042394999999999 35.178573,-103.042338999999984 35.181922,-103.042366 35.182786,-103.042377000000002 35.183149,-103.042496999999997 35.211862000000004,-103.042775000000006 35.241236999999998,-103.042366 35.250056,-103.041554000000005 35.622487,-103.041484634909168 35.651235429903174,-103.041145999999998 35.791583000000003,-103.041916999999998 35.796441000000002,-103.041715999999994 35.814072000000003,-103.042186 35.825216999999995,-103.04130499999998 35.837693999999999,-103.040823999999986 36.055230999999992,-103.041387523024824 36.229129564686382,-103.041674 36.317534000000002,-103.041745000000006 36.318266999999999,-103.041923999999995 36.500439,-103.00243399999998 36.500397)),((-96.818513748151517 28.172441936006489,-96.816443421354066 28.174808025412563,-96.791958210781445 28.188687337716829,-96.733036581469989 28.190913261798631,-96.70383764358462 28.198245729538105,-96.697421731775194 28.2029594609741,-96.702659211994316 28.211208487181011,-96.703313894801497 28.216445964862743,-96.686815839850283 28.218410020896432,-96.662461568376486 28.227313732447904,-96.66062845144161 28.228884976259902,-96.663116248646261 28.233205895474203,-96.651855673914184 28.251275190431315,-96.607991796426646 28.277069769155677,-96.608122730450688 28.280081317680857,-96.611527096272326 28.281390688369981,-96.610479598706064 28.283092866206033,-96.592934048725994 28.296972182316367,-96.581018783574592 28.302209665072866,-96.553260151988255 28.302340591484768,-96.546975176740276 28.305614018207578,-96.542130508742858 28.315958034472228,-96.528905880514458 28.322504882843088,-96.476269225261575 28.330753906512612,-96.45099839278295 28.337038879223222,-96.434107525610045 28.344764159184386,-96.418918843885365 28.35484630740093,-96.415252604940861 28.362833452872817,-96.417216660974546 28.367154372087118,-96.412895739222876 28.36951123780511,-96.403206408302779 28.371475291301415,-96.401242352269094 28.366892498964241,-96.400558825492723 28.362187299887704,-96.398667286465624 28.349166496619617,-96.397846 28.343512999999998,-96.413700000000006 28.327342999999999,-96.439098999999999 28.319051999999999,-96.495600517783487 28.293964130304811,-96.547774000000004 28.270797999999999,-96.587113635820756 28.248878526668094,-96.611036668198281 28.235548960715661,-96.621533999999983 28.229699999999998,-96.694665999999998 28.18212,-96.758140999999995 28.136872999999998,-96.830820125734775 28.079724674840076,-96.849624000000006 28.064938999999999,-96.854049189790473 28.060788472935577,-96.855594496383262 28.059339080448503,-96.859762278796424 28.055429983997605,-96.896530613737951 28.020943786452513,-96.898080497387397 28.019490100997579,-96.929052999999996 27.990439999999996,-96.96699599999998 27.950531000000002,-97.001440999999986 27.911442,-97.031660000000002 27.869974999999997,-97.041798999999997 27.852925999999997,-97.045408776308051 27.837452569961062,-97.045409609838757 27.837448997003069,-97.04598 27.835004,-97.050599498412936 27.830109781194331,-97.058265753683145 27.821987615677948,-97.076304165860961 27.802876463727326,-97.079565315161531 27.799421374709375,-97.083535350812468 27.795215242050556,-97.085211615730273 27.793439290085495,-97.085394999999991 27.793244999999999,-97.11422230692618 27.755303327915222,-97.116276999999997 27.752599,-97.117304906633777 27.751048809529347,-97.118830196202964 27.748748513687826,-97.139140047561696 27.718119138409879,-97.139351757288111 27.717799858049549,-97.143807202733072 27.711080581371732,-97.165547551982726 27.678293865995041,-97.166583141799606 27.676732088482499,-97.166681999999994 27.676583,-97.184850261879149 27.644709535797791,-97.192144670654784 27.631912600211269,-97.198729900630283 27.620359811436909,-97.201865999999995 27.614857999999998,-97.211651066704889 27.596044174137351,-97.213608899397855 27.592279833590187,-97.221943360361436 27.576255098965802,-97.265194083077162 27.493096589152017,-97.265746568141566 27.492034321708481,-97.276090999999994 27.472145,-97.304469999999995 27.407734,-97.326522999999995 27.347611999999998,-97.347445832595042 27.277936119324231,-97.350397999999998 27.268104999999998,-97.363400999999996 27.210366,-97.370941000000002 27.161165999999998,-97.377001000000007 27.101020999999999,-97.379130000000004 27.047996,-97.378361999999996 26.992877,-97.370730999999992 26.909706,-97.365301177044699 26.875333999999995,-97.365282052674758 26.875212938438843,-97.364726000000005 26.871692999999997,-97.363633430415348 26.866515420001111,-97.352028350385282 26.811520085064032,-97.35141299999998 26.808603999999999,-97.350529648372714 26.805138580575584,-97.333027999999999 26.736478999999996,-97.304204860681779 26.646364129642233,-97.300690000000003 26.635375,-97.297812715808362 26.627503004299889,-97.297022484076606 26.625340999999999,-97.287871455917369 26.600304594305239,-97.275119000000004 26.565415000000002,-97.269391999999982 26.554046,-97.269132970349304 26.553256905349773,-97.257954534248029 26.519203490608863,-97.229844 26.433568999999999,-97.223724090442104 26.411478908273114,-97.206682644704898 26.34996703527348,-97.194643999999997 26.306512999999999,-97.185844000000003 26.267102999999995,-97.177979856301576 26.220346386353309,-97.177168840972797 26.215524458900923,-97.173264999999986 26.192314,-97.170387765328073 26.167037808112223,-97.169872392484734 26.162510314053797,-97.167099005951158 26.138146416702778,-97.161470999999992 26.088705,-97.158662630175101 26.080176913346069,-97.154270970414501 26.066840900880429,-97.161462285840642 26.067639941946975,-97.169842256221145 26.077853024187579,-97.171781452365479 26.102521767945923,-97.179531587141199 26.146202099560895,-97.178745972847352 26.177103221942961,-97.183983445454302 26.214289306886101,-97.194458400817808 26.271639686993655,-97.214884565299002 26.353606215503973,-97.226930759399721 26.385554824668418,-97.240286324189555 26.405980989149626,-97.240845398636537 26.411470089808617,-97.243166933615896 26.434263367616055,-97.247618791929028 26.456260775909261,-97.254165635225121 26.471187589585856,-97.262545605605609 26.482971915638458,-97.27642492679071 26.521729238684483,-97.292399243108349 26.528014213932472,-97.310730412457033 26.556558470596535,-97.308111681228326 26.5712234060755,-97.308635417324538 26.576722756880109,-97.317015387705027 26.597672667607057,-97.318434072834165 26.60022630157264,-97.324871601690262 26.611813856840271,-97.338489044677715 26.647428701777493,-97.33639404954522 26.666021744249065,-97.345821512417203 26.700589103038251,-97.363105189274393 26.710540307081217,-97.370437657013895 26.723895871871047,-97.370961403259614 26.736203954318924,-97.367557047587525 26.740393934434408,-97.364152671616353 26.758986971196869,-97.364646278833362 26.767121661774897,-97.368866408127118 26.774699404876429,-97.370437646864346 26.781508126370166,-97.368342661881371 26.795649318140761,-97.373056398392137 26.808481136684847,-97.387459455673451 26.820789208983193,-97.383531343606066 26.875520854055946,-97.385626348888096 26.88887641440536,-97.391649435788921 26.901970109878395,-97.389554460955466 26.945964918852653,-97.390340075249313 27.05228571820243,-97.389816329003565 27.067212531879022,-97.386411973331462 27.083186832972341,-97.387459455673422 27.090519300711819,-97.390601943297412 27.094185534581555,-97.390078197051665 27.156511519247964,-97.377508246555678 27.199458835730731,-97.379865109736301 27.202863196477598,-97.386673841379576 27.204696313412462,-97.382221972916923 27.229050589961044,-97.37488951532697 27.25026236588155,-97.373318276589728 27.276449754290233,-97.372896734486858 27.277942715507475,-97.367033301341749 27.298709035706306,-97.36467643816114 27.302637142698917,-97.359962701650375 27.304732132756659,-97.357605838469766 27.307874620380655,-97.362319574980518 27.32672953597509,-97.366771423144115 27.333276389420721,-97.36179581858525 27.359987519000377,-97.346607126710992 27.390364889744752,-97.336132171347501 27.402411088920228,-97.331156576938184 27.412362295500575,-97.329585328051422 27.418123524502818,-97.330894688591016 27.425455992242295,-97.329847196099536 27.434359703793774,-97.317277255753083 27.463689574751687,-97.293708603647858 27.497209429631152,-97.282971770086746 27.521563701104967,-97.267627232015485 27.541048841138782,-97.26651977444007 27.542455137362143,-97.266473727822444 27.542513609294531,-97.257831889393842 27.556392930479635,-97.261144559602045 27.562355746269706,-97.261759991311692 27.563463525096239,-97.260450620622564 27.56739163716362,-97.260303240478223 27.567589679048492,-97.252732825146552 27.577762415194865,-97.252070650242061 27.578652211895708,-97.247885553160842 27.581360217573209,-97.247618802078478 27.581532821322067,-97.236881968517352 27.598292751933528,-97.24107194863285 27.602482732049012,-97.241084821027414 27.602523494839662,-97.242643187370078 27.607458346757408,-97.231683715414945 27.631671123728168,-97.231553918442799 27.631957884363242,-97.231382612637987 27.632336350521356,-97.221955159915538 27.632860099304484,-97.221711030183002 27.632638163711842,-97.219074540339648 27.630241360463614,-97.217418907944051 27.630677052710489,-97.214098935780783 27.631550728615359,-97.200743370990949 27.650143776161688,-97.197339005169326 27.664546838517776,-97.19760088336696 27.678426154628117,-97.203474366386629 27.684532651921231,-97.20308902068453 27.688000774441392,-97.200450811776179 27.688974477466285,-97.190006537429824 27.692829222058965,-97.188284576858237 27.695272543577584,-97.170627865440125 27.720325976082009,-97.166176017276527 27.732372180332245,-97.161200407642937 27.734074342943998,-97.153606061705801 27.733288721037997,-97.147321086457822 27.735383711095739,-97.130823034043985 27.751619892924076,-97.127942424617643 27.75580987303956,-97.127680546420009 27.759999858229808,-97.125046985317312 27.763143140340585,-97.103326269871417 27.789067861139614,-97.102999946318647 27.791923200131116,-97.10255066693685 27.795854405604921,-97.102495980878558 27.796332909939515,-97.102278777379922 27.798233445813956,-97.100865886772965 27.802472121847156,-97.098874421707819 27.808446522979796,-97.095168997779496 27.812151946908138,-97.092851314507953 27.81446963017968,-97.092589446459854 27.819183356540908,-97.098874421707819 27.822849590410645,-97.104263831428213 27.822227735056668,-97.126109297533233 27.819707102786651,-97.130299287798252 27.820492727230029,-97.134489267913736 27.825206463740791,-97.132394272781227 27.827301438574235,-97.10670775348396 27.832389859144307,-97.087681973298601 27.836158807756469,-97.056712719518927 27.842293721800239,-97.055822986229373 27.843403727743151,-97.04322620548075 27.859119113080268,-97.013634476624247 27.906780143237341,-97.017955395838555 27.911493874673329,-97.016384146951765 27.917255079570445,-96.985744902767337 27.954048356415132,-96.977888688782102 27.976438572489602,-96.978805242174786 27.978271691961854,-96.980900237307296 27.978271691961854,-96.986006780964971 27.976176699366729,-96.986661461234775 27.980759491703903,-96.978281501003806 28.001709402430844,-96.967806540565562 28.020040576854303,-96.966759042999328 28.020367911280101,-96.965187799187319 28.013297317932185,-96.962569062883844 28.012380759464751,-96.952617853766114 28.01643980428749,-96.946987563862692 28.02652194996665,-96.932453562407773 28.035425661518129,-96.926430465357427 28.043412814602167,-96.929572952981431 28.051399967686208,-96.927085150701998 28.057292130712504,-96.906004298338829 28.076147047258459,-96.890946545563423 28.076801730065643,-96.886232814127425 28.084396073465374,-96.88832780925992 28.086622002621937,-96.889113433703315 28.099453823703399,-96.886887499471996 28.117130312782294,-96.879424092633712 28.131402425890027,-96.874972236857971 28.133235547899659,-96.87078225420511 28.13127149186597,-96.86462821551855 28.126295887307109,-96.857164811217643 28.115559058820768,-96.845380482627661 28.108881273888468,-96.830128556765757 28.111822717849165,-96.827049318353744 28.112416571196771,-96.816574357915513 28.119618104912195,-96.810420321766344 28.126034014184238,-96.810944073086844 28.136378030448888,-96.816836228500989 28.158048094801106,-96.820248352517055 28.163388807027481,-96.822859330626116 28.167475552598326,-96.818513748151517 28.172441936006489)))');
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/ks.wkt b/webapp/django/contrib/gis/tests/geoapp/sql/ks.wkt
deleted file mode 100644
index 8bfd38c..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/ks.wkt
+++ /dev/null
@@ -1 +0,0 @@
-POLYGON ((-102.051743999999999 40.003078000000002,-101.916696000000002 40.003141999999997,-101.904176000000007 40.003162000000003,-101.861740775252272 40.002907997451267,-101.841025000000002 40.002783999999991,-101.832160999999999 40.002932999999999,-101.807687 40.002797999999999,-101.804861999999986 40.002752,-101.783266423091504 40.002735966476642,-101.748492901329186 40.002710149056902,-101.627071 40.00262,-101.625809000000004 40.002710999999998,-101.579641080501318 40.002654627564297,-101.54227299999998 40.002608999999993,-101.417209 40.002423999999998,-101.411050023557621 40.002364583193085,-101.409952999999987 40.002353999999997,-101.387325211262052 40.00246006676732,-101.374325999999996 40.002520999999994,-101.342859000000004 40.002580000000002,-101.324035999999992 40.002695999999993,-101.293991000000005 40.002558999999998,-101.286555000000007 40.002558999999998,-101.248672999999997 40.002543000000003,-101.215033000000005 40.002555,-101.19221899999998 40.002490999999999,-101.186892990733696 40.002481867883319,-101.178804999999997 40.002468,-101.168704000000005 40.002547,-101.130906999999993 40.002426999999997,-101.104950380573442 40.002382874850099,-101.104950380567658 40.002382874850092,-101.060316999999998 40.002307000000002,-101.027686000000003 40.002255999999996,-100.962089380046322 40.00217532965339,-100.937427 40.002144999999999,-100.764559455237134 40.002296963384197,-100.758829999999989 40.002301999999993,-100.752183000000002 40.002127999999992,-100.7388309887763 40.002228385746484,-100.733295999999996 40.002270000000003,-100.729904000000005 40.002110999999999,-100.721127999999993 40.002068999999999,-100.683435000000003 40.002234,-100.660229999999984 40.002161999999998,-100.645444999999995 40.001882999999999,-100.626504856699498 40.001892789287538,-100.600944999999996 40.001905999999998,-100.594756999999987 40.001976999999997,-100.567238000000003 40.001888999999998,-100.551885999999996 40.001888999999998,-100.514429898999168 40.001844039098764,-100.511064999999988 40.00184,-100.487159000000005 40.001767,-100.477018 40.001752000000003,-100.475853999999998 40.001767999999998,-100.468772999999985 40.001724000000003,-100.447071999999991 40.001795,-100.439081000000002 40.001773999999997,-100.402449685831499 40.001800164690437,-100.390079999999998 40.001809000000002,-100.290126736823893 40.001691651381378,-100.231651999999997 40.001623000000002,-100.229478999999998 40.001692999999996,-100.215406000000002 40.001629,-100.196958999999993 40.001494,-100.19359 40.001573,-100.190323000000006 40.001586000000003,-100.188181 40.001541000000003,-100.177823000000004 40.001593,-99.990926000000002 40.001503,-99.986610999999996 40.001550000000002,-99.948166999999998 40.001812999999999,-99.944417 40.001584,-99.930432999999979 40.001516000000002,-99.906657999999993 40.001511999999998,-99.850154757615712 40.001444140609848,-99.813400999999999 40.001399999999997,-99.775639999999981 40.001646999999998,-99.772120999999984 40.001804,-99.764213999999996 40.001550999999999,-99.756834999999995 40.001342,-99.746628 40.001820000000002,-99.737774855821357 40.001824224692157,-99.731959000000003 40.001826999999992,-99.719639 40.001807999999997,-99.628345999999993 40.001866,-99.625979999999984 40.001865000000002,-99.515340365578794 40.002008435606839,-99.501791999999995 40.002026,-99.498998999999984 40.00195699999999,-99.497659999999982 40.001911999999997,-99.493464999999986 40.001936999999998,-99.480727999999999 40.001942,-99.423564999999996 40.002270000000003,-99.412644999999998 40.001867999999995,-99.403389000000004 40.001969000000003,-99.366747146128873 40.001962496644857,-99.290702999999979 40.001949000000003,-99.286655999999994 40.002017000000002,-99.282966999999999 40.001879000000002,-99.254012000000003 40.002074,-99.25036999999999 40.00195699999999,-99.216375999999997 40.002015999999998,-99.197591999999986 40.002032999999997,-99.188905000000005 40.002023,-99.186961999999994 40.001976999999997,-99.178965000000005 40.001976999999997,-99.169815999999997 40.001925,-99.123032999999992 40.002164999999998,-99.113510000000005 40.002192999999998,-99.085596999999993 40.002132999999994,-99.067047050731574 40.00217023690761,-99.020337999999995 40.00226399999999,-99.018700999999993 40.002333,-98.992135000000005 40.002192,-98.972286999999994 40.002245000000002,-98.971721000000002 40.002268,-98.961009000000004 40.002316999999998,-98.96091899999999 40.002271,-98.953888072580213 40.002253239016738,-98.934791999999987 40.002204999999996,-98.8435956659672 40.002348607685946,-98.842134005327992 40.002350909376077,-98.834455999999989 40.002363000000003,-98.820589999999982 40.002319,-98.777203 40.002358999999998,-98.774940999999998 40.002336,-98.729330606936671 40.002229113826232,-98.726294999999993 40.002222000000003,-98.710403999999997 40.002180000000003,-98.693095999999997 40.002372999999999,-98.691443000000007 40.002504999999999,-98.690286999999998 40.002547999999997,-98.672819000000004 40.002364,-98.669723999999988 40.002409999999998,-98.653832999999992 40.002268999999998,-98.652494000000004 40.002245000000002,-98.640709999999984 40.002493,-98.616372379820518 40.002409030470169,-98.613754999999998 40.002400000000002,-98.593342000000007 40.002475999999994,-98.575219000000004 40.002479999999991,-98.560578000000007 40.002274,-98.543186000000006 40.002285,-98.523053000000004 40.002336,-98.506634585466017 40.002329436673158,-98.504454999999979 40.002328565375151,-98.50084801790743 40.002327123469641,-98.490532999999999 40.002322999999997,-98.441997554675297 40.002366263566756,-98.391848301995964 40.002410965650498,-98.274015000000006 40.002516,-98.268218000000005 40.002490000000002,-98.25000799999998 40.002307000000002,-98.213290432425865 40.002506421375415,-98.193483 40.002614,-98.179315000000003 40.002482999999998,-98.172269 40.002437999999991,-98.156873151934732 40.002445128178877,-98.142031000000003 40.002451999999998,-98.099659000000003 40.002226999999998,-98.076034000000007 40.002300999999996,-98.068701000000004 40.002355,-98.050056999999981 40.002277999999997,-98.047469000000007 40.002186000000002,-98.042767978165202 40.002191261754177,-98.014411999999979 40.002223,-98.010157000000007 40.002153,-97.972185999999994 40.002113999999999,-97.931810999999996 40.002049999999997,-97.876261 40.002102,-97.85745 40.002065000000002,-97.838378999999989 40.001909999999995,-97.821597999999994 40.002003999999992,-97.819426000000007 40.001957999999995,-97.777154999999993 40.002167,-97.770775999999998 40.001976999999997,-97.769204000000002 40.001995,-97.767746000000002 40.001994000000003,-97.714825952022949 40.001974503868432,-97.706952472912022 40.001971603221314,-97.701160424072398 40.001969469388285,-97.61370959051284 40.001937251863488,-97.595964207410262 40.001930714334961,-97.593671575073259 40.001929869712491,-97.51530799999999 40.001900999999997,-97.511381 40.001899000000002,-97.510264000000006 40.001835,-97.48896951184885 40.0019310946697,-97.481234094494141 40.001966001936331,-97.463284999999999 40.00204699999999,-97.444661999999994 40.001957999999995,-97.425443 40.002048000000002,-97.417825999999991 40.002023999999999,-97.415833000000006 40.002000999999993,-97.369102999999996 40.00206,-97.350896000000006 40.001930000000002,-97.350272000000004 40.001975999999999,-97.256541388870858 40.001563097676062,-97.24516899999999 40.001513000000003,-97.245080000000002 40.001466999999998,-97.202309999999997 40.00144199999999,-97.200190000000006 40.001548999999997,-97.181775000000002 40.001550000000002,-97.165136038800085 40.001526729909067,-97.164288093539042 40.001525544031956,-97.157705785150654 40.001516338474417,-97.144150390621661 40.001497380844818,-97.142447999999987 40.001494999999998,-97.137865999999988 40.001814000000003,-97.049662999999995 40.001322999999999,-97.030802999999992 40.001342,-97.009164999999996 40.001463,-96.918187714380807 40.001505032225388,-96.916093000000004 40.001505999999999,-96.880459000000002 40.001448000000003,-96.878253 40.001466,-96.875056999999998 40.001448000000003,-96.873812 40.001449999999998,-96.868892342573133 40.001444286089438,-96.805301797100199 40.001370429180717,-96.693246065483095 40.001240282633297,-96.622400999999996 40.001157999999997,-96.610348999999999 40.000881,-96.604883999999984 40.000891000000003,-96.581788013355691 40.000963078853125,-96.580851999999993 40.000965999999998,-96.570853999999997 40.001090999999995,-96.557862999999998 40.000968,-96.538977000000003 40.000850999999997,-96.527110999999991 40.001030999999998,-96.469944999999996 40.000965999999998,-96.467535999999996 40.001035000000002,-96.463639999999998 40.000967000000003,-96.354812913341547 40.000735780492882,-96.350953725714731 40.00072758106856,-96.341811057717251 40.000708156095854,-96.304554999999993 40.000629000000004,-96.301066000000006 40.000632000000003,-96.239171999999996 40.000691000000003,-96.223838999999998 40.000729,-96.220170999999993 40.00072,-96.154364999999984 40.000495,-96.154246 40.00045,-96.147166999999982 40.000478999999999,-96.125936999999979 40.000432000000004,-96.125788 40.000467,-96.089781000000002 40.000518999999997,-96.081394999999986 40.000602999999998,-96.051691000000005 40.000726999999998,-96.02409 40.000718999999997,-96.014716997898134 40.000662392993569,-96.010677999999999 40.000638000000002,-95.995389500007406 40.000603953777215,-95.958139000000003 40.000520999999999,-95.901560435593936 40.000482839492363,-95.882524000000004 40.00047,-95.788023999999993 40.000452000000003,-95.784575000000004 40.000463000000003,-95.672891827756033 40.000336669594915,-95.658762261555324 40.000320686938032,-95.63965170807073 40.000299070038061,-95.565216789143676 40.000214872989645,-95.463103327781397 40.00009936736172,-95.455130658279359 40.000090349077695,-95.452048066669519 40.000086862204618,-95.438655850967621 40.000071713601649,-95.436011808705814 40.000068722793607,-95.426269559489981 40.00005770284973,-95.42148745056565 40.000052293567869,-95.41484447973599 40.000044779372317,-95.375257000000005 40.0,-95.339895999999982 39.999999000000003,-95.326448603970363 39.999998574530281,-95.30829 39.999997999999998,-95.308403999999996 39.993758,-95.307779999999994 39.990617999999998,-95.307111000000006 39.989114,-95.302506999999991 39.984357000000003,-95.289715 39.977705999999998,-95.274756999999994 39.972115000000002,-95.269885999999985 39.969396000000003,-95.261854 39.960617999999997,-95.257651999999993 39.954886000000002,-95.250253999999998 39.948644000000002,-95.241382999999999 39.944949,-95.236761 39.943930999999999,-95.231114000000005 39.943784,-95.220212000000004 39.944432999999997,-95.216440000000006 39.943953,-95.213736999999995 39.943205999999996,-95.204427999999993 39.938949,-95.201277000000005 39.934193999999998,-95.200689999999994 39.928154999999997,-95.20201 39.922438,-95.205744999999993 39.915168999999999,-95.206326000000004 39.912120999999999,-95.206195999999991 39.909557,-95.205732999999981 39.908275000000003,-95.202631127107011 39.904826841138963,-95.201935000000006 39.904052999999998,-95.19982446963148 39.902956959499498,-95.199773390195176 39.902930432929807,-95.199730682369619 39.902908253904485,-95.199347000000003 39.902709000000002,-95.193815999999984 39.900689999999997,-95.189565000000002 39.899959000000003,-95.179452999999995 39.900061999999991,-95.172296000000003 39.902025999999999,-95.159833999999989 39.906984,-95.156023999999988 39.907243,-95.153185481864639 39.906665666721331,-95.151701132402337 39.906363761184394,-95.149656999999991 39.905947999999995,-95.148243978290679 39.905255611516672,-95.146055000000004 39.904183000000003,-95.143801999999994 39.901917999999995,-95.142562999999981 39.897992000000002,-95.142444999999995 39.895419999999994,-95.143403000000006 39.889355999999992,-95.142718000000002 39.885888999999992,-95.140601000000004 39.88168799999999,-95.137091999999996 39.878350999999995,-95.134747000000004 39.876852,-95.128165999999993 39.874164999999998,-95.105912000000004 39.869163999999998,-95.090958483530287 39.863446088154532,-95.090158000000002 39.86314,-95.085003 39.861882999999999,-95.081534000000005 39.861718000000003,-95.079786043666886 39.861878094210859,-95.052535000000006 39.864373999999998,-95.042141999999998 39.864804999999997,-95.037767000000002 39.865541999999998,-95.034318031759739 39.867229060943565,-95.032053000000005 39.868336999999997,-95.031002514960235 39.869148692103728,-95.027930999999981 39.871521999999999,-95.025918959417425 39.87568321107333,-95.025422000000006 39.876711,-95.025119000000004 39.878833,-95.02586205726584 39.885935119809076,-95.025947000000002 39.886747,-95.025771840138887 39.887478608302466,-95.025475064075451 39.888718183571669,-95.025239999999997 39.889699999999998,-95.024388999999999 39.891202,-95.021897459019584 39.893924778577606,-95.019088516216428 39.896994416745422,-95.018742999999986 39.89737199999999,-95.018224596337973 39.897611313155366,-95.013151999999991 39.899952999999996,-95.010684182587667 39.900289758615472,-95.008439999999993 39.900596,-95.003818999999993 39.900400999999995,-94.990284000000003 39.897010000000002,-94.989784913598129 39.896958718834505,-94.987823822157509 39.896757216540813,-94.986975 39.89667,-94.985308455245701 39.896814869812808,-94.979390624873346 39.897329296428744,-94.977748999999989 39.897472,-94.963345000000004 39.901136,-94.959276000000003 39.901671,-94.958440298615102 39.901548064610132,-94.95153999999998 39.900532999999996,-94.943866999999983 39.898130000000002,-94.935306395585215 39.893779379194363,-94.934493000000003 39.893366,-94.929574000000002 39.888753999999992,-94.927897000000002 39.88611199999999,-94.927358999999996 39.883966,-94.927251999999996 39.880257999999991,-94.928466 39.876344000000003,-94.931084167287821 39.873075003673321,-94.931462999999994 39.872602,-94.938790999999995 39.866954,-94.940742999999998 39.864409999999999,-94.942407000000003 39.861065999999994,-94.942566999999983 39.856601999999995,-94.939767000000003 39.851930000000003,-94.937655000000007 39.849786000000002,-94.926149999999993 39.841321999999998,-94.916917999999995 39.836137999999998,-94.909941999999987 39.834426,-94.903156999999979 39.833849999999998,-94.892677000000006 39.834377999999994,-94.889493000000002 39.834026,-94.886932999999999 39.833098,-94.881012999999996 39.828921999999991,-94.878676999999996 39.826521999999997,-94.877043999999998 39.823754,-94.876543999999996 39.820594,-94.875944000000004 39.813293999999999,-94.87632679569893 39.807169268817198,-94.876344000000003 39.806894,-94.876705972386588 39.80614007495069,-94.880932 39.797338000000003,-94.884084 39.794234000000003,-94.890292000000002 39.791626,-94.892965000000004 39.791097999999991,-94.912908274541266 39.790276806342419,-94.92474489359239 39.789789416146199,-94.925605000000004 39.789753999999995,-94.925940683661906 39.789631963361245,-94.927258709273417 39.789152799691166,-94.929653999999999 39.788281999999995,-94.93035270914757 39.787827111232048,-94.930442023078356 39.787768964141691,-94.930979872832452 39.787418801541357,-94.932726000000002 39.786282,-94.932913349551853 39.786043884763131,-94.935059195246907 39.783316584105528,-94.935205999999994 39.78313,-94.935782000000003 39.778905999999999,-94.935301999999993 39.77561,-94.935036741896766 39.775108050050804,-94.934624304242575 39.774327591105198,-94.934262000000004 39.773642000000002,-94.929652999999988 39.769098,-94.929421387607832 39.768921584953624,-94.928626586797606 39.768316199289764,-94.926229000000006 39.76648999999999,-94.923991330811134 39.765173947104167,-94.916788999999994 39.760937999999996,-94.912293000000005 39.759337999999993,-94.906244 39.759417999999997,-94.905921454535701 39.759501730763866,-94.900921941190049 39.760799572828766,-94.899156000000005 39.761257999999998,-94.899025621234756 39.761323457651685,-94.895268000000002 39.76321,-94.895041000000006 39.763350000000003,-94.894070999999997 39.763945999999997,-94.893918999999997 39.76404,-94.893724000000006 39.764159999999997,-94.893646000000004 39.764208000000004,-94.883923999999993 39.770186000000002,-94.881460000000004 39.771258000000003,-94.881422 39.771258000000003,-94.874706321154179 39.772392308082928,-94.871144 39.772993999999997,-94.869643999999994 39.772894,-94.867142999999999 39.771693999999997,-94.865243000000007 39.770094,-94.863142999999994 39.767294,-94.860742999999999 39.763094000000002,-94.859442999999999 39.753694000000003,-94.860369889104035 39.749534984666809,-94.860371 39.74953,-94.862942999999987 39.742994000000003,-94.870142999999999 39.734594,-94.875642999999997 39.730494,-94.884142999999995 39.726793999999998,-94.891743999999989 39.724893999999999,-94.899315999999999 39.724041999999997,-94.900553640444031 39.724102079633198,-94.901582061073228 39.724152002964722,-94.902612000000005 39.724201999999998,-94.906055088082866 39.724933471502588,-94.907014260749904 39.725137244236571,-94.907785666538786 39.725301126582274,-94.910067999999995 39.725785999999999,-94.911087398893699 39.726157408899255,-94.918323999999998 39.728793999999994,-94.93000499999998 39.735370000000003,-94.939221000000003 39.74157799999999,-94.944740999999979 39.744377,-94.948658825773634 39.745572502168315,-94.948680784417533 39.745579202723142,-94.948725999999994 39.745593,-94.952629999999999 39.745961,-94.955286 39.745688999999999,-94.960086000000004 39.743065,-94.963779819772341 39.740240978767318,-94.964692434782606 39.73954326086956,-94.965317999999982 39.739064999999989,-94.965565209393333 39.738728671232884,-94.970224508542714 39.732389687437191,-94.970421999999985 39.732120999999999,-94.971205999999981 39.729304999999997,-94.971078000000006 39.723146,-94.968452999999997 39.707402000000002,-94.968980999999999 39.692954,-94.969909 39.689050000000002,-94.971316999999999 39.686410000000002,-94.976096392737759 39.68160006801152,-94.976325000000003 39.68137,-94.981556999999995 39.678634000000002,-94.984149000000002 39.677849999999992,-94.986445080691666 39.677537608069159,-94.990587390516794 39.676974028501114,-94.993556999999996 39.676569999999998,-94.998766892420107 39.676509388876212,-95.001379 39.676479,-95.004602740773237 39.676177881356345,-95.008105239221649 39.675850724907868,-95.009022999999999 39.675764999999998,-95.010225986948086 39.675477408241932,-95.013209713780839 39.674764104372102,-95.015309999999985 39.674261999999999,-95.018317999999994 39.672868999999999,-95.021521942351953 39.670631293568427,-95.024595000000005 39.668484999999997,-95.027643999999995 39.665453999999997,-95.037464 39.652904999999997,-95.039049000000006 39.649639,-95.044554000000005 39.644370000000002,-95.049518000000006 39.637875999999999,-95.053366999999994 39.630347,-95.054924999999997 39.624994999999991,-95.055024819926729 39.623527163368095,-95.055152000000007 39.621656999999992,-95.054958456554544 39.620961328886679,-95.053131423647116 39.614394255464305,-95.053011999999981 39.613965,-95.052555891387243 39.613278556984888,-95.047910999999999 39.606287999999999,-95.046445000000006 39.601605999999997,-95.046361000000005 39.599556999999997,-95.047165000000007 39.595117000000002,-95.049277000000004 39.589582999999998,-95.054804000000004 39.582487999999998,-95.056897000000006 39.580567000000002,-95.059518999999995 39.579132,-95.064519000000004 39.577114999999999,-95.066275551338904 39.576786470694117,-95.068266439890465 39.576414113098046,-95.069315000000003 39.576217999999997,-95.072159999999982 39.576121999999991,-95.075842551355763 39.576644128527029,-95.076688000000004 39.576763999999997,-95.088569515113861 39.580713698327401,-95.089515000000006 39.581028000000003,-95.09068217809525 39.58095107619048,-95.095736000000002 39.580618,-95.099095000000005 39.579690999999997,-95.100375015351446 39.579100080742663,-95.10182940536555 39.578428661399109,-95.103228 39.577782999999997,-95.106109962410699 39.575487768136732,-95.106244982404746 39.575380236480051,-95.106274453941239 39.575356764970024,-95.106406000000007 39.575251999999999,-95.107454000000004 39.573842999999997,-95.108931052511622 39.56997896968771,-95.109155613535791 39.569391508783276,-95.112830712234896 39.559777298955126,-95.112877844119652 39.559653999999995,-95.113077000000004 39.559132999999996,-95.113262990573148 39.557121201967142,-95.113516735173974 39.554376531201555,-95.113557 39.553940999999995,-95.113330390574859 39.553319942050457,-95.109694540741444 39.543355336910984,-95.109303999999995 39.542284999999993,-95.106595999999996 39.537657000000003,-95.106363136618171 39.537386330858773,-95.106309238275287 39.537323682029822,-95.102887999999993 39.533346999999999,-95.096713422649174 39.527826015970483,-95.095319522838992 39.526579663685382,-95.092703999999998 39.524241000000004,-95.082713999999996 39.516711999999998,-95.077440999999993 39.513551999999997,-95.059460999999985 39.506143000000002,-95.05637999999999 39.503971999999997,-95.052176999999986 39.499995999999996,-95.050551999999996 39.497514000000002,-95.049844999999991 39.494414999999989,-95.048370000000006 39.480420000000002,-95.047133000000002 39.474970999999996,-95.045715999999999 39.472459,-95.040779999999998 39.466386999999997,-95.03749999999998 39.463689000000002,-95.033407999999994 39.460875999999992,-95.028497999999999 39.458286999999999,-95.015825000000007 39.452809000000002,-94.995767999999998 39.448174000000002,-94.990172 39.446192000000003,-94.982144000000005 39.440551999999997,-94.978797999999998 39.436241000000003,-94.976606000000004 39.426701,-94.972952000000006 39.421705000000003,-94.968547467194298 39.418879728230785,-94.966981164652054 39.417875029083376,-94.966065999999998 39.417287999999999,-94.965430539155946 39.417093446959996,-94.954817000000006 39.413843999999997,-94.951209000000006 39.411706999999993,-94.947863999999996 39.408603999999997,-94.946292999999983 39.405645999999997,-94.946662000000003 39.399717000000003,-94.946226999999993 39.395648,-94.945577 39.393850999999998,-94.942038999999994 39.389499,-94.939696999999995 39.387949999999996,-94.938205659338905 39.38711651736979,-94.938199994953891 39.387113351650086,-94.938198708293527 39.387112632559479,-94.937157999999982 39.386530999999998,-94.933651999999995 39.385545999999998,-94.932170703908099 39.385397898493565,-94.923109999999994 39.384492000000002,-94.919224999999997 39.385173999999999,-94.915858999999998 39.386347999999998,-94.909581000000003 39.388865000000003,-94.901822999999993 39.392797999999999,-94.896448416922993 39.39340032396553,-94.894979000000006 39.393565000000002,-94.891845000000004 39.393312999999999,-94.888971999999995 39.392431999999999,-94.888058227506249 39.391822741147728,-94.885025999999996 39.389800999999999,-94.880978999999996 39.383899,-94.879281000000006 39.37977999999999,-94.879087999999996 39.375702999999994,-94.881359999999987 39.370382999999997,-94.885216 39.366911000000002,-94.890928000000002 39.364030999999997,-94.896832000000003 39.363135,-94.899023999999997 39.362431,-94.902496999999997 39.360382999999999,-94.90716104958679 39.35683832231404,-94.907297 39.356735,-94.907510470967722 39.356484333333356,-94.909408999999997 39.354254999999995,-94.910016999999996 39.352542999999997,-94.91007929967077 39.352122876579188,-94.910166635146069 39.351533921963672,-94.910234386079424 39.351077037464393,-94.910640999999998 39.348334999999999,-94.910055514481613 39.342727430625168,-94.908683540921714 39.329587162119807,-94.908064999999993 39.323663000000003,-94.906599414484603 39.317389801180319,-94.905982468129508 39.31474906332776,-94.905548856768945 39.312893060899633,-94.905328999999995 39.311951999999998,-94.904604536115073 39.31007473956825,-94.903592654247163 39.307452709910535,-94.903137 39.306272,-94.902341179156608 39.304705098857582,-94.900693838394318 39.301461629999167,-94.900362755471093 39.300809756886117,-94.900048999999996 39.300192000000003,-94.895217000000002 39.29420799999999,-94.889432625546704 39.288730528394183,-94.887056 39.286479999999997,-94.882576 39.283327999999997,-94.881425972827699 39.282735692772164,-94.879585687759075 39.281787876778168,-94.878319999999988 39.281135999999996,-94.869470269042495 39.278423959123423,-94.867567999999991 39.277841000000002,-94.866576416802303 39.277461598502107,-94.857072000000002 39.273825000000002,-94.850573678793964 39.270595179638669,-94.850470600187833 39.270543947117169,-94.846320000000006 39.268481,-94.844203868589133 39.266965084952687,-94.840994595225254 39.264666085108807,-94.837855000000005 39.262416999999999,-94.836102527271095 39.260730409704507,-94.834879550067882 39.259553409087879,-94.832501320107042 39.257264586268427,-94.832102355305352 39.256880620143498,-94.831470999999993 39.256273,-94.827487000000005 39.249888999999996,-94.826571473591798 39.245793223963304,-94.825663000000006 39.241728999999999,-94.826110999999983 39.238289000000002,-94.826405091238243 39.237538367125239,-94.827108391663188 39.2357432765168,-94.827791000000005 39.234000999999999,-94.828117769197533 39.233533772937683,-94.83244435695299 39.227347452739551,-94.834698551534771 39.224124319346686,-94.834896 39.223841999999998,-94.834917496024659 39.223414229109203,-94.835039139715306 39.220993519665384,-94.835046603087861 39.220844998551456,-94.835055999999994 39.220658,-94.833551999999997 39.217793999999998,-94.831678999999994 39.215938,-94.823791 39.209873999999999,-94.820687000000007 39.208626000000002,-94.811662999999996 39.206594000000003,-94.800359054554335 39.206051410618606,-94.799662999999995 39.206018,-94.798924306591658 39.206116812235138,-94.793913945984244 39.206787029303406,-94.788135068391796 39.207560047994349,-94.787343000000007 39.207666000000003,-94.783838000000003 39.207154000000003,-94.781518000000005 39.206145999999997,-94.780294078498926 39.205273290755756,-94.778971577769184 39.204330290235411,-94.777838000000003 39.203522,-94.775537999999997 39.200602000000003,-94.770897097034492 39.191141697801093,-94.770859400196969 39.191064854247678,-94.770337999999995 39.190002,-94.763137999999998 39.179903000000003,-94.75233799999998 39.173202999999994,-94.74193799999999 39.170203,-94.736536999999998 39.169203000000003,-94.723636999999997 39.169002999999989,-94.714136999999994 39.170403,-94.696331999999998 39.178562999999997,-94.687235999999999 39.183503000000002,-94.680335999999983 39.184303,-94.669134999999997 39.182003000000002,-94.663835000000006 39.179102999999998,-94.660314999999997 39.168050999999991,-94.662434999999988 39.157602999999995,-94.650734999999983 39.154102999999999,-94.640034999999997 39.153102999999994,-94.623934000000006 39.156602999999997,-94.615834000000007 39.160003000000003,-94.608834000000002 39.160502999999999,-94.601732999999996 39.15960299999999,-94.596033000000006 39.157702999999998,-94.591932999999997 39.155003,-94.589933000000002 39.140402999999999,-94.592533000000003 39.135902999999992,-94.600433999999993 39.128503000000002,-94.605733999999998 39.122204000000004,-94.607033999999999 39.119404000000003,-94.607354 39.113444,-94.607234000000005 39.089604,-94.607333999999994 39.081703999999995,-94.607275518421304 39.072346947409343,-94.607234000000005 39.065703999999997,-94.607342812841125 39.057404745686583,-94.60738379566331 39.05427894858029,-94.607437239929951 39.050202705779334,-94.607518499034526 39.044004999999999,-94.607559479691474 39.040879368039988,-94.607612854426819 39.036808428453341,-94.60764748233197 39.034167326647299,-94.607654028188094 39.033668068249817,-94.60769507925167 39.030537066312085,-94.607898722639391 39.015005000000002,-94.607914652765047 39.013789994834404,-94.607991843462372 39.007902590176151,-94.608087526605189 39.000604749887366,-94.608092759229436 39.000205652880325,-94.608190956218394 38.992716079262479,-94.608212339138063 38.991085184540211,-94.608264438806202 38.98711149548862,-94.608279957450691 38.985927874365181,-94.608301211867541 38.984306780669819,-94.608333999999999 38.981805999999999,-94.608294286905348 38.97390309416464,-94.608273484679671 38.969763451253407,-94.608249262127771 38.964943163424849,-94.608207879518076 38.956708024096379,-94.608134000000007 38.942005999999999,-94.608134000000007 38.940005999999997,-94.607866 38.937398000000002,-94.607977999999989 38.936869999999992,-94.608002838442587 38.912906322207348,-94.608006216770249 38.909646973100827,-94.608010407202343 38.90560412040071,-94.608022064178897 38.894357681354862,-94.60802273861259 38.893706999999999,-94.608033000000006 38.883806999999997,-94.608033000000006 38.869207000000003,-94.608033000000006 38.868107000000002,-94.607992999999993 38.867271000000002,-94.608033000000006 38.861207,-94.608033000000006 38.855007,-94.608033000000006 38.850107,-94.608033000000006 38.847206999999997,-94.607624999999999 38.827559999999991,-94.607668973053535 38.825816299300072,-94.608041 38.811064000000002,-94.608617609754887 38.781926100280451,-94.609398999999996 38.742440000000002,-94.60945599999998 38.74069999999999,-94.609507757106428 38.73815999467709,-94.609625656590424 38.7323740198146,-94.610322172686637 38.698192151600097,-94.61071084056907 38.679118085101081,-94.61073851283922 38.677760054904219,-94.611602000000005 38.635384000000002,-94.611464999999995 38.625011,-94.611857999999998 38.620485000000002,-94.611908 38.609271999999997,-94.611905562149673 38.605890005062435,-94.611886999999996 38.580139000000003,-94.611902 38.580109999999998,-94.612176000000005 38.576546,-94.612156999999996 38.549816999999997,-94.612272000000004 38.547916999999998,-94.612464742072774 38.518760616499996,-94.612644000000003 38.491644,-94.612725999999995 38.484366999999999,-94.612696 38.483153999999999,-94.612865999999997 38.477570999999998,-94.613365000000002 38.403421999999999,-94.613264999999998 38.392426,-94.613275404637193 38.388718047420433,-94.613328999999993 38.369617999999996,-94.613311999999993 38.364407,-94.613085455228386 38.3436360393057,-94.612999999999985 38.335800999999996,-94.612825 38.324387000000002,-94.612787999999995 38.320141999999997,-94.612673 38.314832000000003,-94.612673 38.302526999999998,-94.612689368276676 38.301464114946214,-94.612843999999996 38.291422999999995,-94.612848999999997 38.289914000000003,-94.612707829046002 38.272362044447966,-94.612691999999996 38.270394000000003,-94.612613999999994 38.237766,-94.612634999999997 38.226987,-94.612658999999994 38.219251,-94.61265866950464 38.21872154645218,-94.612657999999982 38.217649000000002,-94.612821999999994 38.203918000000002,-94.612848 38.200713999999998,-94.613073 38.190551999999997,-94.61341774677895 38.168183959706163,-94.613422 38.16790799999999,-94.613748 38.160632999999997,-94.613855999999998 38.149768999999999,-94.613889466360249 38.136312911169284,-94.613919497343275 38.124238112111762,-94.614061000000007 38.067343,-94.614088999999993 38.065900999999997,-94.614054999999993 38.060088,-94.613980999999995 38.036949,-94.614211999999981 37.992462000000003,-94.614464999999996 37.987798999999995,-94.614511123427164 37.979395512107736,-94.614514360688489 37.978805697169918,-94.614557000000005 37.971036999999995,-94.614561999999992 37.951517000000003,-94.614593999999997 37.949977999999994,-94.614611999999994 37.944361999999998,-94.614754000000005 37.940769000000003,-94.614834999999999 37.936700000000002,-94.614778 37.934199999999997,-94.615181000000007 37.915944000000003,-94.615392999999983 37.906391999999997,-94.61546899999999 37.901775,-94.615706000000003 37.886842999999999,-94.615921 37.878331000000003,-94.615834000000007 37.872509999999998,-94.616 37.863126,-94.616282760205394 37.851281931678621,-94.616426000000004 37.845281999999997,-94.616433230053673 37.842955730230052,-94.61645 37.837560000000003,-94.616861999999998 37.819456000000002,-94.6176681324215 37.775831003788085,-94.617720999999989 37.77297,-94.617737774720197 37.764628336555312,-94.617744979193901 37.761045725680312,-94.617807999999997 37.729706999999998,-94.617975 37.722175999999997,-94.61780499999999 37.690178000000003,-94.617650999999995 37.687671000000002,-94.617687000000004 37.686652999999993,-94.617885 37.682214000000002,-94.617733999999999 37.673127,-94.617576 37.653671000000003,-94.617517909436387 37.643988652624088,-94.61747699999998 37.637169999999998,-94.617472819127315 37.636539916507168,-94.6173 37.610495,-94.617428000000004 37.609521999999998,-94.617283 37.571896000000002,-94.617315000000005 37.571498999999996,-94.617080999999999 37.567013000000003,-94.61711240153133 37.563155381499406,-94.617159999999984 37.557307999999999,-94.617186000000004 37.553485000000002,-94.617167532949537 37.551779056391354,-94.616988484457494 37.535238968895172,-94.616907999999981 37.527804000000003,-94.616788999999997 37.521509999999999,-94.616880369657522 37.506771761864755,-94.617022999999989 37.483764999999998,-94.617182999999997 37.469664999999999,-94.617180000000005 37.465203000000002,-94.617221999999998 37.460476,-94.617204999999984 37.46037299999999,-94.617200999999994 37.454788,-94.617131999999998 37.439818000000002,-94.617265000000003 37.425535999999994,-94.617510999999993 37.410908999999997,-94.617557000000005 37.396374999999999,-94.61759158917468 37.381725975861251,-94.617625000000004 37.367576,-94.617626 37.367444999999989,-94.617536999999999 37.364355000000003,-94.617636000000005 37.338417,-94.617694999999998 37.336841999999997,-94.617648000000003 37.323588999999998,-94.61807499999999 37.240436000000003,-94.618157999999994 37.237596999999994,-94.618122999999997 37.229334,-94.61815 37.228121000000002,-94.618218999999996 37.207771999999999,-94.618305000000007 37.207337000000003,-94.618319 37.188774000000002,-94.618504999999985 37.181184000000002,-94.618472999999994 37.174782,-94.618351000000004 37.160210999999997,-94.618071999999998 37.132345,-94.61807499999999 37.129755000000003,-94.61816441512984 37.118929895303054,-94.618212 37.113168999999992,-94.618150999999997 37.103968000000002,-94.618059000000002 37.096676000000002,-94.618088 37.093670999999993,-94.618089999999995 37.093494,-94.618085255103864 37.089305442941992,-94.618082 37.086432000000002,-94.61811999999999 37.085934000000002,-94.617981999999998 37.075077,-94.617954311863897 37.070346986543974,-94.617947706480578 37.069218577181687,-94.617910161110728 37.062804634983031,-94.617893975984089 37.060039701061122,-94.617874999999998 37.056798,-94.617877538275181 37.056339390079508,-94.617964999999998 37.040537,-94.617972200190749 37.032971759572447,-94.617994999999979 37.009015999999995,-94.618027702303792 37.004829720380044,-94.618080000000006 36.998134999999998,-94.625223999999989 36.998671999999999,-94.699735000000004 36.998804999999997,-94.701796999999999 36.998814000000003,-94.711286363060864 36.99879670415919,-94.712770000000006 36.99879399999999,-94.722629184733563 36.998741903378082,-94.732834603466486 36.998687977231512,-94.736330645670293 36.998669503899912,-94.737183000000002 36.998665000000003,-94.739323999999996 36.998686999999997,-94.745992043692311 36.998700535427304,-94.749560781475736 36.99870777958963,-94.749834600019099 36.998708335412474,-94.777257000000006 36.998764,-94.831280000000007 36.998812,-94.831539962039543 36.998812565955092,-94.840925999999996 36.998832999999998,-94.846637705524785 36.998860673615503,-94.849800999999999 36.998875999999996,-94.853196999999994 36.998874,-94.896852168601683 36.999075231107383,-94.904605402657381 36.99911097010289,-94.9407882710602 36.999277757196154,-94.995293000000004 36.999528999999995,-95.007620000000003 36.999513999999998,-95.011432999999997 36.999535000000002,-95.030323999999993 36.999516999999997,-95.037857000000002 36.999496999999998,-95.049498999999983 36.999580000000002,-95.073509 36.999509000000003,-95.1405498515593 36.999533623834409,-95.155186999999998 36.999538999999999,-95.155372 36.999540000000003,-95.159067907556633 36.999536629205572,-95.177300999999986 36.999519999999997,-95.195307 36.999564999999997,-95.267905305061163 36.999446910377756,-95.285983101167361 36.999417504731007,-95.322564999999997 36.999357999999994,-95.328057999999999 36.999364999999997,-95.328326999999987 36.999366000000002,-95.331209999999999 36.999380000000002,-95.377252424658963 36.999296311678272,-95.381753803085687 36.999288129815376,-95.407683000000006 36.999240999999998,-95.511578 36.999234999999999,-95.522414951940931 36.999281058114107,-95.534401000000003 36.999332000000003,-95.573598000000004 36.999309999999994,-95.601517312742303 36.999317968253862,-95.612139999999997 36.999321000000002,-95.615933999999996 36.999364999999997,-95.621011943860609 36.999361983160732,-95.624350000000007 36.999360000000003,-95.630078999999995 36.999319999999997,-95.638122589416028 36.999320470082949,-95.664300999999995 36.999321999999999,-95.674044398562955 36.999333876292773,-95.686452000000003 36.999349000000002,-95.696658999999997 36.999215,-95.71038 36.999370999999996,-95.710782524132014 36.999362783399121,-95.714887000000004 36.999279,-95.718053999999995 36.999254999999998,-95.741907999999995 36.999243999999997,-95.746466244276931 36.999250838506164,-95.759905000000003 36.999270999999993,-95.768719000000004 36.999205000000003,-95.786761999999996 36.999309999999994,-95.807979999999986 36.999124000000002,-95.819364496908179 36.999150471530008,-95.866899000000004 36.999260999999997,-95.873943999999995 36.999299999999998,-95.875256999999991 36.999302,-95.877150999999998 36.999304000000002,-95.910179999999997 36.999336,-95.928122000000002 36.999245000000002,-95.936991999999989 36.999267999999994,-95.964270378114222 36.999093604402042,-96.00081 36.99886,-96.095164142267308 36.998935940299688,-96.14121 36.998972999999999,-96.143207000000004 36.999133999999998,-96.147143 36.999021999999997,-96.149709 36.99904,-96.152383999999998 36.999050999999994,-96.154016999999982 36.999161,-96.184768000000005 36.999211000000003,-96.200028000000003 36.999028000000003,-96.217571000000007 36.999070000000003,-96.235320025971774 36.999130675786525,-96.27480962492784 36.999265672629733,-96.276368000000005 36.999270999999993,-96.279078999999996 36.999271999999991,-96.381556872639493 36.999226629434901,-96.394272 36.999220999999999,-96.415412000000003 36.999113,-96.500287999999998 36.998643,-96.525212323286397 36.998711038495294,-96.525495980566973 36.998711812823821,-96.551130926932458 36.998781791180214,-96.551130927020779 36.998781791180456,-96.624487489749981 36.998982040153741,-96.705431000000004 36.999203,-96.710481999999999 36.999270999999993,-96.731983006833033 36.99928335311408,-96.736589999999993 36.999285999999998,-96.741269999999986 36.999239000000003,-96.749837999999997 36.998987999999997,-96.792060000000006 36.999179999999996,-96.795198999999997 36.99886,-96.822790999999995 36.999181999999998,-96.867517000000007 36.999217000000002,-96.876289999999997 36.999232999999997,-96.902083000000005 36.999155000000002,-96.903509999999997 36.999132000000003,-96.917092999999994 36.999181999999998,-96.921914999999998 36.999150999999998,-96.924934279563146 36.999131784030439,-96.934641999999997 36.999070000000003,-96.967371 36.999066999999997,-96.975561999999996 36.999018999999997,-97.030081999999979 36.998928999999997,-97.039783999999983 36.999000000000002,-97.045562883576096 36.99899981011751,-97.100651999999997 36.998998,-97.104275999999999 36.999020000000002,-97.120284999999996 36.999014000000003,-97.122596999999999 36.999035999999997,-97.147721000000004 36.999110999999999,-97.202000013134437 36.999050609464689,-97.255829185181881 36.998990719420135,-97.342808466604069 36.998893946743877,-97.362376892203329 36.998872175019791,-97.364929972745273 36.99886933447624,-97.372421000000003 36.998860999999998,-97.384924999999996 36.998843,-97.462279999999993 36.998685000000002,-97.472860999999995 36.998721000000003,-97.527292000000003 36.998749999999994,-97.545899999999989 36.998708999999991,-97.546497999999985 36.998746999999995,-97.564536000000004 36.998711,-97.582460039051355 36.99869862770732,-97.606549 36.998682000000002,-97.637136999999996 36.999090000000002,-97.650465999999994 36.999003999999999,-97.692180007144742 36.998844793059916,-97.697103999999982 36.998826,-97.768704 36.998749999999994,-97.783432000000005 36.998961,-97.783489000000003 36.998846999999998,-97.802297999999979 36.998713000000002,-97.965379045838461 36.998468720211747,-98.033955000000006 36.998365999999997,-98.03989 36.998348999999997,-98.045341999999991 36.998327000000003,-98.111985000000004 36.998133000000003,-98.128185436781749 36.99814624647324,-98.147452 36.998162,-98.177595999999994 36.998008999999996,-98.190367496841162 36.998003995168112,-98.208218000000002 36.997996999999998,-98.219498999999999 36.997824,-98.237712000000002 36.99797199999999,-98.346187999999984 36.997962,-98.347186011230875 36.997961873429141,-98.354073 36.997960999999997,-98.408991 36.998513000000003,-98.418267999999998 36.998538000000003,-98.420209 36.998516000000002,-98.476584655565659 36.998733519956424,-98.485495952453391 36.998767903324406,-98.544871999999984 36.998997000000003,-98.622244241689657 36.999025734091177,-98.714511999999999 36.99906,-98.718464999999995 36.999179999999996,-98.761596999999995 36.999425000000002,-98.791936000000007 36.999254999999998,-98.793711000000002 36.999226999999991,-98.797451999999993 36.999228999999993,-98.811832237742053 36.99924038482925,-98.869449000000003 36.999285999999998,-98.880009 36.999262999999999,-98.880579999999995 36.999308999999997,-98.994371 36.999493,-99.000846251360556 36.99951188908193,-99.029336999999998 36.999594999999999,-99.044703416105833 36.999312701167916,-99.049695 36.999220999999999,-99.124882999999997 36.99942,-99.12944899999998 36.999422000000003,-99.215429691089184 36.999525607779709,-99.221470798208784 36.999532887387339,-99.22594390512576 36.999538277535649,-99.248119999999986 36.999564999999997,-99.277506000000002 36.999578999999997,-99.375390999999993 37.000176999999994,-99.375813215185289 37.000169016042221,-99.396673054015949 36.999774562980598,-99.407015 36.999578999999997,-99.456202999999988 36.999471,-99.484333000000007 36.999625999999999,-99.500394999999983 36.99957599999999,-99.500394999999983 36.999637,-99.502664999999993 36.999645,-99.504092999999997 36.999648,-99.508573999999982 36.999657999999997,-99.541115670095081 36.999572526667627,-99.558068000000006 36.999527999999998,-99.625399000000002 36.999670999999999,-99.648651999999998 36.999603999999998,-99.657657999999998 37.000197,-99.675479899119665 37.000294824261658,-99.700804554289192 37.000433831091229,-99.722499410223932 37.000552913981863,-99.774254999999997 37.000836999999997,-99.774816 37.000841,-99.786016000000004 37.000931,-99.875408999999991 37.001658999999997,-99.904897139036905 37.001652107487203,-99.995200999999994 37.001631000000003,-100.001285999999993 37.001699000000002,-100.002562999999995 37.001705999999999,-100.005706000000004 37.001725999999998,-100.08949117994996 37.002091554886341,-100.115721999999991 37.002206,-100.187546999999995 37.002082,-100.19237099999998 37.002035999999997,-100.193753999999998 37.002133,-100.201675999999992 37.002080999999997,-100.269984573601874 37.001795796937508,-100.395563941387664 37.001271475927872,-100.434302684862132 37.001109733298897,-100.434343961694367 37.0011095609592,-100.436759028295029 37.001099477534027,-100.462594151135718 37.000991610310841,-100.526354155903263 37.000725398506596,-100.551597999999998 37.000619999999998,-100.552683000000002 37.000734999999999,-100.591328000000004 37.000376000000003,-100.591413000000003 37.000399000000002,-100.629769999999994 37.000025,-100.63332699999998 36.999935999999998,-100.675551999999996 36.999687999999999,-100.734516999999997 36.999059000000003,-100.756894000000003 36.999356999999996,-100.759718826764541 36.999297806889686,-100.765484 36.999177000000003,-100.806116000000003 36.999091,-100.814277000000004 36.999085,-100.850054835707368 36.998687920265262,-100.855633999999981 36.998626000000002,-100.891659999999987 36.998604,-100.904274 36.998745,-100.904588000000004 36.998561000000002,-100.945565999999985 36.998151999999997,-100.958261085233985 36.99812508251128,-100.996501999999992 36.998044,-101.012641000000002 36.998176,-101.053589000000002 36.997966999999996,-101.066742000000005 36.997920999999998,-101.096255470166753 36.997758490771822,-101.211485999999979 36.997123999999999,-101.212908999999996 36.997044000000002,-101.283204233333976 36.996668964004151,-101.357796999999991 36.996271,-101.359673999999998 36.996231999999999,-101.37818 36.996164,-101.413867999999994 36.996008000000003,-101.415004999999994 36.995966000000003,-101.485326 36.995610999999997,-101.519065999999995 36.99554599999999,-101.555239 36.99541399999999,-101.600396000000003 36.995152999999995,-101.601592999999994 36.995094999999999,-101.672152845644291 36.994768289529276,-101.672152845650672 36.994768289529254,-101.718235173867967 36.994554916342196,-101.761767880686108 36.994353348566563,-101.826607533764985 36.994053124077894,-101.862548907230888 36.993886706153717,-101.881050066963184 36.993801040963412,-101.899294480822903 36.993716564573397,-101.902439999999999 36.993701999999999,-101.905152836625547 36.993689460946754,-101.93521516037174 36.99355050931414,-102.000446999999994 36.993248999999992,-102.000446999999994 36.993271999999997,-102.028206999999981 36.993124999999999,-102.042240000000007 36.993082999999999,-102.041951999999995 37.024741999999996,-102.04195 37.030805,-102.041921000000002 37.032178000000002,-102.041748999999996 37.034396999999998,-102.04191999999999 37.035083,-102.041983000000002 37.106551000000003,-102.041808999999986 37.111972999999999,-102.042091999999997 37.125020999999997,-102.042135000000002 37.125020999999997,-102.042121535383529 37.12671399835564,-102.042001999999997 37.141744000000003,-102.041962999999996 37.258164,-102.041663999999997 37.29764999999999,-102.041816999999995 37.309489999999997,-102.041973999999996 37.352612999999998,-102.042089000000004 37.352818999999997,-102.041523999999995 37.375017999999997,-102.041585760607518 37.389190434149839,-102.041675999999981 37.409897999999991,-102.041668999999999 37.434739999999998,-102.041754999999995 37.434854999999992,-102.041800999999992 37.469487999999998,-102.041786000000002 37.506065999999997,-102.04201599999999 37.535260999999998,-102.041899 37.541186000000003,-102.041893999999999 37.557977,-102.041618 37.607868000000003,-102.041584999999998 37.644281999999997,-102.041581999999991 37.654494999999997,-102.041694000000007 37.665680999999999,-102.041573999999997 37.680436,-102.041876000000002 37.723875,-102.041989965869121 37.73854062916552,-102.042158 37.760164000000003,-102.042668000000006 37.788758,-102.042952999999997 37.803534999999997,-102.043032999999994 37.824145999999999,-102.043218999999993 37.86792899999999,-102.043714531331204 37.914003914798144,-102.043845000000005 37.926135000000002,-102.043844000000007 37.928101999999996,-102.044644000000005 38.045532,-102.044255000000007 38.113010999999993,-102.044450868202546 38.120049353793199,-102.044589000000002 38.125012999999996,-102.044415729020699 38.133607343100145,-102.044251000000003 38.141777999999995,-102.044296878804843 38.175558844899406,-102.044398 38.250014999999998,-102.044510721728557 38.262483349316234,-102.044567999999998 38.268819,-102.044612999999998 38.312323999999997,-102.044944 38.384419,-102.044441999999989 38.415801999999999,-102.044936000000007 38.41968,-102.045323999999979 38.453646999999997,-102.045262999999991 38.505395,-102.045261999999994 38.505531999999995,-102.045112000000003 38.523783999999999,-102.045222999999993 38.543796999999998,-102.045188999999979 38.558731999999992,-102.045210999999995 38.581608999999993,-102.045287999999999 38.615248999999999,-102.045074 38.669617000000002,-102.045102 38.674945999999998,-102.045159999999996 38.675221,-102.045126999999994 38.686725000000003,-102.045156000000006 38.688555,-102.045211999999992 38.697566999999999,-102.045375000000007 38.754338999999995,-102.045287000000002 38.755527999999998,-102.045371000000003 38.770063999999998,-102.045447999999993 38.783453000000002,-102.045333999999997 38.799463000000003,-102.045387999999988 38.813391999999993,-102.046570999999986 39.047038,-102.047133999999986 39.129700999999997,-102.047188612927897 39.133146793270186,-102.047250000000005 39.13702,-102.047851021058236 39.220289738242592,-102.048449000000005 39.30313799999999,-102.04895999999998 39.37371199999999,-102.049100972149461 39.394064428437375,-102.049166999999983 39.403596999999998,-102.049369999999996 39.418210000000002,-102.049368999999999 39.423333,-102.049678999999998 39.506183,-102.049672999999999 39.536690999999998,-102.049553999999986 39.538932000000003,-102.049763758475066 39.568170000775439,-102.04980599999999 39.574058,-102.049954 39.592331,-102.050258163748609 39.627242889069393,-102.050421999999983 39.646047999999993,-102.050099000000003 39.653812000000002,-102.05059399999999 39.67559399999999,-102.050898693231389 39.741794606053567,-102.051254 39.818992,-102.051317999999995 39.833311000000002,-102.051362999999995 39.843471,-102.051569 39.849805000000003,-102.051743999999999 40.003078000000002))
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/nz.wkt b/webapp/django/contrib/gis/tests/geoapp/sql/nz.wkt
deleted file mode 100644
index 7e7b593..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/nz.wkt
+++ /dev/null
@@ -1 +0,0 @@
-MULTIPOLYGON (((174.616364000000004 -36.100861000000002,174.634978999999987 -36.124718,174.708862000000011 -36.205559,174.781096999999988 -36.266945,174.812744000000009 -36.339165,174.768311000000011 -36.34639,174.710784999999987 -36.525832999999999,174.708587999999992 -36.533332999999999,174.70773299999999 -36.541671999999998,174.714690999999988 -36.595832999999999,174.717194000000006 -36.603057999999997,174.774414000000007 -36.730277999999998,174.808319000000012 -36.805275000000002,174.854400999999996 -36.847777999999998,174.896636999999998 -36.878334000000002,175.011658000000011 -36.871941,175.020813000000004 -36.873610999999997,175.055542000000003 -36.880279999999999,175.076629999999994 -36.890839,175.082458000000003 -36.895279000000002,175.087463000000014 -36.900832999999999,175.091644000000002 -36.925559999999997,175.161652000000004 -36.955559,175.221069 -36.937775000000002,175.230255 -36.939438000000003,175.278320000000008 -36.965279000000002,175.310516000000007 -36.995002999999997,175.319976999999994 -37.005836000000002,175.323853000000014 -37.012222,175.328856999999999 -37.026947,175.330261000000007 -37.035277999999998,175.330535999999995 -37.044449,175.321899000000002 -37.06472,175.31942699999999 -37.095275999999998,175.317748999999992 -37.144165,175.319121999999993 -37.152495999999999,175.328856999999999 -37.168892,175.373290999999995 -37.216659999999997,175.385254000000003 -37.225830000000002,175.404967999999997 -37.228050000000003,175.579131999999987 -37.244446000000003,175.58914200000001 -37.169449,175.551636000000002 -37.024718999999997,175.547484999999995 -37.009171000000002,175.542480000000012 -36.994446000000003,175.536102 -36.980826999999998,175.524993999999992 -36.961669999999998,175.498566000000011 -36.927222999999998,175.484406000000007 -36.920279999999998,175.476348999999999 -36.917777999999998,175.464416999999997 -36.90889,175.435241999999988 -36.866942999999999,175.46691899999999 -36.809998,175.509430000000009 -36.776108,175.486358999999993 -36.679726000000002,175.463593000000003 -36.621383999999999,175.378296000000006 -36.570557,175.366364000000004 -36.561667999999997,175.361633000000012 -36.556389000000003,175.356628 -36.541671999999998,175.353850999999992 -36.525002,175.35244800000001 -36.489998,175.353577 -36.481940999999999,175.360229000000004 -36.478050000000003,175.538025000000005 -36.514724999999999,175.542755 -36.519996999999996,175.604950000000002 -36.622771999999998,175.631072999999986 -36.710555999999997,175.763610999999997 -36.713614999999997,175.840789999999998 -36.754173000000002,175.733582000000013 -36.805832000000002,175.701629999999994 -36.844161999999997,175.707458000000003 -36.869995000000003,175.709960999999993 -36.875275000000002,175.714690999999988 -36.880828999999999,175.720519999999993 -36.885277000000002,175.735779000000008 -36.891387999999999,175.74383499999999 -36.893889999999999,175.758330999999998 -36.876106,175.761382999999995 -36.869446000000003,175.757751000000013 -36.863059999999997,175.753051999999997 -36.857779999999998,175.749114999999989 -36.851394999999997,175.75 -36.843055999999997,175.752196999999995 -36.835555999999997,175.756378000000012 -36.830002,175.765533000000005 -36.828055999999997,175.808013999999986 -36.824173000000002,175.817200000000014 -36.825836000000002,175.833587999999992 -36.830832999999998,175.845519999999993 -36.839722000000002,175.849120999999997 -36.846107000000003,175.878570999999994 -36.914444000000003,175.881072999999986 -36.921669,175.918304000000006 -37.067504999999997,175.917480000000012 -37.075836000000002,175.915253000000007 -37.083061,175.898314999999997 -37.115004999999996,175.884154999999993 -37.168892,175.883330999999998 -37.176949,175.887206999999989 -37.244163999999998,175.892212 -37.249724999999998,175.921082000000013 -37.251671000000002,175.927185000000009 -37.256110999999997,175.93081699999999 -37.262504999999997,175.936371000000008 -37.278885000000002,175.940093999999988 -37.299717,175.974396000000013 -37.418059999999997,175.976074000000011 -37.453055999999997,176.026931999999988 -37.483108999999999,176.035583000000003 -37.487282,176.059417999999994 -37.502502,176.088287000000008 -37.525557999999997,176.093291999999991 -37.531112999999998,176.165526999999997 -37.613892,176.169433999999995 -37.620277000000002,176.167205999999993 -37.625832000000003,176.160247999999996 -37.624167999999997,176.082458000000003 -37.602500999999997,176.066924999999998 -37.59639,176.061095999999992 -37.591942000000003,176.057189999999991 -37.585555999999997,176.062744000000009 -37.580832999999998,176.070800999999989 -37.577781999999999,176.088287000000008 -37.580002,176.095245000000006 -37.576110999999997,176.090239999999994 -37.570838999999999,176.062468999999993 -37.546669,176.023087000000004 -37.528221000000002,176.018767999999994 -37.526057999999999,176.013931000000014 -37.524554999999999,176.007598999999999 -37.524222999999999,175.955535999999995 -37.521110999999998,175.946349999999995 -37.523055999999997,175.940796000000006 -37.527779000000002,175.953583000000009 -37.558891000000003,175.994415000000004 -37.638893000000003,176.071899000000002 -37.655273,176.14498900000001 -37.675277999999999,176.242187999999999 -37.709442000000003,176.267486999999988 -37.676392,176.488281 -37.756667999999998,176.521636999999998 -37.769447,176.527771 -37.773887999999999,176.537475999999998 -37.784447,176.549712999999997 -37.793334999999999,176.656646999999992 -37.855559999999997,176.671082000000013 -37.862502999999997,176.686645999999996 -37.868332000000002,176.759154999999993 -37.892775999999998,176.784149000000014 -37.900275999999998,176.80304000000001 -37.903328000000002,176.819702000000007 -37.904442000000003,176.838287000000008 -37.907501000000003,176.917755 -37.926108999999997,176.943848000000003 -37.932502999999997,177.08273299999999 -37.967216,177.107468000000011 -37.987220999999998,177.159424 -38.013336000000002,177.415253000000007 -37.982498,177.47357199999999 -37.962502,177.545806999999996 -37.919167000000002,177.552459999999996 -37.915000999999997,177.571625000000012 -37.902222000000002,177.599120999999997 -37.878051999999997,177.603577 -37.872498,177.646941999999996 -37.805,177.732178000000005 -37.682502999999997,177.738861000000014 -37.678336999999999,177.746917999999994 -37.675277999999999,177.791931000000005 -37.666946000000003,177.849396000000013 -37.657218999999998,177.858856000000003 -37.656661999999997,177.868010999999996 -37.654442000000003,177.875792999999987 -37.651389999999999,178.0 -37.592224000000002,178.006653 -37.588332999999999,178.012206999999989 -37.583328000000002,178.018004999999988 -37.550831000000002,178.05581699999999 -37.542777999999998,178.064972000000012 -37.542228999999999,178.187744000000009 -37.546951,178.281921000000011 -37.560828999999998,178.306915000000004 -37.568061999999998,178.311919999999986 -37.573334000000003,178.312468999999993 -37.578887999999999,178.306915000000004 -37.583610999999998,178.321075000000008 -37.602500999999997,178.336365 -37.618332000000002,178.34970100000001 -37.626944999999999,178.367737000000005 -37.630828999999999,178.448028999999991 -37.645279000000002,178.457458000000003 -37.646667,178.468018 -37.646949999999997,178.488861000000014 -37.644165,178.497192000000013 -37.646667,178.504424999999998 -37.649994,178.550536999999991 -37.6875,178.555542000000003 -37.692497000000003,178.559692000000013 -37.698883000000002,178.56552099999999 -37.713332999999999,178.562468999999993 -37.719994,178.483306999999996 -37.826393000000003,178.455230999999998 -37.860000999999997,178.449982000000006 -37.865004999999996,178.429687999999999 -37.876944999999999,178.419983000000002 -37.887779000000002,178.350525000000005 -38.004722999999998,178.347473000000008 -38.011116,178.347197999999992 -38.019722000000002,178.348846000000009 -38.027779000000002,178.354950000000002 -38.032218999999998,178.360229000000004 -38.037506,178.364136000000002 -38.043616999999998,178.375792999999987 -38.072777000000002,178.378296000000006 -38.089995999999999,178.377746999999999 -38.09861,178.353850999999992 -38.185555,178.319976999999994 -38.248055,178.318024000000008 -38.255561999999998,178.317474000000004 -38.263893000000003,178.320800999999989 -38.398612999999997,178.302459999999996 -38.528885000000002,178.300536999999991 -38.536391999999999,178.296356000000003 -38.541946000000003,178.158874999999995 -38.649169999999998,178.074982000000006 -38.713889999999999,178.068297999999999 -38.717773,178.060241999999988 -38.721107000000003,178.050812000000008 -38.721381999999998,178.044433999999995 -38.717216,177.928864000000004 -38.722220999999998,177.941070999999994 -38.793616999999998,177.923858999999993 -38.918334999999999,177.917786000000007 -38.942802,177.909697999999992 -38.969718999999998,177.897705000000002 -39.047942999999997,177.893859999999989 -39.064776999999999,177.906708000000009 -39.064278000000002,177.923034999999999 -39.089165,177.942200000000014 -39.091942000000003,177.967743000000013 -39.098334999999999,177.991332999999997 -39.115004999999996,177.996612999999996 -39.120277000000002,177.999390000000005 -39.127495000000003,177.909973000000008 -39.256950000000003,177.898865 -39.267502,177.874968999999993 -39.286118000000002,177.868010999999996 -39.290283000000002,177.861908 -39.285834999999999,177.844970999999987 -39.251396,177.839416999999997 -39.236946000000003,177.824127000000004 -39.193053999999997,177.823577999999998 -39.183883999999999,177.826629999999994 -39.177222999999998,177.841644000000002 -39.152779000000002,177.822021000000007 -39.114445000000003,177.823195999999996 -39.110115,177.82351700000001 -39.105110000000003,177.82119800000001 -39.101275999999999,177.816696000000007 -39.099274,177.680266999999986 -39.075279000000002,177.628845000000013 -39.071114,177.426085999999998 -39.064163,177.387755999999996 -39.077781999999999,177.246917999999994 -39.128334000000002,177.206085000000002 -39.143616000000002,177.149138999999991 -39.165000999999997,177.054961999999989 -39.204445,176.935790999999995 -39.349997999999999,176.931365999999997 -39.355559999999997,176.903870000000012 -39.398055999999997,176.898865 -39.412216,176.89776599999999 -39.438048999999999,176.899414000000007 -39.446387999999999,176.946625000000012 -39.664444000000003,177.01080300000001 -39.654998999999997,177.107178000000005 -39.660828000000002,177.116913000000011 -39.662216,177.120789000000002 -39.66861,177.119110000000006 -39.676108999999997,177.115783999999991 -39.682502999999997,177.08273299999999 -39.729996,177.073577999999998 -39.741385999999999,177.068024000000008 -39.746108999999997,177.059692000000013 -39.749167999999997,177.050262000000004 -39.751396,177.033874999999995 -39.757506999999997,177.028045999999989 -39.762504999999997,177.023590000000013 -39.768059,177.020263999999997 -39.774718999999997,176.894713999999993 -40.034728999999999,176.890533000000005 -40.049728000000002,176.889983999999998 -40.058052000000004,176.89498900000001 -40.082779000000002,176.893035999999995 -40.090279000000002,176.874114999999989 -40.121383999999999,176.834136999999998 -40.181671,176.808319000000012 -40.216659999999997,176.796935999999988 -40.226387000000003,176.687195000000003 -40.321387999999999,176.644135000000006 -40.379997000000003,176.628296000000006 -40.421944000000003,176.539977999999991 -40.495002999999997,176.521362000000011 -40.513893000000003,176.500823999999994 -40.535004,176.441924999999998 -40.600281000000003,176.405243000000013 -40.643889999999999,176.386108000000007 -40.675002999999997,176.35522499999999 -40.688606,176.349396000000013 -40.693610999999997,176.288574000000011 -40.793892,176.239136000000002 -40.90889,176.22079500000001 -40.931671,176.195526 -40.941665999999998,176.172760000000011 -40.952224999999999,176.158600000000007 -40.959999000000003,176.152771 -40.964722000000002,176.142212 -40.975273,176.134154999999993 -40.987502999999997,176.120789000000002 -41.013618,176.11300700000001 -41.035277999999998,176.098297000000002 -41.087218999999997,176.087463000000014 -41.116112,176.080811000000011 -41.129165999999998,176.062195000000003 -41.151938999999999,175.984679999999997 -41.231383999999998,175.955230999999998 -41.255279999999999,175.819121999999993 -41.347220999999998,175.743561 -41.392226999999998,175.736358999999993 -41.396110999999998,175.557738999999998 -41.485000999999997,175.471069 -41.541389000000002,175.427459999999996 -41.564444999999999,175.323028999999991 -41.614449,175.313292999999987 -41.616394,175.230804000000006 -41.620834000000002,175.222197999999992 -41.618332000000002,175.21691899999999 -41.612777999999999,175.184692000000013 -41.535834999999999,175.181915000000004 -41.519447,175.181091000000009 -41.500838999999999,175.188568000000004 -41.461112999999997,175.193024000000008 -41.446106,175.193848000000003 -41.437775000000002,175.191070999999994 -41.430557,175.186095999999992 -41.425002999999997,175.080261000000007 -41.385559,175.063018999999997 -41.380279999999999,175.05304000000001 -41.378608999999997,175.045532000000009 -41.378608999999997,175.027190999999988 -41.381667999999998,174.993286000000012 -41.393332999999998,174.985779000000008 -41.397224,174.972747999999996 -41.405830000000002,174.960509999999999 -41.415275999999999,174.949982000000006 -41.425559999999997,174.944976999999994 -41.431114,174.94165000000001 -41.437775000000002,174.936919999999986 -41.443328999999999,174.918578999999994 -41.448051,174.908600000000007 -41.448334000000003,174.872467 -41.429442999999999,174.86605800000001 -41.425002999999997,174.861084000000005 -41.419724000000002,174.861633000000012 -41.347496,174.863861000000014 -41.340279000000002,174.870789000000002 -41.327224999999999,174.87912 -41.315002,174.883881000000002 -41.309441,174.894440000000003 -41.290000999999997,174.89776599999999 -41.282501000000003,174.899993999999992 -41.275002,174.901916999999997 -41.258338999999999,174.901916999999997 -41.251114,174.898865 -41.234444000000003,174.89498900000001 -41.228050000000003,174.887482000000006 -41.224442000000003,174.827179 -41.218887000000002,174.818848000000003 -41.221938999999999,174.787475999999998 -41.244446000000003,174.778045999999989 -41.255836000000002,174.774414000000007 -41.262222,174.771087999999992 -41.278053,174.778594999999996 -41.281387000000002,174.796082000000013 -41.286949,174.818024000000008 -41.284728999999999,174.824127000000004 -41.289169,174.829407000000003 -41.294724000000002,174.833313000000004 -41.301108999999997,174.832184000000012 -41.309441,174.82995600000001 -41.316665999999998,174.826355000000007 -41.323334000000003,174.821625000000012 -41.328887999999999,174.815796000000006 -41.333610999999998,174.807189999999991 -41.336387999999999,174.744689999999991 -41.347496,174.700531000000012 -41.344444000000003,174.671906000000007 -41.338332999999999,174.654694000000006 -41.333061,174.648314999999997 -41.328612999999997,174.629669000000007 -41.315002,174.59191899999999 -41.27861,174.591644000000002 -41.271385000000002,174.594116000000014 -41.263893000000003,174.601074000000011 -41.250838999999999,174.608306999999996 -41.237777999999999,174.61300700000001 -41.232216,174.619110000000006 -41.23111,174.627746999999999 -41.233887000000003,174.637482000000006 -41.235557999999997,174.648590000000013 -41.234444000000003,174.666931000000005 -41.229720999999998,174.681365999999997 -41.221938999999999,174.694702000000007 -41.213614999999997,174.712738000000002 -41.199440000000003,174.718567000000007 -41.194716999999997,174.800812000000008 -41.100281000000003,174.844421000000011 -41.041671999999998,174.874390000000005 -41.018059,174.882721000000004 -41.015006999999997,174.892486999999988 -41.013061999999998,174.901093000000003 -41.010283999999999,174.908324999999991 -41.006393000000003,174.932189999999991 -40.987502999999997,174.94165000000001 -40.976387000000003,174.945251000000013 -40.969718999999998,174.947478999999987 -40.962218999999997,175.014983999999998 -40.84861,175.09857199999999 -40.755836000000002,175.112731999999994 -40.738892,175.120789000000002 -40.726944000000003,175.127746999999999 -40.713614999999997,175.164153999999996 -40.631943,175.169708000000014 -40.616942999999999,175.171906000000007 -40.609726000000002,175.187468999999993 -40.530830000000002,175.23800700000001 -40.329726999999998,175.23135400000001 -40.280830000000002,175.201629999999994 -40.181671,175.196349999999995 -40.166946000000003,175.178314 -40.134171000000002,175.15554800000001 -40.095832999999999,175.071625000000012 -40.003059,175.055542000000003 -39.987777999999999,175.022217000000012 -39.958053999999997,174.986358999999993 -39.93,174.974120999999997 -39.920836999999999,174.960784999999987 -39.912773,174.938873 -39.902222000000002,174.923034999999999 -39.895836000000003,174.836638999999991 -39.865004999999996,174.828307999999993 -39.862502999999997,174.790802000000014 -39.854720999999998,174.781096999999988 -39.853057999999997,174.751373 -39.865555,174.740509000000003 -39.866661,174.729674999999986 -39.865836999999999,174.57607999999999 -39.829169999999998,174.558013999999986 -39.824722,174.549408 -39.822226999999998,174.542205999999993 -39.818610999999997,174.523865 -39.805,174.421356000000003 -39.726944000000003,174.410521999999986 -39.716942000000003,174.376068000000004 -39.678612,174.353577 -39.639999000000003,174.348846000000009 -39.634444999999999,174.336638999999991 -39.625557,174.316070999999994 -39.613892,174.30886799999999 -39.610283000000003,174.217194000000006 -39.579726999999998,174.208862000000011 -39.577224999999999,174.040802000000014 -39.552779999999998,173.997741999999988 -39.551392,173.986908 -39.550552000000003,173.970245000000006 -39.545279999999998,173.963012999999989 -39.541671999999998,173.871062999999992 -39.483330000000002,173.851898000000006 -39.470551,173.839966000000004 -39.461387999999999,173.810790999999995 -39.4375,173.79525799999999 -39.421944000000003,173.786652000000004 -39.409996,173.775817999999987 -39.390839,173.769713999999993 -39.376944999999999,173.762206999999989 -39.354720999999998,173.754424999999998 -39.305,173.751923000000005 -39.288612,173.751647999999989 -39.269996999999996,173.781921000000011 -39.191383000000002,173.785247999999996 -39.184998,173.800536999999991 -39.169167000000002,173.82995600000001 -39.145836000000003,173.844421000000011 -39.138336000000002,173.868010999999996 -39.128883000000002,173.892761000000007 -39.120552000000004,174.011108000000007 -39.073334000000003,174.114685000000009 -39.024445,174.187744000000009 -38.988608999999997,174.209136999999998 -38.977218999999998,174.226623999999987 -38.972496,174.248016000000007 -38.970551,174.259978999999987 -38.970275999999998,174.281372000000005 -38.969994,174.293029999999987 -38.969994,174.313292999999987 -38.972496,174.351348999999999 -38.979438999999999,174.375244000000009 -38.979163999999997,174.384704999999997 -38.977218999999998,174.392761000000007 -38.974442000000003,174.456359999999989 -38.940277000000002,174.546082000000013 -38.871941,174.557738999999998 -38.860557999999997,174.568024000000008 -38.850281000000003,174.587738000000002 -38.828887999999999,174.594421000000011 -38.815834000000002,174.603302000000014 -38.786118000000002,174.608582000000013 -38.763061999999998,174.625518999999997 -38.677779999999998,174.642486999999988 -38.590836000000003,174.681091000000009 -38.379165999999998,174.724396000000013 -38.185828999999998,174.838561999999996 -38.157218999999998,174.848021999999986 -38.156944000000003,174.85635400000001 -38.154167,174.926636000000002 -38.116112,174.932465000000008 -38.111389000000003,174.940246999999999 -38.101112,174.898590000000013 -38.075004999999997,174.877166999999986 -38.064163,174.892486999999988 -37.976387000000003,174.893585000000002 -37.969994,174.868286000000012 -37.943610999999997,174.861084000000005 -37.939995000000003,174.85522499999999 -37.944716999999997,174.834686000000005 -37.963614999999997,174.830261000000007 -37.969161999999997,174.828033000000005 -37.976661999999997,174.828583000000009 -37.995002999999997,174.822754000000003 -37.999724999999998,174.814696999999995 -38.002502,174.804137999999995 -38.001944999999999,174.797211000000004 -37.998336999999999,174.791077 -37.993614,174.786376999999987 -37.988334999999999,174.783874999999995 -37.980826999999998,174.783600000000007 -37.971663999999997,174.788025000000005 -37.868332000000002,174.788879000000009 -37.860000999999997,174.791077 -37.852783000000002,174.795532000000009 -37.846947,174.819702000000007 -37.829169999999998,174.826629999999994 -37.825279000000002,174.841339000000005 -37.818610999999997,174.872741999999988 -37.806106999999997,174.883330999999998 -37.805,174.903045999999989 -37.807502999999997,174.945251000000013 -37.810555,174.967467999999997 -37.809165999999998,174.975525000000005 -37.806389000000003,174.974975999999998 -37.75,174.974670000000003 -37.740836999999999,174.966644000000002 -37.739998,174.951355000000007 -37.743057,174.94442699999999 -37.745002999999997,174.93081699999999 -37.752502,174.906921000000011 -37.774169999999998,174.870789000000002 -37.783057999999997,174.861633000000012 -37.785004,174.848297000000002 -37.769722000000002,174.828307999999993 -37.710830999999999,174.764160000000004 -37.527779000000002,174.744415000000004 -37.487502999999997,174.724975999999998 -37.447220000000002,174.717467999999997 -37.425002999999997,174.714690999999988 -37.408607000000003,174.714690999999988 -37.399445,174.719116000000014 -37.393616000000002,174.725799999999992 -37.389999000000003,174.744415000000004 -37.385834000000003,174.760528999999991 -37.380279999999999,174.767486999999988 -37.376389000000003,174.773041000000006 -37.371665999999998,174.831635000000006 -37.308052000000004,174.840789999999998 -37.296951,174.840515000000011 -37.291389000000002,174.82995600000001 -37.290557999999997,174.821899000000002 -37.291671999999998,174.812744000000009 -37.293616999999998,174.804687999999999 -37.296393999999999,174.797760000000011 -37.300277999999999,174.766083000000009 -37.321114,174.754700000000014 -37.330559,174.751373 -37.336945,174.744965000000008 -37.359169,174.740509000000003 -37.364722999999998,174.733582000000013 -37.368606999999997,174.724120999999997 -37.368889000000003,174.717194000000006 -37.365279999999998,174.711365 -37.360557999999997,174.701629999999994 -37.349724000000002,174.69442699999999 -37.336945,174.660187000000008 -37.273311999999997,174.645813000000004 -37.236389000000003,174.639709000000011 -37.224442000000003,174.599975999999998 -37.153885000000002,174.578307999999993 -37.115555,174.569976999999994 -37.103614999999998,174.555542000000003 -37.087502,174.551909999999992 -37.080832999999998,174.549712999999997 -37.073616,174.55304000000001 -37.067222999999998,174.558593999999999 -37.0625,174.568848000000003 -37.061385999999999,174.644135000000006 -37.061110999999997,174.661376999999987 -37.065551999999997,174.664977999999991 -37.071944999999999,174.666381999999999 -37.080283999999999,174.661925999999994 -37.085830999999999,174.650542999999999 -37.095275999999998,174.646087999999992 -37.100838000000003,174.648590000000013 -37.108055,174.703856999999999 -37.197777000000002,174.733856000000003 -37.196106,174.716644000000002 -37.154167,174.72357199999999 -37.150275999999998,174.87912 -37.088889999999999,174.887482000000006 -37.059165999999998,174.795532000000009 -37.023055999999997,174.804413000000011 -36.972220999999998,174.824982000000006 -36.960830999999999,174.829407000000003 -36.955002,174.83273299999999 -36.948608,174.828033000000005 -36.943053999999997,174.818848000000003 -36.941383000000002,174.770263999999997 -36.936661,174.696625000000012 -36.93972,174.686095999999992 -36.940834000000002,174.659697999999992 -36.947495000000004,174.653045999999989 -36.951393000000003,174.641662999999994 -36.960830999999999,174.622467 -36.982216,174.619110000000006 -36.988892,174.617187999999999 -36.996108999999997,174.600525000000005 -37.022224,174.524688999999995 -37.045555,174.515533000000005 -37.045555,174.508605999999986 -37.041946000000003,174.502472000000012 -37.037506,174.498016000000007 -37.031944000000003,174.490783999999991 -37.019165,174.484679999999997 -37.005561999999998,174.459228999999993 -36.944031000000003,174.451904000000013 -36.923889000000003,174.446930000000009 -36.909163999999997,174.443024000000008 -36.893616000000002,174.439147999999989 -36.868606999999997,174.436645999999996 -36.852226000000002,174.43386799999999 -36.835555999999997,174.427764999999994 -36.812775000000002,174.422760000000011 -36.798057999999997,174.416655999999989 -36.784171999999998,174.409697999999992 -36.771385000000002,174.406096999999988 -36.765006999999997,174.390533000000005 -36.740279999999998,174.344299000000007 -36.679336999999997,174.301085999999998 -36.62722,174.284973000000008 -36.612777999999999,174.267486999999988 -36.599167,174.236908 -36.568061999999998,174.208862000000011 -36.535277999999998,174.187744000000009 -36.496948000000003,174.17804000000001 -36.467498999999997,174.177764999999994 -36.458336000000003,174.178864000000004 -36.449997000000003,174.181091000000009 -36.442497000000003,174.184417999999994 -36.436110999999997,174.189972000000012 -36.431389000000003,174.196930000000009 -36.427779999999998,174.20495600000001 -36.428612,174.24383499999999 -36.440834000000002,174.251923000000005 -36.443610999999997,174.257751000000013 -36.448051,174.300262000000004 -36.515839,174.348846000000009 -36.601944000000003,174.367919999999998 -36.629165999999998,174.370728000000014 -36.6325,174.422484999999995 -36.667220999999998,174.430542000000003 -36.668059999999997,174.453033000000005 -36.651108,174.456359999999989 -36.644722000000002,174.465515000000011 -36.582779000000002,174.465515000000011 -36.532218999999998,174.442474000000004 -36.414718999999998,174.422211000000004 -36.366112,174.41885400000001 -36.370834000000002,174.391937000000013 -36.395004,174.384978999999987 -36.398887999999999,174.377166999999986 -36.401665,174.303864000000004 -36.395279000000002,174.296935999999988 -36.391669999999998,174.285247999999996 -36.3825,174.276916999999997 -36.370552000000004,174.26998900000001 -36.357779999999998,174.268585000000002 -36.349442000000003,174.268585000000002 -36.342224000000002,174.292205999999993 -36.316947999999996,174.299988000000013 -36.314163,174.308013999999986 -36.316947999999996,174.325531000000012 -36.330283999999999,174.334686000000005 -36.332222000000002,174.36883499999999 -36.331673000000002,174.376891999999998 -36.330832999999998,174.421248999999989 -36.310611999999999,174.50692699999999 -36.267220000000002,174.518311000000011 -36.258057,174.521636999999998 -36.251396,174.519135000000006 -36.245834000000002,174.505248999999992 -36.231383999999998,174.413299999999992 -36.263061999999998,174.378296000000006 -36.286667,174.364685000000009 -36.294167000000002,174.346619000000004 -36.298057999999997,174.336365 -36.298889000000003,174.305237000000005 -36.287506,174.365233999999987 -36.260002,174.442200000000014 -36.169724000000002,174.396087999999992 -36.144447,174.396362000000011 -36.151938999999999,174.394135000000006 -36.159163999999997,174.373290999999995 -36.206389999999999,174.369965000000008 -36.213057999999997,174.358856000000003 -36.222220999999998,174.345245000000006 -36.229720999999998,174.337463000000014 -36.232773000000002,174.33273299999999 -36.229163999999997,174.307738999999998 -36.176949,174.282745000000006 -36.121108999999997,174.274993999999992 -36.118332000000002,174.239409999999992 -36.111389000000003,174.229126000000008 -36.112502999999997,174.195251000000013 -36.131110999999997,174.188568000000004 -36.144165,174.185790999999995 -36.171944000000003,174.191345000000013 -36.176392,174.19830300000001 -36.18,174.217743000000013 -36.182502999999997,174.226898000000006 -36.182502999999997,174.236084000000005 -36.180557,174.244110000000006 -36.183059999999998,174.287749999999988 -36.210281000000002,174.312468999999993 -36.236663999999998,174.314696999999995 -36.243889000000003,174.267212 -36.270279000000002,174.259430000000009 -36.273055999999997,174.251373 -36.272499000000003,174.065796000000006 -36.168334999999999,173.999114999999989 -36.121108999999997,173.994415000000004 -36.115836999999999,173.99105800000001 -36.109444000000003,173.931091000000009 -35.981940999999999,173.938568000000004 -35.934998,173.947478999999987 -35.923889000000003,173.948577999999998 -35.915550000000003,173.946075000000008 -35.908051,173.913879000000009 -35.86972,173.908324999999991 -35.874442999999999,173.903870000000012 -35.879997000000003,173.904967999999997 -35.888336000000002,173.921356000000003 -36.003059,173.980804000000006 -36.121383999999999,173.987731999999994 -36.134171000000002,173.992461999999989 -36.139724999999999,174.124390000000005 -36.263618,174.176085999999998 -36.276947,174.180542000000003 -36.282501000000003,174.198853000000014 -36.343887000000002,174.199982000000006 -36.352226000000002,174.198028999999991 -36.368606999999997,174.194702000000007 -36.375275000000002,174.189147999999989 -36.379722999999998,174.115233999999987 -36.40361,174.089966000000004 -36.411385000000003,174.080811000000011 -36.409438999999999,174.06942699999999 -36.400275999999998,174.065796000000006 -36.393889999999999,174.057465000000008 -36.374718,174.049133000000012 -36.353614999999998,174.044433999999995 -36.338889999999999,174.039703000000003 -36.323334000000003,174.031096999999988 -36.293059999999997,174.020537999999988 -36.273887999999999,173.82607999999999 -36.032501000000003,173.737457000000006 -35.933608999999997,173.727172999999993 -35.923614999999998,173.590515000000011 -35.778053,173.398865 -35.573891000000003,173.395537999999988 -35.567504999999997,173.398865 -35.553612,173.446625000000012 -35.440277000000002,173.465789999999998 -35.429169000000002,173.501923000000005 -35.419724000000002,173.506378000000012 -35.425277999999999,173.540253000000007 -35.430832000000002,173.629943999999995 -35.356667000000002,173.65554800000001 -35.322502,173.65554800000001 -35.313332000000003,173.564147999999989 -35.278053,173.556091000000009 -35.280830000000002,173.551636000000002 -35.286391999999999,173.549712999999997 -35.302779999999998,173.549712999999997 -35.321114,173.551909999999992 -35.328612999999997,173.566924999999998 -35.344161999999997,173.568024000000008 -35.361671,173.566924999999998 -35.36972,173.559143000000006 -35.372771999999998,173.439696999999995 -35.376106,173.416077 -35.384444999999999,173.410247999999996 -35.388893000000003,173.391356999999999 -35.423057999999997,173.39498900000001 -35.449722,173.396087999999992 -35.458053999999997,173.392761000000007 -35.482773000000002,173.386382999999995 -35.523330999999999,173.380524000000008 -35.528053,173.37384 -35.524169999999998,173.306915000000004 -35.449165,173.237731999999994 -35.370277000000002,173.154144000000002 -35.276665,173.103302000000014 -35.226104999999997,173.09191899999999 -35.216942000000003,173.087463000000014 -35.211387999999999,173.09191899999999 -35.1875,173.098846000000009 -35.183608999999997,173.119110000000006 -35.185555,173.12802099999999 -35.1875,173.134704999999997 -35.191108999999997,173.14498900000001 -35.191940000000002,173.152771 -35.189163,173.163879000000009 -35.179169000000002,173.168578999999994 -35.173614999999998,173.18081699999999 -35.156104999999997,173.187468999999993 -35.143332999999998,173.191924999999998 -35.128334000000002,173.196349999999995 -35.104446000000003,173.197478999999987 -35.09639,173.198577999999998 -35.078887999999999,173.198577999999998 -35.051108999999997,173.193848000000003 -35.027222000000002,173.189423000000005 -35.012779000000002,173.179413000000011 -34.993332000000002,173.175812000000008 -34.986946000000003,173.159149000000014 -34.958336000000003,173.151093000000003 -34.946663,173.137755999999996 -34.93,172.947204999999997 -34.716942000000003,172.828033000000005 -34.584442000000003,172.812468999999993 -34.568893000000003,172.722473000000008 -34.495277000000002,172.739136000000002 -34.435555,172.900817999999987 -34.414718999999998,172.911925999999994 -34.414718999999998,173.020813000000004 -34.422226000000002,173.038879000000009 -34.436942999999999,173.043304000000006 -34.517775999999998,173.039977999999991 -34.522224,173.033324999999991 -34.525832999999999,173.024414000000007 -34.527779000000002,173.016662999999994 -34.52861,173.007476999999994 -34.526947,172.997467 -34.498336999999999,172.984130999999991 -34.472771000000002,172.961914000000007 -34.465279000000002,172.955230999999998 -34.468887000000002,172.908324999999991 -34.544167000000002,172.912749999999988 -34.549728000000002,172.923858999999993 -34.558891000000003,172.936095999999992 -34.567222999999998,172.973021999999986 -34.581116000000002,173.053314 -34.665550000000003,173.057738999999998 -34.680283000000003,173.110503999999992 -34.791389000000002,173.120789000000002 -34.810555,173.128570999999994 -34.822502,173.133026 -34.828055999999997,173.13857999999999 -34.832504,173.151916999999997 -34.839995999999999,173.213593000000003 -34.871941,173.242737000000005 -34.884726999999998,173.273314999999997 -34.940834000000002,173.268859999999989 -34.946387999999999,173.262206999999989 -34.959167,173.259978999999987 -34.966659999999997,173.258881000000002 -34.974716,173.259978999999987 -34.983055,173.264709000000011 -35.014449999999997,173.269135000000006 -35.019722000000002,173.317474000000004 -35.018889999999999,173.328583000000009 -35.009444999999999,173.358856000000003 -34.98111,173.36300700000001 -34.975555,173.366364000000004 -34.968887000000002,173.373259999999988 -34.936774999999997,173.371246000000014 -34.927444,173.400817999999987 -34.863334999999999,173.426085999999998 -34.82,173.450806 -34.807777000000002,173.500274999999988 -34.864722999999998,173.499114999999989 -34.871108999999997,173.492461999999989 -34.874718,173.452453999999989 -34.887779000000002,173.443297999999999 -34.889724999999999,173.433319000000012 -34.890555999999997,173.413025000000005 -34.888893000000003,173.405243000000013 -34.892502,173.399719000000005 -34.897224,173.399719000000005 -34.906387000000002,173.402190999999988 -34.913887000000003,173.411590999999987 -34.931778,173.419128 -34.945830999999998,173.426909999999992 -34.957779000000002,173.431641000000013 -34.963332999999999,173.44165000000001 -34.973328000000002,173.454131999999987 -34.981667000000002,173.467467999999997 -34.988892,173.475525000000005 -34.991669000000002,173.493286000000012 -34.995277000000002,173.541655999999989 -34.988608999999997,173.561645999999996 -34.958893000000003,173.562468999999993 -34.950836000000002,173.566924999999998 -34.936110999999997,173.572478999999987 -34.931389000000003,173.579131999999987 -34.927779999999998,173.589416999999997 -34.928612,173.83914200000001 -35.004173000000002,174.101074000000011 -35.121108999999997,174.098297000000002 -35.161667,174.091644000000002 -35.158051,174.056641000000013 -35.155555999999997,174.021911999999986 -35.164161999999997,174.008026 -35.207504,174.008026 -35.215004,174.011382999999995 -35.221381999999998,174.018311000000011 -35.224997999999999,174.093841999999995 -35.225273,174.100525000000005 -35.228881999999999,174.143585000000002 -35.328612999999997,174.208008000000007 -35.323334000000003,174.218018 -35.322226999999998,174.247741999999988 -35.27861,174.319976999999994 -35.232773000000002,174.383881000000002 -35.337775999999998,174.461638999999991 -35.445273999999998,174.491913000000011 -35.485275,174.575806 -35.601944000000003,174.577179 -35.610000999999997,174.577147999999994 -35.618088,174.569976999999994 -35.648055999999997,174.563292999999987 -35.651665,174.530272999999994 -35.649445,174.520263999999997 -35.648612999999997,174.513306 -35.645004,174.505248999999992 -35.642502,174.479126000000008 -35.641945,174.47357199999999 -35.646393000000003,174.474975999999998 -35.654716,174.518311000000011 -35.724167,174.523041000000006 -35.729438999999999,174.554137999999995 -35.750281999999999,174.561919999999986 -35.753059,174.583862000000011 -35.764724999999999,174.60244800000001 -35.844444000000003,174.596924 -35.849167,174.58914200000001 -35.851944000000003,174.577758999999986 -35.852226000000002,174.560790999999995 -35.847777999999998,174.554961999999989 -35.843330000000002,174.538574000000011 -35.819450000000003,174.523314999999997 -35.796669,174.519713999999993 -35.790283000000002,174.49105800000001 -35.769447,174.361908 -35.723328000000002,174.357451999999995 -35.72361,174.34857199999999 -35.734726000000002,174.346924 -35.833061,174.350525000000005 -35.839438999999999,174.35522499999999 -35.845001000000003,174.360779000000008 -35.849442000000003,174.381348000000003 -35.851112,174.384704999999997 -35.844718999999998,174.385528999999991 -35.828887999999999,174.391083000000009 -35.824173000000002,174.398865 -35.821387999999999,174.437468999999993 -35.822777000000002,174.476074000000011 -35.824173000000002,174.486358999999993 -35.824722,174.519713999999993 -35.844718999999998,174.525542999999999 -35.849167,174.524414000000007 -35.855559999999997,174.521362000000011 -35.862220999999998,174.501373 -35.889999000000003,174.496917999999994 -35.895553999999997,174.487182999999987 -35.915000999999997,174.495513999999986 -35.988608999999997,174.498016000000007 -35.994163999999998,174.514160000000004 -36.008614,174.56942699999999 -36.037224000000002,174.578583000000009 -36.038894999999997,174.587738000000002 -36.038894999999997,174.596619000000004 -36.036667,174.606902999999988 -36.037506,174.612731999999994 -36.042228999999999,174.622192000000013 -36.053055,174.62912 -36.065834000000002,174.629394999999988 -36.075004999999997,174.616364000000004 -36.100861000000002)),((171.185241999999988 -44.938332000000003,171.182129000000003 -44.94173,171.175017999999994 -44.949902000000002,171.167923000000002 -44.959850000000003,171.165436 -44.966599000000002,171.164703000000003 -44.970275999999998,171.163299999999992 -44.978332999999999,171.149719000000005 -44.996665999999998,171.07995600000001 -45.067222999999998,171.02664200000001 -45.103332999999999,170.975525000000005 -45.151108,170.966063999999989 -45.163055,170.961914000000007 -45.169167000000002,170.921630999999991 -45.243057,170.873566000000011 -45.358055,170.873290999999995 -45.367218,170.876891999999998 -45.373885999999999,170.871338000000009 -45.424171,170.859955000000014 -45.487502999999997,170.855804000000006 -45.493889000000003,170.750274999999988 -45.61972,170.674682999999987 -45.745002999999997,170.616913000000011 -45.839438999999999,170.55886799999999 -45.881667999999998,170.554413000000011 -45.888053999999997,170.555542000000003 -45.896110999999998,170.591063999999989 -45.894165,170.600525000000005 -45.891669999999998,170.608582000000013 -45.888053999999997,170.658600000000007 -45.858612,170.718018 -45.817504999999997,170.724670000000003 -45.813057,170.773314999999997 -45.782775999999998,170.781096999999988 -45.786391999999999,170.790802000000014 -45.806946000000003,170.790802000000014 -45.84639,170.788879000000009 -45.863892,170.783051 -45.878334000000002,170.776366999999993 -45.882773999999998,170.699982000000006 -45.911667,170.664429000000013 -45.908332999999999,170.57330300000001 -45.916663999999997,170.550536999999991 -45.919167000000002,170.484406000000007 -45.926949,170.452453999999989 -45.931946000000003,170.424408 -45.939438000000003,170.382721000000004 -45.956108,170.342467999999997 -45.97361,170.315246999999999 -45.991385999999999,170.309692000000013 -45.996948000000003,170.294433999999995 -46.013893000000003,170.281646999999992 -46.029442000000003,170.263610999999997 -46.051940999999999,170.256378000000012 -46.065551999999997,170.253051999999997 -46.081947,170.252472000000012 -46.09111,170.254424999999998 -46.107779999999998,170.252777000000009 -46.115836999999999,170.240783999999991 -46.146949999999997,170.237731999999994 -46.154167,170.226623999999987 -46.165000999999997,170.214416999999997 -46.174720999999998,170.193848000000003 -46.188048999999999,170.169433999999995 -46.198608,170.067748999999992 -46.246665999999998,169.911925999999994 -46.340279000000002,169.863585999999998 -46.371383999999999,169.858001999999999 -46.376663,169.849396000000013 -46.389442000000003,169.848021999999986 -46.416946000000003,169.849975999999998 -46.433326999999998,169.852172999999993 -46.440834000000002,169.853850999999992 -46.457504,169.850799999999992 -46.464722000000002,169.845245000000006 -46.469994,169.701904000000013 -46.558052000000004,169.631348000000003 -46.581947,169.458008000000007 -46.623328999999998,169.266388000000006 -46.656387000000002,169.133026 -46.670836999999999,169.107727000000011 -46.669167000000002,169.097197999999992 -46.666946000000003,169.084411999999986 -46.657501000000003,169.067200000000014 -46.635002,169.061919999999986 -46.675002999999997,169.053864000000004 -46.678612,169.008026 -46.680832000000002,168.883330999999998 -46.667777999999998,168.878296000000006 -46.661942000000003,168.861908 -46.628334000000002,168.862457000000006 -46.619446000000003,168.864409999999992 -46.611114999999998,168.864959999999996 -46.603889000000002,168.844970999999987 -46.563614,168.835784999999987 -46.560555,168.823853000000014 -46.561110999999997,168.733306999999996 -46.577499000000003,168.640533000000005 -46.603889000000002,168.633605999999986 -46.606392,168.614685000000009 -46.611114999999998,168.593018 -46.614165999999997,168.568848000000003 -46.615004999999996,168.516937000000013 -46.614165999999997,168.492737000000005 -46.613334999999999,168.442138999999997 -46.601500999999999,168.436630000000008 -46.599666999999997,168.446625000000012 -46.584003000000003,168.442200000000014 -46.575004999999997,168.454407000000003 -46.574447999999997,168.490509000000003 -46.573059,168.502472000000012 -46.574173000000002,168.506103999999993 -46.578887999999999,168.499114999999989 -46.583328000000002,168.505553999999989 -46.588051,168.551636000000002 -46.594444000000003,168.561371000000008 -46.591942000000003,168.566924999999998 -46.586661999999997,168.563599000000011 -46.580002,168.550812000000008 -46.570557,168.541655999999989 -46.567504999999997,168.391356999999999 -46.540000999999997,168.361908 -46.544449,168.353577 -46.547783000000003,168.351623999999987 -46.556106999999997,168.352172999999993 -46.564444999999999,168.362731999999994 -46.583885000000002,168.348236000000014 -46.582165000000003,168.352904999999993 -46.584499,168.359267999999986 -46.585830999999999,168.365082 -46.592666999999999,168.367248999999987 -46.596668,168.367599000000013 -46.601497999999999,168.364928999999989 -46.605331,168.35775799999999 -46.604500000000002,168.351409999999987 -46.603164999999997,168.275269000000009 -46.557777000000002,168.269135000000006 -46.535561,168.268311000000011 -46.529167,168.27664200000001 -46.525832999999999,168.286102 -46.523330999999999,168.307738999999998 -46.520553999999997,168.318297999999999 -46.520836000000003,168.318848000000003 -46.529167,168.321075000000008 -46.536667,168.328856999999999 -46.540557999999997,168.339416999999997 -46.539169,168.386658000000011 -46.497779999999999,168.392486999999988 -46.492226000000002,168.395537999999988 -46.485000999999997,168.396087999999992 -46.477775999999999,168.394135000000006 -46.470275999999998,168.37384 -46.421944000000003,168.36883499999999 -46.416106999999997,168.359679999999997 -46.415000999999997,168.350249999999988 -46.417503000000004,168.250274999999988 -46.400832999999999,168.211090000000013 -46.355277999999998,168.206085000000002 -46.351394999999997,168.194702000000007 -46.345551,168.185516000000007 -46.342498999999997,168.174988000000013 -46.340279000000002,168.116364000000004 -46.343612999999998,168.063873 -46.351669,167.955535999999995 -46.371383999999999,167.893035999999995 -46.387222,167.850799999999992 -46.399445,167.832184000000012 -46.398612999999997,167.824401999999992 -46.394447,167.753875999999991 -46.333885000000002,167.776916999999997 -46.312775000000002,167.781372000000005 -46.306389000000003,167.783600000000007 -46.298340000000003,167.781372000000005 -46.290840000000003,167.778045999999989 -46.284171999999998,167.701904000000013 -46.209442000000003,167.596924 -46.166389000000002,167.556641000000013 -46.156387000000002,167.546356000000003 -46.154167,167.534424 -46.152779000000002,167.483032000000009 -46.149726999999999,167.471069 -46.149994,167.460236000000009 -46.151389999999999,167.451904000000013 -46.154716,167.446075000000008 -46.159996,167.415526999999997 -46.204720000000002,167.356628 -46.254447999999996,167.280272999999994 -46.273055999999997,167.261108000000007 -46.267775999999998,167.238555999999988 -46.263893000000003,167.086638999999991 -46.240555,167.001373 -46.229163999999997,166.966063999999989 -46.224716,166.949982000000006 -46.223885000000003,166.915253000000007 -46.226104999999997,166.883026 -46.229996,166.836365 -46.232498,166.823028999999991 -46.231667000000002,166.768035999999995 -46.22361,166.726348999999999 -46.214165,166.717467999999997 -46.210830999999999,166.705230999999998 -46.201110999999997,166.670806999999996 -46.161667,166.67025799999999 -46.15361,166.684417999999994 -46.145004,166.693848000000003 -46.142775999999998,166.709411999999986 -46.135277000000002,166.738861000000014 -46.119163999999998,166.761230000000012 -46.093612999999998,166.784911999999991 -46.064945000000002,166.804748999999987 -46.033279,166.82995600000001 -46.003891000000003,166.854674999999986 -45.994163999999998,166.886932000000002 -45.990279999999998,166.943297999999999 -45.956108,166.949127000000004 -45.950836000000002,166.946930000000009 -45.945273999999998,166.939147999999989 -45.944716999999997,166.929687999999999 -45.947220000000002,166.836365 -45.981383999999998,166.828033000000005 -45.984444000000003,166.791350999999992 -46.005004999999997,166.785797000000002 -46.010283999999999,166.781096999999988 -46.016396,166.759308000000004 -46.035553,166.762969999999996 -46.038387,166.764969000000008 -46.042392999999997,166.763656999999995 -46.047221999999998,166.760162000000008 -46.050392000000002,166.740982000000002 -46.066059000000003,166.737793000000011 -46.066558999999998,166.670532000000009 -46.087218999999997,166.615783999999991 -46.090836000000003,166.613585999999998 -46.086387999999999,166.617461999999989 -46.059722999999998,166.621062999999992 -46.052498,166.640807999999993 -46.015006999999997,166.661652000000004 -45.991942999999999,166.625792999999987 -45.967216,166.492461999999989 -46.013061999999998,166.484406000000007 -46.014449999999997,166.474975999999998 -46.002785000000003,166.467194000000006 -45.990555,166.465239999999994 -45.983055,166.464690999999988 -45.839438999999999,166.468841999999995 -45.823059,166.472473000000008 -45.815834000000002,166.476898000000006 -45.809722999999998,166.537475999999998 -45.798889000000003,166.613861000000014 -45.801108999999997,166.652190999999988 -45.800277999999999,166.699982000000006 -45.798889000000003,166.881348000000003 -45.779998999999997,166.890807999999993 -45.777779000000002,166.974120999999997 -45.735000999999997,166.987182999999987 -45.709724,166.923034999999999 -45.705832999999998,166.912475999999998 -45.705275999999998,166.887482000000006 -45.705002,166.854126000000008 -45.707779000000002,166.825806 -45.714722000000002,166.809417999999994 -45.721381999999998,166.787475999999998 -45.689995000000003,166.775817999999987 -45.662773,166.81153900000001 -45.617942999999997,166.811217999999997 -45.613109999999999,166.812531000000007 -45.608111999999998,166.816710999999998 -45.605606000000002,166.869689999999991 -45.588779000000002,166.881026999999989 -45.586112999999997,166.88736 -45.585278000000002,166.895203000000009 -45.585608999999998,166.901366999999993 -45.587108999999998,166.912871999999993 -45.590946000000002,166.980255 -45.578612999999997,166.991913000000011 -45.580002,167.0 -45.576949999999997,167.005829000000006 -45.571671000000002,167.032470999999987 -45.527779000000002,167.041350999999992 -45.501396,166.989685000000009 -45.519165,166.891693000000004 -45.544724000000002,166.796875 -45.569389,166.791199000000006 -45.570720999999999,166.784836000000013 -45.571556,166.777023000000014 -45.571219999999997,166.710509999999999 -45.579445,166.704407000000003 -45.574447999999997,166.697204999999997 -45.554718,166.699127000000004 -45.546669,166.757476999999994 -45.425277999999999,166.801361000000014 -45.353614999999998,166.821625000000012 -45.320557,166.86883499999999 -45.279724000000002,166.880797999999999 -45.279167,167.008330999999998 -45.341667,167.038299999999992 -45.357779999999998,167.146941999999996 -45.427222999999998,167.16885400000001 -45.472496,167.205230999999998 -45.477775999999999,167.211914000000007 -45.475273,167.21414200000001 -45.467216,167.209411999999986 -45.461387999999999,167.173584000000005 -45.422775,167.158019999999993 -45.406661999999997,167.134978999999987 -45.386116,167.12912 -45.381385999999999,167.115509000000003 -45.372222999999998,167.097747999999996 -45.366112,167.087463000000014 -45.363616999999998,167.061645999999996 -45.345001000000003,167.051085999999998 -45.333328000000002,167.081421000000006 -45.325333,167.08407600000001 -45.321666999999998,167.092407000000009 -45.316498000000003,167.097243999999989 -45.314498999999998,167.114227 -45.310333,167.163574000000011 -45.302833999999997,167.169922000000014 -45.302998000000002,167.173584000000005 -45.305999999999997,167.176422000000002 -45.309330000000003,167.17756700000001 -45.313834999999997,167.212738000000002 -45.313332000000003,167.218841999999995 -45.318336000000002,167.232178000000005 -45.327224999999999,167.239685000000009 -45.331116000000002,167.248566000000011 -45.334167,167.260254000000003 -45.335830999999999,167.270813000000004 -45.334442000000003,167.301636000000002 -45.329445,167.309692000000013 -45.326110999999997,167.307738999999998 -45.318610999999997,167.300262000000004 -45.314444999999999,167.19464099999999 -45.271445999999997,167.138290000000012 -45.268943999999998,167.099471999999992 -45.272114000000002,167.094146999999992 -45.271278000000002,167.08964499999999 -45.268776000000003,167.002196999999995 -45.201110999999997,166.996917999999994 -45.145836000000003,167.146362000000011 -45.001671000000002,167.198577999999998 -44.956108,167.204407000000003 -44.951110999999997,167.228302000000014 -44.930832000000002,167.24105800000001 -44.921387000000003,167.260528999999991 -44.907501000000003,167.267486999999988 -44.903053,167.312744000000009 -44.875,167.320800999999989 -44.871383999999999,167.393462999999997 -44.862999000000002,167.398987000000005 -44.861496000000002,167.404312000000004 -44.863498999999997,167.421798999999993 -44.894168999999998,167.422974000000011 -44.898665999999999,167.420638999999994 -44.908496999999997,167.417968999999999 -44.912166999999997,167.440796000000006 -44.928612,167.439972000000012 -44.9375,167.441924999999998 -44.945,167.459686000000005 -44.99472,167.497741999999988 -45.003891000000003,167.507202000000007 -45.001396,167.508224000000013 -45.0,167.511658000000011 -44.995277000000002,167.511108000000007 -44.986946000000003,167.47908000000001 -44.903446000000002,167.465912000000003 -44.876441999999997,167.462752999999992 -44.867947,167.461578000000003 -44.863444999999999,167.460097999999988 -44.853946999999998,167.459411999999986 -44.843944999999998,167.459914999999995 -44.838444000000003,167.448577999999998 -44.795279999999998,167.453033000000005 -44.788894999999997,167.458587999999992 -44.783614999999998,167.59970100000001 -44.683883999999999,167.743010999999996 -44.611671,167.838866999999993 -44.498610999999997,167.850249999999988 -44.488052000000003,167.949982000000006 -44.40361,167.963593000000003 -44.395004,168.034973000000008 -44.353614999999998,168.12802099999999 -44.316947999999996,168.141662999999994 -44.308052000000004,168.144713999999993 -44.300834999999999,168.144135000000006 -44.292503000000004,168.124099999999999 -44.251404,168.143311000000011 -44.253059,168.153594999999996 -44.251396,168.169708000000014 -44.24472,168.288299999999992 -44.172775,168.29385400000001 -44.167503000000004,168.336638999999991 -44.123885999999999,168.339966000000004 -44.116661,168.337738000000002 -44.109169,168.334411999999986 -44.102783000000002,168.336365 -44.094444000000003,168.369689999999991 -44.043334999999999,168.374968999999993 -44.037781000000003,168.383026 -44.034447,168.402771 -44.029724000000002,168.672211000000004 -43.987777999999999,168.676909999999992 -43.993614,168.683043999999995 -43.998336999999999,168.690246999999999 -44.002228000000002,168.715239999999994 -44.012222,168.723021999999986 -44.012504999999997,168.753875999999991 -44.010002,168.764160000000004 -44.008614,168.824401999999992 -43.988334999999999,168.858582000000013 -43.976661999999997,168.866364000000004 -43.973328000000002,168.879669000000007 -43.964447,168.885254000000003 -43.959167,168.961914000000007 -43.90361,169.080765000000014 -43.848472999999998,169.142212 -43.794167000000002,169.224396000000013 -43.743332000000002,169.271636999999998 -43.722496,169.387482000000006 -43.679169000000002,169.491318000000007 -43.643467,169.539153999999996 -43.633614,169.62661700000001 -43.613892,169.64498900000001 -43.608893999999999,169.652771 -43.605559999999997,169.660521999999986 -43.601944000000003,169.721619000000004 -43.573334000000003,169.728302000000014 -43.568893000000003,169.739136000000002 -43.558052000000004,169.767486999999988 -43.522773999999998,169.790526999999997 -43.496665999999998,169.871062999999992 -43.406661999999997,169.884154999999993 -43.397781000000002,169.961638999999991 -43.371941,170.021911999999986 -43.352500999999997,170.028594999999996 -43.347777999999998,170.033874999999995 -43.342498999999997,170.038025000000005 -43.336112999999997,170.049408 -43.306946000000003,170.111358999999993 -43.254173000000002,170.288299999999992 -43.107779999999998,170.418029999999987 -43.052498,170.523041000000006 -43.010559,170.531921000000011 -43.008057,170.583037999999988 -42.990555,170.674347000000012 -42.958739999999999,170.704407000000003 -42.945830999999998,170.750549000000007 -42.924720999999998,170.781096999999988 -42.910553,170.794128 -42.901389999999999,171.065796000000006 -42.648055999999997,171.108306999999996 -42.608055,171.149719000000005 -42.563614,171.153594999999996 -42.55722,171.196075000000008 -42.476661999999997,171.225799999999992 -42.433608999999997,171.230255 -42.40889,171.235779000000008 -42.394165,171.247467 -42.375,171.260254000000003 -42.366112,171.270537999999988 -42.355003000000004,171.297760000000011 -42.310279999999999,171.304413000000011 -42.296669,171.309692000000013 -42.281944000000003,171.31665000000001 -42.249724999999998,171.321075000000008 -42.224716,171.322754000000003 -42.207222000000002,171.324401999999992 -42.18972,171.326355000000007 -42.172226000000002,171.329131999999987 -42.155830000000002,171.343841999999995 -42.110832000000002,171.361084000000005 -42.067779999999999,171.461638999999991 -41.859726000000002,171.51080300000001 -41.764449999999997,171.533051 -41.766396,171.557738999999998 -41.766663,171.569121999999993 -41.766112999999997,171.650817999999987 -41.761391000000003,171.663025000000005 -41.757781999999999,171.685790999999995 -41.746948000000003,171.790526999999997 -41.696387999999999,171.85522499999999 -41.652779000000002,171.886658000000011 -41.629997000000003,171.942200000000014 -41.550277999999999,172.02276599999999 -41.443053999999997,172.053864000000004 -41.417503000000004,172.064972000000012 -41.40361,172.122192000000013 -41.277779000000002,172.111633000000012 -41.236114999999998,172.10522499999999 -41.153053,172.106078999999994 -40.911385000000003,172.10635400000001 -40.893059,172.108856000000003 -40.885559,172.113861000000014 -40.879997000000003,172.186645999999996 -40.813332000000003,172.218567000000007 -40.785834999999999,172.22470100000001 -40.781109,172.255248999999992 -40.776947,172.263884999999988 -40.774169999999998,172.271362000000011 -40.770553999999997,172.299408 -40.755004999999997,172.348297000000002 -40.727493000000003,172.382721000000004 -40.698334000000003,172.426909999999992 -40.657775999999998,172.478302000000014 -40.613892,172.513320999999991 -40.598441999999999,172.517639000000003 -40.596783000000002,172.523482999999999 -40.597946,172.522644000000014 -40.602943000000003,172.521132999999992 -40.607277000000003,172.520813000000004 -40.625,172.519440000000003 -40.631385999999999,172.525542999999999 -40.6325,172.534149000000014 -40.631667999999998,172.571899000000002 -40.617775000000002,172.596343999999988 -40.601394999999997,172.62802099999999 -40.573891000000003,172.631621999999993 -40.567222999999998,172.631621999999993 -40.559998,172.608582000000013 -40.556946000000003,172.601348999999999 -40.558891000000003,172.597014999999999 -40.553333000000002,172.589690999999988 -40.558838000000002,172.583862000000011 -40.560004999999997,172.581024000000014 -40.556671,172.581848000000008 -40.551665999999997,172.589843999999999 -40.541172000000003,172.627166999999986 -40.511947999999997,172.633330999999998 -40.509171000000002,172.661376999999987 -40.502785000000003,172.712188999999995 -40.495552000000004,172.817748999999992 -40.504173000000002,172.861358999999993 -40.507781999999999,172.981628 -40.527222000000002,172.991332999999997 -40.529167,172.989959999999996 -40.53389,172.978026999999997 -40.53389,172.945251000000013 -40.530830000000002,172.895263999999997 -40.524445,172.797211000000004 -40.516112999999997,172.739959999999996 -40.516945,172.731628 -40.519722000000002,172.656921000000011 -40.653328000000002,172.701355000000007 -40.748336999999999,172.855804000000006 -40.853057999999997,172.865509000000003 -40.853057999999997,172.875244000000009 -40.851112,172.907195999999999 -40.828887999999999,172.930266999999986 -40.802222999999998,172.935241999999988 -40.796669,172.976623999999987 -40.781944000000003,172.985229000000004 -40.781112999999998,173.002196999999995 -40.786667,173.008330999999998 -40.791114999999998,173.013306 -40.796669,173.020537999999988 -40.809722999999998,173.051085999999998 -40.869446000000003,173.059692000000013 -40.962775999999998,173.059692000000013 -40.971938999999999,173.056091000000009 -40.978606999999997,173.031646999999992 -41.027495999999999,173.075806 -41.291114999999998,173.079680999999994 -41.297500999999997,173.085784999999987 -41.302222999999998,173.105529999999987 -41.313332000000003,173.168029999999987 -41.316108999999997,173.188873 -41.313332000000003,173.198853000000014 -41.311385999999999,173.207184000000012 -41.308608999999997,173.272217000000012 -41.274445,173.278320000000008 -41.269722000000002,173.32607999999999 -41.222496,173.340515000000011 -41.205832999999998,173.351623999999987 -41.195549,173.377166999999986 -41.178055,173.426085999999998 -41.150275999999998,173.598021999999986 -41.053612,173.606628 -41.052498,173.639709000000011 -41.073616,173.672760000000011 -41.070557,173.720519999999993 -41.060279999999999,173.727753000000007 -41.056389000000003,173.739959999999996 -41.047226000000002,173.744689999999991 -41.032501000000003,173.743286000000012 -41.024169999999998,173.738281 -41.018608,173.72744800000001 -41.019447,173.718841999999995 -41.022499000000003,173.696930000000009 -41.033614999999998,173.690796000000006 -41.038338000000003,173.682189999999991 -41.041114999999998,173.676085999999998 -41.036391999999999,173.673584000000005 -41.029167,173.674682999999987 -41.020836000000003,173.678314 -41.014449999999997,173.696625000000012 -41.000281999999999,173.751373 -40.976944000000003,173.800262000000004 -40.969161999999997,173.913299999999992 -40.931671,173.984679999999997 -40.896949999999997,173.994415000000004 -40.896667,174.02276599999999 -40.913055,174.027771 -40.91861,174.030272999999994 -40.925834999999999,174.03054800000001 -40.935271999999998,174.02941899999999 -40.943610999999997,174.022217000000012 -40.947220000000002,173.929961999999989 -40.992226000000002,173.832184000000012 -40.995002999999997,173.821075000000008 -40.994163999999998,173.782195999999999 -41.009171000000002,173.778594999999996 -41.015555999999997,173.769713999999993 -41.09861,173.778594999999996 -41.114449,173.794433999999995 -41.109444000000003,173.822204999999997 -41.080832999999998,173.821899000000002 -41.062218,173.836638999999991 -41.055,173.846343999999988 -41.053055,173.93081699999999 -41.049446000000003,173.946625000000012 -41.055832000000002,173.953033000000005 -41.060555,173.917755 -41.087502,173.887482000000006 -41.103332999999999,173.848846000000009 -41.144165,173.820526 -41.245834000000002,173.763306 -41.267502,173.76080300000001 -41.273055999999997,173.775817999999987 -41.289726000000002,173.788025000000005 -41.290557999999997,173.806365999999997 -41.289444000000003,174.03720100000001 -41.218330000000002,174.09970100000001 -41.198334000000003,174.128845000000013 -41.187218,174.133605999999986 -41.181671,174.133605999999986 -41.176108999999997,174.126068000000004 -41.174171,174.008605999999986 -41.175277999999999,174.001099000000011 -41.178885999999999,174.001373 -41.186385999999999,174.000274999999988 -41.194716999999997,173.993010999999996 -41.198334000000003,173.981902999999988 -41.199440000000003,173.932738999999998 -41.199997000000003,173.908324999999991 -41.199997000000003,173.899719000000005 -41.197495000000004,173.893585000000002 -41.192771999999998,173.887206999999989 -41.169724000000002,173.88580300000001 -41.161667,173.888031000000012 -41.154167,173.89776599999999 -41.133614,173.902466000000004 -41.128334000000002,174.032745000000006 -40.999724999999998,174.084411999999986 -41.021385000000002,174.094116000000014 -41.023330999999999,174.246338000000009 -41.044724000000002,174.258330999999998 -41.035277999999998,174.299408 -41.003616,174.315246999999999 -41.000557,174.323853000000014 -41.003334000000002,174.323853000000014 -41.010834000000003,174.321625000000012 -41.018059,174.209960999999993 -41.197495000000004,174.161376999999987 -41.225555,174.152771 -41.226661999999997,174.114685000000009 -41.231383999999998,174.052185000000009 -41.235000999999997,174.02664200000001 -41.236114999999998,174.053864000000004 -41.254173000000002,174.206359999999989 -41.269447,174.214966000000004 -41.266663,174.291655999999989 -41.238892,174.303588999999988 -41.229720999999998,174.320800999999989 -41.220275999999998,174.326904000000013 -41.222771000000002,174.288574000000011 -41.276947,174.249114999999989 -41.322502,174.241637999999995 -41.326110999999997,174.231902999999988 -41.328055999999997,174.208587999999992 -41.329445,174.193572999999986 -41.320281999999999,174.155243000000013 -41.305,174.148041000000006 -41.308608999999997,174.111633000000012 -41.336661999999997,174.052764999999994 -41.421112,174.049133000000012 -41.427779999999998,174.044433999999995 -41.442497000000003,174.045806999999996 -41.450836000000002,174.049988000000013 -41.466392999999997,174.063873 -41.493057,174.084136999999998 -41.526108,174.097473000000008 -41.519447,174.096069 -41.511116,174.100799999999992 -41.505561999999998,174.108306999999996 -41.509171000000002,174.114685000000009 -41.513893000000003,174.125792999999987 -41.523887999999999,174.151093000000003 -41.551392,174.176085999999998 -41.578612999999997,174.178864000000004 -41.586112999999997,174.179961999999989 -41.594444000000003,174.179137999999995 -41.602783000000002,174.174133000000012 -41.608336999999999,174.163299999999992 -41.618606999999997,174.157195999999999 -41.623328999999998,174.193024000000008 -41.685555,174.287749999999988 -41.734444000000003,174.291655999999989 -41.740836999999999,174.289153999999996 -41.748336999999999,174.283324999999991 -41.762222,174.236358999999993 -41.837218999999997,174.212188999999995 -41.865279999999998,174.201355000000007 -41.875557,174.184143000000006 -41.890555999999997,174.17804000000001 -41.895004,174.164703000000003 -41.90361,174.157195999999999 -41.907218999999998,174.143585000000002 -41.915832999999999,174.088561999999996 -41.957779000000002,174.009154999999993 -42.027495999999999,173.979674999999986 -42.061110999999997,173.965239999999994 -42.086945,173.959136999999998 -42.100838000000003,173.954407000000003 -42.115555,173.953307999999993 -42.123885999999999,173.953583000000009 -42.133330999999998,173.956359999999989 -42.166389000000002,173.933319000000012 -42.196944999999999,173.928314 -42.202499000000003,173.884154999999993 -42.243614,173.87802099999999 -42.248055,173.870513999999986 -42.251944999999999,173.86300700000001 -42.255561999999998,173.834686000000005 -42.271385000000002,173.801361000000014 -42.293059999999997,173.794983000000002 -42.297500999999997,173.568572999999986 -42.476944000000003,173.558593999999999 -42.487777999999999,173.541350999999992 -42.511947999999997,173.533874999999995 -42.525002,173.531372000000005 -42.532218999999998,173.500823999999994 -42.599724000000002,173.480804000000006 -42.621941,173.466063999999989 -42.656944000000003,173.459960999999993 -42.670836999999999,173.448853000000014 -42.690277000000002,173.387755999999996 -42.793616999999998,173.351623999999987 -42.840836000000003,173.328033000000005 -42.898887999999999,173.328033000000005 -42.906387000000002,173.325806 -42.913612,173.285521999999986 -42.958053999999997,173.106902999999988 -43.057777000000002,173.099396000000013 -43.061385999999999,173.090515000000011 -43.064444999999999,173.026366999999993 -43.081947,172.975799999999992 -43.09111,172.953033000000005 -43.092773,172.935516000000007 -43.098334999999999,172.92025799999999 -43.105834999999999,172.838012999999989 -43.148055999999997,172.818024000000008 -43.160828000000002,172.797760000000011 -43.183059999999998,172.772217000000012 -43.219718999999998,172.76080300000001 -43.239165999999997,172.758026 -43.246665999999998,172.726944000000003 -43.415539000000003,172.726593000000008 -43.423355,172.775817999999987 -43.612220999999998,172.894135000000006 -43.61972,172.90554800000001 -43.620834000000002,173.059692000000013 -43.653053,173.100525000000005 -43.697220000000002,173.105529999999987 -43.703612999999997,173.114409999999992 -43.741385999999999,173.116913000000011 -43.762504999999997,173.116913000000011 -43.769996999999996,173.112182999999987 -43.825004999999997,173.110779000000008 -43.833328000000002,173.091644000000002 -43.856392,173.058593999999999 -43.871108999999997,173.006088000000005 -43.869498999999998,173.002242999999993 -43.868999000000002,172.999236999999994 -43.865668999999997,172.990905999999995 -43.849670000000003,172.965239999999994 -43.802222999999998,172.961365 -43.764449999999997,172.958862000000011 -43.756950000000003,172.951355000000007 -43.755279999999999,172.939972000000012 -43.756110999999997,172.927185000000009 -43.766112999999997,172.921906000000007 -43.771667,172.920532000000009 -43.824173000000002,172.920532000000009 -43.833328000000002,172.917572000000007 -43.869221000000003,172.923584000000005 -43.875884999999997,172.931243999999992 -43.881390000000003,172.937408000000005 -43.887886000000002,172.938904000000008 -43.892384,172.938247999999987 -43.896220999999997,172.870789000000002 -43.904442000000003,172.861633000000012 -43.901389999999999,172.811919999999986 -43.882216999999997,172.804413000000011 -43.878334000000002,172.745789000000002 -43.837775999999998,172.740783999999991 -43.832222000000002,172.736908 -43.825836000000002,172.715239999999994 -43.808334000000002,172.642761000000007 -43.772224,172.513031000000012 -43.729438999999999,172.495238999999998 -43.723885000000003,172.483582000000013 -43.722771000000002,172.472197999999992 -43.72361,172.424988000000013 -43.733612,172.413299999999992 -43.743614,172.390258999999986 -43.763893000000003,172.384978999999987 -43.77861,172.382445999999987 -43.795006,172.383330999999998 -43.8125,172.384704999999997 -43.820838999999999,172.394713999999993 -43.850281000000003,172.393311000000011 -43.858612,172.386932000000002 -43.863334999999999,172.367461999999989 -43.867775000000002,172.297211000000004 -43.881110999999997,172.286925999999994 -43.883057,172.275542999999999 -43.883887999999999,172.189696999999995 -43.909163999999997,172.050812000000008 -43.965279000000002,171.978577 -43.995834000000002,171.955230999999998 -44.006667999999998,171.941070999999994 -44.015006999999997,171.782470999999987 -44.076949999999997,171.654694000000006 -44.122498,171.583587999999992 -44.153885000000002,171.547211000000004 -44.173889000000003,171.538483000000014 -44.178775999999999,171.355559999999997 -44.285491999999998,171.346465999999992 -44.292186999999998,171.342467999999997 -44.295555,171.319976999999994 -44.316391000000003,171.293578999999994 -44.343612999999998,171.285521999999986 -44.356392,171.278594999999996 -44.369995000000003,171.271911999999986 -44.383887999999999,171.269135000000006 -44.391112999999997,171.275542999999999 -44.395836000000003,171.279144000000002 -44.402495999999999,171.278594999999996 -44.420836999999999,171.277190999999988 -44.428885999999999,171.275542999999999 -44.437218,171.26998900000001 -44.451942000000003,171.263306 -44.465553,171.254974000000004 -44.478332999999999,171.214966000000004 -44.533057999999997,171.208313000000004 -44.537506,171.200531000000012 -44.541114999999998,171.196075000000008 -44.560279999999999,171.192200000000014 -44.645836000000003,171.193024000000008 -44.663330000000002,171.20495600000001 -44.700279000000002,171.21414200000001 -44.739165999999997,171.215239999999994 -44.747498,171.207184000000012 -44.851112,171.198577999999998 -44.919998,171.195800999999989 -44.927498,171.185241999999988 -44.938332000000003)))
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/state.mysql.sql b/webapp/django/contrib/gis/tests/geoapp/sql/state.mysql.sql
deleted file mode 100644
index 0796306..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/state.mysql.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- State border data courtesy of U.S. Census Bureau Cartographic Boundary Files: http://www.census.gov/geo/www/cob/st2000.html
--- Boundary file data is a product of the U.S. federal government and is public domain.  See 17 U.S.C. 105.
--- INSERT INTO geoapp_state (`name`, `poly`) VALUES ('Puerto Rico', NULL); MySQL spatial indices can't handle NULL values :-/
-INSERT INTO geoapp_state (`name`, `poly`) VALUES ('Colorado', GeomFromText('POLYGON ((-107.918420999999981 41.002035999999997,-107.69133582431418 41.002104250342249,-107.625624000000002 41.002124000000002,-107.521505363272311 41.002506710525772,-107.367442999999994 41.003073,-107.317794462401125 41.002967213367114,-107.305312956219666 41.00294061889776,-107.241193999999993 41.002803999999998,-107.000606000000005 41.003443999999995,-106.857772999999995 41.002662999999991,-106.453858999999994 41.002056999999994,-106.439563000000007 41.001978,-106.437419000000006 41.001794999999994,-106.430949999999996 41.001751999999996,-106.391852 41.001176,-106.386356000000006 41.001143999999996,-106.321164999999993 40.999122999999997,-106.217573000000002 40.997734,-106.194624254510543 40.99762614711792,-106.190540579491184 40.997606954952467,-106.061180999999991 40.996999000000002,-105.764246857267409 40.99689755617932,-105.730421000000007 40.996886000000003,-105.724804000000006 40.99691,-105.554417704421283 40.997390710823062,-105.412220703167577 40.997791891195448,-105.277137999999979 40.998173,-105.256527000000006 40.998190999999998,-105.254778999999999 40.99821,-105.173435761678107 40.998177015252317,-104.943370680568208 40.998083723679372,-104.855272999999997 40.998047999999997,-104.829503999999986 40.999270000000003,-104.675999000000004 41.000957,-104.497148999999993 41.001828000000003,-104.497057999999996 41.001804999999997,-104.467671999999979 41.001472999999997,-104.214691999999999 41.001657000000002,-104.214191 41.001567999999999,-104.211472999999998 41.001590999999998,-104.123585999999989 41.001625999999995,-104.104590000000002 41.001542999999991,-104.086067999999983 41.001562999999997,-104.066960999999992 41.001503999999997,-104.053248999999994 41.001405999999996,-104.039237999999997 41.001502000000002,-104.023382999999981 41.001887000000004,-104.018223000000006 41.001617000000003,-104.010804886779724 41.00161667450854,-103.972641999999979 41.001615,-103.971373 41.001524000000003,-103.953524999999999 41.001595999999999,-103.906323999999998 41.001387,-103.896207000000004 41.00175,-103.877966999999998 41.00167299999999,-103.858448999999993 41.001680999999998,-103.750497999999993 41.002054,-103.574522000000002 41.001721000000003,-103.497446999999994 41.001635,-103.486697000000007 41.001913999999999,-103.421975000000003 41.002006999999999,-103.421925000000002 41.001968999999995,-103.396990999999986 41.002558,-103.365313999999984 41.001846,-103.362978999999996 41.001843999999991,-103.077804 41.002298000000003,-103.076536000000004 41.002253000000003,-103.059537999999989 41.002367999999997,-103.057997999999998 41.002367999999997,-103.043443999999994 41.002344,-103.038703999999996 41.002251,-103.002026 41.002485999999998,-103.000101999999984 41.002400000000002,-102.982690000000005 41.002156999999997,-102.981482999999997 41.002111999999997,-102.963668999999982 41.002185999999995,-102.962522000000007 41.002071999999998,-102.960706000000002 41.002058999999996,-102.959623999999991 41.002094999999997,-102.944829999999996 41.002302999999998,-102.943109000000007 41.002051000000002,-102.925567999999998 41.002279999999999,-102.924029000000004 41.002141999999999,-102.906546999999989 41.002275999999995,-102.904796000000005 41.002206999999999,-102.887406999999982 41.002178,-102.885745999999997 41.002130999999999,-102.867822000000004 41.002183000000002,-102.865783999999991 41.001987999999997,-102.849262999999993 41.002301000000003,-102.846455000000006 41.002256000000003,-102.830302999999986 41.002350999999997,-102.827280000000002 41.002142999999997,-102.773545999999996 41.002414000000002,-102.766722999999999 41.00227499999999,-102.754616999999996 41.002360999999993,-102.739623999999992 41.002229999999997,-102.653462999999988 41.002332000000003,-102.621032999999997 41.002597000000002,-102.578695999999994 41.002291,-102.575738 41.002268,-102.575496 41.002200000000002,-102.566047999999995 41.002200000000002,-102.556788999999995 41.002218999999997,-102.517701071582451 41.002347335877943,-102.487954999999985 41.002444999999994,-102.470536999999979 41.002381999999997,-102.469223 41.002423999999998,-102.460334593696913 41.00241180236555,-102.387750989484957 41.002312195277327,-102.380372991932845 41.002302070389462,-102.379593 41.002301000000003,-102.364065999999994 41.002173999999997,-102.292833000000002 41.002206999999999,-102.292621999999994 41.002229999999997,-102.292552999999998 41.002206999999999,-102.291353999999998 41.002206999999999,-102.277803455573988 41.002233743569548,-102.272099999999995 41.002245000000002,-102.267811999999992 41.002383000000002,-102.231931000000003 41.002327,-102.212199999999982 41.002462,-102.209361 41.002442000000002,-102.209083936251005 41.002440229332002,-102.207776055197755 41.002431870883314,-102.191209999999998 41.002325999999996,-102.124972 41.002338000000002,-102.070598000000004 41.002423,-102.051614 41.002377000000003,-102.051291999999989 40.749591000000002,-102.051634432607003 40.582129592617228,-102.051725000000005 40.537838999999991,-102.051518999999999 40.520094,-102.051464999999993 40.440007999999999,-102.051839999999999 40.396396000000003,-102.051571999999993 40.393079999999998,-102.051797999999991 40.360069000000003,-102.051585542616536 40.350646145741024,-102.051309000000003 40.338380999999998,-102.051922000000005 40.235343999999998,-102.05189399999999 40.229192999999995,-102.051908999999995 40.162674000000003,-102.052001000000004 40.148358999999999,-102.051852600888665 40.064469617536822,-102.051743999999999 40.003078000000002,-102.051715564657869 39.978173027456265,-102.051569 39.849805000000003,-102.051362999999995 39.843471,-102.051317999999995 39.833311000000002,-102.051254 39.818992,-102.05059399999999 39.67559399999999,-102.050099000000003 39.653812000000002,-102.050421999999983 39.646047999999993,-102.049954 39.592331,-102.04980599999999 39.574058,-102.049553999999986 39.538932000000003,-102.049672999999999 39.536690999999998,-102.049678999999998 39.506183,-102.049368999999999 39.423333,-102.049369999999996 39.418210000000002,-102.049166999999983 39.403596999999998,-102.04895999999998 39.37371199999999,-102.048449000000005 39.30313799999999,-102.047250000000005 39.13702,-102.047133999999986 39.129700999999997,-102.046570999999986 39.047038,-102.045387999999988 38.813391999999993,-102.045333999999997 38.799463000000003,-102.045447999999993 38.783453000000002,-102.045371000000003 38.770063999999998,-102.045287000000002 38.755527999999998,-102.045375000000007 38.754338999999995,-102.045211999999992 38.697566999999999,-102.045156000000006 38.688555,-102.045126999999994 38.686725000000003,-102.045159999999996 38.675221,-102.045102 38.674945999999998,-102.045074 38.669617000000002,-102.045287999999999 38.615248999999999,-102.045210999999995 38.581608999999993,-102.045188999999979 38.558731999999992,-102.045222999999993 38.543796999999998,-102.045112000000003 38.523783999999999,-102.045261999999994 38.505531999999995,-102.045262999999991 38.505395,-102.045323999999979 38.453646999999997,-102.044936000000007 38.41968,-102.044441999999989 38.415801999999999,-102.044944 38.384419,-102.044612999999998 38.312323999999997,-102.044567999999998 38.268819,-102.044398 38.250014999999998,-102.044251000000003 38.141777999999995,-102.044535323623649 38.127675380028528,-102.044589000000002 38.125012999999996,-102.044540277332047 38.123262193231092,-102.044255000000007 38.113010999999993,-102.04462354493468 38.04908029653749,-102.044631007072184 38.047785855466316,-102.044644000000005 38.045532,-102.044620085883125 38.042021706570637,-102.044539342086111 38.030169526464491,-102.043844000000007 37.928101999999996,-102.043845000000005 37.926135000000002,-102.043218999999993 37.86792899999999,-102.043032999999994 37.824145999999999,-102.042952999999997 37.803534999999997,-102.042668000000006 37.788758,-102.042158 37.760164000000003,-102.041876000000002 37.723875,-102.041573999999997 37.680436,-102.041694000000007 37.665680999999999,-102.041581999999991 37.654494999999997,-102.041584999999998 37.644281999999997,-102.041618 37.607868000000003,-102.041779405839492 37.578691555295826,-102.041893999999999 37.557977,-102.041899 37.541186000000003,-102.04201599999999 37.535260999999998,-102.041786000000002 37.506065999999997,-102.041800999999992 37.469487999999998,-102.041754999999995 37.434854999999992,-102.041668999999999 37.434739999999998,-102.041675999999981 37.409897999999991,-102.041523999999995 37.375017999999997,-102.042089000000004 37.352818999999997,-102.041973999999996 37.352612999999998,-102.041816999999995 37.309489999999997,-102.041663999999997 37.29764999999999,-102.041962999999996 37.258164,-102.042001999999997 37.141744000000003,-102.042135000000002 37.125020999999997,-102.042091999999997 37.125020999999997,-102.041808999999986 37.111972999999999,-102.041983000000002 37.106551000000003,-102.04191999999999 37.035083,-102.041748999999996 37.034396999999998,-102.041921000000002 37.032178000000002,-102.04195 37.030805,-102.041951999999995 37.024741999999996,-102.042240000000007 36.993082999999999,-102.054502999999997 36.993108999999997,-102.184270999999995 36.993592999999997,-102.208315999999996 36.993729999999999,-102.260789000000003 36.994388,-102.270345681835295 36.994399933337462,-102.307593650497381 36.994446444520669,-102.355288000000002 36.994505999999994,-102.355367 36.994574999999998,-102.698142000000004 36.995148999999998,-102.742059999999981 36.997689,-102.759860000000003 37.000019000000002,-102.77856899999999 36.999242000000002,-102.806762000000006 37.000019000000002,-102.814616 37.000782999999998,-102.841988999999998 36.999597999999999,-102.979613 36.998548999999997,-102.985806999999994 36.998570999999998,-102.986975999999999 36.998524000000003,-103.002199000000005 37.000104,-103.086104969413952 37.000173865694038,-103.10540536532865 37.000189936488113,-103.155922000000004 37.000231999999997,-103.200631728472104 37.000060386509688,-103.327177769406262 36.999574653124313,-103.425678872433053 36.999196567220693,-103.733247000000006 36.998015999999993,-103.734363999999985 36.998041,-104.007854999999992 36.996239000000003,-104.215475488463966 36.994874432196589,-104.250535999999983 36.994644,-104.29757064295984 36.994053250381747,-104.338832999999994 36.993535,-104.355650525350313 36.993556531771581,-104.366447685535107 36.993570355564437,-104.399202882083287 36.993612292614962,-104.429769386650008 36.993651427444888,-104.480610316975273 36.993716519976395,-104.519256999999996 36.993765999999994,-104.624555999999998 36.994376999999993,-104.625545000000002 36.993599000000003,-104.645028999999994 36.993377999999993,-104.706112207267154 36.993426444188657,-104.732031000000006 36.993447000000003,-104.732119999999981 36.993484000000002,-104.839990412520109 36.993395592828207,-105.00055399999998 36.993264000000003,-105.029227999999989 36.99272899999999,-105.120800000000003 36.995427999999997,-105.155041964101514 36.995339147158163,-105.220613 36.995168999999997,-105.251295999999996 36.995604999999998,-105.419309999999996 36.995856000000003,-105.438102743613229 36.995968030697597,-105.442458999999999 36.995994000000003,-105.447254999999998 36.996016999999995,-105.465181999999999 36.995990999999997,-105.47087670692585 36.995978476706256,-105.508835999999988 36.99589499999999,-105.512484999999998 36.995776999999997,-105.533922000000004 36.995874999999998,-105.627469999999988 36.995679000000003,-105.664719999999988 36.995874,-105.716470999999999 36.995848999999993,-105.718407304549174 36.995846016149208,-105.996159000000006 36.995418,-105.997472000000002 36.995417000000003,-106.006633999999991 36.995342999999998,-106.099805867433119 36.994759106704976,-106.163971382218094 36.994356991615014,-106.201468999999989 36.994121999999997,-106.247704999999996 36.994266000000003,-106.248675000000006 36.99428799999999,-106.293278999999998 36.99389,-106.32542867882475 36.994109231664673,-106.343138999999979 36.994230000000002,-106.476277952851959 36.993839335051021,-106.500589000000005 36.993767999999996,-106.617159 36.992967,-106.617124999999987 36.993003999999999,-106.628652000000002 36.993175,-106.628732999999983 36.993160999999994,-106.661344 36.993243,-106.675625999999994 36.993122999999997,-106.750591 36.992460999999999,-106.782095289714647 36.992451749967366,-106.869795999999994 36.992425999999995,-106.877291999999983 37.00013899999999,-106.918886463342702 37.000128747161924,-106.95601836457638 37.000119594324254,-107.107262626744514 37.000082313330452,-107.255202723469637 37.000045846797775,-107.420912999999999 37.000004999999994,-107.422415013680663 37.000004989636103,-107.442181999144324 37.000004853243873,-107.481737001398656 37.00000458031429,-107.524086846417021 37.000004288100286,-107.600713640777798 37.000003759375268,-107.712477900838564 37.000002988201679,-107.855695499501934 37.000002000000002,-107.866308937617532 37.000001926767261,-107.869139908586362 37.000001907233546,-107.869180699306327 37.0000019069521,-108.000623000000004 37.000000999999997,-108.179187075278463 36.999293161624927,-108.187139540298872 36.999261637591275,-108.249358 36.999015,-108.250634999999988 36.999561,-108.288086000000007 36.999555,-108.288399999999996 36.999519999999997,-108.320464 36.999499,-108.320720999999992 36.99951,-108.379165570428881 36.999458977707043,-108.619688999999994 36.999248999999999,-108.620309000000006 36.999287000000002,-108.749269825405847 36.999139933822768,-108.954403999999997 36.998905999999998,-108.958867999999995 36.998913000000002,-109.045222999999993 36.999084000000003,-109.04516599999998 37.072741999999998,-109.045057999999997 37.074660999999999,-109.044995 37.086429000000003,-109.045188999999993 37.096270999999994,-109.045173000000005 37.109464000000003,-109.045202999999987 37.111957999999994,-109.045155999999992 37.112063999999997,-109.045995000000005 37.177278999999999,-109.045978000000005 37.201830999999999,-109.045801505106283 37.205070813598866,-109.045486999999994 37.210844000000002,-109.045559879533187 37.239775672002708,-109.04556019774752 37.239901996533845,-109.045583999999991 37.249350999999997,-109.046038999999993 37.249993000000003,-109.045898042273308 37.32693499054853,-109.045810000000003 37.374993000000003,-109.043799132325617 37.469028334242019,-109.043463783260819 37.484710450871816,-109.043424942780035 37.486526770085334,-109.043137000000002 37.499991999999999,-109.041915000000003 37.530653,-109.041865 37.530726,-109.041805999999994 37.604171,-109.042130999999998 37.617662000000003,-109.042089000000004 37.623795,-109.042269000000005 37.666066999999998,-109.041731999999996 37.711213999999998,-109.041759999999996 37.713182000000003,-109.041635999999997 37.740209999999998,-109.042097999999996 37.749989999999997,-109.042042148900066 37.754383999799849,-109.041460999999998 37.800105000000002,-109.041753999999997 37.83582599999999,-109.04172299999999 37.842050999999998,-109.041843999999998 37.872788,-109.041652818578953 37.881166902788557,-109.041058000000007 37.907235999999997,-109.043120999999985 37.97426,-109.042818999999994 37.997067999999999,-109.042819999999992 37.999301000000003,-109.041972403965843 38.131799166817459,-109.041836656974709 38.153019449536792,-109.041761999999991 38.16469,-109.054648 38.244920999999998,-109.060061999999988 38.275489,-109.059961999999999 38.49998699999999,-109.060253000000003 38.599327999999993,-109.059540999999996 38.719887999999997,-109.057388000000003 38.795455999999994,-109.057216044916757 38.799730849597076,-109.054188999999994 38.874983999999998,-109.05394299999999 38.904414000000003,-109.053797000000003 38.905283999999995,-109.053233000000006 38.942467,-109.053291999999985 38.942878,-109.052435999999986 38.999985000000002,-109.051587912503535 39.115734257770079,-109.051583515738272 39.116334340093104,-109.051580780636755 39.116707634089543,-109.051512000000002 39.126094999999999,-109.050764999999998 39.366677000000003,-109.051362999999981 39.497674000000004,-109.051040248333237 39.660472011844121,-109.050614999999993 39.874969999999998,-109.050872999999996 40.058914999999999,-109.050813000000005 40.059578999999992,-109.050944 40.180711999999993,-109.050972999999999 40.180849000000002,-109.050968715822648 40.22266241227041,-109.050945999999996 40.444367999999997,-109.050314 40.495092,-109.050697999999983 40.499963,-109.049954999999997 40.539901,-109.050073999999995 40.540357999999998,-109.050071964046666 40.540437104308737,-109.048044000000004 40.619230999999999,-109.048248999999998 40.653600999999995,-109.049087999999998 40.714562,-109.048455000000004 40.826081000000002,-109.050076000000004 41.000658999999999,-108.884137999999993 41.000093999999997,-108.631107999999998 41.00015599999999,-108.526667000000003 40.999608000000002,-108.500658999999999 41.000112,-108.250648999999996 41.000114000000004,-108.181227000000007 41.000454999999995,-108.089219003138552 41.001554139247368,-108.046538999999996 41.002063999999997,-107.923234122395939 41.0020370519008,-107.918420999999981 41.002035999999997))'));
-INSERT INTO geoapp_state (`name`, `poly`) VALUES ('Kansas', GeomFromText('POLYGON ((-102.051743999999999 40.003078000000002,-101.916696000000002 40.003141999999997,-101.904176000000007 40.003162000000003,-101.861740775252272 40.002907997451267,-101.841025000000002 40.002783999999991,-101.832160999999999 40.002932999999999,-101.807687 40.002797999999999,-101.804861999999986 40.002752,-101.783266423091504 40.002735966476642,-101.748492901329186 40.002710149056902,-101.627071 40.00262,-101.625809000000004 40.002710999999998,-101.579641080501318 40.002654627564297,-101.54227299999998 40.002608999999993,-101.417209 40.002423999999998,-101.411050023557621 40.002364583193085,-101.409952999999987 40.002353999999997,-101.387325211262052 40.00246006676732,-101.374325999999996 40.002520999999994,-101.342859000000004 40.002580000000002,-101.324035999999992 40.002695999999993,-101.293991000000005 40.002558999999998,-101.286555000000007 40.002558999999998,-101.248672999999997 40.002543000000003,-101.215033000000005 40.002555,-101.19221899999998 40.002490999999999,-101.186892990733696 40.002481867883319,-101.178804999999997 40.002468,-101.168704000000005 40.002547,-101.130906999999993 40.002426999999997,-101.104950380573442 40.002382874850099,-101.104950380567658 40.002382874850092,-101.060316999999998 40.002307000000002,-101.027686000000003 40.002255999999996,-100.962089380046322 40.00217532965339,-100.937427 40.002144999999999,-100.764559455237134 40.002296963384197,-100.758829999999989 40.002301999999993,-100.752183000000002 40.002127999999992,-100.7388309887763 40.002228385746484,-100.733295999999996 40.002270000000003,-100.729904000000005 40.002110999999999,-100.721127999999993 40.002068999999999,-100.683435000000003 40.002234,-100.660229999999984 40.002161999999998,-100.645444999999995 40.001882999999999,-100.626504856699498 40.001892789287538,-100.600944999999996 40.001905999999998,-100.594756999999987 40.001976999999997,-100.567238000000003 40.001888999999998,-100.551885999999996 40.001888999999998,-100.514429898999168 40.001844039098764,-100.511064999999988 40.00184,-100.487159000000005 40.001767,-100.477018 40.001752000000003,-100.475853999999998 40.001767999999998,-100.468772999999985 40.001724000000003,-100.447071999999991 40.001795,-100.439081000000002 40.001773999999997,-100.402449685831499 40.001800164690437,-100.390079999999998 40.001809000000002,-100.290126736823893 40.001691651381378,-100.231651999999997 40.001623000000002,-100.229478999999998 40.001692999999996,-100.215406000000002 40.001629,-100.196958999999993 40.001494,-100.19359 40.001573,-100.190323000000006 40.001586000000003,-100.188181 40.001541000000003,-100.177823000000004 40.001593,-99.990926000000002 40.001503,-99.986610999999996 40.001550000000002,-99.948166999999998 40.001812999999999,-99.944417 40.001584,-99.930432999999979 40.001516000000002,-99.906657999999993 40.001511999999998,-99.850154757615712 40.001444140609848,-99.813400999999999 40.001399999999997,-99.775639999999981 40.001646999999998,-99.772120999999984 40.001804,-99.764213999999996 40.001550999999999,-99.756834999999995 40.001342,-99.746628 40.001820000000002,-99.737774855821357 40.001824224692157,-99.731959000000003 40.001826999999992,-99.719639 40.001807999999997,-99.628345999999993 40.001866,-99.625979999999984 40.001865000000002,-99.515340365578794 40.002008435606839,-99.501791999999995 40.002026,-99.498998999999984 40.00195699999999,-99.497659999999982 40.001911999999997,-99.493464999999986 40.001936999999998,-99.480727999999999 40.001942,-99.423564999999996 40.002270000000003,-99.412644999999998 40.001867999999995,-99.403389000000004 40.001969000000003,-99.366747146128873 40.001962496644857,-99.290702999999979 40.001949000000003,-99.286655999999994 40.002017000000002,-99.282966999999999 40.001879000000002,-99.254012000000003 40.002074,-99.25036999999999 40.00195699999999,-99.216375999999997 40.002015999999998,-99.197591999999986 40.002032999999997,-99.188905000000005 40.002023,-99.186961999999994 40.001976999999997,-99.178965000000005 40.001976999999997,-99.169815999999997 40.001925,-99.123032999999992 40.002164999999998,-99.113510000000005 40.002192999999998,-99.085596999999993 40.002132999999994,-99.067047050731574 40.00217023690761,-99.020337999999995 40.00226399999999,-99.018700999999993 40.002333,-98.992135000000005 40.002192,-98.972286999999994 40.002245000000002,-98.971721000000002 40.002268,-98.961009000000004 40.002316999999998,-98.96091899999999 40.002271,-98.953888072580213 40.002253239016738,-98.934791999999987 40.002204999999996,-98.8435956659672 40.002348607685946,-98.842134005327992 40.002350909376077,-98.834455999999989 40.002363000000003,-98.820589999999982 40.002319,-98.777203 40.002358999999998,-98.774940999999998 40.002336,-98.729330606936671 40.002229113826232,-98.726294999999993 40.002222000000003,-98.710403999999997 40.002180000000003,-98.693095999999997 40.002372999999999,-98.691443000000007 40.002504999999999,-98.690286999999998 40.002547999999997,-98.672819000000004 40.002364,-98.669723999999988 40.002409999999998,-98.653832999999992 40.002268999999998,-98.652494000000004 40.002245000000002,-98.640709999999984 40.002493,-98.616372379820518 40.002409030470169,-98.613754999999998 40.002400000000002,-98.593342000000007 40.002475999999994,-98.575219000000004 40.002479999999991,-98.560578000000007 40.002274,-98.543186000000006 40.002285,-98.523053000000004 40.002336,-98.506634585466017 40.002329436673158,-98.504454999999979 40.002328565375151,-98.50084801790743 40.002327123469641,-98.490532999999999 40.002322999999997,-98.441997554675297 40.002366263566756,-98.391848301995964 40.002410965650498,-98.274015000000006 40.002516,-98.268218000000005 40.002490000000002,-98.25000799999998 40.002307000000002,-98.213290432425865 40.002506421375415,-98.193483 40.002614,-98.179315000000003 40.002482999999998,-98.172269 40.002437999999991,-98.156873151934732 40.002445128178877,-98.142031000000003 40.002451999999998,-98.099659000000003 40.002226999999998,-98.076034000000007 40.002300999999996,-98.068701000000004 40.002355,-98.050056999999981 40.002277999999997,-98.047469000000007 40.002186000000002,-98.042767978165202 40.002191261754177,-98.014411999999979 40.002223,-98.010157000000007 40.002153,-97.972185999999994 40.002113999999999,-97.931810999999996 40.002049999999997,-97.876261 40.002102,-97.85745 40.002065000000002,-97.838378999999989 40.001909999999995,-97.821597999999994 40.002003999999992,-97.819426000000007 40.001957999999995,-97.777154999999993 40.002167,-97.770775999999998 40.001976999999997,-97.769204000000002 40.001995,-97.767746000000002 40.001994000000003,-97.714825952022949 40.001974503868432,-97.706952472912022 40.001971603221314,-97.701160424072398 40.001969469388285,-97.61370959051284 40.001937251863488,-97.595964207410262 40.001930714334961,-97.593671575073259 40.001929869712491,-97.51530799999999 40.001900999999997,-97.511381 40.001899000000002,-97.510264000000006 40.001835,-97.48896951184885 40.0019310946697,-97.481234094494141 40.001966001936331,-97.463284999999999 40.00204699999999,-97.444661999999994 40.001957999999995,-97.425443 40.002048000000002,-97.417825999999991 40.002023999999999,-97.415833000000006 40.002000999999993,-97.369102999999996 40.00206,-97.350896000000006 40.001930000000002,-97.350272000000004 40.001975999999999,-97.256541388870858 40.001563097676062,-97.24516899999999 40.001513000000003,-97.245080000000002 40.001466999999998,-97.202309999999997 40.00144199999999,-97.200190000000006 40.001548999999997,-97.181775000000002 40.001550000000002,-97.165136038800085 40.001526729909067,-97.164288093539042 40.001525544031956,-97.157705785150654 40.001516338474417,-97.144150390621661 40.001497380844818,-97.142447999999987 40.001494999999998,-97.137865999999988 40.001814000000003,-97.049662999999995 40.001322999999999,-97.030802999999992 40.001342,-97.009164999999996 40.001463,-96.918187714380807 40.001505032225388,-96.916093000000004 40.001505999999999,-96.880459000000002 40.001448000000003,-96.878253 40.001466,-96.875056999999998 40.001448000000003,-96.873812 40.001449999999998,-96.868892342573133 40.001444286089438,-96.805301797100199 40.001370429180717,-96.693246065483095 40.001240282633297,-96.622400999999996 40.001157999999997,-96.610348999999999 40.000881,-96.604883999999984 40.000891000000003,-96.581788013355691 40.000963078853125,-96.580851999999993 40.000965999999998,-96.570853999999997 40.001090999999995,-96.557862999999998 40.000968,-96.538977000000003 40.000850999999997,-96.527110999999991 40.001030999999998,-96.469944999999996 40.000965999999998,-96.467535999999996 40.001035000000002,-96.463639999999998 40.000967000000003,-96.354812913341547 40.000735780492882,-96.350953725714731 40.00072758106856,-96.341811057717251 40.000708156095854,-96.304554999999993 40.000629000000004,-96.301066000000006 40.000632000000003,-96.239171999999996 40.000691000000003,-96.223838999999998 40.000729,-96.220170999999993 40.00072,-96.154364999999984 40.000495,-96.154246 40.00045,-96.147166999999982 40.000478999999999,-96.125936999999979 40.000432000000004,-96.125788 40.000467,-96.089781000000002 40.000518999999997,-96.081394999999986 40.000602999999998,-96.051691000000005 40.000726999999998,-96.02409 40.000718999999997,-96.014716997898134 40.000662392993569,-96.010677999999999 40.000638000000002,-95.995389500007406 40.000603953777215,-95.958139000000003 40.000520999999999,-95.901560435593936 40.000482839492363,-95.882524000000004 40.00047,-95.788023999999993 40.000452000000003,-95.784575000000004 40.000463000000003,-95.672891827756033 40.000336669594915,-95.658762261555324 40.000320686938032,-95.63965170807073 40.000299070038061,-95.565216789143676 40.000214872989645,-95.463103327781397 40.00009936736172,-95.455130658279359 40.000090349077695,-95.452048066669519 40.000086862204618,-95.438655850967621 40.000071713601649,-95.436011808705814 40.000068722793607,-95.426269559489981 40.00005770284973,-95.42148745056565 40.000052293567869,-95.41484447973599 40.000044779372317,-95.375257000000005 40.0,-95.339895999999982 39.999999000000003,-95.326448603970363 39.999998574530281,-95.30829 39.999997999999998,-95.308403999999996 39.993758,-95.307779999999994 39.990617999999998,-95.307111000000006 39.989114,-95.302506999999991 39.984357000000003,-95.289715 39.977705999999998,-95.274756999999994 39.972115000000002,-95.269885999999985 39.969396000000003,-95.261854 39.960617999999997,-95.257651999999993 39.954886000000002,-95.250253999999998 39.948644000000002,-95.241382999999999 39.944949,-95.236761 39.943930999999999,-95.231114000000005 39.943784,-95.220212000000004 39.944432999999997,-95.216440000000006 39.943953,-95.213736999999995 39.943205999999996,-95.204427999999993 39.938949,-95.201277000000005 39.934193999999998,-95.200689999999994 39.928154999999997,-95.20201 39.922438,-95.205744999999993 39.915168999999999,-95.206326000000004 39.912120999999999,-95.206195999999991 39.909557,-95.205732999999981 39.908275000000003,-95.202631127107011 39.904826841138963,-95.201935000000006 39.904052999999998,-95.19982446963148 39.902956959499498,-95.199773390195176 39.902930432929807,-95.199730682369619 39.902908253904485,-95.199347000000003 39.902709000000002,-95.193815999999984 39.900689999999997,-95.189565000000002 39.899959000000003,-95.179452999999995 39.900061999999991,-95.172296000000003 39.902025999999999,-95.159833999999989 39.906984,-95.156023999999988 39.907243,-95.153185481864639 39.906665666721331,-95.151701132402337 39.906363761184394,-95.149656999999991 39.905947999999995,-95.148243978290679 39.905255611516672,-95.146055000000004 39.904183000000003,-95.143801999999994 39.901917999999995,-95.142562999999981 39.897992000000002,-95.142444999999995 39.895419999999994,-95.143403000000006 39.889355999999992,-95.142718000000002 39.885888999999992,-95.140601000000004 39.88168799999999,-95.137091999999996 39.878350999999995,-95.134747000000004 39.876852,-95.128165999999993 39.874164999999998,-95.105912000000004 39.869163999999998,-95.090958483530287 39.863446088154532,-95.090158000000002 39.86314,-95.085003 39.861882999999999,-95.081534000000005 39.861718000000003,-95.079786043666886 39.861878094210859,-95.052535000000006 39.864373999999998,-95.042141999999998 39.864804999999997,-95.037767000000002 39.865541999999998,-95.034318031759739 39.867229060943565,-95.032053000000005 39.868336999999997,-95.031002514960235 39.869148692103728,-95.027930999999981 39.871521999999999,-95.025918959417425 39.87568321107333,-95.025422000000006 39.876711,-95.025119000000004 39.878833,-95.02586205726584 39.885935119809076,-95.025947000000002 39.886747,-95.025771840138887 39.887478608302466,-95.025475064075451 39.888718183571669,-95.025239999999997 39.889699999999998,-95.024388999999999 39.891202,-95.021897459019584 39.893924778577606,-95.019088516216428 39.896994416745422,-95.018742999999986 39.89737199999999,-95.018224596337973 39.897611313155366,-95.013151999999991 39.899952999999996,-95.010684182587667 39.900289758615472,-95.008439999999993 39.900596,-95.003818999999993 39.900400999999995,-94.990284000000003 39.897010000000002,-94.989784913598129 39.896958718834505,-94.987823822157509 39.896757216540813,-94.986975 39.89667,-94.985308455245701 39.896814869812808,-94.979390624873346 39.897329296428744,-94.977748999999989 39.897472,-94.963345000000004 39.901136,-94.959276000000003 39.901671,-94.958440298615102 39.901548064610132,-94.95153999999998 39.900532999999996,-94.943866999999983 39.898130000000002,-94.935306395585215 39.893779379194363,-94.934493000000003 39.893366,-94.929574000000002 39.888753999999992,-94.927897000000002 39.88611199999999,-94.927358999999996 39.883966,-94.927251999999996 39.880257999999991,-94.928466 39.876344000000003,-94.931084167287821 39.873075003673321,-94.931462999999994 39.872602,-94.938790999999995 39.866954,-94.940742999999998 39.864409999999999,-94.942407000000003 39.861065999999994,-94.942566999999983 39.856601999999995,-94.939767000000003 39.851930000000003,-94.937655000000007 39.849786000000002,-94.926149999999993 39.841321999999998,-94.916917999999995 39.836137999999998,-94.909941999999987 39.834426,-94.903156999999979 39.833849999999998,-94.892677000000006 39.834377999999994,-94.889493000000002 39.834026,-94.886932999999999 39.833098,-94.881012999999996 39.828921999999991,-94.878676999999996 39.826521999999997,-94.877043999999998 39.823754,-94.876543999999996 39.820594,-94.875944000000004 39.813293999999999,-94.87632679569893 39.807169268817198,-94.876344000000003 39.806894,-94.876705972386588 39.80614007495069,-94.880932 39.797338000000003,-94.884084 39.794234000000003,-94.890292000000002 39.791626,-94.892965000000004 39.791097999999991,-94.912908274541266 39.790276806342419,-94.92474489359239 39.789789416146199,-94.925605000000004 39.789753999999995,-94.925940683661906 39.789631963361245,-94.927258709273417 39.789152799691166,-94.929653999999999 39.788281999999995,-94.93035270914757 39.787827111232048,-94.930442023078356 39.787768964141691,-94.930979872832452 39.787418801541357,-94.932726000000002 39.786282,-94.932913349551853 39.786043884763131,-94.935059195246907 39.783316584105528,-94.935205999999994 39.78313,-94.935782000000003 39.778905999999999,-94.935301999999993 39.77561,-94.935036741896766 39.775108050050804,-94.934624304242575 39.774327591105198,-94.934262000000004 39.773642000000002,-94.929652999999988 39.769098,-94.929421387607832 39.768921584953624,-94.928626586797606 39.768316199289764,-94.926229000000006 39.76648999999999,-94.923991330811134 39.765173947104167,-94.916788999999994 39.760937999999996,-94.912293000000005 39.759337999999993,-94.906244 39.759417999999997,-94.905921454535701 39.759501730763866,-94.900921941190049 39.760799572828766,-94.899156000000005 39.761257999999998,-94.899025621234756 39.761323457651685,-94.895268000000002 39.76321,-94.895041000000006 39.763350000000003,-94.894070999999997 39.763945999999997,-94.893918999999997 39.76404,-94.893724000000006 39.764159999999997,-94.893646000000004 39.764208000000004,-94.883923999999993 39.770186000000002,-94.881460000000004 39.771258000000003,-94.881422 39.771258000000003,-94.874706321154179 39.772392308082928,-94.871144 39.772993999999997,-94.869643999999994 39.772894,-94.867142999999999 39.771693999999997,-94.865243000000007 39.770094,-94.863142999999994 39.767294,-94.860742999999999 39.763094000000002,-94.859442999999999 39.753694000000003,-94.860369889104035 39.749534984666809,-94.860371 39.74953,-94.862942999999987 39.742994000000003,-94.870142999999999 39.734594,-94.875642999999997 39.730494,-94.884142999999995 39.726793999999998,-94.891743999999989 39.724893999999999,-94.899315999999999 39.724041999999997,-94.900553640444031 39.724102079633198,-94.901582061073228 39.724152002964722,-94.902612000000005 39.724201999999998,-94.906055088082866 39.724933471502588,-94.907014260749904 39.725137244236571,-94.907785666538786 39.725301126582274,-94.910067999999995 39.725785999999999,-94.911087398893699 39.726157408899255,-94.918323999999998 39.728793999999994,-94.93000499999998 39.735370000000003,-94.939221000000003 39.74157799999999,-94.944740999999979 39.744377,-94.948658825773634 39.745572502168315,-94.948680784417533 39.745579202723142,-94.948725999999994 39.745593,-94.952629999999999 39.745961,-94.955286 39.745688999999999,-94.960086000000004 39.743065,-94.963779819772341 39.740240978767318,-94.964692434782606 39.73954326086956,-94.965317999999982 39.739064999999989,-94.965565209393333 39.738728671232884,-94.970224508542714 39.732389687437191,-94.970421999999985 39.732120999999999,-94.971205999999981 39.729304999999997,-94.971078000000006 39.723146,-94.968452999999997 39.707402000000002,-94.968980999999999 39.692954,-94.969909 39.689050000000002,-94.971316999999999 39.686410000000002,-94.976096392737759 39.68160006801152,-94.976325000000003 39.68137,-94.981556999999995 39.678634000000002,-94.984149000000002 39.677849999999992,-94.986445080691666 39.677537608069159,-94.990587390516794 39.676974028501114,-94.993556999999996 39.676569999999998,-94.998766892420107 39.676509388876212,-95.001379 39.676479,-95.004602740773237 39.676177881356345,-95.008105239221649 39.675850724907868,-95.009022999999999 39.675764999999998,-95.010225986948086 39.675477408241932,-95.013209713780839 39.674764104372102,-95.015309999999985 39.674261999999999,-95.018317999999994 39.672868999999999,-95.021521942351953 39.670631293568427,-95.024595000000005 39.668484999999997,-95.027643999999995 39.665453999999997,-95.037464 39.652904999999997,-95.039049000000006 39.649639,-95.044554000000005 39.644370000000002,-95.049518000000006 39.637875999999999,-95.053366999999994 39.630347,-95.054924999999997 39.624994999999991,-95.055024819926729 39.623527163368095,-95.055152000000007 39.621656999999992,-95.054958456554544 39.620961328886679,-95.053131423647116 39.614394255464305,-95.053011999999981 39.613965,-95.052555891387243 39.613278556984888,-95.047910999999999 39.606287999999999,-95.046445000000006 39.601605999999997,-95.046361000000005 39.599556999999997,-95.047165000000007 39.595117000000002,-95.049277000000004 39.589582999999998,-95.054804000000004 39.582487999999998,-95.056897000000006 39.580567000000002,-95.059518999999995 39.579132,-95.064519000000004 39.577114999999999,-95.066275551338904 39.576786470694117,-95.068266439890465 39.576414113098046,-95.069315000000003 39.576217999999997,-95.072159999999982 39.576121999999991,-95.075842551355763 39.576644128527029,-95.076688000000004 39.576763999999997,-95.088569515113861 39.580713698327401,-95.089515000000006 39.581028000000003,-95.09068217809525 39.58095107619048,-95.095736000000002 39.580618,-95.099095000000005 39.579690999999997,-95.100375015351446 39.579100080742663,-95.10182940536555 39.578428661399109,-95.103228 39.577782999999997,-95.106109962410699 39.575487768136732,-95.106244982404746 39.575380236480051,-95.106274453941239 39.575356764970024,-95.106406000000007 39.575251999999999,-95.107454000000004 39.573842999999997,-95.108931052511622 39.56997896968771,-95.109155613535791 39.569391508783276,-95.112830712234896 39.559777298955126,-95.112877844119652 39.559653999999995,-95.113077000000004 39.559132999999996,-95.113262990573148 39.557121201967142,-95.113516735173974 39.554376531201555,-95.113557 39.553940999999995,-95.113330390574859 39.553319942050457,-95.109694540741444 39.543355336910984,-95.109303999999995 39.542284999999993,-95.106595999999996 39.537657000000003,-95.106363136618171 39.537386330858773,-95.106309238275287 39.537323682029822,-95.102887999999993 39.533346999999999,-95.096713422649174 39.527826015970483,-95.095319522838992 39.526579663685382,-95.092703999999998 39.524241000000004,-95.082713999999996 39.516711999999998,-95.077440999999993 39.513551999999997,-95.059460999999985 39.506143000000002,-95.05637999999999 39.503971999999997,-95.052176999999986 39.499995999999996,-95.050551999999996 39.497514000000002,-95.049844999999991 39.494414999999989,-95.048370000000006 39.480420000000002,-95.047133000000002 39.474970999999996,-95.045715999999999 39.472459,-95.040779999999998 39.466386999999997,-95.03749999999998 39.463689000000002,-95.033407999999994 39.460875999999992,-95.028497999999999 39.458286999999999,-95.015825000000007 39.452809000000002,-94.995767999999998 39.448174000000002,-94.990172 39.446192000000003,-94.982144000000005 39.440551999999997,-94.978797999999998 39.436241000000003,-94.976606000000004 39.426701,-94.972952000000006 39.421705000000003,-94.968547467194298 39.418879728230785,-94.966981164652054 39.417875029083376,-94.966065999999998 39.417287999999999,-94.965430539155946 39.417093446959996,-94.954817000000006 39.413843999999997,-94.951209000000006 39.411706999999993,-94.947863999999996 39.408603999999997,-94.946292999999983 39.405645999999997,-94.946662000000003 39.399717000000003,-94.946226999999993 39.395648,-94.945577 39.393850999999998,-94.942038999999994 39.389499,-94.939696999999995 39.387949999999996,-94.938205659338905 39.38711651736979,-94.938199994953891 39.387113351650086,-94.938198708293527 39.387112632559479,-94.937157999999982 39.386530999999998,-94.933651999999995 39.385545999999998,-94.932170703908099 39.385397898493565,-94.923109999999994 39.384492000000002,-94.919224999999997 39.385173999999999,-94.915858999999998 39.386347999999998,-94.909581000000003 39.388865000000003,-94.901822999999993 39.392797999999999,-94.896448416922993 39.39340032396553,-94.894979000000006 39.393565000000002,-94.891845000000004 39.393312999999999,-94.888971999999995 39.392431999999999,-94.888058227506249 39.391822741147728,-94.885025999999996 39.389800999999999,-94.880978999999996 39.383899,-94.879281000000006 39.37977999999999,-94.879087999999996 39.375702999999994,-94.881359999999987 39.370382999999997,-94.885216 39.366911000000002,-94.890928000000002 39.364030999999997,-94.896832000000003 39.363135,-94.899023999999997 39.362431,-94.902496999999997 39.360382999999999,-94.90716104958679 39.35683832231404,-94.907297 39.356735,-94.907510470967722 39.356484333333356,-94.909408999999997 39.354254999999995,-94.910016999999996 39.352542999999997,-94.91007929967077 39.352122876579188,-94.910166635146069 39.351533921963672,-94.910234386079424 39.351077037464393,-94.910640999999998 39.348334999999999,-94.910055514481613 39.342727430625168,-94.908683540921714 39.329587162119807,-94.908064999999993 39.323663000000003,-94.906599414484603 39.317389801180319,-94.905982468129508 39.31474906332776,-94.905548856768945 39.312893060899633,-94.905328999999995 39.311951999999998,-94.904604536115073 39.31007473956825,-94.903592654247163 39.307452709910535,-94.903137 39.306272,-94.902341179156608 39.304705098857582,-94.900693838394318 39.301461629999167,-94.900362755471093 39.300809756886117,-94.900048999999996 39.300192000000003,-94.895217000000002 39.29420799999999,-94.889432625546704 39.288730528394183,-94.887056 39.286479999999997,-94.882576 39.283327999999997,-94.881425972827699 39.282735692772164,-94.879585687759075 39.281787876778168,-94.878319999999988 39.281135999999996,-94.869470269042495 39.278423959123423,-94.867567999999991 39.277841000000002,-94.866576416802303 39.277461598502107,-94.857072000000002 39.273825000000002,-94.850573678793964 39.270595179638669,-94.850470600187833 39.270543947117169,-94.846320000000006 39.268481,-94.844203868589133 39.266965084952687,-94.840994595225254 39.264666085108807,-94.837855000000005 39.262416999999999,-94.836102527271095 39.260730409704507,-94.834879550067882 39.259553409087879,-94.832501320107042 39.257264586268427,-94.832102355305352 39.256880620143498,-94.831470999999993 39.256273,-94.827487000000005 39.249888999999996,-94.826571473591798 39.245793223963304,-94.825663000000006 39.241728999999999,-94.826110999999983 39.238289000000002,-94.826405091238243 39.237538367125239,-94.827108391663188 39.2357432765168,-94.827791000000005 39.234000999999999,-94.828117769197533 39.233533772937683,-94.83244435695299 39.227347452739551,-94.834698551534771 39.224124319346686,-94.834896 39.223841999999998,-94.834917496024659 39.223414229109203,-94.835039139715306 39.220993519665384,-94.835046603087861 39.220844998551456,-94.835055999999994 39.220658,-94.833551999999997 39.217793999999998,-94.831678999999994 39.215938,-94.823791 39.209873999999999,-94.820687000000007 39.208626000000002,-94.811662999999996 39.206594000000003,-94.800359054554335 39.206051410618606,-94.799662999999995 39.206018,-94.798924306591658 39.206116812235138,-94.793913945984244 39.206787029303406,-94.788135068391796 39.207560047994349,-94.787343000000007 39.207666000000003,-94.783838000000003 39.207154000000003,-94.781518000000005 39.206145999999997,-94.780294078498926 39.205273290755756,-94.778971577769184 39.204330290235411,-94.777838000000003 39.203522,-94.775537999999997 39.200602000000003,-94.770897097034492 39.191141697801093,-94.770859400196969 39.191064854247678,-94.770337999999995 39.190002,-94.763137999999998 39.179903000000003,-94.75233799999998 39.173202999999994,-94.74193799999999 39.170203,-94.736536999999998 39.169203000000003,-94.723636999999997 39.169002999999989,-94.714136999999994 39.170403,-94.696331999999998 39.178562999999997,-94.687235999999999 39.183503000000002,-94.680335999999983 39.184303,-94.669134999999997 39.182003000000002,-94.663835000000006 39.179102999999998,-94.660314999999997 39.168050999999991,-94.662434999999988 39.157602999999995,-94.650734999999983 39.154102999999999,-94.640034999999997 39.153102999999994,-94.623934000000006 39.156602999999997,-94.615834000000007 39.160003000000003,-94.608834000000002 39.160502999999999,-94.601732999999996 39.15960299999999,-94.596033000000006 39.157702999999998,-94.591932999999997 39.155003,-94.589933000000002 39.140402999999999,-94.592533000000003 39.135902999999992,-94.600433999999993 39.128503000000002,-94.605733999999998 39.122204000000004,-94.607033999999999 39.119404000000003,-94.607354 39.113444,-94.607234000000005 39.089604,-94.607333999999994 39.081703999999995,-94.607275518421304 39.072346947409343,-94.607234000000005 39.065703999999997,-94.607342812841125 39.057404745686583,-94.60738379566331 39.05427894858029,-94.607437239929951 39.050202705779334,-94.607518499034526 39.044004999999999,-94.607559479691474 39.040879368039988,-94.607612854426819 39.036808428453341,-94.60764748233197 39.034167326647299,-94.607654028188094 39.033668068249817,-94.60769507925167 39.030537066312085,-94.607898722639391 39.015005000000002,-94.607914652765047 39.013789994834404,-94.607991843462372 39.007902590176151,-94.608087526605189 39.000604749887366,-94.608092759229436 39.000205652880325,-94.608190956218394 38.992716079262479,-94.608212339138063 38.991085184540211,-94.608264438806202 38.98711149548862,-94.608279957450691 38.985927874365181,-94.608301211867541 38.984306780669819,-94.608333999999999 38.981805999999999,-94.608294286905348 38.97390309416464,-94.608273484679671 38.969763451253407,-94.608249262127771 38.964943163424849,-94.608207879518076 38.956708024096379,-94.608134000000007 38.942005999999999,-94.608134000000007 38.940005999999997,-94.607866 38.937398000000002,-94.607977999999989 38.936869999999992,-94.608002838442587 38.912906322207348,-94.608006216770249 38.909646973100827,-94.608010407202343 38.90560412040071,-94.608022064178897 38.894357681354862,-94.60802273861259 38.893706999999999,-94.608033000000006 38.883806999999997,-94.608033000000006 38.869207000000003,-94.608033000000006 38.868107000000002,-94.607992999999993 38.867271000000002,-94.608033000000006 38.861207,-94.608033000000006 38.855007,-94.608033000000006 38.850107,-94.608033000000006 38.847206999999997,-94.607624999999999 38.827559999999991,-94.607668973053535 38.825816299300072,-94.608041 38.811064000000002,-94.608617609754887 38.781926100280451,-94.609398999999996 38.742440000000002,-94.60945599999998 38.74069999999999,-94.609507757106428 38.73815999467709,-94.609625656590424 38.7323740198146,-94.610322172686637 38.698192151600097,-94.61071084056907 38.679118085101081,-94.61073851283922 38.677760054904219,-94.611602000000005 38.635384000000002,-94.611464999999995 38.625011,-94.611857999999998 38.620485000000002,-94.611908 38.609271999999997,-94.611905562149673 38.605890005062435,-94.611886999999996 38.580139000000003,-94.611902 38.580109999999998,-94.612176000000005 38.576546,-94.612156999999996 38.549816999999997,-94.612272000000004 38.547916999999998,-94.612464742072774 38.518760616499996,-94.612644000000003 38.491644,-94.612725999999995 38.484366999999999,-94.612696 38.483153999999999,-94.612865999999997 38.477570999999998,-94.613365000000002 38.403421999999999,-94.613264999999998 38.392426,-94.613275404637193 38.388718047420433,-94.613328999999993 38.369617999999996,-94.613311999999993 38.364407,-94.613085455228386 38.3436360393057,-94.612999999999985 38.335800999999996,-94.612825 38.324387000000002,-94.612787999999995 38.320141999999997,-94.612673 38.314832000000003,-94.612673 38.302526999999998,-94.612689368276676 38.301464114946214,-94.612843999999996 38.291422999999995,-94.612848999999997 38.289914000000003,-94.612707829046002 38.272362044447966,-94.612691999999996 38.270394000000003,-94.612613999999994 38.237766,-94.612634999999997 38.226987,-94.612658999999994 38.219251,-94.61265866950464 38.21872154645218,-94.612657999999982 38.217649000000002,-94.612821999999994 38.203918000000002,-94.612848 38.200713999999998,-94.613073 38.190551999999997,-94.61341774677895 38.168183959706163,-94.613422 38.16790799999999,-94.613748 38.160632999999997,-94.613855999999998 38.149768999999999,-94.613889466360249 38.136312911169284,-94.613919497343275 38.124238112111762,-94.614061000000007 38.067343,-94.614088999999993 38.065900999999997,-94.614054999999993 38.060088,-94.613980999999995 38.036949,-94.614211999999981 37.992462000000003,-94.614464999999996 37.987798999999995,-94.614511123427164 37.979395512107736,-94.614514360688489 37.978805697169918,-94.614557000000005 37.971036999999995,-94.614561999999992 37.951517000000003,-94.614593999999997 37.949977999999994,-94.614611999999994 37.944361999999998,-94.614754000000005 37.940769000000003,-94.614834999999999 37.936700000000002,-94.614778 37.934199999999997,-94.615181000000007 37.915944000000003,-94.615392999999983 37.906391999999997,-94.61546899999999 37.901775,-94.615706000000003 37.886842999999999,-94.615921 37.878331000000003,-94.615834000000007 37.872509999999998,-94.616 37.863126,-94.616282760205394 37.851281931678621,-94.616426000000004 37.845281999999997,-94.616433230053673 37.842955730230052,-94.61645 37.837560000000003,-94.616861999999998 37.819456000000002,-94.6176681324215 37.775831003788085,-94.617720999999989 37.77297,-94.617737774720197 37.764628336555312,-94.617744979193901 37.761045725680312,-94.617807999999997 37.729706999999998,-94.617975 37.722175999999997,-94.61780499999999 37.690178000000003,-94.617650999999995 37.687671000000002,-94.617687000000004 37.686652999999993,-94.617885 37.682214000000002,-94.617733999999999 37.673127,-94.617576 37.653671000000003,-94.617517909436387 37.643988652624088,-94.61747699999998 37.637169999999998,-94.617472819127315 37.636539916507168,-94.6173 37.610495,-94.617428000000004 37.609521999999998,-94.617283 37.571896000000002,-94.617315000000005 37.571498999999996,-94.617080999999999 37.567013000000003,-94.61711240153133 37.563155381499406,-94.617159999999984 37.557307999999999,-94.617186000000004 37.553485000000002,-94.617167532949537 37.551779056391354,-94.616988484457494 37.535238968895172,-94.616907999999981 37.527804000000003,-94.616788999999997 37.521509999999999,-94.616880369657522 37.506771761864755,-94.617022999999989 37.483764999999998,-94.617182999999997 37.469664999999999,-94.617180000000005 37.465203000000002,-94.617221999999998 37.460476,-94.617204999999984 37.46037299999999,-94.617200999999994 37.454788,-94.617131999999998 37.439818000000002,-94.617265000000003 37.425535999999994,-94.617510999999993 37.410908999999997,-94.617557000000005 37.396374999999999,-94.61759158917468 37.381725975861251,-94.617625000000004 37.367576,-94.617626 37.367444999999989,-94.617536999999999 37.364355000000003,-94.617636000000005 37.338417,-94.617694999999998 37.336841999999997,-94.617648000000003 37.323588999999998,-94.61807499999999 37.240436000000003,-94.618157999999994 37.237596999999994,-94.618122999999997 37.229334,-94.61815 37.228121000000002,-94.618218999999996 37.207771999999999,-94.618305000000007 37.207337000000003,-94.618319 37.188774000000002,-94.618504999999985 37.181184000000002,-94.618472999999994 37.174782,-94.618351000000004 37.160210999999997,-94.618071999999998 37.132345,-94.61807499999999 37.129755000000003,-94.61816441512984 37.118929895303054,-94.618212 37.113168999999992,-94.618150999999997 37.103968000000002,-94.618059000000002 37.096676000000002,-94.618088 37.093670999999993,-94.618089999999995 37.093494,-94.618085255103864 37.089305442941992,-94.618082 37.086432000000002,-94.61811999999999 37.085934000000002,-94.617981999999998 37.075077,-94.617954311863897 37.070346986543974,-94.617947706480578 37.069218577181687,-94.617910161110728 37.062804634983031,-94.617893975984089 37.060039701061122,-94.617874999999998 37.056798,-94.617877538275181 37.056339390079508,-94.617964999999998 37.040537,-94.617972200190749 37.032971759572447,-94.617994999999979 37.009015999999995,-94.618027702303792 37.004829720380044,-94.618080000000006 36.998134999999998,-94.625223999999989 36.998671999999999,-94.699735000000004 36.998804999999997,-94.701796999999999 36.998814000000003,-94.711286363060864 36.99879670415919,-94.712770000000006 36.99879399999999,-94.722629184733563 36.998741903378082,-94.732834603466486 36.998687977231512,-94.736330645670293 36.998669503899912,-94.737183000000002 36.998665000000003,-94.739323999999996 36.998686999999997,-94.745992043692311 36.998700535427304,-94.749560781475736 36.99870777958963,-94.749834600019099 36.998708335412474,-94.777257000000006 36.998764,-94.831280000000007 36.998812,-94.831539962039543 36.998812565955092,-94.840925999999996 36.998832999999998,-94.846637705524785 36.998860673615503,-94.849800999999999 36.998875999999996,-94.853196999999994 36.998874,-94.896852168601683 36.999075231107383,-94.904605402657381 36.99911097010289,-94.9407882710602 36.999277757196154,-94.995293000000004 36.999528999999995,-95.007620000000003 36.999513999999998,-95.011432999999997 36.999535000000002,-95.030323999999993 36.999516999999997,-95.037857000000002 36.999496999999998,-95.049498999999983 36.999580000000002,-95.073509 36.999509000000003,-95.1405498515593 36.999533623834409,-95.155186999999998 36.999538999999999,-95.155372 36.999540000000003,-95.159067907556633 36.999536629205572,-95.177300999999986 36.999519999999997,-95.195307 36.999564999999997,-95.267905305061163 36.999446910377756,-95.285983101167361 36.999417504731007,-95.322564999999997 36.999357999999994,-95.328057999999999 36.999364999999997,-95.328326999999987 36.999366000000002,-95.331209999999999 36.999380000000002,-95.377252424658963 36.999296311678272,-95.381753803085687 36.999288129815376,-95.407683000000006 36.999240999999998,-95.511578 36.999234999999999,-95.522414951940931 36.999281058114107,-95.534401000000003 36.999332000000003,-95.573598000000004 36.999309999999994,-95.601517312742303 36.999317968253862,-95.612139999999997 36.999321000000002,-95.615933999999996 36.999364999999997,-95.621011943860609 36.999361983160732,-95.624350000000007 36.999360000000003,-95.630078999999995 36.999319999999997,-95.638122589416028 36.999320470082949,-95.664300999999995 36.999321999999999,-95.674044398562955 36.999333876292773,-95.686452000000003 36.999349000000002,-95.696658999999997 36.999215,-95.71038 36.999370999999996,-95.710782524132014 36.999362783399121,-95.714887000000004 36.999279,-95.718053999999995 36.999254999999998,-95.741907999999995 36.999243999999997,-95.746466244276931 36.999250838506164,-95.759905000000003 36.999270999999993,-95.768719000000004 36.999205000000003,-95.786761999999996 36.999309999999994,-95.807979999999986 36.999124000000002,-95.819364496908179 36.999150471530008,-95.866899000000004 36.999260999999997,-95.873943999999995 36.999299999999998,-95.875256999999991 36.999302,-95.877150999999998 36.999304000000002,-95.910179999999997 36.999336,-95.928122000000002 36.999245000000002,-95.936991999999989 36.999267999999994,-95.964270378114222 36.999093604402042,-96.00081 36.99886,-96.095164142267308 36.998935940299688,-96.14121 36.998972999999999,-96.143207000000004 36.999133999999998,-96.147143 36.999021999999997,-96.149709 36.99904,-96.152383999999998 36.999050999999994,-96.154016999999982 36.999161,-96.184768000000005 36.999211000000003,-96.200028000000003 36.999028000000003,-96.217571000000007 36.999070000000003,-96.235320025971774 36.999130675786525,-96.27480962492784 36.999265672629733,-96.276368000000005 36.999270999999993,-96.279078999999996 36.999271999999991,-96.381556872639493 36.999226629434901,-96.394272 36.999220999999999,-96.415412000000003 36.999113,-96.500287999999998 36.998643,-96.525212323286397 36.998711038495294,-96.525495980566973 36.998711812823821,-96.551130926932458 36.998781791180214,-96.551130927020779 36.998781791180456,-96.624487489749981 36.998982040153741,-96.705431000000004 36.999203,-96.710481999999999 36.999270999999993,-96.731983006833033 36.99928335311408,-96.736589999999993 36.999285999999998,-96.741269999999986 36.999239000000003,-96.749837999999997 36.998987999999997,-96.792060000000006 36.999179999999996,-96.795198999999997 36.99886,-96.822790999999995 36.999181999999998,-96.867517000000007 36.999217000000002,-96.876289999999997 36.999232999999997,-96.902083000000005 36.999155000000002,-96.903509999999997 36.999132000000003,-96.917092999999994 36.999181999999998,-96.921914999999998 36.999150999999998,-96.924934279563146 36.999131784030439,-96.934641999999997 36.999070000000003,-96.967371 36.999066999999997,-96.975561999999996 36.999018999999997,-97.030081999999979 36.998928999999997,-97.039783999999983 36.999000000000002,-97.045562883576096 36.99899981011751,-97.100651999999997 36.998998,-97.104275999999999 36.999020000000002,-97.120284999999996 36.999014000000003,-97.122596999999999 36.999035999999997,-97.147721000000004 36.999110999999999,-97.202000013134437 36.999050609464689,-97.255829185181881 36.998990719420135,-97.342808466604069 36.998893946743877,-97.362376892203329 36.998872175019791,-97.364929972745273 36.99886933447624,-97.372421000000003 36.998860999999998,-97.384924999999996 36.998843,-97.462279999999993 36.998685000000002,-97.472860999999995 36.998721000000003,-97.527292000000003 36.998749999999994,-97.545899999999989 36.998708999999991,-97.546497999999985 36.998746999999995,-97.564536000000004 36.998711,-97.582460039051355 36.99869862770732,-97.606549 36.998682000000002,-97.637136999999996 36.999090000000002,-97.650465999999994 36.999003999999999,-97.692180007144742 36.998844793059916,-97.697103999999982 36.998826,-97.768704 36.998749999999994,-97.783432000000005 36.998961,-97.783489000000003 36.998846999999998,-97.802297999999979 36.998713000000002,-97.965379045838461 36.998468720211747,-98.033955000000006 36.998365999999997,-98.03989 36.998348999999997,-98.045341999999991 36.998327000000003,-98.111985000000004 36.998133000000003,-98.128185436781749 36.99814624647324,-98.147452 36.998162,-98.177595999999994 36.998008999999996,-98.190367496841162 36.998003995168112,-98.208218000000002 36.997996999999998,-98.219498999999999 36.997824,-98.237712000000002 36.99797199999999,-98.346187999999984 36.997962,-98.347186011230875 36.997961873429141,-98.354073 36.997960999999997,-98.408991 36.998513000000003,-98.418267999999998 36.998538000000003,-98.420209 36.998516000000002,-98.476584655565659 36.998733519956424,-98.485495952453391 36.998767903324406,-98.544871999999984 36.998997000000003,-98.622244241689657 36.999025734091177,-98.714511999999999 36.99906,-98.718464999999995 36.999179999999996,-98.761596999999995 36.999425000000002,-98.791936000000007 36.999254999999998,-98.793711000000002 36.999226999999991,-98.797451999999993 36.999228999999993,-98.811832237742053 36.99924038482925,-98.869449000000003 36.999285999999998,-98.880009 36.999262999999999,-98.880579999999995 36.999308999999997,-98.994371 36.999493,-99.000846251360556 36.99951188908193,-99.029336999999998 36.999594999999999,-99.044703416105833 36.999312701167916,-99.049695 36.999220999999999,-99.124882999999997 36.99942,-99.12944899999998 36.999422000000003,-99.215429691089184 36.999525607779709,-99.221470798208784 36.999532887387339,-99.22594390512576 36.999538277535649,-99.248119999999986 36.999564999999997,-99.277506000000002 36.999578999999997,-99.375390999999993 37.000176999999994,-99.375813215185289 37.000169016042221,-99.396673054015949 36.999774562980598,-99.407015 36.999578999999997,-99.456202999999988 36.999471,-99.484333000000007 36.999625999999999,-99.500394999999983 36.99957599999999,-99.500394999999983 36.999637,-99.502664999999993 36.999645,-99.504092999999997 36.999648,-99.508573999999982 36.999657999999997,-99.541115670095081 36.999572526667627,-99.558068000000006 36.999527999999998,-99.625399000000002 36.999670999999999,-99.648651999999998 36.999603999999998,-99.657657999999998 37.000197,-99.675479899119665 37.000294824261658,-99.700804554289192 37.000433831091229,-99.722499410223932 37.000552913981863,-99.774254999999997 37.000836999999997,-99.774816 37.000841,-99.786016000000004 37.000931,-99.875408999999991 37.001658999999997,-99.904897139036905 37.001652107487203,-99.995200999999994 37.001631000000003,-100.001285999999993 37.001699000000002,-100.002562999999995 37.001705999999999,-100.005706000000004 37.001725999999998,-100.08949117994996 37.002091554886341,-100.115721999999991 37.002206,-100.187546999999995 37.002082,-100.19237099999998 37.002035999999997,-100.193753999999998 37.002133,-100.201675999999992 37.002080999999997,-100.269984573601874 37.001795796937508,-100.395563941387664 37.001271475927872,-100.434302684862132 37.001109733298897,-100.434343961694367 37.0011095609592,-100.436759028295029 37.001099477534027,-100.462594151135718 37.000991610310841,-100.526354155903263 37.000725398506596,-100.551597999999998 37.000619999999998,-100.552683000000002 37.000734999999999,-100.591328000000004 37.000376000000003,-100.591413000000003 37.000399000000002,-100.629769999999994 37.000025,-100.63332699999998 36.999935999999998,-100.675551999999996 36.999687999999999,-100.734516999999997 36.999059000000003,-100.756894000000003 36.999356999999996,-100.759718826764541 36.999297806889686,-100.765484 36.999177000000003,-100.806116000000003 36.999091,-100.814277000000004 36.999085,-100.850054835707368 36.998687920265262,-100.855633999999981 36.998626000000002,-100.891659999999987 36.998604,-100.904274 36.998745,-100.904588000000004 36.998561000000002,-100.945565999999985 36.998151999999997,-100.958261085233985 36.99812508251128,-100.996501999999992 36.998044,-101.012641000000002 36.998176,-101.053589000000002 36.997966999999996,-101.066742000000005 36.997920999999998,-101.096255470166753 36.997758490771822,-101.211485999999979 36.997123999999999,-101.212908999999996 36.997044000000002,-101.283204233333976 36.996668964004151,-101.357796999999991 36.996271,-101.359673999999998 36.996231999999999,-101.37818 36.996164,-101.413867999999994 36.996008000000003,-101.415004999999994 36.995966000000003,-101.485326 36.995610999999997,-101.519065999999995 36.99554599999999,-101.555239 36.99541399999999,-101.600396000000003 36.995152999999995,-101.601592999999994 36.995094999999999,-101.672152845644291 36.994768289529276,-101.672152845650672 36.994768289529254,-101.718235173867967 36.994554916342196,-101.761767880686108 36.994353348566563,-101.826607533764985 36.994053124077894,-101.862548907230888 36.993886706153717,-101.881050066963184 36.993801040963412,-101.899294480822903 36.993716564573397,-101.902439999999999 36.993701999999999,-101.905152836625547 36.993689460946754,-101.93521516037174 36.99355050931414,-102.000446999999994 36.993248999999992,-102.000446999999994 36.993271999999997,-102.028206999999981 36.993124999999999,-102.042240000000007 36.993082999999999,-102.041951999999995 37.024741999999996,-102.04195 37.030805,-102.041921000000002 37.032178000000002,-102.041748999999996 37.034396999999998,-102.04191999999999 37.035083,-102.041983000000002 37.106551000000003,-102.041808999999986 37.111972999999999,-102.042091999999997 37.125020999999997,-102.042135000000002 37.125020999999997,-102.042121535383529 37.12671399835564,-102.042001999999997 37.141744000000003,-102.041962999999996 37.258164,-102.041663999999997 37.29764999999999,-102.041816999999995 37.309489999999997,-102.041973999999996 37.352612999999998,-102.042089000000004 37.352818999999997,-102.041523999999995 37.375017999999997,-102.041585760607518 37.389190434149839,-102.041675999999981 37.409897999999991,-102.041668999999999 37.434739999999998,-102.041754999999995 37.434854999999992,-102.041800999999992 37.469487999999998,-102.041786000000002 37.506065999999997,-102.04201599999999 37.535260999999998,-102.041899 37.541186000000003,-102.041893999999999 37.557977,-102.041618 37.607868000000003,-102.041584999999998 37.644281999999997,-102.041581999999991 37.654494999999997,-102.041694000000007 37.665680999999999,-102.041573999999997 37.680436,-102.041876000000002 37.723875,-102.041989965869121 37.73854062916552,-102.042158 37.760164000000003,-102.042668000000006 37.788758,-102.042952999999997 37.803534999999997,-102.043032999999994 37.824145999999999,-102.043218999999993 37.86792899999999,-102.043714531331204 37.914003914798144,-102.043845000000005 37.926135000000002,-102.043844000000007 37.928101999999996,-102.044644000000005 38.045532,-102.044255000000007 38.113010999999993,-102.044450868202546 38.120049353793199,-102.044589000000002 38.125012999999996,-102.044415729020699 38.133607343100145,-102.044251000000003 38.141777999999995,-102.044296878804843 38.175558844899406,-102.044398 38.250014999999998,-102.044510721728557 38.262483349316234,-102.044567999999998 38.268819,-102.044612999999998 38.312323999999997,-102.044944 38.384419,-102.044441999999989 38.415801999999999,-102.044936000000007 38.41968,-102.045323999999979 38.453646999999997,-102.045262999999991 38.505395,-102.045261999999994 38.505531999999995,-102.045112000000003 38.523783999999999,-102.045222999999993 38.543796999999998,-102.045188999999979 38.558731999999992,-102.045210999999995 38.581608999999993,-102.045287999999999 38.615248999999999,-102.045074 38.669617000000002,-102.045102 38.674945999999998,-102.045159999999996 38.675221,-102.045126999999994 38.686725000000003,-102.045156000000006 38.688555,-102.045211999999992 38.697566999999999,-102.045375000000007 38.754338999999995,-102.045287000000002 38.755527999999998,-102.045371000000003 38.770063999999998,-102.045447999999993 38.783453000000002,-102.045333999999997 38.799463000000003,-102.045387999999988 38.813391999999993,-102.046570999999986 39.047038,-102.047133999999986 39.129700999999997,-102.047188612927897 39.133146793270186,-102.047250000000005 39.13702,-102.047851021058236 39.220289738242592,-102.048449000000005 39.30313799999999,-102.04895999999998 39.37371199999999,-102.049100972149461 39.394064428437375,-102.049166999999983 39.403596999999998,-102.049369999999996 39.418210000000002,-102.049368999999999 39.423333,-102.049678999999998 39.506183,-102.049672999999999 39.536690999999998,-102.049553999999986 39.538932000000003,-102.049763758475066 39.568170000775439,-102.04980599999999 39.574058,-102.049954 39.592331,-102.050258163748609 39.627242889069393,-102.050421999999983 39.646047999999993,-102.050099000000003 39.653812000000002,-102.05059399999999 39.67559399999999,-102.050898693231389 39.741794606053567,-102.051254 39.818992,-102.051317999999995 39.833311000000002,-102.051362999999995 39.843471,-102.051569 39.849805000000003,-102.051743999999999 40.003078000000002))'));
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/state.postgresql_psycopg2.sql b/webapp/django/contrib/gis/tests/geoapp/sql/state.postgresql_psycopg2.sql
deleted file mode 100644
index d27af33..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/state.postgresql_psycopg2.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- State border data courtesy of U.S. Census Bureau Cartographic Boundary Files: http://www.census.gov/geo/www/cob/st2000.html
--- Boundary file data is a product of the U.S. federal government and is public domain.  See 17 U.S.C. 105.
-INSERT INTO geoapp_state ("name", "poly") VALUES ('Puerto Rico', NULL);
-INSERT INTO geoapp_state ("name", "poly") VALUES ('Colorado', 'SRID=4326;POLYGON ((-107.918420999999981 41.002035999999997,-107.69133582431418 41.002104250342249,-107.625624000000002 41.002124000000002,-107.521505363272311 41.002506710525772,-107.367442999999994 41.003073,-107.317794462401125 41.002967213367114,-107.305312956219666 41.00294061889776,-107.241193999999993 41.002803999999998,-107.000606000000005 41.003443999999995,-106.857772999999995 41.002662999999991,-106.453858999999994 41.002056999999994,-106.439563000000007 41.001978,-106.437419000000006 41.001794999999994,-106.430949999999996 41.001751999999996,-106.391852 41.001176,-106.386356000000006 41.001143999999996,-106.321164999999993 40.999122999999997,-106.217573000000002 40.997734,-106.194624254510543 40.99762614711792,-106.190540579491184 40.997606954952467,-106.061180999999991 40.996999000000002,-105.764246857267409 40.99689755617932,-105.730421000000007 40.996886000000003,-105.724804000000006 40.99691,-105.554417704421283 40.997390710823062,-105.412220703167577 40.997791891195448,-105.277137999999979 40.998173,-105.256527000000006 40.998190999999998,-105.254778999999999 40.99821,-105.173435761678107 40.998177015252317,-104.943370680568208 40.998083723679372,-104.855272999999997 40.998047999999997,-104.829503999999986 40.999270000000003,-104.675999000000004 41.000957,-104.497148999999993 41.001828000000003,-104.497057999999996 41.001804999999997,-104.467671999999979 41.001472999999997,-104.214691999999999 41.001657000000002,-104.214191 41.001567999999999,-104.211472999999998 41.001590999999998,-104.123585999999989 41.001625999999995,-104.104590000000002 41.001542999999991,-104.086067999999983 41.001562999999997,-104.066960999999992 41.001503999999997,-104.053248999999994 41.001405999999996,-104.039237999999997 41.001502000000002,-104.023382999999981 41.001887000000004,-104.018223000000006 41.001617000000003,-104.010804886779724 41.00161667450854,-103.972641999999979 41.001615,-103.971373 41.001524000000003,-103.953524999999999 41.001595999999999,-103.906323999999998 41.001387,-103.896207000000004 41.00175,-103.877966999999998 41.00167299999999,-103.858448999999993 41.001680999999998,-103.750497999999993 41.002054,-103.574522000000002 41.001721000000003,-103.497446999999994 41.001635,-103.486697000000007 41.001913999999999,-103.421975000000003 41.002006999999999,-103.421925000000002 41.001968999999995,-103.396990999999986 41.002558,-103.365313999999984 41.001846,-103.362978999999996 41.001843999999991,-103.077804 41.002298000000003,-103.076536000000004 41.002253000000003,-103.059537999999989 41.002367999999997,-103.057997999999998 41.002367999999997,-103.043443999999994 41.002344,-103.038703999999996 41.002251,-103.002026 41.002485999999998,-103.000101999999984 41.002400000000002,-102.982690000000005 41.002156999999997,-102.981482999999997 41.002111999999997,-102.963668999999982 41.002185999999995,-102.962522000000007 41.002071999999998,-102.960706000000002 41.002058999999996,-102.959623999999991 41.002094999999997,-102.944829999999996 41.002302999999998,-102.943109000000007 41.002051000000002,-102.925567999999998 41.002279999999999,-102.924029000000004 41.002141999999999,-102.906546999999989 41.002275999999995,-102.904796000000005 41.002206999999999,-102.887406999999982 41.002178,-102.885745999999997 41.002130999999999,-102.867822000000004 41.002183000000002,-102.865783999999991 41.001987999999997,-102.849262999999993 41.002301000000003,-102.846455000000006 41.002256000000003,-102.830302999999986 41.002350999999997,-102.827280000000002 41.002142999999997,-102.773545999999996 41.002414000000002,-102.766722999999999 41.00227499999999,-102.754616999999996 41.002360999999993,-102.739623999999992 41.002229999999997,-102.653462999999988 41.002332000000003,-102.621032999999997 41.002597000000002,-102.578695999999994 41.002291,-102.575738 41.002268,-102.575496 41.002200000000002,-102.566047999999995 41.002200000000002,-102.556788999999995 41.002218999999997,-102.517701071582451 41.002347335877943,-102.487954999999985 41.002444999999994,-102.470536999999979 41.002381999999997,-102.469223 41.002423999999998,-102.460334593696913 41.00241180236555,-102.387750989484957 41.002312195277327,-102.380372991932845 41.002302070389462,-102.379593 41.002301000000003,-102.364065999999994 41.002173999999997,-102.292833000000002 41.002206999999999,-102.292621999999994 41.002229999999997,-102.292552999999998 41.002206999999999,-102.291353999999998 41.002206999999999,-102.277803455573988 41.002233743569548,-102.272099999999995 41.002245000000002,-102.267811999999992 41.002383000000002,-102.231931000000003 41.002327,-102.212199999999982 41.002462,-102.209361 41.002442000000002,-102.209083936251005 41.002440229332002,-102.207776055197755 41.002431870883314,-102.191209999999998 41.002325999999996,-102.124972 41.002338000000002,-102.070598000000004 41.002423,-102.051614 41.002377000000003,-102.051291999999989 40.749591000000002,-102.051634432607003 40.582129592617228,-102.051725000000005 40.537838999999991,-102.051518999999999 40.520094,-102.051464999999993 40.440007999999999,-102.051839999999999 40.396396000000003,-102.051571999999993 40.393079999999998,-102.051797999999991 40.360069000000003,-102.051585542616536 40.350646145741024,-102.051309000000003 40.338380999999998,-102.051922000000005 40.235343999999998,-102.05189399999999 40.229192999999995,-102.051908999999995 40.162674000000003,-102.052001000000004 40.148358999999999,-102.051852600888665 40.064469617536822,-102.051743999999999 40.003078000000002,-102.051715564657869 39.978173027456265,-102.051569 39.849805000000003,-102.051362999999995 39.843471,-102.051317999999995 39.833311000000002,-102.051254 39.818992,-102.05059399999999 39.67559399999999,-102.050099000000003 39.653812000000002,-102.050421999999983 39.646047999999993,-102.049954 39.592331,-102.04980599999999 39.574058,-102.049553999999986 39.538932000000003,-102.049672999999999 39.536690999999998,-102.049678999999998 39.506183,-102.049368999999999 39.423333,-102.049369999999996 39.418210000000002,-102.049166999999983 39.403596999999998,-102.04895999999998 39.37371199999999,-102.048449000000005 39.30313799999999,-102.047250000000005 39.13702,-102.047133999999986 39.129700999999997,-102.046570999999986 39.047038,-102.045387999999988 38.813391999999993,-102.045333999999997 38.799463000000003,-102.045447999999993 38.783453000000002,-102.045371000000003 38.770063999999998,-102.045287000000002 38.755527999999998,-102.045375000000007 38.754338999999995,-102.045211999999992 38.697566999999999,-102.045156000000006 38.688555,-102.045126999999994 38.686725000000003,-102.045159999999996 38.675221,-102.045102 38.674945999999998,-102.045074 38.669617000000002,-102.045287999999999 38.615248999999999,-102.045210999999995 38.581608999999993,-102.045188999999979 38.558731999999992,-102.045222999999993 38.543796999999998,-102.045112000000003 38.523783999999999,-102.045261999999994 38.505531999999995,-102.045262999999991 38.505395,-102.045323999999979 38.453646999999997,-102.044936000000007 38.41968,-102.044441999999989 38.415801999999999,-102.044944 38.384419,-102.044612999999998 38.312323999999997,-102.044567999999998 38.268819,-102.044398 38.250014999999998,-102.044251000000003 38.141777999999995,-102.044535323623649 38.127675380028528,-102.044589000000002 38.125012999999996,-102.044540277332047 38.123262193231092,-102.044255000000007 38.113010999999993,-102.04462354493468 38.04908029653749,-102.044631007072184 38.047785855466316,-102.044644000000005 38.045532,-102.044620085883125 38.042021706570637,-102.044539342086111 38.030169526464491,-102.043844000000007 37.928101999999996,-102.043845000000005 37.926135000000002,-102.043218999999993 37.86792899999999,-102.043032999999994 37.824145999999999,-102.042952999999997 37.803534999999997,-102.042668000000006 37.788758,-102.042158 37.760164000000003,-102.041876000000002 37.723875,-102.041573999999997 37.680436,-102.041694000000007 37.665680999999999,-102.041581999999991 37.654494999999997,-102.041584999999998 37.644281999999997,-102.041618 37.607868000000003,-102.041779405839492 37.578691555295826,-102.041893999999999 37.557977,-102.041899 37.541186000000003,-102.04201599999999 37.535260999999998,-102.041786000000002 37.506065999999997,-102.041800999999992 37.469487999999998,-102.041754999999995 37.434854999999992,-102.041668999999999 37.434739999999998,-102.041675999999981 37.409897999999991,-102.041523999999995 37.375017999999997,-102.042089000000004 37.352818999999997,-102.041973999999996 37.352612999999998,-102.041816999999995 37.309489999999997,-102.041663999999997 37.29764999999999,-102.041962999999996 37.258164,-102.042001999999997 37.141744000000003,-102.042135000000002 37.125020999999997,-102.042091999999997 37.125020999999997,-102.041808999999986 37.111972999999999,-102.041983000000002 37.106551000000003,-102.04191999999999 37.035083,-102.041748999999996 37.034396999999998,-102.041921000000002 37.032178000000002,-102.04195 37.030805,-102.041951999999995 37.024741999999996,-102.042240000000007 36.993082999999999,-102.054502999999997 36.993108999999997,-102.184270999999995 36.993592999999997,-102.208315999999996 36.993729999999999,-102.260789000000003 36.994388,-102.270345681835295 36.994399933337462,-102.307593650497381 36.994446444520669,-102.355288000000002 36.994505999999994,-102.355367 36.994574999999998,-102.698142000000004 36.995148999999998,-102.742059999999981 36.997689,-102.759860000000003 37.000019000000002,-102.77856899999999 36.999242000000002,-102.806762000000006 37.000019000000002,-102.814616 37.000782999999998,-102.841988999999998 36.999597999999999,-102.979613 36.998548999999997,-102.985806999999994 36.998570999999998,-102.986975999999999 36.998524000000003,-103.002199000000005 37.000104,-103.086104969413952 37.000173865694038,-103.10540536532865 37.000189936488113,-103.155922000000004 37.000231999999997,-103.200631728472104 37.000060386509688,-103.327177769406262 36.999574653124313,-103.425678872433053 36.999196567220693,-103.733247000000006 36.998015999999993,-103.734363999999985 36.998041,-104.007854999999992 36.996239000000003,-104.215475488463966 36.994874432196589,-104.250535999999983 36.994644,-104.29757064295984 36.994053250381747,-104.338832999999994 36.993535,-104.355650525350313 36.993556531771581,-104.366447685535107 36.993570355564437,-104.399202882083287 36.993612292614962,-104.429769386650008 36.993651427444888,-104.480610316975273 36.993716519976395,-104.519256999999996 36.993765999999994,-104.624555999999998 36.994376999999993,-104.625545000000002 36.993599000000003,-104.645028999999994 36.993377999999993,-104.706112207267154 36.993426444188657,-104.732031000000006 36.993447000000003,-104.732119999999981 36.993484000000002,-104.839990412520109 36.993395592828207,-105.00055399999998 36.993264000000003,-105.029227999999989 36.99272899999999,-105.120800000000003 36.995427999999997,-105.155041964101514 36.995339147158163,-105.220613 36.995168999999997,-105.251295999999996 36.995604999999998,-105.419309999999996 36.995856000000003,-105.438102743613229 36.995968030697597,-105.442458999999999 36.995994000000003,-105.447254999999998 36.996016999999995,-105.465181999999999 36.995990999999997,-105.47087670692585 36.995978476706256,-105.508835999999988 36.99589499999999,-105.512484999999998 36.995776999999997,-105.533922000000004 36.995874999999998,-105.627469999999988 36.995679000000003,-105.664719999999988 36.995874,-105.716470999999999 36.995848999999993,-105.718407304549174 36.995846016149208,-105.996159000000006 36.995418,-105.997472000000002 36.995417000000003,-106.006633999999991 36.995342999999998,-106.099805867433119 36.994759106704976,-106.163971382218094 36.994356991615014,-106.201468999999989 36.994121999999997,-106.247704999999996 36.994266000000003,-106.248675000000006 36.99428799999999,-106.293278999999998 36.99389,-106.32542867882475 36.994109231664673,-106.343138999999979 36.994230000000002,-106.476277952851959 36.993839335051021,-106.500589000000005 36.993767999999996,-106.617159 36.992967,-106.617124999999987 36.993003999999999,-106.628652000000002 36.993175,-106.628732999999983 36.993160999999994,-106.661344 36.993243,-106.675625999999994 36.993122999999997,-106.750591 36.992460999999999,-106.782095289714647 36.992451749967366,-106.869795999999994 36.992425999999995,-106.877291999999983 37.00013899999999,-106.918886463342702 37.000128747161924,-106.95601836457638 37.000119594324254,-107.107262626744514 37.000082313330452,-107.255202723469637 37.000045846797775,-107.420912999999999 37.000004999999994,-107.422415013680663 37.000004989636103,-107.442181999144324 37.000004853243873,-107.481737001398656 37.00000458031429,-107.524086846417021 37.000004288100286,-107.600713640777798 37.000003759375268,-107.712477900838564 37.000002988201679,-107.855695499501934 37.000002000000002,-107.866308937617532 37.000001926767261,-107.869139908586362 37.000001907233546,-107.869180699306327 37.0000019069521,-108.000623000000004 37.000000999999997,-108.179187075278463 36.999293161624927,-108.187139540298872 36.999261637591275,-108.249358 36.999015,-108.250634999999988 36.999561,-108.288086000000007 36.999555,-108.288399999999996 36.999519999999997,-108.320464 36.999499,-108.320720999999992 36.99951,-108.379165570428881 36.999458977707043,-108.619688999999994 36.999248999999999,-108.620309000000006 36.999287000000002,-108.749269825405847 36.999139933822768,-108.954403999999997 36.998905999999998,-108.958867999999995 36.998913000000002,-109.045222999999993 36.999084000000003,-109.04516599999998 37.072741999999998,-109.045057999999997 37.074660999999999,-109.044995 37.086429000000003,-109.045188999999993 37.096270999999994,-109.045173000000005 37.109464000000003,-109.045202999999987 37.111957999999994,-109.045155999999992 37.112063999999997,-109.045995000000005 37.177278999999999,-109.045978000000005 37.201830999999999,-109.045801505106283 37.205070813598866,-109.045486999999994 37.210844000000002,-109.045559879533187 37.239775672002708,-109.04556019774752 37.239901996533845,-109.045583999999991 37.249350999999997,-109.046038999999993 37.249993000000003,-109.045898042273308 37.32693499054853,-109.045810000000003 37.374993000000003,-109.043799132325617 37.469028334242019,-109.043463783260819 37.484710450871816,-109.043424942780035 37.486526770085334,-109.043137000000002 37.499991999999999,-109.041915000000003 37.530653,-109.041865 37.530726,-109.041805999999994 37.604171,-109.042130999999998 37.617662000000003,-109.042089000000004 37.623795,-109.042269000000005 37.666066999999998,-109.041731999999996 37.711213999999998,-109.041759999999996 37.713182000000003,-109.041635999999997 37.740209999999998,-109.042097999999996 37.749989999999997,-109.042042148900066 37.754383999799849,-109.041460999999998 37.800105000000002,-109.041753999999997 37.83582599999999,-109.04172299999999 37.842050999999998,-109.041843999999998 37.872788,-109.041652818578953 37.881166902788557,-109.041058000000007 37.907235999999997,-109.043120999999985 37.97426,-109.042818999999994 37.997067999999999,-109.042819999999992 37.999301000000003,-109.041972403965843 38.131799166817459,-109.041836656974709 38.153019449536792,-109.041761999999991 38.16469,-109.054648 38.244920999999998,-109.060061999999988 38.275489,-109.059961999999999 38.49998699999999,-109.060253000000003 38.599327999999993,-109.059540999999996 38.719887999999997,-109.057388000000003 38.795455999999994,-109.057216044916757 38.799730849597076,-109.054188999999994 38.874983999999998,-109.05394299999999 38.904414000000003,-109.053797000000003 38.905283999999995,-109.053233000000006 38.942467,-109.053291999999985 38.942878,-109.052435999999986 38.999985000000002,-109.051587912503535 39.115734257770079,-109.051583515738272 39.116334340093104,-109.051580780636755 39.116707634089543,-109.051512000000002 39.126094999999999,-109.050764999999998 39.366677000000003,-109.051362999999981 39.497674000000004,-109.051040248333237 39.660472011844121,-109.050614999999993 39.874969999999998,-109.050872999999996 40.058914999999999,-109.050813000000005 40.059578999999992,-109.050944 40.180711999999993,-109.050972999999999 40.180849000000002,-109.050968715822648 40.22266241227041,-109.050945999999996 40.444367999999997,-109.050314 40.495092,-109.050697999999983 40.499963,-109.049954999999997 40.539901,-109.050073999999995 40.540357999999998,-109.050071964046666 40.540437104308737,-109.048044000000004 40.619230999999999,-109.048248999999998 40.653600999999995,-109.049087999999998 40.714562,-109.048455000000004 40.826081000000002,-109.050076000000004 41.000658999999999,-108.884137999999993 41.000093999999997,-108.631107999999998 41.00015599999999,-108.526667000000003 40.999608000000002,-108.500658999999999 41.000112,-108.250648999999996 41.000114000000004,-108.181227000000007 41.000454999999995,-108.089219003138552 41.001554139247368,-108.046538999999996 41.002063999999997,-107.923234122395939 41.0020370519008,-107.918420999999981 41.002035999999997))');
-INSERT INTO geoapp_state ("name", "poly") VALUES ('Kansas', 'SRID=4326;POLYGON ((-102.051743999999999 40.003078000000002,-101.916696000000002 40.003141999999997,-101.904176000000007 40.003162000000003,-101.861740775252272 40.002907997451267,-101.841025000000002 40.002783999999991,-101.832160999999999 40.002932999999999,-101.807687 40.002797999999999,-101.804861999999986 40.002752,-101.783266423091504 40.002735966476642,-101.748492901329186 40.002710149056902,-101.627071 40.00262,-101.625809000000004 40.002710999999998,-101.579641080501318 40.002654627564297,-101.54227299999998 40.002608999999993,-101.417209 40.002423999999998,-101.411050023557621 40.002364583193085,-101.409952999999987 40.002353999999997,-101.387325211262052 40.00246006676732,-101.374325999999996 40.002520999999994,-101.342859000000004 40.002580000000002,-101.324035999999992 40.002695999999993,-101.293991000000005 40.002558999999998,-101.286555000000007 40.002558999999998,-101.248672999999997 40.002543000000003,-101.215033000000005 40.002555,-101.19221899999998 40.002490999999999,-101.186892990733696 40.002481867883319,-101.178804999999997 40.002468,-101.168704000000005 40.002547,-101.130906999999993 40.002426999999997,-101.104950380573442 40.002382874850099,-101.104950380567658 40.002382874850092,-101.060316999999998 40.002307000000002,-101.027686000000003 40.002255999999996,-100.962089380046322 40.00217532965339,-100.937427 40.002144999999999,-100.764559455237134 40.002296963384197,-100.758829999999989 40.002301999999993,-100.752183000000002 40.002127999999992,-100.7388309887763 40.002228385746484,-100.733295999999996 40.002270000000003,-100.729904000000005 40.002110999999999,-100.721127999999993 40.002068999999999,-100.683435000000003 40.002234,-100.660229999999984 40.002161999999998,-100.645444999999995 40.001882999999999,-100.626504856699498 40.001892789287538,-100.600944999999996 40.001905999999998,-100.594756999999987 40.001976999999997,-100.567238000000003 40.001888999999998,-100.551885999999996 40.001888999999998,-100.514429898999168 40.001844039098764,-100.511064999999988 40.00184,-100.487159000000005 40.001767,-100.477018 40.001752000000003,-100.475853999999998 40.001767999999998,-100.468772999999985 40.001724000000003,-100.447071999999991 40.001795,-100.439081000000002 40.001773999999997,-100.402449685831499 40.001800164690437,-100.390079999999998 40.001809000000002,-100.290126736823893 40.001691651381378,-100.231651999999997 40.001623000000002,-100.229478999999998 40.001692999999996,-100.215406000000002 40.001629,-100.196958999999993 40.001494,-100.19359 40.001573,-100.190323000000006 40.001586000000003,-100.188181 40.001541000000003,-100.177823000000004 40.001593,-99.990926000000002 40.001503,-99.986610999999996 40.001550000000002,-99.948166999999998 40.001812999999999,-99.944417 40.001584,-99.930432999999979 40.001516000000002,-99.906657999999993 40.001511999999998,-99.850154757615712 40.001444140609848,-99.813400999999999 40.001399999999997,-99.775639999999981 40.001646999999998,-99.772120999999984 40.001804,-99.764213999999996 40.001550999999999,-99.756834999999995 40.001342,-99.746628 40.001820000000002,-99.737774855821357 40.001824224692157,-99.731959000000003 40.001826999999992,-99.719639 40.001807999999997,-99.628345999999993 40.001866,-99.625979999999984 40.001865000000002,-99.515340365578794 40.002008435606839,-99.501791999999995 40.002026,-99.498998999999984 40.00195699999999,-99.497659999999982 40.001911999999997,-99.493464999999986 40.001936999999998,-99.480727999999999 40.001942,-99.423564999999996 40.002270000000003,-99.412644999999998 40.001867999999995,-99.403389000000004 40.001969000000003,-99.366747146128873 40.001962496644857,-99.290702999999979 40.001949000000003,-99.286655999999994 40.002017000000002,-99.282966999999999 40.001879000000002,-99.254012000000003 40.002074,-99.25036999999999 40.00195699999999,-99.216375999999997 40.002015999999998,-99.197591999999986 40.002032999999997,-99.188905000000005 40.002023,-99.186961999999994 40.001976999999997,-99.178965000000005 40.001976999999997,-99.169815999999997 40.001925,-99.123032999999992 40.002164999999998,-99.113510000000005 40.002192999999998,-99.085596999999993 40.002132999999994,-99.067047050731574 40.00217023690761,-99.020337999999995 40.00226399999999,-99.018700999999993 40.002333,-98.992135000000005 40.002192,-98.972286999999994 40.002245000000002,-98.971721000000002 40.002268,-98.961009000000004 40.002316999999998,-98.96091899999999 40.002271,-98.953888072580213 40.002253239016738,-98.934791999999987 40.002204999999996,-98.8435956659672 40.002348607685946,-98.842134005327992 40.002350909376077,-98.834455999999989 40.002363000000003,-98.820589999999982 40.002319,-98.777203 40.002358999999998,-98.774940999999998 40.002336,-98.729330606936671 40.002229113826232,-98.726294999999993 40.002222000000003,-98.710403999999997 40.002180000000003,-98.693095999999997 40.002372999999999,-98.691443000000007 40.002504999999999,-98.690286999999998 40.002547999999997,-98.672819000000004 40.002364,-98.669723999999988 40.002409999999998,-98.653832999999992 40.002268999999998,-98.652494000000004 40.002245000000002,-98.640709999999984 40.002493,-98.616372379820518 40.002409030470169,-98.613754999999998 40.002400000000002,-98.593342000000007 40.002475999999994,-98.575219000000004 40.002479999999991,-98.560578000000007 40.002274,-98.543186000000006 40.002285,-98.523053000000004 40.002336,-98.506634585466017 40.002329436673158,-98.504454999999979 40.002328565375151,-98.50084801790743 40.002327123469641,-98.490532999999999 40.002322999999997,-98.441997554675297 40.002366263566756,-98.391848301995964 40.002410965650498,-98.274015000000006 40.002516,-98.268218000000005 40.002490000000002,-98.25000799999998 40.002307000000002,-98.213290432425865 40.002506421375415,-98.193483 40.002614,-98.179315000000003 40.002482999999998,-98.172269 40.002437999999991,-98.156873151934732 40.002445128178877,-98.142031000000003 40.002451999999998,-98.099659000000003 40.002226999999998,-98.076034000000007 40.002300999999996,-98.068701000000004 40.002355,-98.050056999999981 40.002277999999997,-98.047469000000007 40.002186000000002,-98.042767978165202 40.002191261754177,-98.014411999999979 40.002223,-98.010157000000007 40.002153,-97.972185999999994 40.002113999999999,-97.931810999999996 40.002049999999997,-97.876261 40.002102,-97.85745 40.002065000000002,-97.838378999999989 40.001909999999995,-97.821597999999994 40.002003999999992,-97.819426000000007 40.001957999999995,-97.777154999999993 40.002167,-97.770775999999998 40.001976999999997,-97.769204000000002 40.001995,-97.767746000000002 40.001994000000003,-97.714825952022949 40.001974503868432,-97.706952472912022 40.001971603221314,-97.701160424072398 40.001969469388285,-97.61370959051284 40.001937251863488,-97.595964207410262 40.001930714334961,-97.593671575073259 40.001929869712491,-97.51530799999999 40.001900999999997,-97.511381 40.001899000000002,-97.510264000000006 40.001835,-97.48896951184885 40.0019310946697,-97.481234094494141 40.001966001936331,-97.463284999999999 40.00204699999999,-97.444661999999994 40.001957999999995,-97.425443 40.002048000000002,-97.417825999999991 40.002023999999999,-97.415833000000006 40.002000999999993,-97.369102999999996 40.00206,-97.350896000000006 40.001930000000002,-97.350272000000004 40.001975999999999,-97.256541388870858 40.001563097676062,-97.24516899999999 40.001513000000003,-97.245080000000002 40.001466999999998,-97.202309999999997 40.00144199999999,-97.200190000000006 40.001548999999997,-97.181775000000002 40.001550000000002,-97.165136038800085 40.001526729909067,-97.164288093539042 40.001525544031956,-97.157705785150654 40.001516338474417,-97.144150390621661 40.001497380844818,-97.142447999999987 40.001494999999998,-97.137865999999988 40.001814000000003,-97.049662999999995 40.001322999999999,-97.030802999999992 40.001342,-97.009164999999996 40.001463,-96.918187714380807 40.001505032225388,-96.916093000000004 40.001505999999999,-96.880459000000002 40.001448000000003,-96.878253 40.001466,-96.875056999999998 40.001448000000003,-96.873812 40.001449999999998,-96.868892342573133 40.001444286089438,-96.805301797100199 40.001370429180717,-96.693246065483095 40.001240282633297,-96.622400999999996 40.001157999999997,-96.610348999999999 40.000881,-96.604883999999984 40.000891000000003,-96.581788013355691 40.000963078853125,-96.580851999999993 40.000965999999998,-96.570853999999997 40.001090999999995,-96.557862999999998 40.000968,-96.538977000000003 40.000850999999997,-96.527110999999991 40.001030999999998,-96.469944999999996 40.000965999999998,-96.467535999999996 40.001035000000002,-96.463639999999998 40.000967000000003,-96.354812913341547 40.000735780492882,-96.350953725714731 40.00072758106856,-96.341811057717251 40.000708156095854,-96.304554999999993 40.000629000000004,-96.301066000000006 40.000632000000003,-96.239171999999996 40.000691000000003,-96.223838999999998 40.000729,-96.220170999999993 40.00072,-96.154364999999984 40.000495,-96.154246 40.00045,-96.147166999999982 40.000478999999999,-96.125936999999979 40.000432000000004,-96.125788 40.000467,-96.089781000000002 40.000518999999997,-96.081394999999986 40.000602999999998,-96.051691000000005 40.000726999999998,-96.02409 40.000718999999997,-96.014716997898134 40.000662392993569,-96.010677999999999 40.000638000000002,-95.995389500007406 40.000603953777215,-95.958139000000003 40.000520999999999,-95.901560435593936 40.000482839492363,-95.882524000000004 40.00047,-95.788023999999993 40.000452000000003,-95.784575000000004 40.000463000000003,-95.672891827756033 40.000336669594915,-95.658762261555324 40.000320686938032,-95.63965170807073 40.000299070038061,-95.565216789143676 40.000214872989645,-95.463103327781397 40.00009936736172,-95.455130658279359 40.000090349077695,-95.452048066669519 40.000086862204618,-95.438655850967621 40.000071713601649,-95.436011808705814 40.000068722793607,-95.426269559489981 40.00005770284973,-95.42148745056565 40.000052293567869,-95.41484447973599 40.000044779372317,-95.375257000000005 40.0,-95.339895999999982 39.999999000000003,-95.326448603970363 39.999998574530281,-95.30829 39.999997999999998,-95.308403999999996 39.993758,-95.307779999999994 39.990617999999998,-95.307111000000006 39.989114,-95.302506999999991 39.984357000000003,-95.289715 39.977705999999998,-95.274756999999994 39.972115000000002,-95.269885999999985 39.969396000000003,-95.261854 39.960617999999997,-95.257651999999993 39.954886000000002,-95.250253999999998 39.948644000000002,-95.241382999999999 39.944949,-95.236761 39.943930999999999,-95.231114000000005 39.943784,-95.220212000000004 39.944432999999997,-95.216440000000006 39.943953,-95.213736999999995 39.943205999999996,-95.204427999999993 39.938949,-95.201277000000005 39.934193999999998,-95.200689999999994 39.928154999999997,-95.20201 39.922438,-95.205744999999993 39.915168999999999,-95.206326000000004 39.912120999999999,-95.206195999999991 39.909557,-95.205732999999981 39.908275000000003,-95.202631127107011 39.904826841138963,-95.201935000000006 39.904052999999998,-95.19982446963148 39.902956959499498,-95.199773390195176 39.902930432929807,-95.199730682369619 39.902908253904485,-95.199347000000003 39.902709000000002,-95.193815999999984 39.900689999999997,-95.189565000000002 39.899959000000003,-95.179452999999995 39.900061999999991,-95.172296000000003 39.902025999999999,-95.159833999999989 39.906984,-95.156023999999988 39.907243,-95.153185481864639 39.906665666721331,-95.151701132402337 39.906363761184394,-95.149656999999991 39.905947999999995,-95.148243978290679 39.905255611516672,-95.146055000000004 39.904183000000003,-95.143801999999994 39.901917999999995,-95.142562999999981 39.897992000000002,-95.142444999999995 39.895419999999994,-95.143403000000006 39.889355999999992,-95.142718000000002 39.885888999999992,-95.140601000000004 39.88168799999999,-95.137091999999996 39.878350999999995,-95.134747000000004 39.876852,-95.128165999999993 39.874164999999998,-95.105912000000004 39.869163999999998,-95.090958483530287 39.863446088154532,-95.090158000000002 39.86314,-95.085003 39.861882999999999,-95.081534000000005 39.861718000000003,-95.079786043666886 39.861878094210859,-95.052535000000006 39.864373999999998,-95.042141999999998 39.864804999999997,-95.037767000000002 39.865541999999998,-95.034318031759739 39.867229060943565,-95.032053000000005 39.868336999999997,-95.031002514960235 39.869148692103728,-95.027930999999981 39.871521999999999,-95.025918959417425 39.87568321107333,-95.025422000000006 39.876711,-95.025119000000004 39.878833,-95.02586205726584 39.885935119809076,-95.025947000000002 39.886747,-95.025771840138887 39.887478608302466,-95.025475064075451 39.888718183571669,-95.025239999999997 39.889699999999998,-95.024388999999999 39.891202,-95.021897459019584 39.893924778577606,-95.019088516216428 39.896994416745422,-95.018742999999986 39.89737199999999,-95.018224596337973 39.897611313155366,-95.013151999999991 39.899952999999996,-95.010684182587667 39.900289758615472,-95.008439999999993 39.900596,-95.003818999999993 39.900400999999995,-94.990284000000003 39.897010000000002,-94.989784913598129 39.896958718834505,-94.987823822157509 39.896757216540813,-94.986975 39.89667,-94.985308455245701 39.896814869812808,-94.979390624873346 39.897329296428744,-94.977748999999989 39.897472,-94.963345000000004 39.901136,-94.959276000000003 39.901671,-94.958440298615102 39.901548064610132,-94.95153999999998 39.900532999999996,-94.943866999999983 39.898130000000002,-94.935306395585215 39.893779379194363,-94.934493000000003 39.893366,-94.929574000000002 39.888753999999992,-94.927897000000002 39.88611199999999,-94.927358999999996 39.883966,-94.927251999999996 39.880257999999991,-94.928466 39.876344000000003,-94.931084167287821 39.873075003673321,-94.931462999999994 39.872602,-94.938790999999995 39.866954,-94.940742999999998 39.864409999999999,-94.942407000000003 39.861065999999994,-94.942566999999983 39.856601999999995,-94.939767000000003 39.851930000000003,-94.937655000000007 39.849786000000002,-94.926149999999993 39.841321999999998,-94.916917999999995 39.836137999999998,-94.909941999999987 39.834426,-94.903156999999979 39.833849999999998,-94.892677000000006 39.834377999999994,-94.889493000000002 39.834026,-94.886932999999999 39.833098,-94.881012999999996 39.828921999999991,-94.878676999999996 39.826521999999997,-94.877043999999998 39.823754,-94.876543999999996 39.820594,-94.875944000000004 39.813293999999999,-94.87632679569893 39.807169268817198,-94.876344000000003 39.806894,-94.876705972386588 39.80614007495069,-94.880932 39.797338000000003,-94.884084 39.794234000000003,-94.890292000000002 39.791626,-94.892965000000004 39.791097999999991,-94.912908274541266 39.790276806342419,-94.92474489359239 39.789789416146199,-94.925605000000004 39.789753999999995,-94.925940683661906 39.789631963361245,-94.927258709273417 39.789152799691166,-94.929653999999999 39.788281999999995,-94.93035270914757 39.787827111232048,-94.930442023078356 39.787768964141691,-94.930979872832452 39.787418801541357,-94.932726000000002 39.786282,-94.932913349551853 39.786043884763131,-94.935059195246907 39.783316584105528,-94.935205999999994 39.78313,-94.935782000000003 39.778905999999999,-94.935301999999993 39.77561,-94.935036741896766 39.775108050050804,-94.934624304242575 39.774327591105198,-94.934262000000004 39.773642000000002,-94.929652999999988 39.769098,-94.929421387607832 39.768921584953624,-94.928626586797606 39.768316199289764,-94.926229000000006 39.76648999999999,-94.923991330811134 39.765173947104167,-94.916788999999994 39.760937999999996,-94.912293000000005 39.759337999999993,-94.906244 39.759417999999997,-94.905921454535701 39.759501730763866,-94.900921941190049 39.760799572828766,-94.899156000000005 39.761257999999998,-94.899025621234756 39.761323457651685,-94.895268000000002 39.76321,-94.895041000000006 39.763350000000003,-94.894070999999997 39.763945999999997,-94.893918999999997 39.76404,-94.893724000000006 39.764159999999997,-94.893646000000004 39.764208000000004,-94.883923999999993 39.770186000000002,-94.881460000000004 39.771258000000003,-94.881422 39.771258000000003,-94.874706321154179 39.772392308082928,-94.871144 39.772993999999997,-94.869643999999994 39.772894,-94.867142999999999 39.771693999999997,-94.865243000000007 39.770094,-94.863142999999994 39.767294,-94.860742999999999 39.763094000000002,-94.859442999999999 39.753694000000003,-94.860369889104035 39.749534984666809,-94.860371 39.74953,-94.862942999999987 39.742994000000003,-94.870142999999999 39.734594,-94.875642999999997 39.730494,-94.884142999999995 39.726793999999998,-94.891743999999989 39.724893999999999,-94.899315999999999 39.724041999999997,-94.900553640444031 39.724102079633198,-94.901582061073228 39.724152002964722,-94.902612000000005 39.724201999999998,-94.906055088082866 39.724933471502588,-94.907014260749904 39.725137244236571,-94.907785666538786 39.725301126582274,-94.910067999999995 39.725785999999999,-94.911087398893699 39.726157408899255,-94.918323999999998 39.728793999999994,-94.93000499999998 39.735370000000003,-94.939221000000003 39.74157799999999,-94.944740999999979 39.744377,-94.948658825773634 39.745572502168315,-94.948680784417533 39.745579202723142,-94.948725999999994 39.745593,-94.952629999999999 39.745961,-94.955286 39.745688999999999,-94.960086000000004 39.743065,-94.963779819772341 39.740240978767318,-94.964692434782606 39.73954326086956,-94.965317999999982 39.739064999999989,-94.965565209393333 39.738728671232884,-94.970224508542714 39.732389687437191,-94.970421999999985 39.732120999999999,-94.971205999999981 39.729304999999997,-94.971078000000006 39.723146,-94.968452999999997 39.707402000000002,-94.968980999999999 39.692954,-94.969909 39.689050000000002,-94.971316999999999 39.686410000000002,-94.976096392737759 39.68160006801152,-94.976325000000003 39.68137,-94.981556999999995 39.678634000000002,-94.984149000000002 39.677849999999992,-94.986445080691666 39.677537608069159,-94.990587390516794 39.676974028501114,-94.993556999999996 39.676569999999998,-94.998766892420107 39.676509388876212,-95.001379 39.676479,-95.004602740773237 39.676177881356345,-95.008105239221649 39.675850724907868,-95.009022999999999 39.675764999999998,-95.010225986948086 39.675477408241932,-95.013209713780839 39.674764104372102,-95.015309999999985 39.674261999999999,-95.018317999999994 39.672868999999999,-95.021521942351953 39.670631293568427,-95.024595000000005 39.668484999999997,-95.027643999999995 39.665453999999997,-95.037464 39.652904999999997,-95.039049000000006 39.649639,-95.044554000000005 39.644370000000002,-95.049518000000006 39.637875999999999,-95.053366999999994 39.630347,-95.054924999999997 39.624994999999991,-95.055024819926729 39.623527163368095,-95.055152000000007 39.621656999999992,-95.054958456554544 39.620961328886679,-95.053131423647116 39.614394255464305,-95.053011999999981 39.613965,-95.052555891387243 39.613278556984888,-95.047910999999999 39.606287999999999,-95.046445000000006 39.601605999999997,-95.046361000000005 39.599556999999997,-95.047165000000007 39.595117000000002,-95.049277000000004 39.589582999999998,-95.054804000000004 39.582487999999998,-95.056897000000006 39.580567000000002,-95.059518999999995 39.579132,-95.064519000000004 39.577114999999999,-95.066275551338904 39.576786470694117,-95.068266439890465 39.576414113098046,-95.069315000000003 39.576217999999997,-95.072159999999982 39.576121999999991,-95.075842551355763 39.576644128527029,-95.076688000000004 39.576763999999997,-95.088569515113861 39.580713698327401,-95.089515000000006 39.581028000000003,-95.09068217809525 39.58095107619048,-95.095736000000002 39.580618,-95.099095000000005 39.579690999999997,-95.100375015351446 39.579100080742663,-95.10182940536555 39.578428661399109,-95.103228 39.577782999999997,-95.106109962410699 39.575487768136732,-95.106244982404746 39.575380236480051,-95.106274453941239 39.575356764970024,-95.106406000000007 39.575251999999999,-95.107454000000004 39.573842999999997,-95.108931052511622 39.56997896968771,-95.109155613535791 39.569391508783276,-95.112830712234896 39.559777298955126,-95.112877844119652 39.559653999999995,-95.113077000000004 39.559132999999996,-95.113262990573148 39.557121201967142,-95.113516735173974 39.554376531201555,-95.113557 39.553940999999995,-95.113330390574859 39.553319942050457,-95.109694540741444 39.543355336910984,-95.109303999999995 39.542284999999993,-95.106595999999996 39.537657000000003,-95.106363136618171 39.537386330858773,-95.106309238275287 39.537323682029822,-95.102887999999993 39.533346999999999,-95.096713422649174 39.527826015970483,-95.095319522838992 39.526579663685382,-95.092703999999998 39.524241000000004,-95.082713999999996 39.516711999999998,-95.077440999999993 39.513551999999997,-95.059460999999985 39.506143000000002,-95.05637999999999 39.503971999999997,-95.052176999999986 39.499995999999996,-95.050551999999996 39.497514000000002,-95.049844999999991 39.494414999999989,-95.048370000000006 39.480420000000002,-95.047133000000002 39.474970999999996,-95.045715999999999 39.472459,-95.040779999999998 39.466386999999997,-95.03749999999998 39.463689000000002,-95.033407999999994 39.460875999999992,-95.028497999999999 39.458286999999999,-95.015825000000007 39.452809000000002,-94.995767999999998 39.448174000000002,-94.990172 39.446192000000003,-94.982144000000005 39.440551999999997,-94.978797999999998 39.436241000000003,-94.976606000000004 39.426701,-94.972952000000006 39.421705000000003,-94.968547467194298 39.418879728230785,-94.966981164652054 39.417875029083376,-94.966065999999998 39.417287999999999,-94.965430539155946 39.417093446959996,-94.954817000000006 39.413843999999997,-94.951209000000006 39.411706999999993,-94.947863999999996 39.408603999999997,-94.946292999999983 39.405645999999997,-94.946662000000003 39.399717000000003,-94.946226999999993 39.395648,-94.945577 39.393850999999998,-94.942038999999994 39.389499,-94.939696999999995 39.387949999999996,-94.938205659338905 39.38711651736979,-94.938199994953891 39.387113351650086,-94.938198708293527 39.387112632559479,-94.937157999999982 39.386530999999998,-94.933651999999995 39.385545999999998,-94.932170703908099 39.385397898493565,-94.923109999999994 39.384492000000002,-94.919224999999997 39.385173999999999,-94.915858999999998 39.386347999999998,-94.909581000000003 39.388865000000003,-94.901822999999993 39.392797999999999,-94.896448416922993 39.39340032396553,-94.894979000000006 39.393565000000002,-94.891845000000004 39.393312999999999,-94.888971999999995 39.392431999999999,-94.888058227506249 39.391822741147728,-94.885025999999996 39.389800999999999,-94.880978999999996 39.383899,-94.879281000000006 39.37977999999999,-94.879087999999996 39.375702999999994,-94.881359999999987 39.370382999999997,-94.885216 39.366911000000002,-94.890928000000002 39.364030999999997,-94.896832000000003 39.363135,-94.899023999999997 39.362431,-94.902496999999997 39.360382999999999,-94.90716104958679 39.35683832231404,-94.907297 39.356735,-94.907510470967722 39.356484333333356,-94.909408999999997 39.354254999999995,-94.910016999999996 39.352542999999997,-94.91007929967077 39.352122876579188,-94.910166635146069 39.351533921963672,-94.910234386079424 39.351077037464393,-94.910640999999998 39.348334999999999,-94.910055514481613 39.342727430625168,-94.908683540921714 39.329587162119807,-94.908064999999993 39.323663000000003,-94.906599414484603 39.317389801180319,-94.905982468129508 39.31474906332776,-94.905548856768945 39.312893060899633,-94.905328999999995 39.311951999999998,-94.904604536115073 39.31007473956825,-94.903592654247163 39.307452709910535,-94.903137 39.306272,-94.902341179156608 39.304705098857582,-94.900693838394318 39.301461629999167,-94.900362755471093 39.300809756886117,-94.900048999999996 39.300192000000003,-94.895217000000002 39.29420799999999,-94.889432625546704 39.288730528394183,-94.887056 39.286479999999997,-94.882576 39.283327999999997,-94.881425972827699 39.282735692772164,-94.879585687759075 39.281787876778168,-94.878319999999988 39.281135999999996,-94.869470269042495 39.278423959123423,-94.867567999999991 39.277841000000002,-94.866576416802303 39.277461598502107,-94.857072000000002 39.273825000000002,-94.850573678793964 39.270595179638669,-94.850470600187833 39.270543947117169,-94.846320000000006 39.268481,-94.844203868589133 39.266965084952687,-94.840994595225254 39.264666085108807,-94.837855000000005 39.262416999999999,-94.836102527271095 39.260730409704507,-94.834879550067882 39.259553409087879,-94.832501320107042 39.257264586268427,-94.832102355305352 39.256880620143498,-94.831470999999993 39.256273,-94.827487000000005 39.249888999999996,-94.826571473591798 39.245793223963304,-94.825663000000006 39.241728999999999,-94.826110999999983 39.238289000000002,-94.826405091238243 39.237538367125239,-94.827108391663188 39.2357432765168,-94.827791000000005 39.234000999999999,-94.828117769197533 39.233533772937683,-94.83244435695299 39.227347452739551,-94.834698551534771 39.224124319346686,-94.834896 39.223841999999998,-94.834917496024659 39.223414229109203,-94.835039139715306 39.220993519665384,-94.835046603087861 39.220844998551456,-94.835055999999994 39.220658,-94.833551999999997 39.217793999999998,-94.831678999999994 39.215938,-94.823791 39.209873999999999,-94.820687000000007 39.208626000000002,-94.811662999999996 39.206594000000003,-94.800359054554335 39.206051410618606,-94.799662999999995 39.206018,-94.798924306591658 39.206116812235138,-94.793913945984244 39.206787029303406,-94.788135068391796 39.207560047994349,-94.787343000000007 39.207666000000003,-94.783838000000003 39.207154000000003,-94.781518000000005 39.206145999999997,-94.780294078498926 39.205273290755756,-94.778971577769184 39.204330290235411,-94.777838000000003 39.203522,-94.775537999999997 39.200602000000003,-94.770897097034492 39.191141697801093,-94.770859400196969 39.191064854247678,-94.770337999999995 39.190002,-94.763137999999998 39.179903000000003,-94.75233799999998 39.173202999999994,-94.74193799999999 39.170203,-94.736536999999998 39.169203000000003,-94.723636999999997 39.169002999999989,-94.714136999999994 39.170403,-94.696331999999998 39.178562999999997,-94.687235999999999 39.183503000000002,-94.680335999999983 39.184303,-94.669134999999997 39.182003000000002,-94.663835000000006 39.179102999999998,-94.660314999999997 39.168050999999991,-94.662434999999988 39.157602999999995,-94.650734999999983 39.154102999999999,-94.640034999999997 39.153102999999994,-94.623934000000006 39.156602999999997,-94.615834000000007 39.160003000000003,-94.608834000000002 39.160502999999999,-94.601732999999996 39.15960299999999,-94.596033000000006 39.157702999999998,-94.591932999999997 39.155003,-94.589933000000002 39.140402999999999,-94.592533000000003 39.135902999999992,-94.600433999999993 39.128503000000002,-94.605733999999998 39.122204000000004,-94.607033999999999 39.119404000000003,-94.607354 39.113444,-94.607234000000005 39.089604,-94.607333999999994 39.081703999999995,-94.607275518421304 39.072346947409343,-94.607234000000005 39.065703999999997,-94.607342812841125 39.057404745686583,-94.60738379566331 39.05427894858029,-94.607437239929951 39.050202705779334,-94.607518499034526 39.044004999999999,-94.607559479691474 39.040879368039988,-94.607612854426819 39.036808428453341,-94.60764748233197 39.034167326647299,-94.607654028188094 39.033668068249817,-94.60769507925167 39.030537066312085,-94.607898722639391 39.015005000000002,-94.607914652765047 39.013789994834404,-94.607991843462372 39.007902590176151,-94.608087526605189 39.000604749887366,-94.608092759229436 39.000205652880325,-94.608190956218394 38.992716079262479,-94.608212339138063 38.991085184540211,-94.608264438806202 38.98711149548862,-94.608279957450691 38.985927874365181,-94.608301211867541 38.984306780669819,-94.608333999999999 38.981805999999999,-94.608294286905348 38.97390309416464,-94.608273484679671 38.969763451253407,-94.608249262127771 38.964943163424849,-94.608207879518076 38.956708024096379,-94.608134000000007 38.942005999999999,-94.608134000000007 38.940005999999997,-94.607866 38.937398000000002,-94.607977999999989 38.936869999999992,-94.608002838442587 38.912906322207348,-94.608006216770249 38.909646973100827,-94.608010407202343 38.90560412040071,-94.608022064178897 38.894357681354862,-94.60802273861259 38.893706999999999,-94.608033000000006 38.883806999999997,-94.608033000000006 38.869207000000003,-94.608033000000006 38.868107000000002,-94.607992999999993 38.867271000000002,-94.608033000000006 38.861207,-94.608033000000006 38.855007,-94.608033000000006 38.850107,-94.608033000000006 38.847206999999997,-94.607624999999999 38.827559999999991,-94.607668973053535 38.825816299300072,-94.608041 38.811064000000002,-94.608617609754887 38.781926100280451,-94.609398999999996 38.742440000000002,-94.60945599999998 38.74069999999999,-94.609507757106428 38.73815999467709,-94.609625656590424 38.7323740198146,-94.610322172686637 38.698192151600097,-94.61071084056907 38.679118085101081,-94.61073851283922 38.677760054904219,-94.611602000000005 38.635384000000002,-94.611464999999995 38.625011,-94.611857999999998 38.620485000000002,-94.611908 38.609271999999997,-94.611905562149673 38.605890005062435,-94.611886999999996 38.580139000000003,-94.611902 38.580109999999998,-94.612176000000005 38.576546,-94.612156999999996 38.549816999999997,-94.612272000000004 38.547916999999998,-94.612464742072774 38.518760616499996,-94.612644000000003 38.491644,-94.612725999999995 38.484366999999999,-94.612696 38.483153999999999,-94.612865999999997 38.477570999999998,-94.613365000000002 38.403421999999999,-94.613264999999998 38.392426,-94.613275404637193 38.388718047420433,-94.613328999999993 38.369617999999996,-94.613311999999993 38.364407,-94.613085455228386 38.3436360393057,-94.612999999999985 38.335800999999996,-94.612825 38.324387000000002,-94.612787999999995 38.320141999999997,-94.612673 38.314832000000003,-94.612673 38.302526999999998,-94.612689368276676 38.301464114946214,-94.612843999999996 38.291422999999995,-94.612848999999997 38.289914000000003,-94.612707829046002 38.272362044447966,-94.612691999999996 38.270394000000003,-94.612613999999994 38.237766,-94.612634999999997 38.226987,-94.612658999999994 38.219251,-94.61265866950464 38.21872154645218,-94.612657999999982 38.217649000000002,-94.612821999999994 38.203918000000002,-94.612848 38.200713999999998,-94.613073 38.190551999999997,-94.61341774677895 38.168183959706163,-94.613422 38.16790799999999,-94.613748 38.160632999999997,-94.613855999999998 38.149768999999999,-94.613889466360249 38.136312911169284,-94.613919497343275 38.124238112111762,-94.614061000000007 38.067343,-94.614088999999993 38.065900999999997,-94.614054999999993 38.060088,-94.613980999999995 38.036949,-94.614211999999981 37.992462000000003,-94.614464999999996 37.987798999999995,-94.614511123427164 37.979395512107736,-94.614514360688489 37.978805697169918,-94.614557000000005 37.971036999999995,-94.614561999999992 37.951517000000003,-94.614593999999997 37.949977999999994,-94.614611999999994 37.944361999999998,-94.614754000000005 37.940769000000003,-94.614834999999999 37.936700000000002,-94.614778 37.934199999999997,-94.615181000000007 37.915944000000003,-94.615392999999983 37.906391999999997,-94.61546899999999 37.901775,-94.615706000000003 37.886842999999999,-94.615921 37.878331000000003,-94.615834000000007 37.872509999999998,-94.616 37.863126,-94.616282760205394 37.851281931678621,-94.616426000000004 37.845281999999997,-94.616433230053673 37.842955730230052,-94.61645 37.837560000000003,-94.616861999999998 37.819456000000002,-94.6176681324215 37.775831003788085,-94.617720999999989 37.77297,-94.617737774720197 37.764628336555312,-94.617744979193901 37.761045725680312,-94.617807999999997 37.729706999999998,-94.617975 37.722175999999997,-94.61780499999999 37.690178000000003,-94.617650999999995 37.687671000000002,-94.617687000000004 37.686652999999993,-94.617885 37.682214000000002,-94.617733999999999 37.673127,-94.617576 37.653671000000003,-94.617517909436387 37.643988652624088,-94.61747699999998 37.637169999999998,-94.617472819127315 37.636539916507168,-94.6173 37.610495,-94.617428000000004 37.609521999999998,-94.617283 37.571896000000002,-94.617315000000005 37.571498999999996,-94.617080999999999 37.567013000000003,-94.61711240153133 37.563155381499406,-94.617159999999984 37.557307999999999,-94.617186000000004 37.553485000000002,-94.617167532949537 37.551779056391354,-94.616988484457494 37.535238968895172,-94.616907999999981 37.527804000000003,-94.616788999999997 37.521509999999999,-94.616880369657522 37.506771761864755,-94.617022999999989 37.483764999999998,-94.617182999999997 37.469664999999999,-94.617180000000005 37.465203000000002,-94.617221999999998 37.460476,-94.617204999999984 37.46037299999999,-94.617200999999994 37.454788,-94.617131999999998 37.439818000000002,-94.617265000000003 37.425535999999994,-94.617510999999993 37.410908999999997,-94.617557000000005 37.396374999999999,-94.61759158917468 37.381725975861251,-94.617625000000004 37.367576,-94.617626 37.367444999999989,-94.617536999999999 37.364355000000003,-94.617636000000005 37.338417,-94.617694999999998 37.336841999999997,-94.617648000000003 37.323588999999998,-94.61807499999999 37.240436000000003,-94.618157999999994 37.237596999999994,-94.618122999999997 37.229334,-94.61815 37.228121000000002,-94.618218999999996 37.207771999999999,-94.618305000000007 37.207337000000003,-94.618319 37.188774000000002,-94.618504999999985 37.181184000000002,-94.618472999999994 37.174782,-94.618351000000004 37.160210999999997,-94.618071999999998 37.132345,-94.61807499999999 37.129755000000003,-94.61816441512984 37.118929895303054,-94.618212 37.113168999999992,-94.618150999999997 37.103968000000002,-94.618059000000002 37.096676000000002,-94.618088 37.093670999999993,-94.618089999999995 37.093494,-94.618085255103864 37.089305442941992,-94.618082 37.086432000000002,-94.61811999999999 37.085934000000002,-94.617981999999998 37.075077,-94.617954311863897 37.070346986543974,-94.617947706480578 37.069218577181687,-94.617910161110728 37.062804634983031,-94.617893975984089 37.060039701061122,-94.617874999999998 37.056798,-94.617877538275181 37.056339390079508,-94.617964999999998 37.040537,-94.617972200190749 37.032971759572447,-94.617994999999979 37.009015999999995,-94.618027702303792 37.004829720380044,-94.618080000000006 36.998134999999998,-94.625223999999989 36.998671999999999,-94.699735000000004 36.998804999999997,-94.701796999999999 36.998814000000003,-94.711286363060864 36.99879670415919,-94.712770000000006 36.99879399999999,-94.722629184733563 36.998741903378082,-94.732834603466486 36.998687977231512,-94.736330645670293 36.998669503899912,-94.737183000000002 36.998665000000003,-94.739323999999996 36.998686999999997,-94.745992043692311 36.998700535427304,-94.749560781475736 36.99870777958963,-94.749834600019099 36.998708335412474,-94.777257000000006 36.998764,-94.831280000000007 36.998812,-94.831539962039543 36.998812565955092,-94.840925999999996 36.998832999999998,-94.846637705524785 36.998860673615503,-94.849800999999999 36.998875999999996,-94.853196999999994 36.998874,-94.896852168601683 36.999075231107383,-94.904605402657381 36.99911097010289,-94.9407882710602 36.999277757196154,-94.995293000000004 36.999528999999995,-95.007620000000003 36.999513999999998,-95.011432999999997 36.999535000000002,-95.030323999999993 36.999516999999997,-95.037857000000002 36.999496999999998,-95.049498999999983 36.999580000000002,-95.073509 36.999509000000003,-95.1405498515593 36.999533623834409,-95.155186999999998 36.999538999999999,-95.155372 36.999540000000003,-95.159067907556633 36.999536629205572,-95.177300999999986 36.999519999999997,-95.195307 36.999564999999997,-95.267905305061163 36.999446910377756,-95.285983101167361 36.999417504731007,-95.322564999999997 36.999357999999994,-95.328057999999999 36.999364999999997,-95.328326999999987 36.999366000000002,-95.331209999999999 36.999380000000002,-95.377252424658963 36.999296311678272,-95.381753803085687 36.999288129815376,-95.407683000000006 36.999240999999998,-95.511578 36.999234999999999,-95.522414951940931 36.999281058114107,-95.534401000000003 36.999332000000003,-95.573598000000004 36.999309999999994,-95.601517312742303 36.999317968253862,-95.612139999999997 36.999321000000002,-95.615933999999996 36.999364999999997,-95.621011943860609 36.999361983160732,-95.624350000000007 36.999360000000003,-95.630078999999995 36.999319999999997,-95.638122589416028 36.999320470082949,-95.664300999999995 36.999321999999999,-95.674044398562955 36.999333876292773,-95.686452000000003 36.999349000000002,-95.696658999999997 36.999215,-95.71038 36.999370999999996,-95.710782524132014 36.999362783399121,-95.714887000000004 36.999279,-95.718053999999995 36.999254999999998,-95.741907999999995 36.999243999999997,-95.746466244276931 36.999250838506164,-95.759905000000003 36.999270999999993,-95.768719000000004 36.999205000000003,-95.786761999999996 36.999309999999994,-95.807979999999986 36.999124000000002,-95.819364496908179 36.999150471530008,-95.866899000000004 36.999260999999997,-95.873943999999995 36.999299999999998,-95.875256999999991 36.999302,-95.877150999999998 36.999304000000002,-95.910179999999997 36.999336,-95.928122000000002 36.999245000000002,-95.936991999999989 36.999267999999994,-95.964270378114222 36.999093604402042,-96.00081 36.99886,-96.095164142267308 36.998935940299688,-96.14121 36.998972999999999,-96.143207000000004 36.999133999999998,-96.147143 36.999021999999997,-96.149709 36.99904,-96.152383999999998 36.999050999999994,-96.154016999999982 36.999161,-96.184768000000005 36.999211000000003,-96.200028000000003 36.999028000000003,-96.217571000000007 36.999070000000003,-96.235320025971774 36.999130675786525,-96.27480962492784 36.999265672629733,-96.276368000000005 36.999270999999993,-96.279078999999996 36.999271999999991,-96.381556872639493 36.999226629434901,-96.394272 36.999220999999999,-96.415412000000003 36.999113,-96.500287999999998 36.998643,-96.525212323286397 36.998711038495294,-96.525495980566973 36.998711812823821,-96.551130926932458 36.998781791180214,-96.551130927020779 36.998781791180456,-96.624487489749981 36.998982040153741,-96.705431000000004 36.999203,-96.710481999999999 36.999270999999993,-96.731983006833033 36.99928335311408,-96.736589999999993 36.999285999999998,-96.741269999999986 36.999239000000003,-96.749837999999997 36.998987999999997,-96.792060000000006 36.999179999999996,-96.795198999999997 36.99886,-96.822790999999995 36.999181999999998,-96.867517000000007 36.999217000000002,-96.876289999999997 36.999232999999997,-96.902083000000005 36.999155000000002,-96.903509999999997 36.999132000000003,-96.917092999999994 36.999181999999998,-96.921914999999998 36.999150999999998,-96.924934279563146 36.999131784030439,-96.934641999999997 36.999070000000003,-96.967371 36.999066999999997,-96.975561999999996 36.999018999999997,-97.030081999999979 36.998928999999997,-97.039783999999983 36.999000000000002,-97.045562883576096 36.99899981011751,-97.100651999999997 36.998998,-97.104275999999999 36.999020000000002,-97.120284999999996 36.999014000000003,-97.122596999999999 36.999035999999997,-97.147721000000004 36.999110999999999,-97.202000013134437 36.999050609464689,-97.255829185181881 36.998990719420135,-97.342808466604069 36.998893946743877,-97.362376892203329 36.998872175019791,-97.364929972745273 36.99886933447624,-97.372421000000003 36.998860999999998,-97.384924999999996 36.998843,-97.462279999999993 36.998685000000002,-97.472860999999995 36.998721000000003,-97.527292000000003 36.998749999999994,-97.545899999999989 36.998708999999991,-97.546497999999985 36.998746999999995,-97.564536000000004 36.998711,-97.582460039051355 36.99869862770732,-97.606549 36.998682000000002,-97.637136999999996 36.999090000000002,-97.650465999999994 36.999003999999999,-97.692180007144742 36.998844793059916,-97.697103999999982 36.998826,-97.768704 36.998749999999994,-97.783432000000005 36.998961,-97.783489000000003 36.998846999999998,-97.802297999999979 36.998713000000002,-97.965379045838461 36.998468720211747,-98.033955000000006 36.998365999999997,-98.03989 36.998348999999997,-98.045341999999991 36.998327000000003,-98.111985000000004 36.998133000000003,-98.128185436781749 36.99814624647324,-98.147452 36.998162,-98.177595999999994 36.998008999999996,-98.190367496841162 36.998003995168112,-98.208218000000002 36.997996999999998,-98.219498999999999 36.997824,-98.237712000000002 36.99797199999999,-98.346187999999984 36.997962,-98.347186011230875 36.997961873429141,-98.354073 36.997960999999997,-98.408991 36.998513000000003,-98.418267999999998 36.998538000000003,-98.420209 36.998516000000002,-98.476584655565659 36.998733519956424,-98.485495952453391 36.998767903324406,-98.544871999999984 36.998997000000003,-98.622244241689657 36.999025734091177,-98.714511999999999 36.99906,-98.718464999999995 36.999179999999996,-98.761596999999995 36.999425000000002,-98.791936000000007 36.999254999999998,-98.793711000000002 36.999226999999991,-98.797451999999993 36.999228999999993,-98.811832237742053 36.99924038482925,-98.869449000000003 36.999285999999998,-98.880009 36.999262999999999,-98.880579999999995 36.999308999999997,-98.994371 36.999493,-99.000846251360556 36.99951188908193,-99.029336999999998 36.999594999999999,-99.044703416105833 36.999312701167916,-99.049695 36.999220999999999,-99.124882999999997 36.99942,-99.12944899999998 36.999422000000003,-99.215429691089184 36.999525607779709,-99.221470798208784 36.999532887387339,-99.22594390512576 36.999538277535649,-99.248119999999986 36.999564999999997,-99.277506000000002 36.999578999999997,-99.375390999999993 37.000176999999994,-99.375813215185289 37.000169016042221,-99.396673054015949 36.999774562980598,-99.407015 36.999578999999997,-99.456202999999988 36.999471,-99.484333000000007 36.999625999999999,-99.500394999999983 36.99957599999999,-99.500394999999983 36.999637,-99.502664999999993 36.999645,-99.504092999999997 36.999648,-99.508573999999982 36.999657999999997,-99.541115670095081 36.999572526667627,-99.558068000000006 36.999527999999998,-99.625399000000002 36.999670999999999,-99.648651999999998 36.999603999999998,-99.657657999999998 37.000197,-99.675479899119665 37.000294824261658,-99.700804554289192 37.000433831091229,-99.722499410223932 37.000552913981863,-99.774254999999997 37.000836999999997,-99.774816 37.000841,-99.786016000000004 37.000931,-99.875408999999991 37.001658999999997,-99.904897139036905 37.001652107487203,-99.995200999999994 37.001631000000003,-100.001285999999993 37.001699000000002,-100.002562999999995 37.001705999999999,-100.005706000000004 37.001725999999998,-100.08949117994996 37.002091554886341,-100.115721999999991 37.002206,-100.187546999999995 37.002082,-100.19237099999998 37.002035999999997,-100.193753999999998 37.002133,-100.201675999999992 37.002080999999997,-100.269984573601874 37.001795796937508,-100.395563941387664 37.001271475927872,-100.434302684862132 37.001109733298897,-100.434343961694367 37.0011095609592,-100.436759028295029 37.001099477534027,-100.462594151135718 37.000991610310841,-100.526354155903263 37.000725398506596,-100.551597999999998 37.000619999999998,-100.552683000000002 37.000734999999999,-100.591328000000004 37.000376000000003,-100.591413000000003 37.000399000000002,-100.629769999999994 37.000025,-100.63332699999998 36.999935999999998,-100.675551999999996 36.999687999999999,-100.734516999999997 36.999059000000003,-100.756894000000003 36.999356999999996,-100.759718826764541 36.999297806889686,-100.765484 36.999177000000003,-100.806116000000003 36.999091,-100.814277000000004 36.999085,-100.850054835707368 36.998687920265262,-100.855633999999981 36.998626000000002,-100.891659999999987 36.998604,-100.904274 36.998745,-100.904588000000004 36.998561000000002,-100.945565999999985 36.998151999999997,-100.958261085233985 36.99812508251128,-100.996501999999992 36.998044,-101.012641000000002 36.998176,-101.053589000000002 36.997966999999996,-101.066742000000005 36.997920999999998,-101.096255470166753 36.997758490771822,-101.211485999999979 36.997123999999999,-101.212908999999996 36.997044000000002,-101.283204233333976 36.996668964004151,-101.357796999999991 36.996271,-101.359673999999998 36.996231999999999,-101.37818 36.996164,-101.413867999999994 36.996008000000003,-101.415004999999994 36.995966000000003,-101.485326 36.995610999999997,-101.519065999999995 36.99554599999999,-101.555239 36.99541399999999,-101.600396000000003 36.995152999999995,-101.601592999999994 36.995094999999999,-101.672152845644291 36.994768289529276,-101.672152845650672 36.994768289529254,-101.718235173867967 36.994554916342196,-101.761767880686108 36.994353348566563,-101.826607533764985 36.994053124077894,-101.862548907230888 36.993886706153717,-101.881050066963184 36.993801040963412,-101.899294480822903 36.993716564573397,-101.902439999999999 36.993701999999999,-101.905152836625547 36.993689460946754,-101.93521516037174 36.99355050931414,-102.000446999999994 36.993248999999992,-102.000446999999994 36.993271999999997,-102.028206999999981 36.993124999999999,-102.042240000000007 36.993082999999999,-102.041951999999995 37.024741999999996,-102.04195 37.030805,-102.041921000000002 37.032178000000002,-102.041748999999996 37.034396999999998,-102.04191999999999 37.035083,-102.041983000000002 37.106551000000003,-102.041808999999986 37.111972999999999,-102.042091999999997 37.125020999999997,-102.042135000000002 37.125020999999997,-102.042121535383529 37.12671399835564,-102.042001999999997 37.141744000000003,-102.041962999999996 37.258164,-102.041663999999997 37.29764999999999,-102.041816999999995 37.309489999999997,-102.041973999999996 37.352612999999998,-102.042089000000004 37.352818999999997,-102.041523999999995 37.375017999999997,-102.041585760607518 37.389190434149839,-102.041675999999981 37.409897999999991,-102.041668999999999 37.434739999999998,-102.041754999999995 37.434854999999992,-102.041800999999992 37.469487999999998,-102.041786000000002 37.506065999999997,-102.04201599999999 37.535260999999998,-102.041899 37.541186000000003,-102.041893999999999 37.557977,-102.041618 37.607868000000003,-102.041584999999998 37.644281999999997,-102.041581999999991 37.654494999999997,-102.041694000000007 37.665680999999999,-102.041573999999997 37.680436,-102.041876000000002 37.723875,-102.041989965869121 37.73854062916552,-102.042158 37.760164000000003,-102.042668000000006 37.788758,-102.042952999999997 37.803534999999997,-102.043032999999994 37.824145999999999,-102.043218999999993 37.86792899999999,-102.043714531331204 37.914003914798144,-102.043845000000005 37.926135000000002,-102.043844000000007 37.928101999999996,-102.044644000000005 38.045532,-102.044255000000007 38.113010999999993,-102.044450868202546 38.120049353793199,-102.044589000000002 38.125012999999996,-102.044415729020699 38.133607343100145,-102.044251000000003 38.141777999999995,-102.044296878804843 38.175558844899406,-102.044398 38.250014999999998,-102.044510721728557 38.262483349316234,-102.044567999999998 38.268819,-102.044612999999998 38.312323999999997,-102.044944 38.384419,-102.044441999999989 38.415801999999999,-102.044936000000007 38.41968,-102.045323999999979 38.453646999999997,-102.045262999999991 38.505395,-102.045261999999994 38.505531999999995,-102.045112000000003 38.523783999999999,-102.045222999999993 38.543796999999998,-102.045188999999979 38.558731999999992,-102.045210999999995 38.581608999999993,-102.045287999999999 38.615248999999999,-102.045074 38.669617000000002,-102.045102 38.674945999999998,-102.045159999999996 38.675221,-102.045126999999994 38.686725000000003,-102.045156000000006 38.688555,-102.045211999999992 38.697566999999999,-102.045375000000007 38.754338999999995,-102.045287000000002 38.755527999999998,-102.045371000000003 38.770063999999998,-102.045447999999993 38.783453000000002,-102.045333999999997 38.799463000000003,-102.045387999999988 38.813391999999993,-102.046570999999986 39.047038,-102.047133999999986 39.129700999999997,-102.047188612927897 39.133146793270186,-102.047250000000005 39.13702,-102.047851021058236 39.220289738242592,-102.048449000000005 39.30313799999999,-102.04895999999998 39.37371199999999,-102.049100972149461 39.394064428437375,-102.049166999999983 39.403596999999998,-102.049369999999996 39.418210000000002,-102.049368999999999 39.423333,-102.049678999999998 39.506183,-102.049672999999999 39.536690999999998,-102.049553999999986 39.538932000000003,-102.049763758475066 39.568170000775439,-102.04980599999999 39.574058,-102.049954 39.592331,-102.050258163748609 39.627242889069393,-102.050421999999983 39.646047999999993,-102.050099000000003 39.653812000000002,-102.05059399999999 39.67559399999999,-102.050898693231389 39.741794606053567,-102.051254 39.818992,-102.051317999999995 39.833311000000002,-102.051362999999995 39.843471,-102.051569 39.849805000000003,-102.051743999999999 40.003078000000002))');
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/sql/tx.wkt b/webapp/django/contrib/gis/tests/geoapp/sql/tx.wkt
deleted file mode 100644
index 768f13f..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/sql/tx.wkt
+++ /dev/null
@@ -1 +0,0 @@
-MULTIPOLYGON (((-103.00243399999998 36.500397,-102.90421904194784 36.500393342967676,-102.8402359524855 36.500390960558398,-102.840235952479716 36.500390960558398,-102.840235952474345 36.500390960558398,-102.840235952468362 36.500390960558398,-102.840235952461725 36.500390960558398,-102.840235952455885 36.500390960558398,-102.792077446284736 36.500389167377229,-102.643207699865854 36.500383624214699,-102.366462330167067 36.500373319605465,-102.250452999999979 36.500368999999999,-102.24499 36.500703999999999,-102.162463000000002 36.500326,-102.12545 36.500323999999999,-102.124752896301885 36.500398159967887,-102.122066000000004 36.500684,-101.930244999999999 36.500526,-101.925344139375468 36.500484781341967,-101.914929315957153 36.500397187533892,-101.826564999999988 36.499653999999992,-101.826498 36.499535000000002,-101.81449312121488 36.499579719643286,-101.788110000000003 36.499678000000003,-101.783359000000004 36.499709000000003,-101.781987 36.499718,-101.780609999999982 36.499727,-101.779435000000007 36.499733999999997,-101.773235954788092 36.499732939140301,-101.709314000000006 36.499721999999998,-101.698684999999998 36.499507999999999,-101.653707999999995 36.499572999999998,-101.649966000000006 36.499572999999998,-101.623914999999997 36.499527999999998,-101.414793008557069 36.499417763984319,-101.392608849457574 36.499406069885133,-101.340061173170298 36.499378370041477,-101.085155999999984 36.499243999999997,-101.052418000000003 36.499562999999995,-101.04533099999999 36.499540000000003,-100.977087999999995 36.499594999999999,-100.936058000000003 36.499602000000003,-100.918513000000004 36.499620999999998,-100.884174000000002 36.499682,-100.884079999999997 36.499682,-100.859656999999984 36.499687000000002,-100.850840000000005 36.49969999999999,-100.824235999999999 36.499617999999998,-100.824218000000002 36.499617999999998,-100.80619 36.499673999999999,-100.806172000000004 36.499634,-100.802909 36.499620999999998,-100.802886 36.499620999999998,-100.761810999999994 36.499617999999998,-100.761810999999994 36.499580000000002,-100.724361999999999 36.499580000000002,-100.724361000000002 36.499558,-100.708625999999995 36.499552999999999,-100.708628000000004 36.499520999999994,-100.657762999999989 36.499482999999991,-100.657762999999989 36.499499999999998,-100.648342999999997 36.499495000000003,-100.648343999999994 36.499462999999999,-100.592613999999998 36.499468999999998,-100.592555999999988 36.499468999999998,-100.592551 36.499428999999999,-100.583539000000002 36.499482999999991,-100.583378999999994 36.499442999999999,-100.578113999999999 36.499462999999999,-100.578113999999999 36.499439000000002,-100.546144999999996 36.499343000000003,-100.531215000000003 36.499341,-100.531215000000003 36.499290000000002,-100.530478000000002 36.49924,-100.530314000000004 36.499357000000003,-100.522227 36.499290999999999,-100.441064999999995 36.499490000000002,-100.441063999999997 36.499462,-100.433959000000002 36.499456000000002,-100.421327999999988 36.499447000000004,-100.421300999999985 36.499487999999999,-100.413634000000002 36.499443999999997,-100.41355 36.499468999999998,-100.378634000000005 36.499516999999997,-100.378591999999998 36.499445,-100.35185199999998 36.499487000000002,-100.351841999999991 36.499473000000002,-100.334463999999997 36.49942,-100.334440999999998 36.49944,-100.324150000000003 36.499679,-100.311244999999985 36.499631,-100.311018000000004 36.499687999999999,-100.310642999999985 36.499642,-100.253572851827684 36.499638031344489,-100.181220999999994 36.499633000000003,-100.090020999999993 36.499634,-100.000405999999984 36.499701999999999,-100.0004059967807 36.499497793115623,-100.00040222345956 36.260147946939995,-100.000399000000002 36.055677000000003,-100.000396170268971 35.879197994164429,-100.000394020347557 35.745115995014778,-100.000391999999991 35.619115,-100.000390396259149 35.519130234823749,-100.000386875554753 35.299632926398459,-100.000386874882437 35.299591010324292,-100.000386852473085 35.298193905884737,-100.000384999999994 35.182701999999999,-100.000381972929958 34.852568985943549,-100.000381605014198 34.812443999872983,-100.000381000000004 34.746460999999996,-100.000381000000004 34.570853999999997,-100.000381000000004 34.570647,-100.000381000000004 34.560509000000003,-99.998254592787575 34.560446149085699,-99.997501461048799 34.560423888524269,-99.985833 34.560079000000002,-99.974761999999998 34.561317999999993,-99.971554999999995 34.562179,-99.965608000000003 34.565843999999998,-99.958898000000005 34.571271000000003,-99.957540999999992 34.572708999999996,-99.95755299999999 34.574168999999998,-99.956716999999998 34.576523999999992,-99.954566999999997 34.578195,-99.94571999999998 34.579273,-99.930492488760507 34.576894921075187,-99.930189904388058 34.576847666503667,-99.929333999999997 34.576714000000003,-99.923210999999995 34.574551999999997,-99.921801000000002 34.570253,-99.915771000000007 34.565975000000002,-99.914151070156151 34.564995899308187,-99.898943000000003 34.555804000000002,-99.896006999999997 34.555529999999997,-99.89376 34.554219000000003,-99.887146999999999 34.549047000000002,-99.885392392967745 34.547401436342639,-99.884583851343237 34.546643143067669,-99.87806651563541 34.540530839522475,-99.87650823800611 34.539069404005723,-99.874403 34.537095,-99.873254000000003 34.535350999999999,-99.872356999999994 34.532096000000003,-99.868953000000005 34.52761499999999,-99.867217250163094 34.525864500605081,-99.853065999999998 34.511592999999998,-99.832903999999985 34.500067999999999,-99.825324999999992 34.497596,-99.818185999999997 34.487839999999991,-99.818738999999979 34.484975999999996,-99.814544624457952 34.476663062301249,-99.814312999999984 34.476204000000003,-99.793683999999999 34.453893999999998,-99.783787954821193 34.445078397966533,-99.782985999999994 34.444364,-99.775743000000006 34.444225000000003,-99.774224411180043 34.443216449834381,-99.765598999999995 34.437488000000002,-99.764825999999999 34.436433999999998,-99.764881999999986 34.435265999999999,-99.767647999999994 34.431854,-99.767234000000002 34.430501999999997,-99.754248000000004 34.421288999999994,-99.740907000000007 34.414763,-99.735679661059166 34.413018903486261,-99.730348000000006 34.411239999999992,-99.720258999999999 34.406295,-99.719721039768913 34.405807854123296,-99.716415999999995 34.402814999999997,-99.715089000000006 34.400753999999999,-99.714231999999996 34.397821999999998,-99.714838 34.394523999999997,-99.712682 34.390928000000002,-99.707900999999993 34.387538999999997,-99.696461999999997 34.381036000000002,-99.678282999999979 34.379798999999998,-99.672337448339604 34.378003970284972,-99.671377000000007 34.377713999999997,-99.666676988468737 34.374633899592595,-99.665992000000003 34.374184999999997,-99.665404581506792 34.374094751646162,-99.662705000000003 34.373679999999993,-99.659863615570984 34.374283464835351,-99.659362000000002 34.374389999999998,-99.654194000000004 34.376519000000002,-99.649662000000006 34.379885000000002,-99.630904999999998 34.376007,-99.628541546335526 34.375150829397036,-99.624196999999995 34.373576999999997,-99.600026 34.374687999999999,-99.596322999999998 34.377136999999998,-99.587595999999991 34.385866999999998,-99.587235087741874 34.386377538370702,-99.585718954359294 34.388522226586467,-99.585441999999986 34.388914,-99.584530999999984 34.391204999999999,-99.585306000000003 34.398122,-99.584479999999985 34.407673000000003,-99.580059999999989 34.416652999999997,-99.574366999999995 34.418281,-99.569695999999993 34.418418000000003,-99.563067665646059 34.417445690943012,-99.562203999999994 34.417318999999999,-99.561530791054494 34.417028950664999,-99.555986000000004 34.414639999999999,-99.549242000000007 34.412714999999992,-99.529786 34.411451999999997,-99.528744576810823 34.411579971493573,-99.523649999999989 34.412205999999998,-99.517623999999998 34.414493999999991,-99.514279999999999 34.414034999999998,-99.499874999999989 34.409607999999999,-99.497090999999983 34.407730999999991,-99.494103999999993 34.404755000000002,-99.490425999999999 34.399693999999997,-99.487218999999982 34.397955000000003,-99.477547 34.396355,-99.477019613816751 34.396364300212412,-99.474810232095294 34.396403261641368,-99.472297823530695 34.396447566809115,-99.470968999999997 34.396470999999991,-99.463286816319666 34.393024688790533,-99.452647999999996 34.388252,-99.445020999999983 34.379891999999998,-99.440759999999997 34.374122999999997,-99.430994999999982 34.373413999999997,-99.43081720973791 34.373532661492725,-99.420432000000005 34.380464000000003,-99.408847999999992 34.372776000000002,-99.407167999999999 34.372605,-99.406018176721332 34.372844364351735,-99.404336527339453 34.373194441551952,-99.402959999999979 34.373480999999998,-99.399602999999999 34.375078999999999,-99.397253000000006 34.377870999999999,-99.396160718377317 34.383134276834824,-99.391492 34.405631,-99.393918999999997 34.415273999999989,-99.396488000000005 34.417290999999999,-99.396901999999997 34.418688000000003,-99.397009999999995 34.424002999999999,-99.395768462359129 34.43494110377263,-99.394955999999993 34.442098999999999,-99.381011 34.456935999999999,-99.376037841709419 34.458617501802458,-99.375365000000002 34.458844999999997,-99.369609999999994 34.458699000000003,-99.358795 34.455862999999994,-99.354671999999994 34.451856999999997,-99.35478257092818 34.450383391084422,-99.354837000000003 34.449657999999999,-99.356770999999995 34.446542,-99.357101999999998 34.444915000000002,-99.356712999999999 34.442143999999999,-99.350407000000004 34.437083,-99.342020261837703 34.431514649700844,-99.341336999999996 34.431061,-99.341016600261696 34.430906286427735,-99.334036999999995 34.427536000000003,-99.331050066208874 34.424666026137302,-99.328674000000007 34.422383000000004,-99.325094009617374 34.416010263301388,-99.324222000000006 34.414458000000003,-99.321411663781888 34.411055277053073,-99.319798627189357 34.409102230797522,-99.319605999999979 34.408869000000003,-99.318363000000005 34.408295999999993,-99.316372999999999 34.408204999999995,-99.308273999999997 34.410013999999997,-99.299098 34.414227999999994,-99.294647999999981 34.415373000000002,-99.289922000000004 34.414731000000003,-99.287844819286008 34.413958196831629,-99.264167 34.405149000000002,-99.261320999999981 34.403498999999996,-99.261255940568432 34.403158389836314,-99.260996786434447 34.401801622187399,-99.259199386422964 34.392391568987605,-99.258998120407611 34.391337867029385,-99.258979999999994 34.391243000000003,-99.259239630132384 34.391043961974496,-99.260703756811225 34.389921531074158,-99.261190999999997 34.389547999999998,-99.262646013804954 34.388906249865343,-99.264243556741917 34.388201635660714,-99.264508000000006 34.388084999999997,-99.271031915197597 34.387722560266795,-99.271781628057255 34.38768090955238,-99.273607516746409 34.387579471291865,-99.273957999999993 34.38756,-99.27534 34.386598999999997,-99.274925999999994 34.384903999999999,-99.271845396288441 34.382114976063626,-99.271280999999988 34.381603999999996,-99.258696 34.372633999999998,-99.254722 34.372405,-99.251407999999984 34.375079999999997,-99.248969000000002 34.375984000000003,-99.242944999999992 34.372667999999997,-99.239138083830497 34.366035888164781,-99.237232999999989 34.362716999999996,-99.237183660287812 34.362563767173611,-99.235448627455725 34.357175329079247,-99.234251999999984 34.353459,-99.233273999999994 34.344101000000002,-99.23260599999999 34.342379999999999,-99.229993999999991 34.340538000000002,-99.226152999999982 34.339725999999999,-99.221975 34.340020000000003,-99.219768999999999 34.341377,-99.217335000000006 34.341520000000003,-99.213134999999994 34.340369000000003,-99.210957832415772 34.336710386428308,-99.210716000000005 34.336303999999998,-99.20972399999998 34.324934999999996,-99.211600000000004 34.313969999999998,-99.213476 34.310671999999997,-99.213233598142949 34.308226764636807,-99.211647999999997 34.292231999999991,-99.211468055040228 34.291676209875057,-99.209990337717599 34.287112032604114,-99.209742000000006 34.286344999999997,-99.209514950796304 34.286049346749877,-99.207560999999998 34.283504999999998,-99.203681000000003 34.281925999999999,-99.200221999999997 34.281151999999999,-99.196259999999995 34.281463000000002,-99.196052113016066 34.281264951942028,-99.19571031750732 34.280939333014615,-99.195605 34.280839,-99.194569999999985 34.272424,-99.196926000000005 34.260928999999997,-99.197153 34.244298,-99.19555299999999 34.24006,-99.191138999999993 34.23234,-99.190145999999984 34.229660000000003,-99.190036000000006 34.227186000000003,-99.192076 34.222192,-99.192683000000002 34.218825000000002,-99.192104 34.216693999999997,-99.189758414718312 34.214539281858485,-99.189510999999996 34.214312,-99.188483307800709 34.214128939694163,-99.159015999999994 34.20888,-99.143985 34.214762999999998,-99.138220000000004 34.219158999999998,-99.130609000000007 34.219408,-99.128513999999996 34.218766000000002,-99.127549000000002 34.217986000000003,-99.126614000000004 34.21532899999999,-99.127525000000006 34.213771,-99.130089999999996 34.212192000000002,-99.131552999999997 34.209352000000003,-99.131884999999997 34.207382000000003,-99.129791999999995 34.204402999999999,-99.126566999999994 34.203004,-99.119203999999996 34.201746999999997,-99.108757999999995 34.203400999999999,-99.102001344898341 34.205813362825268,-99.092190999999985 34.209316,-99.08119261238302 34.211229594305671,-99.079534999999993 34.211517999999991,-99.075978000000006 34.211221000000002,-99.06646499999998 34.208404000000002,-99.060343999999986 34.204760999999991,-99.059158999999994 34.202928999999997,-99.058800000000005 34.201256,-99.058083999999994 34.200569000000002,-99.048792000000006 34.198208999999999,-99.043470999999997 34.198208,-99.040961999999993 34.200842000000002,-99.039004000000006 34.204667,-99.037458999999998 34.206454,-99.036272999999994 34.206912000000003,-99.013074999999986 34.203221999999997,-99.005790000000005 34.206646999999997,-99.002916243275195 34.208781598893673,-99.002945441244265 34.209102775846141,-99.003147197273819 34.211322087284138,-99.003432988816769 34.214465787333673,-99.000760999999997 34.217643000000002,-98.99085199999999 34.221632999999997,-98.987293999999991 34.221223000000002,-98.981363999999999 34.217582999999991,-98.978684999999984 34.210231,-98.976586999999995 34.206291,-98.974131999999983 34.203566000000002,-98.969003 34.201298999999999,-98.966301999999999 34.201323000000002,-98.962469999999996 34.204667999999998,-98.962085000000002 34.206386000000002,-98.962306999999981 34.211312,-98.960791 34.213029999999996,-98.958474999999993 34.213854999999995,-98.952512999999982 34.212649999999996,-98.950395999999984 34.21168,-98.940219999999997 34.203685999999998,-98.928145 34.192689,-98.927456000000006 34.191155000000002,-98.923128999999989 34.185977999999999,-98.920704 34.183435000000003,-98.918333000000004 34.181831000000003,-98.909348999999992 34.177498999999997,-98.892677318093561 34.17250349095427,-98.87651287834953 34.167659972141138,-98.872921999999988 34.166584,-98.871543000000003 34.165026999999995,-98.871211000000002 34.163012000000002,-98.872229000000004 34.160446,-98.874954999999986 34.157031000000003,-98.874871999999996 34.155656999999998,-98.873271000000003 34.153596,-98.868116 34.149635000000004,-98.862549999999999 34.149110999999998,-98.860124999999996 34.149912999999998,-98.858418999999998 34.152732,-98.8579 34.159627,-98.857321999999982 34.161093999999999,-98.855585000000005 34.161620999999997,-98.854264541670545 34.16164976192438,-98.831114999999983 34.162154,-98.812953999999991 34.158444000000003,-98.806809999999984 34.155901,-98.804411553093104 34.153928907629435,-98.792015000000006 34.143735999999997,-98.779288744496085 34.140194111533035,-98.773070373738221 34.138463455122455,-98.767587610783494 34.136937528280072,-98.765569999999983 34.136375999999998,-98.764702233233265 34.135780085954792,-98.763778343962841 34.135145631382905,-98.761796999999987 34.133785000000003,-98.760558000000003 34.132387999999999,-98.759485999999995 34.128881999999997,-98.759653 34.126911999999997,-98.757118934362524 34.12470437936247,-98.757036999999983 34.124633000000003,-98.753813984496389 34.124468645349353,-98.749290999999999 34.124237999999998,-98.741966000000005 34.125529999999998,-98.740191287161664 34.126850584722824,-98.739461000000006 34.127394000000002,-98.737231999999992 34.130991999999999,-98.736819999999994 34.133374000000003,-98.735471000000004 34.135207999999999,-98.734286999999995 34.135758000000003,-98.730242646678789 34.1359250861193,-98.717536999999993 34.136450000000004,-98.716104 34.135947000000002,-98.70640034274598 34.134745066348501,-98.696517999999998 34.133521000000002,-98.690291400890658 34.133167457450512,-98.690072 34.133155000000002,-98.688275858887323 34.134465065675442,-98.685589983550884 34.136424083851644,-98.676900633591032 34.14276190388366,-98.676457484208683 34.143085127260051,-98.670573548505118 34.147376740066704,-98.655654999999982 34.158257999999996,-98.650582999999997 34.163113000000003,-98.648072999999997 34.164440999999997,-98.643223000000006 34.164530999999997,-98.635729999999995 34.161617999999997,-98.634085211037615 34.161100728840964,-98.630950281399748 34.160114822001631,-98.621666000000005 34.157195000000002,-98.620507214282355 34.157012478916968,-98.617663812339856 34.156564612849806,-98.616732999999996 34.156418000000002,-98.615748434938936 34.156446107485429,-98.612133570686254 34.156549305078279,-98.611829 34.156557999999997,-98.610173632571488 34.157093658210222,-98.610154152422197 34.157099961766605,-98.608852999999996 34.157521000000003,-98.603977999999998 34.160249,-98.599789 34.160570999999997,-98.577135999999996 34.148961999999997,-98.572451 34.145091,-98.560191000000003 34.133201999999997,-98.558593000000002 34.128253999999998,-98.550916999999998 34.119334000000002,-98.536257000000006 34.107343,-98.530610999999993 34.099843,-98.528199999999998 34.094960999999998,-98.504182 34.072370999999997,-98.487068052145446 34.063003092954936,-98.486783271268621 34.06284720836274,-98.486328 34.062598,-98.483944186894661 34.06241565608709,-98.482821069121968 34.062329745958955,-98.482039999999998 34.062269999999998,-98.475065999999998 34.064269000000003,-98.449033999999983 34.073461999999999,-98.446378999999993 34.075429999999997,-98.445784000000003 34.076827000000002,-98.445590305319797 34.079232123390703,-98.445584999999994 34.079298,-98.445259148452962 34.079797720749731,-98.443724000000003 34.082152,-98.442807999999999 34.083143999999997,-98.442148160210323 34.083427517317581,-98.441104460406791 34.083875970068213,-98.440092000000007 34.084311,-98.439068026005657 34.084479541105658,-98.434822808733685 34.08517828308225,-98.432126999999994 34.085622,-98.43151641213494 34.085605425226575,-98.43092946822253 34.085589492282431,-98.428479999999993 34.085523000000002,-98.425229999999999 34.084798999999997,-98.422252999999998 34.083036999999997,-98.419995 34.082487999999998,-98.419161945519861 34.082694545588339,-98.41804644206556 34.082971120917755,-98.417812999999995 34.083029000000003,-98.414426000000006 34.085073999999999,-98.400747497198822 34.098985940284976,-98.399776999999986 34.099972999999999,-98.398505572550647 34.104180252359392,-98.39838899999998 34.104565999999998,-98.398160000000004 34.121395999999997,-98.400493999999995 34.121777999999999,-98.400966999999994 34.122236,-98.398441000000005 34.128456,-98.384381000000005 34.146317000000003,-98.381237999999996 34.149453999999999,-98.367493999999994 34.156190999999993,-98.366862955318183 34.156357896864854,-98.364023000000003 34.157108999999998,-98.34173552164826 34.153594120579292,-98.339428832109121 34.153230340726623,-98.331172907733077 34.151928328079421,-98.326986688030772 34.151268134169193,-98.325445000000002 34.151024999999997,-98.324621914768684 34.150650086831803,-98.323612587945547 34.150190341106089,-98.322580000000002 34.149720000000002,-98.320651676675396 34.148059023851737,-98.318749999999994 34.146420999999997,-98.315432139066189 34.144301906683673,-98.312023538956254 34.142124858924547,-98.300208999999995 34.134579000000002,-98.299345719035045 34.134365643147696,-98.29862570169189 34.134187693395319,-98.293901000000005 34.133020000000002,-98.280321 34.130749999999999,-98.258217018239392 34.129574098564007,-98.256467 34.129480999999998,-98.254901718278489 34.129708262798985,-98.247953999999993 34.13071699999999,-98.241012999999995 34.133102999999998,-98.225282000000007 34.127245000000002,-98.223600000000005 34.125093,-98.216463000000005 34.121820999999997,-98.203710999999998 34.117676000000003,-98.200074999999998 34.116782999999998,-98.191455000000005 34.115752999999998,-98.169120000000007 34.114170999999999,-98.157411999999994 34.120466999999998,-98.154353999999998 34.122734,-98.142753999999996 34.136358999999999,-98.136769999999999 34.144992000000002,-98.130815999999996 34.150531999999998,-98.123377000000005 34.154539999999997,-98.114506000000006 34.154727,-98.109461999999979 34.154110999999993,-98.107064999999992 34.152531000000003,-98.101937000000007 34.146829999999994,-98.092021474678845 34.132735952269094,-98.090223999999992 34.130181,-98.089754999999982 34.128211,-98.090659999999986 34.12198,-98.092421000000002 34.116917,-98.095117999999999 34.11119,-98.096177285423778 34.109455137055363,-98.096466125075011 34.108982084942461,-98.099327999999986 34.104295,-98.101378023037029 34.101786489578267,-98.103538246996251 34.099143131812454,-98.104308999999986 34.098199999999999,-98.119416999999999 34.084474,-98.121038999999996 34.081265999999999,-98.120207999999991 34.072127000000002,-98.11802999999999 34.067064999999999,-98.114587 34.06228,-98.100919767943822 34.050244792175462,-98.099096110217346 34.048638900093685,-98.096177018664264 34.044625138601674,-98.096541898037387 34.040976263553816,-98.09727167092565 34.038969381040054,-98.097731364247636 34.038509687718062,-98.098001443813914 34.038239608151798,-98.102015208841422 34.03732738850595,-98.104022094890695 34.036232725638037,-98.104083244997014 34.036133356900422,-98.105481647738245 34.033860956680144,-98.105481647738245 34.032444902147553,-98.105481647738245 34.031306746267951,-98.103616999999986 34.029206999999992,-98.088202999999993 34.005481000000003,-98.085260000000005 34.003259,-98.082839000000007 34.002412,-98.055197000000007 33.995840999999999,-98.050169864666017 33.994989457544634,-98.041117 33.993456000000002,-98.027671999999981 33.993357000000003,-98.019485000000003 33.993803999999997,-98.018481521828946 33.993960861546498,-98.005667000000003 33.995964,-97.987387999999996 33.999822999999999,-97.982805999999997 34.001949000000003,-97.978243000000006 34.005386999999999,-97.974597608872358 34.00657735007583,-97.974172999999993 34.006715999999997,-97.973934144800623 34.006593661859519,-97.971670000000003 34.005434,-97.968339999999998 34.000529999999998,-97.965354903485249 33.996992503283089,-97.963375425210828 33.994646717187933,-97.96302799999998 33.994235000000003,-97.962715090700769 33.994009516348072,-97.958325000000002 33.990845999999998,-97.955849999999998 33.990136,-97.952687999999995 33.990113999999998,-97.947571999999994 33.991053,-97.946472999999997 33.990731999999994,-97.945729999999998 33.989839000000003,-97.945949999999982 33.988395999999995,-97.952184120103468 33.971402949359636,-97.95307606469359 33.968971674482539,-97.95691699999999 33.958502000000003,-97.960351000000003 33.951928000000002,-97.965737000000004 33.947392,-97.972662 33.944527,-97.974172999999993 33.942832000000003,-97.974062000000004 33.940289,-97.972493999999998 33.937907000000003,-97.971175000000002 33.937128999999999,-97.965952999999999 33.936191,-97.963425 33.936236999999998,-97.955511 33.938186000000002,-97.954466999999994 33.937773999999997,-97.953395 33.936444999999999,-97.952679000000003 33.929482,-97.953694999999996 33.924373000000003,-97.957155 33.914453999999999,-97.960615000000004 33.910353999999998,-97.961188664141474 33.909913087050903,-97.963139679674441 33.908413554571595,-97.964461 33.907398,-97.964803587866868 33.907309441163022,-97.9693952279504 33.906122503898267,-97.969873000000007 33.905999,-97.970298415583201 33.906261144464871,-97.973142999999993 33.908014,-97.976962999999998 33.912548999999999,-97.978803999999997 33.912548,-97.979984999999999 33.911402000000002,-97.983551999999989 33.904001999999991,-97.984539999999996 33.900703,-97.984566 33.899076999999998,-97.984416725907181 33.89872544733722,-97.984025057628415 33.897803036597892,-97.98383498894799 33.897355409354304,-97.983768999999995 33.897199999999991,-97.977858999999995 33.889929000000002,-97.974177999999995 33.886642999999999,-97.967776999999998 33.882429999999999,-97.958438 33.879179,-97.951215000000005 33.878424000000003,-97.946463999999992 33.878883000000002,-97.942729999999997 33.879845000000003,-97.938801999999995 33.879891,-97.936743000000007 33.879204,-97.933120450042608 33.877388671138185,-97.918328311832767 33.869976048610916,-97.905467000000002 33.863530999999995,-97.896737999999985 33.857984999999999,-97.877386999999999 33.850236000000002,-97.871447000000003 33.849001,-97.865764999999982 33.849392999999999,-97.835425213046037 33.857383352392631,-97.834333 33.857671000000003,-97.833886750888084 33.857971936447115,-97.833218553718808 33.858422547723912,-97.806802470257153 33.876236728393856,-97.805423000000005 33.877167,-97.803472999999997 33.880189999999999,-97.801578000000006 33.885137999999998,-97.784656999999982 33.890631999999997,-97.78061799999999 33.895533,-97.779683000000006 33.899242999999998,-97.780339999999995 33.904833000000004,-97.783716999999996 33.910559999999997,-97.772672 33.914382000000003,-97.765445999999997 33.913531999999989,-97.763769999999994 33.914240999999997,-97.762914903547767 33.914953098088951,-97.761142192227695 33.916429357685161,-97.760223999999994 33.917194000000002,-97.759399000000002 33.91881999999999,-97.759833999999984 33.92521,-97.762660999999994 33.930846000000003,-97.762767999999994 33.934396,-97.752956999999995 33.937049000000002,-97.738478 33.937421,-97.736553999999998 33.936574999999998,-97.735919542935619 33.936533987763056,-97.734773489745407 33.936459905200778,-97.733722999999998 33.936391999999998,-97.732266999999993 33.936691000000003,-97.725289000000004 33.941045000000003,-97.720699142354164 33.94461309292862,-97.716772000000006 33.947665999999998,-97.714693355370301 33.94981590741822,-97.712051708440285 33.952548118711093,-97.709683999999996 33.954996999999999,-97.708350195107343 33.95701014009046,-97.70415899999999 33.963335999999998,-97.69792099999998 33.977331,-97.69310999999999 33.983699,-97.688023 33.986606999999999,-97.671772000000004 33.991370000000003,-97.661489000000003 33.990817999999997,-97.656210000000002 33.989488,-97.633778000000007 33.981256999999999,-97.609091000000006 33.968093000000003,-97.589597999999995 33.953553999999997,-97.588828000000007 33.951881999999998,-97.591270649549756 33.930345579062646,-97.591514000000004 33.928199999999997,-97.595084 33.922953999999997,-97.596154999999996 33.922105999999999,-97.59697899999999 33.920228000000002,-97.597115000000002 33.917867999999999,-97.596955673755872 33.917077348335745,-97.596288999999985 33.913769000000002,-97.593782375104212 33.910260437761373,-97.589253999999997 33.903922,-97.587440999999984 33.902479,-97.582744000000005 33.900784999999999,-97.578907598302408 33.900207204108142,-97.558269999999993 33.897098999999997,-97.555002000000002 33.897281999999997,-97.551541 33.897947000000002,-97.543245999999996 33.901288999999998,-97.533617322522971 33.906127586572126,-97.532723000000004 33.906576999999999,-97.525277000000003 33.911750999999995,-97.519170999999986 33.913637999999999,-97.504870374844515 33.918353570482601,-97.500960000000006 33.919643,-97.495648860558163 33.919307898609453,-97.494857999999979 33.919257999999999,-97.492061582842766 33.918500058129531,-97.487115891787269 33.917159576320657,-97.48650499999998 33.916993999999995,-97.484158940985964 33.915822631562747,-97.460375999999982 33.903948,-97.458068999999995 33.901634999999999,-97.451065249608234 33.891558064966901,-97.450953999999996 33.891398000000002,-97.451469000000003 33.87093,-97.452287410342421 33.86882620086994,-97.455665873415143 33.860141550511862,-97.457616999999999 33.855125999999998,-97.459565999999995 33.853316,-97.461485999999994 33.849559999999997,-97.462857 33.841771999999999,-97.459067999999988 33.834581,-97.453056999999987 33.828536,-97.444192999999999 33.823773000000003,-97.426492999999994 33.819398,-97.410387 33.818845000000003,-97.403235695189224 33.818961304668854,-97.384901622687948 33.819259479377855,-97.372940999999997 33.819454,-97.368744000000007 33.821471000000003,-97.365506999999994 33.823762999999992,-97.358512999999988 33.830018000000003,-97.348337999999984 33.843876000000002,-97.340900078515631 33.860236176367188,-97.339391593410966 33.867629740388111,-97.337846311291798 33.870430566802547,-97.336524008254173 33.872827243260353,-97.33293952159849 33.874440259476913,-97.329175814777756 33.874440259476913,-97.327562805507441 33.873902588562437,-97.326564370247013 33.872737756024428,-97.326487449786001 33.872648016149064,-97.324157539016809 33.866016724171544,-97.322365295688968 33.864941382342593,-97.318243141591921 33.865120602507631,-97.31654836796514 33.865642075591225,-97.315913230822716 33.865837504006514,-97.314412999999988 33.866988999999997,-97.310479256695203 33.873361218982971,-97.307489695517361 33.878203969770759,-97.302471419756401 33.880175433263638,-97.299245387323282 33.880175433263638,-97.295170524880618 33.877119286431629,-97.294227111562321 33.876411726442917,-97.286921603026471 33.869423850720118,-97.28598279642199 33.868525862052032,-97.284253187903744 33.867526845294535,-97.279107999999979 33.864555000000003,-97.275347999999994 33.863225,-97.271531999999993 33.862560000000002,-97.257971626565464 33.863220416657512,-97.256624999999985 33.863286000000002,-97.255635999999996 33.863697999999999,-97.254234999999994 33.865322999999997,-97.249208999999993 33.875100999999994,-97.246418496348156 33.898356425448434,-97.246179999999981 33.900343999999997,-97.245398270620598 33.902084836575838,-97.245057441245748 33.90284383100218,-97.244945999999999 33.903092,-97.242092 33.906277000000003,-97.241794392023195 33.906436890220043,-97.238755934556053 33.908069304909361,-97.226522000000003 33.914642,-97.210920999999999 33.916063999999999,-97.210512235443105 33.915911440173737,-97.206141000000002 33.914279999999998,-97.185457999999997 33.9007,-97.180845000000005 33.895203999999993,-97.179608999999999 33.892249999999997,-97.170773789281327 33.861660975771436,-97.166629 33.847310999999998,-97.166824000000005 33.840395,-97.171627 33.835335,-97.180939422624874 33.831550006302521,-97.181369999999987 33.831375,-97.186254000000005 33.830894,-97.193690000000004 33.831307000000002,-97.195830999999998 33.830803000000003,-97.197477000000006 33.829794999999997,-97.199700000000007 33.827322000000002,-97.203513999999998 33.821824999999997,-97.204994999999997 33.81886999999999,-97.205652 33.809823999999999,-97.205556910941183 33.806237292333442,-97.205445103342427 33.802019970418343,-97.205431000000004 33.801487999999999,-97.205114487332324 33.800890302957832,-97.203236000000004 33.797342999999998,-97.194785999999993 33.785344000000002,-97.190397000000004 33.781153000000003,-97.187792000000002 33.769702000000002,-97.181842999999986 33.755869999999994,-97.173532726140948 33.740090726508434,-97.172577000695028 33.738276026602087,-97.172191999999995 33.737544999999997,-97.168438536634085 33.734131892706188,-97.163454368039083 33.729599677915004,-97.163149000000004 33.729322000000003,-97.162807288850388 33.729115696596551,-97.155066000000005 33.724442000000003,-97.152609597300682 33.723370138808036,-97.150103410774264 33.72227655424301,-97.149393999999987 33.721966999999999,-97.137529999999998 33.718663999999997,-97.126102000000003 33.716940999999998,-97.121101999999993 33.717174,-97.119522126797463 33.717502594273334,-97.114921749218269 33.718459416457094,-97.113264999999998 33.718803999999999,-97.112398501853761 33.719102240295193,-97.110065570752283 33.719905212653977,-97.108936 33.720294000000003,-97.108097026518521 33.720734123472262,-97.106518853348803 33.721562029324609,-97.104524999999995 33.722608,-97.097154000000003 33.727809,-97.094085000000007 33.730992,-97.092697209381924 33.732891057656268,-97.092130098039192 33.733667094850453,-97.091071999999983 33.735115,-97.089936943375889 33.737167271747261,-97.087911027802278 33.740830286618703,-97.086195000000004 33.743932999999998,-97.084820762198987 33.752363244406453,-97.084693 33.753146999999998,-97.08461299999999 33.759993,-97.085217999999998 33.765512,-97.087362453285593 33.77250304797397,-97.087851999999998 33.774099,-97.093101265647221 33.787040841586602,-97.093917000000005 33.789051999999998,-97.094675961767678 33.791977368936216,-97.095047178759813 33.793408200769441,-97.095235999999986 33.794136000000002,-97.095080023591905 33.79561056406444,-97.094877682854474 33.797523445530629,-97.094770999999994 33.798532000000002,-97.093897185962049 33.800360798466031,-97.09266432242093 33.802941048788071,-97.092111999999986 33.804096999999999,-97.087998999999982 33.808746999999997,-97.078589999999991 33.812755999999993,-97.067977124183287 33.814475679891196,-97.064604445188394 33.815487484896828,-97.062631847535258 33.816079264957295,-97.058622892638837 33.818751903281317,-97.055415722506638 33.823829921794093,-97.055412197115942 33.8238546000754,-97.055148464371385 33.82570077017467,-97.055682980641905 33.830778788687446,-97.057821087157734 33.834520485448607,-97.058282726048489 33.836367011192308,-97.058622892638837 33.837727655580807,-97.057553829022481 33.840133030590344,-97.055415722506638 33.841202089027483,-97.052208542016004 33.841736615656437,-97.048734113748537 33.840934820533782,-97.045339940802535 33.839496399893775,-97.041245000000004 33.837761,-97.038858000000005 33.838264000000002,-97.023899 33.844213000000003,-97.017857000000006 33.850141999999998,-97.010381749407998 33.858564100233409,-96.999664164722446 33.87063922351804,-96.985567000000003 33.886521999999999,-96.983970999999997 33.892082999999992,-96.984938999999997 33.904865999999991,-96.985275905099471 33.906070041818985,-96.988744999999994 33.918467999999997,-96.993996999999979 33.928978999999998,-96.995022999999989 33.932034999999999,-96.995140238436761 33.933014648420269,-96.996024643022366 33.940404763634284,-96.996183000000002 33.941727999999998,-96.996167702736543 33.941832622020257,-96.995421139189489 33.946938567064805,-96.995367999999999 33.947302,-96.994947208134789 33.948043840473474,-96.994456760007211 33.948908482357652,-96.994287999999983 33.949205999999997,-96.990835000000004 33.952700999999998,-96.988126301178397 33.954514162310069,-96.987892000000002 33.954670999999998,-96.982723774786024 33.956016867344054,-96.981537499896135 33.956325787441237,-96.981336999999982 33.956377999999994,-96.979415000000003 33.956178,-96.979347000000004 33.955129999999997,-96.980675999999988 33.951813999999999,-96.981031000000002 33.949159999999999,-96.97981799999998 33.941588000000003,-96.976955000000004 33.937452999999998,-96.973806999999979 33.935696999999998,-96.97254199999999 33.935794999999999,-96.952313000000004 33.944581999999997,-96.944610999999995 33.949216999999997,-96.933309804512817 33.955134148312766,-96.932252000000005 33.955688000000002,-96.924267999999998 33.959159,-96.922113999999979 33.959578999999998,-96.921429967464036 33.959451233053208,-96.919039990098355 33.959004821377064,-96.918617999999995 33.958925999999998,-96.91833921313939 33.958790334953079,-96.917063225391544 33.958169405626251,-96.916299999999993 33.957797999999997,-96.91417790611122 33.956157267456653,-96.911732563120111 33.95426660943896,-96.911336000000006 33.953960000000002,-96.910857206749995 33.953482904168467,-96.908421363636307 33.951055696608989,-96.907387 33.950024999999997,-96.905252999999988 33.947218999999997,-96.902433999999985 33.942017999999997,-96.901946611333699 33.940667581536225,-96.899441999999993 33.933728000000002,-96.896468999999996 33.91331799999999,-96.897193999999999 33.902954,-96.895728000000005 33.896414,-96.887761838797758 33.878628251663962,-96.883009999999999 33.868018999999997,-96.875280999999987 33.860505000000003,-96.87198767019855 33.857765462058182,-96.866438000000002 33.853149000000002,-96.85608999999998 33.84749,-96.850593000000003 33.847211,-96.845895999999996 33.848974999999996,-96.841592000000006 33.852893999999999,-96.840818999999996 33.863644999999998,-96.839777999999995 33.868395999999997,-96.837412999999984 33.871349000000002,-96.833926235310372 33.873661568818115,-96.832156999999995 33.874834999999997,-96.812777999999994 33.872646000000003,-96.794275999999996 33.868886000000003,-96.786859371055769 33.865207582975678,-96.783484999999999 33.863533999999994,-96.780568999999986 33.860098,-96.779588000000004 33.857939000000002,-96.777202000000003 33.848162000000002,-96.776765999999995 33.841976000000003,-96.770675999999995 33.829621000000003,-96.769378000000003 33.827477000000002,-96.766316855179326 33.825510582121247,-96.766234999999995 33.825457999999998,-96.761588000000003 33.824406000000003,-96.754041 33.824657999999999,-96.746233969152598 33.825673509073113,-96.746037999999984 33.825699,-96.741799282455162 33.826447231494264,-96.71318112067361 33.831498997677379,-96.712421999999989 33.831632999999997,-96.708134 33.833060000000003,-96.704457000000005 33.835020999999998,-96.700318655907978 33.838434731313264,-96.699573999999998 33.839049000000003,-96.695480719177567 33.844085960723298,-96.693127324791789 33.84698191524042,-96.690708 33.849958999999998,-96.688190999999989 33.854613,-96.687524326814838 33.85620885855986,-96.684726999999995 33.862904999999998,-96.682762564556768 33.871464102957781,-96.682209 33.873876000000003,-96.682102999999998 33.876645000000003,-96.683464 33.884217,-96.681051007513375 33.895708672998403,-96.680947000000003 33.89620399999999,-96.675306000000006 33.909114000000002,-96.673449000000005 33.912278,-96.670618000000005 33.914913999999996,-96.667186999999998 33.916939999999997,-96.665308436653305 33.917161206414967,-96.66440999999999 33.917267000000002,-96.659896000000003 33.916665999999999,-96.65150600931733 33.910998546998165,-96.644049999999979 33.905962000000002,-96.630116999999998 33.895422000000003,-96.628293999999997 33.894477000000002,-96.616355751891987 33.894625565889051,-96.614680358047494 33.89464641537834,-96.611821556077771 33.89468199182577,-96.607562 33.894734999999997,-96.592948000000007 33.895615999999997,-96.588319642127203 33.894847991673281,-96.587934000000004 33.894784,-96.58760387584924 33.894318075382706,-96.585452000000004 33.891280999999999,-96.585359999999994 33.888947999999999,-96.587494000000007 33.884250999999999,-96.590112000000005 33.880665,-96.597347999999982 33.875100999999994,-96.601685999999987 33.872822999999997,-96.611969999999999 33.869016000000002,-96.625399000000002 33.856541999999997,-96.628968999999998 33.852406999999999,-96.629746999999995 33.850866000000003,-96.630021999999983 33.847541,-96.629842405402627 33.847037300944812,-96.629577623992816 33.846294683138318,-96.629289999999997 33.845488000000003,-96.627812273090953 33.844523322531259,-96.626623854929747 33.84374750920842,-96.623154999999997 33.84148299999999,-96.622548607895212 33.841284829387497,-96.620258613641042 33.840536452948584,-96.605267599881515 33.835637348301233,-96.601258 33.834327000000002,-96.599141379811712 33.83346048638235,-96.597030984690946 33.832596521217091,-96.595164098773168 33.831832245189069,-96.592925999999991 33.830916000000002,-96.587067000000005 33.828009000000002,-96.573054340771023 33.81917200025552,-96.572936999999996 33.819097999999997,-96.568822993124115 33.818734252140963,-96.566549213959448 33.818533211567136,-96.566298000000003 33.818511,-96.551222999999993 33.81912899999999,-96.541502252916899 33.82118138128849,-96.537683599711926 33.821987629236112,-96.532865 33.823005000000002,-96.532141353898353 33.822830017549641,-96.529233999999988 33.822127000000002,-96.526655000000005 33.820891000000003,-96.526331240434345 33.820568979830284,-96.523863000000006 33.818114,-96.519910999999993 33.811346999999998,-96.517492044660074 33.805400310572544,-96.516583999999995 33.803167999999999,-96.515958999999995 33.798933999999996,-96.515952403498957 33.797370629253059,-96.5159410675722 33.794684014612457,-96.515912 33.787795000000003,-96.51191399999999 33.781477999999993,-96.502285999999998 33.773459999999993,-96.500268000000005 33.772582999999997,-96.486059999999995 33.773009999999999,-96.459153999999998 33.775232000000003,-96.456254 33.776035,-96.450509999999994 33.780588000000002,-96.448044999999993 33.781030999999999,-96.436454999999995 33.780050000000003,-96.430214000000007 33.778654000000003,-96.423664429058576 33.776393528613141,-96.422642999999994 33.776040999999999,-96.422322840041474 33.775682043625913,-96.420980388055867 33.774176915691271,-96.419961 33.773034000000003,-96.419583102042878 33.772404537625398,-96.417562000000004 33.769038000000002,-96.416145999999998 33.76609899999999,-96.413408000000004 33.757714,-96.411885201063754 33.755703128434462,-96.408468999999997 33.751191999999996,-96.403507000000005 33.746288999999997,-96.384116000000006 33.730141000000003,-96.383299027856694 33.729391180874664,-96.380090129695702 33.726446045924753,-96.379450023740389 33.7258585550397,-96.370956555983966 33.718063228581727,-96.370761536889887 33.717884239557762,-96.369590000000002 33.716808999999998,-96.369084597701828 33.715741445126696,-96.366945 33.711221999999999,-96.363253 33.701050000000002,-96.363143372320295 33.69469995601051,-96.363135 33.694215,-96.362964209763192 33.693778090504111,-96.362198000000006 33.691817999999998,-96.356236230636398 33.68737146600408,-96.355945999999989 33.687154999999997,-96.355455421824701 33.68710517164083,-96.352724507664888 33.686827790830883,-96.348305999999994 33.686378999999995,-96.346643697131185 33.686554630652331,-96.344174978865311 33.686815463144171,-96.342664999999997 33.686974999999997,-96.337175125435976 33.689043696356201,-96.321102999999994 33.695099999999996,-96.318759999999997 33.696753,-96.318590686098233 33.696960051986665,-96.318010443675675 33.697669623646739,-96.316924999999998 33.698996999999999,-96.314798583555884 33.702507526903553,-96.309963999999994 33.710489000000003,-96.308342766341951 33.715746247280322,-96.307034999999985 33.719987000000003,-96.307001890234133 33.720499786556005,-96.306595999999999 33.726785999999997,-96.307389 33.735005,-96.3061 33.741002000000002,-96.30525491425243 33.743702118680943,-96.304087485467235 33.747432149959735,-96.303009000000003 33.750878,-96.301705999999982 33.753756000000003,-96.294866999999996 33.764771000000003,-96.292482000000007 33.766418999999999,-96.277269000000004 33.769734999999997,-96.269895999999989 33.768405,-96.251497151236435 33.760405611313516,-96.248231999999987 33.758986,-96.23960043273749 33.754058875473291,-96.229595766085112 33.748347949873668,-96.229022999999998 33.748021,-96.220521000000005 33.747390000000003,-96.1999 33.752116999999998,-96.196336040977513 33.753254070097242,-96.186553999999987 33.756374999999998,-96.178059000000005 33.760517999999998,-96.174632999999986 33.763699000000003,-96.169932696734321 33.769534234627457,-96.169452000000007 33.770130999999999,-96.167888847884015 33.774482610028038,-96.162756999999985 33.788769000000002,-96.162122572851359 33.796140263149638,-96.162213638666273 33.796174412747511,-96.166837334419654 33.79790829445497,-96.170373408451042 33.799381659586444,-96.173025461119408 33.800560352833699,-96.175150000000002 33.801951000000003,-96.17734 33.805117000000003,-96.17895107878303 33.810509748931381,-96.178963999999993 33.810552999999999,-96.176910000000007 33.813934000000003,-96.175889999999981 33.814627000000002,-96.164217431250009 33.817001137011715,-96.150765000000007 33.816986999999997,-96.148792 33.819197000000003,-96.151629999999983 33.831945999999995,-96.150147000000004 33.835856,-96.148457006953691 33.837436961236868,-96.14806999999999 33.83779899999999,-96.147446683377808 33.837891494337825,-96.138904999999994 33.839159000000002,-96.128108733462625 33.839703753325978,-96.122951 33.839963999999995,-96.118168999999995 33.837883999999995,-96.109992999999989 33.832396000000003,-96.104074999999995 33.830730000000003,-96.099360000000004 33.830469999999998,-96.097448 33.832724999999996,-96.097637999999989 33.837935000000002,-96.099152999999987 33.842409000000004,-96.100785000000002 33.844230000000003,-96.101348999999999 33.845720999999998,-96.101472999999999 33.846708999999997,-96.100094999999996 33.847971,-96.084626 33.846656000000003,-96.063924 33.841522999999995,-96.055357999999984 33.838262,-96.049381559404907 33.836618570443349,-96.048833999999999 33.836468000000004,-96.044074587870469 33.838420736557822,-96.037191000000007 33.841245,-96.031783693249977 33.849934429642978,-96.031271075997878 33.850758194920559,-96.029462717056688 33.852402158173604,-96.025188419607474 33.852073366797306,-96.022229284477689 33.850922593794486,-96.021900493101384 33.849114234853282,-96.022507000000004 33.846130000000002,-96.022064891975305 33.843195970965255,-96.021407302851145 33.841880802274289,-96.019950829321616 33.840821548098475,-96.019598947095744 33.84056563358331,-96.005296 33.845505000000003,-96.000534603789163 33.849305889934179,-95.998351 33.851049000000003,-95.997709 33.852181999999992,-95.997673906338932 33.852568581878202,-95.997405462294296 33.855525685805766,-95.9977342536706 33.860950759443568,-95.997376655326022 33.862202357114477,-95.996747879541701 33.864403078452035,-95.993624351909531 33.866211440579008,-95.991487204777812 33.866869023331596,-95.988856861024331 33.866869023331596,-95.984753921632091 33.864671017651808,-95.984253769013037 33.864403078452035,-95.980965842506947 33.859306796190523,-95.9735403792467 33.856832331211713,-95.972155999999998 33.856371000000003,-95.971744371228908 33.856383941655046,-95.951609000000005 33.857016999999999,-95.945502988542614 33.859346036998218,-95.944283999999982 33.859811,-95.943359355023844 33.860365112733476,-95.941777921153459 33.861312819872232,-95.941266999999996 33.861618999999997,-95.936631000000006 33.870615,-95.93550004724635 33.874497995518659,-95.935325000000006 33.875098999999999,-95.935308000000006 33.878723999999998,-95.935637 33.880370999999997,-95.936817000000005 33.882385999999997,-95.937201999999999 33.884652000000003,-95.936131999999986 33.886825999999999,-95.935198 33.887100999999994,-95.922712000000004 33.883758,-95.915960999999996 33.881148000000003,-95.905343000000002 33.875629000000004,-95.893305999999995 33.868161,-95.887490999999997 33.863855999999998,-95.881292000000002 33.860627,-95.859469000000004 33.852455999999997,-95.849863999999997 33.844951999999999,-95.843772999999999 33.838949,-95.841300369514457 33.837329726167006,-95.840012000000002 33.836486,-95.839442445999168 33.836292954052603,-95.838335071878717 33.835917618112738,-95.837515999999994 33.835639999999998,-95.831947999999997 33.835160999999999,-95.828244999999995 33.836053999999997,-95.827967044704152 33.836191602640042,-95.826538854622555 33.836898632614485,-95.822787000000005 33.838755999999989,-95.821905415666805 33.839551758599306,-95.821112514659319 33.840267467546653,-95.820784000000003 33.840564,-95.819357999999994 33.842784999999999,-95.818975999999992 33.844456,-95.819524999999999 33.848438999999999,-95.820676999999989 33.850750999999995,-95.821665999999979 33.855443,-95.821665999999979 33.856633000000002,-95.82138191533943 33.857119395418813,-95.820824189768416 33.858074304994595,-95.820595999999995 33.858464999999995,-95.820256321913618 33.858527429344676,-95.805149 33.861303999999997,-95.800842000000003 33.861212000000002,-95.790314669347865 33.857829825250164,-95.789867 33.857685999999994,-95.789358977006231 33.85733891951336,-95.788304168820886 33.85661827626933,-95.787891000000002 33.856335999999999,-95.776255000000006 33.845145000000002,-95.773281999999995 33.843834,-95.772067000000007 33.843817,-95.763621999999984 33.847954,-95.758311274366889 33.849968021173019,-95.758015999999998 33.850079999999998,-95.757640875431136 33.850475976069447,-95.754310000000004 33.853991999999998,-95.753512999999984 33.856464000000003,-95.753688987366843 33.856976705401074,-95.75729390188404 33.867478931648478,-95.757457999999986 33.86795699999999,-95.758009454152003 33.868443703186436,-95.760805000000005 33.870911,-95.762558999999996 33.874366999999992,-95.76194240701966 33.883030946465368,-95.761915999999999 33.883401999999997,-95.758343999999994 33.890610999999993,-95.756366999999997 33.892625000000002,-95.747335000000007 33.895755999999999,-95.737508000000005 33.895966999999999,-95.729445045960333 33.893952819075864,-95.728448999999998 33.893704,-95.723226300470785 33.890698381785455,-95.717160861060378 33.887207774089354,-95.713910181462765 33.885337036216413,-95.713539999999981 33.885123999999998,-95.710877999999994 33.884551999999999,-95.696961999999999 33.885218000000002,-95.684831000000003 33.890231999999997,-95.676924999999983 33.897236999999997,-95.669978 33.905844000000002,-95.665338000000006 33.908132000000002,-95.659818 33.909092,-95.647272999999998 33.905976000000003,-95.636977999999999 33.906613,-95.609439392746168 33.923623282239362,-95.603656999999998 33.927194999999998,-95.599677999999983 33.934246999999999,-95.585944999999981 33.93448,-95.570311428427317 33.932892416047835,-95.564667905744443 33.932319318211334,-95.563423999999998 33.932192999999998,-95.562724847986416 33.932007581530534,-95.561592737930383 33.931707340510293,-95.561007000000004 33.931551999999996,-95.560415995740641 33.931042615914556,-95.559931936825777 33.930625407571753,-95.559414000000004 33.930179000000003,-95.558286100391328 33.928753215740784,-95.557777967458279 33.928110882033096,-95.556914999999989 33.927019999999999,-95.551147999999984 33.914566,-95.549144999999996 33.90795,-95.549475 33.901310999999993,-95.552330999999981 33.894419999999997,-95.55209457427955 33.888655441173519,-95.552085000000005 33.888421999999998,-95.551943532854764 33.888208369560985,-95.548485831718622 33.882986873004867,-95.548324999999991 33.882744000000002,-95.547838962671932 33.882363312195096,-95.545708294665019 33.880694470565629,-95.545197000000002 33.880293999999999,-95.54352178779898 33.880173169084813,-95.541265054919734 33.880010393826282,-95.539789999999996 33.879904000000003,-95.537358049249164 33.88037416967029,-95.534038375697051 33.881015963020303,-95.533282999999997 33.881161999999996,-95.531798241123994 33.881968630089013,-95.525321999999989 33.885486999999998,-95.521418133191162 33.888379988113826,-95.520137966641357 33.88932866459119,-95.515301759339067 33.891142240377064,-95.510062536063273 33.890134704348199,-95.506233872599807 33.886306036979761,-95.506495 33.878588999999998,-95.506084999999999 33.87639,-95.502407477038815 33.874787101867227,-95.502303999999995 33.874741999999998,-95.492028000000005 33.874822000000002,-95.480004545492946 33.87882505156746,-95.478574999999992 33.879300999999998,-95.477829321179073 33.879890044047791,-95.469962325642697 33.886104525088022,-95.467351237093553 33.886417854985297,-95.464924614258621 33.886709049048328,-95.462909526581015 33.885903021006229,-95.461498966768687 33.883686425341857,-95.46277824472287 33.878821065729895,-95.464211000000006 33.873372000000003,-95.463346 33.872312999999998,-95.461127233926518 33.871832054399569,-95.447370000000006 33.868850000000002,-95.418546279096461 33.866998581211959,-95.411345060268999 33.866536029139695,-95.407794999999979 33.866307999999989,-95.406882133018115 33.866362247208706,-95.404325916920058 33.866514150597617,-95.375232999999994 33.868243,-95.352338000000003 33.867789000000002,-95.339561303488324 33.868836967540759,-95.339121999999989 33.868873,-95.339014688391742 33.869073090388603,-95.33835013321854 33.870312202400832,-95.334854000000007 33.876830999999996,-95.334836460323601 33.877305631062114,-95.334523000000004 33.885787999999998,-95.333451999999994 33.886285999999998,-95.325571999999994 33.885703999999997,-95.310579050797429 33.880679668661742,-95.294789354523203 33.875388337067108,-95.287864786488143 33.87494634339312,-95.28344485260331 33.877745636185885,-95.281676877907344 33.882902226669891,-95.281529544303439 33.887616824907447,-95.281317419351268 33.889260797911334,-95.280350898312903 33.896751357029835,-95.279761569607459 33.899108654721076,-95.277846267017765 33.900876629417048,-95.275341635722626 33.901760616765031,-95.272542342929853 33.902055281117747,-95.267212735027385 33.900338966530455,-95.263849803053915 33.899255988324974,-95.261050510261143 33.899992642069066,-95.255746586173245 33.902939265610648,-95.253094626984378 33.90544389690578,-95.250884657186859 33.913105118684925,-95.250737329293145 33.917083057468233,-95.251326652288412 33.924154956252103,-95.253020000000006 33.927236999999998,-95.253623000000005 33.92971,-95.252905999999982 33.933647999999998,-95.250453815364224 33.936614470603772,-95.23166760862577 33.959340626388752,-95.231194814374604 33.959912577712174,-95.230491 33.960763999999998,-95.226393000000002 33.961953999999999,-95.219358 33.961567000000002,-95.184075000000007 33.950353,-95.174181557651636 33.944707625858101,-95.173657196254922 33.944408415920272,-95.168745999999999 33.941605999999993,-95.166685999999984 33.939728000000002,-95.161108999999982 33.937598,-95.149462 33.936335999999997,-95.131725657216535 33.936903570678005,-95.131056 33.936924999999995,-95.130760550144942 33.936820411866918,-95.124700000000004 33.934674999999991,-95.121184 33.931306999999997,-95.121974867397924 33.925542192115131,-95.122499622273722 33.921717137430115,-95.122365486317321 33.918632002634986,-95.119951031304154 33.915815139752631,-95.110963896232136 33.912998276870283,-95.103318123323447 33.913668959251616,-95.10214780889666 33.912991409673538,-95.100769532353866 33.912193461131935,-95.098489218495843 33.909913139475762,-95.095001673232161 33.904815960136006,-95.095247706914634 33.899772255341666,-95.095269945144935 33.899316370327696,-95.09392858558104 33.895962961020395,-95.090441035118587 33.893280234094433,-95.084002493615529 33.893280234094433,-95.079139333602001 33.898143394107954,-95.078905311676394 33.898377416033576,-95.074957661870556 33.900039583313315,-95.073630040977179 33.900598581227868,-95.071259538767663 33.901596686785098,-95.065491679645973 33.899584642240477,-95.06106518008815 33.895292278639054,-95.058834000000004 33.886812999999997,-95.049025 33.864089999999997,-95.046567999999994 33.862564999999996,-95.038661112238941 33.860609605793528,-95.037206999999995 33.86025,-95.033518790033554 33.860141698175291,-95.03143098776043 33.86008039125462,-95.030255193062573 33.860045864827867,-95.022324999999995 33.859813000000003,-95.016999191469623 33.861237606415294,-95.016422000000006 33.861392000000002,-95.008375999999984 33.866088999999995,-95.000223000000005 33.862504999999999,-94.995524000000003 33.857438000000002,-94.992810330111539 33.852698351540766,-94.992671 33.852454999999999,-94.992523097811741 33.852403566519136,-94.990494037024106 33.851697953840834,-94.988486999999992 33.850999999999999,-94.98739725328582 33.851074415574232,-94.983303000000006 33.851354,-94.981650000000002 33.852283999999997,-94.976208 33.859846999999995,-94.973410999999999 33.861730999999999,-94.971435 33.862122999999997,-94.968895000000003 33.860916000000003,-94.965888000000007 33.848421999999999,-94.964400999999995 33.837020999999993,-94.957676000000006 33.835003999999998,-94.949533421399437 33.825707838785306,-94.949112883549958 33.821754768331147,-94.948729542346143 33.818151347643564,-94.948715939727023 33.818023482549535,-94.944301522854289 33.81213759866646,-94.939560116480934 33.810502632153295,-94.935799688114457 33.810339132650462,-94.932366255585293 33.810993121156741,-94.928442330884351 33.812628087669893,-94.92451840618341 33.812791587172725,-94.924196338046286 33.812670811231236,-94.921902464831703 33.811810605997493,-94.919450010309433 33.810175636315982,-94.917815040627914 33.808704169305649,-94.917091634856007 33.805689966907131,-94.916834062621035 33.804616745101868,-94.916997555787162 33.801510305241678,-94.91961350347556 33.794152948011565,-94.920034399525505 33.790224602097751,-94.920103995647338 33.789575041141042,-94.920095560257593 33.789518805381888,-94.91961350347556 33.786305103362189,-94.913003475392784 33.779908559849432,-94.912450337640749 33.77937328682863,-94.911427000000003 33.778382999999998,-94.906244999999998 33.778191999999997,-94.902276 33.776288999999998,-94.89497736748055 33.771540270803243,-94.89019868072495 33.768431100796676,-94.888367999999986 33.76724,-94.887910246679809 33.766674529711281,-94.886225692565191 33.764593571999796,-94.885411379435553 33.764756432942491,-94.881447983999394 33.765549103837166,-94.879218389137634 33.764912090842074,-94.876033253179955 33.760771407616105,-94.875653319149677 33.757021753168047,-94.875534806260347 33.755852122792213,-94.875497398046861 33.755482932714841,-94.877080000000007 33.75222,-94.874668 33.749164,-94.870299604394191 33.746484207390097,-94.869443369718425 33.745958950164457,-94.869299999999996 33.745871,-94.8570941233355 33.742035460072337,-94.849295999999981 33.739584999999991,-94.841633779899112 33.739430990835892,-94.830804318260235 33.740068022348083,-94.828875382311935 33.74092532536806,-94.827937698058648 33.741342073027738,-94.826026615866809 33.743890180559411,-94.824752565187154 33.749304914465036,-94.82447272313469 33.749460382205008,-94.821885938813196 33.750897483986968,-94.817426749089677 33.752171534666616,-94.815635414888177 33.752066164468857,-94.813744972719192 33.751954964523563,-94.81275807295215 33.751896912919612,-94.812012015184067 33.751853028169073,-94.80914539498248 33.749304914465036,-94.798634446013509 33.744527205899239,-94.789716054221742 33.746119775421171,-94.777638928565466 33.753471071068567,-94.775064434371529 33.755038154868203,-94.770923763490302 33.754401129528375,-94.768057130944001 33.753445597691005,-94.766464573766783 33.750897483986968,-94.766146067269247 33.748030863785381,-94.766818924318841 33.746124416643802,-94.768057130944001 33.742616129879757,-94.767738636791165 33.737519908644046,-94.767244154304578 33.736926531576607,-94.76296091588064 33.731786662068515,-94.759138751496963 33.729557067206756,-94.758159820145337 33.729557067206756,-94.753087004596253 33.729557067206756,-94.750011775433265 33.728811557489699,-94.742576055627282 33.727008959675082,-94.742176780415733 33.726449974997927,-94.739390916583417 33.72254976995157,-94.737479828219207 33.716179498036198,-94.737788227808608 33.71500758055268,-94.73907239774114 33.71012773879076,-94.73746132453816 33.705563045258067,-94.73716130937693 33.704713004885136,-94.732383613155861 33.700253815161624,-94.728242929929891 33.699616789821789,-94.725694828570582 33.702483410023376,-94.724525908047042 33.704821269192259,-94.724102271393392 33.705668549067234,-94.721872664186904 33.707261118589173,-94.719006043985303 33.708216656598914,-94.714865360759347 33.707261118589173,-94.711043208720398 33.705668549067234,-94.709450639198465 33.699616789821789,-94.710289486124168 33.697309952648205,-94.710724689878106 33.696113138108018,-94.710724689878106 33.691653948384499,-94.710106194192988 33.688252279047049,-94.71008765219355 33.688150299756906,-94.707858069676533 33.686876245991066,-94.691547961569825 33.685092048879412,-94.684792000000002 33.684353000000002,-94.659166999999997 33.692138,-94.652265035786613 33.690979104454883,-94.649628372726468 33.688049476940073,-94.649099284135872 33.686462209886628,-94.648456523423718 33.684533926193204,-94.64818493525776 33.682632803768527,-94.647928021538007 33.680834402751707,-94.647870600191638 33.680432452214262,-94.648456523423718 33.673401362074948,-94.647827859209684 33.672301196274027,-94.646112824818204 33.669299876741562,-94.642890235687361 33.668420997570671,-94.635273213800133 33.669885811328072,-94.631328876730365 33.67284406472757,-94.630585813750528 33.673401362074948,-94.627656194751552 33.677795791992715,-94.62121101648988 33.681018386800773,-94.616816575217669 33.679553573043371,-94.614284398758912 33.677302743466427,-94.611543254774574 33.674866164477912,-94.611424034353576 33.674789522931938,-94.607441775118403 33.672229504256364,-94.60304734520065 33.671350625085473,-94.596895128555005 33.671350625085473,-94.593672545101384 33.673987285307021,-94.590449961647764 33.677502836053897,-94.590316660066918 33.67755410593854,-94.586641449284855 33.678967649811298,-94.579620000000006 33.677622999999997,-94.576973687569549 33.673401362074948,-94.5728722135906 33.669885811328072,-94.571305222138406 33.668005422800071,-94.569942586075811 33.666370260581196,-94.569356662843745 33.663440621711956,-94.571445361022185 33.660423619728157,-94.571993323065286 33.659632120703485,-94.572286279004103 33.656995454804722,-94.570821465246695 33.654944723492456,-94.568770728257221 33.65465176187643,-94.564669254278257 33.655823608340576,-94.563858010166513 33.65591721375597,-94.557052229552454 33.656702498865904,-94.552071876402621 33.653479904057846,-94.551192985877293 33.650257320604226,-94.551311999999982 33.644569999999995,-94.553536678805585 33.642054372646328,-94.552657799634687 33.638245860283412,-94.549142248887819 33.635902161677912,-94.543868917090279 33.635902161677912,-94.538888563940446 33.637952898667386,-94.538195599937964 33.637916426989378,-94.537583502619341 33.637884211439605,-94.533322276204103 33.637659937051346,-94.529220802225154 33.63443734792051,-94.528408204203203 33.630103504051213,-94.528341911699826 33.629749945032266,-94.52980672545722 33.627406252103981,-94.528927834931892 33.621839964367631,-94.526291174710352 33.619203298468861,-94.521363727720257 33.61686924674752,-94.520724886974008 33.61656663824732,-94.504615 33.620682000000002,-94.493418698303032 33.624467326832118,-94.492501061148843 33.624777568252533,-94.491502999999994 33.625115,-94.491295462081894 33.62531395337146,-94.487514000000004 33.628939000000003,-94.485874999999993 33.637867,-94.481313 33.638818999999998,-94.476415000000003 33.638947000000002,-94.466075000000004 33.636262000000002,-94.464185999999998 33.637655000000002,-94.461453000000006 33.643615999999994,-94.459197999999986 33.645145999999997,-94.454819999999998 33.644902999999999,-94.448637000000005 33.642766000000002,-94.446871000000002 33.640177999999999,-94.447513999999998 33.636254999999991,-94.448451000000006 33.634497000000003,-94.458816999999982 33.632444,-94.462736000000007 33.63091,-94.461129 33.625414999999997,-94.460285999999996 33.624420999999998,-94.45525499999998 33.622917,-94.452710999999994 33.622621000000002,-94.452325000000002 33.618817,-94.452961000000002 33.616985999999997,-94.454768999999999 33.615155999999992,-94.462335999999993 33.610567000000003,-94.469451000000007 33.60731599999999,-94.472166 33.604199,-94.471974000000003 33.602665000000002,-94.471151999999989 33.601588,-94.468086 33.599435999999997,-94.461794602929331 33.598691554192769,-94.458900358388505 33.598349085232492,-94.458231999999995 33.598269999999999,-94.454858239556387 33.593453869357283,-94.453995999999989 33.592222999999997,-94.453435550445548 33.592019500625121,-94.452150252013013 33.591552808439438,-94.451622 33.591360999999999,-94.449112 33.590893999999992,-94.442363999999998 33.591242999999999,-94.441536999999997 33.591501999999991,-94.439518000000007 33.594154000000003,-94.430358101189597 33.59122600196271,-94.430038999999994 33.591124,-94.429672337173542 33.590855074196774,-94.427920122643982 33.589569927010331,-94.427577999999983 33.589319000000003,-94.425982000000005 33.586424999999998,-94.413155000000003 33.569367999999997,-94.412481642075306 33.56890283335202,-94.412480771235352 33.568902231761562,-94.412480202418593 33.568901838813659,-94.412175000000005 33.568691,-94.408900999999986 33.568196999999998,-94.403341999999995 33.568424,-94.397341999999981 33.571607999999998,-94.385926999999995 33.581887999999999,-94.382886999999997 33.58326799999999,-94.379649 33.580607,-94.378075999999993 33.577019,-94.377759999999981 33.574609000000002,-94.378561000000005 33.571328999999999,-94.380090999999993 33.568942999999997,-94.382534000000007 33.567056999999998,-94.388052000000002 33.565511,-94.392357000000004 33.565286999999998,-94.394655618773015 33.564059042448399,-94.397398454287298 33.562313601959417,-94.399227012370631 33.559903231990447,-94.399393244337958 33.557077279687135,-94.399143896386974 33.555498071165481,-94.397957000000005 33.554389999999998,-94.392572999999999 33.551141999999999,-94.389515000000003 33.546778000000003,-94.386086000000006 33.544922999999997,-94.381666999999993 33.544035,-94.373392999999993 33.544471,-94.371597999999992 33.545000999999999,-94.363297000000003 33.544956999999997,-94.361350999999999 33.544612999999998,-94.358969999999999 33.54323,-94.355945000000006 33.54318,-94.348944999999986 33.548358999999998,-94.347382999999979 33.55107799999999,-94.34729 33.552197,-94.352653000000004 33.560611000000002,-94.352433000000005 33.56217199999999,-94.345512999999997 33.567312999999999,-94.344023000000007 33.567824000000002,-94.340576999999996 33.567878,-94.340047258358467 33.56768232744934,-94.338972839399958 33.567285465504582,-94.33842199999998 33.567081999999999,-94.337996277272822 33.566655299162022,-94.334939999999989 33.563592,-94.334379999999996 33.562536,-94.333929800646288 33.557825151092565,-94.333894999999998 33.557461000000004,-94.333202999999997 33.555365999999992,-94.331833000000003 33.553348,-94.33059 33.552692,-94.323660000000004 33.549835000000002,-94.319491999999997 33.548864000000002,-94.309582000000006 33.551673,-94.30641 33.555616,-94.306214999999995 33.557676,-94.307180999999986 33.559797000000003,-94.303577000000004 33.56828,-94.301022999999986 33.573022000000002,-94.298392000000007 33.576217999999997,-94.293257999999994 33.580418999999999,-94.289129000000003 33.582143999999992,-94.287025 33.582410000000003,-94.283581999999996 33.581890999999999,-94.282647999999995 33.580978000000002,-94.280849000000003 33.577187000000002,-94.280604999999994 33.574907999999994,-94.282171999999989 33.572989,-94.290372000000005 33.567905000000003,-94.291686999999996 33.563481000000003,-94.290901000000005 33.558872,-94.289439999999999 33.557634999999998,-94.287571999999997 33.557178,-94.279089999999997 33.557026,-94.275600999999995 33.557963999999998,-94.274473 33.558652000000002,-94.271997999999996 33.561517999999992,-94.270978999999997 33.563220999999999,-94.270853000000002 33.564782999999998,-94.265668999999988 33.573588999999998,-94.262754999999999 33.577354,-94.257801 33.582507999999997,-94.257524288354617 33.582703553652586,-94.252656000000002 33.586143999999997,-94.245931999999996 33.589113999999995,-94.242777000000004 33.589708999999999,-94.240178999999998 33.589536000000003,-94.236971999999994 33.587411000000003,-94.236362999999997 33.585991999999997,-94.236835999999997 33.580914,-94.237975000000006 33.577756999999998,-94.238867999999997 33.576721999999997,-94.244365999999999 33.573549,-94.251108000000002 33.56528,-94.252330999999984 33.561855,-94.252283000000006 33.560445,-94.251569000000003 33.558188,-94.250197 33.556764999999999,-94.237903999999986 33.552675,-94.233128263729824 33.552212399803537,-94.233017493976078 33.552201670126067,-94.231843999999981 33.552087999999998,-94.226392000000004 33.552911999999999,-94.222920999999999 33.554088,-94.21922099999999 33.556095999999997,-94.213604000000004 33.563133999999998,-94.21268334130005 33.563763266722709,-94.208078 33.566910999999998,-94.205634000000003 33.567228999999998,-94.203593999999981 33.566546000000002,-94.202594978382763 33.562850001484037,-94.201237000000006 33.557825999999999,-94.199485999999993 33.556085000000003,-94.197816999999986 33.555238000000003,-94.196394999999995 33.555123000000002,-94.193247999999997 33.556153999999999,-94.191332999999986 33.55766599999999,-94.189883999999992 33.562454000000002,-94.192482999999996 33.570425,-94.194399000000004 33.573678,-94.196366991504703 33.574779501237479,-94.201105911663163 33.575851400157113,-94.204265191768783 33.575005164570705,-94.207404999999994 33.574353000000002,-94.209665 33.573509999999999,-94.211329000000006 33.573774,-94.216140999999993 33.576391999999998,-94.217408000000006 33.579259999999998,-94.217197999999982 33.580736999999999,-94.214431000000005 33.583187000000002,-94.212997 33.583486999999991,-94.210966999999997 33.583143,-94.205788416261612 33.581380140341984,-94.203588205048902 33.580815984742067,-94.199751933850294 33.581098061448763,-94.196536237091394 33.581718635888464,-94.194464999999994 33.582886000000002,-94.190890999999979 33.587474,-94.183913000000004 33.594681999999999,-94.180879999999988 33.592612000000003,-94.176327 33.591076999999999,-94.162266000000002 33.588906,-94.161081999999993 33.587972,-94.162009999999995 33.580877,-94.161276999999998 33.579270999999999,-94.156782000000007 33.575749000000002,-94.152625999999998 33.575923000000003,-94.148731999999995 33.580196999999998,-94.146047999999993 33.581975,-94.144383000000005 33.582097999999995,-94.142160000000004 33.581389999999999,-94.141852 33.579590000000003,-94.143023999999983 33.577725,-94.145668999999984 33.575599999999994,-94.149506000000002 33.573602,-94.151257 33.571793,-94.151754999999994 33.569476000000002,-94.151455999999996 33.568387,-94.148520000000005 33.565677999999991,-94.145239000000004 33.564987000000002,-94.143401999999995 33.565504999999995,-94.136863999999989 33.570999999999998,-94.136045999999993 33.571387999999999,-94.135142000000002 33.571033,-94.134308000000004 33.569209,-94.133047999999988 33.557952999999998,-94.131382000000002 33.552934,-94.128658 33.550952000000002,-94.126897999999983 33.550646999999991,-94.123897999999997 33.552100000000003,-94.122878999999983 33.553111999999999,-94.12071899999998 33.560555,-94.120354999999989 33.5655,-94.119902152897509 33.566998927274319,-94.112842999999998 33.566991000000002,-94.103176000000005 33.570349999999998,-94.100106999999994 33.57256799999999,-94.097439999999992 33.573718999999997,-94.088943 33.575322,-94.082640999999995 33.575491999999997,-94.072670000000002 33.572234000000002,-94.072231491265512 33.572605318678747,-94.072031926011121 33.573523317998088,-94.072031926011121 33.573846369634623,-94.072031926011121 33.574161925883949,-94.071815412538413 33.574459631515609,-94.071712621294751 33.574600969288895,-94.071353404455635 33.574840447439463,-94.070395493400298 33.574561056392717,-94.069534727631535 33.574169799087244,-94.069517406590393 33.574161925883949,-94.068559493988133 33.573563230894273,-94.068280102941401 33.571966710019424,-94.06782332144887 33.570215714974232,-94.067801146640278 33.570130711574109,-94.066845999999998 33.568908999999998,-94.061283000000003 33.568804999999998,-94.056597999999994 33.567824999999999,-94.056095999999997 33.567252000000003,-94.055662999999996 33.561886999999999,-94.056442000000004 33.560997999999991,-94.059849999999997 33.559249,-94.061179999999993 33.559159,-94.066685000000007 33.560953999999995,-94.067984999999993 33.560960999999999,-94.071719999999999 33.559682000000002,-94.073744000000005 33.558284999999998,-94.073825999999997 33.555833999999997,-94.072156000000007 33.553863999999997,-94.069091999999998 33.553406000000003,-94.06547999999998 33.550908999999997,-94.061896000000004 33.549764000000003,-94.056095999999997 33.550725999999997,-94.051882000000006 33.552585,-94.050211999999988 33.551082999999998,-94.046040000000005 33.551321000000002,-94.043449999999993 33.552253,-94.043428000000006 33.551424999999995,-94.043374999999997 33.542315000000002,-94.043020107474533 33.494534442391668,-94.043008999999998 33.493039000000003,-94.043278999999998 33.491029999999995,-94.043271947583932 33.489425304099555,-94.043188 33.470323999999991,-94.043130608695648 33.460424000000003,-94.043089437732434 33.453322008844353,-94.043061045958495 33.448424427841935,-94.043010021810147 33.439622762252007,-94.042987999999994 33.435823999999997,-94.042987999999994 33.434442436873745,-94.042987999999994 33.431023999999994,-94.042886999999993 33.420225000000002,-94.042890126641851 33.419424334827802,-94.042891364631132 33.419107312620362,-94.042967439944888 33.399626074590046,-94.043053 33.377715999999999,-94.042868999999996 33.371169999999999,-94.043127999999996 33.358756999999997,-94.043066999999979 33.352097,-94.043066999999979 33.347351000000003,-94.043066999999979 33.339614667914582,-94.043066999999979 33.330497999999999,-94.042990000000003 33.271227000000003,-94.043049999999994 33.260903999999996,-94.043003999999996 33.250127999999997,-94.042730000000006 33.241822999999997,-94.042876000000007 33.215218999999998,-94.042891999999995 33.202666,-94.042874999999995 33.199784999999999,-94.042718999999991 33.160290999999994,-94.043184999999994 33.143476,-94.043076999999982 33.138162,-94.043007000000003 33.13389,-94.042951563372725 33.117233519058104,-94.042869999999994 33.092726999999996,-94.043036 33.079484999999998,-94.042963999999998 33.019219,-94.042986850316112 33.007494023677346,-94.043068075862834 32.965815492539427,-94.043087999999997 32.955592000000003,-94.043066999999979 32.937902999999999,-94.043092 32.910021,-94.042884999999998 32.898910999999998,-94.042859000000007 32.892771000000003,-94.042885999999996 32.880965000000003,-94.043025 32.880445999999999,-94.042784999999995 32.871485999999997,-94.042921087938623 32.829694015190334,-94.043025999999983 32.797476000000003,-94.042747000000006 32.786973000000003,-94.042828999999998 32.785277,-94.042937999999992 32.780557999999999,-94.043026999999995 32.776862999999999,-94.042946999999998 32.767991000000002,-94.042974715046569 32.757603400545236,-94.04314699999999 32.693030999999998,-94.042912999999999 32.655126999999993,-94.042779999999993 32.643465999999997,-94.042823999999996 32.640304999999998,-94.042925999999994 32.622014999999998,-94.042929 32.618259999999992,-94.042918999999998 32.610142000000003,-94.042939007208048 32.604544739553475,-94.043082999999996 32.564261000000002,-94.043142000000003 32.559502000000002,-94.043081 32.513612999999999,-94.042884999999998 32.505144999999999,-94.042911000000004 32.492851999999999,-94.043088999999995 32.486561000000002,-94.043071999999995 32.48429999999999,-94.042955000000006 32.480260999999999,-94.042995000000005 32.478003999999999,-94.042901999999998 32.472905999999995,-94.042874999999995 32.471347999999992,-94.042902999999981 32.470385999999998,-94.042907999999997 32.439890999999996,-94.042985999999999 32.435507,-94.042898999999991 32.400658999999997,-94.042923000000002 32.399918,-94.042900999999986 32.392282999999999,-94.042762999999994 32.373331999999998,-94.042738999999997 32.363559000000002,-94.042733519218956 32.277818574933548,-94.042732999999998 32.269696000000003,-94.042732 32.269620000000003,-94.042671451745775 32.225096273752321,-94.042662000000007 32.218145999999997,-94.042600205901905 32.185155675879351,-94.042565999999994 32.166893999999999,-94.042538999999991 32.166826,-94.042591000000002 32.158096999999998,-94.042681000000002 32.137956000000003,-94.042751999999993 32.125163,-94.042337000000003 32.119914,-94.042699999999996 32.056012000000003,-94.042717288248511 32.00695918811028,-94.042720000000003 31.999265,-94.042490448495869 31.997488887291052,-94.042251674184627 31.995641414801661,-94.041832999999997 31.992401999999998,-94.038411999999994 31.992436999999999,-94.029282999999992 31.995864999999998,-94.027080554152732 31.994823406342874,-94.018664 31.990842999999998,-94.011671046736083 31.979908989829021,-94.008352361284565 31.974719974671689,-94.002944198469422 31.966263903968002,-93.995504541226836 31.954631438414648,-93.994147015257326 31.952508844111783,-93.977461000000005 31.926418999999996,-93.971711999999982 31.920383999999995,-93.953546000000003 31.910562999999996,-93.943541310721315 31.908563758569336,-93.938002035663573 31.906916949339585,-93.935007833635339 31.903773037645127,-93.932462763507019 31.895538979891644,-93.931327794714704 31.894581351390723,-93.92767203678045 31.891496810199779,-93.923929283519882 31.889849995167665,-93.919587694495533 31.890748256066246,-93.915948999999998 31.892861000000003,-93.909557114944889 31.893143619429534,-93.905252294448232 31.890856686636408,-93.90476638821832 31.890598549301192,-93.901173350426333 31.885957535142037,-93.901888 31.880063,-93.898135577976262 31.874953416991548,-93.896981462364707 31.873381885463036,-93.889196542313442 31.867692899288475,-93.888241004857136 31.85786451213389,-93.888148571748644 31.856913771406646,-93.887306164689562 31.854968889155742,-93.884117000000003 31.847605999999995,-93.880377455095243 31.844791786271248,-93.879654915472827 31.84424803536659,-93.874821999999995 31.840611000000003,-93.874804231839249 31.835091218914506,-93.874787826198073 31.829994712349503,-93.874761000000007 31.821660999999999,-93.870917000000006 31.816836999999996,-93.868473098390325 31.815251608244314,-93.853390000000005 31.805467,-93.846187999999998 31.802021,-93.839950728453459 31.798597132180646,-93.836868453653821 31.794158659336233,-93.836868453653821 31.791454071635616,-93.836868453653821 31.788733862378688,-93.834649214842401 31.783309060642711,-93.831197070889573 31.780226788232302,-93.827450999999996 31.777740999999999,-93.823442999999997 31.775098,-93.822597999999985 31.773558999999995,-93.826519525540022 31.761832440276638,-93.827342999999999 31.759369999999997,-93.830112066651125 31.754555168030393,-93.830647423185951 31.745811043570992,-93.824579 31.734396999999998,-93.819048075401312 31.72885814427071,-93.818932598107111 31.728523867973351,-93.815657495541259 31.719043310199801,-93.815835943108667 31.711905251886723,-93.815525624652665 31.710796971318612,-93.814600367558683 31.707492480599399,-93.814586782471608 31.707443962415162,-93.811060073548262 31.705827553684028,-93.810303944025605 31.705480994217723,-93.807270273132957 31.704231833580664,-93.806045429297654 31.703104120446881,-93.803419352361757 31.700686292667093,-93.802693549340276 31.697783082925291,-93.802451615781152 31.693186330065117,-93.804479 31.685663999999999,-93.812820813246589 31.676953615984285,-93.81562111199878 31.674029590143711,-93.817425 31.672146,-93.821829497696953 31.673879806810671,-93.822051000000002 31.673966999999998,-93.822341750589956 31.673502431839047,-93.826462000000006 31.666919,-93.8257324849111 31.66154827530681,-93.825660999999997 31.661021999999996,-93.825228912080746 31.660277861177896,-93.81803699999999 31.647891999999999,-93.817707248836442 31.6409111211136,-93.816838000000004 31.622509,-93.818717000000007 31.614555999999997,-93.823976999999999 31.614227999999997,-93.825414416100287 31.615089707767993,-93.827851999999993 31.616550999999998,-93.838056999999992 31.606795000000002,-93.839382999999998 31.599074999999999,-93.837534908858984 31.593743346167731,-93.834924 31.586210999999999,-93.822958 31.568129999999996,-93.822219025006859 31.564792487143556,-93.820763999999997 31.558221000000003,-93.818582000000006 31.554825999999998,-93.798086999999995 31.534044000000002,-93.787687000000005 31.527343999999996,-93.781574079702807 31.525595412174177,-93.780834999999996 31.525383999999999,-93.777170583402579 31.525128039451072,-93.760062000000005 31.523933,-93.753860000000003 31.525331,-93.751899169046524 31.525601857922521,-93.749869902733366 31.526210635456998,-93.746826003263621 31.526007705679731,-93.743376259969125 31.525196002300419,-93.742401241878753 31.523787647735123,-93.74154991556837 31.522557958452786,-93.741111000000004 31.520101,-93.740752889151466 31.518711098615515,-93.740332360499409 31.517078940980245,-93.739317727342822 31.515049678599539,-93.734411826534469 31.513527159467717,-93.733432858180635 31.513223342063657,-93.726736285639134 31.511599931372594,-93.725924582259807 31.504091651519342,-93.728765551952293 31.496786301443361,-93.730997740177827 31.492118989316349,-93.733996137544537 31.48847587643743,-93.737167999999997 31.484621999999998,-93.741884999999982 31.483535,-93.745608448194673 31.481972669547908,-93.746355058504165 31.481633300507966,-93.747840636420193 31.480958036391328,-93.749869902733366 31.478928770078173,-93.749869902733366 31.475276095040186,-93.749626709600278 31.47120988033301,-93.749476 31.468689999999999,-93.709416000000004 31.442995,-93.706857276389258 31.44142369846492,-93.700929751125955 31.437783629836048,-93.697919763270235 31.429300939077926,-93.697603150134782 31.428408665937056,-93.704678 31.418899999999997,-93.704697874245824 31.418107106580852,-93.704878999999991 31.410881,-93.701611 31.409333999999998,-93.695865999999995 31.409391999999997,-93.689953513429003 31.406208353384852,-93.678362516190631 31.399967047179565,-93.675064666986117 31.398191282223291,-93.674659331220113 31.397973024503138,-93.674116999999981 31.397680999999995,-93.671643999999986 31.393352,-93.670181999999983 31.387184,-93.668532759396427 31.379357124595749,-93.668145986696857 31.37510269235548,-93.669064113561134 31.373151679996884,-93.669693055010129 31.371815184369147,-93.669512094168894 31.370548454097019,-93.668919524600994 31.366400452767671,-93.667402247962755 31.365414223393856,-93.665051865060306 31.363886475190469,-93.663891561951601 31.361952641672623,-93.663698175601809 31.360018811902275,-93.664665092360735 31.357698213179859,-93.665825387974422 31.355184231855155,-93.668439000000006 31.353011999999996,-93.669515978941746 31.350266666374935,-93.673736148309771 31.339509006758242,-93.677277000000004 31.330482999999997,-93.687850999999995 31.309835,-93.686922292404276 31.305369360695714,-93.686880000000002 31.305166,-93.686723586265984 31.304979085312567,-93.684737187533131 31.30260533533086,-93.684038999999999 31.301770999999995,-93.683824154244718 31.301752735987076,-93.675439999999995 31.30104,-93.668927999999994 31.297974999999997,-93.657003999999986 31.281735999999999,-93.647719584117951 31.27389987096868,-93.642516 31.269508000000002,-93.632650200244299 31.270182983909681,-93.620343000000005 31.271025000000002,-93.615257056394739 31.261768439618621,-93.61394199999998 31.259374999999995,-93.614287999999988 31.251631,-93.616308000000004 31.244595000000004,-93.616007481020262 31.233959925788763,-93.613835693061347 31.232449117569455,-93.609977782626956 31.229765355202261,-93.609827614285464 31.229660890324059,-93.608033931702224 31.227867209671889,-93.60740940488401 31.227242683526022,-93.605259887151632 31.224152751460338,-93.604319472818304 31.220794125122111,-93.604319472818304 31.215285983654958,-93.607287999999997 31.205403,-93.602442999999994 31.182541,-93.600307999999998 31.176157999999997,-93.598827999999997 31.174679,-93.595531708436056 31.171774432382691,-93.588772842417583 31.16581877494577,-93.588502999999989 31.165581,-93.588046655571759 31.165671453282986,-93.583339301771971 31.166604510813709,-93.579215000000005 31.167421999999995,-93.578993496784307 31.167654977688123,-93.574136071231791 31.172764031170193,-93.569563000000002 31.177574,-93.560942999999995 31.182481999999997,-93.552649000000002 31.185575,-93.548930999999996 31.186601,-93.535096999999993 31.185614,-93.533756450961803 31.184752004501149,-93.533306999999994 31.184463,-93.5330935917342 31.183965183917415,-93.531744000000003 31.180816999999998,-93.533193520062923 31.174490811082034,-93.53417786817559 31.170194787673282,-93.536829999999981 31.158620000000003,-93.540253000000007 31.156578999999997,-93.544009577425854 31.153014849431809,-93.544887639546317 31.148844041597808,-93.544887639546317 31.143136612291205,-93.544701999999987 31.135888999999999,-93.540277800652078 31.128868068802213,-93.539619249807799 31.121843550568837,-93.541375382556595 31.113501939154769,-93.541635919885238 31.113241401693255,-93.548470239502265 31.106407078590973,-93.549716998224596 31.105160319232844,-93.55112206776522 31.099540038044921,-93.551692642249563 31.097257738879012,-93.551034091405285 31.091111287020031,-93.546643772295099 31.082989189009115,-93.540128999999993 31.078002999999995,-93.53104031045666 31.074698717981779,-93.527873992025093 31.072210897922254,-93.526043656150705 31.070772777782928,-93.524020490083288 31.067083472240864,-93.523009982318626 31.065240780256033,-93.523659621286654 31.063941504256789,-93.525329858273139 31.060601035263321,-93.529255791555698 31.057567354514948,-93.532069000000007 31.055264,-93.531218761655126 31.051678447674814,-93.523247999999995 31.037841999999998,-93.516942620821894 31.032584114108545,-93.516407263768343 31.029550433360171,-93.516883288197775 31.024314186160638,-93.516942620821894 31.023661529978199,-93.539525999999995 31.008497999999999,-93.540062152267268 31.008345085566372,-93.540618575989114 31.008186389569964,-93.555580999999989 31.003918999999996,-93.562626264226125 31.00599480945781,-93.566016847371429 31.004567194682853,-93.567979815741779 31.001533515663564,-93.569764334642755 30.996715319472376,-93.571101253513504 30.991033414001794,-93.571905755076102 30.987614282198351,-93.567971999999997 30.977981,-93.560533000000007 30.971285999999999,-93.55046299120518 30.967360467203815,-93.549841 30.967117999999996,-93.539153617393822 30.956968324013513,-93.532549000000003 30.950695999999997,-93.526524876707626 30.939912016599852,-93.526293050708773 30.939497017171423,-93.526245000000003 30.939411,-93.526242458076936 30.939167805401102,-93.526231146824912 30.938085618677029,-93.526146999999995 30.930035,-93.526269219450654 30.929894609689271,-93.530935999999983 30.924533999999998,-93.542488999999989 30.920064,-93.54502991280485 30.920837107400992,-93.546884259495414 30.92151141825828,-93.549244331161987 30.921005686748707,-93.550358562122057 30.920030731622223,-93.551941554990407 30.918645608548566,-93.555650241837967 30.911228247920597,-93.555751501305451 30.910053639118178,-93.555774257662236 30.909789665608852,-93.556493125509377 30.9014508058257,-93.562447641167196 30.896531852982324,-93.563812214002311 30.895404595987301,-93.564247644832776 30.895044891882932,-93.567787752332634 30.888301832311882,-93.567450600170787 30.878524390216981,-93.566008182600839 30.875519355165832,-93.565853452041281 30.875197,-93.565427680666076 30.874309976760035,-93.563763247930751 30.87311591407202,-93.559394659034922 30.869981891957959,-93.55904186947815 30.86972880101742,-93.558616999999984 30.869423999999999,-93.558608112367665 30.868835818489011,-93.558593354020289 30.867859114376206,-93.558393833586933 30.854654896933653,-93.558352334289978 30.851908482785802,-93.558231866260058 30.843935935637496,-93.558171999999999 30.839973999999998,-93.553625999999994 30.835139999999999,-93.55374115920948 30.832414921630001,-93.554057 30.824940999999995,-93.561666000000002 30.807738999999998,-93.563243 30.806218000000005,-93.564501487304341 30.805543276361082,-93.569303000000005 30.802969,-93.578395 30.802046999999998,-93.584264999999988 30.796662999999995,-93.588934854633479 30.787551489258888,-93.589380999999989 30.786681000000002,-93.589895999999996 30.77776,-93.591925627378814 30.768225181611253,-93.592827999999997 30.763985999999996,-93.607757000000007 30.757656999999995,-93.611581311334461 30.752392350515215,-93.615058988962588 30.747604886281291,-93.619129 30.742001999999996,-93.617688 30.738479000000005,-93.609908791486006 30.729403419430973,-93.609718999999998 30.729181999999998,-93.609544 30.723138999999996,-93.61030547238029 30.720788970554505,-93.611192000000003 30.718053,-93.61618399999999 30.713980000000003,-93.616977218405893 30.712276394979256,-93.620773999999997 30.704122000000005,-93.621061387132315 30.696047232392139,-93.621092999999988 30.695159,-93.62235785978659 30.692974242186811,-93.629903999999996 30.679939999999995,-93.632922525899005 30.677439880221801,-93.638212999999993 30.673057999999997,-93.646373493696458 30.671658473870171,-93.653439445062318 30.670446661945991,-93.654970999999989 30.670183999999999,-93.666219386787546 30.661299653678171,-93.670353999999989 30.658033999999997,-93.670860468306827 30.657347728689221,-93.683099999999996 30.640763000000003,-93.685120999999981 30.625201,-93.684323003112922 30.617258061147268,-93.683396999999985 30.608040999999997,-93.680812614601606 30.602993111696524,-93.680648411741274 30.602453589051585,-93.679828117977763 30.599758343304948,-93.681234543283509 30.596101640780542,-93.683902548646543 30.593069810094963,-93.684328672415049 30.59258557751615,-93.684347894395486 30.592579170189346,-93.687282162286593 30.59160108089231,-93.689533999999995 30.592759,-93.692869000000002 30.594382000000003,-93.712453999999994 30.588479,-93.72107859525056 30.580404159651369,-93.727657631584904 30.574244488790981,-93.727844000000005 30.574069999999995,-93.727840097341868 30.573768021870688,-93.72780696123904 30.571204031383882,-93.727747245613443 30.566583382517752,-93.727745999999996 30.566486999999999,-93.725846999999987 30.556978,-93.728764326223569 30.546403128121515,-93.729195000000004 30.544841999999999,-93.736587760607577 30.541316766984647,-93.740252999999996 30.539569,-93.738909526480768 30.537838512460276,-93.732793 30.529960000000003,-93.727721000000003 30.525671000000003,-93.718711305261792 30.520890798500346,-93.714321999999996 30.518561999999996,-93.710116999999997 30.506399999999996,-93.713193644304937 30.50058809182816,-93.716678000000002 30.494005999999995,-93.71365216083376 30.483878530555742,-93.711446941284677 30.476497671106777,-93.710595424186792 30.473647647388944,-93.709703157003446 30.47066123332699,-93.708899372668625 30.467970970942378,-93.705844999999997 30.457747999999999,-93.697828 30.443837999999996,-93.6978 30.440583,-93.698862234241474 30.438260713588438,-93.702220303997905 30.430919206922557,-93.702664999999996 30.429947000000002,-93.722313999999997 30.420729,-93.729486046484141 30.413342592858086,-93.738025291703323 30.404548123662593,-93.738321805525445 30.404242747530638,-93.745333000000002 30.397022,-93.751243378615428 30.396311282781173,-93.751436999999996 30.396287999999998,-93.754787283332149 30.393127406185759,-93.75746720581121 30.390599218098316,-93.757654000000002 30.390422999999995,-93.757872622462301 30.389610210267922,-93.758470934573069 30.387385818798332,-93.75855399999999 30.387077,-93.758091991038413 30.3842338214119,-93.758032188807945 30.383865801664729,-93.757931393201204 30.383245510859378,-93.75589426835937 30.370709152880856,-93.756044740613035 30.365928314513319,-93.75610723110799 30.3639428524199,-93.756352000000007 30.356166000000002,-93.758519945992674 30.350935458285047,-93.760658351649255 30.34577618769989,-93.763244572034736 30.339536487238696,-93.765822 30.333317999999995,-93.764264999999995 30.330222999999997,-93.760690955159149 30.32995156504764,-93.760328 30.329923999999998,-93.747921244232074 30.314935395431327,-93.743830002049762 30.309992764786195,-93.741160171732417 30.306767342150266,-93.738698999999997 30.303793999999996,-93.734966161369201 30.301561360829975,-93.729390287632427 30.298226388348422,-93.724220000000003 30.295133999999997,-93.718684474451791 30.295009979388311,-93.714319430116035 30.294282471059141,-93.71311219174963 30.293184979315004,-93.711118400234781 30.291372437742464,-93.709949692759622 30.289928741213533,-93.708644873043468 30.288316906143507,-93.708448001046747 30.287627854154977,-93.707590519980414 30.284626670422831,-93.706607851977495 30.281187332412603,-93.706635817233519 30.280914670488997,-93.707189856385114 30.275512775340033,-93.709131999999997 30.271826999999995,-93.707538803456245 30.253087036355307,-93.707271000000006 30.249936999999996,-93.705637767078656 30.244573755694763,-93.705083000000002 30.242751999999996,-93.707646217538425 30.23733474070027,-93.713358999999997 30.225261,-93.71802168481895 30.219915738218987,-93.719219999999993 30.218541999999999,-93.720945999999998 30.209852,-93.717397000000005 30.193439,-93.710467999999992 30.180670999999997,-93.706634735424259 30.17682001000631,-93.705927274531248 30.176109277739844,-93.705791510460429 30.175972885881706,-93.703764000000007 30.173936,-93.703646997347349 30.173527735424756,-93.702964616901454 30.171146663230584,-93.701744610591902 30.166889619937699,-93.701686103512344 30.166685467574972,-93.697748000000004 30.152943999999998,-93.696083741705934 30.150925109485563,-93.688211999999979 30.141376,-93.69286799999999 30.135216999999997,-93.69498 30.135185,-93.698276000000007 30.138608000000005,-93.700984936503929 30.137486558544058,-93.701251999999997 30.137376,-93.7012922571502 30.136537706048752,-93.701585086407604 30.130439981942867,-93.701656556414648 30.128951727699913,-93.701742498922442 30.127162105630983,-93.701985639262489 30.122099077688652,-93.702366286953335 30.114172668214064,-93.702403861450691 30.11339023643033,-93.702436000000006 30.112720999999997,-93.70268530105453 30.112503701678254,-93.704703872918159 30.110744253531749,-93.710410303455276 30.105770356484715,-93.714491639657382 30.10221294069715,-93.723764999999986 30.094129999999996,-93.727140999999989 30.092110594495406,-93.7293848599641 30.090768395691203,-93.72996305770063 30.09042253796256,-93.732484999999997 30.088913999999995,-93.734084999999979 30.086129999999997,-93.731705540540531 30.081478540540548,-93.731605000000002 30.081282000000002,-93.729179922109864 30.079341937687897,-93.727017487667368 30.077611990133899,-93.71640499999998 30.069121999999997,-93.716151269697463 30.069056930886212,-93.707507094464489 30.066840132907302,-93.702179999999998 30.065473999999995,-93.700580000000002 30.063666,-93.699479012508235 30.0595596142199,-93.699395999999993 30.059249999999995,-93.699786698153744 30.05843348475733,-93.700658293446523 30.056611948527472,-93.700819999999993 30.056273999999998,-93.702099264262131 30.055460929156467,-93.703267223154896 30.054718601437116,-93.703940000000003 30.054290999999999,-93.704473210548429 30.054251542735575,-93.709782747672762 30.053858640136632,-93.710785394684464 30.05378444485228,-93.720804999999999 30.053042999999995,-93.729054152595779 30.045230570163486,-93.729990027439044 30.044344241966268,-93.737446000000006 30.037282999999999,-93.739158000000003 30.032626999999998,-93.739733999999999 30.023987000000002,-93.741078000000002 30.021571000000002,-93.744068611359822 30.019549890100706,-93.74834924745744 30.01665695787004,-93.753252045558341 30.013343557169065,-93.766227014667976 30.004574835541469,-93.782835629207284 29.993350429819579,-93.786934999999986 29.990579999999998,-93.789430999999993 29.987812000000002,-93.803328792953494 29.962666096659486,-93.807814999999991 29.954549,-93.813734999999994 29.935126,-93.816550000000007 29.920725999999995,-93.818997999999993 29.914822,-93.830374000000006 29.894358999999998,-93.838374000000002 29.882854999999999,-93.853129483564672 29.866348149842587,-93.854474509531912 29.864843479256791,-93.855140000000006 29.864098999999996,-93.857517787207271 29.862146563102172,-93.862474802662518 29.858076283033213,-93.863569999999996 29.857177,-93.864820388168837 29.856398395289631,-93.872445999999997 29.851650000000003,-93.890679000000006 29.843159000000004,-93.900728 29.836967,-93.911111176241661 29.828996955749506,-93.916359999999997 29.824967999999998,-93.922743999999994 29.818808,-93.927992000000003 29.809640000000002,-93.929208000000003 29.802952,-93.928808000000004 29.79708,-93.926503999999994 29.789559999999998,-93.922407000000007 29.785048,-93.898470000000003 29.771576999999997,-93.893861999999999 29.767289000000002,-93.890820999999988 29.761672999999995,-93.891780610698319 29.758916671398389,-93.892526767476923 29.756773455119472,-93.893828999999997 29.753032999999999,-93.891732576672823 29.744984915009951,-93.891637000000003 29.744618000000003,-93.891484462723341 29.744488863328282,-93.888820999999993 29.742234000000003,-93.873941000000002 29.737770000000005,-93.870019999999997 29.735482,-93.863203999999996 29.724059,-93.837970999999982 29.690618999999998,-93.852868 29.675885,-93.866980999999996 29.673085,-93.889989999999997 29.674012999999999,-93.930999999999997 29.679611999999999,-93.955443390383635 29.680262610936268,-93.955453232202885 29.68026287289646,-93.991585827226885 29.681224615973395,-94.000169999999997 29.681453101326589,-94.000222586816207 29.681454501032487,-94.001406000000003 29.681486,-94.010062765207763 29.679864152681674,-94.056505999999999 29.671163,-94.132576999999984 29.646217,-94.354166823921716 29.561457673765378,-94.370794193562546 29.555097613439198,-94.391123278008692 29.54732162684321,-94.45341877657637 29.523493256060661,-94.456196753642018 29.522430664556182,-94.45805240375158 29.521720868184531,-94.499046371673685 29.506040450016997,-94.499089575343746 29.506023924375612,-94.500455432020999 29.505501476685335,-94.500806999999995 29.505367,-94.552043946167103 29.48495633977835,-94.552044379602123 29.484956167115939,-94.568074121423052 29.478570587212708,-94.593696728539513 29.46836361027578,-94.594852999999986 29.467903,-94.599458690353401 29.465813271763974,-94.62931993394271 29.452264405230761,-94.631084 29.451464,-94.634656044789836 29.449584234717392,-94.661528069434993 29.435443006940758,-94.670389 29.430779999999999,-94.674924987623086 29.427889211977174,-94.680871144138621 29.42409972235215,-94.694158000000002 29.415631999999999,-94.708472999999998 29.403049000000003,-94.723958999999979 29.383268000000005,-94.730956033155138 29.369322304827527,-94.731047000000004 29.369140999999996,-94.731324722869132 29.369141342444962,-94.731537324603394 29.369141604592603,-94.742750849251038 29.369155431380086,-94.744595216508316 29.369157705569055,-94.744833999999997 29.369157999999999,-94.761491000000007 29.361882999999999,-94.772184717669788 29.3616343088914,-94.778690999999995 29.361483,-94.780073439975141 29.362532749099824,-94.782355999999993 29.364266,-94.782645420567292 29.368514320481975,-94.783130999999997 29.375641999999996,-94.766847999999996 29.393488999999999,-94.754099999999994 29.400999999999996,-94.743385419572206 29.410035318862811,-94.73704402931665 29.415382843516582,-94.727822669267709 29.423158969605012,-94.723817999999994 29.426535999999995,-94.716270519001597 29.430976788539081,-94.706539419927282 29.436702374764607,-94.706364999999991 29.436804999999996,-94.686385999999999 29.466508999999995,-94.681540999999996 29.471388999999999,-94.672399999999996 29.476842999999999,-94.665852999999998 29.478401000000002,-94.656737000000007 29.478032999999996,-94.645948000000004 29.473769,-94.628217000000006 29.475986000000002,-94.608557000000005 29.483344999999996,-94.594211 29.492127,-94.595122262498009 29.503650874486677,-94.595439999999996 29.507669,-94.591407000000004 29.513857999999999,-94.580274000000003 29.525295,-94.566674000000006 29.531987999999995,-94.553989999999985 29.529558999999999,-94.546993999999998 29.524379,-94.532347999999999 29.5178,-94.511044999999996 29.519649999999995,-94.495024999999984 29.525030999999998,-94.503428999999997 29.543249999999997,-94.509486999999993 29.542589999999997,-94.523742999999996 29.545987,-94.523871183237745 29.546315590042923,-94.5261306113389 29.55210749848424,-94.526336 29.552633999999998,-94.542531999999994 29.568999999999999,-94.546193009360195 29.571896121601313,-94.546385 29.572047999999995,-94.546803832691651 29.57214903106096,-94.55398799999999 29.573882,-94.570006000000006 29.572232,-94.578210999999982 29.567281,-94.593518000000003 29.561319,-94.625889999999998 29.552807999999999,-94.634988842169335 29.550728838088908,-94.643914431984982 29.54868926579681,-94.666855093063802 29.543447131924982,-94.691625000000002 29.537787000000002,-94.693243673136905 29.537529479678042,-94.718275999999989 29.533546999999995,-94.740699000000006 29.525857999999999,-94.757688999999999 29.524616999999999,-94.768675999999999 29.525659,-94.780938000000006 29.531093000000002,-94.785987568065153 29.540133852805589,-94.789123822994313 29.545749069554745,-94.789562096440733 29.546533763545689,-94.78971899677407 29.546814681200559,-94.790604999999999 29.548400999999998,-94.779438999999996 29.549472000000002,-94.772471009935998 29.548613672580952,-94.771052999999995 29.548438999999995,-94.762972090755014 29.555767305595641,-94.75523699999998 29.562781999999999,-94.750081379755628 29.56810096117977,-94.734626000000006 29.584046,-94.731874420576986 29.588423440241069,-94.724443803393115 29.600244680945409,-94.708741000000003 29.625226,-94.705273448792255 29.640626536822896,-94.703938528752261 29.6465553563269,-94.702680930363101 29.65214076491651,-94.702542126991759 29.652757236398369,-94.699660909360375 29.665553672721437,-94.69780371146922 29.673802100155214,-94.694887994254785 29.686751760487848,-94.693153999999993 29.694452999999999,-94.692434000000006 29.70361,-94.692611750388934 29.704808689927841,-94.695098387970873 29.721577752663908,-94.695317000000003 29.723051999999999,-94.695611486157915 29.72357178078331,-94.697558868014866 29.727008993840069,-94.705700105090941 29.741378628781629,-94.713878412983604 29.755813695314995,-94.714586470042065 29.757063446593907,-94.722078339612551 29.770286919851305,-94.724615999999983 29.774766,-94.735270999999997 29.785433,-94.738125273271791 29.786265833277604,-94.740919000000005 29.787080999999997,-94.749144589762409 29.783534045463153,-94.75591801041729 29.780613280409739,-94.771512 29.773888999999997,-94.792237999999998 29.767432999999997,-94.798897371247961 29.764438558858895,-94.816085 29.756710000000002,-94.81943931055217 29.753325616252695,-94.823987131664666 29.748737021482022,-94.851107999999996 29.721373000000003,-94.856932183541645 29.710462974624775,-94.860426638443812 29.703917062844585,-94.864167858487249 29.696908903620852,-94.865007000000006 29.695336999999999,-94.865123196353878 29.694545038919138,-94.867438000000007 29.678768000000002,-94.872550999999987 29.67125,-94.893107 29.661335999999999,-94.915413 29.656613999999998,-94.921317999999999 29.658177999999999,-94.928410408640929 29.669495826038883,-94.930071799099807 29.672147016790593,-94.930110565443542 29.672208878811933,-94.930656833967475 29.673080595662611,-94.931474856161643 29.67438596783704,-94.934166999999988 29.678681999999998,-94.935264231405057 29.686686879688732,-94.935319060033862 29.687086883348073,-94.935997030967087 29.692033037575822,-94.936088999999996 29.692703999999999,-94.936280063994801 29.692851065945039,-94.941277009519624 29.696697319220664,-94.942680999999993 29.697778,-94.942922907078852 29.697804516058127,-94.95311095436017 29.698921254167477,-94.965343618259496 29.700262107971746,-94.965962999999988 29.70033,-94.972666000000004 29.684869999999997,-94.980123280315652 29.679059463608382,-94.986438191421769 29.674139034277729,-94.988580124776774 29.672470090483102,-95.001800051879343 29.662169436052462,-95.002396227716986 29.661704909944582,-95.005398 29.659365999999995,-95.011683000000005 29.649802000000005,-95.013860566469219 29.644103309100927,-95.014229369455222 29.643138151779844,-95.015636 29.639457,-95.015582911847446 29.639202042718885,-95.014543866006605 29.634211997110764,-95.013498999999996 29.629193999999998,-95.006633444897872 29.623869765921089,-95.00056235200779 29.61916163683599,-95.000370188745762 29.619012614335521,-94.997782627529062 29.617005962082896,-94.997731096758997 29.616965999999998,-94.995478872439179 29.615219401320278,-94.993499353954022 29.613684285860323,-94.988871000000003 29.610095,-94.988045541621688 29.608923290953985,-94.982835617337045 29.60152798723708,-94.982705999999993 29.601344000000005,-94.982886347998431 29.601051719777942,-94.983895794498991 29.599415764569699,-94.98693593300419 29.594488776939745,-94.988992999999994 29.591155,-94.991605757589539 29.588791109774153,-94.991811610459919 29.588604864563266,-94.992208959522046 29.588245363334387,-95.006677600766466 29.575154872369662,-95.007235451984087 29.574650156950938,-95.007670000000005 29.574256999999996,-95.00815781845921 29.573398130166158,-95.016627 29.558487,-95.018253 29.554884999999999,-95.016926355758628 29.548485488141377,-95.015164999999996 29.539988999999998,-95.012091452887788 29.536262245236642,-95.011587670186657 29.535651395780732,-95.011086587278399 29.535043819893005,-95.001666768519442 29.523622047865974,-94.999580999999992 29.521093,-94.989064037839412 29.515168017977793,-94.982063906682782 29.511224326765198,-94.981915999999998 29.511140999999995,-94.981645984265953 29.511070508097891,-94.961088181447877 29.505703566689924,-94.958443000000003 29.505013000000002,-94.958183821928699 29.504969740154092,-94.957844913785792 29.504913172428417,-94.95747910332102 29.504852114391142,-94.955724072517796 29.504559179260749,-94.952845264169682 29.504078672538427,-94.930551536860648 29.500357589179547,-94.927405495678158 29.499832478177321,-94.909464999999997 29.496837999999997,-94.913072085311995 29.488019044482122,-94.913385000000005 29.487254,-94.917178632618899 29.481741136316387,-94.925104227340569 29.470223752399235,-94.925293406029382 29.469948840084836,-94.925914000000006 29.469047,-94.930860999999993 29.450503999999999,-94.923011455799639 29.448810114938265,-94.920334997737442 29.448232551169699,-94.919400999999993 29.448030999999997,-94.916063708203708 29.446327523795176,-94.890799999999984 29.433432,-94.888257132054065 29.420136433311271,-94.887299999999996 29.415132,-94.887087039327696 29.40154064293051,-94.886938304445962 29.392048238229908,-94.886925408340758 29.391225196262944,-94.886904215833582 29.389872669858736,-94.886764190565785 29.380936121184895,-94.886591910643261 29.369941049100753,-94.886536208040312 29.366386054846032,-94.886982892003275 29.364738908620176,-94.888420210858001 29.359438798199445,-94.888544709543254 29.358979709544975,-94.888781730376067 29.358105695694917,-94.894234145274325 29.337999926591962,-94.894147383920654 29.327241695272729,-94.894002695197727 29.309300588032027,-94.893993580875261 29.308170430590454,-94.891329624021282 29.304475264201969,-94.888683946869179 29.30080545353194,-94.886599269217157 29.297913803549264,-94.886536208040312 29.297826331584119,-94.885816422022174 29.297499155955627,-94.884216982863776 29.296772137788121,-94.876917125093229 29.293454018939102,-94.875951551627523 29.293015121686942,-94.86617837453683 29.293883848703121,-94.865126326153927 29.293977364132552,-94.861112574100105 29.294855372432302,-94.849730461009372 29.297345209778594,-94.825607939204673 29.30577638202961,-94.824952733476934 29.30600538596191,-94.823862547308252 29.313200608971236,-94.822547126780194 29.321882377573708,-94.82230657170463 29.344254498409398,-94.810695999999993 29.353434999999998,-94.797913847039041 29.344567105809805,-94.79693012269928 29.343884625840758,-94.784895000000006 29.335535,-94.779995 29.334935000000002,-94.777063999999996 29.336811,-94.773074869484503 29.336485139838025,-94.745528999999991 29.334235,-94.744945 29.33641,-94.731319999999997 29.338066,-94.722529999999992 29.331445999999996,-94.731082 29.331833,-94.769694999999999 29.304936,-94.780304129101268 29.295750693651897,-94.786095000000003 29.290737,-94.793321795438203 29.286014946162535,-94.795651468635626 29.284492716516493,-94.803695000000005 29.279236999999998,-94.809348860129617 29.275904173901317,-94.81020919937113 29.275397022855465,-94.819018398045671 29.270204194137058,-94.82210781776098 29.268383049216432,-94.825036245866656 29.266656805306088,-94.825782574142963 29.266216861214712,-94.826962003659688 29.265521613475173,-94.833188167130103 29.261851427154124,-94.844390135018429 29.255248113651685,-94.870677905110114 29.23975205180561,-94.881596387366812 29.233315846843187,-94.896165027201874 29.224727954332334,-94.925556066041452 29.207402583865772,-94.927613957028456 29.206189502425392,-94.940693735267132 29.198479261054111,-94.968741214129224 29.181945889621023,-94.978383546115566 29.176261947153485,-94.981700088962569 29.174306918145966,-95.026218999999998 29.148064000000002,-95.076832914261459 29.114498139229923,-95.081772999999998 29.111222,-95.084611040272236 29.108948681405003,-95.100241410561338 29.096428488590096,-95.110484 29.088224,-95.116308293211759 29.081343778536318,-95.119264367911811 29.077851775668329,-95.119484217932538 29.077592067446851,-95.122403192505772 29.074143890856067,-95.122524999999996 29.074000000000002,-95.122638295373392 29.073709965581063,-95.125134000000003 29.067321,-95.183550616106302 29.028323983126334,-95.191390999999996 29.023089999999996,-95.192301227546167 29.02243038040822,-95.237672480263356 28.989550945676651,-95.238923999999997 28.988644,-95.240558404572027 28.987315672512366,-95.251568580535192 28.978367386619187,-95.251619678822578 28.978325857575001,-95.272266000000002 28.961545999999995,-95.29656403895315 28.934716691525271,-95.297146999999981 28.934073,-95.309703999999996 28.928262,-95.334686660244515 28.911063042846731,-95.353450999999993 28.898145,-95.376979000000006 28.876159999999999,-95.377903963555724 28.874482723635413,-95.38239 28.866347999999999,-95.416173999999998 28.859482,-95.436326577581042 28.85908617652915,-95.439594 28.859022000000003,-95.449516932572138 28.854239851149391,-95.480746000949352 28.839189657836059,-95.485144835951402 28.837069731735976,-95.486768999999995 28.836286999999995,-95.506945757563287 28.824808612805594,-95.536465934189138 28.808014833314715,-95.564052739104355 28.79232093268277,-95.564094788066555 28.792297011382839,-95.564132228771385 28.792275711681647,-95.568135999999981 28.789997999999997,-95.576201168007842 28.785870627961152,-95.606319447682353 28.770457515020929,-95.613122366343802 28.766976102576891,-95.695711236705606 28.724711019702028,-95.715243498124195 28.714715330888584,-95.812504000000004 28.664942,-95.854124934570734 28.646410960033691,-95.884026000000006 28.633098,-95.920915435374582 28.618912188118028,-95.97832748198536 28.596834417485056,-96.000681999999983 28.588238,-96.000998496292368 28.588108377001081,-96.024040703743012 28.578671299526803,-96.035336417502748 28.574045070633311,-96.05294532761279 28.566833233429691,-96.077867999999995 28.556625999999998,-96.194412 28.502223999999998,-96.220123346321373 28.492065891861738,-96.220376184174313 28.491966,-96.226882700448613 28.487451845000788,-96.241923733725443 28.477016528665938,-96.244750999999994 28.475055,-96.270391000000004 28.461929999999999,-96.303212000000002 28.441870999999999,-96.321560000000005 28.425148,-96.328817 28.423658999999997,-96.341616999999999 28.417333999999997,-96.371116999999998 28.397660999999999,-96.372100999999986 28.393874999999998,-96.370716999999985 28.387667,-96.378616389014681 28.383909329746462,-96.379349732835649 28.386024690464755,-96.381702691108558 28.392811896356477,-96.381863685354148 28.393276290946375,-96.375880899310658 28.401794149460329,-96.37413840285555 28.404274990018202,-96.340801887331921 28.432913073072363,-96.338559687910475 28.434839257985413,-96.335119195902806 28.437794848703732,-96.312964581561445 28.451131053409146,-96.280819757359396 28.470480970729877,-96.274497619264608 28.474286648703266,-96.268341347214189 28.477992481854848,-96.252027698910211 28.484249764669329,-96.250247000000002 28.484932771712327,-96.223824788704931 28.495067307260509,-96.218978121459415 28.500382701101032,-96.21505000939203 28.509679222336811,-96.145447855080619 28.544740658174199,-96.10473518795402 28.559498996555909,-96.046210731424992 28.586980036018211,-96.032979113622659 28.589015683181284,-96.007533711461477 28.59970275682273,-95.986159544454679 28.60631857558586,-95.982088289576367 28.614461085342473,-95.98565064745685 28.621076904105603,-95.983106103295938 28.641942154390655,-95.97852589224803 28.650593590730978,-95.986065974637228 28.655467849280154,-95.996337701374344 28.658736120211515,-96.002953500413568 28.656191585912577,-96.006515878017979 28.648049056432036,-96.010005951759737 28.648641710656278,-96.010506546843942 28.648726717396318,-96.011440067305529 28.648885239790378,-96.014343010193883 28.649378192516537,-96.026200716522851 28.65139176594381,-96.03348799089656 28.652629228032097,-96.039323368019012 28.651170385770797,-96.047737442142406 28.649066870151618,-96.049244844336243 28.648218956037223,-96.052682972641108 28.646285007998213,-96.05836686193534 28.643087818836001,-96.072165030584017 28.635326345489485,-96.092812363862251 28.627145317384699,-96.098878916233431 28.624741586366319,-96.099137163186526 28.624639261986079,-96.099760206508392 28.62447226081035,-96.102639895829256 28.623700385909448,-96.141413249033207 28.613307536255487,-96.148501276515404 28.611407654045699,-96.187178316202875 28.593595864643298,-96.198374286842139 28.586980055742131,-96.221784081288092 28.580364246840958,-96.228908787187095 28.580873158631725,-96.233997875508891 28.596649310733014,-96.233997875508891 28.601738394123839,-96.222292978285921 28.607336389305434,-96.214150448805384 28.613443281484855,-96.212623728226021 28.62260364440889,-96.2309444244882 28.64143324753087,-96.208552463485731 28.662298487953962,-96.214659365527126 28.665351929112688,-96.192267404524671 28.68774389011514,-96.1912495908051 28.694359708878277,-96.195829762405154 28.698939880478335,-96.202445561444364 28.700975507917487,-96.208747675276499 28.700187749031503,-96.21684000834783 28.699176214258408,-96.221467818495611 28.69859774191346,-96.222801895007663 28.698430983480506,-96.223384071149837 28.698294,-96.224163927167865 28.698110503315906,-96.227000018566372 28.697443183508955,-96.229623268039219 28.696825944469072,-96.231453341209956 28.69639533631743,-96.233964222112746 28.695240331316239,-96.23422531976 28.695120226420762,-96.234426397558138 28.695027730650764,-96.243315632596989 28.690938683290845,-96.256898753233088 28.684690448956413,-96.263514562134276 28.683672635236839,-96.268603640594122 28.688761723558645,-96.287942160437836 28.68316371851509,-96.304227224329892 28.671458831154069,-96.305245042980445 28.660262850652849,-96.303866760710434 28.646480081370939,-96.303718312539132 28.644995605411349,-96.322902111893882 28.641863561491792,-96.322903115546453 28.641863397630402,-96.328654788116609 28.640924350533034,-96.373438710121519 28.626674919011112,-96.376492171004159 28.620059100247982,-96.384634680760783 28.615987845369677,-96.473693647496702 28.573239550803915,-96.48794308888057 28.569677192923439,-96.482854000558774 28.580364266564878,-96.480309456397848 28.596649335387912,-96.485907441717487 28.60784531588914,-96.490487633041468 28.610898766909834,-96.510843966604781 28.614970031650095,-96.510335069606953 28.617514575811001,-96.497612348802434 28.625148188569788,-96.496594535082863 28.630746183751381,-96.49964797624159 28.635835272073191,-96.506263795004728 28.638379806372129,-96.513590449607946 28.639711925390898,-96.518002756430107 28.640514162994929,-96.524548246905439 28.641704252172264,-96.541744210187403 28.644830790950802,-96.545449731689985 28.645504522133091,-96.555118991611849 28.64601343885484,-96.5632615210924 28.64448670841351,-96.564664053901609 28.647882315216158,-96.572092291837293 28.665866475800886,-96.572930781014264 28.667896502859467,-96.570386236853366 28.674003385176928,-96.559190266214102 28.687235002979271,-96.559699163211917 28.6913062775815,-96.561225893653244 28.696395346179383,-96.566823878972883 28.697922096344637,-96.575158129308363 28.702846874961025,-96.578019859474111 28.704537895383844,-96.57828826199534 28.705826226653553,-96.579938546079447 28.713747585140421,-96.580564403635009 28.716751699466613,-96.584126761515478 28.722858581784067,-96.584439828543964 28.722940967911413,-96.591359183115401 28.724761852179114,-96.593796021437342 28.725403125944972,-96.611342043876562 28.720366765465901,-96.616906294097589 28.718769618875786,-96.625254999999996 28.716373230030175,-96.632357663078409 28.714334501780041,-96.638120426114043 28.71268037463507,-96.643733366943522 28.711069252030907,-96.64589364157122 28.710449172933409,-96.648758110223909 28.709626963981723,-96.65548660082564 28.704200766225345,-96.664534272187169 28.696904262901135,-96.657918463285995 28.687743919701024,-96.642136214348383 28.67476740345478,-96.635017595423747 28.668914316579048,-96.634564255386636 28.662567599984854,-96.634358790297441 28.659691108644115,-96.634304719917793 28.658934128568227,-96.633999771842213 28.654664885057134,-96.627892869800831 28.650084693733149,-96.626425176648581 28.649921620227584,-96.623312698200763 28.64957579673532,-96.621378075676532 28.648286046719594,-96.615940371111847 28.64466090565978,-96.615679075580019 28.64448670841351,-96.614055987266909 28.642701311583636,-96.613585709918453 28.642184006591457,-96.613038272810982 28.641581825879328,-96.612716570908134 28.641227953848528,-96.611999586497333 28.640439271135588,-96.610589997120172 28.638888723093881,-96.610589997120172 28.638695619081329,-96.610589997120172 28.63634418879494,-96.61975034032028 28.62769274259265,-96.620390401117646 28.626519297452973,-96.620672695530928 28.626001757543317,-96.621575870071126 28.624345937066781,-96.622336527533278 28.62295139797671,-96.622803791340985 28.622094747411062,-96.621924089240224 28.619379144726071,-96.621515564809087 28.618118047314677,-96.621338841511317 28.617572510068054,-96.620571817957583 28.61520474122884,-96.620437729127232 28.614790814755992,-96.617253050911174 28.604959849584038,-96.615239196090883 28.598743166058551,-96.614649885719274 28.596923990196654,-96.613008078443599 28.591855801497097,-96.611528402529856 28.587288105363601,-96.611113505533794 28.586007336117376,-96.611098903979951 28.585962261746474,-96.608298572876635 28.583628658523324,-96.608045443097311 28.583417717585569,-96.607377235577218 28.583437664220053,-96.600365219155734 28.58364697962633,-96.593251058093557 28.583859344147964,-96.573948594733835 28.584435541167107,-96.565297148531556 28.582399903865994,-96.564279334811971 28.57629300182461,-96.563658896232639 28.575155527088082,-96.562968608029692 28.573889994257026,-96.561225893653244 28.570695006643017,-96.557566061723506 28.569051817003789,-96.543745727976315 28.562846769979732,-96.536289388489891 28.559499026141786,-96.535271536438941 28.559346348925885,-96.526111211846271 28.557972305562419,-96.524846286909124 28.55686549700842,-96.523547686998668 28.555729222873186,-96.522039937244045 28.554409942750958,-96.516783301381025 28.541093122164042,-96.514406314623301 28.535071417976255,-96.512075206364955 28.532603188828926,-96.505754868421008 28.525911074776143,-96.496773944100411 28.520225902118948,-96.493684489370622 28.518270192113103,-96.482894459981281 28.511439806078794,-96.464303363514816 28.49967112954555,-96.450283853050735 28.49079639296917,-96.41974938229167 28.46738661824714,-96.410828816467941 28.459457253614527,-96.410588999643707 28.459244083835621,-96.409758652296418 28.458206146634446,-96.408886828651134 28.457116363910039,-96.40506625078595 28.452340627696451,-96.402446489887097 28.449065917053971,-96.402758256176753 28.447714917044181,-96.403973200604497 28.442450108152798,-96.407195206365273 28.441281062045864,-96.417343901660857 28.437598792799108,-96.461479843413926 28.421584870195201,-96.476120924474287 28.411702150055138,-96.481836236149007 28.407844318412668,-96.504737094149291 28.397666161492985,-96.511137484289378 28.396220910815867,-96.520513236388609 28.394103803612502,-96.534249520963641 28.388796609353736,-96.542905217114992 28.385452367272176,-96.559699173073881 28.377818734789468,-96.57038624671533 28.368658381727396,-96.577905378446388 28.364719789411506,-96.5917603939982 28.357462401226169,-96.600411840200493 28.354408960067438,-96.650793747525029 28.34677533744669,-96.672676831253582 28.335579347083499,-96.688452973492915 28.347284234444516,-96.694559875534281 28.347284234444516,-96.698122233414779 28.342704062844462,-96.705246949175717 28.348810964885843,-96.700157860853906 28.369676195446971,-96.705755865897487 28.400210705653887,-96.710336037497541 28.406826524417021,-96.710425531143088 28.406841439843959,-96.711757514930511 28.407063434453107,-96.711949596522956 28.407095447664108,-96.71209813364915 28.407120203551969,-96.7125191933293 28.40719037931537,-96.712878460543081 28.407250256459115,-96.722549831718325 28.408862132132249,-96.749013067323034 28.408862132132249,-96.762244685125353 28.411915593014903,-96.76554491144303 28.411090543097366,-96.768351577304784 28.410388882297497,-96.775985199925543 28.405808690973519,-96.777118787058129 28.404067826336821,-96.778115367638478 28.402537364460464,-96.780337941159374 28.399124129135416,-96.780820705165937 28.398382742114745,-96.790234641309425 28.383925636830853,-96.794392274787313 28.366371177405831,-96.794814812909479 28.364587126849088,-96.794810066932399 28.364444747076842,-96.79477772408616 28.363474458555832,-96.794305906049686 28.349319871745632,-96.794064195689629 28.347593374049037,-96.792754716842737 28.338239980125699,-96.790743538307225 28.323874459722486,-96.791161640090152 28.319066463411133,-96.791737095961722 28.312448960638157,-96.791761391474679 28.312169572361466,-96.791798306096766 28.312130020933203,-96.806010803272656 28.29690232711997,-96.809573161153153 28.290286508356836,-96.806010803272656 28.282143978876302,-96.799480493673911 28.2729662335258,-96.799349781293685 28.272782529381054,-96.787181219874626 28.255680743271615,-96.787181219874626 28.250082757951983,-96.800412817953031 28.224128419345121,-96.810027933605966 28.21709297064087,-96.81015126416365 28.217002728792142,-96.823379937963566 28.207323213817581,-96.836184503007971 28.197954022244446,-96.84100213695676 28.194428925121734,-96.842143298799229 28.193593928862132,-96.847274602334139 28.190686192954498,-96.857267971405633 28.185023289193378,-96.872677809006134 28.176291056181483,-96.877474270970822 28.171878306563691,-96.886067200578026 28.1639728030657,-96.898123211167331 28.152881261735526,-96.906497631141988 28.149042991548708,-96.910337015250093 28.147283276415891,-96.926704620510804 28.131597659113019,-96.934764623415617 28.123873491831901,-96.962356663895278 28.123371819605953,-96.962754569737697 28.123364584972112,-96.979717515560068 28.129783000626698,-96.995398793779131 28.135716460690723,-97.000413785843605 28.137614026355994,-97.007520616950742 28.136091128354632,-97.007538501604586 28.136087295914667,-97.009222611239821 28.135094102666635,-97.00939982996681 28.134989589017771,-97.027385928308092 28.12438239869169,-97.028912648887456 28.117257682930727,-97.025203084589847 28.111384210119862,-97.023365428929196 28.108474590635566,-97.022805746846075 28.107588427939849,-97.02290356380766 28.107197159145706,-97.023379876854563 28.105291902342927,-97.02382356056566 28.10351716319958,-97.025496807419856 28.101530180660298,-97.031966099908146 28.09384788848477,-97.033883146887263 28.088918342142531,-97.035528457788629 28.084687545284659,-97.035528457788629 28.083043098067591,-97.035528457788629 28.081818766572983,-97.035528457788629 28.074000471643224,-97.033022532693735 28.061470870449408,-97.032801767679686 28.060367047518316,-97.031459273912688 28.053654591691117,-97.031457183186404 28.053644138079921,-97.025859197866765 28.041939250718904,-97.030948266464648 28.033287814378582,-97.03239348781301 28.032603236465789,-97.040617526386512 28.028707642778524,-97.041168915404441 28.028259640036232,-97.046718327422383 28.023750751173218,-97.048760075590963 28.022091833877354,-97.050263648357429 28.019142519014494,-97.059727497080047 28.000578821719444,-97.061991693393324 27.99613751499442,-97.06790259446116 27.99219690579767,-97.073772658186698 27.988283521554418,-97.075732208193486 27.986977152070377,-97.083740513918784 27.975854507337193,-97.090858162154831 27.965968886660271,-97.094600599978094 27.960771057335059,-97.101378519421061 27.951357282114685,-97.101544336287489 27.951126980954953,-97.101629253046639 27.951009041034034,-97.112670327945679 27.935674217691009,-97.118292397880069 27.927865788706086,-97.121533983365822 27.923363587495643,-97.122089895488358 27.923104160785101,-97.123659587861624 27.92237163470331,-97.129167576400675 27.91980122961516,-97.134800331352182 27.902469771509406,-97.13578341488774 27.899444915775788,-97.139044920333077 27.897526377912126,-97.141761509630356 27.895928379836029,-97.144434841366106 27.894355827453982,-97.155121915007527 27.880615312653809,-97.156735458496229 27.877916799393841,-97.171211094589736 27.85370753808861,-97.17159000749372 27.853073838716419,-97.18273536107327 27.834434189625789,-97.184638591770963 27.831251199324921,-97.187183135931861 27.824126483563962,-97.18941247112663 27.823657146727278,-97.196852395853725 27.822090836400886,-97.201135366472329 27.822090836400886,-97.208766105658313 27.822090836400886,-97.209575096934316 27.822090836400886,-97.21103842611052 27.822356897891609,-97.21191517248603 27.822516307306422,-97.214117494684729 27.822916731993345,-97.215541825234411 27.823175702780983,-97.217387510601711 27.823511284007832,-97.220771087297493 27.824126483563962,-97.222189700736266 27.82464074101355,-97.223091414240102 27.824967618564596,-97.225175600069406 27.825723150734085,-97.225442194074731 27.826156365185522,-97.225555528799433 27.826340533769983,-97.225696025109201 27.826568839847944,-97.22598639723725 27.82704069367685,-97.227317456819009 27.829203661466853,-97.227317456819009 27.832884543697009,-97.227317456819009 27.832951908184537,-97.22711696094737 27.834288541284948,-97.22651425924083 27.838306534493725,-97.227537582741903 27.841230302974814,-97.228388390382094 27.843661171179477,-97.233100025453197 27.847817700825228,-97.234045759551762 27.848652012430087,-97.234511621821596 27.849062988727319,-97.238500481248579 27.854279199579018,-97.239439164419366 27.855506710708827,-97.241127420860792 27.857714434929608,-97.24139627838295 27.858969111470945,-97.242350826195675 27.863423696705052,-97.242654131578206 27.86483913096664,-97.243132066142749 27.865496290124597,-97.244364366034702 27.867190700237273,-97.250796680782656 27.876035121329831,-97.263010484865433 27.88010639593206,-97.267085449659064 27.88068852838779,-97.272090543185925 27.881403535150675,-97.273697558506882 27.881633106649463,-97.276628649874411 27.881144591421538,-97.283916343274228 27.879929975854907,-97.291452123510041 27.878674012482271,-97.291709327200167 27.878631145200583,-97.295071705789752 27.87807074876898,-97.29826066531912 27.876989746639367,-97.302276298241679 27.875628516526195,-97.30641171632756 27.874226681314273,-97.315889353880934 27.871013926092836,-97.325097299274915 27.867892591849294,-97.326845878314657 27.866807265961079,-97.334190606350404 27.862248465187459,-97.346213303335873 27.854786094892546,-97.354613966176373 27.849571885725148,-97.359768343966266 27.850509060182219,-97.360211961357962 27.850589719168646,-97.360654441244435 27.850290746360063,-97.363614400263117 27.848290774636723,-97.376904444631478 27.839311017562139,-97.379041564479934 27.837867018088055,-97.379057154646048 27.837837708581311,-97.379081675001302 27.837791610322164,-97.37968928125764 27.836649310776913,-97.391764280353456 27.813948316782309,-97.391812130016405 27.812975373996721,-97.391812459346511 27.812968677620422,-97.39203202611381 27.808504155006624,-97.392068018906713 27.807772301822137,-97.392095751995882 27.807208395884746,-97.393123788240075 27.786304999999999,-97.393168763213623 27.785390509210199,-97.393291005863816 27.782904909577571,-97.393142269808052 27.782564941361908,-97.39298939956177 27.782215523565412,-97.390949955785928 27.777553936582201,-97.390465068726371 27.776445623015572,-97.390185233729682 27.775805999999999,-97.389524844304646 27.774296538065283,-97.38835420640342 27.771620793596586,-97.388306220610531 27.771511111755789,-97.388011229692253 27.770836846624743,-97.38704242749894 27.768622441036733,-97.386166290102864 27.766619840754537,-97.385225495384532 27.765302728148875,-97.378862356737287 27.756394334042721,-97.375764970087644 27.752057992733249,-97.373069654276961 27.748284550598278,-97.368354500700462 27.741683335591173,-97.365855345900911 27.739779218033028,-97.354970329043653 27.731485873530172,-97.352272255056832 27.729430198526604,-97.34997871774064 27.727682741876539,-97.347507961666906 27.725800261438444,-97.346980343555629 27.725398266768138,-97.343485766084669 27.723942192633796,-97.323096068004702 27.715446484002907,-97.316445853072636 27.712675560756566,-97.312489136070184 27.711663774861414,-97.307771479065892 27.710457406346261,-97.30518751069485 27.709796650788128,-97.285725857752936 27.704820043684109,-97.259850586867117 27.698203387982087,-97.253955150197811 27.696695845323848,-97.254014647303208 27.696526337654994,-97.255455364792269 27.692421723465429,-97.259957004258851 27.67959652118169,-97.261636792970123 27.679316557300702,-97.26241778482418 27.679186392412099,-97.266063906300232 27.678578707462119,-97.266172011465457 27.678349884642419,-97.272736281666539 27.664455499360063,-97.273042341106247 27.663807672923248,-97.273584380560237 27.662660354976065,-97.276535709391737 27.656413369610792,-97.277059923980644 27.655303780997631,-97.278846463786479 27.651522268106756,-97.280071982275985 27.648928251476995,-97.280889132874719 27.647198614380269,-97.282300269490932 27.644211705671331,-97.282869528026779 27.64300677394548,-97.287959956150573 27.632232024058997,-97.288756326795195 27.630546371240786,-97.290370933329072 27.627128784125372,-97.290610159422798 27.626622421740255,-97.291264204229464 27.625238025568656,-97.291996439564016 27.623688125953898,-97.292910903535031 27.621752508687905,-97.293983233844585 27.619482740684056,-97.29528946695001 27.616717877953022,-97.296598377059297 27.613947348891728,-97.297587499071795 27.609496333379006,-97.298634024222366 27.60478700569162,-97.29761621050281 27.598680093788271,-97.294053852622326 27.594099922188217,-97.294182769084571 27.593971005725969,-97.300049926927869 27.588103847882682,-97.302196382102863 27.585957392707677,-97.311120578488044 27.579146819865922,-97.321534901946578 27.571199044464009,-97.325080504595888 27.561034984604785,-97.336802147188081 27.527432946040641,-97.343417965951204 27.517763686118776,-97.347489240553443 27.503005347737066,-97.350542661988243 27.478577729709574,-97.359194108190536 27.458221396146271,-97.365809926953673 27.450587783387487,-97.371916828995055 27.425142361502377,-97.369881181831957 27.412419660421783,-97.372934622990698 27.401223670058592,-97.379550422029908 27.390027689557368,-97.399397858595393 27.344734850830708,-97.401942402756291 27.335574497768633,-97.404995863638931 27.329976512448997,-97.413138393119482 27.321325066246711,-97.42026310888042 27.317253791644482,-97.430441285524054 27.313691423902039,-97.450797599363412 27.313691423902039,-97.482858840011673 27.297915271800758,-97.508304242172855 27.275014394076553,-97.532222933616623 27.278576761818989,-97.544436737699399 27.284174747138625,-97.546981281860297 27.290790556039799,-97.536803105216677 27.289263825598471,-97.526624948296998 27.291808369759369,-97.524589320857856 27.297915271800758,-97.51746460509689 27.305039987561717,-97.504741884292372 27.305039987561717,-97.498126085253162 27.308602345442196,-97.502706237129289 27.322342870104325,-97.499143898972747 27.327940855423961,-97.483876634007316 27.33862793892736,-97.483876634007316 27.351350640007954,-97.486930094889971 27.358984272490666,-97.501688443133645 27.366617904973374,-97.514411144214236 27.361528796927644,-97.520518046255617 27.352877370449281,-97.538329835658018 27.335574478044709,-97.570899973304094 27.315727061203152,-97.584131581244463 27.309620159161771,-97.609068086407831 27.285192570720163,-97.621790807212349 27.287228188297352,-97.63146005727225 27.286210384439741,-97.63654914066305 27.282139109837512,-97.636657939024673 27.281797172172649,-97.640111498543547 27.270943129336285,-97.639093679892994 27.253131339933887,-97.635022415152719 27.247024437892502,-97.628915513111338 27.242953173152234,-97.597363199046811 27.242444266292445,-97.5826048606651 27.240408628991332,-97.573953414462821 27.238881903480983,-97.56123071338223 27.232775006370584,-97.542910007258072 27.229212648490105,-97.520009129533875 27.231248285791217,-97.509830972614182 27.235319550531486,-97.503215153851045 27.23989972213154,-97.500161712692318 27.244479898662579,-97.485148876501881 27.25084127385778,-97.467082638600573 27.253640266517596,-97.45843119239828 27.259492710198106,-97.450288657986775 27.262546171080761,-97.424079880742951 27.264072891660124,-97.422298701802717 27.257711541119829,-97.434766954384401 27.202240525749552,-97.444945121166043 27.144733882940127,-97.443672849085587 27.116235010034327,-97.452324285425917 27.115217201245734,-97.455886653168363 27.110382571284802,-97.456650008527049 27.09969549764336,-97.46173908698691 27.095624227972113,-97.475479621510999 27.098423220631929,-97.480568699970846 27.102494490303176,-97.491510231973166 27.101222218222723,-97.495835955074313 27.09409750739275,-97.4932914109134 27.078066891999608,-97.477515248950155 27.066107546277717,-97.479041969529504 27.06279964182713,-97.482256963728076 27.061942305056665,-97.48693005051112 27.057710553505324,-97.487693415731783 27.053639288765055,-97.486675602012198 27.034809685643079,-97.477515248950141 27.032519589981089,-97.473952881207694 27.029211690461484,-97.473443984209865 27.022850330059228,-97.478300083716704 27.000269498406993,-97.478533072531675 26.999186101907302,-97.480568690108868 26.997659376396957,-97.483967678435022 27.000330000000002,-97.484131057851314 27.000458369056773,-97.492988547644813 27.000330000000002,-97.49889841702128 27.000244349959733,-97.533497176854453 26.999742920066073,-97.536803065768822 26.999695008767091,-97.549271318350492 26.995878197456715,-97.555378215460905 26.990280207206101,-97.551052502221722 26.980865400714134,-97.549525776711377 26.965343697111763,-97.552324769371197 26.95211208177491,-97.555378205598956 26.947277449348487,-97.555378205598956 26.938880461507075,-97.540874325578116 26.906310323861007,-97.540110950495503 26.900966796902246,-97.547999041339082 26.895114353221743,-97.552324764440229 26.888498544320569,-97.552324764440229 26.875332999999998,-97.552324764440229 26.873831771434514,-97.552324764440229 26.871753101924,-97.552324764440229 26.867633303897481,-97.555396527456509 26.865969429990074,-97.558431656619632 26.864325399446898,-97.558453748966258 26.864224239771101,-97.559853702000524 26.857813929560987,-97.562641307980527 26.845049630589628,-97.563266286580571 26.842187886943357,-97.552579212939136 26.827938454188693,-97.547744582978211 26.824630549738107,-97.537566416196555 26.824885004400745,-97.509830908511418 26.8035108521869,-97.48438549155729 26.763561555211936,-97.478024141017002 26.757200199740662,-97.471662790476714 26.758726925251008,-97.468609339456009 26.740915130917632,-97.467337057513589 26.710126182073765,-97.444945096511148 26.633535472850511,-97.445708451869848 26.609362327976836,-97.441206258760758 26.5999011976768,-97.435205432977895 26.587290766879221,-97.432741093635642 26.582112082834445,-97.429217375703914 26.574707168454967,-97.428151110966368 26.572466467229631,-97.418145193925739 26.555638334425574,-97.416955130465126 26.553636864107652,-97.41864075483771 26.543121778291471,-97.42039414733226 26.532183948458435,-97.422284917775215 26.520389141863415,-97.422298667285844 26.520303371102887,-97.425861015304378 26.516741008291426,-97.430695645265303 26.506562841509776,-97.430695645265303 26.494603495787885,-97.42802638225659 26.488322868889494,-97.42636993202612 26.484425333937217,-97.429168909893022 26.478063961207511,-97.43553026043331 26.470175880225888,-97.441382709044788 26.466613522345408,-97.441382709044788 26.455417541844177,-97.43756589773443 26.449819546662585,-97.425861005442428 26.446002740283195,-97.421026375481503 26.446766095641895,-97.417209564171131 26.449819546662585,-97.411611568989528 26.447275002501684,-97.412883841069984 26.433025580841726,-97.421789740702152 26.417249413947498,-97.419499649971158 26.413178149207234,-97.406013578738921 26.409106884466965,-97.398125502688274 26.410888063407203,-97.394308686446919 26.414450416356704,-97.395072051667569 26.417249413947498,-97.382484933201752 26.411326066613285,-97.377769169124974 26.409106884466965,-97.369626639644437 26.394602999515151,-97.374461259743413 26.38086247238753,-97.388965149626202 26.365849678110436,-97.392018610508856 26.339386444971247,-97.391000786927322 26.332261729210284,-97.38794734576858 26.330480545339064,-97.376242448545611 26.336332993950553,-97.372171183805335 26.339895346900054,-97.36937219114553 26.348546788171358,-97.358176200782339 26.356434874083959,-97.343417852538664 26.35923386920927,-97.342332537534404 26.358759043566288,-97.335275323058127 26.355671510096041,-97.335020017473738 26.355402767481841,-97.331108052904881 26.351284911668415,-97.330440693097202 26.350582427937965,-97.333762617526986 26.340749518544904,-97.336802038706509 26.331752819885011,-97.343786761143846 26.325987658774913,-97.344677525679145 26.325252425399061,-97.352414066956698 26.31886671611711,-97.352832659030639 26.318521211944631,-97.354359379610003 26.313941040344577,-97.348998828460125 26.312092573442666,-97.347821984790102 26.311686765063648,-97.346980205488165 26.311396496183672,-97.34736083223585 26.297503848546928,-97.347437236753805 26.2947151295396,-97.347489122209922 26.292821341560611,-97.347051378510429 26.289694600417153,-97.344137846000223 26.268883651035111,-97.343926764329439 26.267375924606483,-97.342629246748771 26.266550231912309,-97.341127771669619 26.265594748131736,-97.335282658907644 26.265594748131736,-97.331967408745584 26.265594748131736,-97.330307576264516 26.266747410222209,-97.323817586106017 26.271254350355399,-97.322807065545476 26.271956101137519,-97.313207351206557 26.273518846137112,-97.312102101648151 26.273698770576502,-97.311865543405119 26.273737280077761,-97.307030913444194 26.253126493084562,-97.308048727163751 26.249055213551365,-97.321280340035131 26.236078054109896,-97.321280340035131 26.228698889850026,-97.304486359421333 26.202490107675235,-97.296598288301666 26.200708923804015,-97.294817109361432 26.192311940893585,-97.296089381441874 26.182388227541828,-97.303096384204423 26.167373221160254,-97.305986772892751 26.161179530923267,-97.306776455083323 26.159487354748606,-97.300965235160419 26.149753561518516,-97.296881711355638 26.142913659244432,-97.296598288301666 26.14243892563589,-97.285549237329036 26.12861437636975,-97.28536038956149 26.128378090441405,-97.284582435540926 26.126454238998875,-97.282094393487881 26.120301403270393,-97.282839179410786 26.118439442973433,-97.28311220967295 26.117756868971455,-97.285501587752023 26.116923364107649,-97.294053737977038 26.113940052730097,-97.295071554162092 26.108342057548505,-97.292023254217796 26.105090538920617,-97.291924538345086 26.104985242032239,-97.291541272704407 26.104576425513905,-97.287190793518263 26.099935916255493,-97.286650074642992 26.099359149688052,-97.286603231473521 26.09930918366079,-97.283195451762182 26.095674220102872,-97.282639002190891 26.095080674133143,-97.282108002623801 26.094514274823585,-97.280435495761154 26.092730268223651,-97.279905974795895 26.09216544608875,-97.27980430522237 26.092056998587434,-97.27089841052117 26.086459003405839,-97.267086875013263 26.085485845069449,-97.24859983335169 26.080765747704277,-97.246979719077387 26.080352101364454,-97.229515030031649 26.08000965739204,-97.220290685310772 26.079828788368793,-97.208048240752987 26.079588741074772,-97.205005053278043 26.078666562185607,-97.199651252911579 26.077044196913871,-97.199152512570265 26.073220535461079,-97.199134106850465 26.073079425477676,-97.198725011196004 26.069943037351702,-97.198302051934135 26.066700361972018,-97.196018989165054 26.049196947106083,-97.195939794821285 26.0485897927724,-97.195071061587612 26.04192952989985,-97.204994779870347 26.030224637607851,-97.214918488291119 26.030733549398622,-97.224842206573854 26.027425644948035,-97.226114478654296 26.024372193927345,-97.219244211392265 25.99612778184791,-97.216954125592238 25.993837693582392,-97.208557137750816 25.991802058746771,-97.195834416946283 25.993074335758202,-97.174460269663413 26.000071824804216,-97.167208324722026 26.007069313850227,-97.162755377371425 26.014575709756024,-97.16262814819099 26.023481604457221,-97.172042954682937 26.044728528107019,-97.178658763584124 26.045491893327686,-97.182730028324386 26.053125515948434,-97.164981847348457 26.063876207878327,-97.152009000000007 26.062107999999998,-97.152012551274964 26.062039393270581,-97.15321 26.038906,-97.151921999999999 26.017652999999999,-97.14747181118706 25.985075937251509,-97.145567 25.971132,-97.146880999999993 25.969781,-97.146293999999997 25.955606,-97.147784999999985 25.953132,-97.156608000000006 25.949021999999999,-97.160293999999993 25.950243,-97.168198638692317 25.959262149012673,-97.178362000000007 25.962114,-97.187583000000004 25.958174,-97.206945000000005 25.960899,-97.214339285966162 25.960186817526893,-97.227626420907342 25.958907063854085,-97.229225999999997 25.958753000000002,-97.239867000000004 25.954974,-97.244841570811701 25.950784663302475,-97.248032999999992 25.948097,-97.255343503388133 25.949129556975723,-97.276707000000002 25.952147,-97.28138899999999 25.948036999999996,-97.277163000000002 25.935438,-97.284201820237172 25.935775045516863,-97.290083634347766 25.936056689174489,-97.293963761326751 25.936242484429805,-97.303601999999998 25.936703999999999,-97.316138101068788 25.931602038234757,-97.320560999999984 25.929801999999999,-97.324914000000007 25.924040999999999,-97.332235861490744 25.923541683060932,-97.33463605770983 25.923378000829199,-97.338346 25.923124999999999,-97.339310160867683 25.923294280152341,-97.350397999999998 25.925241,-97.367642000000004 25.915679999999998,-97.369283543255307 25.913688286645449,-97.373641276386991 25.908400972256459,-97.374430000000004 25.907443999999998,-97.372365000000002 25.905015999999996,-97.365976000000003 25.902446999999999,-97.365883578347024 25.900015396466173,-97.365521 25.890476,-97.364300486696564 25.885628504434479,-97.362421560218849 25.878165998501085,-97.360082000000006 25.868874000000002,-97.364783621478566 25.852096838905283,-97.36542 25.849826,-97.372864000000007 25.840116999999996,-97.394513000000003 25.837377,-97.422635999999997 25.840377999999998,-97.42853949246836 25.842912007889609,-97.434188204901034 25.845336654308195,-97.441181027463472 25.848338244915578,-97.445113000000006 25.850026,-97.445601387363794 25.851485440010176,-97.447179184935308 25.856200346812667,-97.448271000000005 25.859463000000002,-97.449172000000004 25.871677999999996,-97.452166849899044 25.875807172885114,-97.453724626189043 25.87795496921364,-97.454727000000005 25.879337,-97.45488774919265 25.879394304385261,-97.462586893331732 25.882138919861518,-97.468261999999982 25.884162,-97.468599721544905 25.884059457735212,-97.481532785459223 25.880132596436578,-97.486059999999995 25.878758,-97.490359999998347 25.879275544671589,-97.494739403174762 25.879802646248233,-97.496860999999996 25.880057999999998,-97.519591990380178 25.88590026892226,-97.521761999999995 25.886458,-97.52344767329889 25.891064017588189,-97.524375103029939 25.893598172727145,-97.528116959024402 25.903822606212749,-97.528119935206945 25.903830738482007,-97.52812430798204 25.903842686870224,-97.528627999999998 25.905218999999999,-97.528849446448064 25.906732522417784,-97.530321999999998 25.916796999999999,-97.530415259581318 25.916820899843632,-97.539878370214808 25.919246032588486,-97.542957 25.920034999999999,-97.545169999999999 25.923974999999999,-97.545468770003851 25.926387609575503,-97.545470694802859 25.92640315259677,-97.546397824784293 25.933889856891241,-97.546420999999995 25.934076999999998,-97.546611329705271 25.934141994258589,-97.555160182125618 25.937061277530951,-97.555378999999988 25.937135999999999,-97.555477252221124 25.937015705749829,-97.559364000000002 25.932257,-97.582565000000002 25.937856999999997,-97.580418999999992 25.945115999999995,-97.583044 25.955442999999999,-97.598043000000004 25.957556,-97.5981230356591 25.957681442330628,-97.607733999999994 25.972745,-97.60783562843973 25.973457509771446,-97.607844088251909 25.973516820913719,-97.608283 25.976593999999999,-97.609461531117333 25.977846566488182,-97.613191727531174 25.981811093986448,-97.613466053312663 25.982102652924251,-97.616041456343709 25.984839842874308,-97.624938181905222 25.994295461083137,-97.627225999999993 25.996727,-97.634804000000003 25.999508999999996,-97.635072411453706 25.99971613545971,-97.639164724998494 26.00287420951236,-97.642117661027001 26.005153015998879,-97.644011365977178 26.006614404624422,-97.643848619841975 26.01214811069886,-97.643707610985203 26.016942704231127,-97.649175518723894 26.021499311673544,-97.65096419129361 26.02118629315062,-97.659123404318109 26.019758427116106,-97.661326460130226 26.019372891335045,-97.66298585459532 26.019511685247039,-97.668297999999993 26.019955999999997,-97.669519566971061 26.021667429940447,-97.671350987084779 26.024233271429612,-97.671567999996611 26.024226704244594,-97.691453959129774 26.023624920821636,-97.697068999999999 26.023454999999998,-97.703247203861338 26.030308742132775,-97.706066818770353 26.031284762516545,-97.709294717923569 26.032402112038366,-97.711145328137576 26.033042707775564,-97.719920000000002 26.030837999999999,-97.723585926686539 26.030959832537771,-97.729354247932832 26.031151535557555,-97.735180242251758 26.031345155270547,-97.758837769919694 26.032131383932391,-97.76309059882324 26.033650253079866,-97.763351431657455 26.034258862745556,-97.76491324062286 26.037903081983409,-97.769788888528993 26.041344719068825,-97.770077387482857 26.041548365582649,-97.776788595669075 26.042443189872706,-97.779190602367677 26.042763456191249,-97.784050976575529 26.040637041739476,-97.789822674626535 26.0424596835391,-97.792252861730461 26.04428232533872,-97.793102878401371 26.047342389307317,-97.793537334820812 26.048906434437896,-97.794638769549053 26.052871604582215,-97.795290594138677 26.055218176136449,-97.801344 26.060016999999998,-97.803973303988229 26.059548218630308,-97.8082126910423 26.058792373859696,-97.819424117916668 26.056793476786609,-97.820997703829306 26.056512920501468,-97.825546000000003 26.055702,-97.826721102251625 26.055271667399982,-97.830409376527257 26.053920989485444,-97.836607999999984 26.051650999999996,-97.848759348822554 26.052295281844582,-97.85186756815483 26.052460084066457,-97.859824237628374 26.052881958029587,-97.860225497621784 26.05290323340671,-97.860503999999992 26.052917999999998,-97.861874999990562 26.053580848914272,-97.869705222636284 26.057366592615971,-97.871187000000006 26.058082999999996,-97.876982999999996 26.064482999999999,-97.886529999999993 26.066338999999999,-97.901546631929207 26.060958662441269,-97.905109129229899 26.05968224852101,-97.913882 26.056539,-97.935419999999993 26.052687999999996,-97.944344999999984 26.059620999999996,-97.950095000000005 26.061827999999998,-97.96210735288345 26.054793018383155,-97.96735799999999 26.051718,-97.971403108419892 26.054550391225565,-97.978769 26.059707999999997,-97.979877702655912 26.062937323324391,-97.981335 26.067181999999995,-98.010970999999998 26.063862999999998,-98.015122209308288 26.064471399070538,-98.026123959861238 26.06608380989196,-98.028288992822496 26.066401115993269,-98.028758999999994 26.066469999999999,-98.029241090705753 26.065867136858621,-98.033102 26.061039,-98.034402999999998 26.051375,-98.034479464439173 26.051215303797409,-98.034525269179767 26.051119640464091,-98.039238999999981 26.041274999999995,-98.054365285842039 26.044575736209502,-98.070020999999997 26.047992,-98.070022345126233 26.049160242153427,-98.070025 26.051466,-98.071425788568789 26.055027814897404,-98.076094939927231 26.066900165398668,-98.076139697069991 26.067013970337847,-98.076205751241318 26.067181927684643,-98.076543999999998 26.068041999999998,-98.076994427275579 26.068371469710563,-98.080289992888041 26.070782045417982,-98.080494999999999 26.070931999999999,-98.080906883185932 26.070920010911959,-98.084755 26.070808,-98.085506402845155 26.069709056167966,-98.085848999999982 26.069208,-98.085628527723046 26.069048386721494,-98.081567000000007 26.066108,-98.081855064865067 26.063941606819231,-98.081884000000002 26.063724,-98.082307152201508 26.063513440869801,-98.091037999999998 26.059169,-98.093593108176947 26.058759459973995,-98.094431999999998 26.058624999999996,-98.095078111969258 26.058956205325877,-98.096949561841043 26.059915534659098,-98.097643000000005 26.060270999999997,-98.105504999999994 26.067537000000002,-98.122952624574893 26.063250384797335,-98.12786358062813 26.062043837809401,-98.128331000000003 26.061928999999999,-98.142925292417388 26.051941751725515,-98.14645163947533 26.049528582072455,-98.146621999999994 26.049412,-98.146852932570667 26.049588146033326,-98.149462999999997 26.051579,-98.149462999999997 26.055813,-98.151730999999998 26.058187,-98.158277994458601 26.062311711597108,-98.16142849281799 26.064296576133319,-98.161911645017582 26.064600969774318,-98.167608590156348 26.068190136655492,-98.172071527808072 26.071001859012309,-98.177897000000002 26.074672,-98.179863281323136 26.072661506851002,-98.189059999999998 26.063257999999998,-98.191534000000004 26.057117999999999,-98.197046 26.056152999999998,-98.200871000000006 26.059161,-98.203328791159265 26.063523594334541,-98.204415309491765 26.065452171017675,-98.20496 26.066419,-98.205720285634712 26.066905180236589,-98.2057544964389 26.066927057036718,-98.220672999999991 26.076467,-98.228363119990576 26.077028417928002,-98.230097 26.077155,-98.231072909449267 26.07694353295701,-98.240214327563166 26.074962705064888,-98.248806000000002 26.073101,-98.250234708208026 26.074229377516481,-98.260964088277859 26.082703320039151,-98.264514000000005 26.085506999999996,-98.272091468517374 26.0934369782697,-98.272527821536428 26.09389363077193,-98.277218000000005 26.098801999999999,-98.277020629370639 26.099144109090908,-98.272932087266241 26.106230915405163,-98.272897999999998 26.10629,-98.272099931737145 26.106512924095771,-98.270258188934392 26.107027377392626,-98.270033999999995 26.107089999999999,-98.269661374787887 26.108231250649609,-98.268046405073434 26.113177467856264,-98.266755660647689 26.117130670341034,-98.265753950746401 26.120198637935399,-98.265698 26.12037,-98.266046753689267 26.120369439652073,-98.268388964369507 26.120365676386069,-98.271048543344023 26.120361403199535,-98.2713587738927 26.120360904747326,-98.279433560913844 26.12034793086255,-98.289509742149562 26.120331741306838,-98.296194999999997 26.120321,-98.299522999999979 26.11749,-98.299575546893735 26.117376878214852,-98.299577897643644 26.117371817572689,-98.299619756950364 26.117281703787395,-98.301477861619162 26.113281617347607,-98.302978999999993 26.110049999999998,-98.307788398559808 26.112633359128559,-98.31093219000293 26.114322040617914,-98.314784784069062 26.116391454064445,-98.31781148535309 26.118017240801439,-98.323055746360907 26.120834185452331,-98.323827999999992 26.121248999999995,-98.324165904650499 26.121735183484471,-98.335204000000004 26.137616999999999,-98.337914801547555 26.149187638321976,-98.338210450252006 26.150449569219312,-98.338419999999999 26.151344000000002,-98.338123748811455 26.151776768193923,-98.337139471603692 26.153214615149455,-98.336278203634194 26.154472768358826,-98.335109254490916 26.156180386856505,-98.334230366689056 26.157464279382136,-98.333315999999996 26.158799999999999,-98.333279392301918 26.159609030127591,-98.333194378655719 26.161487831708563,-98.333156000000002 26.162336,-98.33332593363771 26.162525092143447,-98.336569396995017 26.166134227137082,-98.336837000000003 26.166432,-98.337709251548077 26.166391430160555,-98.345513373134324 26.166028447761192,-98.345781000000002 26.166015999999999,-98.345955918391979 26.165759937155421,-98.34781294946896 26.163041431373035,-98.354645000000005 26.15304,-98.380009845764519 26.156864235849298,-98.386243919298991 26.157804141722139,-98.386694000000006 26.157872,-98.386714843024777 26.157901012682096,-98.387178289965661 26.158546112849205,-98.389418830831929 26.161664858836595,-98.394322667090904 26.168490808715738,-98.402249554153599 26.179524728065878,-98.404432999999997 26.182563999999999,-98.41082579547016 26.183537375155975,-98.418120000000002 26.184647999999999,-98.44253599999999 26.199151,-98.444302622216625 26.201317032456906,-98.444376000000005 26.201407,-98.444366742625562 26.201566115583965,-98.444174812576264 26.204865005795593,-98.443681770155465 26.213339409994948,-98.45054565332704 26.219516919037407,-98.450975699346984 26.219903961344286,-98.465077324681431 26.222335272645303,-98.467962758220992 26.221802674698019,-98.47639547470331 26.220246150374404,-98.481645999999998 26.219277000000002,-98.483269000000007 26.216439,-98.496684404575589 26.212853148677059,-98.500574513964963 26.213825676024403,-98.503492081872309 26.214798198660183,-98.504399410834864 26.216045775617395,-98.509275818143593 26.222750833698164,-98.509327236533252 26.222821533963195,-98.516621175147847 26.223550930651591,-98.520846190978133 26.222726536052498,-98.524733007990875 26.221968131567948,-98.526589565145571 26.221605875956907,-98.528323413163747 26.222421776495104,-98.535240999999999 26.225677,-98.538016739096946 26.231331135295655,-98.538505426714039 26.231595841236214,-98.543851889046309 26.23449184328507,-98.556093449912439 26.231976454911809,-98.561600478976516 26.23084487397777,-98.564343479612191 26.231667774301364,-98.575891642961039 26.235132223865481,-98.57618836327309 26.235221239973473,-98.581780384919284 26.243001439905978,-98.583095590242166 26.247416774401941,-98.585184223567666 26.254428618568909,-98.588002268837087 26.255070784392117,-98.599153999999999 26.257611999999998,-98.610401443364651 26.253223367217647,-98.613465000000005 26.252027999999999,-98.617434734670965 26.252082931217494,-98.618976176235122 26.252104260920568,-98.625299999997523 26.252191766854153,-98.626653663614832 26.252210498179227,-98.633391522135483 26.243617562727948,-98.63418 26.242612,-98.636673745354344 26.241784277127035,-98.654221000000007 26.235959999999999,-98.669397000000004 26.236319999999996,-98.675206000000003 26.239989,-98.678410535728389 26.244637915883345,-98.679041999999995 26.245553999999998,-98.678977427258005 26.246060764449961,-98.677766000000005 26.255568,-98.679196310064967 26.258571609080832,-98.681167000000002 26.262709999999998,-98.687156000000002 26.26512,-98.698855915315121 26.265619481498664,-98.707451416076225 26.272152066874316,-98.710601999999994 26.279018,-98.709170532219119 26.284185773270103,-98.710647239525585 26.288123668959596,-98.711233447604599 26.289686894290245,-98.722550749196131 26.295571625529284,-98.729196000000002 26.299026999999999,-98.73263614407044 26.29899082409209,-98.734613221934339 26.298970033513189,-98.745271658069271 26.303095890935232,-98.745297595683382 26.304159357241051,-98.745599830797417 26.316551278053844,-98.745615470637418 26.317192526042046,-98.748245116157776 26.32061106368975,-98.74905366960931 26.321662182706675,-98.754840366886953 26.324877004144408,-98.755242435754027 26.32510037501579,-98.766685638772316 26.325769085950686,-98.779858354339893 26.326538865087553,-98.779911999999996 26.326541999999996,-98.779946859358333 26.326559704051515,-98.789821999999987 26.331575,-98.796251999999996 26.349104,-98.797592059971961 26.356670995104565,-98.798210999999995 26.360166,-98.807348000000005 26.369420999999999,-98.808280016253249 26.369491024329768,-98.813413043374013 26.369876679389535,-98.81818280466733 26.370235041528161,-98.81932575812273 26.370320914010964,-98.824571000000006 26.370715,-98.828353477559162 26.367368473620303,-98.832909 26.363337999999999,-98.838554497099707 26.360957856802237,-98.842229804437778 26.359408346173527,-98.844057000000006 26.358637999999999,-98.847707 26.359594999999999,-98.853132332741467 26.364754198689674,-98.853414999999998 26.365023,-98.853852117327648 26.365076242531281,-98.854321671505204 26.365133435992636,-98.861354000000006 26.365989999999996,-98.861661690067152 26.365902494757481,-98.869113443480302 26.363783259984523,-98.874117355796216 26.362360176799562,-98.876164212939671 26.361778062685843,-98.882912762903771 26.359858814831277,-98.890964919192157 26.357568829017531,-98.895015448091129 26.359360408468842,-98.900432100164338 26.361756234493352,-98.900829697862818 26.361932094951143,-98.905559653818443 26.364024190108832,-98.91296803413384 26.372226331500926,-98.915344992389564 26.37485796579432,-98.921277034399395 26.381425588572444,-98.922831447878195 26.38166472803821,-98.923508557916591 26.381768898347495,-98.924925720775448 26.381986922427696,-98.926689551972586 26.38116380140492,-98.934437533628781 26.377548077521784,-98.937555770591459 26.376092900630621,-98.942046463189357 26.375531566775365,-98.950185820407469 26.380302920861933,-98.952073083609605 26.383491745197549,-98.952938578460817 26.384954133189183,-98.953327659277917 26.385611545667039,-98.958325183064531 26.394055638388448,-98.960041959595969 26.394835991082342,-98.96758721887106 26.398265653180793,-98.981979903868819 26.396488780147621,-98.98323657723455 26.396333635432413,-98.985344372930967 26.396073413984297,-98.99032130527651 26.395458978465552,-99.008003378826189 26.395458978465552,-99.014739404125635 26.398826987036053,-99.018845438188137 26.404005475794783,-99.021934999999999 26.407902,-99.025336792347318 26.409271761295809,-99.030462148109507 26.411335530401477,-99.031104888479149 26.411594335405351,-99.032315999999994 26.412082000000002,-99.033086386506682 26.412180127570064,-99.037216923343138 26.412706252494743,-99.039107 26.412946999999999,-99.039645291109963 26.412681959983438,-99.045466000000005 26.409815999999999,-99.053184999999999 26.402006,-99.062093000000004 26.397371,-99.082001999999989 26.396509999999996,-99.085125999999988 26.398782,-99.089412999999979 26.408099999999997,-99.092044248326658 26.410330707587079,-99.0977332288968 26.415153685331873,-99.099649490160544 26.416778244479925,-99.110855 26.426278,-99.113807999999992 26.434002,-99.110485406379198 26.436329519428725,-99.103082999999998 26.441514999999999,-99.097481906444941 26.458865277747179,-99.094712087984234 26.467445230774196,-99.091634999999997 26.476977000000002,-99.105030999999997 26.500335,-99.114051328117867 26.510193091438737,-99.123438026388797 26.520451579672599,-99.126618350727256 26.523927276756307,-99.127319211298612 26.524693229780183,-99.127781999999996 26.525199,-99.128040494672888 26.525242991472329,-99.131554903978838 26.52584108518932,-99.136510932879688 26.526684518463242,-99.143658999999985 26.527901,-99.157083944984777 26.532657279516766,-99.166741999999985 26.536078999999997,-99.170704 26.540316,-99.171403999999995 26.549848,-99.167459686682065 26.559874693319248,-99.167410000000004 26.560001,-99.168618869529794 26.566870928153797,-99.16946034016965 26.571652951934592,-99.178064000000006 26.620546999999998,-99.200522000000007 26.656442999999999,-99.209947999999997 26.693937999999999,-99.208906999999982 26.724761,-99.240022999999979 26.745850999999998,-99.242444000000006 26.788262,-99.243132825912184 26.78921716914337,-99.262208 26.815667999999999,-99.268613000000002 26.843212999999999,-99.274832961326339 26.850997131057774,-99.280470999999991 26.858053000000002,-99.295146000000003 26.86544,-99.316753000000006 26.865831,-99.328801222539823 26.879647723469141,-99.328900000000004 26.879760999999998,-99.328852280051947 26.879943529980665,-99.328653604395157 26.88070346927794,-99.326247644284351 26.88990632616278,-99.321819000000005 26.906846000000002,-99.324684000000005 26.915973,-99.337297000000007 26.922758999999999,-99.361143999999996 26.928920999999999,-99.367053999999996 26.929033999999998,-99.379148999999998 26.934489999999997,-99.388253000000006 26.944216999999998,-99.393748000000002 26.960730000000002,-99.390189000000007 26.966348,-99.377312000000003 26.973818999999999,-99.376593 26.977716999999998,-99.378434999999996 26.980034,-99.385448615007036 26.981891053234623,-99.387366999999998 26.982399,-99.403694000000002 26.997355999999996,-99.407320999999996 27.005808999999999,-99.415475999999998 27.017239999999997,-99.420446999999996 27.016567999999999,-99.429379999999981 27.010833000000002,-99.432154999999995 27.010698999999995,-99.438721 27.01463,-99.445682828533535 27.022104842939122,-99.446523999999997 27.023008,-99.446589518313687 27.0234513503828,-99.446929167151652 27.025749691622671,-99.446969999999979 27.026026000000002,-99.446787747918748 27.026353589968604,-99.444062000000002 27.031253,-99.443973 27.036457999999996,-99.447729715193731 27.048260380671568,-99.452315999999996 27.062668999999996,-99.450282 27.067705,-99.439210578806851 27.075275465844946,-99.434470000000005 27.078517000000002,-99.429209 27.090981999999997,-99.430274999999995 27.094871999999999,-99.437646 27.100442,-99.442122999999995 27.106839,-99.441108999999997 27.110041999999996,-99.433369999999982 27.119218,-99.430581000000004 27.126611999999998,-99.431354999999996 27.13758,-99.438264999999987 27.144791999999995,-99.439971 27.151071999999996,-99.437950999999998 27.154121,-99.42998399999999 27.159148999999999,-99.426616441133064 27.174998569551711,-99.42634799999999 27.176261999999998,-99.426389092127664 27.176475083747437,-99.428025433058153 27.184960350328335,-99.432794999999999 27.209693,-99.441928000000004 27.217984999999995,-99.442101400955139 27.218265584747954,-99.445237999999989 27.223341,-99.443121431464945 27.230753685991843,-99.441406999999998 27.236757999999998,-99.441548999999995 27.249919999999999,-99.452207395848959 27.263806782859465,-99.452390999999992 27.264046,-99.452635348600225 27.264144272092288,-99.454218033886534 27.264780796280988,-99.462735864984637 27.268206496624611,-99.463308999999981 27.268436999999995,-99.463731957038988 27.268231398925973,-99.480688 27.259988999999997,-99.487909999999999 27.260721,-99.492407 27.264118,-99.496069429210138 27.270723950024919,-99.496615000000006 27.271707999999997,-99.496412995851571 27.272119287725655,-99.490870463706145 27.283404082904614,-99.487572835142558 27.290118173493504,-99.487513000000007 27.29024,-99.487552182270463 27.290674424182523,-99.487937000000002 27.294941,-99.493651777311726 27.30231355132117,-99.494603999999995 27.303542,-99.494999311050705 27.30367917804087,-99.501697839297435 27.306003653868146,-99.502036000000004 27.306121,-99.50260564894451 27.305998370990778,-99.511531000000005 27.304076999999999,-99.522353224815092 27.304131436852781,-99.523657999999983 27.304137999999995,-99.527521386758664 27.305370598210363,-99.529216737576675 27.305911493159478,-99.529653999999994 27.306051,-99.533911450776046 27.310119063512179,-99.536090758332008 27.312201427353024,-99.536443000000006 27.312538,-99.537771000000006 27.316072999999996,-99.53137599999998 27.323809,-99.52136037329538 27.324774325824137,-99.521259999999998 27.324784,-99.520793197388144 27.325167862222077,-99.515101491997058 27.329848278790703,-99.509737777509301 27.334258981108004,-99.504836999999995 27.338289,-99.507830999999996 27.348637,-99.507785758525344 27.353517859091919,-99.507778999999999 27.354247,-99.505884699626023 27.358359262089539,-99.503847413823948 27.362781925614613,-99.502763417847504 27.36513512979511,-99.502013099315448 27.366763966750881,-99.499076000000002 27.373139999999999,-99.492143999999996 27.380516999999998,-99.488110785984318 27.408328989964531,-99.487887470616073 27.409868914391197,-99.487633320470721 27.411621467383494,-99.487521 27.412396,-99.487591555014376 27.412624523015491,-99.489856740583164 27.419961308946796,-99.495313182879073 27.437634363915539,-99.495699000000002 27.438884000000002,-99.495681276107845 27.439260342274874,-99.495103999999998 27.451518,-99.489866073767956 27.458841813736395,-99.48498035355378 27.465673163249864,-99.484933241276849 27.465739036942171,-99.483818999999997 27.467296999999995,-99.483170086267094 27.470026063960816,-99.480813109028745 27.479938539705284,-99.480418999999998 27.481595999999996,-99.480219000000005 27.485795999999997,-99.483519 27.491095999999999,-99.494943552274876 27.498766770813134,-99.497518999999997 27.500495999999998,-99.501722168778215 27.500229993495459,-99.502529258718056 27.500178915086504,-99.513319999999993 27.499496,-99.516119999999361 27.498282666666942,-99.519319999999979 27.496896,-99.525819999999982 27.496696,-99.528319999999994 27.498895999999998,-99.525855930815595 27.516294999999385,-99.525849791073696 27.516338353233991,-99.525316190784537 27.520106149807926,-99.523876376642917 27.530272798702207,-99.522431296340699 27.540476632400054,-99.521918999999997 27.544094,-99.518818999999993 27.553194,-99.514319 27.556994,-99.511118999999994 27.564493999999996,-99.512219000000002 27.568093999999995,-99.515978000000004 27.572130999999999,-99.51621006287597 27.572263354504685,-99.516956092136581 27.572688844074506,-99.522907946893667 27.576083418863931,-99.530137999999994 27.580207,-99.536560517954015 27.595669560441458,-99.539721999999998 27.603280999999999,-99.549741780062789 27.610632655019803,-99.554405160028892 27.614054243170667,-99.554950000000005 27.614453999999999,-99.555217670042637 27.614437037021997,-99.556811999999994 27.614335999999998,-99.559466999999998 27.609075999999998,-99.562869000000006 27.607264,-99.580005999999997 27.602250999999995,-99.584175941853502 27.603675176957196,-99.584843000000006 27.603902999999999,-99.584876722760043 27.604178863233781,-99.585148000000004 27.606397999999999,-99.578360965974085 27.610254799100861,-99.578159999999983 27.610368999999999,-99.578158133228257 27.610639131051315,-99.578098999999995 27.619195999999999,-99.584782000000004 27.622006999999996,-99.591372000000007 27.627464,-99.592626330929548 27.632690692534315,-99.594037999999998 27.638573,-99.596231000000003 27.639857999999997,-99.603532999999999 27.641991999999998,-99.612907806834755 27.638651258855042,-99.615318942915422 27.637792043123689,-99.624515000000002 27.634515,-99.625321999999997 27.631136999999999,-99.638929000000005 27.626757999999999,-99.654323999999988 27.629615999999999,-99.665948 27.635967999999998,-99.665422000000007 27.640274999999999,-99.660175716081199 27.644678795569117,-99.659499999999994 27.645246,-99.659300532255756 27.646059100049566,-99.658294999999995 27.650158,-99.661845 27.655753,-99.668942 27.659973999999998,-99.672015651285406 27.660163655087903,-99.685812999999982 27.661014999999999,-99.699355999999995 27.655417,-99.704600999999997 27.654953999999996,-99.711511000000002 27.658365,-99.721518999999986 27.666154999999996,-99.723715999999996 27.673328,-99.727277746539684 27.678262316066267,-99.732288643517421 27.685204233237535,-99.732448000000005 27.685424999999999,-99.732610774853441 27.685596448480599,-99.757538999999994 27.711853,-99.758533999999997 27.717071,-99.770740000000004 27.732133999999999,-99.774900999999986 27.73354,-99.785365999999996 27.730354999999999,-99.788844999999981 27.730718,-99.796341999999981 27.735586,-99.801651000000007 27.741771,-99.805670000000006 27.758687999999999,-99.813085999999998 27.773952,-99.817390803736785 27.775433523363962,-99.819091999999998 27.776019000000002,-99.822192999999999 27.766855,-99.825793000000004 27.764373999999997,-99.835127 27.762881,-99.841707999999997 27.766463999999999,-99.843346625073153 27.773142384459568,-99.844736999999981 27.778808999999999,-99.849281022020321 27.790032142335203,-99.850876999999997 27.793973999999999,-99.857944055165163 27.794214491272228,-99.870065999999994 27.794626999999998,-99.877441689362087 27.799278597548025,-99.877677000000006 27.799427,-99.877679299916537 27.799779028327777,-99.877693551047656 27.801960325692491,-99.877840000000006 27.824375999999997,-99.876677795668783 27.832975173255242,-99.876002999999997 27.837968,-99.877201999999997 27.842179000000002,-99.882014999999996 27.850391999999996,-99.89364999999998 27.856193,-99.901486000000006 27.864162,-99.904385000000005 27.875283999999997,-99.901231999999993 27.884405999999995,-99.894091000000003 27.892949999999999,-99.893456 27.899208000000002,-99.895827999999995 27.904177999999998,-99.900080000000003 27.912141999999999,-99.905861237749605 27.914081496997749,-99.917461000000003 27.917973,-99.925935042520848 27.927688375003317,-99.93714199999998 27.940536999999999,-99.938541 27.954059,-99.932160999999979 27.96771,-99.931811999999994 27.980967,-99.962768999999994 27.983536,-99.984922999999995 27.990729000000002,-99.991446999999994 27.99456,-99.998749958954292 28.00705628754028,-100.000278657311796 28.009672084008166,-100.008630999999994 28.023963999999999,-100.012838999999985 28.037203000000002,-100.014975394500183 28.048814882934586,-100.016570970484992 28.057487270710915,-100.017914000000005 28.064786999999999,-100.028724999999994 28.073118,-100.046108000000004 28.079067999999999,-100.053122999999985 28.08473,-100.056983000000002 28.094207,-100.05559599999998 28.101140999999998,-100.056492999999989 28.104185999999995,-100.064147158981442 28.110644603904401,-100.067651999999995 28.113602,-100.075474 28.124881999999999,-100.083393 28.144034999999999,-100.090288999999984 28.148312999999998,-100.119627999999992 28.155588000000002,-100.12658652988236 28.159659080291213,-100.141098 28.168149,-100.159890345070792 28.168159605160877,-100.160589999999999 28.16816,-100.1644540887186 28.169825181963088,-100.168437999999995 28.171541999999999,-100.173949604741296 28.178834844700365,-100.174413 28.179448,-100.17569869464343 28.180169771489844,-100.185693999999998 28.185780999999999,-100.195825662217615 28.189941498404405,-100.196499000000003 28.190218000000002,-100.19841872968675 28.190245400986015,-100.202449991411854 28.190302940621361,-100.208059000000006 28.190382999999997,-100.21208061434919 28.196473071951928,-100.212104999999994 28.196509999999996,-100.212111438897693 28.196576571978802,-100.212136678181992 28.196837521783539,-100.213449999999995 28.210415999999999,-100.217564999999993 28.226934,-100.220284000000007 28.232209999999995,-100.22363 28.235223999999995,-100.227575000000002 28.235856999999999,-100.246200000000002 28.234092,-100.251633999999996 28.236177,-100.261135590980771 28.244561246718906,-100.267604000000006 28.250268999999999,-100.280518 28.267969,-100.289383999999998 28.273491,-100.293468000000004 28.278475,-100.294296000000003 28.284381,-100.287553999999986 28.301093000000002,-100.286470999999992 28.312295999999996,-100.288638999999989 28.316977999999995,-100.314198000000005 28.345859,-100.317245999999997 28.357382,-100.320392999999996 28.362116999999998,-100.341869000000003 28.384952999999996,-100.344399999999979 28.389662,-100.34934096344108 28.4019924953441,-100.349585999999988 28.402603999999997,-100.349394820211828 28.402858691740477,-100.345766407828719 28.407692501181913,-100.343945000000005 28.410119000000002,-100.337058999999996 28.427150999999995,-100.336185999999998 28.430180999999997,-100.337474638078888 28.440402915586755,-100.337648113426326 28.441778981052359,-100.337796999999995 28.442959999999999,-100.338752462381066 28.444650728533539,-100.341532999999998 28.449570999999995,-100.350785999999999 28.459246,-100.353875644654778 28.461269551534915,-100.357498000000007 28.463642,-100.35795880406117 28.464220845064407,-100.358193534884933 28.464515705266944,-100.367961112704847 28.47678537623738,-100.368288000000007 28.477195999999999,-100.368051363629903 28.477598261305609,-100.365982000000002 28.481116,-100.356642877924983 28.482149981508559,-100.352234999999979 28.482638,-100.344180999999992 28.486249,-100.337140000000005 28.491728999999999,-100.33381399999999 28.499251999999998,-100.338517999999993 28.501833,-100.362147999999991 28.508399,-100.379079000000004 28.511638999999999,-100.388859999999994 28.515747999999995,-100.405057999999983 28.535779999999999,-100.411413999999994 28.551898999999999,-100.40430324537553 28.563833042228197,-100.397270000000006 28.575637,-100.396799999999999 28.580400999999998,-100.398385000000005 28.584883999999999,-100.403243426032972 28.586668145075244,-100.425819035320046 28.594958517689108,-100.429856 28.596440999999995,-100.431892715674053 28.597943579291371,-100.447320000000005 28.609324999999998,-100.448648000000006 28.616773999999999,-100.447280739633683 28.625703494601449,-100.445528999999993 28.637143999999996,-100.44560646842767 28.637394606891831,-100.447014715516048 28.641950223113035,-100.447091 28.642196999999999,-100.447325484276334 28.642184618041064,-100.447599559425257 28.642170145483281,-100.456522261830528 28.641698981546444,-100.462866000000005 28.641363999999999,-100.474494000000007 28.647071,-100.479445543783555 28.654922981332383,-100.479495071011698 28.655001519842354,-100.479635999999999 28.655225000000002,-100.481416494659797 28.655591917738484,-100.492493911747701 28.657874710783531,-100.493322226012125 28.658045406716248,-100.495863 28.658568999999996,-100.496129521434568 28.658770241190073,-100.500353999999987 28.661960000000004,-100.502122125123847 28.667202406240314,-100.505211969634487 28.676363647108229,-100.509438609439442 28.688895431533517,-100.510054999999994 28.690722999999995,-100.510127443340068 28.69126843161186,-100.510538898440004 28.694366309458967,-100.51077198772829 28.696121257064849,-100.511998000000006 28.705352,-100.511351260759739 28.706743032691019,-100.510646631791559 28.708258576930099,-100.509872363628347 28.709923903942272,-100.509406561254394 28.710925770365975,-100.508636802312012 28.712581398765199,-100.507069450532313 28.715952521820881,-100.506701000000007 28.716745000000003,-100.506745928327234 28.717920131927187,-100.506786973330165 28.718993692782757,-100.507152057645129 28.728542729239727,-100.507513721430456 28.738002299344281,-100.507590113222051 28.740000380261673,-100.507613000000006 28.740599,-100.507694735304739 28.740708529390524,-100.51442566685138 28.749728313832868,-100.519226000000003 28.756160999999999,-100.533017 28.763279999999998,-100.537772000000004 28.780775999999996,-100.534846642084489 28.786410367511117,-100.532431000000003 28.791062999999998,-100.535830000000004 28.805887999999999,-100.546431879116881 28.824270186264151,-100.546968759195195 28.825201061771438,-100.547323999999989 28.825817,-100.548186025546428 28.826178082695296,-100.553129999999982 28.828249,-100.561442999999997 28.829174000000002,-100.570509999999999 28.826317,-100.574698999999995 28.828786999999998,-100.576846000000003 28.836168000000004,-100.572991999999999 28.848463999999996,-100.580501999999996 28.856007999999999,-100.591040000000007 28.863054000000002,-100.598061272695219 28.874286065303028,-100.598877000000002 28.875590999999996,-100.602654 28.887660000000004,-100.602394435759351 28.893839359355621,-100.602053999999995 28.901944,-100.615584686670886 28.902906942475386,-100.627205999999987 28.903734,-100.631611000000007 28.902838999999997,-100.633502414453218 28.905240591668694,-100.640568000000002 28.914211999999999,-100.639169999999979 28.916288999999999,-100.638857000000002 28.927621999999996,-100.651511999999997 28.943431999999998,-100.64789859018552 28.954344193790252,-100.646992999999995 28.957078999999997,-100.646600907687997 28.967547400926616,-100.64647463428885 28.970918751315974,-100.645893999999998 28.986421,-100.647406325643686 28.99295674936236,-100.647835962928511 28.994813493392339,-100.648681241069511 28.998466493719445,-100.65094599999999 29.008254000000004,-100.653757999999996 29.015356,-100.656109999999998 29.017223999999999,-100.660207999999997 29.031497000000002,-100.663212 29.048041999999995,-100.662508000000003 29.058106999999996,-100.664064999999994 29.073205999999999,-100.666359117032755 29.07896154562156,-100.668483863047285 29.084292168447689,-100.674655999999999 29.099777000000003,-100.684472 29.110657,-100.692326999999992 29.115227999999995,-100.70996599999998 29.119684000000003,-100.727461999999989 29.129122999999996,-100.737795000000006 29.139078999999999,-100.739115999999996 29.141658,-100.737590999999995 29.147406999999998,-100.739681000000004 29.150486000000004,-100.746139999999997 29.154149000000004,-100.752330696165359 29.155516457617566,-100.759726 29.157149999999998,-100.76337082361762 29.160348915845475,-100.772648999999987 29.168492,-100.775904999999995 29.173344,-100.772154104961558 29.17809434863841,-100.766030999999998 29.185848999999997,-100.767059000000003 29.195287,-100.768348510582513 29.197581465531123,-100.775064591152173 29.209531592641572,-100.785521000000003 29.228136999999997,-100.791371999999996 29.225944999999999,-100.795681000000002 29.227729999999998,-100.79704599999998 29.235585999999998,-100.795234211471239 29.241421249558652,-100.795010188783237 29.242142762180318,-100.794911999999997 29.242459,-100.795310930062826 29.24310735172228,-100.797670999999994 29.246943000000002,-100.805332448258866 29.251327106905226,-100.815767091023289 29.257298117587734,-100.823532999999998 29.261742000000002,-100.834039999999987 29.261399999999998,-100.839016 29.263259,-100.841581161127962 29.265429071012271,-100.848663999999999 29.271420999999997,-100.856469000000004 29.275663999999999,-100.864659000000003 29.276076,-100.874739696506666 29.279181633366278,-100.876048999999995 29.279585,-100.876625364221198 29.280115401513385,-100.878513170701353 29.281852663087207,-100.878882999999988 29.282193000000003,-100.879105716359817 29.283377353454046,-100.880504361011205 29.290815018226784,-100.882051999999987 29.299044999999996,-100.886842 29.307848,-100.895590728097048 29.309871687341737,-100.904835000000006 29.31201,-100.906461302333199 29.313095095005444,-100.914770068080642 29.318638836799305,-100.916744062319239 29.319955917421627,-100.92203960930695 29.323489191321695,-100.922232587658954 29.323617949573855,-100.924041970395777 29.324825198761538,-100.926468967605715 29.326444530233299,-100.926628772437255 29.326551154580446,-100.926677999999981 29.326584,-100.92692137104487 29.32669794102517,-100.927819078352698 29.327118228044156,-100.92782883100196 29.32712279402223,-100.930446231588661 29.328348203997709,-100.940614999999994 29.333109,-100.941560773525751 29.336361493535293,-100.943196 29.341985,-100.945807189162338 29.344363370184055,-100.948971999999998 29.347245999999998,-100.95603875001359 29.347290187325033,-100.964324999999988 29.347342,-100.971743000000004 29.351370999999997,-100.972915999999998 29.354545000000005,-100.995606999999993 29.363403000000005,-101.004206999999994 29.364771999999999,-101.010614000000004 29.368669,-101.010768998319776 29.36895846820963,-101.014103165002794 29.375185214807839,-101.024016000000003 29.393697999999997,-101.036603999999997 29.406107999999996,-101.038600000000002 29.410713999999999,-101.037642000000005 29.414681000000002,-101.043363999999997 29.42988,-101.056956999999983 29.440773,-101.06011415724447 29.458454662113137,-101.060150999999991 29.458660999999999,-101.063843258270609 29.460131584976065,-101.087148999999997 29.469414,-101.103699000000006 29.470549999999999,-101.115253999999993 29.468458999999996,-101.130037999999985 29.47842,-101.137502999999995 29.473541999999998,-101.144336999999993 29.473246,-101.151876999999999 29.477004999999998,-101.163854997623304 29.493316894569897,-101.168923969306405 29.50021992913986,-101.171662999999995 29.503950000000003,-101.173821000000004 29.514566000000002,-101.192719999999994 29.520285,-101.227418999999998 29.522349999999996,-101.235274999999987 29.524854,-101.254895000000005 29.520341999999996,-101.260836999999981 29.529933,-101.261174999999994 29.536777,-101.252755240314642 29.553001111955531,-101.244355179006547 29.569187266927752,-101.24384013276574 29.574337712700849,-101.242022713082847 29.59251185083151,-101.251352546644355 29.604174135250076,-101.252152766968493 29.604494220898598,-101.259127443101093 29.607284069726152,-101.265347312053251 29.607284069726152,-101.274677145614746 29.602619152945408,-101.277624046978673 29.599940160672645,-101.283229510623855 29.594844301688571,-101.297224215766221 29.587069435365102,-101.30733154801338 29.587846934050759,-101.312894947857018 29.594028488101586,-101.314328915651188 29.595621785307589,-101.313192213312618 29.602947206633093,-101.31110792457288 29.616379301091623,-101.30733154801338 29.640715970810437,-101.311218981175116 29.64849082206727,-101.316661381574889 29.655488204771718,-101.325213716450733 29.657820655628775,-101.350093282659174 29.654710721152696,-101.353062961800887 29.655502634567405,-101.361755552011104 29.657820655628775,-101.364595571422868 29.66106639883844,-101.367197952410862 29.664040554714198,-101.371300910394638 29.676075888592084,-101.372874548462477 29.680691889931673,-101.378860251896057 29.698249939417508,-101.396947999999995 29.713947,-101.398362000000006 29.717000000000002,-101.396293999999997 29.727055,-101.397008999999997 29.733962999999999,-101.400635999999992 29.738078999999999,-101.410024000000007 29.741498,-101.415583999999996 29.746534,-101.415509877418046 29.750619769974676,-101.415402087456428 29.756561346443686,-101.424731921017937 29.758116313681725,-101.430388403484372 29.756500180308258,-101.441059122217254 29.75345141196761,-101.446501522617027 29.755006409338922,-101.451652003139955 29.758440048234313,-101.453498905321467 29.759671311053037,-101.455223999999987 29.771874,-101.467493655663716 29.779885945414083,-101.475268506920557 29.780663444099741,-101.503223000000006 29.764581999999997,-101.522695143280473 29.759671311053037,-101.526552276219391 29.761451532447605,-101.532802460460985 29.764336242900427,-101.53746737724174 29.782995910023434,-101.53804719015173 29.783865628452077,-101.546797210803248 29.796990645299058,-101.56156944476453 29.794658179375361,-101.572592853930203 29.778735448896484,-101.575564187573463 29.774443514881042,-101.582561562744587 29.771333610538232,-101.598573641854728 29.773657690388074,-101.603680999999995 29.774398999999999,-101.607256216824311 29.773863608191139,-101.625957999999997 29.771063000000002,-101.630319 29.768729,-101.632632680380155 29.763891873249722,-101.63512799999998 29.758675,-101.646417999999997 29.754303999999998,-101.652400999999983 29.758794999999996,-101.65328091488901 29.761368862201802,-101.654578 29.765162999999998,-101.662452999999985 29.77128,-101.689992000000004 29.771212999999996,-101.706636000000003 29.762736999999998,-101.714223999999987 29.767659999999999,-101.735201999999987 29.771591999999998,-101.754322999999999 29.777661999999999,-101.760919284561496 29.782457957985276,-101.763273999999981 29.784169999999996,-101.776796131253491 29.789191504347542,-101.777161000000007 29.789327,-101.777360180704861 29.789301830227139,-101.785668 29.788251999999996,-101.791002820423358 29.783037559970925,-101.796869557069002 29.782618516634159,-101.806507764952315 29.786389987871868,-101.809441149516488 29.790161459109573,-101.813855730843954 29.79253854440006,-101.814888826583982 29.793094827432377,-101.818909248247508 29.792167038125061,-101.830044431332681 29.789597381341238,-101.831231874027822 29.789323356194672,-101.852603555202364 29.801894932400803,-101.862241763085706 29.800218726571018,-101.866487373818487 29.79821962567333,-101.875399999999985 29.794022999999999,-101.878152615094365 29.794637055896249,-101.892739000000006 29.797891,-101.912406000000004 29.797849999999997,-101.917556726002999 29.792675767854249,-101.917942403066036 29.792482929945557,-101.922585359733716 29.790161459109573,-101.929709258872364 29.789323356194672,-101.932572380438657 29.791613852338052,-101.938090312383324 29.796028195755184,-101.946471365894325 29.797704401584976,-101.952535620779244 29.796990962273608,-101.953595265032959 29.796866298670082,-101.959462001678588 29.799380623656123,-101.965427194081556 29.806464275410743,-101.966166845299441 29.8073426094683,-101.970357372054934 29.81027599403247,-101.974547898810414 29.81027599403247,-101.982165144097308 29.804870201524977,-101.987538526473998 29.801056829485908,-101.993568005272067 29.802652866652032,-102.001318622543394 29.804704498914084,-102.001786318660763 29.804828300723614,-102.021918999999997 29.802490999999996,-102.032489182844799 29.803756293694118,-102.034758999999994 29.804027999999999,-102.039012999999997 29.802655,-102.041088000000002 29.799609999999998,-102.038411999999994 29.792831999999997,-102.039226999999997 29.790977000000002,-102.041308736499772 29.78984019520162,-102.048982832584102 29.785649487466547,-102.050044 29.785069999999997,-102.053123037129694 29.785312127485501,-102.073645999999982 29.786926,-102.076299925656656 29.790865308882584,-102.077348 29.792421,-102.084438999999989 29.794962000000002,-102.091420021879856 29.792967151942147,-102.091815999999994 29.792853999999995,-102.098789196918744 29.792718427915432,-102.115682000000007 29.792389999999997,-102.142325999999997 29.802854,-102.159600999999995 29.814355999999997,-102.161673999999991 29.819486999999999,-102.181894 29.846033999999996,-102.182859740836193 29.846584944255238,-102.18326563789924 29.846816503951921,-102.184058205433814 29.847268654791659,-102.186149999999998 29.848461999999998,-102.187393471220204 29.848699156882201,-102.188384798592551 29.848888224473839,-102.188671999999997 29.848942999999998,-102.189026115519184 29.848805138880103,-102.189342793483831 29.848681852617602,-102.205381000000003 29.842438,-102.216284162639099 29.842976962035557,-102.227553 29.843533999999995,-102.261388999999994 29.853283,-102.264041000000006 29.855964,-102.261776999999995 29.864001999999999,-102.264954000000003 29.867805999999998,-102.268816999999984 29.867990999999996,-102.276754999999994 29.862977999999998,-102.281249000000003 29.863116999999999,-102.297330999999986 29.875194,-102.301381000000006 29.877673999999995,-102.315388999999996 29.879919999999998,-102.320618999999994 29.878979999999995,-102.320667125014978 29.878900015386019,-102.320698585434869 29.878847727619664,-102.324634000000003 29.872306999999996,-102.333383999999995 29.868046,-102.341032999999996 29.869305000000004,-102.349861000000004 29.862316999999997,-102.361383773688715 29.849029038788231,-102.364542 29.845386999999995,-102.363642671554629 29.839963091609825,-102.362514000000004 29.833155999999995,-102.369522000000003 29.820395,-102.377253999999994 29.800163,-102.377312999999987 29.789971,-102.385270832882995 29.770348713937391,-102.386677616883858 29.766879890389689,-102.391739211722737 29.765814289574276,-102.392906191083 29.765568609270456,-102.402175111261812 29.766775086101941,-102.412062000000006 29.768061999999997,-102.433301 29.776608,-102.460890018677347 29.77909171043791,-102.468946430597143 29.779816991558327,-102.469957868267898 29.780012383523857,-102.481595292961757 29.782260529257879,-102.490330613701886 29.783948039559665,-102.492674483475767 29.783853017496881,-102.508312776666344 29.783219030534834,-102.508509848222559 29.783087649355906,-102.512686811979108 29.780303003853621,-102.512942156326147 29.774953626291172,-102.513380999999995 29.76576,-102.526400256170959 29.758693706517125,-102.535832205630967 29.753574449155192,-102.539417050278132 29.751628749336795,-102.545492105079163 29.750899740311965,-102.551081152293932 29.752357753652575,-102.556670813570321 29.757783010503054,-102.559343229460382 29.760376824671383,-102.565661280990938 29.761591836573395,-102.572255912443325 29.757095496286663,-102.57574472309652 29.754716761401177,-102.57635337725236 29.754301769870359,-102.585948674897452 29.751239442391949,-102.587774480184081 29.750656738873374,-102.597160000000002 29.751608,-102.612879000000007 29.748181999999996,-102.622534000000002 29.736632,-102.630150999999984 29.734314999999999,-102.64566499999998 29.733910000000002,-102.661251958261417 29.736122779697027,-102.66726872436665 29.739732837494621,-102.670971460158171 29.741954477821469,-102.677191937153026 29.738261067251376,-102.678467215476147 29.736427653943998,-102.6852530581628 29.72667193704833,-102.688163999999986 29.722486999999997,-102.690237999999979 29.707481999999999,-102.695507594622001 29.699754690880447,-102.698346999999984 29.695590999999997,-102.699316999999994 29.685029,-102.693466 29.676507,-102.697798916570122 29.672550546488289,-102.711337549653422 29.6601882100483,-102.724231000000003 29.648415000000004,-102.736947999999984 29.641537999999997,-102.742030999999997 29.632142000000002,-102.74048425929719 29.62775763619268,-102.738427999999999 29.621928999999998,-102.739991000000003 29.599041,-102.746201999999997 29.592875000000003,-102.757065999999995 29.597798999999998,-102.761810999999994 29.598396999999999,-102.768340999999992 29.594733999999999,-102.766929734823805 29.591197739636346,-102.762241000000003 29.579448999999997,-102.766124000000005 29.572347999999998,-102.768792219428661 29.572598581791439,-102.773961 29.573084,-102.776343296957975 29.562015327831393,-102.777530999999996 29.556497,-102.77572499999998 29.552188999999995,-102.771428999999998 29.548545999999998,-102.79216136048494 29.533953841063816,-102.807296321997939 29.523301326891541,-102.808565712504773 29.522407885546979,-102.808691999999979 29.522319000000003,-102.808681334358837 29.522097795383676,-102.808577631171161 29.519946998869006,-102.807327 29.494009000000002,-102.813953999999995 29.482805999999997,-102.814096473430837 29.482483316434472,-102.814383778328263 29.481832608662831,-102.822314986984821 29.463869465126457,-102.82537225240516 29.456945161410285,-102.827007089548758 29.453242470491304,-102.830969999999979 29.444267,-102.832538999999997 29.433109000000002,-102.830570753051859 29.427471931628293,-102.827354999999983 29.418261999999995,-102.825211066354328 29.40389180477127,-102.824564449740322 29.399557712155943,-102.831802092379931 29.389471209449322,-102.832669213065941 29.388262775214326,-102.84047188579207 29.377388836904565,-102.840778422425643 29.376961642203423,-102.841560439245441 29.370344567434586,-102.842457529677418 29.362753791491347,-102.843015380341285 29.358033509958585,-102.843020777220957 29.357987843989019,-102.861629999999991 29.351638999999995,-102.871857000000006 29.352092999999996,-102.876866000000007 29.354058999999996,-102.879534000000007 29.353326999999997,-102.883721999999992 29.348058999999999,-102.881857488401977 29.34363024944906,-102.879805000000005 29.338754999999999,-102.890489000000002 29.309498999999995,-102.88922161316745 29.299205074185686,-102.888328 29.291947,-102.891022000000007 29.287113000000002,-102.902604999999994 29.279440999999998,-102.90311226801488 29.27677066200776,-102.906295999999998 29.260010999999995,-102.903188999999983 29.254028999999999,-102.887901999999997 29.245611999999998,-102.881135 29.246022,-102.871347 29.241624999999999,-102.870795537867835 29.239589944231255,-102.86823682221636 29.230147538772215,-102.866845999999995 29.225014999999999,-102.878020000000006 29.214697999999999,-102.890063999999995 29.208813999999997,-102.899231 29.208863,-102.908656596973657 29.219194069767902,-102.908787000000004 29.219336999999996,-102.909098471667448 29.219296482603067,-102.910575587951939 29.219104333804097,-102.912131000000002 29.218902,-102.912650757516516 29.218481184275788,-102.915803535402844 29.215928573746115,-102.915865999999994 29.215877999999996,-102.915845750043147 29.215583596781208,-102.915608148145267 29.212129230727648,-102.915554 29.211341999999998,-102.915202931298523 29.21076702044931,-102.914525807203304 29.209658028088604,-102.912447999999998 29.206254999999999,-102.91453363655873 29.20019781620671,-102.917367531146525 29.191967513425833,-102.917805 29.190697,-102.922897000000006 29.192704085059273,-102.925481999999988 29.193722999999995,-102.932612000000006 29.194113000000005,-102.944911000000005 29.188819999999996,-102.947155999999993 29.180776999999999,-102.95089 29.176834999999997,-102.953474999999997 29.176307999999995,-102.977266 29.186226,-102.981742305424802 29.185103060319207,-102.989431999999994 29.183174,-102.98978258837333 29.182935350109393,-102.991725524817895 29.181612768970929,-102.994653 29.17962,-102.994906329461855 29.17910907354543,-102.99809599999999 29.172675999999996,-102.995688 29.161218999999999,-103.00243399999998 29.150260999999997,-103.0050672680876 29.149386797638936,-103.008362000000005 29.148292999999995,-103.010324999999995 29.137821999999996,-103.015028 29.125769999999996,-103.016945338084582 29.124525732477775,-103.024896087692937 29.119366048020158,-103.032982999999987 29.114118,-103.033302941039096 29.107355634443419,-103.034095953658579 29.105913798143234,-103.035682683422891 29.103028844591982,-103.04044215980575 29.099351067768175,-103.049126083320303 29.097714968852063,-103.055369601981923 29.096538655622457,-103.061557539334615 29.093936906572154,-103.06671291432167 29.091769303506382,-103.074407490743866 29.088534080562461,-103.076354546596249 29.085721668416742,-103.076667707631657 29.079576983004682,-103.076847 29.076059,-103.091926967746744 29.064237268591206,-103.100265999999991 29.057699999999997,-103.101359249603803 29.049403674773888,-103.102531654124817 29.040506667933872,-103.100975335951205 29.030701853789079,-103.100368259199087 29.026877266486249,-103.101607999999999 29.018122999999999,-103.107810999999998 29.013812,-103.117237999999986 29.000208999999998,-103.113922000000002 28.988546999999997,-103.115062910480361 28.985887850893185,-103.115327999999991 28.98527,-103.115773294260094 28.985147329619764,-103.126748000000006 28.982123999999995,-103.134930999999995 28.983525,-103.143274000000005 28.978073999999999,-103.156645999999995 28.972830999999999,-103.163865 28.972099,-103.165923000000006 28.974001999999999,-103.166234999999986 28.978836000000005,-103.174329720990258 28.980505274886987,-103.182663652045193 28.982223879127538,-103.194928465619142 28.984753100989199,-103.195705106971403 28.984913258196226,-103.207825367468075 28.987412670652219,-103.227338454203803 28.991436614861634,-103.227579101883322 28.991486240676846,-103.227800999999999 28.991532000000003,-103.228011662384262 28.991347921912006,-103.228737472224623 28.990713704806197,-103.239108999999985 28.981650999999996,-103.245121150470112 28.980239630911282,-103.2474464632202 28.980649978816817,-103.249155161185584 28.980951512720708,-103.25190330878641 28.984768118238364,-103.253285000000005 28.986686999999996,-103.26030800838916 28.989731411362609,-103.266003072061508 28.990206003834011,-103.270357000000004 28.988113999999996,-103.270725571428585 28.987466542857135,-103.27232562100086 28.984655789108508,-103.273357000000004 28.982844,-103.273647076585334 28.982817854078331,-103.281189929980513 28.982137982403092,-103.282424051550748 28.983865752282551,-103.284749352823042 28.987121173462914,-103.285935817906974 28.994002716014545,-103.289257951411443 28.999697788883793,-103.296614077237592 29.004443676810233,-103.302399476821606 29.006455988366771,-103.312987409437454 29.010138745081029,-103.315449022736544 29.011725838031147,-103.323993942362023 29.017235063099889,-103.331021803791103 29.021766184756,-103.332920159881368 29.026986669752301,-103.332783823258595 29.028827200289001,-103.332445567409962 29.033393619832523,-103.334818511373186 29.039800579109659,-103.341462759988346 29.041224342728523,-103.347869719265475 29.037427630547988,-103.350815999999995 29.028566999999999,-103.355428000000003 29.021529,-103.355590463621823 29.021464336016578,-103.361777791205157 29.019001647792766,-103.361998 29.018913999999999,-103.382125000000002 29.024248999999998,-103.386095607142025 29.025822707722725,-103.399799910010643 29.031254261761571,-103.402689272115182 29.032399429564627,-103.427474921518822 29.04222295692054,-103.427754276336316 29.042333676218103,-103.430481680804888 29.047455485683194,-103.434668000000002 29.055316999999995,-103.439550459717495 29.058547821156772,-103.449722032594721 29.065278554178825,-103.453029264571228 29.067467015663059,-103.457386392383299 29.068596640465525,-103.460381908910477 29.067681344107211,-103.463195887793432 29.066821517562918,-103.469166763983068 29.069242141692889,-103.471264639062966 29.073115142802621,-103.471299587628792 29.074897490538035,-103.471426016715213 29.08134526859719,-103.474814887995407 29.086670637304994,-103.484429000000006 29.094524,-103.49531945696836 29.1087608679228,-103.500928937954981 29.116094025764934,-103.503236 29.119109999999996,-103.506163032831353 29.119368513261239,-103.513192088151087 29.119989313955617,-103.524613000000002 29.120998,-103.524225442342612 29.124905426308125,-103.523383999999993 29.133389,-103.525026999999994 29.137353999999998,-103.539240927934515 29.144791265038371,-103.551909954693073 29.151420179312847,-103.558678999999984 29.154961999999998,-103.579462000000007 29.149964999999998,-103.592359999999999 29.150259999999999,-103.598960126757959 29.155019048637598,-103.606437999999997 29.160411,-103.607894091053709 29.162314354517299,-103.610539999999986 29.165772999999998,-103.624537921955991 29.163185608071569,-103.629433693714475 29.1622806680118,-103.638195234739996 29.160661174732635,-103.645634999999999 29.159286000000002,-103.653180000000006 29.162863999999995,-103.656807999999984 29.169098999999999,-103.660202999999996 29.170933999999999,-103.667724667668963 29.172878689431396,-103.669696386484915 29.173388467437,-103.688670000000002 29.178293999999998,-103.688830238367032 29.178273608722382,-103.690116124218548 29.178109972160996,-103.697314000000006 29.177194,-103.699305464408098 29.178139630948273,-103.713769999999997 29.185008,-103.724743000000004 29.191469999999999,-103.73193762439729 29.198544108660482,-103.742175000000003 29.20861,-103.750912464183997 29.219357091602017,-103.755265634411842 29.22471149629115,-103.75594348727293 29.225545256136954,-103.768569999999997 29.227360999999995,-103.777623396259372 29.232265264832392,-103.780085146052983 29.242351446713872,-103.780352362214714 29.243446273985068,-103.781659908552058 29.248803500057083,-103.789034484601103 29.257501704713096,-103.792700821322356 29.259284649416337,-103.795120675584712 29.260461427946989,-103.80876361213285 29.267096007175422,-103.816641821688407 29.27092719156084,-103.818617217853202 29.271599921312173,-103.838302999999982 29.278303999999999,-103.854966933859771 29.281484400071786,-103.856892999999999 29.281852,-103.880606 29.284961999999997,-103.896615144488038 29.284634799403065,-103.910231251371073 29.284356508561018,-103.916269383748329 29.284233099060927,-103.91710599999999 29.284215999999997,-103.91776286712728 29.284516760669142,-103.918698764585329 29.284945281345607,-103.918909999999997 29.285042,-103.918905327188597 29.285488562070029,-103.918900778480648 29.285923264066316,-103.918857000000003 29.290106999999995,-103.924975999999987 29.293913000000003,-103.943697999999983 29.294945999999996,-103.965795999999983 29.298586999999998,-103.975234999999998 29.296016999999999,-103.983459597310627 29.299165977024781,-103.998789342279238 29.305035323921498,-104.012357062242771 29.310230038851625,-104.018558084893087 29.312604243583909,-104.038281999999995 29.320155999999997,-104.047006656168747 29.325575022319434,-104.055595999999994 29.330909999999996,-104.056467149578211 29.334496091467582,-104.057243999999997 29.337694000000003,-104.068917843404819 29.342306667996301,-104.075923999999986 29.345075,-104.082149999999999 29.345922999999996,-104.091021999999995 29.353691999999995,-104.093326000000005 29.359926000000002,-104.098377999999983 29.366755999999999,-104.106466999999981 29.373127,-104.122882935723638 29.379859019095424,-104.125474999999994 29.380922000000002,-104.132831527553293 29.381873417846823,-104.136236243923818 29.382313748953422,-104.143691999999987 29.383277999999997,-104.1467332019064 29.385415391432094,-104.148888696362661 29.386930297552944,-104.151718842950046 29.388919356896473,-104.157422367906094 29.392927859373117,-104.166562999999996 29.399352,-104.180069999999986 29.412763999999999,-104.181273000000004 29.426265,-104.182051945448123 29.427144615030393,-104.195989999999995 29.442884000000003,-104.208194000000006 29.448201,-104.212529153241931 29.452438774515159,-104.213947876032222 29.456222068892099,-104.21370324326665 29.462011765001886,-104.213238514637069 29.473010445135856,-104.218538498245692 29.476600759818915,-104.220568643482977 29.477976020723915,-104.227547514371139 29.480496161448666,-104.229081071868791 29.481049944541308,-104.233824999999996 29.486544999999996,-104.233486999999997 29.492733999999995,-104.235847000000007 29.496744,-104.238313284768751 29.498023301020304,-104.246870092866089 29.50246185307569,-104.254473621536903 29.506405923975272,-104.260293266516271 29.50942466611497,-104.26168489846043 29.511073814728768,-104.264155000000002 29.514001,-104.271046277211582 29.51559593462645,-104.274575430964404 29.516412730896519,-104.293481117436073 29.520788310787555,-104.306646311930564 29.523835296697214,-104.308812834933008 29.524336722260216,-104.311570786550874 29.52540915148019,-104.318073989469781 29.527937921306467,-104.320711000000003 29.526326414398167,-104.326090351466348 29.523039031981277,-104.327483437129615 29.522187701603762,-104.334811000000002 29.519462999999998,-104.338113000000007 29.519967,-104.353150868059984 29.530471948300562,-104.369085650105362 29.541603450512167,-104.37074044290263 29.542759433043344,-104.371174999999994 29.543062999999997,-104.371454921502831 29.543072731712495,-104.371996954766473 29.543091575966443,-104.375901661123379 29.543227326450971,-104.381040999999996 29.543405999999997,-104.394588999999982 29.556087000000002,-104.394583075653415 29.556197720561212,-104.394577025204526 29.556310797858156,-104.394552364240909 29.55677168847231,-104.394503136758885 29.55769170460702,-104.394351 29.560534999999998,-104.39571704642303 29.563607040276512,-104.39636925661604 29.56507376640522,-104.397848504811165 29.56840038104859,-104.399550133070164 29.572227096202102,-104.399591 29.572319,-104.399981791506633 29.572551361916329,-104.452301000000006 29.60366,-104.466520000000003 29.609296,-104.483502 29.627740999999997,-104.486693164979016 29.629712817604439,-104.493658999999994 29.634016999999997,-104.503232654335022 29.63787621670291,-104.507568060311556 29.63962385355849,-104.51068846437596 29.64315687341222,-104.513969549435132 29.646871821353749,-104.51818442992635 29.651644041921735,-104.53325150001281 29.668703453669117,-104.535568725458901 29.671327089370656,-104.539761023554547 29.676073741438437,-104.540155514025756 29.678572204873163,-104.540559188867974 29.681128836544634,-104.537934834631798 29.684482179324355,-104.535770155740693 29.687248158943191,-104.536302269386866 29.690440851131939,-104.537991394981006 29.693268523024599,-104.544269904764263 29.703779029587054,-104.545505621253113 29.70584767433138,-104.552240999999995 29.717122999999997,-104.555600999999996 29.731220999999998,-104.554914970831931 29.738152096413199,-104.554660236582549 29.740725729903364,-104.557361904757329 29.745049367744027,-104.565950999999998 29.758794999999996,-104.565687999999994 29.770461999999998,-104.571279565966023 29.778773775962186,-104.586447318468245 29.801320404476364,-104.592472 29.810276000000002,-104.594023000000007 29.809220999999997,-104.599148999999997 29.811007,-104.610166000000007 29.819117999999996,-104.610205623651026 29.819231101342197,-104.610356932717465 29.819662996386217,-104.613081011852316 29.827438579869643,-104.615248982559379 29.833626813172685,-104.619039 29.844444999999997,-104.624350000000007 29.845221999999996,-104.629290740007292 29.852171499068138,-104.629713747950376 29.852766489555783,-104.630103000000005 29.853313999999997,-104.630111961493199 29.853664893019587,-104.630290851730521 29.860669455113747,-104.630338938536084 29.862552324858758,-104.630359999999996 29.863376999999996,-104.630588419131911 29.86393398222631,-104.633274999999998 29.870484999999999,-104.63616345635748 29.872800876528242,-104.645854762904364 29.880571071602066,-104.65678299999999 29.889332999999997,-104.658422170930251 29.891285606400047,-104.65864999999998 29.891556999999999,-104.658665881124946 29.891956296855856,-104.659041999999999 29.901413000000002,-104.661965712024596 29.903547518850328,-104.666224133352003 29.906656470935726,-104.672326999999996 29.911111999999996,-104.679772 29.924658999999998,-104.680850906343153 29.932111041680564,-104.684321999999995 29.956085999999999,-104.679660999999982 29.975271999999997,-104.680379178583593 29.977083,-104.685479 29.989943,-104.689640999999995 30.014949999999999,-104.693591999999995 30.019077000000003,-104.701242868742796 30.021046973658397,-104.702310999999995 30.021321999999998,-104.702447580064685 30.021555813412469,-104.7030116881661 30.022521518330599,-104.703997999999999 30.02421,-104.703882705803636 30.024660825787098,-104.703121214098445 30.027638426639932,-104.701101999999992 30.035533999999998,-104.706873999999999 30.050685,-104.706630611705322 30.051708605996314,-104.703831250551389 30.063481739403372,-104.703581999999997 30.06453,-104.699792220462342 30.065066336345112,-104.698848962238912 30.065199827927678,-104.698233000000002 30.065286999999998,-104.697787990647399 30.065651654776563,-104.69277799999999 30.069756999999996,-104.687313590037505 30.080921966773531,-104.685080632167896 30.08548438075637,-104.685002999999995 30.085643,-104.685554782105299 30.093963293324606,-104.685687 30.095957000000002,-104.686861171517634 30.098036494960315,-104.692093999999983 30.107303999999996,-104.693655813605488 30.119154117533654,-104.695366000000007 30.13213,-104.692122999999995 30.138662999999998,-104.690080458880587 30.149079251722458,-104.687506999999997 30.162202999999998,-104.687296000000003 30.179464000000003,-104.702787999999998 30.211735999999995,-104.707897632633845 30.218501061672534,-104.711235999999985 30.222920999999999,-104.713166 30.237956999999998,-104.722357186598074 30.248308653999679,-104.724410584274111 30.250621311025988,-104.72532436157617 30.251650460675243,-104.73347160041142 30.260826359409911,-104.733822000000004 30.261220999999999,-104.734059376092361 30.261231667834558,-104.737359999999995 30.261379999999996,-104.740448 30.259454000000002,-104.749663999999996 30.26126,-104.751566999999994 30.263643999999999,-104.754655151309422 30.272796681105522,-104.757893999999993 30.282395999999999,-104.761634 30.301147999999998,-104.779356000000007 30.313188,-104.790279572675416 30.323632238875831,-104.797291 30.330335999999999,-104.809794338457337 30.334925849121163,-104.810755485390246 30.338091979227556,-104.81211787963197 30.342579864771171,-104.813478341684558 30.347061385458392,-104.814379749150064 30.356375955470707,-104.814778573671205 30.360497153782266,-104.817595751374526 30.365914799658352,-104.824313633436745 30.370465624210016,-104.837492999999995 30.373909,-104.849824017938076 30.383147747051474,-104.859521 30.390413000000002,-104.857439999999997 30.408957,-104.852419999999995 30.418792,-104.861074000000002 30.428896999999996,-104.86474141169117 30.441297336779865,-104.865463293164552 30.443738179024677,-104.868454614768496 30.453852504447951,-104.869872 30.458644999999997,-104.86871099999999 30.463229999999996,-104.866118999999983 30.46479,-104.866094000000004 30.467379999999999,-104.870137228360662 30.483875070981508,-104.873288503237063 30.496731258693877,-104.873335488188886 30.496922942181985,-104.876786999999979 30.511004000000003,-104.878566789651714 30.514416830422793,-104.880108146577356 30.517372454871531,-104.88208573587417 30.521164575423189,-104.889375999999999 30.535143999999995,-104.890392881954469 30.540947215529823,-104.892228000000003 30.551419999999997,-104.895440150997459 30.560421421221292,-104.899000999999998 30.570399999999996,-104.909330873116318 30.584188648619556,-104.909747767935556 30.584745133303247,-104.918689620637082 30.596681007395873,-104.924796 30.604831999999998,-104.927016167130404 30.604700501077968,-104.934922481779466 30.604232215677584,-104.939873000000006 30.603939,-104.953391370086464 30.606003357240429,-104.967167000000003 30.608106999999997,-104.971627504383378 30.61006529240159,-104.972071 30.61026,-104.972794851616513 30.611297344530712,-104.980135850742045 30.621817657146149,-104.980290999999994 30.622039999999995,-104.982191641583043 30.62882153037463,-104.983981 30.635206,-104.985513855292751 30.652294791670293,-104.9863 30.661059000000002,-105.001239999999996 30.672583000000003,-105.002056999999994 30.680971999999997,-105.006614566555172 30.685839873047019,-105.006800999999996 30.686039,-105.007528432885024 30.6859080282745,-105.007959930235828 30.685830338698263,-105.020141999999993 30.683637,-105.035888798004834 30.686138071331488,-105.042930223005172 30.687256464175281,-105.044973600167665 30.685364445024991,-105.049769587265445 30.680923708581364,-105.049884734287517 30.6808170907847,-105.050688284649809 30.681171184306308,-105.054688384336032 30.682933873306403,-105.062333999999993 30.686302999999995,-105.062477471553692 30.692159292631892,-105.062625999999995 30.698222,-105.084504902225902 30.710918832086001,-105.098281999999998 30.718914000000002,-105.108075999999997 30.730049999999995,-105.110705999999993 30.737749999999995,-105.110681999999983 30.743366000000002,-105.113815999999986 30.746001,-105.119547104826722 30.748125675649064,-105.123265000000004 30.749504000000005,-105.140207000000004 30.752502,-105.152361999999982 30.751451999999997,-105.157640215066564 30.754007791997694,-105.16015278062757 30.757058756266805,-105.160271207191187 30.758203550015399,-105.161229588477383 30.767467931854636,-105.164076390339474 30.771453450048199,-105.164818961888187 30.77249304906519,-105.164868027003308 30.772491740665838,-105.170370203038615 30.772345016388588,-105.178279098267282 30.772134113115257,-105.183436 30.776644999999995,-105.185930999999997 30.784391999999997,-105.195143999999999 30.792138,-105.195988495740664 30.791702299374609,-105.203522176185984 30.787815448176353,-105.206160999999994 30.786453999999996,-105.212916518294108 30.785414778041517,-105.215967484302155 30.786491589369188,-105.216685356202021 30.789542555377231,-105.215888956387687 30.792967070566242,-105.214890669496626 30.797259699168034,-105.218659510882389 30.801566944478708,-105.222008841883465 30.801829013843189,-105.231580057313238 30.802577916338681,-105.238364256021057 30.803108747911697,-105.249792715464977 30.799033957074698,-105.255416052233826 30.797028969328842,-105.261224946310648 30.798054073736733,-105.261360733612406 30.798078036329223,-105.27276013440985 30.808707209360072,-105.27887297001547 30.814407016614517,-105.283004544196217 30.818259431108679,-105.287237620233441 30.822206489243744,-105.289317685342255 30.822206489243744,-105.295630129130572 30.822206489243744,-105.300778681061615 30.818848737795758,-105.303672944509898 30.816961174571279,-105.314862960890409 30.816961174571279,-105.316949659843416 30.82296045428,-105.31766045482081 30.825003996727105,-105.320108268786385 30.827451797139727,-105.322675464925993 30.828439452154051,-105.330102631610075 30.831296841312803,-105.347695000000002 30.838065,-105.353219571709047 30.842032277683753,-105.358103536812379 30.84553952616983,-105.359771122039604 30.846737044096301,-105.360672052753856 30.84738401593513,-105.36720323988537 30.847875849249167,-105.377416999999994 30.848644999999998,-105.387780492422849 30.851314552204784,-105.394242074789418 30.852979003795937,-105.396689881978517 30.855426817761515,-105.396237319899697 30.858492407966825,-105.394628539050657 30.86939005724841,-105.394248999999988 30.871960999999999,-105.395681745186749 30.87649980844607,-105.399608999999998 30.888940999999996,-105.399828021807267 30.889112280223049,-105.402824820246408 30.891455847338634,-105.413505 30.899808,-105.430088999999995 30.905791999999998,-105.44547819369545 30.915748838601054,-105.448693870984556 30.917829388134351,-105.452149246331331 30.920065022782566,-105.4597280766598 30.924968540917344,-105.469954295993247 30.931584924947412,-105.472488639470896 30.933224650164071,-105.476269681741059 30.935670991952524,-105.488027000000002 30.943277999999999,-105.495516502166126 30.9493992090351,-105.4968561000139 30.950494069316512,-105.497422439936116 30.953962910943051,-105.497963910074574 30.957279424722472,-105.502256687477072 30.962680017552614,-105.507558525965123 30.966493977230062,-105.533087999999992 30.984859,-105.541468808393844 30.984769556162778,-105.543675999999991 30.984745999999998,-105.557430349577899 30.990228688381027,-105.570063935625512 31.008532833135739,-105.575218046011173 31.016000355201566,-105.578084306850855 31.020153131231776,-105.578407858220658 31.020621907958049,-105.57911399999999 31.021644999999999,-105.580554486932016 31.024917232759986,-105.581339666024604 31.026700857930102,-105.581404000000006 31.026847000000004,-105.581361569643192 31.027041810483581,-105.581235244876609 31.027621805343596,-105.579823718925667 31.034102543987302,-105.579541999999989 31.035395999999995,-105.579765234089464 31.036249085539566,-105.579847333127134 31.036562825712579,-105.585323000000002 31.057487999999996,-105.592709163135751 31.0626132919136,-105.595921000000004 31.064841999999999,-105.598772999999994 31.074925999999998,-105.60333 31.082624999999997,-105.627348999999995 31.098545,-105.641890000000004 31.098321999999996,-105.646730999999988 31.113907999999999,-105.647031366805422 31.114192798578223,-105.648833999999994 31.115902000000002,-105.662869191777489 31.12063916934996,-105.673930643060629 31.124372639388369,-105.709491 31.136374999999997,-105.717005999999998 31.141438,-105.717653520299876 31.143411480377267,-105.719539999999995 31.149160999999996,-105.742677999999998 31.164897,-105.763531 31.164121000000005,-105.773256999999987 31.166896999999999,-105.774148788612138 31.168976038235485,-105.780021000000005 31.182666,-105.779878030009812 31.18682806893737,-105.779724999999999 31.191282999999995,-105.782894999999996 31.197562999999999,-105.790659746923424 31.200723362140888,-105.794386000000003 31.20224,-105.818835000000007 31.230680999999997,-105.825806058218902 31.23733997673531,-105.835722000000004 31.246811999999995,-105.851073632158958 31.265902599748792,-105.86604427072389 31.284519412988434,-105.869353000000004 31.288633999999998,-105.869862116496506 31.288859823963843,-105.876014999999981 31.291588999999995,-105.890871999999987 31.290013999999996,-105.895034999999993 31.290977999999999,-105.903460999999993 31.306768999999999,-105.908770999999987 31.312773999999997,-105.914613899052299 31.312859252963214,-105.93196564998388 31.313112430054005,-105.932552999999999 31.313120999999995,-105.933375187723101 31.313903465142818,-105.938451999999984 31.318735,-105.948091000000005 31.340069,-105.945903 31.352809999999998,-105.953942999999995 31.364749,-105.970101 31.365936999999995,-105.997579969562565 31.386863626037869,-106.00418474278807 31.391893495117941,-106.004925999999998 31.392457999999998,-106.006143777923754 31.392558937255828,-106.022866323827969 31.393945009265412,-106.080091217088636 31.398688175961098,-106.080258 31.398702,-106.080335505244278 31.398768097394733,-106.096409750603954 31.412476405141465,-106.100621535494 31.416068265421309,-106.102641400977276 31.417790830744398,-106.10264993125142 31.41779810546371,-106.106876999999997 31.421403000000005,-106.112168999999994 31.423577999999996,-106.132782000000006 31.425367000000005,-106.143572676566535 31.431101721097118,-106.158218000000005 31.438885000000003,-106.175305198785026 31.455910533348611,-106.175674999999998 31.456278999999995,-106.17677981450808 31.456634312625521,-106.182946895641223 31.45861766980741,-106.20560859826729 31.465905761156737,-106.205826999999999 31.465975999999998,-106.205998876707866 31.466165148890862,-106.212686244283063 31.473524541419071,-106.218538531147885 31.479964934554566,-106.218843000000007 31.480299999999996,-106.218893022078106 31.480498686193428,-106.223908999999992 31.500422,-106.236804000000006 31.513376,-106.242649095206133 31.530650094003715,-106.245874455325477 31.540182047193959,-106.246202999999994 31.541153,-106.246406806009631 31.541315626597875,-106.254779999999997 31.547997000000002,-106.280345588488331 31.561810530102129,-106.280548572587122 31.561920205925162,-106.280811 31.562061999999997,-106.287785 31.584444999999999,-106.292254713772053 31.594651759250389,-106.295141086978958 31.601242900860864,-106.303535999999994 31.620412999999996,-106.308594276522342 31.627497440426588,-106.330970256390501 31.658836434185069,-106.33473699999999 31.664111999999999,-106.338265602146336 31.671883697950737,-106.346992532059133 31.691104641686092,-106.349537999999995 31.696711,-106.357472918704602 31.702103016258707,-106.368303742040567 31.709462886938788,-106.370138999999995 31.710709999999999,-106.373839000000004 31.714809999999996,-106.378039 31.72831,-106.381039 31.732109999999999,-106.38595139194058 31.734759025425479,-106.394642915450532 31.739445961452269,-106.404086535473255 31.744538468290354,-106.417940000000002 31.752009,-106.421739999999616 31.752623660686648,-106.431540999999996 31.754208999999996,-106.434644983693715 31.755853956158482,-106.444263765046571 31.76095142933643,-106.451540999999992 31.764807999999999,-106.467641999999998 31.759607999999997,-106.470742 31.753508,-106.472156160715315 31.752506597443457,-106.47367184987327 31.751433300058491,-106.475016438009845 31.750481163584279,-106.475542000000004 31.750108999999998,-106.48261401078824 31.748321568701869,-106.484641999999994 31.747809000000004,-106.486162292248409 31.747994847970777,-106.488078402545341 31.748229082678503,-106.489542 31.748407999999998,-106.507341999999994 31.761208,-106.509102011460428 31.762827435120251,-106.511609062807707 31.765134242258316,-106.523643000000007 31.776206999999996,-106.528643000000002 31.781807,-106.528542999999999 31.783906999999996,-106.528542999999999 31.784407000000002,-106.527996999999999 31.786944999999999,-106.527623000000006 31.789119000000003,-106.527737999999985 31.789760999999995,-106.527942999999993 31.790507000000002,-106.530514999999994 31.792103,-106.532480000000007 31.791913999999998,-106.533 31.791829,-106.533043000000006 31.791906999999995,-106.534743000000006 31.796106999999999,-106.535154000000006 31.797088999999996,-106.535342999999997 31.797507,-106.535842999999986 31.798607,-106.542096999999998 31.802145999999997,-106.542143999999993 31.802106999999996,-106.544713999999999 31.804286999999999,-106.545344 31.805007,-106.546561898485905 31.806561850400339,-106.546615562760394 31.806630361790774,-106.547143999999989 31.807304999999996,-106.551861034152338 31.808599471053657,-106.558443999999994 31.810406,-106.560680020141419 31.810752754512048,-106.560847305685968 31.810778696593822,-106.562944999999999 31.811104,-106.56344399999999 31.812605999999995,-106.566844000000003 31.813305999999997,-106.569123704016391 31.811582321353455,-106.570943999999997 31.810205999999997,-106.577243999999993 31.810406,-106.581344 31.813905999999996,-106.582144 31.815505999999999,-106.588044999999994 31.822105999999998,-106.589044999999984 31.822705999999997,-106.593826000000007 31.824901,-106.602727000000002 31.825023999999996,-106.605266999999998 31.827911999999998,-106.603310537982878 31.834798487166189,-106.601945 31.839604999999999,-106.60204499999999 31.844404999999998,-106.605244999999982 31.845904999999998,-106.605845000000002 31.846304999999997,-106.614637000000002 31.846489999999996,-106.621857000000006 31.852854,-106.625763000000006 31.856276,-106.627808000000002 31.860592999999998,-106.629708357956787 31.861913746439043,-106.635925999999998 31.866235,-106.635879999999986 31.871514,-106.634872999999999 31.874477999999996,-106.630798999999996 31.879696999999997,-106.629271361585637 31.8835303997664,-106.629197000000005 31.883717000000004,-106.629948941610351 31.885072003811555,-106.630443527558498 31.88596325099838,-106.630530381920593 31.886119763139838,-106.630691999999982 31.886410999999999,-106.633926999999986 31.889183999999997,-106.635073463799642 31.889856364267651,-106.636317332120683 31.890585853164694,-106.638154 31.891662999999998,-106.638364165758659 31.89171923904625,-106.642899999999983 31.892932999999999,-106.645296000000002 31.894859,-106.645645999999999 31.895648999999995,-106.645478999999995 31.898669999999999,-106.640839999999997 31.904598,-106.63512839833713 31.908732779117901,-106.633668 31.90979,-106.633408736085542 31.909871832166754,-106.625946999999996 31.912227,-106.62344499999999 31.914034,-106.618336531290581 31.916262323146238,-106.614677480394235 31.917858407661853,-106.614345999999998 31.918002999999995,-106.611846 31.920003,-106.616063629645311 31.921863544491501,-106.623932999999994 31.925334999999997,-106.624022586877501 31.92530240401349,-106.628663000000003 31.923614,-106.629746999999995 31.926570000000002,-106.625321999999983 31.930053000000004,-106.622529 31.934863000000004,-106.622117000000003 31.936620999999999,-106.622377 31.940863,-106.623659000000004 31.945509999999995,-106.616135999999983 31.948439,-106.614701999999994 31.956,-106.617707999999993 31.956008,-106.622819000000007 31.952891,-106.625123000000002 31.954530999999999,-106.625534999999985 31.957475999999996,-106.624298999999993 31.961054,-106.620453999999981 31.963402999999996,-106.619370999999987 31.964777000000005,-106.618745000000004 31.966954999999995,-106.619568999999998 31.971578,-106.621872999999994 31.972933,-106.623215999999999 31.972909999999999,-106.626465999999994 31.97069,-106.630114000000006 31.971257999999999,-106.638186000000005 31.976819999999996,-106.639528999999996 31.980347999999996,-106.63649199999999 31.985719,-106.631181999999995 31.989809,-106.629494617643616 31.990072722748106,-106.628337072326531 31.990253636712819,-106.62822051159516 31.990271854111079,-106.626910882874782 31.990476537349483,-106.623567999999992 31.990998999999999,-106.619448000000006 31.994733,-106.618486000000004 32.000494999999994,-106.599096000000003 32.000731000000002,-106.598639000000006 32.000753999999993,-106.595332999999997 32.000777999999997,-106.587971999999979 32.000748999999999,-106.582805114232855 32.000751357586125,-106.566056000000003 32.000759000000002,-106.565141999999994 32.000736000000003,-106.564298514026802 32.00073927393025,-106.562131862706067 32.000747683631808,-106.55942760630407 32.000758180008894,-106.517043115844388 32.000922692365819,-106.411074999999983 32.001334,-106.409326934223301 32.001349629127162,-106.409108574114072 32.001351581443814,-106.394297999999992 32.001483999999998,-106.376861000000005 32.001171999999997,-106.32356972407176 32.001457096670784,-106.313306999999995 32.001511999999998,-106.205915000000005 32.001761999999999,-106.200699 32.001784999999998,-106.18183999999998 32.002049999999997,-106.125534000000002 32.002532999999993,-106.05045734599986 32.002412317859424,-105.998002999999997 32.002327999999999,-105.900599999999997 32.002099999999992,-105.886159000000006 32.001969999999993,-105.854061000000002 32.00235,-105.750527000000005 32.002206,-105.731362000000004 32.001564000000002,-105.563520259526442 32.001015604709174,-105.429281000000003 32.000577,-105.428582000000006 32.000599999999999,-105.427048999999997 32.000638000000002,-105.390395999999981 32.000607000000002,-105.340142768272344 32.000583616714373,-105.200871148394683 32.000518812363367,-105.153993999999997 32.000497000000003,-105.150310000000005 32.000497000000003,-105.14824 32.000484999999998,-105.132915999999994 32.000518,-105.131377 32.000523999999999,-105.118039999999993 32.000484999999998,-105.078604999999996 32.000532999999997,-105.077045999999996 32.000578999999995,-104.918272000000002 32.000495999999991,-104.643525999999994 32.000442999999997,-104.640917999999999 32.000396000000002,-104.531936999999999 32.000311000000004,-104.531756 32.000117000000003,-104.024520999999993 32.000010000000003,-103.980179000000007 32.000124999999997,-103.875476000000006 32.000554,-103.748317 32.000197999999997,-103.72373965094468 32.000208021677786,-103.713395184678689 32.000212239744897,-103.713395184670219 32.000212239744904,-103.713395184654971 32.000212239744911,-103.713395184639609 32.000212239744918,-103.60161412595366 32.000257819670985,-103.326500999999993 32.00036999999999,-103.278520999999998 32.000419,-103.270382999999995 32.000326,-103.267707999999999 32.000323999999992,-103.267633000000004 32.000475000000002,-103.215641000000005 32.000512999999998,-103.133028835827503 32.000473953106116,-103.088697999999994 32.000452999999993,-103.085875999999985 32.000464999999998,-103.064422999999991 32.000518,-103.064344000000006 32.087051000000002,-103.064347999999995 32.123041,-103.064421999999993 32.145006000000002,-103.064695999999998 32.522193,-103.064761000000004 32.587983,-103.064787999999993 32.600397,-103.064761000000004 32.601863000000002,-103.064814999999996 32.624536999999997,-103.064633 32.646419999999992,-103.064864 32.682647000000003,-103.064797999999996 32.690761000000002,-103.064798999999994 32.708694,-103.064826999999994 32.726627999999998,-103.064807000000002 32.777302999999996,-103.064698000000007 32.783602000000002,-103.064711000000003 32.784593,-103.064699000000005 32.827531,-103.064672000000002 32.828470000000003,-103.064888999999994 32.849359,-103.064915999999982 32.857259999999997,-103.064807000000002 32.857695999999997,-103.064862000000005 32.868346000000003,-103.064700999999985 32.879354999999997,-103.064569000000006 32.900013999999999,-103.064656999999997 32.959097,-103.064678999999998 32.964373000000002,-103.064625000000007 32.999898999999999,-103.064452000000003 33.010289999999998,-103.06398 33.038693000000002,-103.063904999999991 33.042054999999998,-103.063382198608849 33.066417104805645,-103.0628188509327 33.092668632365545,-103.062136190569035 33.12448003074244,-103.060102999999984 33.219225000000002,-103.059719999999999 33.256262,-103.059241999999998 33.260370999999992,-103.057856 33.315233999999997,-103.057486999999995 33.32947699999999,-103.056655000000006 33.388437999999994,-103.052609999999987 33.570599,-103.051664000000002 33.629489,-103.051362999999995 33.64195,-103.051535 33.650486999999998,-103.051086999999981 33.658186,-103.050532000000004 33.672407999999997,-103.050147999999993 33.701971,-103.049608000000006 33.737766,-103.049096000000006 33.746270000000003,-103.047346000000005 33.824674999999999,-103.046907000000004 33.850299999999997,-103.045643999999996 33.901536999999998,-103.045698000000002 33.90629899999999,-103.044893000000002 33.945616999999999,-103.043949999999981 33.974629,-103.043616999999998 34.003633,-103.043531000000002 34.018014,-103.043554999999984 34.032713999999991,-103.043745999999999 34.037294000000003,-103.043771000000007 34.041538000000003,-103.043720999999991 34.042319999999997,-103.043767000000003 34.043544999999995,-103.043744000000004 34.049985999999997,-103.04368599999998 34.063077999999997,-103.043515999999983 34.079382000000003,-103.043569000000005 34.087947,-103.043571175003294 34.092846731402311,-103.043572866326429 34.096656853966635,-103.04358003846437 34.112813863799865,-103.043644 34.256903,-103.043718999999982 34.289440999999997,-103.043935999999988 34.302584999999993,-103.043978999999979 34.312763999999994,-103.043947553639484 34.376410480771497,-103.043947499824213 34.37651940122479,-103.043946000000005 34.379555000000003,-103.043943999999982 34.37966,-103.043919000000002 34.380915999999992,-103.043693000000005 34.383578,-103.043629999999993 34.384689999999999,-103.043614000000005 34.384968999999998,-103.043612999999993 34.388679000000003,-103.043612999999993 34.390442,-103.043606047260084 34.391254973944719,-103.043584999999993 34.393715999999998,-103.043610999999999 34.397105000000003,-103.043582999999998 34.400677999999999,-103.043537999999998 34.405462999999997,-103.043582 34.455657000000002,-103.043587999999986 34.459662000000002,-103.043588999999997 34.459774000000003,-103.043593999999985 34.46266,-103.043434927764125 34.510540742996007,-103.043071999999981 34.619782,-103.043277851519235 34.65183038816317,-103.0432796163159 34.65210514391012,-103.043285999999995 34.653098999999997,-103.042827000000003 34.671187999999994,-103.042768999999993 34.747360999999998,-103.042770000000004 34.792223999999997,-103.042781000000005 34.850242999999999,-103.042520999999979 34.899546,-103.0425974544018 35.032467348285799,-103.042641999999987 35.109912999999999,-103.043261 35.125058000000003,-103.042519999999996 35.135596,-103.042599999999993 35.142766000000002,-103.042710999999997 35.144734999999997,-103.042568000000003 35.159317999999999,-103.042394999999999 35.178573,-103.042338999999984 35.181922,-103.042366 35.182786,-103.042377000000002 35.183149,-103.042496999999997 35.211862000000004,-103.042775000000006 35.241236999999998,-103.042366 35.250056,-103.041554000000005 35.622487,-103.041484634909168 35.651235429903174,-103.041145999999998 35.791583000000003,-103.041916999999998 35.796441000000002,-103.041715999999994 35.814072000000003,-103.042186 35.825216999999995,-103.04130499999998 35.837693999999999,-103.040823999999986 36.055230999999992,-103.041387523024824 36.229129564686382,-103.041674 36.317534000000002,-103.041745000000006 36.318266999999999,-103.041923999999995 36.500439,-103.00243399999998 36.500397)),((-96.818513748151517 28.172441936006489,-96.816443421354066 28.174808025412563,-96.791958210781445 28.188687337716829,-96.733036581469989 28.190913261798631,-96.70383764358462 28.198245729538105,-96.697421731775194 28.2029594609741,-96.702659211994316 28.211208487181011,-96.703313894801497 28.216445964862743,-96.686815839850283 28.218410020896432,-96.662461568376486 28.227313732447904,-96.66062845144161 28.228884976259902,-96.663116248646261 28.233205895474203,-96.651855673914184 28.251275190431315,-96.607991796426646 28.277069769155677,-96.608122730450688 28.280081317680857,-96.611527096272326 28.281390688369981,-96.610479598706064 28.283092866206033,-96.592934048725994 28.296972182316367,-96.581018783574592 28.302209665072866,-96.553260151988255 28.302340591484768,-96.546975176740276 28.305614018207578,-96.542130508742858 28.315958034472228,-96.528905880514458 28.322504882843088,-96.476269225261575 28.330753906512612,-96.45099839278295 28.337038879223222,-96.434107525610045 28.344764159184386,-96.418918843885365 28.35484630740093,-96.415252604940861 28.362833452872817,-96.417216660974546 28.367154372087118,-96.412895739222876 28.36951123780511,-96.403206408302779 28.371475291301415,-96.401242352269094 28.366892498964241,-96.400558825492723 28.362187299887704,-96.398667286465624 28.349166496619617,-96.397846 28.343512999999998,-96.413700000000006 28.327342999999999,-96.439098999999999 28.319051999999999,-96.495600517783487 28.293964130304811,-96.547774000000004 28.270797999999999,-96.587113635820756 28.248878526668094,-96.611036668198281 28.235548960715661,-96.621533999999983 28.229699999999998,-96.694665999999998 28.18212,-96.758140999999995 28.136872999999998,-96.830820125734775 28.079724674840076,-96.849624000000006 28.064938999999999,-96.854049189790473 28.060788472935577,-96.855594496383262 28.059339080448503,-96.859762278796424 28.055429983997605,-96.896530613737951 28.020943786452513,-96.898080497387397 28.019490100997579,-96.929052999999996 27.990439999999996,-96.96699599999998 27.950531000000002,-97.001440999999986 27.911442,-97.031660000000002 27.869974999999997,-97.041798999999997 27.852925999999997,-97.045408776308051 27.837452569961062,-97.045409609838757 27.837448997003069,-97.04598 27.835004,-97.050599498412936 27.830109781194331,-97.058265753683145 27.821987615677948,-97.076304165860961 27.802876463727326,-97.079565315161531 27.799421374709375,-97.083535350812468 27.795215242050556,-97.085211615730273 27.793439290085495,-97.085394999999991 27.793244999999999,-97.11422230692618 27.755303327915222,-97.116276999999997 27.752599,-97.117304906633777 27.751048809529347,-97.118830196202964 27.748748513687826,-97.139140047561696 27.718119138409879,-97.139351757288111 27.717799858049549,-97.143807202733072 27.711080581371732,-97.165547551982726 27.678293865995041,-97.166583141799606 27.676732088482499,-97.166681999999994 27.676583,-97.184850261879149 27.644709535797791,-97.192144670654784 27.631912600211269,-97.198729900630283 27.620359811436909,-97.201865999999995 27.614857999999998,-97.211651066704889 27.596044174137351,-97.213608899397855 27.592279833590187,-97.221943360361436 27.576255098965802,-97.265194083077162 27.493096589152017,-97.265746568141566 27.492034321708481,-97.276090999999994 27.472145,-97.304469999999995 27.407734,-97.326522999999995 27.347611999999998,-97.347445832595042 27.277936119324231,-97.350397999999998 27.268104999999998,-97.363400999999996 27.210366,-97.370941000000002 27.161165999999998,-97.377001000000007 27.101020999999999,-97.379130000000004 27.047996,-97.378361999999996 26.992877,-97.370730999999992 26.909706,-97.365301177044699 26.875333999999995,-97.365282052674758 26.875212938438843,-97.364726000000005 26.871692999999997,-97.363633430415348 26.866515420001111,-97.352028350385282 26.811520085064032,-97.35141299999998 26.808603999999999,-97.350529648372714 26.805138580575584,-97.333027999999999 26.736478999999996,-97.304204860681779 26.646364129642233,-97.300690000000003 26.635375,-97.297812715808362 26.627503004299889,-97.297022484076606 26.625340999999999,-97.287871455917369 26.600304594305239,-97.275119000000004 26.565415000000002,-97.269391999999982 26.554046,-97.269132970349304 26.553256905349773,-97.257954534248029 26.519203490608863,-97.229844 26.433568999999999,-97.223724090442104 26.411478908273114,-97.206682644704898 26.34996703527348,-97.194643999999997 26.306512999999999,-97.185844000000003 26.267102999999995,-97.177979856301576 26.220346386353309,-97.177168840972797 26.215524458900923,-97.173264999999986 26.192314,-97.170387765328073 26.167037808112223,-97.169872392484734 26.162510314053797,-97.167099005951158 26.138146416702778,-97.161470999999992 26.088705,-97.158662630175101 26.080176913346069,-97.154270970414501 26.066840900880429,-97.161462285840642 26.067639941946975,-97.169842256221145 26.077853024187579,-97.171781452365479 26.102521767945923,-97.179531587141199 26.146202099560895,-97.178745972847352 26.177103221942961,-97.183983445454302 26.214289306886101,-97.194458400817808 26.271639686993655,-97.214884565299002 26.353606215503973,-97.226930759399721 26.385554824668418,-97.240286324189555 26.405980989149626,-97.240845398636537 26.411470089808617,-97.243166933615896 26.434263367616055,-97.247618791929028 26.456260775909261,-97.254165635225121 26.471187589585856,-97.262545605605609 26.482971915638458,-97.27642492679071 26.521729238684483,-97.292399243108349 26.528014213932472,-97.310730412457033 26.556558470596535,-97.308111681228326 26.5712234060755,-97.308635417324538 26.576722756880109,-97.317015387705027 26.597672667607057,-97.318434072834165 26.60022630157264,-97.324871601690262 26.611813856840271,-97.338489044677715 26.647428701777493,-97.33639404954522 26.666021744249065,-97.345821512417203 26.700589103038251,-97.363105189274393 26.710540307081217,-97.370437657013895 26.723895871871047,-97.370961403259614 26.736203954318924,-97.367557047587525 26.740393934434408,-97.364152671616353 26.758986971196869,-97.364646278833362 26.767121661774897,-97.368866408127118 26.774699404876429,-97.370437646864346 26.781508126370166,-97.368342661881371 26.795649318140761,-97.373056398392137 26.808481136684847,-97.387459455673451 26.820789208983193,-97.383531343606066 26.875520854055946,-97.385626348888096 26.88887641440536,-97.391649435788921 26.901970109878395,-97.389554460955466 26.945964918852653,-97.390340075249313 27.05228571820243,-97.389816329003565 27.067212531879022,-97.386411973331462 27.083186832972341,-97.387459455673422 27.090519300711819,-97.390601943297412 27.094185534581555,-97.390078197051665 27.156511519247964,-97.377508246555678 27.199458835730731,-97.379865109736301 27.202863196477598,-97.386673841379576 27.204696313412462,-97.382221972916923 27.229050589961044,-97.37488951532697 27.25026236588155,-97.373318276589728 27.276449754290233,-97.372896734486858 27.277942715507475,-97.367033301341749 27.298709035706306,-97.36467643816114 27.302637142698917,-97.359962701650375 27.304732132756659,-97.357605838469766 27.307874620380655,-97.362319574980518 27.32672953597509,-97.366771423144115 27.333276389420721,-97.36179581858525 27.359987519000377,-97.346607126710992 27.390364889744752,-97.336132171347501 27.402411088920228,-97.331156576938184 27.412362295500575,-97.329585328051422 27.418123524502818,-97.330894688591016 27.425455992242295,-97.329847196099536 27.434359703793774,-97.317277255753083 27.463689574751687,-97.293708603647858 27.497209429631152,-97.282971770086746 27.521563701104967,-97.267627232015485 27.541048841138782,-97.26651977444007 27.542455137362143,-97.266473727822444 27.542513609294531,-97.257831889393842 27.556392930479635,-97.261144559602045 27.562355746269706,-97.261759991311692 27.563463525096239,-97.260450620622564 27.56739163716362,-97.260303240478223 27.567589679048492,-97.252732825146552 27.577762415194865,-97.252070650242061 27.578652211895708,-97.247885553160842 27.581360217573209,-97.247618802078478 27.581532821322067,-97.236881968517352 27.598292751933528,-97.24107194863285 27.602482732049012,-97.241084821027414 27.602523494839662,-97.242643187370078 27.607458346757408,-97.231683715414945 27.631671123728168,-97.231553918442799 27.631957884363242,-97.231382612637987 27.632336350521356,-97.221955159915538 27.632860099304484,-97.221711030183002 27.632638163711842,-97.219074540339648 27.630241360463614,-97.217418907944051 27.630677052710489,-97.214098935780783 27.631550728615359,-97.200743370990949 27.650143776161688,-97.197339005169326 27.664546838517776,-97.19760088336696 27.678426154628117,-97.203474366386629 27.684532651921231,-97.20308902068453 27.688000774441392,-97.200450811776179 27.688974477466285,-97.190006537429824 27.692829222058965,-97.188284576858237 27.695272543577584,-97.170627865440125 27.720325976082009,-97.166176017276527 27.732372180332245,-97.161200407642937 27.734074342943998,-97.153606061705801 27.733288721037997,-97.147321086457822 27.735383711095739,-97.130823034043985 27.751619892924076,-97.127942424617643 27.75580987303956,-97.127680546420009 27.759999858229808,-97.125046985317312 27.763143140340585,-97.103326269871417 27.789067861139614,-97.102999946318647 27.791923200131116,-97.10255066693685 27.795854405604921,-97.102495980878558 27.796332909939515,-97.102278777379922 27.798233445813956,-97.100865886772965 27.802472121847156,-97.098874421707819 27.808446522979796,-97.095168997779496 27.812151946908138,-97.092851314507953 27.81446963017968,-97.092589446459854 27.819183356540908,-97.098874421707819 27.822849590410645,-97.104263831428213 27.822227735056668,-97.126109297533233 27.819707102786651,-97.130299287798252 27.820492727230029,-97.134489267913736 27.825206463740791,-97.132394272781227 27.827301438574235,-97.10670775348396 27.832389859144307,-97.087681973298601 27.836158807756469,-97.056712719518927 27.842293721800239,-97.055822986229373 27.843403727743151,-97.04322620548075 27.859119113080268,-97.013634476624247 27.906780143237341,-97.017955395838555 27.911493874673329,-97.016384146951765 27.917255079570445,-96.985744902767337 27.954048356415132,-96.977888688782102 27.976438572489602,-96.978805242174786 27.978271691961854,-96.980900237307296 27.978271691961854,-96.986006780964971 27.976176699366729,-96.986661461234775 27.980759491703903,-96.978281501003806 28.001709402430844,-96.967806540565562 28.020040576854303,-96.966759042999328 28.020367911280101,-96.965187799187319 28.013297317932185,-96.962569062883844 28.012380759464751,-96.952617853766114 28.01643980428749,-96.946987563862692 28.02652194996665,-96.932453562407773 28.035425661518129,-96.926430465357427 28.043412814602167,-96.929572952981431 28.051399967686208,-96.927085150701998 28.057292130712504,-96.906004298338829 28.076147047258459,-96.890946545563423 28.076801730065643,-96.886232814127425 28.084396073465374,-96.88832780925992 28.086622002621937,-96.889113433703315 28.099453823703399,-96.886887499471996 28.117130312782294,-96.879424092633712 28.131402425890027,-96.874972236857971 28.133235547899659,-96.87078225420511 28.13127149186597,-96.86462821551855 28.126295887307109,-96.857164811217643 28.115559058820768,-96.845380482627661 28.108881273888468,-96.830128556765757 28.111822717849165,-96.827049318353744 28.112416571196771,-96.816574357915513 28.119618104912195,-96.810420321766344 28.126034014184238,-96.810944073086844 28.136378030448888,-96.816836228500989 28.158048094801106,-96.820248352517055 28.163388807027481,-96.822859330626116 28.167475552598326,-96.818513748151517 28.172441936006489)))
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/geoapp/test_feeds.py b/webapp/django/contrib/gis/tests/geoapp/test_feeds.py
deleted file mode 100644
index fba424c..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/test_feeds.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import unittest
-from xml.dom import minidom
-
-from django.test import Client
-from models import City
-
-class GeoFeedTest(unittest.TestCase):
-    client = Client()
-
-    def assertChildNodes(self, elem, expected):
-        "Taken from regressiontests/syndication/tests.py."
-        actual = set([n.nodeName for n in elem.childNodes])
-        expected = set(expected)
-        self.assertEqual(actual, expected)
-
-    def test_geofeed_rss(self):
-        "Tests geographic feeds using GeoRSS over RSSv2."
-        # Uses `GEOSGeometry` in `item_geometry`
-        doc1 = minidom.parseString(self.client.get('/geoapp/feeds/rss1/').content)
-        # Uses a 2-tuple in `item_geometry`
-        doc2 = minidom.parseString(self.client.get('/geoapp/feeds/rss2/').content) 
-        feed1, feed2 = doc1.firstChild, doc2.firstChild
-
-        # Making sure the box got added to the second GeoRSS feed.
-        self.assertChildNodes(feed2.getElementsByTagName('channel')[0], 
-                              ['title', 'link', 'description', 'language', 'lastBuildDate', 'item', 'georss:box']
-                              )
-        
-        # Incrementing through the feeds.
-        for feed in [feed1, feed2]:
-            # Ensuring the georss namespace was added to the <rss> element.
-            self.assertEqual(feed.getAttribute(u'xmlns:georss'),  u'http://www.georss.org/georss')
-            chan = feed.getElementsByTagName('channel')[0]
-            items = chan.getElementsByTagName('item')
-            self.assertEqual(len(items), City.objects.count())
-                
-            # Ensuring the georss element was added to each item in the feed.
-            for item in items:
-                self.assertChildNodes(item, ['title', 'link', 'description', 'guid', 'georss:point'])
-
-    def test_geofeed_atom(self):
-        "Testing geographic feeds using GeoRSS over Atom."
-        doc1 = minidom.parseString(self.client.get('/geoapp/feeds/atom1/').content)
-        doc2 = minidom.parseString(self.client.get('/geoapp/feeds/atom2/').content)
-        feed1, feed2 = doc1.firstChild, doc2.firstChild
-
-        # Making sure the box got added to the second GeoRSS feed.
-        self.assertChildNodes(feed2, ['title', 'link', 'id', 'updated', 'entry', 'georss:box'])        
-
-        for feed in [feed1, feed2]:
-            # Ensuring the georsss namespace was added to the <feed> element.
-            self.assertEqual(feed.getAttribute(u'xmlns:georss'),  u'http://www.georss.org/georss')
-            entries = feed.getElementsByTagName('entry')
-            self.assertEqual(len(entries), City.objects.count())
-            
-            # Ensuring the georss element was added to each entry in the feed.
-            for entry in entries:
-                self.assertChildNodes(entry, ['title', 'link', 'id', 'summary', 'georss:point'])
-
-    def test_geofeed_w3c(self):
-        "Testing geographic feeds using W3C Geo."
-        doc = minidom.parseString(self.client.get('/geoapp/feeds/w3cgeo1/').content)
-        feed = doc.firstChild
-        # Ensuring the geo namespace was added to the <feed> element.
-        self.assertEqual(feed.getAttribute(u'xmlns:geo'), u'http://www.w3.org/2003/01/geo/wgs84_pos#')
-        chan = feed.getElementsByTagName('channel')[0]
-        items = chan.getElementsByTagName('item')
-        self.assertEqual(len(items), City.objects.count())
-
-        # Ensuring the geo:lat and geo:lon element was added to each item in the feed.
-        for item in items:
-            self.assertChildNodes(item, ['title', 'link', 'description', 'guid', 'geo:lat', 'geo:lon'])
-
-        # Boxes and Polygons aren't allowed in W3C Geo feeds.
-        self.assertRaises(ValueError, self.client.get, '/geoapp/feeds/w3cgeo2/') # Box in <channel>
-        self.assertRaises(ValueError, self.client.get, '/geoapp/feeds/w3cgeo3/') # Polygons in <entry>
diff --git a/webapp/django/contrib/gis/tests/geoapp/test_sitemaps.py b/webapp/django/contrib/gis/tests/geoapp/test_sitemaps.py
deleted file mode 100644
index a83e044..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/test_sitemaps.py
+++ /dev/null
@@ -1,83 +0,0 @@
-import unittest, zipfile, cStringIO
-from xml.dom import minidom
-
-from django.test import Client
-from models import City, Country
-
-class GeoSitemapTest(unittest.TestCase):
-    client = Client()
-
-    def assertChildNodes(self, elem, expected):
-        "Taken from regressiontests/syndication/tests.py."
-        actual = set([n.nodeName for n in elem.childNodes])
-        expected = set(expected)
-        self.assertEqual(actual, expected)
-
-    def test_geositemap_index(self):
-        "Tests geographic sitemap index."
-        # Getting the geo index.
-        doc = minidom.parseString(self.client.get('/geoapp/sitemap.xml').content)
-        index = doc.firstChild
-        self.assertEqual(index.getAttribute(u'xmlns'), u'http://www.sitemaps.org/schemas/sitemap/0.9')
-        self.assertEqual(3, len(index.getElementsByTagName('sitemap')))
-
-    def test_geositemap_kml(self):
-        "Tests KML/KMZ geographic sitemaps."
-        for kml_type in ('kml', 'kmz'):
-            doc = minidom.parseString(self.client.get('/geoapp/sitemaps/%s.xml' % kml_type).content)
-
-            # Ensuring the right sitemaps namespaces are present.
-            urlset = doc.firstChild
-            self.assertEqual(urlset.getAttribute(u'xmlns'), u'http://www.sitemaps.org/schemas/sitemap/0.9')
-            self.assertEqual(urlset.getAttribute(u'xmlns:geo'), u'http://www.google.com/geo/schemas/sitemap/1.0')
-        
-            urls = urlset.getElementsByTagName('url')
-            self.assertEqual(2, len(urls)) # Should only be 2 sitemaps.
-            for url in urls:
-                self.assertChildNodes(url, ['loc', 'geo:geo'])
-                # Making sure the 'geo:format' element was properly set.
-                geo_elem = url.getElementsByTagName('geo:geo')[0]
-                geo_format = geo_elem.getElementsByTagName('geo:format')[0]
-                self.assertEqual(kml_type, geo_format.childNodes[0].data)
-
-                # Getting the relative URL since we don't have a real site.
-                kml_url = url.getElementsByTagName('loc')[0].childNodes[0].data.split('http://example.com')[1]
-                
-                if kml_type == 'kml':
-                    kml_doc = minidom.parseString(self.client.get(kml_url).content)
-                elif kml_type == 'kmz':
-                    # Have to decompress KMZ before parsing.
-                    buf = cStringIO.StringIO(self.client.get(kml_url).content)
-                    zf = zipfile.ZipFile(buf)
-                    self.assertEqual(1, len(zf.filelist))
-                    self.assertEqual('doc.kml', zf.filelist[0].filename)
-                    kml_doc = minidom.parseString(zf.read('doc.kml'))
-                
-                # Ensuring the correct number of placemarks are in the KML doc.
-                if 'city' in kml_url:
-                    model = City
-                elif 'country' in kml_url:
-                    model = Country
-                self.assertEqual(model.objects.count(), len(kml_doc.getElementsByTagName('Placemark')))
-
-    def test_geositemap_georss(self):
-        "Tests GeoRSS geographic sitemaps."
-        from feeds import feed_dict
-
-        doc = minidom.parseString(self.client.get('/geoapp/sitemaps/georss.xml').content)
-   
-        # Ensuring the right sitemaps namespaces are present.
-        urlset = doc.firstChild
-        self.assertEqual(urlset.getAttribute(u'xmlns'), u'http://www.sitemaps.org/schemas/sitemap/0.9')
-        self.assertEqual(urlset.getAttribute(u'xmlns:geo'), u'http://www.google.com/geo/schemas/sitemap/1.0')
-
-        # Making sure the correct number of feed URLs were included.
-        urls = urlset.getElementsByTagName('url')
-        self.assertEqual(len(feed_dict), len(urls))
-
-        for url in urls:
-            self.assertChildNodes(url, ['loc', 'geo:geo'])
-            # Making sure the 'geo:format' element was properly set to 'georss'.
-            geo_elem = url.getElementsByTagName('geo:geo')[0]
-            geo_format = geo_elem.getElementsByTagName('geo:format')[0]
-            self.assertEqual('georss', geo_format.childNodes[0].data)
diff --git a/webapp/django/contrib/gis/tests/geoapp/tests.py b/webapp/django/contrib/gis/tests/geoapp/tests.py
deleted file mode 100644
index ff6eac9..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/tests.py
+++ /dev/null
@@ -1,568 +0,0 @@
-import os, unittest
-from models import Country, City, State, Feature, MinusOneSRID
-from django.contrib.gis import gdal
-from django.contrib.gis.db.backend import SpatialBackend
-from django.contrib.gis.geos import *
-from django.contrib.gis.measure import Distance
-from django.contrib.gis.tests.utils import no_oracle, no_postgis, oracle, postgis
-
-# TODO: Some tests depend on the success/failure of previous tests, these should
-# be decoupled.  This flag is an artifact of this problem, and makes debugging easier;
-# specifically, the DISABLE flag will disables all tests, allowing problem tests to
-# be examined individually.
-DISABLE = False
-
-class GeoModelTest(unittest.TestCase):
-    
-    def test01_initial_sql(self):
-        "Testing geographic initial SQL."
-        if DISABLE: return
-        if oracle:
-            # Oracle doesn't allow strings longer than 4000 characters
-            # in SQL files, and I'm stumped on how to use Oracle BFILE's
-            # in PLSQL, so we set up the larger geometries manually, rather
-            # than relying on the initial SQL. 
-
-            # Routine for returning the path to the data files.
-            data_dir = os.path.join(os.path.dirname(__file__), 'sql')
-            def get_file(wkt_file):
-                return os.path.join(data_dir, wkt_file)
-
-            State(name='Colorado', poly=fromfile(get_file('co.wkt'))).save()
-            State(name='Kansas', poly=fromfile(get_file('ks.wkt'))).save()
-            Country(name='Texas', mpoly=fromfile(get_file('tx.wkt'))).save()
-            Country(name='New Zealand', mpoly=fromfile(get_file('nz.wkt'))).save()
-
-        # Ensuring that data was loaded from initial SQL.
-        self.assertEqual(2, Country.objects.count())
-        self.assertEqual(8, City.objects.count())
-
-        # Oracle cannot handle NULL geometry values w/certain queries.
-        if oracle: n_state = 2
-        else: n_state = 3
-        self.assertEqual(n_state, State.objects.count())
-
-    def test02_proxy(self):
-        "Testing Lazy-Geometry support (using the GeometryProxy)."
-        if DISABLE: return
-        ## Testing on a Point
-        pnt = Point(0, 0)
-        nullcity = City(name='NullCity', point=pnt)
-        nullcity.save()
-
-        # Making sure TypeError is thrown when trying to set with an
-        #  incompatible type.
-        for bad in [5, 2.0, LineString((0, 0), (1, 1))]:
-            try:
-                nullcity.point = bad
-            except TypeError:
-                pass
-            else:
-                self.fail('Should throw a TypeError')
-
-        # Now setting with a compatible GEOS Geometry, saving, and ensuring
-        #  the save took, notice no SRID is explicitly set.
-        new = Point(5, 23)
-        nullcity.point = new
-
-        # Ensuring that the SRID is automatically set to that of the 
-        #  field after assignment, but before saving.
-        self.assertEqual(4326, nullcity.point.srid)
-        nullcity.save()
-
-        # Ensuring the point was saved correctly after saving
-        self.assertEqual(new, City.objects.get(name='NullCity').point)
-
-        # Setting the X and Y of the Point
-        nullcity.point.x = 23
-        nullcity.point.y = 5
-        # Checking assignments pre & post-save.
-        self.assertNotEqual(Point(23, 5), City.objects.get(name='NullCity').point)
-        nullcity.save()
-        self.assertEqual(Point(23, 5), City.objects.get(name='NullCity').point)
-        nullcity.delete()
-
-        ## Testing on a Polygon
-        shell = LinearRing((0, 0), (0, 100), (100, 100), (100, 0), (0, 0))
-        inner = LinearRing((40, 40), (40, 60), (60, 60), (60, 40), (40, 40))
-
-        # Creating a State object using a built Polygon
-        ply = Polygon(shell, inner)
-        nullstate = State(name='NullState', poly=ply)
-        self.assertEqual(4326, nullstate.poly.srid) # SRID auto-set from None
-        nullstate.save()
-
-        ns = State.objects.get(name='NullState')
-        self.assertEqual(ply, ns.poly)
-        
-        # Testing the `ogr` and `srs` lazy-geometry properties.
-        if gdal.HAS_GDAL:
-            self.assertEqual(True, isinstance(ns.poly.ogr, gdal.OGRGeometry))
-            self.assertEqual(ns.poly.wkb, ns.poly.ogr.wkb)
-            self.assertEqual(True, isinstance(ns.poly.srs, gdal.SpatialReference))
-            self.assertEqual('WGS 84', ns.poly.srs.name)
-
-        # Changing the interior ring on the poly attribute.
-        new_inner = LinearRing((30, 30), (30, 70), (70, 70), (70, 30), (30, 30))
-        ns.poly[1] = new_inner
-        ply[1] = new_inner
-        self.assertEqual(4326, ns.poly.srid)
-        ns.save()
-        self.assertEqual(ply, State.objects.get(name='NullState').poly)
-        ns.delete()
-
-    @no_oracle # Oracle does not support KML.
-    def test03a_kml(self):
-        "Testing KML output from the database using GeoManager.kml()."
-        if DISABLE: return
-        # Should throw a TypeError when trying to obtain KML from a
-        #  non-geometry field.
-        qs = City.objects.all()
-        self.assertRaises(TypeError, qs.kml, 'name')
-
-        # The reference KML depends on the version of PostGIS used 
-        # (the output stopped including altitude in 1.3.3).
-        major, minor1, minor2 = SpatialBackend.version
-        ref_kml1 = '<Point><coordinates>-104.609252,38.255001,0</coordinates></Point>'
-        ref_kml2 = '<Point><coordinates>-104.609252,38.255001</coordinates></Point>'
-        if major == 1:
-            if minor1 > 3 or (minor1 == 3 and minor2 >= 3): ref_kml = ref_kml2
-            else: ref_kml = ref_kml1
-        else:
-            ref_kml = ref_kml2
-
-        # Ensuring the KML is as expected.
-        ptown1 = City.objects.kml(field_name='point', precision=9).get(name='Pueblo')
-        ptown2 = City.objects.kml(precision=9).get(name='Pueblo')
-        for ptown in [ptown1, ptown2]:
-            self.assertEqual(ref_kml, ptown.kml)
-
-    def test03b_gml(self):
-        "Testing GML output from the database using GeoManager.gml()."
-        if DISABLE: return
-        # Should throw a TypeError when tyring to obtain GML from a
-        #  non-geometry field.
-        qs = City.objects.all()
-        self.assertRaises(TypeError, qs.gml, field_name='name')
-        ptown1 = City.objects.gml(field_name='point', precision=9).get(name='Pueblo')
-        ptown2 = City.objects.gml(precision=9).get(name='Pueblo')
-
-        if oracle:
-            # No precision parameter for Oracle :-/
-            import re
-            gml_regex = re.compile(r'<gml:Point srsName="SDO:4326" xmlns:gml="http://www.opengis.net/gml"><gml:coordinates decimal="\." cs="," ts=" ">-104.60925199\d+,38.25500\d+ </gml:coordinates></gml:Point>')
-            for ptown in [ptown1, ptown2]:
-                self.assertEqual(True, bool(gml_regex.match(ptown.gml)))
-        else:
-            for ptown in [ptown1, ptown2]:
-                self.assertEqual('<gml:Point srsName="EPSG:4326"><gml:coordinates>-104.609252,38.255001</gml:coordinates></gml:Point>', ptown.gml)
-
-    def test04_transform(self):
-        "Testing the transform() GeoManager method."
-        if DISABLE: return
-        # Pre-transformed points for Houston and Pueblo.
-        htown = fromstr('POINT(1947516.83115183 6322297.06040572)', srid=3084)
-        ptown = fromstr('POINT(992363.390841912 481455.395105533)', srid=2774)
-        prec = 3 # Precision is low due to version variations in PROJ and GDAL.
-
-        # Asserting the result of the transform operation with the values in
-        #  the pre-transformed points.  Oracle does not have the 3084 SRID.
-        if not oracle:
-            h = City.objects.transform(htown.srid).get(name='Houston')
-            self.assertEqual(3084, h.point.srid)
-            self.assertAlmostEqual(htown.x, h.point.x, prec)
-            self.assertAlmostEqual(htown.y, h.point.y, prec)
-
-        p1 = City.objects.transform(ptown.srid, field_name='point').get(name='Pueblo')
-        p2 = City.objects.transform(srid=ptown.srid).get(name='Pueblo')
-        for p in [p1, p2]:
-            self.assertEqual(2774, p.point.srid)
-            self.assertAlmostEqual(ptown.x, p.point.x, prec)
-            self.assertAlmostEqual(ptown.y, p.point.y, prec)
-
-    @no_oracle # Most likely can do this in Oracle, however, it is not yet implemented (patches welcome!)
-    def test05_extent(self):
-        "Testing the `extent` GeoQuerySet method."
-        if DISABLE: return
-        # Reference query:
-        # `SELECT ST_extent(point) FROM geoapp_city WHERE (name='Houston' or name='Dallas');`
-        #   =>  BOX(-96.8016128540039 29.7633724212646,-95.3631439208984 32.7820587158203)
-        expected = (-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)
-
-        qs = City.objects.filter(name__in=('Houston', 'Dallas'))
-        extent = qs.extent()
-
-        for val, exp in zip(extent, expected):
-            self.assertAlmostEqual(exp, val, 8)
-
-    @no_oracle
-    def test06_make_line(self):
-        "Testing the `make_line` GeoQuerySet method."
-        if DISABLE: return
-        # Ensuring that a `TypeError` is raised on models without PointFields.
-        self.assertRaises(TypeError, State.objects.make_line)
-        self.assertRaises(TypeError, Country.objects.make_line)
-        # Reference query:
-        # SELECT AsText(ST_MakeLine(geoapp_city.point)) FROM geoapp_city;
-        self.assertEqual(GEOSGeometry('LINESTRING(-95.363151 29.763374,-96.801611 32.782057,-97.521157 34.464642,174.783117 -41.315268,-104.609252 38.255001,-95.23506 38.971823,-87.650175 41.850385,-123.305196 48.462611)', srid=4326),
-                         City.objects.make_line())
-
-    def test09_disjoint(self):
-        "Testing the `disjoint` lookup type."
-        if DISABLE: return
-        ptown = City.objects.get(name='Pueblo')
-        qs1 = City.objects.filter(point__disjoint=ptown.point)
-        self.assertEqual(7, qs1.count())
-
-        if not postgis:
-            # TODO: Do NULL columns bork queries on PostGIS?  The following
-            # error is encountered:
-            #  psycopg2.ProgrammingError: invalid memory alloc request size 4294957297
-            qs2 = State.objects.filter(poly__disjoint=ptown.point)
-            self.assertEqual(1, qs2.count())
-            self.assertEqual('Kansas', qs2[0].name)
-
-    def test10_contains_contained(self):
-        "Testing the 'contained', 'contains', and 'bbcontains' lookup types."
-        if DISABLE: return
-        # Getting Texas, yes we were a country -- once ;)
-        texas = Country.objects.get(name='Texas')
-        
-        # Seeing what cities are in Texas, should get Houston and Dallas,
-        #  and Oklahoma City because 'contained' only checks on the
-        #  _bounding box_ of the Geometries.
-        if not oracle:
-            qs = City.objects.filter(point__contained=texas.mpoly)
-            self.assertEqual(3, qs.count())
-            cities = ['Houston', 'Dallas', 'Oklahoma City']
-            for c in qs: self.assertEqual(True, c.name in cities)
-
-        # Pulling out some cities.
-        houston = City.objects.get(name='Houston')
-        wellington = City.objects.get(name='Wellington')
-        pueblo = City.objects.get(name='Pueblo')
-        okcity = City.objects.get(name='Oklahoma City')
-        lawrence = City.objects.get(name='Lawrence')
-
-        # Now testing contains on the countries using the points for
-        #  Houston and Wellington.
-        tx = Country.objects.get(mpoly__contains=houston.point) # Query w/GEOSGeometry
-        nz = Country.objects.get(mpoly__contains=wellington.point.hex) # Query w/EWKBHEX
-        ks = State.objects.get(poly__contains=lawrence.point)
-        self.assertEqual('Texas', tx.name)
-        self.assertEqual('New Zealand', nz.name)
-        self.assertEqual('Kansas', ks.name)
-
-        # Pueblo and Oklahoma City (even though OK City is within the bounding box of Texas)
-        #  are not contained in Texas or New Zealand.
-        self.assertEqual(0, len(Country.objects.filter(mpoly__contains=pueblo.point))) # Query w/GEOSGeometry object
-        self.assertEqual(0, len(Country.objects.filter(mpoly__contains=okcity.point.wkt))) # Qeury w/WKT
-
-        # OK City is contained w/in bounding box of Texas.
-        if not oracle:
-            qs = Country.objects.filter(mpoly__bbcontains=okcity.point)
-            self.assertEqual(1, len(qs))
-            self.assertEqual('Texas', qs[0].name)
-
-    def test11_lookup_insert_transform(self):
-        "Testing automatic transform for lookups and inserts."
-        if DISABLE: return
-        # San Antonio in 'WGS84' (SRID 4326)
-        sa_4326 = 'POINT (-98.493183 29.424170)'
-        wgs_pnt = fromstr(sa_4326, srid=4326) # Our reference point in WGS84
-
-        # Oracle doesn't have SRID 3084, using 41157.
-        if oracle:
-            # San Antonio in 'Texas 4205, Southern Zone (1983, meters)' (SRID 41157)
-            # Used the following Oracle SQL to get this value:
-            #  SELECT SDO_UTIL.TO_WKTGEOMETRY(SDO_CS.TRANSFORM(SDO_GEOMETRY('POINT (-98.493183 29.424170)', 4326), 41157)) FROM DUAL;
-            nad_wkt  = 'POINT (300662.034646583 5416427.45974934)'
-            nad_srid = 41157
-        else:
-            # San Antonio in 'NAD83(HARN) / Texas Centric Lambert Conformal' (SRID 3084)
-            nad_wkt = 'POINT (1645978.362408288754523 6276356.025927528738976)' # Used ogr.py in gdal 1.4.1 for this transform
-            nad_srid = 3084
-
-        # Constructing & querying with a point from a different SRID. Oracle
-        # `SDO_OVERLAPBDYINTERSECT` operates differently from
-        # `ST_Intersects`, so contains is used instead.
-        nad_pnt = fromstr(nad_wkt, srid=nad_srid)
-        if oracle:
-            tx = Country.objects.get(mpoly__contains=nad_pnt) 
-        else:
-            tx = Country.objects.get(mpoly__intersects=nad_pnt)
-        self.assertEqual('Texas', tx.name)
-        
-        # Creating San Antonio.  Remember the Alamo.
-        sa = City(name='San Antonio', point=nad_pnt)
-        sa.save()
-        
-        # Now verifying that San Antonio was transformed correctly
-        sa = City.objects.get(name='San Antonio')
-        self.assertAlmostEqual(wgs_pnt.x, sa.point.x, 6)
-        self.assertAlmostEqual(wgs_pnt.y, sa.point.y, 6)
-
-        # If the GeometryField SRID is -1, then we shouldn't perform any
-        # transformation if the SRID of the input geometry is different.
-        m1 = MinusOneSRID(geom=Point(17, 23, srid=4326))
-        m1.save()
-        self.assertEqual(-1, m1.geom.srid)
-
-    # Oracle does not support NULL geometries in its spatial index for
-    # some routines (e.g., SDO_GEOM.RELATE).
-    @no_oracle
-    def test12_null_geometries(self):
-        "Testing NULL geometry support, and the `isnull` lookup type."
-        if DISABLE: return
-        # Querying for both NULL and Non-NULL values.
-        nullqs = State.objects.filter(poly__isnull=True)
-        validqs = State.objects.filter(poly__isnull=False)
-
-        # Puerto Rico should be NULL (it's a commonwealth unincorporated territory)
-        self.assertEqual(1, len(nullqs))
-        self.assertEqual('Puerto Rico', nullqs[0].name)
-        
-        # The valid states should be Colorado & Kansas
-        self.assertEqual(2, len(validqs))
-        state_names = [s.name for s in validqs]
-        self.assertEqual(True, 'Colorado' in state_names)
-        self.assertEqual(True, 'Kansas' in state_names)
-
-        # Saving another commonwealth w/a NULL geometry.
-        if not oracle:
-            # TODO: Fix saving w/NULL geometry on Oracle.
-            State(name='Northern Mariana Islands', poly=None).save()
-
-    @no_oracle # No specific `left` or `right` operators in Oracle.
-    def test13_left_right(self):
-        "Testing the 'left' and 'right' lookup types."
-        if DISABLE: return
-        # Left: A << B => true if xmax(A) < xmin(B)
-        # Right: A >> B => true if xmin(A) > xmax(B) 
-        #  See: BOX2D_left() and BOX2D_right() in lwgeom_box2dfloat4.c in PostGIS source.
-        
-        # Getting the borders for Colorado & Kansas
-        co_border = State.objects.get(name='Colorado').poly
-        ks_border = State.objects.get(name='Kansas').poly
-
-        # Note: Wellington has an 'X' value of 174, so it will not be considered
-        #  to the left of CO.
-        
-        # These cities should be strictly to the right of the CO border.
-        cities = ['Houston', 'Dallas', 'San Antonio', 'Oklahoma City', 
-                  'Lawrence', 'Chicago', 'Wellington']
-        qs = City.objects.filter(point__right=co_border)
-        self.assertEqual(7, len(qs))
-        for c in qs: self.assertEqual(True, c.name in cities)
-
-        # These cities should be strictly to the right of the KS border.
-        cities = ['Chicago', 'Wellington']
-        qs = City.objects.filter(point__right=ks_border)
-        self.assertEqual(2, len(qs))
-        for c in qs: self.assertEqual(True, c.name in cities)
-
-        # Note: Wellington has an 'X' value of 174, so it will not be considered
-        #  to the left of CO.
-        vic = City.objects.get(point__left=co_border)
-        self.assertEqual('Victoria', vic.name)
-        
-        cities = ['Pueblo', 'Victoria']
-        qs = City.objects.filter(point__left=ks_border)
-        self.assertEqual(2, len(qs))
-        for c in qs: self.assertEqual(True, c.name in cities)
-
-    def test14_equals(self):
-        "Testing the 'same_as' and 'equals' lookup types."
-        if DISABLE: return
-        pnt = fromstr('POINT (-95.363151 29.763374)', srid=4326)
-        c1 = City.objects.get(point=pnt)
-        c2 = City.objects.get(point__same_as=pnt)
-        c3 = City.objects.get(point__equals=pnt)
-        for c in [c1, c2, c3]: self.assertEqual('Houston', c.name)
-
-    def test15_relate(self):
-        "Testing the 'relate' lookup type."
-        if DISABLE: return
-        # To make things more interesting, we will have our Texas reference point in 
-        # different SRIDs.
-        pnt1 = fromstr('POINT (649287.0363174 4177429.4494686)', srid=2847)
-        pnt2 = fromstr('POINT(-98.4919715741052 29.4333344025053)', srid=4326)
-
-        # Not passing in a geometry as first param shoud 
-        # raise a type error when initializing the GeoQuerySet
-        self.assertRaises(TypeError, Country.objects.filter, mpoly__relate=(23, 'foo'))
-        # Making sure the right exception is raised for the given
-        # bad arguments.
-        for bad_args, e in [((pnt1, 0), TypeError), ((pnt2, 'T*T***FF*', 0), ValueError)]:
-            qs = Country.objects.filter(mpoly__relate=bad_args)
-            self.assertRaises(e, qs.count)
-
-        # Relate works differently for the different backends.
-        if postgis:
-            contains_mask = 'T*T***FF*'
-            within_mask = 'T*F**F***'
-            intersects_mask = 'T********'
-        elif oracle:
-            contains_mask = 'contains'
-            within_mask = 'inside'
-            # TODO: This is not quite the same as the PostGIS mask above
-            intersects_mask = 'overlapbdyintersect'
-
-        # Testing contains relation mask.
-        self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt1, contains_mask)).name)
-        self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt2, contains_mask)).name)
-
-        # Testing within relation mask.
-        ks = State.objects.get(name='Kansas')
-        self.assertEqual('Lawrence', City.objects.get(point__relate=(ks.poly, within_mask)).name)
-
-        # Testing intersection relation mask.
-        if not oracle:
-            self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt1, intersects_mask)).name)
-            self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt2, intersects_mask)).name)
-            self.assertEqual('Lawrence', City.objects.get(point__relate=(ks.poly, intersects_mask)).name)
-
-    def test16_createnull(self):
-        "Testing creating a model instance and the geometry being None"
-        if DISABLE: return
-        c = City()
-        self.assertEqual(c.point, None)
-
-    def test17_unionagg(self):
-        "Testing the `unionagg` (aggregate union) GeoManager method."
-        if DISABLE: return
-        tx = Country.objects.get(name='Texas').mpoly
-        # Houston, Dallas, San Antonio -- Oracle has different order.
-        union1 = fromstr('MULTIPOINT(-98.493183 29.424170,-96.801611 32.782057,-95.363151 29.763374)')
-        union2 = fromstr('MULTIPOINT(-96.801611 32.782057,-95.363151 29.763374,-98.493183 29.424170)')
-        qs = City.objects.filter(point__within=tx)
-        self.assertRaises(TypeError, qs.unionagg, 'name')
-        # Using `field_name` keyword argument in one query and specifying an
-        # order in the other (which should not be used because this is
-        # an aggregate method on a spatial column)
-        u1 = qs.unionagg(field_name='point') 
-        u2 = qs.order_by('name').unionagg()
-        tol = 0.00001
-        if SpatialBackend.oracle:
-            union = union2
-        else:
-            union = union1
-        self.assertEqual(True, union.equals_exact(u1, tol))
-        self.assertEqual(True, union.equals_exact(u2, tol))
-        qs = City.objects.filter(name='NotACity')
-        self.assertEqual(None, qs.unionagg(field_name='point'))
-
-    def test18_geometryfield(self):
-        "Testing GeometryField."
-        if DISABLE: return
-        Feature(name='Point', geom=Point(1, 1)).save()
-        Feature(name='LineString', geom=LineString((0, 0), (1, 1), (5, 5))).save()
-        Feature(name='Polygon', geom=Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0)))).save()
-        Feature(name='GeometryCollection', 
-                geom=GeometryCollection(Point(2, 2), LineString((0, 0), (2, 2)), 
-                                        Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0))))).save()
-
-        f_1 = Feature.objects.get(name='Point')
-        self.assertEqual(True, isinstance(f_1.geom, Point))
-        self.assertEqual((1.0, 1.0), f_1.geom.tuple)
-        f_2 = Feature.objects.get(name='LineString')
-        self.assertEqual(True, isinstance(f_2.geom, LineString))
-        self.assertEqual(((0.0, 0.0), (1.0, 1.0), (5.0, 5.0)), f_2.geom.tuple)
-
-        f_3 = Feature.objects.get(name='Polygon')
-        self.assertEqual(True, isinstance(f_3.geom, Polygon))
-        f_4 = Feature.objects.get(name='GeometryCollection')
-        self.assertEqual(True, isinstance(f_4.geom, GeometryCollection))
-        self.assertEqual(f_3.geom, f_4.geom[2])
-    
-    def test19_centroid(self):
-        "Testing the `centroid` GeoQuerySet method."
-        if DISABLE: return
-        qs = State.objects.exclude(poly__isnull=True).centroid()
-        if oracle: tol = 0.1
-        else: tol = 0.000000001
-        for s in qs:
-            self.assertEqual(True, s.poly.centroid.equals_exact(s.centroid, tol))
-
-    def test20_pointonsurface(self):
-        "Testing the `point_on_surface` GeoQuerySet method."
-        if DISABLE: return
-        # Reference values.
-        if SpatialBackend.oracle:
-            # SELECT SDO_UTIL.TO_WKTGEOMETRY(SDO_GEOM.SDO_POINTONSURFACE(GEOAPP_COUNTRY.MPOLY, 0.05)) FROM GEOAPP_COUNTRY;
-            ref = {'New Zealand' : fromstr('POINT (174.616364 -36.100861)', srid=4326),
-                   'Texas' : fromstr('POINT (-103.002434 36.500397)', srid=4326),
-                   }
-        elif SpatialBackend.postgis:
-            # Using GEOSGeometry to compute the reference point on surface values 
-            # -- since PostGIS also uses GEOS these should be the same.
-            ref = {'New Zealand' : Country.objects.get(name='New Zealand').mpoly.point_on_surface,
-                   'Texas' : Country.objects.get(name='Texas').mpoly.point_on_surface
-                   }
-        for cntry in Country.objects.point_on_surface():
-            self.assertEqual(ref[cntry.name], cntry.point_on_surface)
-
-    @no_oracle
-    def test21_scale(self):
-        "Testing the `scale` GeoQuerySet method."
-        if DISABLE: return
-        xfac, yfac = 2, 3
-        qs = Country.objects.scale(xfac, yfac, model_att='scaled')
-        for c in qs:
-            for p1, p2 in zip(c.mpoly, c.scaled):
-                for r1, r2 in zip(p1, p2):
-                    for c1, c2 in zip(r1.coords, r2.coords):
-                        self.assertEqual(c1[0] * xfac, c2[0])
-                        self.assertEqual(c1[1] * yfac, c2[1])
-
-    @no_oracle
-    def test22_translate(self):
-        "Testing the `translate` GeoQuerySet method."
-        if DISABLE: return
-        xfac, yfac = 5, -23
-        qs = Country.objects.translate(xfac, yfac, model_att='translated')
-        for c in qs:
-            for p1, p2 in zip(c.mpoly, c.translated):
-                for r1, r2 in zip(p1, p2):
-                    for c1, c2 in zip(r1.coords, r2.coords):
-                        self.assertEqual(c1[0] + xfac, c2[0])
-                        self.assertEqual(c1[1] + yfac, c2[1])
-
-    def test23_numgeom(self):
-        "Testing the `num_geom` GeoQuerySet method."
-        if DISABLE: return
-        # Both 'countries' only have two geometries.
-        for c in Country.objects.num_geom(): self.assertEqual(2, c.num_geom)
-        for c in City.objects.filter(point__isnull=False).num_geom(): 
-            # Oracle will return 1 for the number of geometries on non-collections,
-            # whereas PostGIS will return None.
-            if postgis: self.assertEqual(None, c.num_geom)
-            else: self.assertEqual(1, c.num_geom)
-
-    def test24_numpoints(self):
-        "Testing the `num_points` GeoQuerySet method."
-        if DISABLE: return
-        for c in Country.objects.num_points(): self.assertEqual(c.mpoly.num_points, c.num_points)
-        if postgis:
-            # Oracle cannot count vertices in Point geometries.
-            for c in City.objects.num_points(): self.assertEqual(1, c.num_points)
-
-    @no_oracle
-    def test25_geoset(self):
-        "Testing the `difference`, `intersection`, `sym_difference`, and `union` GeoQuerySet methods."
-        if DISABLE: return
-        geom = Point(5, 23)
-        for c in Country.objects.all().intersection(geom).difference(geom).sym_difference(geom).union(geom):
-            self.assertEqual(c.mpoly.difference(geom), c.difference)
-            self.assertEqual(c.mpoly.intersection(geom), c.intersection)
-            self.assertEqual(c.mpoly.sym_difference(geom), c.sym_difference)
-            self.assertEqual(c.mpoly.union(geom), c.union)
-
-from test_feeds import GeoFeedTest
-from test_sitemaps import GeoSitemapTest
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(GeoModelTest))
-    s.addTest(unittest.makeSuite(GeoFeedTest))
-    s.addTest(unittest.makeSuite(GeoSitemapTest))
-    return s
diff --git a/webapp/django/contrib/gis/tests/geoapp/tests_mysql.py b/webapp/django/contrib/gis/tests/geoapp/tests_mysql.py
deleted file mode 100644
index 040130c..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/tests_mysql.py
+++ /dev/null
@@ -1,183 +0,0 @@
-"""
- A limited test module is used for a limited spatial database.
-"""
-import os, unittest
-from models import Country, City, State, Feature
-from django.contrib.gis import gdal
-from django.contrib.gis.geos import *
-from django.core.exceptions import ImproperlyConfigured
-
-class GeoModelTest(unittest.TestCase):
-    
-    def test01_initial_sql(self):
-        "Testing geographic initial SQL."
-        # Ensuring that data was loaded from initial SQL.
-        self.assertEqual(2, Country.objects.count())
-        self.assertEqual(8, City.objects.count())
-        self.assertEqual(2, State.objects.count())
-
-    def test02_proxy(self):
-        "Testing Lazy-Geometry support (using the GeometryProxy)."
-        #### Testing on a Point
-        pnt = Point(0, 0)
-        nullcity = City(name='NullCity', point=pnt)
-        nullcity.save()
-
-        # Making sure TypeError is thrown when trying to set with an
-        #  incompatible type.
-        for bad in [5, 2.0, LineString((0, 0), (1, 1))]:
-            try:
-                nullcity.point = bad
-            except TypeError:
-                pass
-            else:
-                self.fail('Should throw a TypeError')
-
-        # Now setting with a compatible GEOS Geometry, saving, and ensuring
-        #  the save took, notice no SRID is explicitly set.
-        new = Point(5, 23)
-        nullcity.point = new
-
-        # Ensuring that the SRID is automatically set to that of the 
-        #  field after assignment, but before saving.
-        self.assertEqual(4326, nullcity.point.srid)
-        nullcity.save()
-
-        # Ensuring the point was saved correctly after saving
-        self.assertEqual(new, City.objects.get(name='NullCity').point)
-
-        # Setting the X and Y of the Point
-        nullcity.point.x = 23
-        nullcity.point.y = 5
-        # Checking assignments pre & post-save.
-        self.assertNotEqual(Point(23, 5), City.objects.get(name='NullCity').point)
-        nullcity.save()
-        self.assertEqual(Point(23, 5), City.objects.get(name='NullCity').point)
-        nullcity.delete()
-
-        #### Testing on a Polygon
-        shell = LinearRing((0, 0), (0, 100), (100, 100), (100, 0), (0, 0))
-        inner = LinearRing((40, 40), (40, 60), (60, 60), (60, 40), (40, 40))
-
-        # Creating a State object using a built Polygon
-        ply = Polygon(shell, inner)
-        nullstate = State(name='NullState', poly=ply)
-        self.assertEqual(4326, nullstate.poly.srid) # SRID auto-set from None
-        nullstate.save()
-
-        ns = State.objects.get(name='NullState')
-        self.assertEqual(ply, ns.poly)
-        
-        # Testing the `ogr` and `srs` lazy-geometry properties.
-        if gdal.HAS_GDAL:
-            self.assertEqual(True, isinstance(ns.poly.ogr, gdal.OGRGeometry))
-            self.assertEqual(ns.poly.wkb, ns.poly.ogr.wkb)
-            self.assertEqual(True, isinstance(ns.poly.srs, gdal.SpatialReference))
-            self.assertEqual('WGS 84', ns.poly.srs.name)
-
-        # Changing the interior ring on the poly attribute.
-        new_inner = LinearRing((30, 30), (30, 70), (70, 70), (70, 30), (30, 30))
-        ns.poly[1] = new_inner
-        ply[1] = new_inner
-        self.assertEqual(4326, ns.poly.srid)
-        ns.save()
-        self.assertEqual(ply, State.objects.get(name='NullState').poly)
-        ns.delete()
-
-    def test03_contains_contained(self):
-        "Testing the 'contained', 'contains', and 'bbcontains' lookup types."
-        # Getting Texas, yes we were a country -- once ;)
-        texas = Country.objects.get(name='Texas')
-        
-        # Seeing what cities are in Texas, should get Houston and Dallas,
-        #  and Oklahoma City because MySQL 'within' only checks on the
-        #  _bounding box_ of the Geometries.
-        qs = City.objects.filter(point__within=texas.mpoly)
-        self.assertEqual(3, qs.count())
-        cities = ['Houston', 'Dallas', 'Oklahoma City']
-        for c in qs: self.assertEqual(True, c.name in cities)
-
-        # Pulling out some cities.
-        houston = City.objects.get(name='Houston')
-        wellington = City.objects.get(name='Wellington')
-        pueblo = City.objects.get(name='Pueblo')
-        okcity = City.objects.get(name='Oklahoma City')
-        lawrence = City.objects.get(name='Lawrence')
-
-        # Now testing contains on the countries using the points for
-        #  Houston and Wellington.
-        tx = Country.objects.get(mpoly__contains=houston.point) # Query w/GEOSGeometry
-        nz = Country.objects.get(mpoly__contains=wellington.point.hex) # Query w/EWKBHEX
-        ks = State.objects.get(poly__contains=lawrence.point)
-        self.assertEqual('Texas', tx.name)
-        self.assertEqual('New Zealand', nz.name)
-        self.assertEqual('Kansas', ks.name)
-
-        # Pueblo is not contained in Texas or New Zealand.
-        self.assertEqual(0, len(Country.objects.filter(mpoly__contains=pueblo.point))) # Query w/GEOSGeometry object
-
-        # OK City is contained w/in bounding box of Texas.
-        qs = Country.objects.filter(mpoly__bbcontains=okcity.point)
-        self.assertEqual(1, len(qs))
-        self.assertEqual('Texas', qs[0].name)
-
-    def test04_disjoint(self):
-        "Testing the `disjoint` lookup type."
-        ptown = City.objects.get(name='Pueblo')
-        qs1 = City.objects.filter(point__disjoint=ptown.point)
-        self.assertEqual(7, qs1.count())
-        # TODO: This query should work in MySQL, but it appears the
-        # `MBRDisjoint` function doesn't work properly (I went down
-        # to the SQL level for debugging and still got bogus answers).
-        #qs2 = State.objects.filter(poly__disjoint=ptown.point)
-        #self.assertEqual(1, qs2.count())
-        #self.assertEqual('Kansas', qs2[0].name)
-
-    def test05_equals(self):
-        "Testing the 'same_as' and 'equals' lookup types."
-        pnt = fromstr('POINT (-95.363151 29.763374)', srid=4326)
-        c1 = City.objects.get(point=pnt)
-        c2 = City.objects.get(point__same_as=pnt)
-        c3 = City.objects.get(point__equals=pnt)
-        for c in [c1, c2, c3]: self.assertEqual('Houston', c.name)
-
-    def test06_geometryfield(self):
-        "Testing GeometryField."
-        f1 = Feature(name='Point', geom=Point(1, 1))
-        f2 = Feature(name='LineString', geom=LineString((0, 0), (1, 1), (5, 5)))
-        f3 = Feature(name='Polygon', geom=Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0))))
-        f4 = Feature(name='GeometryCollection', 
-                     geom=GeometryCollection(Point(2, 2), LineString((0, 0), (2, 2)), 
-                                             Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0)))))
-        f1.save()
-        f2.save()
-        f3.save()
-        f4.save()
-
-        f_1 = Feature.objects.get(name='Point')
-        self.assertEqual(True, isinstance(f_1.geom, Point))
-        self.assertEqual((1.0, 1.0), f_1.geom.tuple)
-        f_2 = Feature.objects.get(name='LineString')
-        self.assertEqual(True, isinstance(f_2.geom, LineString))
-        self.assertEqual(((0.0, 0.0), (1.0, 1.0), (5.0, 5.0)), f_2.geom.tuple)
-
-        f_3 = Feature.objects.get(name='Polygon')
-        self.assertEqual(True, isinstance(f_3.geom, Polygon))
-        f_4 = Feature.objects.get(name='GeometryCollection')
-        self.assertEqual(True, isinstance(f_4.geom, GeometryCollection))
-        self.assertEqual(f_3.geom, f_4.geom[2])
-    
-    def test07_mysql_limitations(self):
-        "Testing that union(), kml(), gml() raise exceptions."
-        self.assertRaises(ImproperlyConfigured, City.objects.union, Point(5, 23), field_name='point')
-        self.assertRaises(ImproperlyConfigured, State.objects.all().kml, field_name='poly')
-        self.assertRaises(ImproperlyConfigured, Country.objects.all().gml, field_name='mpoly')
-
-from test_feeds import GeoFeedTest
-from test_sitemaps import GeoSitemapTest
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(GeoModelTest))
-    s.addTest(unittest.makeSuite(GeoFeedTest))
-    s.addTest(unittest.makeSuite(GeoSitemapTest))
-    return s
diff --git a/webapp/django/contrib/gis/tests/geoapp/urls.py b/webapp/django/contrib/gis/tests/geoapp/urls.py
deleted file mode 100644
index edaf280..0000000
--- a/webapp/django/contrib/gis/tests/geoapp/urls.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.conf.urls.defaults import *
-from feeds import feed_dict
-
-urlpatterns = patterns('',
-    (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feed_dict}),
-)
-
-from sitemaps import sitemaps
-urlpatterns += patterns('django.contrib.gis.sitemaps.views',
-    (r'^sitemap.xml$', 'index', {'sitemaps' : sitemaps}),
-    (r'^sitemaps/(?P<section>\w+)\.xml$', 'sitemap', {'sitemaps' : sitemaps}),
-    (r'^sitemaps/kml/(?P<label>\w+)/(?P<model>\w+)/(?P<field_name>\w+)\.kml$', 'kml'),
-    (r'^sitemaps/kml/(?P<label>\w+)/(?P<model>\w+)/(?P<field_name>\w+)\.kmz$', 'kmz'),                
-)
diff --git a/webapp/django/contrib/gis/tests/geometries.py b/webapp/django/contrib/gis/tests/geometries.py
deleted file mode 100644
index e9bc6f6..0000000
--- a/webapp/django/contrib/gis/tests/geometries.py
+++ /dev/null
@@ -1,157 +0,0 @@
-import re
-
-wkt_regex = re.compile(r'^(?P<type>[A-Z]+) ?\(')
-
-class TestGeom:
-    "The Test Geometry class container."
-    def __init__(self, wkt, **kwargs):
-        self.wkt = wkt
-
-        self.bad = kwargs.pop('bad', False)
-
-        if not self.bad:
-            m = wkt_regex.match(wkt)
-            if not m:
-                raise Exception, 'Improper WKT: "%s"' % wkt
-            self.geo_type = m.group('type')
-
-        for key, value in kwargs.items():
-            setattr(self, key, value)
-
-# For the old tests
-swig_geoms = (TestGeom('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))', ncoords=5),
-              TestGeom('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0), (10 10, 10 90, 90 90, 90 10, 10 10) ))', ncoords=10),
-              )
-
-# Testing WKT & HEX
-hex_wkt = (TestGeom('POINT(0 1)', hex='01010000000000000000000000000000000000F03F'),
-           TestGeom('LINESTRING(0 1, 2 3, 4 5)', hex='0102000000030000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000001440'),
-           TestGeom('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', hex='010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000'),
-           TestGeom('MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)', hex='010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000'),
-           TestGeom('MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20))', hex='01050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440'),
-           TestGeom('MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25)))', hex='010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A40000000000000394000000000000039400000000000003940'),
-           TestGeom('GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))),MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)),MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0))', hex='010700000003000000010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A4000000000000039400000000000003940000000000000394001050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000'),
-           )
-
-# WKT, GML, KML output
-wkt_out = (TestGeom('POINT (110 130)', ewkt='POINT (110.0000000000000000 130.0000000000000000)', kml='<Point><coordinates>110.0,130.0,0</coordinates></Point>', gml='<gml:Point><gml:coordinates>110,130</gml:coordinates></gml:Point>'),
-           TestGeom('LINESTRING (40 40,50 130,130 130)', ewkt='LINESTRING (40.0000000000000000 40.0000000000000000, 50.0000000000000000 130.0000000000000000, 130.0000000000000000 130.0000000000000000)', kml='<LineString><coordinates>40.0,40.0,0 50.0,130.0,0 130.0,130.0,0</coordinates></LineString>', gml='<gml:LineString><gml:coordinates>40,40 50,130 130,130</gml:coordinates></gml:LineString>'),
-           TestGeom('POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))', ewkt='POLYGON ((150.0000000000000000 150.0000000000000000, 410.0000000000000000 150.0000000000000000, 280.0000000000000000 20.0000000000000000, 20.0000000000000000 20.0000000000000000, 150.0000000000000000 150.0000000000000000), (170.0000000000000000 120.0000000000000000, 330.0000000000000000 120.0000000000000000, 260.0000000000000000 50.0000000000000000, 100.0000000000000000 50.0000000000000000, 170.0000000000000000 120.0000000000000000))', kml='<Polygon><outerBoundaryIs><LinearRing><coordinates>150.0,150.0,0 410.0,150.0,0 280.0,20.0,0 20.0,20.0,0 150.0,150.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>170.0,120.0,0 330.0,120.0,0 260.0,50.0,0 100.0,50.0,0 170.0,120.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon>', gml='<gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>150,150 410,150 280,20 20,20 150,150</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>170,120 330,120 260,50 100,50 170,120</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon>'),
-           TestGeom('MULTIPOINT (10 80,110 170,110 120)', ewkt='MULTIPOINT (10.0000000000000000 80.0000000000000000, 110.0000000000000000 170.0000000000000000, 110.0000000000000000 120.0000000000000000)', kml='<MultiGeometry><Point><coordinates>10.0,80.0,0</coordinates></Point><Point><coordinates>110.0,170.0,0</coordinates></Point><Point><coordinates>110.0,120.0,0</coordinates></Point></MultiGeometry>', gml='<gml:MultiPoint><gml:pointMember><gml:Point><gml:coordinates>10,80</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>110,170</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>110,120</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint>'),
-           TestGeom('MULTILINESTRING ((110 100,40 30,180 30),(170 30,110 90,50 30))', ewkt='MULTILINESTRING ((110.0000000000000000 100.0000000000000000, 40.0000000000000000 30.0000000000000000, 180.0000000000000000 30.0000000000000000), (170.0000000000000000 30.0000000000000000, 110.0000000000000000 90.0000000000000000, 50.0000000000000000 30.0000000000000000))', kml='<MultiGeometry><LineString><coordinates>110.0,100.0,0 40.0,30.0,0 180.0,30.0,0</coordinates></LineString><LineString><coordinates>170.0,30.0,0 110.0,90.0,0 50.0,30.0,0</coordinates></LineString></MultiGeometry>', gml='<gml:MultiLineString><gml:lineStringMember><gml:LineString><gml:coordinates>110,100 40,30 180,30</gml:coordinates></gml:LineString></gml:lineStringMember><gml:lineStringMember><gml:LineString><gml:coordinates>170,30 110,90 50,30</gml:coordinates></gml:LineString></gml:lineStringMember></gml:MultiLineString>'),
-           TestGeom('MULTIPOLYGON (((110 110,70 200,150 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,150 20,70 20,110 110),(110 110,120 40,100 40,110 110)))', ewkt='MULTIPOLYGON (((110.0000000000000000 110.0000000000000000, 70.0000000000000000 200.0000000000000000, 150.0000000000000000 200.0000000000000000, 110.0000000000000000 110.0000000000000000), (110.0000000000000000 110.0000000000000000, 100.0000000000000000 180.0000000000000000, 120.0000000000000000 180.0000000000000000, 110.0000000000000000 110.0000000000000000)), ((110.0000000000000000 110.0000000000000000, 150.0000000000000000 20.0000000000000000, 70.0000000000000000 20.0000000000000000, 110.0000000000000000 110.0000000000000000), (110.0000000000000000 110.0000000000000000, 120.0000000000000000 40.0000000000000000, 100.0000000000000000 40.0000000000000000, 110.0000000000000000 110.0000000000000000)))', kml='<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 70.0,200.0,0 150.0,200.0,0 110.0,110.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 100.0,180.0,0 120.0,180.0,0 110.0,110.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon><Polygon><outerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 150.0,20.0,0 70.0,20.0,0 110.0,110.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 120.0,40.0,0 100.0,40.0,0 110.0,110.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon></MultiGeometry>', gml='<gml:MultiPolygon><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 70,200 150,200 110,110</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 100,180 120,180 110,110</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></gml:polygonMember><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 150,20 70,20 110,110</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 120,40 100,40 110,110</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></gml:polygonMember></gml:MultiPolygon>'),
-           TestGeom('GEOMETRYCOLLECTION (POINT (110 260),LINESTRING (110 0,110 60))', ewkt='GEOMETRYCOLLECTION (POINT (110.0000000000000000 260.0000000000000000), LINESTRING (110.0000000000000000 0.0000000000000000, 110.0000000000000000 60.0000000000000000))', kml='<MultiGeometry><Point><coordinates>110.0,260.0,0</coordinates></Point><LineString><coordinates>110.0,0.0,0 110.0,60.0,0</coordinates></LineString></MultiGeometry>', gml='<gml:GeometryCollection><gml:geometryMember><gml:Point><gml:coordinates>110,260</gml:coordinates></gml:Point></gml:geometryMember><gml:geometryMember><gml:LineString><gml:coordinates>110,0 110,60</gml:coordinates></gml:LineString></gml:geometryMember></gml:GeometryCollection>'),
-           )
-
-# Errors
-errors = (TestGeom('GEOMETR##!@#%#............a32515', bad=True, hex=False),
-          TestGeom('Foo.Bar', bad=True, hex=False),
-          TestGeom('POINT (5, 23)', bad=True, hex=False),
-          TestGeom('AAABBBDDDAAD##@#1113511111-098111111111111111533333333333333', bad=True, hex=True),
-          TestGeom('FFFFFFFFFFFFFFFFF1355555555555555555565111', bad=True, hex=True),
-          TestGeom('', bad=True, hex=False),
-          )
-
-# Polygons
-polygons = (TestGeom('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0), (10 10, 10 90, 90 90, 90 10, 10 10))',
-                     n_i=1, ext_ring_cs=((0, 0), (0, 100), (100, 100), (100, 0), (0, 0)), n_p=10, area=3600.0, centroid=(50., 50.),
-                     ),
-            TestGeom('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0), (10 10, 10 20, 20 20, 20 10, 10 10), (80 80, 80 90, 90 90, 90 80, 80 80))',
-                     n_i=2, ext_ring_cs=((0, 0), (0, 100), (100, 100), (100, 0), (0, 0)), n_p=15, area=9800.0, centroid=(50., 50.),
-                     ),
-            TestGeom('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))',
-                     n_i=0, ext_ring_cs=((0, 0), (0, 100), (100, 100), (100, 0), (0, 0)), n_p=5, area=10000.0, centroid=(50., 50.),
-                     ),
-            TestGeom('POLYGON ((-95.3848703124799471 29.7056021479768511, -95.3851905195191847 29.7046588196500281, -95.3859356966379011 29.7025053545605502, -95.3860723000647539 29.7020963367038391, -95.3871517697222089 29.6989779021280995, -95.3865578518265522 29.6990856888057202, -95.3862634205175226 29.6999471753441782, -95.3861991779541967 29.6999591988978615, -95.3856773799358137 29.6998323107113578, -95.3856209915427229 29.6998005235473741, -95.3855833545501639 29.6996619391729801, -95.3855776331865002 29.6996232659570047, -95.3850162731712885 29.6997236706530536, -95.3831047357410284 29.7000847603095082, -95.3829800724914776 29.7000676365023502, -95.3828084594470909 29.6999969684031200, -95.3828131504821499 29.6999090511531065, -95.3828022942979601 29.6998152117366025, -95.3827893930918833 29.6997790953076759, -95.3825174668099862 29.6998267772748825, -95.3823521544804862 29.7000451723151606, -95.3820491918785223 29.6999682034582335, -95.3817932841505893 29.6999640407204772, -95.3815438924600443 29.7005983712500630, -95.3807812390843424 29.7007538492921590, -95.3778578936435935 29.7012966201172048, -95.3770817300034679 29.7010555145969093, -95.3772763716395957 29.7004995005932031, -95.3769891024414420 29.7005797730360186, -95.3759855007185990 29.7007754783987821, -95.3759516423090474 29.7007305400669388, -95.3765252155960042 29.6989549173240874, -95.3766842746727832 29.6985134987163164, -95.3768510987262914 29.6980530300744938, -95.3769198676258014 29.6977137204527573, -95.3769616670751930 29.6973351617272172, -95.3770309229297766 29.6969821084304186, -95.3772352596880637 29.6959751305871613, -95.3776232419333354 29.6945439060847463, -95.3776849628727064 29.6943364710766069, -95.3779699491714723 29.6926548349458947, -95.3781945479573494 29.6920088336742545, -95.3785807118394189 29.6908279316076005, -95.3787441368896651 29.6908846275832197, -95.3787903214163890 29.6907152912461640, -95.3791765069353659 29.6893335376821526, -95.3794935959513026 29.6884781789101595, -95.3796592071232112 29.6880066681407619, -95.3799788182090111 29.6873687353035081, -95.3801545516183893 29.6868782380716993, -95.3801258908302145 29.6867756621337762, -95.3801104284899566 29.6867229678809572, -95.3803803523746154 29.6863753372986459, -95.3821028558287622 29.6837392961470421, -95.3827289584682205 29.6828097375216160, -95.3827494698109035 29.6790739156259278, -95.3826022014838486 29.6776502228345507, -95.3825047356438063 29.6765773006280753, -95.3823473035336917 29.6750405250369127, -95.3824540163482055 29.6750076408228587, -95.3838984230304305 29.6745679207378679, -95.3916547074937426 29.6722459226508377, -95.3926154662749468 29.6719609085105489, -95.3967246645118081 29.6707316485589736, -95.3974588054406780 29.6705065336410989, -95.3978523748756828 29.6703795547846845, -95.3988598162279970 29.6700874981900853, -95.3995628600665952 29.6698505300412414, -95.4134721665944170 29.6656841279906232, -95.4143262068232616 29.6654291174019278, -95.4159685142480214 29.6649750989232288, -95.4180067396277565 29.6643253024318021, -95.4185886692196590 29.6641482768691063, -95.4234155309609662 29.6626925393704788, -95.4287785503196346 29.6611023620959706, -95.4310287312749352 29.6604222580752648, -95.4320295629628959 29.6603361318136720, -95.4332899683975739 29.6600560661713608, -95.4342675748811047 29.6598454934599900, -95.4343110414310871 29.6598411486215490, -95.4345576779282538 29.6598147020668499, -95.4348823041721630 29.6597875803673112, -95.4352827715209457 29.6597762346946681, -95.4355290431309982 29.6597827926562374, -95.4359197997999331 29.6598014511782715, -95.4361907884752156 29.6598444333523368, -95.4364608955807228 29.6598901433108217, -95.4367250147512323 29.6599494499910712, -95.4364898759758091 29.6601880616540186, -95.4354501111810691 29.6616378572201107, -95.4381459623171224 29.6631265631655126, -95.4367852490863129 29.6642266600024023, -95.4370040894557263 29.6643425389568769, -95.4367078350812648 29.6645492592343238, -95.4366081749871285 29.6646291473027297, -95.4358539359938192 29.6652308742342932, -95.4350327668927889 29.6658995989314462, -95.4350580905272921 29.6678812477895271, -95.4349710541447536 29.6680054925936965, -95.4349500440473548 29.6671410080890006, -95.4341492724148850 29.6678790545191688, -95.4340248868274728 29.6680353198492135, -95.4333227845797438 29.6689245624945990, -95.4331325652123326 29.6691616138940901, -95.4321314741096955 29.6704473333237253, -95.4320435792664341 29.6702578985411982, -95.4320147929883547 29.6701800936425109, -95.4319764538662980 29.6683246590817085, -95.4317490976340679 29.6684974372577166, -95.4305958185342718 29.6694049049170374, -95.4296600735653016 29.6701723430938493, -95.4284928989940937 29.6710931793380972, -95.4274630532378580 29.6719378813640091, -95.4273056811974811 29.6720684984625791, -95.4260554084574864 29.6730668861566969, -95.4253558063699643 29.6736342467365724, -95.4249278826026028 29.6739557343648919, -95.4248648873821423 29.6745400910786152, -95.4260016131471929 29.6750987014005858, -95.4258567183010911 29.6753452063069929, -95.4260238081486847 29.6754322077221353, -95.4258707374502393 29.6756647377294307, -95.4257951755816691 29.6756407098663360, -95.4257701599566985 29.6761077719536068, -95.4257726684792260 29.6761711204603955, -95.4257980187195614 29.6770219651929423, -95.4252712669032519 29.6770161558853758, -95.4249234392992065 29.6770068683962300, -95.4249574272905789 29.6779707498635759, -95.4244725881033702 29.6779825646764159, -95.4222269476429545 29.6780711474441716, -95.4223032371999267 29.6796029391538809, -95.4239133706588945 29.6795331493690355, -95.4224579084327331 29.6813706893847780, -95.4224290108823965 29.6821953228763924, -95.4230916478977349 29.6822130268724109, -95.4222928279595521 29.6832041816675343, -95.4228763710016352 29.6832087677714505, -95.4223401691637179 29.6838987872753748, -95.4211655906087088 29.6838784024852984, -95.4201984153205558 29.6851319258758082, -95.4206156387716362 29.6851623398125319, -95.4213438084897660 29.6851763011334739, -95.4212071118618752 29.6853679931624974, -95.4202651399651245 29.6865313962980508, -95.4172061157659783 29.6865816431043932, -95.4182217951255183 29.6872251197301544, -95.4178664826439160 29.6876750901471631, -95.4180678442928780 29.6877960336377207, -95.4188763472917572 29.6882826379510938, -95.4185374500596311 29.6887137897831934, -95.4182121713132290 29.6885097429738813, -95.4179857231741551 29.6888118367840086, -95.4183106010563620 29.6890048676118212, -95.4179489865331334 29.6894546700979056, -95.4175581746284820 29.6892323606815438, -95.4173439957341571 29.6894990139807007, -95.4177411199311081 29.6897435034738422, -95.4175789200209721 29.6899207529979208, -95.4170598559864800 29.6896042165807508, -95.4166733682539814 29.6900891174451367, -95.4165941362704331 29.6900347214235047, -95.4163537218065301 29.6903529467753238, -95.4126843270708775 29.6881086357212780, -95.4126604121378392 29.6880942378803496, -95.4126672298953338 29.6885951670109982, -95.4126680884821923 29.6887052446594275, -95.4158080137241882 29.6906382377959339, -95.4152061403821961 29.6910871045531586, -95.4155842583188161 29.6917382915894308, -95.4157426793520358 29.6920726941677096, -95.4154520563662203 29.6922052332446427, -95.4151389936167078 29.6923261661269571, -95.4148649784384872 29.6924343866430256, -95.4144051352401590 29.6925623927348106, -95.4146792019416665 29.6926770338507744, -95.4148824479948985 29.6928117893696388, -95.4149851734360226 29.6929823719519774, -95.4140436551925291 29.6929626643100946, -95.4140465993023241 29.6926545917254892, -95.4137269186733334 29.6927395764256090, -95.4137372859685513 29.6935432485666624, -95.4135702836218655 29.6933186678088283, -95.4133925235973237 29.6930415229852152, -95.4133017035615580 29.6928685062036166, -95.4129588921634593 29.6929391128977862, -95.4125107395559695 29.6930481664661485, -95.4102647423187307 29.6935850183258019, -95.4081931340840157 29.6940907430947760, -95.4078783596459772 29.6941703429951609, -95.4049213975000043 29.6948723732981961, -95.4045944244127071 29.6949626434239207, -95.4045865139788134 29.6954109019001358, -95.4045953345484037 29.6956972800496963, -95.4038879332535146 29.6958296089365490, -95.4040366394459340 29.6964389004769842, -95.4032774779020798 29.6965643341263892, -95.4026066501239853 29.6966646227683881, -95.4024991226393837 29.6961389766619703, -95.4011781398631911 29.6963566063186377, -95.4011524097636112 29.6962596176762190, -95.4018184046368276 29.6961399466727336, -95.4016995838361908 29.6956442609415099, -95.4007100753964608 29.6958900524002978, -95.4008032469935188 29.6962639900781404, -95.3995660267125487 29.6965636449370329, -95.3996140564775601 29.6967877962763644, -95.3996364430014410 29.6968901984825280, -95.3984003269631842 29.6968679634805746, -95.3981442026887265 29.6983660679730335, -95.3980178461957706 29.6990890276252415, -95.3977097967130163 29.7008526152273049, -95.3962347157626027 29.7009697553607630, -95.3951949050136250 29.7004740386619019, -95.3957564950617183 29.6990281830553187, -95.3965927101519924 29.6968771129030706, -95.3957496517238184 29.6970800358387095, -95.3957720559467361 29.6972264611230727, -95.3957391586571788 29.6973548894558732, -95.3956286413405365 29.6974949857280883, -95.3955111053256957 29.6975661086270186, -95.3953215342724121 29.6976022763384790, -95.3951795558443365 29.6975846977491038, -95.3950369632041060 29.6975175779330200, -95.3949401089966500 29.6974269267953304, -95.3948740281415581 29.6972903308506346, -95.3946650813866910 29.6973397326847923, -95.3947654059391112 29.6974882560192022, -95.3949627316619768 29.6980355864961858, -95.3933200807862249 29.6984590863712796, -95.3932606497523494 29.6984464798710839, -95.3932983699113350 29.6983154306484352, -95.3933058014696655 29.6982165816983610, -95.3932946347785133 29.6981089778195759, -95.3931780601756287 29.6977068906794841, -95.3929928222970602 29.6977541771878180, -95.3930873169846478 29.6980676264932946, -95.3932743746374570 29.6981249406449663, -95.3929512584706316 29.6989526513922222, -95.3919850280655197 29.7014358632108646, -95.3918950918929056 29.7014169320765724, -95.3916928317890296 29.7019232352846423, -95.3915424614970959 29.7022988712928289, -95.3901530441668939 29.7058519502930061, -95.3899656322116698 29.7059156823562418, -95.3897628748670883 29.7059900058266777, -95.3896062677805787 29.7060738276384946, -95.3893941800512266 29.7061891695242046, -95.3892150365492455 29.7062641292949436, -95.3890502563035199 29.7063339729630940, -95.3888717930715586 29.7063896908080736, -95.3886925428988945 29.7064453871994978, -95.3885376849411983 29.7064797304524149, -95.3883284158984139 29.7065153575050189, -95.3881046767627794 29.7065368368267357, -95.3878809284696132 29.7065363048447537, -95.3876046356120924 29.7065288525102424, -95.3873060894974714 29.7064822806001452, -95.3869851943158409 29.7063993367575350, -95.3865967896568065 29.7062870572919202, -95.3861785624983156 29.7061492099008184, -95.3857375009733488 29.7059887337478798, -95.3854573290902152 29.7058683664514618, -95.3848703124799471 29.7056021479768511))',
-                     n_i=0, ext_ring_cs=False, n_p=264, area=0.00129917360654, centroid=(-95.403569179437341, 29.681772571690402),
-                     ),
-            )
-
-# MultiPolygons
-multipolygons = (TestGeom('MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), ((20 100, 100 100, 100 180, 20 180, 20 100)), ((100 180, 180 180, 180 260, 100 260, 100 180)), ((180 100, 260 100, 260 180, 180 180, 180 100)))', valid=True, num_geom=4, n_p=20),
-                 TestGeom('MULTIPOLYGON (((60 300, 320 220, 260 60, 60 100, 60 300)), ((60 300, 320 220, 260 60, 60 100, 60 300)))', valid=False),
-                 TestGeom('MULTIPOLYGON (((180 60, 240 160, 300 60, 180 60)), ((80 80, 180 60, 160 140, 240 160, 360 140, 300 60, 420 100, 320 280, 120 260, 80 80)))', valid=True, num_geom=2, n_p=14),
-                 )
-
-# Points
-points = (TestGeom('POINT (5 23)', x=5.0, y=23.0, centroid=(5.0, 23.0)),
-          TestGeom('POINT (-95.338492 29.723893)', x=-95.338492, y=29.723893, centroid=(-95.338492, 29.723893)),
-          TestGeom('POINT(1.234 5.678)', x=1.234, y=5.678, centroid=(1.234, 5.678)),
-          TestGeom('POINT(4.321 8.765)', x=4.321, y=8.765, centroid=(4.321, 8.765)),
-          TestGeom('POINT(10 10)', x=10, y=10, centroid=(10., 10.)),
-          TestGeom('POINT (5 23 8)', x=5.0, y=23.0, z=8.0, centroid=(5.0, 23.0)),
-          )
-
-# MultiPoints
-multipoints = (TestGeom('MULTIPOINT(10 10, 20 20 )', n_p=2, points=((10., 10.), (20., 20.)), centroid=(15., 15.)),
-               TestGeom('MULTIPOINT(10 10, 20 20, 10 20, 20 10)',
-                        n_p=4, points=((10., 10.), (20., 20.), (10., 20.), (20., 10.)),
-                        centroid=(15., 15.)),
-               )
-
-# LineStrings
-linestrings = (TestGeom('LINESTRING (60 180, 120 100, 180 180)', n_p=3, centroid=(120, 140), tup=((60, 180), (120, 100), (180, 180))),
-               TestGeom('LINESTRING (0 0, 5 5, 10 5, 10 10)', n_p=4, centroid=(6.1611652351681556, 4.6966991411008934), tup=((0, 0), (5, 5), (10, 5), (10, 10)),),
-               )
-
-# Linear Rings
-linearrings = (TestGeom('LINEARRING (649899.3065171393100172 4176512.3807915160432458, 649902.7294133581453934 4176512.7834989596158266, 649906.5550170192727819 4176514.3942507002502680, 649910.5820134161040187 4176516.0050024418160319, 649914.4076170771149918 4176518.0184616246260703, 649917.2264131171396002 4176519.4278986593708396, 649920.0452871860470623 4176521.6427505780011415, 649922.0587463703704998 4176522.8507948759943247, 649924.2735982896992937 4176524.4616246484220028, 649926.2870574744883925 4176525.4683542405255139, 649927.8978092158213258 4176526.8777912775985897, 649929.3072462501004338 4176528.0858355751261115, 649930.1126611357321963 4176529.4952726080082357, 649927.4951798024121672 4176506.9444361114874482, 649899.3065171393100172 4176512.3807915160432458)', n_p=15),
-               )
-
-# MultiLineStrings
-multilinestrings = (TestGeom('MULTILINESTRING ((0 0, 0 100), (100 0, 100 100))', n_p=4, centroid=(50, 50), tup=(((0, 0), (0, 100)), ((100, 0), (100, 100)))),
-                    TestGeom('MULTILINESTRING ((20 20, 60 60), (20 -20, 60 -60), (-20 -20, -60 -60), (-20 20, -60 60), (-80 0, 0 80, 80 0, 0 -80, -80 0), (-40 20, -40 -20), (-20 40, 20 40), (40 20, 40 -20), (20 -40, -20 -40))',
-                             n_p=21, centroid=(0, 0), tup=(((20., 20.), (60., 60.)), ((20., -20.), (60., -60.)), ((-20., -20.), (-60., -60.)), ((-20., 20.), (-60., 60.)), ((-80., 0.), (0., 80.), (80., 0.), (0., -80.), (-80., 0.)), ((-40., 20.), (-40., -20.)), ((-20., 40.), (20., 40.)), ((40., 20.), (40., -20.)), ((20., -40.), (-20., -40.))))
-                    )
-
-# ====================================================
-# Topology Operations
-
-topology_geoms = ( (TestGeom('POLYGON ((-5.0 0.0, -5.0 10.0, 5.0 10.0, 5.0 0.0, -5.0 0.0))'),
-                    TestGeom('POLYGON ((0.0 -5.0, 0.0 5.0, 10.0 5.0, 10.0 -5.0, 0.0 -5.0))')
-                    ),
-                   (TestGeom('POLYGON ((2 0, 18 0, 18 15, 2 15, 2 0))'),
-                    TestGeom('POLYGON ((10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))'),
-                    ),
-                   )
-
-intersect_geoms = ( TestGeom('POLYGON ((5 5,5 0,0 0,0 5,5 5))'),
-                    TestGeom('POLYGON ((10 1, 9 3, 7 4, 5 6, 4 8, 4 10, 5 12, 7 13, 9 12, 10 10, 11 12, 13 13, 15 12, 16 10, 16 8, 15 6, 13 4, 11 3, 10 1))'),
-                    )
-
-union_geoms = ( TestGeom('POLYGON ((-5 0,-5 10,5 10,5 5,10 5,10 -5,0 -5,0 0,-5 0))'),
-                TestGeom('POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0))'),
-                )
-
-diff_geoms = ( TestGeom('POLYGON ((-5 0,-5 10,5 10,5 5,0 5,0 0,-5 0))'),
-               TestGeom('POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0), (10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))'),
-               )
-
-sdiff_geoms = ( TestGeom('MULTIPOLYGON (((-5 0,-5 10,5 10,5 5,0 5,0 0,-5 0)),((0 0,5 0,5 5,10 5,10 -5,0 -5,0 0)))'),
-                TestGeom('POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0), (10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))'),
-                )
-
-relate_geoms = ( (TestGeom('MULTIPOINT(80 70, 20 20, 200 170, 140 120)'),
-                  TestGeom('MULTIPOINT(80 170, 140 120, 200 80, 80 70)'),
-                  '0F0FFF0F2', True,),
-                 (TestGeom('POINT(20 20)'), TestGeom('POINT(40 60)'),
-                  'FF0FFF0F2', True,),
-                 (TestGeom('POINT(110 110)'), TestGeom('LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200)'),
-                  '0FFFFF1F2', True,),
-                 (TestGeom('MULTILINESTRING((20 20, 90 20, 170 20), (90 20, 90 80, 90 140))'),
-                  TestGeom('MULTILINESTRING((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20))'),
-                  'FF10F0102', True,),
-                 )
-
-buffer_geoms = ( (TestGeom('POINT(0 0)'),
-                  TestGeom('POLYGON ((5 0,4.903926402016153 -0.97545161008064,4.619397662556435 -1.913417161825447,4.157348061512728 -2.777851165098009,3.53553390593274 -3.535533905932735,2.777851165098015 -4.157348061512724,1.913417161825454 -4.619397662556431,0.975451610080648 -4.903926402016151,0.000000000000008 -5.0,-0.975451610080632 -4.903926402016154,-1.913417161825439 -4.619397662556437,-2.777851165098002 -4.157348061512732,-3.53553390593273 -3.535533905932746,-4.157348061512719 -2.777851165098022,-4.619397662556429 -1.913417161825462,-4.903926402016149 -0.975451610080656,-5.0 -0.000000000000016,-4.903926402016156 0.975451610080624,-4.619397662556441 1.913417161825432,-4.157348061512737 2.777851165097995,-3.535533905932752 3.535533905932723,-2.777851165098029 4.157348061512714,-1.913417161825468 4.619397662556426,-0.975451610080661 4.903926402016149,-0.000000000000019 5.0,0.975451610080624 4.903926402016156,1.913417161825434 4.61939766255644,2.777851165097998 4.157348061512735,3.535533905932727 3.535533905932748,4.157348061512719 2.777851165098022,4.619397662556429 1.91341716182546,4.90392640201615 0.975451610080652,5 0))'),
-                  5.0, 8),
-                 (TestGeom('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'),
-                  TestGeom('POLYGON ((-2 0,-2 10,-1.961570560806461 10.390180644032258,-1.847759065022573 10.765366864730179,-1.662939224605091 11.111140466039204,-1.414213562373095 11.414213562373096,-1.111140466039204 11.662939224605092,-0.765366864730179 11.847759065022574,-0.390180644032256 11.961570560806461,0 12,10 12,10.390180644032256 11.961570560806461,10.765366864730179 11.847759065022574,11.111140466039204 11.66293922460509,11.414213562373096 11.414213562373096,11.66293922460509 11.111140466039204,11.847759065022574 10.765366864730179,11.961570560806461 10.390180644032256,12 10,12 0,11.961570560806461 -0.390180644032256,11.847759065022574 -0.76536686473018,11.66293922460509 -1.111140466039204,11.414213562373096 -1.414213562373095,11.111140466039204 -1.66293922460509,10.765366864730179 -1.847759065022573,10.390180644032256 -1.961570560806461,10 -2,0.0 -2.0,-0.390180644032255 -1.961570560806461,-0.765366864730177 -1.847759065022575,-1.1111404660392 -1.662939224605093,-1.41421356237309 -1.4142135623731,-1.662939224605086 -1.111140466039211,-1.84775906502257 -0.765366864730189,-1.961570560806459 -0.390180644032268,-2 0))'),
-                  2.0, 8),
-                 )
-
-json_geoms = (TestGeom('POINT(100 0)', json='{ "type": "Point", "coordinates": [ 100.000000, 0.000000 ] }'),
-              TestGeom('POLYGON((0 0, -10 0, -10 -10, 0 -10, 0 0))', json='{ "type": "Polygon", "coordinates": [ [ [ 0.000000, 0.000000 ], [ -10.000000, 0.000000 ], [ -10.000000, -10.000000 ], [ 0.000000, -10.000000 ], [ 0.000000, 0.000000 ] ] ] }'),
-              TestGeom('MULTIPOLYGON(((102 2, 103 2, 103 3, 102 3, 102 2)), ((100.0 0.0, 101.0 0.0, 101.0 1.0, 100.0 1.0, 100.0 0.0), (100.2 0.2, 100.8 0.2, 100.8 0.8, 100.2 0.8, 100.2 0.2)))', json='{ "type": "MultiPolygon", "coordinates": [ [ [ [ 102.000000, 2.000000 ], [ 103.000000, 2.000000 ], [ 103.000000, 3.000000 ], [ 102.000000, 3.000000 ], [ 102.000000, 2.000000 ] ] ], [ [ [ 100.000000, 0.000000 ], [ 101.000000, 0.000000 ], [ 101.000000, 1.000000 ], [ 100.000000, 1.000000 ], [ 100.000000, 0.000000 ] ], [ [ 100.200000, 0.200000 ], [ 100.800000, 0.200000 ], [ 100.800000, 0.800000 ], [ 100.200000, 0.800000 ], [ 100.200000, 0.200000 ] ] ] ] }'),
-              )
diff --git a/webapp/django/contrib/gis/tests/layermap/__init__.py b/webapp/django/contrib/gis/tests/layermap/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/tests/layermap/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/tests/layermap/cities/cities.dbf b/webapp/django/contrib/gis/tests/layermap/cities/cities.dbf
deleted file mode 100644
index 8b27633..0000000
--- a/webapp/django/contrib/gis/tests/layermap/cities/cities.dbf
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/cities/cities.prj b/webapp/django/contrib/gis/tests/layermap/cities/cities.prj
deleted file mode 100644
index a30c00a..0000000
--- a/webapp/django/contrib/gis/tests/layermap/cities/cities.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/layermap/cities/cities.shp b/webapp/django/contrib/gis/tests/layermap/cities/cities.shp
deleted file mode 100644
index 1c46ccc..0000000
--- a/webapp/django/contrib/gis/tests/layermap/cities/cities.shp
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/cities/cities.shx b/webapp/django/contrib/gis/tests/layermap/cities/cities.shx
deleted file mode 100644
index 6be3fd6..0000000
--- a/webapp/django/contrib/gis/tests/layermap/cities/cities.shx
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/counties/counties.dbf b/webapp/django/contrib/gis/tests/layermap/counties/counties.dbf
deleted file mode 100644
index ccdbb26..0000000
--- a/webapp/django/contrib/gis/tests/layermap/counties/counties.dbf
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/counties/counties.shp b/webapp/django/contrib/gis/tests/layermap/counties/counties.shp
deleted file mode 100644
index 2e7dca5..0000000
--- a/webapp/django/contrib/gis/tests/layermap/counties/counties.shp
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/counties/counties.shx b/webapp/django/contrib/gis/tests/layermap/counties/counties.shx
deleted file mode 100644
index 46ed3bb..0000000
--- a/webapp/django/contrib/gis/tests/layermap/counties/counties.shx
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.dbf b/webapp/django/contrib/gis/tests/layermap/interstates/interstates.dbf
deleted file mode 100644
index a88d171..0000000
--- a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.dbf
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.prj b/webapp/django/contrib/gis/tests/layermap/interstates/interstates.prj
deleted file mode 100644
index a30c00a..0000000
--- a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
\ No newline at end of file
diff --git a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.shp b/webapp/django/contrib/gis/tests/layermap/interstates/interstates.shp
deleted file mode 100644
index 6d93de7..0000000
--- a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.shp
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.shx b/webapp/django/contrib/gis/tests/layermap/interstates/interstates.shx
deleted file mode 100644
index 7b9088ac..0000000
--- a/webapp/django/contrib/gis/tests/layermap/interstates/interstates.shx
+++ /dev/null
Binary files differ
diff --git a/webapp/django/contrib/gis/tests/layermap/models.py b/webapp/django/contrib/gis/tests/layermap/models.py
deleted file mode 100644
index 5dbd528..0000000
--- a/webapp/django/contrib/gis/tests/layermap/models.py
+++ /dev/null
@@ -1,52 +0,0 @@
-from django.contrib.gis.db import models
-
-class State(models.Model):
-    name = models.CharField(max_length=20)
-    objects = models.GeoManager()
-
-class County(models.Model):
-    name = models.CharField(max_length=25)
-    state = models.ForeignKey(State)
-    mpoly = models.MultiPolygonField(srid=4269) # Multipolygon in NAD83
-    objects = models.GeoManager()
-
-class CountyFeat(models.Model):
-    name = models.CharField(max_length=25)
-    poly = models.PolygonField(srid=4269)
-    objects = models.GeoManager()
-
-class City(models.Model):
-    name = models.CharField(max_length=25)
-    population = models.IntegerField()
-    density = models.DecimalField(max_digits=7, decimal_places=1)
-    dt = models.DateField()
-    point = models.PointField()
-    objects = models.GeoManager()
-
-class Interstate(models.Model):
-    name = models.CharField(max_length=20)
-    length = models.DecimalField(max_digits=6, decimal_places=2)
-    path = models.LineStringField()
-    objects = models.GeoManager()
-
-# Mapping dictionaries for the models above.
-co_mapping = {'name' : 'Name',
-              'state' : {'name' : 'State'}, # ForeignKey's use another mapping dictionary for the _related_ Model (State in this case).
-              'mpoly' : 'MULTIPOLYGON', # Will convert POLYGON features into MULTIPOLYGONS.
-              }
-
-cofeat_mapping = {'name' : 'Name',
-                  'poly' : 'POLYGON',
-                  }
-
-city_mapping = {'name' : 'Name',
-                'population' : 'Population',
-                'density' : 'Density',
-                'dt' : 'Created',
-                'point' : 'POINT',
-                }
-
-inter_mapping = {'name' : 'Name',
-                 'length' : 'Length',
-                 'path' : 'LINESTRING',
-                 }
diff --git a/webapp/django/contrib/gis/tests/layermap/tests.py b/webapp/django/contrib/gis/tests/layermap/tests.py
deleted file mode 100644
index 740ab86..0000000
--- a/webapp/django/contrib/gis/tests/layermap/tests.py
+++ /dev/null
@@ -1,249 +0,0 @@
-import os, unittest
-from copy import copy
-from datetime import date
-from decimal import Decimal
-from models import City, County, CountyFeat, Interstate, State, city_mapping, co_mapping, cofeat_mapping, inter_mapping
-from django.contrib.gis.utils.layermapping import LayerMapping, LayerMapError, InvalidDecimal, MissingForeignKey
-from django.contrib.gis.gdal import DataSource
-
-shp_path = os.path.dirname(__file__)
-city_shp = os.path.join(shp_path, 'cities/cities.shp')
-co_shp = os.path.join(shp_path, 'counties/counties.shp')
-inter_shp = os.path.join(shp_path, 'interstates/interstates.shp')
-
-# Dictionaries to hold what's expected in the county shapefile.  
-NAMES  = ['Bexar', 'Galveston', 'Harris', 'Honolulu', 'Pueblo']
-NUMS   = [1, 2, 1, 19, 1] # Number of polygons for each.                                                                                                                                                  
-STATES = ['Texas', 'Texas', 'Texas', 'Hawaii', 'Colorado']
-
-class LayerMapTest(unittest.TestCase):
-
-    def test01_init(self):
-        "Testing LayerMapping initialization."
-
-        # Model field that does not exist.
-        bad1 = copy(city_mapping)
-        bad1['foobar'] = 'FooField'
-
-        # Shapefile field that does not exist.
-        bad2 = copy(city_mapping)
-        bad2['name'] = 'Nombre'
-
-        # Nonexistent geographic field type.
-        bad3 = copy(city_mapping)
-        bad3['point'] = 'CURVE'
-
-        # Incrementing through the bad mapping dictionaries and
-        # ensuring that a LayerMapError is raised.
-        for bad_map in (bad1, bad2, bad3):
-            try:
-                lm = LayerMapping(City, city_shp, bad_map)
-            except LayerMapError:
-                pass
-            else:
-                self.fail('Expected a LayerMapError.')
-
-        # A LookupError should be thrown for bogus encodings.
-        try:
-            lm = LayerMapping(City, city_shp, city_mapping, encoding='foobar')
-        except LookupError:
-            pass
-        else:
-            self.fail('Expected a LookupError')
-
-    def test02_simple_layermap(self):
-        "Test LayerMapping import of a simple point shapefile."
-
-        # Setting up for the LayerMapping.
-        lm = LayerMapping(City, city_shp, city_mapping)
-        lm.save()
-
-        # There should be three cities in the shape file.
-        self.assertEqual(3, City.objects.count())
-
-        # Opening up the shapefile, and verifying the values in each
-        # of the features made it to the model.
-        ds = DataSource(city_shp)
-        layer = ds[0]
-        for feat in layer:
-            city = City.objects.get(name=feat['Name'].value)
-            self.assertEqual(feat['Population'].value, city.population)
-            self.assertEqual(Decimal(str(feat['Density'])), city.density)
-            self.assertEqual(feat['Created'].value, city.dt)
-
-            # Comparing the geometries.
-            pnt1, pnt2 = feat.geom, city.point
-            self.assertAlmostEqual(pnt1.x, pnt2.x, 6)
-            self.assertAlmostEqual(pnt1.y, pnt2.y, 6)
-
-    def test03_layermap_strict(self):
-        "Testing the `strict` keyword, and import of a LineString shapefile."
-
-        # When the `strict` keyword is set an error encountered will force
-        # the importation to stop.
-        try:
-            lm = LayerMapping(Interstate, inter_shp, inter_mapping)
-            lm.save(silent=True, strict=True)
-        except InvalidDecimal:
-            pass
-        else:
-            self.fail('Should have failed on strict import with invalid decimal values.')
-
-        # This LayerMapping should work b/c `strict` is not set.
-        lm = LayerMapping(Interstate, inter_shp, inter_mapping)
-        lm.save(silent=True)
-
-        # Two interstate should have imported correctly.
-        self.assertEqual(2, Interstate.objects.count())
-        
-        # Verifying the values in the layer w/the model.
-        ds = DataSource(inter_shp)
-
-        # Only the first two features of this shapefile are valid.
-        valid_feats = ds[0][:2]
-        for feat in valid_feats:
-            istate = Interstate.objects.get(name=feat['Name'].value)
-            
-            if feat.fid == 0:
-                self.assertEqual(Decimal(str(feat['Length'])), istate.length)
-            elif feat.fid == 1:
-                # Everything but the first two decimal digits were truncated,
-                # because the Interstate model's `length` field has decimal_places=2.
-                self.assertAlmostEqual(feat.get('Length'), float(istate.length), 2)
-
-            for p1, p2 in zip(feat.geom, istate.path):
-                self.assertAlmostEqual(p1[0], p2[0], 6)
-                self.assertAlmostEqual(p1[1], p2[1], 6)
-
-    def county_helper(self, county_feat=True):
-        "Helper function for ensuring the integrity of the mapped County models."
-        
-        for name, n, st in zip(NAMES, NUMS, STATES):
-            # Should only be one record b/c of `unique` keyword.
-            c = County.objects.get(name=name)
-            self.assertEqual(n, len(c.mpoly))
-            self.assertEqual(st, c.state.name) # Checking ForeignKey mapping.
-            
-            # Multiple records because `unique` was not set.
-            if county_feat:
-                qs = CountyFeat.objects.filter(name=name)
-                self.assertEqual(n, qs.count())
-
-    def test04_layermap_unique_multigeometry_fk(self):
-        "Testing the `unique`, and `transform`, geometry collection conversion, and ForeignKey mappings."
-        # All the following should work.
-        try:
-            # Telling LayerMapping that we want no transformations performed on the data.
-            lm = LayerMapping(County, co_shp, co_mapping, transform=False)
-        
-            # Specifying the source spatial reference system via the `source_srs` keyword.
-            lm = LayerMapping(County, co_shp, co_mapping, source_srs=4269)
-            lm = LayerMapping(County, co_shp, co_mapping, source_srs='NAD83')
-
-            # Unique may take tuple or string parameters.
-            for arg in ('name', ('name', 'mpoly')):
-                lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique=arg)
-        except:
-            self.fail('No exception should be raised for proper use of keywords.')
-            
-        # Testing invalid params for the `unique` keyword.
-        for e, arg in ((TypeError, 5.0), (ValueError, 'foobar'), (ValueError, ('name', 'mpolygon'))):
-            self.assertRaises(e, LayerMapping, County, co_shp, co_mapping, transform=False, unique=arg)
-
-        # No source reference system defined in the shapefile, should raise an error.
-        self.assertRaises(LayerMapError, LayerMapping, County, co_shp, co_mapping)
-
-        # Passing in invalid ForeignKey mapping parameters -- must be a dictionary
-        # mapping for the model the ForeignKey points to.
-        bad_fk_map1 = copy(co_mapping); bad_fk_map1['state'] = 'name'
-        bad_fk_map2 = copy(co_mapping); bad_fk_map2['state'] = {'nombre' : 'State'}
-        self.assertRaises(TypeError, LayerMapping, County, co_shp, bad_fk_map1, transform=False)
-        self.assertRaises(LayerMapError, LayerMapping, County, co_shp, bad_fk_map2, transform=False)
-
-        # There exist no State models for the ForeignKey mapping to work -- should raise
-        # a MissingForeignKey exception (this error would be ignored if the `strict`
-        # keyword is not set).
-        lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')
-        self.assertRaises(MissingForeignKey, lm.save, silent=True, strict=True)
-
-        # Now creating the state models so the ForeignKey mapping may work.
-        co, hi, tx = State(name='Colorado'), State(name='Hawaii'), State(name='Texas')
-        co.save(), hi.save(), tx.save()
-
-        # If a mapping is specified as a collection, all OGR fields that
-        # are not collections will be converted into them.  For example,
-        # a Point column would be converted to MultiPoint. Other things being done
-        # w/the keyword args:
-        #  `transform=False`: Specifies that no transform is to be done; this 
-        #    has the effect of ignoring the spatial reference check (because the
-        #    county shapefile does not have implicit spatial reference info).
-        # 
-        #  `unique='name'`: Creates models on the condition that they have 
-        #    unique county names; geometries from each feature however will be
-        #    appended to the geometry collection of the unique model.  Thus,
-        #    all of the various islands in Honolulu county will be in in one
-        #    database record with a MULTIPOLYGON type.
-        lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')
-        lm.save(silent=True, strict=True)
-
-        # A reference that doesn't use the unique keyword; a new database record will
-        # created for each polygon.
-        lm = LayerMapping(CountyFeat, co_shp, cofeat_mapping, transform=False)
-        lm.save(silent=True, strict=True)
-
-        # The county helper is called to ensure integrity of County models.
-        self.county_helper()
-
-    def test05_test_fid_range_step(self):
-        "Tests the `fid_range` keyword and the `step` keyword of .save()."
-        
-        # Function for clearing out all the counties before testing.
-        def clear_counties(): County.objects.all().delete()
-        
-        # Initializing the LayerMapping object to use in these tests.
-        lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')
-
-        # Bad feature id ranges should raise a type error.
-        clear_counties()
-        bad_ranges = (5.0, 'foo', co_shp)
-        for bad in bad_ranges:
-            self.assertRaises(TypeError, lm.save, fid_range=bad)
-
-        # Step keyword should not be allowed w/`fid_range`.
-        fr = (3, 5) # layer[3:5]
-        self.assertRaises(LayerMapError, lm.save, fid_range=fr, step=10) 
-        lm.save(fid_range=fr)
-        
-        # Features IDs 3 & 4 are for Galveston County, Texas -- only
-        # one model is returned because the `unique` keyword was set.
-        qs = County.objects.all()
-        self.assertEqual(1, qs.count())
-        self.assertEqual('Galveston', qs[0].name)
-
-        # Features IDs 5 and beyond for Honolulu County, Hawaii, and
-        # FID 0 is for Pueblo County, Colorado.
-        clear_counties()
-        lm.save(fid_range=slice(5, None), silent=True, strict=True) # layer[5:]
-        lm.save(fid_range=slice(None, 1), silent=True, strict=True) # layer[:1]
-
-        # Only Pueblo & Honolulu counties should be present because of
-        # the `unique` keyword.
-        qs = County.objects.all()
-        self.assertEqual(2, qs.count())
-        hi, co = tuple(qs)
-        hi_idx, co_idx = tuple(map(NAMES.index, ('Honolulu', 'Pueblo')))
-        self.assertEqual('Pueblo', co.name); self.assertEqual(NUMS[co_idx], len(co.mpoly))
-        self.assertEqual('Honolulu', hi.name); self.assertEqual(NUMS[hi_idx], len(hi.mpoly))
-
-        # Testing the `step` keyword -- should get the same counties
-        # regardless of we use a step that divides equally, that is odd,
-        # or that is larger than the dataset.
-        for st in (4,7,1000):
-            clear_counties()
-            lm.save(step=st, strict=True)
-            self.county_helper(county_feat=False)
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(LayerMapTest))
-    return s
diff --git a/webapp/django/contrib/gis/tests/relatedapp/__init__.py b/webapp/django/contrib/gis/tests/relatedapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/gis/tests/relatedapp/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/gis/tests/relatedapp/models.py b/webapp/django/contrib/gis/tests/relatedapp/models.py
deleted file mode 100644
index 8484054..0000000
--- a/webapp/django/contrib/gis/tests/relatedapp/models.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from django.contrib.gis.db import models
-
-class Location(models.Model):
-    name = models.CharField(max_length=50)
-    point = models.PointField()
-    objects = models.GeoManager()
-
-class City(models.Model):
-    name = models.CharField(max_length=50)
-    state = models.USStateField()
-    location = models.ForeignKey(Location)
-    objects = models.GeoManager()
diff --git a/webapp/django/contrib/gis/tests/relatedapp/tests.py b/webapp/django/contrib/gis/tests/relatedapp/tests.py
deleted file mode 100644
index 5fe63cb..0000000
--- a/webapp/django/contrib/gis/tests/relatedapp/tests.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import os, unittest
-from django.contrib.gis.geos import *
-from django.contrib.gis.tests.utils import no_mysql, postgis
-from django.conf import settings
-from models import City, Location
-
-cities = (('Aurora', 'TX', -97.516111, 33.058333),
-          ('Roswell', 'NM', -104.528056, 33.387222),
-          ('Kecksburg', 'PA',  -79.460734, 40.18476),
-           )
-
-class RelatedGeoModelTest(unittest.TestCase):
-    
-    def test01_setup(self):
-        "Setting up for related model tests."
-        for name, state, lon, lat in cities:
-            loc = Location(point=Point(lon, lat))
-            loc.save()
-            c = City(name=name, state=state, location=loc)
-            c.save()
-            
-    def test02_select_related(self):
-        "Testing `select_related` on geographic models (see #7126)."
-        qs1 = City.objects.all()
-        qs2 = City.objects.select_related()
-        qs3 = City.objects.select_related('location')
-
-        for qs in (qs1, qs2, qs3):
-            for ref, c in zip(cities, qs):
-                nm, st, lon, lat = ref
-                self.assertEqual(nm, c.name)
-                self.assertEqual(st, c.state)
-                self.assertEqual(Point(lon, lat), c.location.point)
-        
-    @no_mysql
-    def test03_transform_related(self):
-        "Testing the `transform` GeoQuerySet method on related geographic models."
-        # All the transformations are to state plane coordinate systems using
-        # US Survey Feet (thus a tolerance of 0 implies error w/in 1 survey foot).
-        if postgis:
-            tol = 3
-            nqueries = 4 # +1 for `postgis_lib_version`
-        else:
-            tol = 0
-            nqueries = 3
-            
-        def check_pnt(ref, pnt):
-            self.assertAlmostEqual(ref.x, pnt.x, tol)
-            self.assertAlmostEqual(ref.y, pnt.y, tol)
-            self.assertEqual(ref.srid, pnt.srid)
-
-        # Turning on debug so we can manually verify the number of SQL queries issued.
-        # DISABLED: the number of queries count testing mechanism is way too brittle.
-        #dbg = settings.DEBUG
-        #settings.DEBUG = True
-        from django.db import connection
-
-        # Each city transformed to the SRID of their state plane coordinate system.
-        transformed = (('Kecksburg', 2272, 'POINT(1490553.98959621 314792.131023984)'),
-                       ('Roswell', 2257, 'POINT(481902.189077221 868477.766629735)'),
-                       ('Aurora', 2276, 'POINT(2269923.2484839 7069381.28722222)'),
-                       )
-
-        for name, srid, wkt in transformed:
-            # Doing this implicitly sets `select_related` select the location.
-            qs = list(City.objects.filter(name=name).transform(srid, field_name='location__point'))
-            check_pnt(GEOSGeometry(wkt, srid), qs[0].location.point) 
-        #settings.DEBUG= dbg
-
-        # Verifying the number of issued SQL queries.
-        #self.assertEqual(nqueries, len(connection.queries))
-
-    @no_mysql
-    def test04_related_aggregate(self):
-        "Testing the `extent` and `unionagg` GeoQuerySet aggregates on related geographic models."
-        if postgis:
-            # One for all locations, one that excludes Roswell.
-            all_extent = (-104.528060913086, 33.0583305358887,-79.4607315063477, 40.1847610473633)
-            txpa_extent = (-97.51611328125, 33.0583305358887,-79.4607315063477, 40.1847610473633)
-            e1 = City.objects.extent(field_name='location__point')
-            e2 = City.objects.exclude(name='Roswell').extent(field_name='location__point')
-            for ref, e in [(all_extent, e1), (txpa_extent, e2)]:
-                for ref_val, e_val in zip(ref, e): self.assertAlmostEqual(ref_val, e_val)
-
-        # The second union is for a query that has something in the WHERE clause.
-        ref_u1 = GEOSGeometry('MULTIPOINT(-104.528056 33.387222,-97.516111 33.058333,-79.460734 40.18476)', 4326)
-        ref_u2 = GEOSGeometry('MULTIPOINT(-97.516111 33.058333,-79.460734 40.18476)', 4326)
-        u1 = City.objects.unionagg(field_name='location__point')
-        u2 = City.objects.exclude(name='Roswell').unionagg(field_name='location__point')
-        self.assertEqual(ref_u1, u1)
-        self.assertEqual(ref_u2, u2)
-
-    # TODO: Related tests for KML, GML, and distance lookups.
-        
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(RelatedGeoModelTest))
-    return s
diff --git a/webapp/django/contrib/gis/tests/relatedapp/tests_mysql.py b/webapp/django/contrib/gis/tests/relatedapp/tests_mysql.py
deleted file mode 100644
index ecadf74..0000000
--- a/webapp/django/contrib/gis/tests/relatedapp/tests_mysql.py
+++ /dev/null
@@ -1 +0,0 @@
-from tests import *
diff --git a/webapp/django/contrib/gis/tests/test_gdal.py b/webapp/django/contrib/gis/tests/test_gdal.py
deleted file mode 100644
index 030ac50..0000000
--- a/webapp/django/contrib/gis/tests/test_gdal.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""
-Module for executing all of the GDAL tests.  None
-of these tests require the use of the database.
-"""
-from unittest import TestSuite, TextTestRunner
-
-# Importing the GDAL test modules.
-from django.contrib.gis.tests import \
-     test_gdal_driver, test_gdal_ds, test_gdal_envelope, \
-     test_gdal_geom, test_gdal_srs
-     
-
-test_suites = [test_gdal_driver.suite(),
-               test_gdal_ds.suite(),
-               test_gdal_envelope.suite(),
-               test_gdal_geom.suite(),
-               test_gdal_srs.suite(),
-               ]
-
-def suite():
-    "Builds a test suite for the GDAL tests."
-    s = TestSuite()
-    map(s.addTest, test_suites)
-    return s
-
-def run(verbosity=1):
-    "Runs the GDAL tests."
-    TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_gdal_driver.py b/webapp/django/contrib/gis/tests/test_gdal_driver.py
deleted file mode 100644
index 1ff65ac..0000000
--- a/webapp/django/contrib/gis/tests/test_gdal_driver.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import os, os.path, unittest
-from django.contrib.gis.gdal import Driver, OGRException
-
-valid_drivers = ('ESRI Shapefile', 'MapInfo File', 'TIGER', 'S57', 'DGN',
-                 'Memory', 'CSV', 'GML', 'KML')
-
-invalid_drivers = ('Foo baz', 'clucka', 'ESRI Shp')
-
-aliases = {'eSrI' : 'ESRI Shapefile',
-           'TigER/linE' : 'TIGER',
-           'SHAPE' : 'ESRI Shapefile',
-           'sHp' : 'ESRI Shapefile',
-           }
-
-class DriverTest(unittest.TestCase):
-
-    def test01_valid_driver(self):
-        "Testing valid OGR Data Source Drivers."
-        for d in valid_drivers:
-            dr = Driver(d)
-            self.assertEqual(d, str(dr))
-
-    def test02_invalid_driver(self):
-        "Testing invalid OGR Data Source Drivers."
-        for i in invalid_drivers:
-            self.assertRaises(OGRException, Driver, i)
-
-    def test03_aliases(self):
-        "Testing driver aliases."
-        for alias, full_name in aliases.items():
-            dr = Driver(alias)
-            self.assertEqual(full_name, str(dr))
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(DriverTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_gdal_ds.py b/webapp/django/contrib/gis/tests/test_gdal_ds.py
deleted file mode 100644
index 9b82685..0000000
--- a/webapp/django/contrib/gis/tests/test_gdal_ds.py
+++ /dev/null
@@ -1,181 +0,0 @@
-import os, os.path, unittest
-from django.contrib.gis.gdal import DataSource, Envelope, OGRException, OGRIndexError
-from django.contrib.gis.gdal.field import OFTReal, OFTInteger, OFTString
-
-# Path for SHP files
-data_path = os.path.join(os.path.dirname(__file__), 'data')
-def get_ds_file(name, ext):
-    return os.sep.join([data_path, name, name + '.%s' % ext])
-
-# Test SHP data source object
-class TestDS:
-    def __init__(self, name, **kwargs):
-        ext = kwargs.pop('ext', 'shp')
-        self.ds = get_ds_file(name, ext)
-        for key, value in kwargs.items():
-            setattr(self, key, value)
-
-# List of acceptable data sources.
-ds_list = (TestDS('test_point', nfeat=5, nfld=3, geom='POINT', gtype=1, driver='ESRI Shapefile',
-                  fields={'dbl' : OFTReal, 'int' : OFTInteger, 'str' : OFTString,},
-                  extent=(-1.35011,0.166623,-0.524093,0.824508), # Got extent from QGIS
-                  srs_wkt='GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]',
-                  field_values={'dbl' : [float(i) for i in range(1, 6)], 'int' : range(1, 6), 'str' : [str(i) for i in range(1, 6)]},
-                  fids=range(5)),
-           TestDS('test_vrt', ext='vrt', nfeat=3, nfld=3, geom='POINT', gtype=1, driver='VRT',
-                  fields={'POINT_X' : OFTString, 'POINT_Y' : OFTString, 'NUM' : OFTString}, # VRT uses CSV, which all types are OFTString.
-                  extent=(1.0, 2.0, 100.0, 523.5), # Min/Max from CSV
-                  field_values={'POINT_X' : ['1.0', '5.0', '100.0'], 'POINT_Y' : ['2.0', '23.0', '523.5'], 'NUM' : ['5', '17', '23']},
-                  fids=range(1,4)),
-           TestDS('test_poly', nfeat=3, nfld=3, geom='POLYGON', gtype=3, 
-                  driver='ESRI Shapefile',
-                  fields={'float' : OFTReal, 'int' : OFTInteger, 'str' : OFTString,},
-                  extent=(-1.01513,-0.558245,0.161876,0.839637), # Got extent from QGIS
-                  srs_wkt='GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]'),
-           )
-
-bad_ds = (TestDS('foo'),
-          )
-
-class DataSourceTest(unittest.TestCase):
-
-    def test01_valid_shp(self):
-        "Testing valid SHP Data Source files."
-
-        for source in ds_list:
-            # Loading up the data source
-            ds = DataSource(source.ds)
-
-            # Making sure the layer count is what's expected (only 1 layer in a SHP file)
-            self.assertEqual(1, len(ds))
-
-            # Making sure GetName works
-            self.assertEqual(source.ds, ds.name)
-
-            # Making sure the driver name matches up
-            self.assertEqual(source.driver, str(ds.driver))
-
-            # Making sure indexing works
-            try:
-                ds[len(ds)]
-            except OGRIndexError:
-                pass
-            else:
-                self.fail('Expected an IndexError!')
-                        
-    def test02_invalid_shp(self):
-        "Testing invalid SHP files for the Data Source."
-        for source in bad_ds:
-            self.assertRaises(OGRException, DataSource, source.ds)
-
-    def test03a_layers(self):
-        "Testing Data Source Layers."
-        print "\nBEGIN - expecting out of range feature id error; safe to ignore.\n"
-        for source in ds_list:
-            ds = DataSource(source.ds)
-
-            # Incrementing through each layer, this tests DataSource.__iter__
-            for layer in ds:                
-                # Making sure we get the number of features we expect
-                self.assertEqual(len(layer), source.nfeat)
-
-                # Making sure we get the number of fields we expect
-                self.assertEqual(source.nfld, layer.num_fields)
-                self.assertEqual(source.nfld, len(layer.fields))
-
-                # Testing the layer's extent (an Envelope), and it's properties
-                self.assertEqual(True, isinstance(layer.extent, Envelope))
-                self.assertAlmostEqual(source.extent[0], layer.extent.min_x, 5)
-                self.assertAlmostEqual(source.extent[1], layer.extent.min_y, 5)
-                self.assertAlmostEqual(source.extent[2], layer.extent.max_x, 5)
-                self.assertAlmostEqual(source.extent[3], layer.extent.max_y, 5)
-
-                # Now checking the field names.
-                flds = layer.fields
-                for f in flds: self.assertEqual(True, f in source.fields)
-                
-                # Negative FIDs are not allowed.
-                self.assertRaises(OGRIndexError, layer.__getitem__, -1)
-                self.assertRaises(OGRIndexError, layer.__getitem__, 50000)
-
-                if hasattr(source, 'field_values'):
-                    fld_names = source.field_values.keys()
-
-                    # Testing `Layer.get_fields` (which uses Layer.__iter__)
-                    for fld_name in fld_names:
-                        self.assertEqual(source.field_values[fld_name], layer.get_fields(fld_name))
-
-                    # Testing `Layer.__getitem__`.
-                    for i, fid in enumerate(source.fids):
-                        feat = layer[fid]
-                        self.assertEqual(fid, feat.fid)
-                        # Maybe this should be in the test below, but we might as well test
-                        # the feature values here while in this loop.
-                        for fld_name in fld_names:
-                            self.assertEqual(source.field_values[fld_name][i], feat.get(fld_name))
-        print "\nEND - expecting out of range feature id error; safe to ignore."
-                        
-    def test03b_layer_slice(self):
-        "Test indexing and slicing on Layers."
-        # Using the first data-source because the same slice
-        # can be used for both the layer and the control values.
-        source = ds_list[0]
-        ds = DataSource(source.ds)
-
-        sl = slice(1, 3)
-        feats = ds[0][sl]
-
-        for fld_name in ds[0].fields:
-            test_vals = [feat.get(fld_name) for feat in feats]
-            control_vals = source.field_values[fld_name][sl]
-            self.assertEqual(control_vals, test_vals)
-
-    def test04_features(self):
-        "Testing Data Source Features."
-        for source in ds_list:
-            ds = DataSource(source.ds)
-
-            # Incrementing through each layer
-            for layer in ds:
-                # Incrementing through each feature in the layer
-                for feat in layer:
-                    # Making sure the number of fields, and the geometry type
-                    # are what's expected.
-                    self.assertEqual(source.nfld, len(list(feat)))
-                    self.assertEqual(source.gtype, feat.geom_type)
-
-                    # Making sure the fields match to an appropriate OFT type.
-                    for k, v in source.fields.items():
-                        # Making sure we get the proper OGR Field instance, using
-                        # a string value index for the feature.
-                        self.assertEqual(True, isinstance(feat[k], v))
-
-                    # Testing Feature.__iter__
-                    for fld in feat: self.assertEqual(True, fld.name in source.fields.keys())
-                        
-    def test05_geometries(self):
-        "Testing Geometries from Data Source Features."
-        for source in ds_list:
-            ds = DataSource(source.ds)
-
-            # Incrementing through each layer and feature.
-            for layer in ds:
-                for feat in layer:
-                    g = feat.geom
-
-                    # Making sure we get the right Geometry name & type
-                    self.assertEqual(source.geom, g.geom_name)
-                    self.assertEqual(source.gtype, g.geom_type)
-
-                    # Making sure the SpatialReference is as expected.
-                    if hasattr(source, 'srs_wkt'):
-                        self.assertEqual(source.srs_wkt, g.srs.wkt)
-
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(DataSourceTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_gdal_envelope.py b/webapp/django/contrib/gis/tests/test_gdal_envelope.py
deleted file mode 100644
index fda2719..0000000
--- a/webapp/django/contrib/gis/tests/test_gdal_envelope.py
+++ /dev/null
@@ -1,45 +0,0 @@
-import unittest
-from django.contrib.gis.gdal import Envelope, OGRException
-
-class EnvelopeTest(unittest.TestCase):
-
-    def test01_init(self):
-        "Testing Envelope initilization."
-        e1 = Envelope((0, 0, 5, 5))
-        e2 = Envelope(0, 0, 5, 5)
-        e3 = Envelope(0, '0', '5', 5) # Thanks to ww for this
-        e4 = Envelope(e1._envelope)
-        self.assertRaises(OGRException, Envelope, (5, 5, 0, 0))
-        self.assertRaises(OGRException, Envelope, 5, 5, 0, 0)
-        self.assertRaises(OGRException, Envelope, (0, 0, 5, 5, 3))
-        self.assertRaises(OGRException, Envelope, ())
-        self.assertRaises(ValueError, Envelope, 0, 'a', 5, 5)
-        self.assertRaises(TypeError, Envelope, u'foo')
-
-    def test02_properties(self):
-        "Testing Envelope properties."
-        e = Envelope(0, 0, 2, 3)
-        self.assertEqual(0, e.min_x)
-        self.assertEqual(0, e.min_y)
-        self.assertEqual(2, e.max_x)
-        self.assertEqual(3, e.max_y)
-        self.assertEqual((0, 0), e.ll)
-        self.assertEqual((2, 3), e.ur)
-        self.assertEqual((0, 0, 2, 3), e.tuple)
-        self.assertEqual('POLYGON((0.0 0.0,0.0 3.0,2.0 3.0,2.0 0.0,0.0 0.0))', e.wkt)
-        self.assertEqual('(0.0, 0.0, 2.0, 3.0)', str(e))
-
-    def test03_equivalence(self):
-        "Testing Envelope equivalence."
-        e1 = Envelope(0.523, 0.217, 253.23, 523.69)
-        e2 = Envelope((0.523, 0.217, 253.23, 523.69))
-        self.assertEqual(e1, e2)
-        self.assertEqual((0.523, 0.217, 253.23, 523.69), e1)
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(EnvelopeTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_gdal_geom.py b/webapp/django/contrib/gis/tests/test_gdal_geom.py
deleted file mode 100644
index b0dab0e..0000000
--- a/webapp/django/contrib/gis/tests/test_gdal_geom.py
+++ /dev/null
@@ -1,403 +0,0 @@
-import unittest
-from django.contrib.gis.gdal import OGRGeometry, OGRGeomType, \
-    OGRException, OGRIndexError, SpatialReference, CoordTransform, \
-    gdal_version
-from django.contrib.gis.tests.geometries import *
-
-class OGRGeomTest(unittest.TestCase):
-    "This tests the OGR Geometry."
-
-    def test00_geomtype(self):
-        "Testing OGRGeomType object."
-
-        # OGRGeomType should initialize on all these inputs.
-        try:
-            g = OGRGeomType(1)
-            g = OGRGeomType(7)
-            g = OGRGeomType('point')
-            g = OGRGeomType('GeometrycollectioN')
-            g = OGRGeomType('LINearrING')
-            g = OGRGeomType('Unknown')
-        except:
-            self.fail('Could not create an OGRGeomType object!')
-
-        # Should throw TypeError on this input
-        self.assertRaises(TypeError, OGRGeomType.__init__, 23)
-        self.assertRaises(TypeError, OGRGeomType.__init__, 'fooD')
-        self.assertRaises(TypeError, OGRGeomType.__init__, 9)
-
-        # Equivalence can take strings, ints, and other OGRGeomTypes
-        self.assertEqual(True, OGRGeomType(1) == OGRGeomType(1))
-        self.assertEqual(True, OGRGeomType(7) == 'GeometryCollection')
-        self.assertEqual(True, OGRGeomType('point') == 'POINT')
-        self.assertEqual(False, OGRGeomType('point') == 2)
-        self.assertEqual(True, OGRGeomType('unknown') == 0)
-        self.assertEqual(True, OGRGeomType(6) == 'MULtiPolyGON')
-        self.assertEqual(False, OGRGeomType(1) != OGRGeomType('point'))
-        self.assertEqual(True, OGRGeomType('POINT') != OGRGeomType(6))
-
-        # Testing the Django field name equivalent property.
-        self.assertEqual('PointField', OGRGeomType('Point').django)
-        self.assertEqual(None, OGRGeomType('Unknown').django)
-        self.assertEqual(None, OGRGeomType('none').django)
-
-    def test01a_wkt(self):
-        "Testing WKT output."
-        for g in wkt_out:
-            geom = OGRGeometry(g.wkt)
-            self.assertEqual(g.wkt, geom.wkt)
-
-    def test01b_gml(self):
-        "Testing GML output."
-        for g in wkt_out:
-            geom = OGRGeometry(g.wkt)
-            self.assertEqual(g.gml, geom.gml)
-
-    def test01c_hex(self):
-        "Testing HEX input/output."
-        for g in hex_wkt:
-            geom1 = OGRGeometry(g.wkt)
-            self.assertEqual(g.hex, geom1.hex)
-            # Constructing w/HEX
-            geom2 = OGRGeometry(g.hex)
-            self.assertEqual(geom1, geom2)
-
-    def test01d_wkb(self):
-        "Testing WKB input/output."
-        from binascii import b2a_hex
-        for g in hex_wkt:
-            geom1 = OGRGeometry(g.wkt)
-            wkb = geom1.wkb
-            self.assertEqual(b2a_hex(wkb).upper(), g.hex)
-            # Constructing w/WKB.
-            geom2 = OGRGeometry(wkb)
-            self.assertEqual(geom1, geom2)
-
-    def test01e_json(self):
-        "Testing GeoJSON input/output."
-        from django.contrib.gis.gdal.prototypes.geom import GEOJSON
-        if not GEOJSON: return
-        for g in json_geoms:
-            geom = OGRGeometry(g.wkt)
-            self.assertEqual(g.json, geom.json)
-            self.assertEqual(g.json, geom.geojson)
-            self.assertEqual(OGRGeometry(g.wkt), OGRGeometry(geom.json))
-
-    def test02_points(self):
-        "Testing Point objects."
-
-        prev = OGRGeometry('POINT(0 0)')
-        for p in points:
-            if not hasattr(p, 'z'): # No 3D
-                pnt = OGRGeometry(p.wkt)
-                self.assertEqual(1, pnt.geom_type)
-                self.assertEqual('POINT', pnt.geom_name)
-                self.assertEqual(p.x, pnt.x)
-                self.assertEqual(p.y, pnt.y)
-                self.assertEqual((p.x, p.y), pnt.tuple)
-
-    def test03_multipoints(self):
-        "Testing MultiPoint objects."
-
-        for mp in multipoints:
-            mgeom1 = OGRGeometry(mp.wkt) # First one from WKT
-            self.assertEqual(4, mgeom1.geom_type)
-            self.assertEqual('MULTIPOINT', mgeom1.geom_name)
-            mgeom2 = OGRGeometry('MULTIPOINT') # Creating empty multipoint
-            mgeom3 = OGRGeometry('MULTIPOINT')
-            for g in mgeom1:
-                mgeom2.add(g) # adding each point from the multipoints
-                mgeom3.add(g.wkt) # should take WKT as well
-            self.assertEqual(mgeom1, mgeom2) # they should equal
-            self.assertEqual(mgeom1, mgeom3)
-            self.assertEqual(mp.points, mgeom2.tuple)
-            self.assertEqual(mp.n_p, mgeom2.point_count)
-                                                                            
-    def test04_linestring(self):
-        "Testing LineString objects."
-        prev = OGRGeometry('POINT(0 0)')
-        for ls in linestrings:
-            linestr = OGRGeometry(ls.wkt)
-            self.assertEqual(2, linestr.geom_type)
-            self.assertEqual('LINESTRING', linestr.geom_name)
-            self.assertEqual(ls.n_p, linestr.point_count)
-            self.assertEqual(ls.tup, linestr.tuple)
-            self.assertEqual(True, linestr == OGRGeometry(ls.wkt))
-            self.assertEqual(True, linestr != prev)
-            self.assertRaises(OGRIndexError, linestr.__getitem__, len(linestr))
-            prev = linestr
-
-            # Testing the x, y properties.
-            x = [tmpx for tmpx, tmpy in ls.tup]
-            y = [tmpy for tmpx, tmpy in ls.tup]
-            self.assertEqual(x, linestr.x)
-            self.assertEqual(y, linestr.y)
-
-    def test05_multilinestring(self):
-        "Testing MultiLineString objects."
-        prev = OGRGeometry('POINT(0 0)')
-        for mls in multilinestrings:
-            mlinestr = OGRGeometry(mls.wkt)
-            self.assertEqual(5, mlinestr.geom_type)
-            self.assertEqual('MULTILINESTRING', mlinestr.geom_name)
-            self.assertEqual(mls.n_p, mlinestr.point_count)
-            self.assertEqual(mls.tup, mlinestr.tuple)
-            self.assertEqual(True, mlinestr == OGRGeometry(mls.wkt))
-            self.assertEqual(True, mlinestr != prev)
-            prev = mlinestr
-            for ls in mlinestr:
-                self.assertEqual(2, ls.geom_type)
-                self.assertEqual('LINESTRING', ls.geom_name)
-            self.assertRaises(OGRIndexError, mlinestr.__getitem__, len(mlinestr)) 
-
-    def test06_linearring(self):
-        "Testing LinearRing objects."
-        prev = OGRGeometry('POINT(0 0)')
-        for rr in linearrings:
-            lr = OGRGeometry(rr.wkt)
-            #self.assertEqual(101, lr.geom_type.num)
-            self.assertEqual('LINEARRING', lr.geom_name)
-            self.assertEqual(rr.n_p, len(lr))
-            self.assertEqual(True, lr == OGRGeometry(rr.wkt))
-            self.assertEqual(True, lr != prev)
-            prev = lr
-
-    def test07a_polygons(self):
-        "Testing Polygon objects."
-        prev = OGRGeometry('POINT(0 0)')
-        for p in polygons:
-            poly = OGRGeometry(p.wkt)
-            self.assertEqual(3, poly.geom_type)
-            self.assertEqual('POLYGON', poly.geom_name)
-            self.assertEqual(p.n_p, poly.point_count)
-            self.assertEqual(p.n_i + 1, len(poly))
-
-            # Testing area & centroid.
-            self.assertAlmostEqual(p.area, poly.area, 9)
-            x, y = poly.centroid.tuple
-            self.assertAlmostEqual(p.centroid[0], x, 9)
-            self.assertAlmostEqual(p.centroid[1], y, 9)
-
-            # Testing equivalence
-            self.assertEqual(True, poly == OGRGeometry(p.wkt))
-            self.assertEqual(True, poly != prev)
-            
-            if p.ext_ring_cs:
-                ring = poly[0]
-                self.assertEqual(p.ext_ring_cs, ring.tuple)
-                self.assertEqual(p.ext_ring_cs, poly[0].tuple)
-                self.assertEqual(len(p.ext_ring_cs), ring.point_count)
-            
-            for r in poly:
-                self.assertEqual('LINEARRING', r.geom_name)
-
-    def test07b_closepolygons(self):
-        "Testing closing Polygon objects."
-        # Both rings in this geometry are not closed.
-        poly = OGRGeometry('POLYGON((0 0, 5 0, 5 5, 0 5), (1 1, 2 1, 2 2, 2 1))')
-        self.assertEqual(8, poly.point_count)
-        print "\nBEGIN - expecting IllegalArgumentException; safe to ignore.\n"
-        try:
-            c = poly.centroid
-        except OGRException:
-            # Should raise an OGR exception, rings are not closed
-            pass
-        else:
-            self.fail('Should have raised an OGRException!')
-        print "\nEND - expecting IllegalArgumentException; safe to ignore.\n"
-
-        # Closing the rings -- doesn't work on GDAL versions 1.4.1 and below:
-        # http://trac.osgeo.org/gdal/ticket/1673
-        major, minor1, minor2 = gdal_version().split('.')
-        if major == '1':
-            iminor1 = int(minor1)
-            if iminor1 < 4 or (iminor1 == 4 and minor2.startswith('1')): return
-        poly.close_rings()
-        self.assertEqual(10, poly.point_count) # Two closing points should've been added
-        self.assertEqual(OGRGeometry('POINT(2.5 2.5)'), poly.centroid)
-
-    def test08_multipolygons(self):
-        "Testing MultiPolygon objects."
-        prev = OGRGeometry('POINT(0 0)')
-        for mp in multipolygons:
-            mpoly = OGRGeometry(mp.wkt)
-            self.assertEqual(6, mpoly.geom_type)
-            self.assertEqual('MULTIPOLYGON', mpoly.geom_name)
-            if mp.valid:
-                self.assertEqual(mp.n_p, mpoly.point_count)
-                self.assertEqual(mp.num_geom, len(mpoly))
-                self.assertRaises(OGRIndexError, mpoly.__getitem__, len(mpoly))
-                for p in mpoly:
-                    self.assertEqual('POLYGON', p.geom_name)
-                    self.assertEqual(3, p.geom_type)
-            self.assertEqual(mpoly.wkt, OGRGeometry(mp.wkt).wkt)
-
-    def test09a_srs(self):
-        "Testing OGR Geometries with Spatial Reference objects."
-        for mp in multipolygons:
-            # Creating a geometry w/spatial reference
-            sr = SpatialReference('WGS84')
-            mpoly = OGRGeometry(mp.wkt, sr)
-            self.assertEqual(sr.wkt, mpoly.srs.wkt)
-          
-            # Ensuring that SRS is propagated to clones.
-            klone = mpoly.clone()
-            self.assertEqual(sr.wkt, klone.srs.wkt)
-  
-            # Ensuring all children geometries (polygons and their rings) all
-            # return the assigned spatial reference as well.
-            for poly in mpoly:
-                self.assertEqual(sr.wkt, poly.srs.wkt)
-                for ring in poly:
-                    self.assertEqual(sr.wkt, ring.srs.wkt)
-
-            # Ensuring SRS propagate in topological ops.
-            a, b = topology_geoms[0]
-            a, b = OGRGeometry(a.wkt, sr), OGRGeometry(b.wkt, sr)
-            diff = a.difference(b)
-            union = a.union(b)
-            self.assertEqual(sr.wkt, diff.srs.wkt)
-            self.assertEqual(sr.srid, union.srs.srid)
-
-            # Instantiating w/an integer SRID
-            mpoly = OGRGeometry(mp.wkt, 4326)
-            self.assertEqual(4326, mpoly.srid)
-            mpoly.srs = SpatialReference(4269)
-            self.assertEqual(4269, mpoly.srid)
-            self.assertEqual('NAD83', mpoly.srs.name)
-          
-            # Incrementing through the multipolyogn after the spatial reference
-            # has been re-assigned.
-            for poly in mpoly:
-                self.assertEqual(mpoly.srs.wkt, poly.srs.wkt)
-                poly.srs = 32140
-                for ring in poly:
-                    # Changing each ring in the polygon
-                    self.assertEqual(32140, ring.srs.srid)
-                    self.assertEqual('NAD83 / Texas South Central', ring.srs.name)
-                    ring.srs = str(SpatialReference(4326)) # back to WGS84
-                    self.assertEqual(4326, ring.srs.srid)
-
-                    # Using the `srid` property.
-                    ring.srid = 4322
-                    self.assertEqual('WGS 72', ring.srs.name)
-                    self.assertEqual(4322, ring.srid)
-
-    def test09b_srs_transform(self):
-        "Testing transform()."
-        orig = OGRGeometry('POINT (-104.609 38.255)', 4326)
-        trans = OGRGeometry('POINT (992385.4472045 481455.4944650)', 2774)
-
-        # Using an srid, a SpatialReference object, and a CoordTransform object
-        # or transformations.
-        t1, t2, t3 = orig.clone(), orig.clone(), orig.clone()
-        t1.transform(trans.srid)
-        t2.transform(SpatialReference('EPSG:2774'))
-        ct = CoordTransform(SpatialReference('WGS84'), SpatialReference(2774))
-        t3.transform(ct)
-
-        # Testing use of the `clone` keyword.
-        k1 = orig.clone()
-        k2 = k1.transform(trans.srid, clone=True)
-        self.assertEqual(k1, orig)
-        self.assertNotEqual(k1, k2)
-
-        prec = 3
-        for p in (t1, t2, t3, k2):
-            self.assertAlmostEqual(trans.x, p.x, prec)
-            self.assertAlmostEqual(trans.y, p.y, prec)
-
-    def test10_difference(self):
-        "Testing difference()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = OGRGeometry(g_tup[0].wkt)
-            b = OGRGeometry(g_tup[1].wkt)
-            d1 = OGRGeometry(diff_geoms[i].wkt)
-            d2 = a.difference(b)
-            self.assertEqual(d1, d2)
-            self.assertEqual(d1, a - b) # __sub__ is difference operator
-            a -= b # testing __isub__
-            self.assertEqual(d1, a)
-
-    def test11_intersection(self):
-        "Testing intersects() and intersection()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = OGRGeometry(g_tup[0].wkt)
-            b = OGRGeometry(g_tup[1].wkt)
-            i1 = OGRGeometry(intersect_geoms[i].wkt)
-            self.assertEqual(True, a.intersects(b))
-            i2 = a.intersection(b)
-            self.assertEqual(i1, i2)
-            self.assertEqual(i1, a & b) # __and__ is intersection operator
-            a &= b # testing __iand__
-            self.assertEqual(i1, a)
-
-    def test12_symdifference(self):
-        "Testing sym_difference()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = OGRGeometry(g_tup[0].wkt)
-            b = OGRGeometry(g_tup[1].wkt)
-            d1 = OGRGeometry(sdiff_geoms[i].wkt)
-            d2 = a.sym_difference(b)
-            self.assertEqual(d1, d2)
-            self.assertEqual(d1, a ^ b) # __xor__ is symmetric difference operator
-            a ^= b # testing __ixor__
-            self.assertEqual(d1, a)
-            
-    def test13_union(self):
-        "Testing union()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = OGRGeometry(g_tup[0].wkt)
-            b = OGRGeometry(g_tup[1].wkt)
-            u1 = OGRGeometry(union_geoms[i].wkt)
-            u2 = a.union(b)
-            self.assertEqual(u1, u2)
-            self.assertEqual(u1, a | b) # __or__ is union operator
-            a |= b # testing __ior__
-            self.assertEqual(u1, a)
-
-    def test14_add(self):
-        "Testing GeometryCollection.add()."
-        # Can't insert a Point into a MultiPolygon.
-        mp = OGRGeometry('MultiPolygon')
-        pnt = OGRGeometry('POINT(5 23)')
-        self.assertRaises(OGRException, mp.add, pnt)
-
-        # GeometryCollection.add may take an OGRGeometry (if another collection
-        # of the same type all child geoms will be added individually) or WKT.
-        for mp in multipolygons:
-            mpoly = OGRGeometry(mp.wkt)
-            mp1 = OGRGeometry('MultiPolygon')
-            mp2 = OGRGeometry('MultiPolygon')
-            mp3 = OGRGeometry('MultiPolygon')
-
-            for poly in mpoly:
-                mp1.add(poly) # Adding a geometry at a time
-                mp2.add(poly.wkt) # Adding WKT
-            mp3.add(mpoly) # Adding a MultiPolygon's entire contents at once.
-            for tmp in (mp1, mp2, mp3): self.assertEqual(mpoly, tmp)
-
-    def test15_extent(self):
-        "Testing `extent` property."
-        # The xmin, ymin, xmax, ymax of the MultiPoint should be returned.
-        mp = OGRGeometry('MULTIPOINT(5 23, 0 0, 10 50)')
-        self.assertEqual((0.0, 0.0, 10.0, 50.0), mp.extent)
-        # Testing on the 'real world' Polygon.
-        poly = OGRGeometry(polygons[3].wkt)
-        ring = poly.shell
-        x, y = ring.x, ring.y
-        xmin, ymin = min(x), min(y)
-        xmax, ymax = max(x), max(y)
-        self.assertEqual((xmin, ymin, xmax, ymax), poly.extent)
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(OGRGeomTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_gdal_srs.py b/webapp/django/contrib/gis/tests/test_gdal_srs.py
deleted file mode 100644
index 2742c7a..0000000
--- a/webapp/django/contrib/gis/tests/test_gdal_srs.py
+++ /dev/null
@@ -1,169 +0,0 @@
-import unittest
-from django.contrib.gis.gdal import SpatialReference, CoordTransform, OGRException, SRSException
-
-class TestSRS:
-    def __init__(self, wkt, **kwargs):
-        self.wkt = wkt
-        for key, value in kwargs.items():
-            setattr(self, key, value)
-
-# Some Spatial Reference examples
-srlist = (TestSRS('GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]',
-                  proj='+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ',
-                  epsg=4326, projected=False, geographic=True, local=False,
-                  lin_name='unknown', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,
-                  auth={'GEOGCS' : ('EPSG', '4326'), 'spheroid' : ('EPSG', '7030')},
-                  attr=(('DATUM', 'WGS_1984'), (('SPHEROID', 1), '6378137'),('primem|authority', 'EPSG'),),
-                  ),
-          TestSRS('PROJCS["NAD83 / Texas South Central",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["standard_parallel_1",30.28333333333333],PARAMETER["standard_parallel_2",28.38333333333333],PARAMETER["latitude_of_origin",27.83333333333333],PARAMETER["central_meridian",-99],PARAMETER["false_easting",600000],PARAMETER["false_northing",4000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32140"]]',
-                  proj='+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs ',
-                  epsg=32140, projected=True, geographic=False, local=False,
-                  lin_name='metre', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,
-                  auth={'PROJCS' : ('EPSG', '32140'), 'spheroid' : ('EPSG', '7019'), 'unit' : ('EPSG', '9001'),},
-                  attr=(('DATUM', 'North_American_Datum_1983'),(('SPHEROID', 2), '298.257222101'),('PROJECTION','Lambert_Conformal_Conic_2SP'),),
-                  ),
-          TestSRS('PROJCS["NAD_1983_StatePlane_Texas_South_Central_FIPS_4204_Feet",GEOGCS["GCS_North_American_1983",DATUM["North_American_Datum_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333334],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Foot_US",0.3048006096012192]]',
-                  proj='+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333334 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=3999999.999999999 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs ',
-                  epsg=None, projected=True, geographic=False, local=False,
-                  lin_name='Foot_US', ang_name='Degree', lin_units=0.3048006096012192, ang_units=0.0174532925199,
-                  auth={'PROJCS' : (None, None),},
-                  attr=(('PROJCS|GeOgCs|spheroid', 'GRS_1980'),(('projcs', 9), 'UNIT'), (('projcs', 11), None),),
-                  ),
-          # This is really ESRI format, not WKT -- but the import should work the same
-          TestSRS('LOCAL_CS["Non-Earth (Meter)",LOCAL_DATUM["Local Datum",0],UNIT["Meter",1.0],AXIS["X",EAST],AXIS["Y",NORTH]]',
-                  esri=True, proj=None, epsg=None, projected=False, geographic=False, local=True,
-                  lin_name='Meter', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,
-                  attr=(('LOCAL_DATUM', 'Local Datum'), ('unit', 'Meter')),
-                  ),
-          )
-
-# Well-Known Names
-well_known = (TestSRS('GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]', wk='WGS84', name='WGS 84', attrs=(('GEOGCS|AUTHORITY', 1, '4326'), ('SPHEROID', 'WGS 84'))),
-              TestSRS('GEOGCS["WGS 72",DATUM["WGS_1972",SPHEROID["WGS 72",6378135,298.26,AUTHORITY["EPSG","7043"]],AUTHORITY["EPSG","6322"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4322"]]', wk='WGS72', name='WGS 72', attrs=(('GEOGCS|AUTHORITY', 1, '4322'), ('SPHEROID', 'WGS 72'))),
-              TestSRS('GEOGCS["NAD27",DATUM["North_American_Datum_1927",SPHEROID["Clarke 1866",6378206.4,294.9786982138982,AUTHORITY["EPSG","7008"]],AUTHORITY["EPSG","6267"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4267"]]', wk='NAD27', name='NAD27', attrs=(('GEOGCS|AUTHORITY', 1, '4267'), ('SPHEROID', 'Clarke 1866'))),
-              TestSRS('GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]]', wk='NAD83', name='NAD83', attrs=(('GEOGCS|AUTHORITY', 1, '4269'), ('SPHEROID', 'GRS 1980'))),
-              TestSRS('PROJCS["NZGD49 / Karamea Circuit",GEOGCS["NZGD49",DATUM["New_Zealand_Geodetic_Datum_1949",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHORITY["EPSG","6272"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4272"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",-41.28991152777778],PARAMETER["central_meridian",172.1090281944444],PARAMETER["scale_factor",1],PARAMETER["false_easting",300000],PARAMETER["false_northing",700000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","27216"]]', wk='EPSG:27216', name='NZGD49 / Karamea Circuit', attrs=(('PROJECTION','Transverse_Mercator'), ('SPHEROID', 'International 1924'))),
-              )
-
-bad_srlist = ('Foobar', 'OOJCS["NAD83 / Texas South Central",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["standard_parallel_1",30.28333333333333],PARAMETER["standard_parallel_2",28.38333333333333],PARAMETER["latitude_of_origin",27.83333333333333],PARAMETER["central_meridian",-99],PARAMETER["false_easting",600000],PARAMETER["false_northing",4000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32140"]]',)
-
-class SpatialRefTest(unittest.TestCase):
-
-    def test01_wkt(self):
-        "Testing initialization on valid OGC WKT."
-        for s in srlist:
-            srs = SpatialReference(s.wkt)
-
-    def test02_bad_wkt(self):
-        "Testing initialization on invalid WKT."
-        for bad in bad_srlist:
-            try:
-                srs = SpatialReference(bad)
-                srs.validate()
-            except (SRSException, OGRException):
-                pass
-            else:
-                self.fail('Should not have initialized on bad WKT "%s"!')
-
-    def test03_get_wkt(self):
-        "Testing getting the WKT."
-        for s in srlist:
-            srs = SpatialReference(s.wkt)
-            self.assertEqual(s.wkt, srs.wkt)
-
-    def test04_proj(self):
-        "Test PROJ.4 import and export."
-
-        for s in srlist:
-            if s.proj:
-                srs1 = SpatialReference(s.wkt)
-                srs2 = SpatialReference(s.proj)
-                self.assertEqual(srs1.proj, srs2.proj)
-        
-    def test05_epsg(self):
-        "Test EPSG import."
-        for s in srlist:
-            if s.epsg:
-                srs1 = SpatialReference(s.wkt)
-                srs2 = SpatialReference(s.epsg)
-                srs3 = SpatialReference(str(s.epsg))
-                srs4 = SpatialReference('EPSG:%d' % s.epsg)
-                #self.assertEqual(srs1.wkt, srs2.wkt)
-                for srs in (srs1, srs2, srs3, srs4):
-                    for attr, expected in s.attr:
-                        self.assertEqual(expected, srs[attr])
-
-    def test07_boolean_props(self):
-        "Testing the boolean properties."
-        for s in srlist:
-            srs = SpatialReference(s.wkt)
-            self.assertEqual(s.projected, srs.projected)
-            self.assertEqual(s.geographic, srs.geographic)
-
-    def test08_angular_linear(self):
-        "Testing the linear and angular units routines."
-        for s in srlist:
-            srs = SpatialReference(s.wkt)
-            self.assertEqual(s.ang_name, srs.angular_name)
-            self.assertEqual(s.lin_name, srs.linear_name)
-            self.assertAlmostEqual(s.ang_units, srs.angular_units, 9)
-            self.assertAlmostEqual(s.lin_units, srs.linear_units, 9)
-
-    def test09_authority(self):
-        "Testing the authority name & code routines."
-        for s in srlist:
-            if hasattr(s, 'auth'):
-                srs = SpatialReference(s.wkt)
-                for target, tup in s.auth.items():
-                    self.assertEqual(tup[0], srs.auth_name(target))
-                    self.assertEqual(tup[1], srs.auth_code(target))
-
-    def test10_attributes(self):
-        "Testing the attribute retrieval routines."
-        for s in srlist:
-            srs = SpatialReference(s.wkt)
-            for tup in s.attr:
-                att = tup[0] # Attribute to test
-                exp = tup[1] # Expected result
-                self.assertEqual(exp, srs[att])
-
-    def test11_wellknown(self):
-        "Testing Well Known Names of Spatial References."
-        for s in well_known:
-            srs = SpatialReference(s.wk)
-            self.assertEqual(s.name, srs.name)
-            for tup in s.attrs:
-                if len(tup) == 2:
-                    key = tup[0]
-                    exp = tup[1]
-                elif len(tup) == 3:
-                    key = tup[:2]
-                    exp = tup[2]
-                self.assertEqual(srs[key], exp)
-
-    def test12_coordtransform(self):
-        "Testing initialization of a CoordTransform."
-        target = SpatialReference('WGS84')
-        for s in srlist:
-            if s.proj:
-                ct = CoordTransform(SpatialReference(s.wkt), target)
-
-    def test13_attr_value(self):
-        "Testing the attr_value() method."
-        s1 = SpatialReference('WGS84')
-        self.assertRaises(TypeError, s1.__getitem__, 0)
-        self.assertRaises(TypeError, s1.__getitem__, ('GEOGCS', 'foo'))
-        self.assertEqual('WGS 84', s1['GEOGCS'])
-        self.assertEqual('WGS_1984', s1['DATUM'])
-        self.assertEqual('EPSG', s1['AUTHORITY'])
-        self.assertEqual(4326, int(s1['AUTHORITY', 1]))
-        #for i in range(7): self.assertEqual(0, int(s1['TOWGS84', i]))
-        self.assertEqual(None, s1['FOOBAR'])
-    
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(SpatialRefTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_geoip.py b/webapp/django/contrib/gis/tests/test_geoip.py
deleted file mode 100644
index 44b0802..0000000
--- a/webapp/django/contrib/gis/tests/test_geoip.py
+++ /dev/null
@@ -1,104 +0,0 @@
-import os, unittest
-from django.db import settings
-from django.contrib.gis.geos import GEOSGeometry
-from django.contrib.gis.utils import GeoIP, GeoIPException
-
-# Note: Requires use of both the GeoIP country and city datasets.
-# The GEOIP_DATA path should be the only setting set (the directory
-# should contain links or the actual database files 'GeoIP.dat' and 
-# 'GeoLiteCity.dat'.
-class GeoIPTest(unittest.TestCase):
-    
-    def test01_init(self):
-        "Testing GeoIP initialization."
-        g1 = GeoIP() # Everything inferred from GeoIP path
-        path = settings.GEOIP_PATH
-        g2 = GeoIP(path, 0) # Passing in data path explicitly.
-        g3 = GeoIP.open(path, 0) # MaxMind Python API syntax.
-
-        for g in (g1, g2, g3):
-            self.assertEqual(True, bool(g._country))
-            self.assertEqual(True, bool(g._city))
-        
-        # Only passing in the location of one database.
-        city = os.path.join(path, 'GeoLiteCity.dat')
-        cntry = os.path.join(path, 'GeoIP.dat')
-        g4 = GeoIP(city, country='')
-        self.assertEqual(None, g4._country)
-        g5 = GeoIP(cntry, city='')
-        self.assertEqual(None, g5._city)
-
-        # Improper parameters.
-        bad_params = (23, 'foo', 15.23)
-        for bad in bad_params:
-            self.assertRaises(GeoIPException, GeoIP, cache=bad)
-            if isinstance(bad, basestring):
-                e = GeoIPException
-            else:
-                e = TypeError
-            self.assertRaises(e, GeoIP, bad, 0)
-
-    def test02_bad_query(self):
-        "Testing GeoIP query parameter checking."
-        cntry_g = GeoIP(city='<foo>')
-        # No city database available, these calls should fail.
-        self.assertRaises(GeoIPException, cntry_g.city, 'google.com')
-        self.assertRaises(GeoIPException, cntry_g.coords, 'yahoo.com')
-
-        # Non-string query should raise TypeError
-        self.assertRaises(TypeError, cntry_g.country_code, 17)
-        self.assertRaises(TypeError, cntry_g.country_name, GeoIP)
-
-    def test03_country(self):
-        "Testing GeoIP country querying methods."
-        g = GeoIP(city='<foo>')
-        
-        fqdn = 'www.google.com'
-        addr = '12.215.42.19'
-        
-        for query in (fqdn, addr):
-            for func in (g.country_code, g.country_code_by_addr, g.country_code_by_name):
-                self.assertEqual('US', func(query))
-            for func in (g.country_name, g.country_name_by_addr, g.country_name_by_name):
-                self.assertEqual('United States', func(query))
-            self.assertEqual({'country_code' : 'US', 'country_name' : 'United States'},
-                             g.country(query))
-
-    def test04_city(self):
-        "Testing GeoIP city querying methods."
-        g = GeoIP(country='<foo>')
-        
-        addr = '130.80.29.3'
-        fqdn = 'chron.com'
-        for query in (fqdn, addr):
-            # Country queries should still work.
-            for func in (g.country_code, g.country_code_by_addr, g.country_code_by_name):
-                self.assertEqual('US', func(query))
-            for func in (g.country_name, g.country_name_by_addr, g.country_name_by_name):
-                self.assertEqual('United States', func(query))
-            self.assertEqual({'country_code' : 'US', 'country_name' : 'United States'},
-                             g.country(query))
-            
-            # City information dictionary.
-            d = g.city(query)
-            self.assertEqual('USA', d['country_code3'])
-            self.assertEqual('Houston', d['city'])
-            self.assertEqual('TX', d['region'])
-            self.assertEqual('77002', d['postal_code'])
-            self.assertEqual(713, d['area_code'])
-            geom = g.geos(query)
-            self.failIf(not isinstance(geom, GEOSGeometry))
-            lon, lat = (-95.366996765, 29.752300262)
-            lat_lon = g.lat_lon(query)
-            lat_lon = (lat_lon[1], lat_lon[0])
-            for tup in (geom.tuple, g.coords(query), g.lon_lat(query), lat_lon):
-                self.assertAlmostEqual(lon, tup[0], 9)
-                self.assertAlmostEqual(lat, tup[1], 9)
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(GeoIPTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_geos.py b/webapp/django/contrib/gis/tests/test_geos.py
deleted file mode 100644
index 8ea4507..0000000
--- a/webapp/django/contrib/gis/tests/test_geos.py
+++ /dev/null
@@ -1,775 +0,0 @@
-import random, unittest, sys
-from ctypes import ArgumentError
-from django.contrib.gis.geos import *
-from django.contrib.gis.geos.base import HAS_GDAL
-from django.contrib.gis.tests.geometries import *
-    
-if HAS_NUMPY: from numpy import array
-if HAS_GDAL: from django.contrib.gis.gdal import OGRGeometry, SpatialReference, CoordTransform, GEOJSON
-
-class GEOSTest(unittest.TestCase):
-
-    @property
-    def null_srid(self):
-        """
-        Returns the proper null SRID depending on the GEOS version.
-        See the comments in `test15_srid` for more details. 
-        """
-        info = geos_version_info()
-        if info['version'] == '3.0.0' and info['release_candidate']:
-            return -1
-        else:
-            return None
-
-    def test01a_wkt(self):
-        "Testing WKT output."
-        for g in wkt_out:
-            geom = fromstr(g.wkt)
-            self.assertEqual(g.ewkt, geom.wkt)
-
-    def test01b_hex(self):
-        "Testing HEX output."
-        for g in hex_wkt:
-            geom = fromstr(g.wkt)
-            self.assertEqual(g.hex, geom.hex)
-
-    def test01c_kml(self):
-        "Testing KML output."
-        for tg in wkt_out:
-            geom = fromstr(tg.wkt)
-            kml = getattr(tg, 'kml', False)
-            if kml: self.assertEqual(kml, geom.kml)
-
-    def test01d_errors(self):
-        "Testing the Error handlers."
-        # string-based
-        print "\nBEGIN - expecting GEOS_ERROR; safe to ignore.\n"
-        for err in errors:
-            try:
-                g = fromstr(err.wkt)
-            except (GEOSException, ValueError):
-                pass
-        print "\nEND - expecting GEOS_ERROR; safe to ignore.\n"
-        
-        class NotAGeometry(object):
-            pass
-        
-        # Some other object
-        self.assertRaises(TypeError, GEOSGeometry, NotAGeometry())
-        # None
-        self.assertRaises(TypeError, GEOSGeometry, None)
-        # Bad WKB
-        self.assertRaises(GEOSException, GEOSGeometry, buffer('0'))
-                
-    def test01e_wkb(self):
-        "Testing WKB output."
-        from binascii import b2a_hex
-        for g in hex_wkt:
-            geom = fromstr(g.wkt)
-            wkb = geom.wkb
-            self.assertEqual(b2a_hex(wkb).upper(), g.hex)
-
-    def test01f_create_hex(self):
-        "Testing creation from HEX."
-        for g in hex_wkt:
-            geom_h = GEOSGeometry(g.hex)
-            # we need to do this so decimal places get normalised
-            geom_t = fromstr(g.wkt)
-            self.assertEqual(geom_t.wkt, geom_h.wkt)
-
-    def test01g_create_wkb(self):
-        "Testing creation from WKB."
-        from binascii import a2b_hex
-        for g in hex_wkt:
-            wkb = buffer(a2b_hex(g.hex))
-            geom_h = GEOSGeometry(wkb)
-            # we need to do this so decimal places get normalised
-            geom_t = fromstr(g.wkt)
-            self.assertEqual(geom_t.wkt, geom_h.wkt)
-
-    def test01h_ewkt(self):
-        "Testing EWKT."
-        srid = 32140
-        for p in polygons:
-            ewkt = 'SRID=%d;%s' % (srid, p.wkt)
-            poly = fromstr(ewkt)
-            self.assertEqual(srid, poly.srid)
-            self.assertEqual(srid, poly.shell.srid)
-            self.assertEqual(srid, fromstr(poly.ewkt).srid) # Checking export
-    
-    def test01i_json(self):
-        "Testing GeoJSON input/output (via GDAL)."
-        if not HAS_GDAL or not GEOJSON: return
-        for g in json_geoms:
-            geom = GEOSGeometry(g.wkt)
-            self.assertEqual(g.json, geom.json)
-            self.assertEqual(g.json, geom.geojson)
-            self.assertEqual(GEOSGeometry(g.wkt), GEOSGeometry(geom.json))
-
-    def test01j_eq(self):
-        "Testing equivalence."
-        p = fromstr('POINT(5 23)')
-        self.assertEqual(p, p.wkt)
-        self.assertNotEqual(p, 'foo')
-        ls = fromstr('LINESTRING(0 0, 1 1, 5 5)')
-        self.assertEqual(ls, ls.wkt)
-        self.assertNotEqual(p, 'bar')
-        # Error shouldn't be raise on equivalence testing with 
-        # an invalid type.
-        for g in (p, ls):
-            self.assertNotEqual(g, None)
-            self.assertNotEqual(g, {'foo' : 'bar'})
-            self.assertNotEqual(g, False)
-
-    def test02a_points(self):
-        "Testing Point objects."
-        prev = fromstr('POINT(0 0)')
-        for p in points:
-            # Creating the point from the WKT
-            pnt = fromstr(p.wkt)
-            self.assertEqual(pnt.geom_type, 'Point')
-            self.assertEqual(pnt.geom_typeid, 0)
-            self.assertEqual(p.x, pnt.x)
-            self.assertEqual(p.y, pnt.y)
-            self.assertEqual(True, pnt == fromstr(p.wkt))
-            self.assertEqual(False, pnt == prev)
-
-            # Making sure that the point's X, Y components are what we expect
-            self.assertAlmostEqual(p.x, pnt.tuple[0], 9)
-            self.assertAlmostEqual(p.y, pnt.tuple[1], 9)
-
-            # Testing the third dimension, and getting the tuple arguments
-            if hasattr(p, 'z'):
-                self.assertEqual(True, pnt.hasz)
-                self.assertEqual(p.z, pnt.z)
-                self.assertEqual(p.z, pnt.tuple[2], 9)
-                tup_args = (p.x, p.y, p.z)
-                set_tup1 = (2.71, 3.14, 5.23)
-                set_tup2 = (5.23, 2.71, 3.14)
-            else:
-                self.assertEqual(False, pnt.hasz)
-                self.assertEqual(None, pnt.z)
-                tup_args = (p.x, p.y)
-                set_tup1 = (2.71, 3.14)
-                set_tup2 = (3.14, 2.71)
-
-            # Centroid operation on point should be point itself
-            self.assertEqual(p.centroid, pnt.centroid.tuple)
-
-            # Now testing the different constructors
-            pnt2 = Point(tup_args)  # e.g., Point((1, 2))
-            pnt3 = Point(*tup_args) # e.g., Point(1, 2)
-            self.assertEqual(True, pnt == pnt2)
-            self.assertEqual(True, pnt == pnt3)
-
-            # Now testing setting the x and y
-            pnt.y = 3.14
-            pnt.x = 2.71
-            self.assertEqual(3.14, pnt.y)
-            self.assertEqual(2.71, pnt.x)
-
-            # Setting via the tuple/coords property
-            pnt.tuple = set_tup1
-            self.assertEqual(set_tup1, pnt.tuple)
-            pnt.coords = set_tup2
-            self.assertEqual(set_tup2, pnt.coords)
-            
-            prev = pnt # setting the previous geometry
-
-    def test02b_multipoints(self):
-        "Testing MultiPoint objects."
-        for mp in multipoints:
-            mpnt = fromstr(mp.wkt)
-            self.assertEqual(mpnt.geom_type, 'MultiPoint')
-            self.assertEqual(mpnt.geom_typeid, 4)
-
-            self.assertAlmostEqual(mp.centroid[0], mpnt.centroid.tuple[0], 9)
-            self.assertAlmostEqual(mp.centroid[1], mpnt.centroid.tuple[1], 9)
-
-            self.assertRaises(GEOSIndexError, mpnt.__getitem__, len(mpnt))
-            self.assertEqual(mp.centroid, mpnt.centroid.tuple)
-            self.assertEqual(mp.points, tuple(m.tuple for m in mpnt))
-            for p in mpnt:
-                self.assertEqual(p.geom_type, 'Point')
-                self.assertEqual(p.geom_typeid, 0)
-                self.assertEqual(p.empty, False)
-                self.assertEqual(p.valid, True)
-
-    def test03a_linestring(self):
-        "Testing LineString objects."
-        prev = fromstr('POINT(0 0)')
-        for l in linestrings:
-            ls = fromstr(l.wkt)
-            self.assertEqual(ls.geom_type, 'LineString')
-            self.assertEqual(ls.geom_typeid, 1)
-            self.assertEqual(ls.empty, False)
-            self.assertEqual(ls.ring, False)
-            if hasattr(l, 'centroid'):
-                self.assertEqual(l.centroid, ls.centroid.tuple)
-            if hasattr(l, 'tup'):
-                self.assertEqual(l.tup, ls.tuple)
-                
-            self.assertEqual(True, ls == fromstr(l.wkt))
-            self.assertEqual(False, ls == prev)
-            self.assertRaises(GEOSIndexError, ls.__getitem__, len(ls))
-            prev = ls
-
-            # Creating a LineString from a tuple, list, and numpy array
-            self.assertEqual(ls, LineString(ls.tuple))  # tuple
-            self.assertEqual(ls, LineString(*ls.tuple)) # as individual arguments
-            self.assertEqual(ls, LineString([list(tup) for tup in ls.tuple])) # as list
-            self.assertEqual(ls.wkt, LineString(*tuple(Point(tup) for tup in ls.tuple)).wkt) # Point individual arguments
-            if HAS_NUMPY: self.assertEqual(ls, LineString(array(ls.tuple))) # as numpy array
-
-    def test03b_multilinestring(self):
-        "Testing MultiLineString objects."
-        prev = fromstr('POINT(0 0)')
-        for l in multilinestrings:
-            ml = fromstr(l.wkt)
-            self.assertEqual(ml.geom_type, 'MultiLineString')
-            self.assertEqual(ml.geom_typeid, 5)
-
-            self.assertAlmostEqual(l.centroid[0], ml.centroid.x, 9)
-            self.assertAlmostEqual(l.centroid[1], ml.centroid.y, 9)
-
-            self.assertEqual(True, ml == fromstr(l.wkt))
-            self.assertEqual(False, ml == prev)
-            prev = ml
-
-            for ls in ml:
-                self.assertEqual(ls.geom_type, 'LineString')
-                self.assertEqual(ls.geom_typeid, 1)
-                self.assertEqual(ls.empty, False)
-
-            self.assertRaises(GEOSIndexError, ml.__getitem__, len(ml))
-            self.assertEqual(ml.wkt, MultiLineString(*tuple(s.clone() for s in ml)).wkt)
-            self.assertEqual(ml, MultiLineString(*tuple(LineString(s.tuple) for s in ml)))
-
-    def test04_linearring(self):
-        "Testing LinearRing objects."
-        for rr in linearrings:
-            lr = fromstr(rr.wkt)
-            self.assertEqual(lr.geom_type, 'LinearRing')
-            self.assertEqual(lr.geom_typeid, 2)
-            self.assertEqual(rr.n_p, len(lr))
-            self.assertEqual(True, lr.valid)
-            self.assertEqual(False, lr.empty)
-
-            # Creating a LinearRing from a tuple, list, and numpy array
-            self.assertEqual(lr, LinearRing(lr.tuple))
-            self.assertEqual(lr, LinearRing(*lr.tuple))
-            self.assertEqual(lr, LinearRing([list(tup) for tup in lr.tuple]))
-            if HAS_NUMPY: self.assertEqual(lr, LinearRing(array(lr.tuple)))
-    
-    def test05a_polygons(self):
-        "Testing Polygon objects."
-        prev = fromstr('POINT(0 0)')
-        for p in polygons:
-            # Creating the Polygon, testing its properties.
-            poly = fromstr(p.wkt)
-            self.assertEqual(poly.geom_type, 'Polygon')
-            self.assertEqual(poly.geom_typeid, 3)
-            self.assertEqual(poly.empty, False)
-            self.assertEqual(poly.ring, False)
-            self.assertEqual(p.n_i, poly.num_interior_rings)
-            self.assertEqual(p.n_i + 1, len(poly)) # Testing __len__
-            self.assertEqual(p.n_p, poly.num_points)
-
-            # Area & Centroid
-            self.assertAlmostEqual(p.area, poly.area, 9)
-            self.assertAlmostEqual(p.centroid[0], poly.centroid.tuple[0], 9)
-            self.assertAlmostEqual(p.centroid[1], poly.centroid.tuple[1], 9)
-
-            # Testing the geometry equivalence
-            self.assertEqual(True, poly == fromstr(p.wkt))
-            self.assertEqual(False, poly == prev) # Should not be equal to previous geometry
-            self.assertEqual(True, poly != prev)
-
-            # Testing the exterior ring
-            ring = poly.exterior_ring
-            self.assertEqual(ring.geom_type, 'LinearRing')
-            self.assertEqual(ring.geom_typeid, 2)
-            if p.ext_ring_cs:
-                self.assertEqual(p.ext_ring_cs, ring.tuple)
-                self.assertEqual(p.ext_ring_cs, poly[0].tuple) # Testing __getitem__
-
-            # Testing __getitem__ and __setitem__ on invalid indices
-            self.assertRaises(GEOSIndexError, poly.__getitem__, len(poly))
-            self.assertRaises(GEOSIndexError, poly.__setitem__, len(poly), False)
-            self.assertRaises(GEOSIndexError, poly.__getitem__, -1)
-
-            # Testing __iter__ 
-            for r in poly:
-                self.assertEqual(r.geom_type, 'LinearRing')
-                self.assertEqual(r.geom_typeid, 2)
-
-            # Testing polygon construction.
-            self.assertRaises(TypeError, Polygon.__init__, 0, [1, 2, 3])
-            self.assertRaises(TypeError, Polygon.__init__, 'foo')
-            
-            # Polygon(shell, (hole1, ... holeN))
-            rings = tuple(r for r in poly)
-            self.assertEqual(poly, Polygon(rings[0], rings[1:]))
-            
-            # Polygon(shell_tuple, hole_tuple1, ... , hole_tupleN)
-            ring_tuples = tuple(r.tuple for r in poly)
-            self.assertEqual(poly, Polygon(*ring_tuples))
-
-            # Constructing with tuples of LinearRings.
-            self.assertEqual(poly.wkt, Polygon(*tuple(r for r in poly)).wkt)
-            self.assertEqual(poly.wkt, Polygon(*tuple(LinearRing(r.tuple) for r in poly)).wkt)
-
-    def test05b_multipolygons(self):
-        "Testing MultiPolygon objects."
-        print "\nBEGIN - expecting GEOS_NOTICE; safe to ignore.\n"
-        prev = fromstr('POINT (0 0)')
-        for mp in multipolygons:
-            mpoly = fromstr(mp.wkt)
-            self.assertEqual(mpoly.geom_type, 'MultiPolygon')
-            self.assertEqual(mpoly.geom_typeid, 6)
-            self.assertEqual(mp.valid, mpoly.valid)
-
-            if mp.valid:
-                self.assertEqual(mp.num_geom, mpoly.num_geom)
-                self.assertEqual(mp.n_p, mpoly.num_coords)
-                self.assertEqual(mp.num_geom, len(mpoly))
-                self.assertRaises(GEOSIndexError, mpoly.__getitem__, len(mpoly))
-                for p in mpoly:
-                    self.assertEqual(p.geom_type, 'Polygon')
-                    self.assertEqual(p.geom_typeid, 3)
-                    self.assertEqual(p.valid, True)
-                self.assertEqual(mpoly.wkt, MultiPolygon(*tuple(poly.clone() for poly in mpoly)).wkt)
-
-        print "\nEND - expecting GEOS_NOTICE; safe to ignore.\n"  
-
-    def test06a_memory_hijinks(self):
-        "Testing Geometry __del__() on rings and polygons."
-        #### Memory issues with rings and polygons
-
-        # These tests are needed to ensure sanity with writable geometries.
-
-        # Getting a polygon with interior rings, and pulling out the interior rings
-        poly = fromstr(polygons[1].wkt)
-        ring1 = poly[0]
-        ring2 = poly[1]
-
-        # These deletes should be 'harmless' since they are done on child geometries
-        del ring1 
-        del ring2
-        ring1 = poly[0]
-        ring2 = poly[1]
-
-        # Deleting the polygon
-        del poly
-
-        # Access to these rings is OK since they are clones.
-        s1, s2 = str(ring1), str(ring2)
-
-        # The previous hijinks tests are now moot because only clones are 
-        # now used =)
-
-    def test08_coord_seq(self):
-        "Testing Coordinate Sequence objects."
-        for p in polygons:
-            if p.ext_ring_cs:
-                # Constructing the polygon and getting the coordinate sequence
-                poly = fromstr(p.wkt)
-                cs = poly.exterior_ring.coord_seq
-
-                self.assertEqual(p.ext_ring_cs, cs.tuple) # done in the Polygon test too.
-                self.assertEqual(len(p.ext_ring_cs), len(cs)) # Making sure __len__ works
-
-                # Checks __getitem__ and __setitem__
-                for i in xrange(len(p.ext_ring_cs)):
-                    c1 = p.ext_ring_cs[i] # Expected value
-                    c2 = cs[i] # Value from coordseq
-                    self.assertEqual(c1, c2)
-
-                    # Constructing the test value to set the coordinate sequence with
-                    if len(c1) == 2: tset = (5, 23)
-                    else: tset = (5, 23, 8)
-                    cs[i] = tset
-                    
-                    # Making sure every set point matches what we expect
-                    for j in range(len(tset)):
-                        cs[i] = tset
-                        self.assertEqual(tset[j], cs[i][j])
-
-    def test09_relate_pattern(self):
-        "Testing relate() and relate_pattern()."
-        g = fromstr('POINT (0 0)')
-        self.assertRaises(GEOSException, g.relate_pattern, 0, 'invalid pattern, yo')
-        for i in xrange(len(relate_geoms)):
-            g_tup = relate_geoms[i]
-            a = fromstr(g_tup[0].wkt)
-            b = fromstr(g_tup[1].wkt)
-            pat = g_tup[2]
-            result = g_tup[3]
-            self.assertEqual(result, a.relate_pattern(b, pat))
-            self.assertEqual(pat, a.relate(b))
-
-    def test10_intersection(self):
-        "Testing intersects() and intersection()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = fromstr(g_tup[0].wkt)
-            b = fromstr(g_tup[1].wkt)
-            i1 = fromstr(intersect_geoms[i].wkt) 
-            self.assertEqual(True, a.intersects(b))
-            i2 = a.intersection(b)
-            self.assertEqual(i1, i2)
-            self.assertEqual(i1, a & b) # __and__ is intersection operator
-            a &= b # testing __iand__
-            self.assertEqual(i1, a)
-
-    def test11_union(self):
-        "Testing union()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = fromstr(g_tup[0].wkt)
-            b = fromstr(g_tup[1].wkt)
-            u1 = fromstr(union_geoms[i].wkt)
-            u2 = a.union(b)
-            self.assertEqual(u1, u2)
-            self.assertEqual(u1, a | b) # __or__ is union operator
-            a |= b # testing __ior__
-            self.assertEqual(u1, a) 
-
-    def test12_difference(self):
-        "Testing difference()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = fromstr(g_tup[0].wkt)
-            b = fromstr(g_tup[1].wkt)
-            d1 = fromstr(diff_geoms[i].wkt)
-            d2 = a.difference(b)
-            self.assertEqual(d1, d2)
-            self.assertEqual(d1, a - b) # __sub__ is difference operator
-            a -= b # testing __isub__
-            self.assertEqual(d1, a)
-
-    def test13_symdifference(self):
-        "Testing sym_difference()."
-        for i in xrange(len(topology_geoms)):
-            g_tup = topology_geoms[i]
-            a = fromstr(g_tup[0].wkt)
-            b = fromstr(g_tup[1].wkt)
-            d1 = fromstr(sdiff_geoms[i].wkt)
-            d2 = a.sym_difference(b)
-            self.assertEqual(d1, d2)
-            self.assertEqual(d1, a ^ b) # __xor__ is symmetric difference operator
-            a ^= b # testing __ixor__
-            self.assertEqual(d1, a)
-
-    def test14_buffer(self):
-        "Testing buffer()."
-        for i in xrange(len(buffer_geoms)):
-            g_tup = buffer_geoms[i]
-            g = fromstr(g_tup[0].wkt)
-
-            # The buffer we expect
-            exp_buf = fromstr(g_tup[1].wkt)
-
-            # Can't use a floating-point for the number of quadsegs.
-            self.assertRaises(ArgumentError, g.buffer, g_tup[2], float(g_tup[3]))
-
-            # Constructing our buffer
-            buf = g.buffer(g_tup[2], g_tup[3])
-            self.assertEqual(exp_buf.num_coords, buf.num_coords)
-            self.assertEqual(len(exp_buf), len(buf))
-
-            # Now assuring that each point in the buffer is almost equal
-            for j in xrange(len(exp_buf)):
-                exp_ring = exp_buf[j]
-                buf_ring = buf[j]
-                self.assertEqual(len(exp_ring), len(buf_ring))
-                for k in xrange(len(exp_ring)):
-                    # Asserting the X, Y of each point are almost equal (due to floating point imprecision)
-                    self.assertAlmostEqual(exp_ring[k][0], buf_ring[k][0], 9)
-                    self.assertAlmostEqual(exp_ring[k][1], buf_ring[k][1], 9)
-
-    def test15_srid(self):
-        "Testing the SRID property and keyword."
-        # Testing SRID keyword on Point
-        pnt = Point(5, 23, srid=4326)
-        self.assertEqual(4326, pnt.srid)
-        pnt.srid = 3084
-        self.assertEqual(3084, pnt.srid)
-        self.assertRaises(ArgumentError, pnt.set_srid, '4326')
-
-        # Testing SRID keyword on fromstr(), and on Polygon rings.
-        poly = fromstr(polygons[1].wkt, srid=4269)
-        self.assertEqual(4269, poly.srid)
-        for ring in poly: self.assertEqual(4269, ring.srid)
-        poly.srid = 4326
-        self.assertEqual(4326, poly.shell.srid)
-
-        # Testing SRID keyword on GeometryCollection
-        gc = GeometryCollection(Point(5, 23), LineString((0, 0), (1.5, 1.5), (3, 3)), srid=32021)
-        self.assertEqual(32021, gc.srid)
-        for i in range(len(gc)): self.assertEqual(32021, gc[i].srid)
-
-        # GEOS may get the SRID from HEXEWKB
-        # 'POINT(5 23)' at SRID=4326 in hex form -- obtained from PostGIS
-        # using `SELECT GeomFromText('POINT (5 23)', 4326);`.
-        hex = '0101000020E610000000000000000014400000000000003740'
-        p1 = fromstr(hex)
-        self.assertEqual(4326, p1.srid)
-
-        # In GEOS 3.0.0rc1-4  when the EWKB and/or HEXEWKB is exported,
-        # the SRID information is lost and set to -1 -- this is not a
-        # problem on the 3.0.0 version (another reason to upgrade).  
-        exp_srid = self.null_srid
-
-        p2 = fromstr(p1.hex)
-        self.assertEqual(exp_srid, p2.srid)
-        p3 = fromstr(p1.hex, srid=-1) # -1 is intended.
-        self.assertEqual(-1, p3.srid)
-
-    def test16_mutable_geometries(self):
-        "Testing the mutability of Polygons and Geometry Collections."
-        ### Testing the mutability of Polygons ###
-        for p in polygons:
-            poly = fromstr(p.wkt)
-
-            # Should only be able to use __setitem__ with LinearRing geometries.
-            self.assertRaises(TypeError, poly.__setitem__, 0, LineString((1, 1), (2, 2)))
-
-            # Constructing the new shell by adding 500 to every point in the old shell.
-            shell_tup = poly.shell.tuple
-            new_coords = []
-            for point in shell_tup: new_coords.append((point[0] + 500., point[1] + 500.))
-            new_shell = LinearRing(*tuple(new_coords))
-
-            # Assigning polygon's exterior ring w/the new shell
-            poly.exterior_ring = new_shell
-            s = str(new_shell) # new shell is still accessible
-            self.assertEqual(poly.exterior_ring, new_shell)
-            self.assertEqual(poly[0], new_shell)
-
-        ### Testing the mutability of Geometry Collections
-        for tg in multipoints:
-            mp = fromstr(tg.wkt)
-            for i in range(len(mp)):
-                # Creating a random point.
-                pnt = mp[i]
-                new = Point(random.randint(1, 100), random.randint(1, 100))
-                # Testing the assignment
-                mp[i] = new
-                s = str(new) # what was used for the assignment is still accessible
-                self.assertEqual(mp[i], new)
-                self.assertEqual(mp[i].wkt, new.wkt)
-                self.assertNotEqual(pnt, mp[i])
-
-        # MultiPolygons involve much more memory management because each
-        # Polygon w/in the collection has its own rings.
-        for tg in multipolygons:
-            mpoly = fromstr(tg.wkt)
-            for i in xrange(len(mpoly)):
-                poly = mpoly[i]
-                old_poly = mpoly[i]
-                # Offsetting the each ring in the polygon by 500.
-                for j in xrange(len(poly)):
-                    r = poly[j]
-                    for k in xrange(len(r)): r[k] = (r[k][0] + 500., r[k][1] + 500.)
-                    poly[j] = r
-                
-                self.assertNotEqual(mpoly[i], poly)
-                # Testing the assignment
-                mpoly[i] = poly
-                s = str(poly) # Still accessible
-                self.assertEqual(mpoly[i], poly)
-                self.assertNotEqual(mpoly[i], old_poly)
-
-        # Extreme (!!) __setitem__ -- no longer works, have to detect
-        # in the first object that __setitem__ is called in the subsequent
-        # objects -- maybe mpoly[0, 0, 0] = (3.14, 2.71)?
-        #mpoly[0][0][0] = (3.14, 2.71)
-        #self.assertEqual((3.14, 2.71), mpoly[0][0][0])
-        # Doing it more slowly..
-        #self.assertEqual((3.14, 2.71), mpoly[0].shell[0])
-        #del mpoly
-    
-    def test17_threed(self):
-        "Testing three-dimensional geometries."
-        # Testing a 3D Point
-        pnt = Point(2, 3, 8)
-        self.assertEqual((2.,3.,8.), pnt.coords)
-        self.assertRaises(TypeError, pnt.set_coords, (1.,2.))
-        pnt.coords = (1.,2.,3.)
-        self.assertEqual((1.,2.,3.), pnt.coords)
-
-        # Testing a 3D LineString
-        ls = LineString((2., 3., 8.), (50., 250., -117.))
-        self.assertEqual(((2.,3.,8.), (50.,250.,-117.)), ls.tuple)
-        self.assertRaises(TypeError, ls.__setitem__, 0, (1.,2.))
-        ls[0] = (1.,2.,3.)
-        self.assertEqual((1.,2.,3.), ls[0])
-            
-    def test18_distance(self):
-        "Testing the distance() function."
-        # Distance to self should be 0. 
-        pnt = Point(0, 0)
-        self.assertEqual(0.0, pnt.distance(Point(0, 0)))
-    
-        # Distance should be 1
-        self.assertEqual(1.0, pnt.distance(Point(0, 1)))
-
-        # Distance should be ~ sqrt(2)
-        self.assertAlmostEqual(1.41421356237, pnt.distance(Point(1, 1)), 11)
-
-        # Distances are from the closest vertex in each geometry --
-        #  should be 3 (distance from (2, 2) to (5, 2)).
-        ls1 = LineString((0, 0), (1, 1), (2, 2))
-        ls2 = LineString((5, 2), (6, 1), (7, 0))
-        self.assertEqual(3, ls1.distance(ls2))
-
-    def test19_length(self):
-        "Testing the length property."
-        # Points have 0 length.
-        pnt = Point(0, 0)
-        self.assertEqual(0.0, pnt.length)
-        
-        # Should be ~ sqrt(2)
-        ls = LineString((0, 0), (1, 1))
-        self.assertAlmostEqual(1.41421356237, ls.length, 11)
-
-        # Should be circumfrence of Polygon
-        poly = Polygon(LinearRing((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))
-        self.assertEqual(4.0, poly.length)
-
-        # Should be sum of each element's length in collection.
-        mpoly = MultiPolygon(poly.clone(), poly)
-        self.assertEqual(8.0, mpoly.length)
-
-    def test20_emptyCollections(self):
-        "Testing empty geometries and collections."
-        gc1 = GeometryCollection([])
-        gc2 = fromstr('GEOMETRYCOLLECTION EMPTY')
-        pnt = fromstr('POINT EMPTY')
-        ls = fromstr('LINESTRING EMPTY')
-        poly = fromstr('POLYGON EMPTY')
-        mls = fromstr('MULTILINESTRING EMPTY')
-        mpoly1 = fromstr('MULTIPOLYGON EMPTY')
-        mpoly2 = MultiPolygon(())
-
-        for g in [gc1, gc2, pnt, ls, poly, mls, mpoly1, mpoly2]:
-            self.assertEqual(True, g.empty)
-
-            # Testing len() and num_geom.
-            if isinstance(g, Polygon):
-                self.assertEqual(1, len(g)) # Has one empty linear ring
-                self.assertEqual(1, g.num_geom)
-                self.assertEqual(0, len(g[0]))
-            elif isinstance(g, (Point, LineString)):
-                self.assertEqual(1, g.num_geom)
-                self.assertEqual(0, len(g))
-            else:
-                self.assertEqual(0, g.num_geom)
-                self.assertEqual(0, len(g))
-
-            # Testing __getitem__ (doesn't work on Point or Polygon)
-            if isinstance(g, Point):
-                self.assertRaises(GEOSIndexError, g.get_x)
-            elif isinstance(g, Polygon):
-                lr = g.shell
-                self.assertEqual('LINEARRING EMPTY', lr.wkt)
-                self.assertEqual(0, len(lr))
-                self.assertEqual(True, lr.empty)
-                self.assertRaises(GEOSIndexError, lr.__getitem__, 0)
-            else:
-                self.assertRaises(GEOSIndexError, g.__getitem__, 0)
-
-    def test21_test_gdal(self):
-        "Testing `ogr` and `srs` properties."
-        if not HAS_GDAL: return
-        g1 = fromstr('POINT(5 23)')
-        self.assertEqual(True, isinstance(g1.ogr, OGRGeometry))
-        self.assertEqual(g1.srs, None)
-        
-        g2 = fromstr('LINESTRING(0 0, 5 5, 23 23)', srid=4326)
-        self.assertEqual(True, isinstance(g2.ogr, OGRGeometry))
-        self.assertEqual(True, isinstance(g2.srs, SpatialReference))
-        self.assertEqual(g2.hex, g2.ogr.hex)
-        self.assertEqual('WGS 84', g2.srs.name)
-
-    def test22_copy(self):
-        "Testing use with the Python `copy` module."
-        import copy
-        poly = GEOSGeometry('POLYGON((0 0, 0 23, 23 23, 23 0, 0 0), (5 5, 5 10, 10 10, 10 5, 5 5))')
-        cpy1 = copy.copy(poly)
-        cpy2 = copy.deepcopy(poly)
-        self.assertNotEqual(poly._ptr, cpy1._ptr)
-        self.assertNotEqual(poly._ptr, cpy2._ptr)
-
-    def test23_transform(self):
-        "Testing `transform` method."
-        if not HAS_GDAL: return
-        orig = GEOSGeometry('POINT (-104.609 38.255)', 4326)
-        trans = GEOSGeometry('POINT (992385.4472045 481455.4944650)', 2774)
-
-        # Using a srid, a SpatialReference object, and a CoordTransform object
-        # for transformations.
-        t1, t2, t3 = orig.clone(), orig.clone(), orig.clone()
-        t1.transform(trans.srid)
-        t2.transform(SpatialReference('EPSG:2774'))
-        ct = CoordTransform(SpatialReference('WGS84'), SpatialReference(2774))
-        t3.transform(ct)
-
-        # Testing use of the `clone` keyword.
-        k1 = orig.clone()
-        k2 = k1.transform(trans.srid, clone=True)
-        self.assertEqual(k1, orig)
-        self.assertNotEqual(k1, k2)
-
-        prec = 3
-        for p in (t1, t2, t3, k2):
-            self.assertAlmostEqual(trans.x, p.x, prec)
-            self.assertAlmostEqual(trans.y, p.y, prec)
-
-    def test24_extent(self):
-        "Testing `extent` method."
-        # The xmin, ymin, xmax, ymax of the MultiPoint should be returned.
-        mp = MultiPoint(Point(5, 23), Point(0, 0), Point(10, 50))
-        self.assertEqual((0.0, 0.0, 10.0, 50.0), mp.extent)
-        pnt = Point(5.23, 17.8)
-        # Extent of points is just the point itself repeated.
-        self.assertEqual((5.23, 17.8, 5.23, 17.8), pnt.extent)
-        # Testing on the 'real world' Polygon.
-        poly = fromstr(polygons[3].wkt)
-        ring = poly.shell
-        x, y = ring.x, ring.y
-        xmin, ymin = min(x), min(y)
-        xmax, ymax = max(x), max(y)
-        self.assertEqual((xmin, ymin, xmax, ymax), poly.extent)
-
-    def test25_pickle(self):
-        "Testing pickling and unpickling support."
-        # Using both pickle and cPickle -- just 'cause.
-        import pickle, cPickle
-
-        # Creating a list of test geometries for pickling, 
-        # and setting the SRID on some of them.
-        def get_geoms(lst, srid=None):
-            return [GEOSGeometry(tg.wkt, srid) for tg in lst]
-        tgeoms = get_geoms(points)
-        tgeoms.extend(get_geoms(multilinestrings, 4326))
-        tgeoms.extend(get_geoms(polygons, 3084))
-        tgeoms.extend(get_geoms(multipolygons, 900913))
-
-        # The SRID won't be exported in GEOS 3.0 release candidates.
-        no_srid = self.null_srid == -1 
-        for geom in tgeoms:
-            s1, s2 = cPickle.dumps(geom), pickle.dumps(geom)
-            g1, g2 = cPickle.loads(s1), pickle.loads(s2)
-            for tmpg in (g1, g2):
-                self.assertEqual(geom, tmpg)
-                if not no_srid: self.assertEqual(geom.srid, tmpg.srid)
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(GEOSTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/test_measure.py b/webapp/django/contrib/gis/tests/test_measure.py
deleted file mode 100644
index 43bc8ae..0000000
--- a/webapp/django/contrib/gis/tests/test_measure.py
+++ /dev/null
@@ -1,333 +0,0 @@
-"""
-Distance and Area objects to allow for sensible and convienient calculation 
-and conversions. Here are some tests.
-"""
-
-import unittest
-from django.contrib.gis.measure import Distance, Area, D, A
-
-class DistanceTest(unittest.TestCase):
-    "Testing the Distance object"
-
-    def testInit(self):
-        "Testing initialisation from valid units"
-        d = Distance(m=100)
-        self.assertEqual(d.m, 100)
-
-        d1, d2, d3 = D(m=100), D(meter=100), D(metre=100)
-        for d in (d1, d2, d3):
-            self.assertEqual(d.m, 100)
-
-        d = D(nm=100)
-        self.assertEqual(d.m, 185200)
-
-        y1, y2, y3 = D(yd=100), D(yard=100), D(Yard=100)
-        for d in (y1, y2, y3):
-            self.assertEqual(d.yd, 100)
-
-        mm1, mm2 = D(millimeter=1000), D(MiLLiMeTeR=1000)
-        for d in (mm1, mm2):
-            self.assertEqual(d.m, 1.0)
-            self.assertEqual(d.mm, 1000.0)
-
-    
-    def testInitInvalid(self):
-        "Testing initialisation from invalid units"
-        self.assertRaises(AttributeError, D, banana=100)
-
-    def testAccess(self):
-        "Testing access in different units"
-        d = D(m=100)
-        self.assertEqual(d.km, 0.1)
-        self.assertAlmostEqual(d.ft, 328.084, 3)
-    
-    def testAccessInvalid(self):
-        "Testing access in invalid units"
-        d = D(m=100)
-        self.failIf(hasattr(d, 'banana'))
-
-    def testAddition(self):
-        "Test addition & subtraction"
-        d1 = D(m=100)
-        d2 = D(m=200)
-
-        d3 = d1 + d2
-        self.assertEqual(d3.m, 300)
-        d3 += d1
-        self.assertEqual(d3.m, 400)
-        
-        d4 = d1 - d2
-        self.assertEqual(d4.m, -100)
-        d4 -= d1
-        self.assertEqual(d4.m, -200)
-        
-        try:
-            d5 = d1 + 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Distance + number should raise TypeError')
-
-        try:
-            d5 = d1 - 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Distance - number should raise TypeError')
-
-        try:
-            d1 += 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Distance += number should raise TypeError')
-
-        try:
-            d1 -= 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Distance -= number should raise TypeError')
-            
-    def testMultiplication(self):
-        "Test multiplication & division"
-        d1 = D(m=100)
-
-        d3 = d1 * 2
-        self.assertEqual(d3.m, 200)
-        d3 *= 5
-        self.assertEqual(d3.m, 1000)
-        
-        d4 = d1 / 2
-        self.assertEqual(d4.m, 50)
-        d4 /= 5
-        self.assertEqual(d4.m, 10)
-        
-        a5 = d1 * D(m=10)
-        self.assert_(isinstance(a5, Area))
-        self.assertEqual(a5.sq_m, 100*10)
-
-        try:
-            d1 *= D(m=1)
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Distance *= Distance should raise TypeError')
-            
-        try:
-            d5 = d1 / D(m=1)
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Distance / Distance should raise TypeError')
-
-        try:
-            d1 /= D(m=1)
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Distance /= Distance should raise TypeError')
-
-    def testUnitConversions(self):
-        "Testing default units during maths"
-        d1 = D(m=100)
-        d2 = D(km=1)
-
-        d3 = d1 + d2
-        self.assertEqual(d3._default_unit, 'm')
-        d4 = d2 + d1
-        self.assertEqual(d4._default_unit, 'km')
-        d5 = d1 * 2
-        self.assertEqual(d5._default_unit, 'm')
-        d6 = d1 / 2
-        self.assertEqual(d6._default_unit, 'm')
-    
-    def testComparisons(self):
-        "Testing comparisons"
-        d1 = D(m=100)
-        d2 = D(km=1)
-        d3 = D(km=0)
-        
-        self.assert_(d2 > d1)
-        self.assert_(d1 == d1)
-        self.assert_(d1 < d2)
-        self.failIf(d3)
-        
-    def testUnitsStr(self):
-        "Testing conversion to strings"
-        d1 = D(m=100)
-        d2 = D(km=3.5)
-        
-        self.assertEqual(str(d1), '100.0 m')
-        self.assertEqual(str(d2), '3.5 km')
-        self.assertEqual(repr(d1), 'Distance(m=100.0)')
-        self.assertEqual(repr(d2), 'Distance(km=3.5)')
-
-    def testUnitAttName(self):
-        "Testing the `unit_attname` class method"
-        unit_tuple = [('Yard', 'yd'), ('Nautical Mile', 'nm'), ('German legal metre', 'german_m'),
-                      ('Indian yard', 'indian_yd'), ('Chain (Sears)', 'chain_sears'), ('Chain', 'chain')]
-        for nm, att in unit_tuple:
-            self.assertEqual(att, D.unit_attname(nm))
-
-class AreaTest(unittest.TestCase):
-    "Testing the Area object"
-
-    def testInit(self):
-        "Testing initialisation from valid units"
-        a = Area(sq_m=100)
-        self.assertEqual(a.sq_m, 100)
-
-        a = A(sq_m=100)
-        self.assertEqual(a.sq_m, 100)
-
-        a = A(sq_mi=100)
-        self.assertEqual(a.sq_m, 258998811.0336)
-    
-    def testInitInvaliA(self):
-        "Testing initialisation from invalid units"
-        self.assertRaises(AttributeError, A, banana=100)
-
-    def testAccess(self):
-        "Testing access in different units"
-        a = A(sq_m=100)
-        self.assertEqual(a.sq_km, 0.0001)
-        self.assertAlmostEqual(a.sq_ft, 1076.391, 3)
-    
-    def testAccessInvaliA(self):
-        "Testing access in invalid units"
-        a = A(sq_m=100)
-        self.failIf(hasattr(a, 'banana'))
-
-    def testAddition(self):
-        "Test addition & subtraction"
-        a1 = A(sq_m=100)
-        a2 = A(sq_m=200)
-
-        a3 = a1 + a2
-        self.assertEqual(a3.sq_m, 300)
-        a3 += a1
-        self.assertEqual(a3.sq_m, 400)
-        
-        a4 = a1 - a2
-        self.assertEqual(a4.sq_m, -100)
-        a4 -= a1
-        self.assertEqual(a4.sq_m, -200)
-        
-        try:
-            a5 = a1 + 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area + number should raise TypeError')
-
-        try:
-            a5 = a1 - 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area - number should raise TypeError')
-
-        try:
-            a1 += 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area += number should raise TypeError')
-
-        try:
-            a1 -= 1
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area -= number should raise TypeError')
-            
-    def testMultiplication(self):
-        "Test multiplication & division"
-        a1 = A(sq_m=100)
-
-        a3 = a1 * 2
-        self.assertEqual(a3.sq_m, 200)
-        a3 *= 5
-        self.assertEqual(a3.sq_m, 1000)
-        
-        a4 = a1 / 2
-        self.assertEqual(a4.sq_m, 50)
-        a4 /= 5
-        self.assertEqual(a4.sq_m, 10)
-        
-        try:
-            a5 = a1 * A(sq_m=1)
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area * Area should raise TypeError')
-
-        try:
-            a1 *= A(sq_m=1)
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area *= Area should raise TypeError')
-            
-        try:
-            a5 = a1 / A(sq_m=1)
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area / Area should raise TypeError')
-
-        try:
-            a1 /= A(sq_m=1)
-        except TypeError, e:
-            pass
-        else:
-            self.fail('Area /= Area should raise TypeError')
-
-    def testUnitConversions(self):
-        "Testing default units during maths"
-        a1 = A(sq_m=100)
-        a2 = A(sq_km=1)
-
-        a3 = a1 + a2
-        self.assertEqual(a3._default_unit, 'sq_m')
-        a4 = a2 + a1
-        self.assertEqual(a4._default_unit, 'sq_km')
-        a5 = a1 * 2
-        self.assertEqual(a5._default_unit, 'sq_m')
-        a6 = a1 / 2
-        self.assertEqual(a6._default_unit, 'sq_m')
-    
-    def testComparisons(self):
-        "Testing comparisons"
-        a1 = A(sq_m=100)
-        a2 = A(sq_km=1)
-        a3 = A(sq_km=0)
-        
-        self.assert_(a2 > a1)
-        self.assert_(a1 == a1)
-        self.assert_(a1 < a2)
-        self.failIf(a3)
-        
-    def testUnitsStr(self):
-        "Testing conversion to strings"
-        a1 = A(sq_m=100)
-        a2 = A(sq_km=3.5)
-        
-        self.assertEqual(str(a1), '100.0 sq_m')
-        self.assertEqual(str(a2), '3.5 sq_km')
-        self.assertEqual(repr(a1), 'Area(sq_m=100.0)')
-        self.assertEqual(repr(a2), 'Area(sq_km=3.5)')
-
-        
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(DistanceTest))
-    s.addTest(unittest.makeSuite(AreaTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
-
-if __name__=="__main__":
-    run()
diff --git a/webapp/django/contrib/gis/tests/test_spatialrefsys.py b/webapp/django/contrib/gis/tests/test_spatialrefsys.py
deleted file mode 100644
index 0b133a1..0000000
--- a/webapp/django/contrib/gis/tests/test_spatialrefsys.py
+++ /dev/null
@@ -1,90 +0,0 @@
-import unittest
-from django.contrib.gis.tests.utils import mysql, no_mysql, oracle, postgis
-if not mysql:
-    from django.contrib.gis.models import SpatialRefSys
-
-test_srs = ({'srid' : 4326,
-             'auth_name' : ('EPSG', True),
-             'auth_srid' : 4326,
-             'srtext' : 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]',
-             'proj4' : '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ',
-             'spheroid' : 'WGS 84', 'name' : 'WGS 84', 
-             'geographic' : True, 'projected' : False,
-             'ellipsoid' : (6378137.0, 6356752.3, 298.257223563), # From proj's "cs2cs -le" and Wikipedia (semi-minor only)
-             'eprec' : (1, 1, 9),
-             },
-            {'srid' : 32140,
-             'auth_name' : ('EPSG', False),
-             'auth_srid' : 32140,
-             'srtext' : 'PROJCS["NAD83 / Texas South Central",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["standard_parallel_1",30.28333333333333],PARAMETER["standard_parallel_2",28.38333333333333],PARAMETER["latitude_of_origin",27.83333333333333],PARAMETER["central_meridian",-99],PARAMETER["false_easting",600000],PARAMETER["false_northing",4000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32140"]]',
-             'proj4' : '+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0=4000000 +ellps=GRS80 +datum=NAD83 +units=m +no_defs ',
-             'spheroid' : 'GRS 1980', 'name' : 'NAD83 / Texas South Central',
-             'geographic' : False, 'projected' : True,
-             'ellipsoid' : (6378137.0, 6356752.31414, 298.257222101), # From proj's "cs2cs -le" and Wikipedia (semi-minor only)
-             'eprec' : (1, 5, 10),
-             },
-            )
-
-class SpatialRefSysTest(unittest.TestCase):
-
-    @no_mysql
-    def test01_retrieve(self):
-        "Testing retrieval of SpatialRefSys model objects."
-        for sd in test_srs:
-            srs = SpatialRefSys.objects.get(srid=sd['srid'])
-            self.assertEqual(sd['srid'], srs.srid)
-
-            # Some of the authority names are borked on Oracle, e.g., SRID=32140.
-            #  also, Oracle Spatial seems to add extraneous info to fields, hence the
-            #  the testing with the 'startswith' flag.
-            auth_name, oracle_flag = sd['auth_name']
-            if postgis or (oracle and oracle_flag):
-                self.assertEqual(True, srs.auth_name.startswith(auth_name))
-                
-            self.assertEqual(sd['auth_srid'], srs.auth_srid)
-
-            # No proj.4 and different srtext on oracle backends :(
-            if postgis:
-                self.assertEqual(sd['srtext'], srs.wkt)
-                self.assertEqual(sd['proj4'], srs.proj4text)
-
-    @no_mysql
-    def test02_osr(self):
-        "Testing getting OSR objects from SpatialRefSys model objects."
-        for sd in test_srs:
-            sr = SpatialRefSys.objects.get(srid=sd['srid'])
-            self.assertEqual(True, sr.spheroid.startswith(sd['spheroid']))
-            self.assertEqual(sd['geographic'], sr.geographic)
-            self.assertEqual(sd['projected'], sr.projected)
-            self.assertEqual(True, sr.name.startswith(sd['name']))
-
-            # Testing the SpatialReference object directly.
-            if postgis:
-                srs = sr.srs
-                self.assertEqual(sd['proj4'], srs.proj4)
-                self.assertEqual(sd['srtext'], srs.wkt)
-
-    @no_mysql
-    def test03_ellipsoid(self):
-        "Testing the ellipsoid property."
-        for sd in test_srs:
-            # Getting the ellipsoid and precision parameters.
-            ellps1 = sd['ellipsoid']
-            prec = sd['eprec']
-
-            # Getting our spatial reference and its ellipsoid
-            srs = SpatialRefSys.objects.get(srid=sd['srid'])
-            ellps2 = srs.ellipsoid
-
-            for i in range(3):
-                param1 = ellps1[i]
-                param2 = ellps2[i]
-                self.assertAlmostEqual(ellps1[i], ellps2[i], prec[i])
-
-def suite():
-    s = unittest.TestSuite()
-    s.addTest(unittest.makeSuite(SpatialRefSysTest))
-    return s
-
-def run(verbosity=2):
-    unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/webapp/django/contrib/gis/tests/urls.py b/webapp/django/contrib/gis/tests/urls.py
deleted file mode 100644
index 95e36c2..0000000
--- a/webapp/django/contrib/gis/tests/urls.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.conf.urls.defaults import *
-
-urlpatterns = patterns('',
-                       (r'^geoapp/', include('django.contrib.gis.tests.geoapp.urls')),
-                       )
-                        
diff --git a/webapp/django/contrib/gis/tests/utils.py b/webapp/django/contrib/gis/tests/utils.py
deleted file mode 100644
index 0b368f1..0000000
--- a/webapp/django/contrib/gis/tests/utils.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from django.conf import settings
-
-# function that will pass a test.
-def pass_test(*args): return
-
-def no_backend(test_func, backend):
-    "Use this decorator to disable test on specified backend."
-    if settings.DATABASE_ENGINE == backend:
-        return pass_test
-    else:
-        return test_func
-
-# Decorators to disable entire test functions for specific
-# spatial backends.
-def no_oracle(func): return no_backend(func, 'oracle')
-def no_postgis(func): return no_backend(func, 'postgresql_psycopg2')
-def no_mysql(func): return no_backend(func, 'mysql')
-
-# Shortcut booleans to omit only portions of tests.
-oracle  = settings.DATABASE_ENGINE == 'oracle'
-postgis = settings.DATABASE_ENGINE == 'postgresql_psycopg2' 
-mysql   = settings.DATABASE_ENGINE == 'mysql'
diff --git a/webapp/django/contrib/gis/utils/__init__.py b/webapp/django/contrib/gis/utils/__init__.py
deleted file mode 100644
index 2c9f2f3..0000000
--- a/webapp/django/contrib/gis/utils/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""
- This module contains useful utilities for GeoDjango.
-"""
-# Importing the utilities that depend on GDAL, if available.
-from django.contrib.gis.gdal import HAS_GDAL
-if HAS_GDAL:
-    from django.contrib.gis.utils.ogrinfo import ogrinfo, sample
-    from django.contrib.gis.utils.ogrinspect import mapping, ogrinspect
-    from django.contrib.gis.utils.srs import add_postgis_srs
-    try:
-        # LayerMapping requires DJANGO_SETTINGS_MODULE to be set, 
-        # so this needs to be in try/except.
-        from django.contrib.gis.utils.layermapping import LayerMapping
-    except:
-        pass
-    
-# Attempting to import the GeoIP class.
-try:
-    from django.contrib.gis.utils.geoip import GeoIP, GeoIPException
-    HAS_GEOIP = True
-except:
-    HAS_GEOIP = False
-
-from django.contrib.gis.utils.wkt import precision_wkt
-
diff --git a/webapp/django/contrib/gis/utils/geoip.py b/webapp/django/contrib/gis/utils/geoip.py
deleted file mode 100644
index 4d163aa..0000000
--- a/webapp/django/contrib/gis/utils/geoip.py
+++ /dev/null
@@ -1,344 +0,0 @@
-"""
- This module houses the GeoIP object, a ctypes wrapper for the MaxMind GeoIP(R)
- C API (http://www.maxmind.com/app/c).  This is an alternative to the GPL
- licensed Python GeoIP interface provided by MaxMind.
-
- GeoIP(R) is a registered trademark of MaxMind, LLC of Boston, Massachusetts.
-
- For IP-based geolocation, this module requires the GeoLite Country and City
- datasets, in binary format (CSV will not work!).  The datasets may be 
- downloaded from MaxMind at http://www.maxmind.com/download/geoip/database/.
- Grab GeoIP.dat.gz and GeoLiteCity.dat.gz, and unzip them in the directory
- corresponding to settings.GEOIP_PATH.  See the GeoIP docstring and examples
- below for more details.
-
- TODO: Verify compatibility with Windows.
-
- Example:
-
- >>> from django.contrib.gis.utils import GeoIP
- >>> g = GeoIP()
- >>> g.country('google.com')
- {'country_code': 'US', 'country_name': 'United States'}
- >>> g.city('72.14.207.99')
- {'area_code': 650,
- 'city': 'Mountain View',
- 'country_code': 'US',
- 'country_code3': 'USA',
- 'country_name': 'United States',
- 'dma_code': 807,
- 'latitude': 37.419200897216797,
- 'longitude': -122.05740356445312,
- 'postal_code': '94043',
- 'region': 'CA'}
- >>> g.lat_lon('salon.com')
- (37.789798736572266, -122.39420318603516)
- >>> g.lon_lat('uh.edu')
- (-95.415199279785156, 29.77549934387207) 
- >>> g.geos('24.124.1.80').wkt
- 'POINT (-95.2087020874023438 39.0392990112304688)'
-"""
-import os, re
-from ctypes import c_char_p, c_float, c_int, Structure, CDLL, POINTER
-from ctypes.util import find_library
-from django.conf import settings
-if not settings._target: settings.configure()
-
-# Creating the settings dictionary with any settings, if needed.
-GEOIP_SETTINGS = dict((key, getattr(settings, key)) 
-                      for key in ('GEOIP_PATH', 'GEOIP_LIBRARY_PATH', 'GEOIP_COUNTRY', 'GEOIP_CITY')
-                      if hasattr(settings, key))
-lib_path = GEOIP_SETTINGS.get('GEOIP_LIBRARY_PATH', None)
-
-# GeoIP Exception class.
-class GeoIPException(Exception): pass
-
-# The shared library for the GeoIP C API.  May be downloaded
-#  from http://www.maxmind.com/download/geoip/api/c/
-if lib_path:
-    lib_name = None
-else:
-    # TODO: Is this really the library name for Windows?
-    lib_name = 'GeoIP'
-
-# Getting the path to the GeoIP library.
-if lib_name: lib_path = find_library(lib_name)
-if lib_path is None: raise GeoIPException('Could not find the GeoIP library (tried "%s"). '
-                                          'Try setting GEOIP_LIBRARY_PATH in your settings.' % lib_name)
-lgeoip = CDLL(lib_path)
-
-# Regular expressions for recognizing IP addresses and the GeoIP
-# free database editions.
-ipregex = re.compile(r'^(?P<w>\d\d?\d?)\.(?P<x>\d\d?\d?)\.(?P<y>\d\d?\d?)\.(?P<z>\d\d?\d?)$')
-free_regex = re.compile(r'^GEO-\d{3}FREE')
-lite_regex = re.compile(r'^GEO-\d{3}LITE')
-
-#### GeoIP C Structure definitions ####
-class GeoIPRecord(Structure):
-    _fields_ = [('country_code', c_char_p),
-                ('country_code3', c_char_p),
-                ('country_name', c_char_p),
-                ('region', c_char_p),
-                ('city', c_char_p),
-                ('postal_code', c_char_p),
-                ('latitude', c_float),
-                ('longitude', c_float),
-                ('dma_code', c_int),
-                ('area_code', c_int),
-                ]
-class GeoIPTag(Structure): pass
-
-#### ctypes function prototypes ####
-RECTYPE = POINTER(GeoIPRecord)
-DBTYPE = POINTER(GeoIPTag)
-
-# For retrieving records by name or address.
-def record_output(func):
-    func.restype = RECTYPE
-    return func
-rec_by_addr = record_output(lgeoip.GeoIP_record_by_addr)
-rec_by_name = record_output(lgeoip.GeoIP_record_by_name)
-
-# For opening up GeoIP databases.
-geoip_open = lgeoip.GeoIP_open
-geoip_open.restype = DBTYPE
-
-# String output routines.
-def string_output(func):
-    func.restype = c_char_p
-    return func
-geoip_dbinfo = string_output(lgeoip.GeoIP_database_info)
-cntry_code_by_addr = string_output(lgeoip.GeoIP_country_code_by_addr)
-cntry_code_by_name = string_output(lgeoip.GeoIP_country_code_by_name)
-cntry_name_by_addr = string_output(lgeoip.GeoIP_country_name_by_addr)
-cntry_name_by_name = string_output(lgeoip.GeoIP_country_name_by_name)
-
-#### GeoIP class ####
-class GeoIP(object):
-    # The flags for GeoIP memory caching.
-    # GEOIP_STANDARD - read database from filesystem, uses least memory.
-    #
-    # GEOIP_MEMORY_CACHE - load database into memory, faster performance
-    #        but uses more memory
-    #
-    # GEOIP_CHECK_CACHE - check for updated database.  If database has been updated,
-    #        reload filehandle and/or memory cache.
-    #
-    # GEOIP_INDEX_CACHE - just cache
-    #        the most frequently accessed index portion of the database, resulting
-    #        in faster lookups than GEOIP_STANDARD, but less memory usage than
-    #        GEOIP_MEMORY_CACHE - useful for larger databases such as
-    #        GeoIP Organization and GeoIP City.  Note, for GeoIP Country, Region
-    #        and Netspeed databases, GEOIP_INDEX_CACHE is equivalent to GEOIP_MEMORY_CACHE
-    #
-    GEOIP_STANDARD = 0
-    GEOIP_MEMORY_CACHE = 1
-    GEOIP_CHECK_CACHE = 2
-    GEOIP_INDEX_CACHE = 4
-    cache_options = dict((opt, None) for opt in (0, 1, 2, 4))
-
-    def __init__(self, path=None, cache=0, country=None, city=None):
-        """
-        Initializes the GeoIP object, no parameters are required to use default
-        settings.  Keyword arguments may be passed in to customize the locations
-        of the GeoIP data sets.
-
-        * path: Base directory to where GeoIP data is located or the full path
-            to where the city or country data files (*.dat) are located.
-            Assumes that both the city and country data sets are located in
-            this directory; overrides the GEOIP_PATH settings attribute.
-
-        * cache: The cache settings when opening up the GeoIP datasets,
-            and may be an integer in (0, 1, 2, 4) corresponding to
-            the GEOIP_STANDARD, GEOIP_MEMORY_CACHE, GEOIP_CHECK_CACHE,
-            and GEOIP_INDEX_CACHE `GeoIPOptions` C API settings,
-            respectively.  Defaults to 0, meaning that the data is read
-            from the disk.
-
-        * country: The name of the GeoIP country data file.  Defaults to
-            'GeoIP.dat'; overrides the GEOIP_COUNTRY settings attribute.
-
-        * city: The name of the GeoIP city data file.  Defaults to
-            'GeoLiteCity.dat'; overrides the GEOIP_CITY settings attribute.
-        """
-        # Checking the given cache option.
-        if cache in self.cache_options:
-            self._cache = self.cache_options[cache]
-        else:
-            raise GeoIPException('Invalid caching option: %s' % cache)
-
-        # Getting the GeoIP data path.
-        if not path:
-            path = GEOIP_SETTINGS.get('GEOIP_PATH', None)
-            if not path: raise GeoIPException('GeoIP path must be provided via parameter or the GEOIP_PATH setting.')
-        if not isinstance(path, basestring):
-            raise TypeError('Invalid path type: %s' % type(path).__name__)
-
-        cntry_ptr, city_ptr = (None, None)
-        if os.path.isdir(path):
-            # Getting the country and city files using the settings
-            # dictionary.  If no settings are provided, default names
-            # are assigned.
-            country = os.path.join(path, country or GEOIP_SETTINGS.get('GEOIP_COUNTRY', 'GeoIP.dat'))
-            city = os.path.join(path, city or GEOIP_SETTINGS.get('GEOIP_CITY', 'GeoLiteCity.dat'))
-        elif os.path.isfile(path):
-            # Otherwise, some detective work will be needed to figure
-            # out whether the given database path is for the GeoIP country
-            # or city databases.
-            ptr = geoip_open(path, cache)
-            info = geoip_dbinfo(ptr)
-            if lite_regex.match(info):
-                # GeoLite City database.
-                city, city_ptr = path, ptr
-            elif free_regex.match(info):
-                # GeoIP Country database.
-                country, cntry_ptr = path, ptr
-            else:
-                raise GeoIPException('Unable to recognize database edition: %s' % info)
-        else:
-            raise GeoIPException('GeoIP path must be a valid file or directory.')
-        
-        # `_init_db` does the dirty work.
-        self._init_db(country, cache, '_country', cntry_ptr)
-        self._init_db(city, cache, '_city', city_ptr)
-
-    def _init_db(self, db_file, cache, attname, ptr=None):
-        "Helper routine for setting GeoIP ctypes database properties."
-        if ptr:
-            # Pointer already retrieved.
-            pass
-        elif os.path.isfile(db_file or ''):
-            ptr = geoip_open(db_file, cache)
-        setattr(self, attname, ptr)
-        setattr(self, '%s_file' % attname, db_file)
-
-    def _check_query(self, query, country=False, city=False, city_or_country=False):
-        "Helper routine for checking the query and database availability."
-        # Making sure a string was passed in for the query.
-        if not isinstance(query, basestring):
-            raise TypeError('GeoIP query must be a string, not type %s' % type(query).__name__)
-
-        # Extra checks for the existence of country and city databases.
-        if city_or_country and self._country is None and self._city is None:
-            raise GeoIPException('Invalid GeoIP country and city data files.')
-        elif country and self._country is None:
-            raise GeoIPException('Invalid GeoIP country data file: %s' % self._country_file)
-        elif city and self._city is None:
-            raise GeoIPException('Invalid GeoIP city data file: %s' % self._city_file)
-
-    def city(self, query):
-        """
-        Returns a dictionary of city information for the given IP address or
-        Fully Qualified Domain Name (FQDN).  Some information in the dictionary
-        may be undefined (None).
-        """
-        self._check_query(query, city=True)
-        if ipregex.match(query):
-            # If an IP address was passed in
-            ptr = rec_by_addr(self._city, c_char_p(query))
-        else:
-            # If a FQDN was passed in.
-            ptr = rec_by_name(self._city, c_char_p(query))
-
-        # Checking the pointer to the C structure, if valid pull out elements
-        # into a dicionary and return.
-        if bool(ptr):
-            record = ptr.contents
-            return dict((tup[0], getattr(record, tup[0])) for tup in record._fields_)
-        else:
-            return None
-    
-    def country_code(self, query):
-        "Returns the country code for the given IP Address or FQDN."
-        self._check_query(query, city_or_country=True)
-        if self._country:
-            if ipregex.match(query): return cntry_code_by_addr(self._country, query)
-            else: return cntry_code_by_name(self._country, query)
-        else:
-            return self.city(query)['country_code']
-
-    def country_name(self, query):
-        "Returns the country name for the given IP Address or FQDN."
-        self._check_query(query, city_or_country=True)
-        if self._country:
-            if ipregex.match(query): return cntry_name_by_addr(self._country, query)
-            else: return cntry_name_by_name(self._country, query)
-        else:
-            return self.city(query)['country_name']
-
-    def country(self, query):
-        """
-        Returns a dictonary with with the country code and name when given an 
-        IP address or a Fully Qualified Domain Name (FQDN).  For example, both
-        '24.124.1.80' and 'djangoproject.com' are valid parameters.
-        """
-        # Returning the country code and name
-        return {'country_code' : self.country_code(query), 
-                'country_name' : self.country_name(query),
-                }
-
-    #### Coordinate retrieval routines ####
-    def coords(self, query, ordering=('longitude', 'latitude')):
-        cdict = self.city(query)
-        if cdict is None: return None
-        else: return tuple(cdict[o] for o in ordering)
-
-    def lon_lat(self, query):
-        "Returns a tuple of the (longitude, latitude) for the given query."
-        return self.coords(query)
-
-    def lat_lon(self, query):
-        "Returns a tuple of the (latitude, longitude) for the given query."
-        return self.coords(query, ('latitude', 'longitude'))
-
-    def geos(self, query):
-        "Returns a GEOS Point object for the given query."
-        ll = self.lon_lat(query)
-        if ll:
-            from django.contrib.gis.geos import Point
-            return Point(ll, srid=4326)
-        else:
-            return None
-
-    #### GeoIP Database Information Routines ####
-    def country_info(self):
-        "Returns information about the GeoIP country database."
-        if self._country is None:
-            ci = 'No GeoIP Country data in "%s"' % self._country_file
-        else:
-            ci = geoip_dbinfo(self._country)
-        return ci
-    country_info = property(country_info)
-
-    def city_info(self):
-        "Retuns information about the GeoIP city database."
-        if self._city is None:
-            ci = 'No GeoIP City data in "%s"' % self._city_file
-        else:
-            ci = geoip_dbinfo(self._city)
-        return ci
-    city_info = property(city_info)
-        
-    def info(self):
-        "Returns information about all GeoIP databases in use."
-        return 'Country:\n\t%s\nCity:\n\t%s' % (self.country_info, self.city_info)
-    info = property(info)
-
-    #### Methods for compatibility w/the GeoIP-Python API. ####
-    @classmethod
-    def open(cls, full_path, cache):
-        return GeoIP(full_path, cache)
-
-    def _rec_by_arg(self, arg):
-        if self._city:
-            return self.city(arg)
-        else:
-            return self.country(arg)
-    region_by_addr = city
-    region_by_name = city
-    record_by_addr = _rec_by_arg
-    record_by_name = _rec_by_arg
-    country_code_by_addr = country_code
-    country_code_by_name = country_code
-    country_name_by_addr = country_name
-    country_name_by_name = country_name
diff --git a/webapp/django/contrib/gis/utils/layermapping.py b/webapp/django/contrib/gis/utils/layermapping.py
deleted file mode 100644
index 40d2e97..0000000
--- a/webapp/django/contrib/gis/utils/layermapping.py
+++ /dev/null
@@ -1,677 +0,0 @@
-# LayerMapping -- A Django Model/OGR Layer Mapping Utility
-"""
- The LayerMapping class provides a way to map the contents of OGR
- vector files (e.g. SHP files) to Geographic-enabled Django models.
-
- This grew out of my personal needs, specifically the code repetition
- that went into pulling geometries and fields out of an OGR layer,
- converting to another coordinate system (e.g. WGS84), and then inserting
- into a GeoDjango model.
-
- Please report any bugs encountered using this utility.
-
- Requirements:  OGR C Library (from GDAL) required.
-
- Usage: 
-  lm = LayerMapping(model, source_file, mapping) where,
-
-  model:
-   GeoDjango model (not an instance)
-
-  data:
-   OGR-supported data source file (e.g. a shapefile) or
-    gdal.DataSource instance
-
-  mapping:
-   A python dictionary, keys are strings corresponding
-   to the GeoDjango model field, and values correspond to
-   string field names for the OGR feature, or if the model field
-   is a geographic then it should correspond to the OGR
-   geometry type, e.g. 'POINT', 'LINESTRING', 'POLYGON'.
-
- Keyword Args:
-  layer:
-   The index of the layer to use from the Data Source (defaults to 0)
-
-  source_srs:
-   Use this to specify the source SRS manually (for example, 
-   some shapefiles don't come with a '.prj' file).  An integer SRID,
-   a string WKT, and SpatialReference objects are valid parameters.
-
-  encoding:
-   Specifies the encoding of the string in the OGR data source.
-   For example, 'latin-1', 'utf-8', and 'cp437' are all valid
-   encoding parameters.
-
-  transaction_mode:
-   May be 'commit_on_success' (default) or 'autocommit'.
-
-  transform:
-   Setting this to False will disable all coordinate transformations.  
-
-  unique:
-   Setting this to the name, or a tuple of names, from the given
-   model will create models unique only to the given name(s).
-   Geometries will from each feature will be added into the collection
-   associated with the unique model.  Forces transaction mode to
-   be 'autocommit'.
-
-Example:
-
- 1. You need a GDAL-supported data source, like a shapefile.
-
-  Assume we're using the test_poly SHP file:
-  >>> from django.contrib.gis.gdal import DataSource
-  >>> ds = DataSource('test_poly.shp')
-  >>> layer = ds[0]
-  >>> print layer.fields # Exploring the fields in the layer, we only want the 'str' field.
-  ['float', 'int', 'str']
-  >>> print len(layer) # getting the number of features in the layer (should be 3)
-  3
-  >>> print layer.geom_type # Should be 3 (a Polygon)
-  3
-  >>> print layer.srs # WGS84
-  GEOGCS["GCS_WGS_1984",
-      DATUM["WGS_1984",
-          SPHEROID["WGS_1984",6378137,298.257223563]],
-      PRIMEM["Greenwich",0],
-      UNIT["Degree",0.017453292519943295]]
-
- 2. Now we define our corresponding Django model (make sure to use syncdb):
-
-  from django.contrib.gis.db import models
-  class TestGeo(models.Model, models.GeoMixin):
-      name = models.CharField(maxlength=25) # corresponds to the 'str' field
-      poly = models.PolygonField(srid=4269) # we want our model in a different SRID
-      objects = models.GeoManager()
-      def __str__(self):
-          return 'Name: %s' % self.name
-
- 3. Use LayerMapping to extract all the features and place them in the database:
-
-  >>> from django.contrib.gis.utils import LayerMapping
-  >>> from geoapp.models import TestGeo
-  >>> mapping = {'name' : 'str', # The 'name' model field maps to the 'str' layer field.
-                 'poly' : 'POLYGON', # For geometry fields use OGC name.
-                 } # The mapping is a dictionary
-  >>> lm = LayerMapping(TestGeo, 'test_poly.shp', mapping) 
-  >>> lm.save(verbose=True) # Save the layermap, imports the data. 
-  Saved: Name: 1
-  Saved: Name: 2
-  Saved: Name: 3
-
- LayerMapping just transformed the three geometries from the SHP file from their
- source spatial reference system (WGS84) to the spatial reference system of
- the GeoDjango model (NAD83).  If no spatial reference system is defined for
- the layer, use the `source_srs` keyword with a SpatialReference object to
- specify one.
-"""
-import sys
-from datetime import date, datetime
-from decimal import Decimal
-from django.core.exceptions import ObjectDoesNotExist
-from django.contrib.gis.db.models import GeometryField
-from django.contrib.gis.db.backend import SpatialBackend
-from django.contrib.gis.gdal import CoordTransform, DataSource, \
-    OGRException, OGRGeometry, OGRGeomType, SpatialReference
-from django.contrib.gis.gdal.field import \
-    OFTDate, OFTDateTime, OFTInteger, OFTReal, OFTString, OFTTime
-from django.contrib.gis.models import GeometryColumns, SpatialRefSys
-from django.db import models, transaction
-
-# LayerMapping exceptions.
-class LayerMapError(Exception): pass
-class InvalidString(LayerMapError): pass
-class InvalidDecimal(LayerMapError): pass
-class InvalidInteger(LayerMapError): pass
-class MissingForeignKey(LayerMapError): pass
-
-class LayerMapping(object):
-    "A class that maps OGR Layers to GeoDjango Models."
-    
-    # Acceptable 'base' types for a multi-geometry type.
-    MULTI_TYPES = {1 : OGRGeomType('MultiPoint'),
-                   2 : OGRGeomType('MultiLineString'),
-                   3 : OGRGeomType('MultiPolygon'),
-                   }
-
-    # Acceptable Django field types and corresponding acceptable OGR
-    # counterparts.
-    FIELD_TYPES = {
-        models.AutoField : OFTInteger,
-        models.IntegerField : (OFTInteger, OFTReal, OFTString),
-        models.FloatField : (OFTInteger, OFTReal),
-        models.DateField : OFTDate,
-        models.DateTimeField : OFTDateTime,
-        models.EmailField : OFTString,
-        models.TimeField : OFTTime,
-        models.DecimalField : (OFTInteger, OFTReal),
-        models.CharField : OFTString,
-        models.SlugField : OFTString,
-        models.TextField : OFTString,
-        models.URLField : OFTString,
-        models.USStateField : OFTString,
-        models.XMLField : OFTString,
-        models.SmallIntegerField : (OFTInteger, OFTReal, OFTString),
-        models.PositiveSmallIntegerField : (OFTInteger, OFTReal, OFTString),
-        }
-
-    # The acceptable transaction modes.
-    TRANSACTION_MODES = {'autocommit' : transaction.autocommit,
-                         'commit_on_success' : transaction.commit_on_success,
-                         }
-
-    def __init__(self, model, data, mapping, layer=0, 
-                 source_srs=None, encoding=None,
-                 transaction_mode='commit_on_success', 
-                 transform=True, unique=None):
-        """
-        A LayerMapping object is initialized using the given Model (not an instance),
-        a DataSource (or string path to an OGR-supported data file), and a mapping
-        dictionary.  See the module level docstring for more details and keyword
-        argument usage.
-        """
-        # Getting the DataSource and the associated Layer.
-        if isinstance(data, basestring):
-            self.ds = DataSource(data)
-        else:
-            self.ds = data
-        self.layer = self.ds[layer]
-
-        # Setting the mapping
-        self.mapping = mapping
-
-        # Setting the model, and getting the geometry column associated 
-        # with the model (an exception will be raised if there is no 
-        # geometry column).
-        self.model = model
-        self.geo_col = self.geometry_column()
-
-        # Checking the source spatial reference system, and getting
-        # the coordinate transformation object (unless the `transform`
-        # keyword is set to False)
-        if transform:
-            self.source_srs = self.check_srs(source_srs)
-            self.transform = self.coord_transform()
-        else:
-            self.transform = transform
-
-        # Checking the layer -- intitialization of the object will fail if
-        # things don't check out before hand.
-        self.check_layer()
-
-        # Setting the encoding for OFTString fields, if specified.
-        if encoding:
-            # Making sure the encoding exists, if not a LookupError
-            # exception will be thrown.
-            from codecs import lookup
-            lookup(encoding)
-            self.encoding = encoding
-        else:
-            self.encoding = None
-
-        if unique:
-            self.check_unique(unique)
-            transaction_mode = 'autocommit' # Has to be set to autocommit.
-            self.unique = unique
-        else:
-            self.unique = None
-
-        # Setting the transaction decorator with the function in the 
-        # transaction modes dictionary.
-        if transaction_mode in self.TRANSACTION_MODES:
-            self.transaction_decorator = self.TRANSACTION_MODES[transaction_mode]
-            self.transaction_mode = transaction_mode
-        else:
-            raise LayerMapError('Unrecognized transaction mode: %s' % transaction_mode)
-    
-    #### Checking routines used during initialization ####
-    def check_fid_range(self, fid_range):
-        "This checks the `fid_range` keyword."
-        if fid_range:
-            if isinstance(fid_range, (tuple, list)):
-                return slice(*fid_range)
-            elif isinstance(fid_range, slice):
-                return fid_range
-            else:
-                raise TypeError
-        else:
-            return None
-
-    def check_layer(self):
-        """
-        This checks the Layer metadata, and ensures that it is compatible
-        with the mapping information and model.  Unlike previous revisions,
-        there is no need to increment through each feature in the Layer.
-        """
-        # The geometry field of the model is set here.
-        # TODO: Support more than one geometry field / model.
-        self.geom_field = False
-        self.fields = {}
-
-        # Getting lists of the field names and the field types available in
-        # the OGR Layer.
-        ogr_fields = self.layer.fields
-        ogr_field_types = self.layer.field_types
-
-        # Function for determining if the OGR mapping field is in the Layer.
-        def check_ogr_fld(ogr_map_fld):
-            try:
-                idx = ogr_fields.index(ogr_map_fld)
-            except ValueError:
-                raise LayerMapError('Given mapping OGR field "%s" not found in OGR Layer.' % ogr_map_fld)
-            return idx
-
-        # No need to increment through each feature in the model, simply check
-        # the Layer metadata against what was given in the mapping dictionary.
-        for field_name, ogr_name in self.mapping.items():
-            # Ensuring that a corresponding field exists in the model
-            # for the given field name in the mapping.
-            try:
-                model_field = self.model._meta.get_field(field_name)
-            except models.fields.FieldDoesNotExist:
-                raise LayerMapError('Given mapping field "%s" not in given Model fields.' % field_name)
-
-            # Getting the string name for the Django field class (e.g., 'PointField').
-            fld_name = model_field.__class__.__name__
-
-            if isinstance(model_field, GeometryField):
-                if self.geom_field:
-                    raise LayerMapError('LayerMapping does not support more than one GeometryField per model.')
-
-                try:
-                    gtype = OGRGeomType(ogr_name)
-                except OGRException:
-                    raise LayerMapError('Invalid mapping for GeometryField "%s".' % field_name)
-
-                # Making sure that the OGR Layer's Geometry is compatible.
-                ltype = self.layer.geom_type
-                if not (gtype == ltype or self.make_multi(ltype, model_field)):
-                    raise LayerMapError('Invalid mapping geometry; model has %s, feature has %s.' % (fld_name, gtype))
-
-                # Setting the `geom_field` attribute w/the name of the model field
-                # that is a Geometry.
-                self.geom_field = field_name
-                fields_val = model_field
-            elif isinstance(model_field, models.ForeignKey):
-                if isinstance(ogr_name, dict):
-                    # Is every given related model mapping field in the Layer?
-                    rel_model = model_field.rel.to
-                    for rel_name, ogr_field in ogr_name.items(): 
-                        idx = check_ogr_fld(ogr_field)
-                        try:
-                            rel_field = rel_model._meta.get_field(rel_name)
-                        except models.fields.FieldDoesNotExist:
-                            raise LayerMapError('ForeignKey mapping field "%s" not in %s fields.' % 
-                                                (rel_name, rel_model.__class__.__name__))
-                    fields_val = rel_model
-                else:
-                    raise TypeError('ForeignKey mapping must be of dictionary type.')
-            else:
-                # Is the model field type supported by LayerMapping?
-                if not model_field.__class__ in self.FIELD_TYPES:
-                    raise LayerMapError('Django field type "%s" has no OGR mapping (yet).' % fld_name)
-
-                # Is the OGR field in the Layer?
-                idx = check_ogr_fld(ogr_name)
-                ogr_field = ogr_field_types[idx]
-
-                # Can the OGR field type be mapped to the Django field type?
-                if not issubclass(ogr_field, self.FIELD_TYPES[model_field.__class__]):
-                    raise LayerMapError('OGR field "%s" (of type %s) cannot be mapped to Django %s.' % 
-                                        (ogr_field, ogr_field.__name__, fld_name))
-                fields_val = model_field
-        
-            self.fields[field_name] = fields_val
-
-    def check_srs(self, source_srs):
-        "Checks the compatibility of the given spatial reference object."
-        if isinstance(source_srs, SpatialReference):
-            sr = source_srs
-        elif isinstance(source_srs, SpatialRefSys):
-            sr = source_srs.srs
-        elif isinstance(source_srs, (int, basestring)):
-            sr = SpatialReference(source_srs)
-        else:
-            # Otherwise just pulling the SpatialReference from the layer
-            sr = self.layer.srs
-        
-        if not sr:
-            raise LayerMapError('No source reference system defined.')
-        else:
-            return sr
-
-    def check_unique(self, unique):
-        "Checks the `unique` keyword parameter -- may be a sequence or string."
-        if isinstance(unique, (list, tuple)):
-            # List of fields to determine uniqueness with
-            for attr in unique: 
-                if not attr in self.mapping: raise ValueError
-        elif isinstance(unique, basestring):
-            # Only a single field passed in.
-            if unique not in self.mapping: raise ValueError
-        else:
-            raise TypeError('Unique keyword argument must be set with a tuple, list, or string.')
-
-    #### Keyword argument retrieval routines ####
-    def feature_kwargs(self, feat):
-        """
-        Given an OGR Feature, this will return a dictionary of keyword arguments
-        for constructing the mapped model.
-        """
-        # The keyword arguments for model construction.
-        kwargs = {}
-
-        # Incrementing through each model field and OGR field in the
-        # dictionary mapping.
-        for field_name, ogr_name in self.mapping.items():
-            model_field = self.fields[field_name]
-            
-            if isinstance(model_field, GeometryField):
-                # Verify OGR geometry.
-                val = self.verify_geom(feat.geom, model_field)
-            elif isinstance(model_field, models.base.ModelBase):
-                # The related _model_, not a field was passed in -- indicating
-                # another mapping for the related Model.
-                val = self.verify_fk(feat, model_field, ogr_name)
-            else:
-                # Otherwise, verify OGR Field type.
-                val = self.verify_ogr_field(feat[ogr_name], model_field)
-
-            # Setting the keyword arguments for the field name with the
-            # value obtained above.
-            kwargs[field_name] = val
-            
-        return kwargs
-
-    def unique_kwargs(self, kwargs):
-        """
-        Given the feature keyword arguments (from `feature_kwargs`) this routine
-        will construct and return the uniqueness keyword arguments -- a subset
-        of the feature kwargs.
-        """
-        if isinstance(self.unique, basestring):
-            return {self.unique : kwargs[self.unique]}
-        else:
-            return dict((fld, kwargs[fld]) for fld in self.unique)
-
-    #### Verification routines used in constructing model keyword arguments. ####
-    def verify_ogr_field(self, ogr_field, model_field):
-        """
-        Verifies if the OGR Field contents are acceptable to the Django
-        model field.  If they are, the verified value is returned, 
-        otherwise the proper exception is raised.
-        """
-        if (isinstance(ogr_field, OFTString) and 
-            isinstance(model_field, (models.CharField, models.TextField))): 
-            if self.encoding:
-                # The encoding for OGR data sources may be specified here
-                # (e.g., 'cp437' for Census Bureau boundary files).
-                val = unicode(ogr_field.value, self.encoding)
-            else:
-                val = ogr_field.value
-                if len(val) > model_field.max_length:
-                    raise InvalidString('%s model field maximum string length is %s, given %s characters.' %
-                                        (model_field.name, model_field.max_length, len(val)))
-        elif isinstance(ogr_field, OFTReal) and isinstance(model_field, models.DecimalField):
-            try:
-                # Creating an instance of the Decimal value to use.
-                d = Decimal(str(ogr_field.value))
-            except:
-                raise InvalidDecimal('Could not construct decimal from: %s' % ogr_field.value)
-
-            # Getting the decimal value as a tuple.
-            dtup = d.as_tuple()
-            digits = dtup[1]
-            d_idx = dtup[2] # index where the decimal is
-
-            # Maximum amount of precision, or digits to the left of the decimal.
-            max_prec = model_field.max_digits - model_field.decimal_places
-
-            # Getting the digits to the left of the decimal place for the 
-            # given decimal.
-            if d_idx < 0:
-                n_prec = len(digits[:d_idx])
-            else:
-                n_prec = len(digits) + d_idx
-
-            # If we have more than the maximum digits allowed, then throw an 
-            # InvalidDecimal exception.
-            if n_prec > max_prec:
-                raise InvalidDecimal('A DecimalField with max_digits %d, decimal_places %d must round to an absolute value less than 10^%d.' %
-                                     (model_field.max_digits, model_field.decimal_places, max_prec))
-            val = d
-        elif isinstance(ogr_field, (OFTReal, OFTString)) and isinstance(model_field, models.IntegerField):
-            # Attempt to convert any OFTReal and OFTString value to an OFTInteger.
-            try:
-                val = int(ogr_field.value)
-            except:
-                raise InvalidInteger('Could not construct integer from: %s' % ogr_field.value)
-        else:
-            val = ogr_field.value
-        return val
-
-    def verify_fk(self, feat, rel_model, rel_mapping):
-        """
-        Given an OGR Feature, the related model and its dictionary mapping,
-        this routine will retrieve the related model for the ForeignKey
-        mapping.
-        """
-        # TODO: It is expensive to retrieve a model for every record --
-        #  explore if an efficient mechanism exists for caching related 
-        #  ForeignKey models.
-
-        # Constructing and verifying the related model keyword arguments.
-        fk_kwargs = {}
-        for field_name, ogr_name in rel_mapping.items():
-            fk_kwargs[field_name] = self.verify_ogr_field(feat[ogr_name], rel_model._meta.get_field(field_name))
-
-        # Attempting to retrieve and return the related model.
-        try:
-            return rel_model.objects.get(**fk_kwargs)
-        except ObjectDoesNotExist:
-            raise MissingForeignKey('No ForeignKey %s model found with keyword arguments: %s' % (rel_model.__name__, fk_kwargs))
-            
-    def verify_geom(self, geom, model_field):
-        """
-        Verifies the geometry -- will construct and return a GeometryCollection
-        if necessary (for example if the model field is MultiPolygonField while
-        the mapped shapefile only contains Polygons).
-        """
-        if self.make_multi(geom.geom_type, model_field):
-            # Constructing a multi-geometry type to contain the single geometry
-            multi_type = self.MULTI_TYPES[geom.geom_type.num]
-            g = OGRGeometry(multi_type)
-            g.add(geom)
-        else:
-            g = geom
-
-        # Transforming the geometry with our Coordinate Transformation object,
-        # but only if the class variable `transform` is set w/a CoordTransform 
-        # object.
-        if self.transform: g.transform(self.transform)
-        
-        # Returning the WKT of the geometry.
-        return g.wkt
-
-    #### Other model methods ####
-    def coord_transform(self):
-        "Returns the coordinate transformation object."
-        try:
-            # Getting the target spatial reference system
-            target_srs = SpatialRefSys.objects.get(srid=self.geo_col.srid).srs
-
-            # Creating the CoordTransform object
-            return CoordTransform(self.source_srs, target_srs)
-        except Exception, msg:
-            raise LayerMapError('Could not translate between the data source and model geometry: %s' % msg)
-
-    def geometry_column(self):
-        "Returns the GeometryColumn model associated with the geographic column."
-        # Getting the GeometryColumn object.
-        try:
-            db_table = self.model._meta.db_table
-            if SpatialBackend.name == 'oracle': db_table = db_table.upper()
-            gc_kwargs = {GeometryColumns.table_name_col() : db_table}
-            return GeometryColumns.objects.get(**gc_kwargs)
-        except Exception, msg:
-            raise LayerMapError('Geometry column does not exist for model. (did you run syncdb?):\n %s' % msg)
-
-    def make_multi(self, geom_type, model_field):
-        """
-        Given the OGRGeomType for a geometry and its associated GeometryField, 
-        determine whether the geometry should be turned into a GeometryCollection.
-        """
-        return (geom_type.num in self.MULTI_TYPES and 
-                model_field.__class__.__name__ == 'Multi%s' % geom_type.django)
-
-    def save(self, verbose=False, fid_range=False, step=False, 
-             progress=False, silent=False, stream=sys.stdout, strict=False):
-        """
-        Saves the contents from the OGR DataSource Layer into the database
-        according to the mapping dictionary given at initialization. 
-        
-        Keyword Parameters:
-         verbose:
-           If set, information will be printed subsequent to each model save 
-           executed on the database.
-
-         fid_range:
-           May be set with a slice or tuple of (begin, end) feature ID's to map
-           from the data source.  In other words, this keyword enables the user
-           to selectively import a subset range of features in the geographic
-           data source.
-
-         step:
-           If set with an integer, transactions will occur at every step 
-           interval. For example, if step=1000, a commit would occur after 
-           the 1,000th feature, the 2,000th feature etc.
-
-         progress:
-           When this keyword is set, status information will be printed giving 
-           the number of features processed and sucessfully saved.  By default, 
-           progress information will pe printed every 1000 features processed, 
-           however, this default may be overridden by setting this keyword with an 
-           integer for the desired interval.
-
-         stream:
-           Status information will be written to this file handle.  Defaults to 
-           using `sys.stdout`, but any object with a `write` method is supported.
-
-         silent:
-           By default, non-fatal error notifications are printed to stdout, but 
-           this keyword may be set to disable these notifications.
-
-         strict:
-           Execution of the model mapping will cease upon the first error 
-           encountered.  The default behavior is to attempt to continue.
-        """
-        # Getting the default Feature ID range.
-        default_range = self.check_fid_range(fid_range)
-    
-        # Setting the progress interval, if requested.
-        if progress:
-            if progress is True or not isinstance(progress, int):
-                progress_interval = 1000
-            else:
-                progress_interval = progress
-
-        # Defining the 'real' save method, utilizing the transaction 
-        # decorator created during initialization.
-        @self.transaction_decorator
-        def _save(feat_range=default_range, num_feat=0, num_saved=0):
-            if feat_range:
-                layer_iter = self.layer[feat_range]
-            else:
-                layer_iter = self.layer
-
-            for feat in layer_iter:
-                num_feat += 1
-                # Getting the keyword arguments
-                try:
-                    kwargs = self.feature_kwargs(feat)
-                except LayerMapError, msg:
-                    # Something borked the validation
-                    if strict: raise
-                    elif not silent: 
-                        stream.write('Ignoring Feature ID %s because: %s\n' % (feat.fid, msg))
-                else:
-                    # Constructing the model using the keyword args
-                    is_update = False
-                    if self.unique:
-                        # If we want unique models on a particular field, handle the
-                        # geometry appropriately.
-                        try:
-                            # Getting the keyword arguments and retrieving
-                            # the unique model.
-                            u_kwargs = self.unique_kwargs(kwargs)
-                            m = self.model.objects.get(**u_kwargs)
-                            is_update = True
-                                
-                            # Getting the geometry (in OGR form), creating 
-                            # one from the kwargs WKT, adding in additional 
-                            # geometries, and update the attribute with the 
-                            # just-updated geometry WKT.
-                            geom = getattr(m, self.geom_field).ogr
-                            new = OGRGeometry(kwargs[self.geom_field])
-                            for g in new: geom.add(g) 
-                            setattr(m, self.geom_field, geom.wkt)
-                        except ObjectDoesNotExist:
-                            # No unique model exists yet, create.
-                            m = self.model(**kwargs)
-                    else:
-                        m = self.model(**kwargs)
-
-                    try:
-                        # Attempting to save.
-                        m.save()
-                        num_saved += 1
-                        if verbose: stream.write('%s: %s\n' % (is_update and 'Updated' or 'Saved', m))
-                    except SystemExit:
-                        raise
-                    except Exception, msg:
-                        if self.transaction_mode == 'autocommit':
-                            # Rolling back the transaction so that other model saves
-                            # will work.
-                            transaction.rollback_unless_managed()
-                        if strict: 
-                            # Bailing out if the `strict` keyword is set.
-                            if not silent:
-                                stream.write('Failed to save the feature (id: %s) into the model with the keyword arguments:\n' % feat.fid)
-                                stream.write('%s\n' % kwargs)
-                            raise
-                        elif not silent:
-                            stream.write('Failed to save %s:\n %s\nContinuing\n' % (kwargs, msg))
-
-                # Printing progress information, if requested.
-                if progress and num_feat % progress_interval == 0:
-                    stream.write('Processed %d features, saved %d ...\n' % (num_feat, num_saved))
-        
-            # Only used for status output purposes -- incremental saving uses the
-            # values returned here.
-            return num_saved, num_feat
-
-        nfeat = self.layer.num_feat
-        if step and isinstance(step, int) and step < nfeat:
-            # Incremental saving is requested at the given interval (step) 
-            if default_range: 
-                raise LayerMapError('The `step` keyword may not be used in conjunction with the `fid_range` keyword.')
-            beg, num_feat, num_saved = (0, 0, 0)
-            indices = range(step, nfeat, step)
-            n_i = len(indices)
-
-            for i, end in enumerate(indices):
-                # Constructing the slice to use for this step; the last slice is
-                # special (e.g, [100:] instead of [90:100]).
-                if i+1 == n_i: step_slice = slice(beg, None)
-                else: step_slice = slice(beg, end)
-            
-                try:
-                    num_feat, num_saved = _save(step_slice, num_feat, num_saved)
-                    beg = end
-                except:
-                    stream.write('%s\nFailed to save slice: %s\n' % ('=-' * 20, step_slice))
-                    raise
-        else:
-            # Otherwise, just calling the previously defined _save() function.
-            _save()
diff --git a/webapp/django/contrib/gis/utils/ogrinfo.py b/webapp/django/contrib/gis/utils/ogrinfo.py
deleted file mode 100644
index f9b389c..0000000
--- a/webapp/django/contrib/gis/utils/ogrinfo.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-This module includes some utility functions for inspecting the layout
-of a GDAL data source -- the functionality is analogous to the output
-produced by the `ogrinfo` utility.
-"""
-
-from django.contrib.gis.gdal import DataSource
-from django.contrib.gis.gdal.geometries import GEO_CLASSES
-
-def ogrinfo(data_source, num_features=10):
-    """
-    Walks the available layers in the supplied `data_source`, displaying
-    the fields for the first `num_features` features.
-    """
-
-    # Checking the parameters.
-    if isinstance(data_source, str):
-        data_source = DataSource(data_source)
-    elif isinstance(data_source, DataSource):
-        pass
-    else:
-        raise Exception, 'Data source parameter must be a string or a DataSource object.'
-
-    for i, layer in enumerate(data_source):
-        print "data source : %s" % data_source.name
-        print "==== layer %s" % i
-        print "  shape type: %s" % GEO_CLASSES[layer.geom_type.num].__name__
-        print "  # features: %s" % len(layer)
-        print "         srs: %s" % layer.srs
-        extent_tup = layer.extent.tuple
-        print "      extent: %s - %s" % (extent_tup[0:2], extent_tup[2:4])
-        print "Displaying the first %s features ====" % num_features
-
-        width = max(*map(len,layer.fields))
-        fmt = " %%%ss: %%s" % width
-        for j, feature in enumerate(layer[:num_features]):
-            print "=== Feature %s" % j
-            for fld_name in layer.fields:
-                type_name = feature[fld_name].type_name
-                output = fmt % (fld_name, type_name)
-                val = feature.get(fld_name)
-                if val:
-                    if isinstance(val, str):
-                        val_fmt = ' ("%s")'
-                    else:
-                        val_fmt = ' (%s)'
-                    output += val_fmt % val
-                else:
-                    output += ' (None)'
-                print output
-
-# For backwards compatibility.
-sample = ogrinfo
diff --git a/webapp/django/contrib/gis/utils/ogrinspect.py b/webapp/django/contrib/gis/utils/ogrinspect.py
deleted file mode 100644
index c0c3c40..0000000
--- a/webapp/django/contrib/gis/utils/ogrinspect.py
+++ /dev/null
@@ -1,225 +0,0 @@
-"""
-This module is for inspecting OGR data sources and generating either
-models for GeoDjango and/or mapping dictionaries for use with the
-`LayerMapping` utility.
-
-Author: Travis Pinney, Dane Springmeyer, & Justin Bronn
-"""
-from itertools import izip
-# Requires GDAL to use.
-from django.contrib.gis.gdal import DataSource
-from django.contrib.gis.gdal.field import OFTDate, OFTDateTime, OFTInteger, OFTReal, OFTString, OFTTime
-
-def mapping(data_source, geom_name='geom', layer_key=0, multi_geom=False):
-    """
-    Given a DataSource, generates a dictionary that may be used 
-    for invoking the LayerMapping utility.
-
-    Keyword Arguments:
-     `geom_name` => The name of the geometry field to use for the model.
-     
-     `layer_key` => The key for specifying which layer in the DataSource to use;
-       defaults to 0 (the first layer).  May be an integer index or a string
-       identifier for the layer.
-
-     `multi_geom` => Boolean (default: False) - specify as multigeometry.
-    """
-    if isinstance(data_source, basestring):
-        # Instantiating the DataSource from the string.
-        data_source = DataSource(data_source)
-    elif isinstance(data_source, DataSource):
-        pass
-    else:
-        raise TypeError('Data source parameter must be a string or a DataSource object.')
-    
-    # Creating the dictionary.
-    _mapping = {}
-
-    # Generating the field name for each field in the layer.
-    for field in data_source[layer_key].fields:
-        mfield = field.lower()
-        if mfield[-1:] == '_': mfield += 'field'
-        _mapping[mfield] = field
-    gtype = data_source[layer_key].geom_type
-    if multi_geom and gtype.num in (1, 2, 3): prefix = 'MULTI'
-    else: prefix = ''
-    _mapping[geom_name] = prefix + str(gtype).upper()
-    return _mapping
-
-def ogrinspect(*args, **kwargs):
-    """
-    Given a data source (either a string or a DataSource object) and a string
-    model name this function will generate a GeoDjango model.
-
-    Usage:
-    
-    >>> from django.contrib.gis.utils import ogrinspect
-    >>> ogrinspect('/path/to/shapefile.shp','NewModel')
-    
-    ...will print model definition to stout
-    
-    or put this in a python script and use to redirect the output to a new
-    model like:
-    
-    $ python generate_model.py > myapp/models.py
-    
-    # generate_model.py 
-    from django.contrib.gis.utils import ogrinspect
-    shp_file = 'data/mapping_hacks/world_borders.shp'
-    model_name = 'WorldBorders'
-
-    print ogrinspect(shp_file, model_name, multi_geom=True, srid=4326,
-                     geom_name='shapes', blank=True)
-                     
-    Required Arguments
-     `datasource` => string or DataSource object to file pointer
-     
-     `model name` => string of name of new model class to create
-      
-    Optional Keyword Arguments
-     `geom_name` => For specifying the model name for the Geometry Field. 
-       Otherwise will default to `geom`
-
-     `layer_key` => The key for specifying which layer in the DataSource to use;
-       defaults to 0 (the first layer).  May be an integer index or a string
-       identifier for the layer.
-
-     `srid` => The SRID to use for the Geometry Field.  If it can be determined,
-       the SRID of the datasource is used.
-      
-     `multi_geom` => Boolean (default: False) - specify as multigeometry.
-     
-     `name_field` => String - specifies a field name to return for the
-       `__unicode__` function (which will be generated if specified).
-     
-     `imports` => Boolean (default: True) - set to False to omit the 
-       `from django.contrib.gis.db import models` code from the 
-       autogenerated models thus avoiding duplicated imports when building
-       more than one model by batching ogrinspect()
-     
-     `decimal` => Boolean or sequence (default: False).  When set to True
-       all generated model fields corresponding to the `OFTReal` type will
-       be `DecimalField` instead of `FloatField`.  A sequence of specific
-       field names to generate as `DecimalField` may also be used.
-
-     `blank` => Boolean or sequence (default: False).  When set to True all
-       generated model fields will have `blank=True`.  If the user wants to 
-       give specific fields to have blank, then a list/tuple of OGR field
-       names may be used.
-
-     `null` => Boolean (default: False) - When set to True all generated
-       model fields will have `null=True`.  If the user wants to specify
-       give specific fields to have null, then a list/tuple of OGR field
-       names may be used.
-     
-    Note: This routine calls the _ogrinspect() helper to do the heavy lifting.
-    """
-    return '\n'.join(s for s in _ogrinspect(*args, **kwargs))
-
-def _ogrinspect(data_source, model_name, geom_name='geom', layer_key=0, srid=None,
-                multi_geom=False, name_field=None, imports=True, 
-                decimal=False, blank=False, null=False):
-    """
-    Helper routine for `ogrinspect` that generates GeoDjango models corresponding
-    to the given data source.  See the `ogrinspect` docstring for more details.
-    """
-    # Getting the DataSource
-    if isinstance(data_source, str):
-        data_source = DataSource(data_source)
-    elif isinstance(data_source, DataSource):
-        pass
-    else:
-        raise TypeError('Data source parameter must be a string or a DataSource object.')
-
-    # Getting the layer corresponding to the layer key and getting
-    # a string listing of all OGR fields in the Layer.
-    layer = data_source[layer_key]
-    ogr_fields = layer.fields
-
-    # Creating lists from the `null`, `blank`, and `decimal`
-    # keyword arguments.
-    def process_kwarg(kwarg):
-        if isinstance(kwarg, (list, tuple)):
-            return [s.lower() for s in kwarg] 
-        elif kwarg:
-            return [s.lower() for s in ogr_fields]
-        else:
-            return []
-    null_fields = process_kwarg(null)
-    blank_fields = process_kwarg(blank)
-    decimal_fields = process_kwarg(decimal)
-
-    # Gets the `null` and `blank` keywords for the given field name.
-    def get_kwargs_str(field_name):
-        kwlist = []
-        if field_name.lower() in null_fields: kwlist.append('null=True')
-        if field_name.lower() in blank_fields: kwlist.append('blank=True')
-        if kwlist: return ', ' + ', '.join(kwlist)
-        else: return ''
-
-    # For those wishing to disable the imports.
-    if imports:
-        yield '# This is an auto-generated Django model module created by ogrinspect.'
-        yield 'from django.contrib.gis.db import models'
-        yield ''
-
-    yield 'class %s(models.Model):' % model_name
-    
-    for field_name, width, precision, field_type in izip(ogr_fields, layer.field_widths, layer.field_precisions, layer.field_types):
-        # The model field name.
-        mfield = field_name.lower()
-        if mfield[-1:] == '_': mfield += 'field'
-        
-        # Getting the keyword args string.
-        kwargs_str = get_kwargs_str(field_name)
-
-        if field_type is OFTReal:
-            # By default OFTReals are mapped to `FloatField`, however, they
-            # may also be mapped to `DecimalField` if specified in the 
-            # `decimal` keyword.
-            if field_name.lower() in decimal_fields:
-                yield '    %s = models.DecimalField(max_digits=%d, decimal_places=%d%s)' % (mfield, width, precision, kwargs_str)
-            else:
-                yield '    %s = models.FloatField(%s)' % (mfield, kwargs_str[2:])
-        elif field_type is OFTInteger:
-            yield '    %s = models.IntegerField(%s)' % (mfield, kwargs_str[2:])
-        elif field_type is OFTString:
-            yield '    %s = models.CharField(max_length=%s%s)' % (mfield, width, kwargs_str)
-        elif field_type is OFTDate:
-            yield '    %s = models.DateField(%s)' % (mfield, kwargs_str[2:])
-        elif field_type is OFTDateTime:
-            yield '    %s = models.DateTimeField(%s)' % (mfield, kwargs_str[2:])
-        elif field_type is OFTDate:
-            yield '    %s = models.TimeField(%s)' % (mfield, kwargs_str[2:])
-        else:
-            raise TypeError('Unknown field type %s in %s' % (fld_type, mfield))
-    
-    # TODO: Autodetection of multigeometry types (see #7218).
-    gtype = layer.geom_type
-    if multi_geom and gtype.num in (1, 2, 3):
-        geom_field = 'Multi%s' % gtype.django
-    else:
-        geom_field = gtype.django
-
-    # Setting up the SRID keyword string.
-    if srid is None:
-        if layer.srs is None:
-            srid_str = 'srid=-1'
-        else:
-            srid = layer.srs.srid
-            if srid is None:
-                srid_str = 'srid=-1'
-            elif srid == 4326:
-                # WGS84 is already the default.
-                srid_str = ''
-            else:
-                srid_str = 'srid=%s' % srid
-    else:
-        srid_str = 'srid=%s' % srid
-
-    yield '    %s = models.%s(%s)' % (geom_name, geom_field, srid_str)
-    yield '    objects = models.GeoManager()'
-
-    if name_field:
-        yield ''
-        yield '    def __unicode__(self): return self.%s' % name_field
diff --git a/webapp/django/contrib/gis/utils/srs.py b/webapp/django/contrib/gis/utils/srs.py
deleted file mode 100644
index 4df2796..0000000
--- a/webapp/django/contrib/gis/utils/srs.py
+++ /dev/null
@@ -1,27 +0,0 @@
-def add_postgis_srs(srs):
-    """
-    This function takes a GDAL SpatialReference system and adds its
-    information to the PostGIS `spatial_ref_sys` table -- enabling
-    spatial transformations with PostGIS.  This is handy for adding
-    spatial reference systems not included by default with PostGIS.  
-    For example, the following adds the so-called "Google Maps Mercator 
-    Projection" (available in GDAL 1.5):
-    
-    >>> add_postgis_srs(SpatialReference(900913))
-
-    Note: By default, the `auth_name` is set to 'EPSG' -- this should
-    probably be changed.
-    """
-    from django.contrib.gis.models import SpatialRefSys
-    from django.contrib.gis.gdal import SpatialReference
-
-    if not isinstance(srs, SpatialReference):
-        srs = SpatialReference(srs)
-
-    if srs.srid is None:
-        raise Exception('Spatial reference requires an SRID to be compatible with PostGIS.')
-   
-    # Creating the spatial_ref_sys model.
-    sr, created = SpatialRefSys.objects.get_or_create(
-        srid=srs.srid, auth_name='EPSG', auth_srid=srs.srid, 
-        srtext=srs.wkt, proj4text=srs.proj4)
diff --git a/webapp/django/contrib/gis/utils/wkt.py b/webapp/django/contrib/gis/utils/wkt.py
deleted file mode 100644
index 4aecc62..0000000
--- a/webapp/django/contrib/gis/utils/wkt.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
- Utilities for manipulating Geometry WKT.
-"""
-
-def precision_wkt(geom, prec):
-    """
-    Returns WKT text of the geometry according to the given precision (an 
-    integer or a string).  If the precision is an integer, then the decimal
-    places of coordinates WKT will be truncated to that number:
-
-     >>> pnt = Point(5, 23)
-     >>> pnt.wkt
-     'POINT (5.0000000000000000 23.0000000000000000)'
-     >>> precision(geom, 1)
-     'POINT (5.0 23.0)'
-
-    If the precision is a string, it must be valid Python format string 
-    (e.g., '%20.7f') -- thus, you should know what you're doing.
-    """
-    if isinstance(prec, int):
-        num_fmt = '%%.%df' % prec
-    elif isinstance(prec, basestring):
-        num_fmt = prec
-    else:
-        raise TypeError
-
-    # TODO: Support 3D geometries.
-    coord_fmt = ' '.join([num_fmt, num_fmt])
-
-    def formatted_coords(coords):
-        return ','.join([coord_fmt % c[:2] for c in coords])
-
-    def formatted_poly(poly):
-        return ','.join(['(%s)' % formatted_coords(r) for r in poly])
-
-    def formatted_geom(g):
-        gtype = str(g.geom_type).upper()
-        yield '%s(' % gtype
-        if gtype == 'POINT':
-            yield formatted_coords((g.coords,))
-        elif gtype in ('LINESTRING', 'LINEARRING'):
-            yield formatted_coords(g.coords)
-        elif gtype in ('POLYGON', 'MULTILINESTRING'):
-            yield formatted_poly(g)
-        elif gtype == 'MULTIPOINT':
-            yield formatted_coords(g.coords)
-        elif gtype == 'MULTIPOLYGON':
-            yield ','.join(['(%s)' % formatted_poly(p) for p in g])
-        elif gtype == 'GEOMETRYCOLLECTION':
-            yield ','.join([''.join([wkt for wkt in formatted_geom(child)]) for child in g])
-        else:
-            raise TypeError
-        yield ')'
-
-    return ''.join([wkt for wkt in formatted_geom(geom)])
diff --git a/webapp/django/contrib/humanize/__init__.py b/webapp/django/contrib/humanize/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/humanize/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/humanize/templatetags/__init__.py b/webapp/django/contrib/humanize/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/humanize/templatetags/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/humanize/templatetags/humanize.py b/webapp/django/contrib/humanize/templatetags/humanize.py
deleted file mode 100644
index 05d3223..0000000
--- a/webapp/django/contrib/humanize/templatetags/humanize.py
+++ /dev/null
@@ -1,99 +0,0 @@
-from django.utils.translation import ungettext, ugettext as _
-from django.utils.encoding import force_unicode
-from django import template
-from django.template import defaultfilters
-from datetime import date
-import re
-
-register = template.Library()
-
-def ordinal(value):
-    """
-    Converts an integer to its ordinal as a string. 1 is '1st', 2 is '2nd',
-    3 is '3rd', etc. Works for any integer.
-    """
-    try:
-        value = int(value)
-    except ValueError:
-        return value
-    t = (_('th'), _('st'), _('nd'), _('rd'), _('th'), _('th'), _('th'), _('th'), _('th'), _('th'))
-    if value % 100 in (11, 12, 13): # special case
-        return u"%d%s" % (value, t[0])
-    return u'%d%s' % (value, t[value % 10])
-ordinal.is_safe = True
-register.filter(ordinal)
-
-def intcomma(value):
-    """
-    Converts an integer to a string containing commas every three digits.
-    For example, 3000 becomes '3,000' and 45000 becomes '45,000'.
-    """
-    orig = force_unicode(value)
-    new = re.sub("^(-?\d+)(\d{3})", '\g<1>,\g<2>', orig)
-    if orig == new:
-        return new
-    else:
-        return intcomma(new)
-intcomma.is_safe = True
-register.filter(intcomma)
-
-def intword(value):
-    """
-    Converts a large integer to a friendly text representation. Works best for
-    numbers over 1 million. For example, 1000000 becomes '1.0 million', 1200000
-    becomes '1.2 million' and '1200000000' becomes '1.2 billion'.
-    """
-    value = int(value)
-    if value < 1000000:
-        return value
-    if value < 1000000000:
-        new_value = value / 1000000.0
-        return ungettext('%(value).1f million', '%(value).1f million', new_value) % {'value': new_value}
-    if value < 1000000000000:
-        new_value = value / 1000000000.0
-        return ungettext('%(value).1f billion', '%(value).1f billion', new_value) % {'value': new_value}
-    if value < 1000000000000000:
-        new_value = value / 1000000000000.0
-        return ungettext('%(value).1f trillion', '%(value).1f trillion', new_value) % {'value': new_value}
-    return value
-intword.is_safe = False
-register.filter(intword)
-
-def apnumber(value):
-    """
-    For numbers 1-9, returns the number spelled out. Otherwise, returns the
-    number. This follows Associated Press style.
-    """
-    try:
-        value = int(value)
-    except ValueError:
-        return value
-    if not 0 < value < 10:
-        return value
-    return (_('one'), _('two'), _('three'), _('four'), _('five'), _('six'), _('seven'), _('eight'), _('nine'))[value-1]
-apnumber.is_safe = True
-register.filter(apnumber)
-
-def naturalday(value, arg=None):
-    """
-    For date values that are tomorrow, today or yesterday compared to
-    present day returns representing string. Otherwise, returns a string
-    formatted according to settings.DATE_FORMAT.
-    """
-    try: 
-        value = date(value.year, value.month, value.day)
-    except AttributeError:
-        # Passed value wasn't a date object
-        return value
-    except ValueError:
-        # Date arguments out of range
-        return value
-    delta = value - date.today()
-    if delta.days == 0:
-        return _(u'today')
-    elif delta.days == 1:
-        return _(u'tomorrow')
-    elif delta.days == -1:
-        return _(u'yesterday')
-    return defaultfilters.date(value, arg)
-register.filter(naturalday)
diff --git a/webapp/django/contrib/localflavor/__init__.py b/webapp/django/contrib/localflavor/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/ar/__init__.py b/webapp/django/contrib/localflavor/ar/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/ar/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/ar/ar_provinces.py b/webapp/django/contrib/localflavor/ar/ar_provinces.py
deleted file mode 100644
index a0efd4b..0000000
--- a/webapp/django/contrib/localflavor/ar/ar_provinces.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-A list of Argentinean provinces and autonomous cities as `choices` in a
-formfield. From
-http://www.argentina.gov.ar/argentina/portal/paginas.dhtml?pagina=425
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-PROVINCE_CHOICES = (
-    ('B', u'Buenos Aires'),
-    ('K', u'Catamarca'),
-    ('H', u'Chaco'),
-    ('U', u'Chubut'),
-    ('C', u'Ciudad Autónoma de Buenos Aires'),
-    ('X', u'Córdoba'),
-    ('W', u'Corrientes'),
-    ('E', u'Entre Ríos'),
-    ('P', u'Formosa'),
-    ('Y', u'Jujuy'),
-    ('L', u'La Pampa'),
-    ('F', u'La Rioja'),
-    ('M', u'Mendoza'),
-    ('N', u'Misiones'),
-    ('Q', u'Neuquén'),
-    ('R', u'Río Negro'),
-    ('A', u'Salta'),
-    ('J', u'San Juan'),
-    ('D', u'San Luis'),
-    ('Z', u'Santa Cruz'),
-    ('S', u'Santa Fe'),
-    ('G', u'Santiago del Estero'),
-    ('V', u'Tierra del Fuego, Antártida e Islas del Atlántico Sur'),
-    ('T', u'Tucumán'),
-)
diff --git a/webapp/django/contrib/localflavor/ar/forms.py b/webapp/django/contrib/localflavor/ar/forms.py
deleted file mode 100644
index 8e8e1af..0000000
--- a/webapp/django/contrib/localflavor/ar/forms.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-AR-specific Form helpers.
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import RegexField, CharField, Select, EMPTY_VALUES
-from django.utils.encoding import smart_unicode
-from django.utils.translation import ugettext_lazy as _
-
-class ARProvinceSelect(Select):
-    """
-    A Select widget that uses a list of Argentinean provinces/autonomous cities
-    as its choices.
-    """
-    def __init__(self, attrs=None):
-        from ar_provinces import PROVINCE_CHOICES
-        super(ARProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)
-
-class ARPostalCodeField(RegexField):
-    """
-    A field that accepts a 'classic' NNNN Postal Code or a CPA.
-
-    See http://www.correoargentino.com.ar/consulta_cpa/home.php
-    """
-    default_error_messages = {
-        'invalid': _("Enter a postal code in the format NNNN or ANNNNAAA."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ARPostalCodeField, self).__init__(r'^\d{4}$|^[A-HJ-NP-Za-hj-np-z]\d{4}\D{3}$',
-            min_length=4, max_length=8, *args, **kwargs)
-
-    def clean(self, value):
-        value = super(ARPostalCodeField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        if len(value) not in (4, 8):
-            raise ValidationError(self.error_messages['invalid'])
-        if len(value) == 8:
-            return u'%s%s%s' % (value[0].upper(), value[1:5], value[5:].upper())
-        return value
-
-class ARDNIField(CharField):
-    """
-    A field that validates 'Documento Nacional de Identidad' (DNI) numbers.
-    """
-    default_error_messages = {
-        'invalid': _("This field requires only numbers."),
-        'max_digits': _("This field requires 7 or 8 digits."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ARDNIField, self).__init__(max_length=10, min_length=7, *args,
-                **kwargs)
-
-    def clean(self, value):
-        """
-        Value can be a string either in the [X]X.XXX.XXX or [X]XXXXXXX formats.
-        """
-        value = super(ARDNIField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        if not value.isdigit():
-            value = value.replace('.', '')
-        if not value.isdigit():
-            raise ValidationError(self.error_messages['invalid'])
-        if len(value) not in (7, 8):
-            raise ValidationError(self.error_messages['max_digits'])
-
-        return value
-
-class ARCUITField(RegexField):
-    """
-    This field validates a CUIT (Código Único de Identificación Tributaria). A
-    CUIT is of the form XX-XXXXXXXX-V. The last digit is a check digit.
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.'),
-        'checksum': _("Invalid CUIT."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ARCUITField, self).__init__(r'^\d{2}-?\d{8}-?\d$',
-            *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Value can be either a string in the format XX-XXXXXXXX-X or an
-        11-digit number.
-        """
-        value = super(ARCUITField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value, cd = self._canon(value)
-        if self._calc_cd(value) != cd:
-            raise ValidationError(self.error_messages['checksum'])
-        return self._format(value, cd)
-
-    def _canon(self, cuit):
-        cuit = cuit.replace('-', '')
-        return cuit[:-1], cuit[-1]
-
-    def _calc_cd(self, cuit):
-        mults = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2)
-        tmp = sum([m * int(cuit[idx]) for idx, m in enumerate(mults)])
-        return str(11 - tmp % 11)
-
-    def _format(self, cuit, check_digit=None):
-        if check_digit == None:
-            check_digit = cuit[-1]
-            cuit = cuit[:-1]
-        return u'%s-%s-%s' % (cuit[:2], cuit[2:], check_digit)
-
diff --git a/webapp/django/contrib/localflavor/at/__init__.py b/webapp/django/contrib/localflavor/at/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/at/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/at/at_states.py b/webapp/django/contrib/localflavor/at/at_states.py
deleted file mode 100644
index d4b4d8a..0000000
--- a/webapp/django/contrib/localflavor/at/at_states.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- coding: utf-8 -*
-from django.utils.translation import ugettext_lazy as _
-
-STATE_CHOICES = (
-    ('BL', _('Burgenland')),
-    ('KA', _('Carinthia')),
-    ('NO', _('Lower Austria')),
-    ('OO', _('Upper Austria')),
-    ('SA', _('Salzburg')),
-    ('ST', _('Styria')),
-    ('TI', _('Tyrol')),
-    ('VO', _('Vorarlberg')),
-    ('WI', _('Vienna')),
-)
\ No newline at end of file
diff --git a/webapp/django/contrib/localflavor/at/forms.py b/webapp/django/contrib/localflavor/at/forms.py
deleted file mode 100644
index e428fda..0000000
--- a/webapp/django/contrib/localflavor/at/forms.py
+++ /dev/null
@@ -1,65 +0,0 @@
-"""
-AT-specific Form helpers
-"""
-
-import re
-
-from django.utils.translation import ugettext_lazy as _
-from django.forms.fields import Field, RegexField, Select
-from django.forms import ValidationError
-
-re_ssn = re.compile(r'^\d{4} \d{6}')
-
-class ATZipCodeField(RegexField):
-    """
-    A form field that validates its input is an Austrian postcode.
-
-    Accepts 4 digits.
-    """
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXX.'),
-    }
-    def __init__(self, *args, **kwargs):
-        super(ATZipCodeField, self).__init__(r'^\d{4}$',
-                max_length=None, min_length=None, *args, **kwargs)
-
-class ATStateSelect(Select):
-    """
-    A Select widget that uses a list of AT states as its choices.
-    """
-    def __init__(self, attrs=None):
-        from django.contrib.localflavor.at.at_states import STATE_CHOICES
-        super(ATStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
-
-class ATSocialSecurityNumberField(Field):
-    """
-    Austrian Social Security numbers are composed of a 4 digits and 6 digits
-    field. The latter represents in most cases the person's birthdate while
-    the first 4 digits represent a 3-digits counter and a one-digit checksum.
-
-    The 6-digits field can also differ from the person's birthdate if the
-    3-digits counter suffered an overflow.
-
-    This code is based on information available on
-    http://de.wikipedia.org/wiki/Sozialversicherungsnummer#.C3.96sterreich
-    """
-
-    default_error_messages = {
-        'invalid': _(u'Enter a valid Austrian Social Security Number in XXXX XXXXXX format.'),
-    }
-
-    def clean(self, value):
-        if not re_ssn.search(value):
-            raise ValidationError(self.error_messages['invalid'])
-        sqnr, date = value.split(" ")
-        sqnr, check = (sqnr[:3], (sqnr[3]))
-        if int(sqnr) < 100:
-           raise ValidationError(self.error_messages['invalid'])
-        res = int(sqnr[0])*3 + int(sqnr[1])*7 + int(sqnr[2])*9 \
-           + int(date[0])*5 + int(date[1])*8 + int(date[2])*4 \
-           + int(date[3])*2 + int(date[4])*1 + int(date[5])*6
-        res = res % 11
-        if res != int(check):
-           raise ValidationError(self.error_messages['invalid'])
-        return u'%s%s %s'%(sqnr, check, date,)
-
diff --git a/webapp/django/contrib/localflavor/au/__init__.py b/webapp/django/contrib/localflavor/au/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/au/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/au/au_states.py b/webapp/django/contrib/localflavor/au/au_states.py
deleted file mode 100644
index 578d61b..0000000
--- a/webapp/django/contrib/localflavor/au/au_states.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""
-An alphabetical list of states for use as `choices` in a formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-STATE_CHOICES = (
-    ('ACT', 'Australian Capital Territory'),
-    ('NSW', 'New South Wales'),
-    ('NT', 'Northern Territory'),
-    ('QLD', 'Queensland'),
-    ('SA', 'South Australia'),
-    ('TAS', 'Tasmania'),
-    ('VIC', 'Victoria'),
-    ('WA', 'Western Australia'),
-)
diff --git a/webapp/django/contrib/localflavor/au/forms.py b/webapp/django/contrib/localflavor/au/forms.py
deleted file mode 100644
index afc3a0c..0000000
--- a/webapp/django/contrib/localflavor/au/forms.py
+++ /dev/null
@@ -1,49 +0,0 @@
-"""
-Australian-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.forms.util import smart_unicode
-from django.utils.translation import ugettext_lazy as _
-import re
-
-PHONE_DIGITS_RE = re.compile(r'^(\d{10})$')
-
-class AUPostCodeField(RegexField):
-    """Australian post code field."""
-    default_error_messages = {
-        'invalid': _('Enter a 4 digit post code.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(AUPostCodeField, self).__init__(r'^\d{4}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class AUPhoneNumberField(Field):
-    """Australian phone number field."""
-    default_error_messages = {
-        'invalid': u'Phone numbers must contain 10 digits.',
-    }
-
-    def clean(self, value):
-        """
-        Validate a phone number. Strips parentheses, whitespace and hyphens.
-        """
-        super(AUPhoneNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value = re.sub('(\(|\)|\s+|-)', '', smart_unicode(value))
-        phone_match = PHONE_DIGITS_RE.search(value)
-        if phone_match:
-            return u'%s' % phone_match.group(1)
-        raise ValidationError(self.error_messages['invalid'])
-
-class AUStateSelect(Select):
-    """
-    A Select widget that uses a list of Australian states/territories as its
-    choices.
-    """
-    def __init__(self, attrs=None):
-        from au_states import STATE_CHOICES
-        super(AUStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
diff --git a/webapp/django/contrib/localflavor/br/__init__.py b/webapp/django/contrib/localflavor/br/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/br/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/br/br_states.py b/webapp/django/contrib/localflavor/br/br_states.py
deleted file mode 100644
index 98e54bc..0000000
--- a/webapp/django/contrib/localflavor/br/br_states.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-An alphabetical list of Brazilian states for use as `choices` in a formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-STATE_CHOICES = (
-    ('AC', 'Acre'),
-    ('AL', 'Alagoas'),
-    ('AP', u'Amapá'),
-    ('AM', 'Amazonas'),
-    ('BA', 'Bahia'),
-    ('CE', u'Ceará'),
-    ('DF', 'Distrito Federal'),
-    ('ES', u'Espírito Santo'),
-    ('GO', u'Goiás'),
-    ('MA', u'Maranhão'),
-    ('MT', 'Mato Grosso'),
-    ('MS', 'Mato Grosso do Sul'),
-    ('MG', 'Minas Gerais'),
-    ('PA', u'Pará'),
-    ('PB', u'Paraíba'),
-    ('PR', u'Paraná'),
-    ('PE', 'Pernambuco'),
-    ('PI', u'Piauí'),
-    ('RJ', 'Rio de Janeiro'),
-    ('RN', 'Rio Grande do Norte'),
-    ('RS', 'Rio Grande do Sul'),
-    ('RO', u'Rondônia'),
-    ('RR', 'Roraima'),
-    ('SC', 'Santa Catarina'),
-    ('SP', u'São Paulo'),
-    ('SE', 'Sergipe'),
-    ('TO', 'Tocantins'),
-)
diff --git a/webapp/django/contrib/localflavor/br/forms.py b/webapp/django/contrib/localflavor/br/forms.py
deleted file mode 100644
index 6d0a038..0000000
--- a/webapp/django/contrib/localflavor/br/forms.py
+++ /dev/null
@@ -1,167 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-BR-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, CharField, Select, EMPTY_VALUES
-from django.utils.encoding import smart_unicode
-from django.utils.translation import ugettext_lazy as _
-import re
-
-try:
-    set
-except NameError:
-    from sets import Set as set     # For Python 2.3
-
-phone_digits_re = re.compile(r'^(\d{2})[-\.]?(\d{4})[-\.]?(\d{4})$')
-
-class BRZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXXX-XXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(BRZipCodeField, self).__init__(r'^\d{5}-\d{3}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class BRPhoneNumberField(Field):
-    default_error_messages = {
-        'invalid': _('Phone numbers must be in XX-XXXX-XXXX format.'),
-    }
-
-    def clean(self, value):
-        super(BRPhoneNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value = re.sub('(\(|\)|\s+)', '', smart_unicode(value))
-        m = phone_digits_re.search(value)
-        if m:
-            return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3))
-        raise ValidationError(self.error_messages['invalid'])
-
-class BRStateSelect(Select):
-    """
-    A Select widget that uses a list of Brazilian states/territories
-    as its choices.
-    """
-    def __init__(self, attrs=None):
-        from br_states import STATE_CHOICES
-        super(BRStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
-
-class BRStateChoiceField(Field):
-    """
-    A choice field that uses a list of Brazilian states as its choices.
-    """
-    widget = Select
-    default_error_messages = {
-        'invalid': _(u'Select a valid brazilian state. That state is not one of the available states.'),
-    }
-
-    def __init__(self, required=True, widget=None, label=None,
-                 initial=None, help_text=None):
-        super(BRStateChoiceField, self).__init__(required, widget, label,
-                                                 initial, help_text)
-        from br_states import STATE_CHOICES
-        self.widget.choices = STATE_CHOICES
-
-    def clean(self, value):
-        value = super(BRStateChoiceField, self).clean(value)
-        if value in EMPTY_VALUES:
-            value = u''
-        value = smart_unicode(value)
-        if value == u'':
-            return value
-        valid_values = set([smart_unicode(k) for k, v in self.widget.choices])
-        if value not in valid_values:
-            raise ValidationError(self.error_messages['invalid'])
-        return value
-
-def DV_maker(v):
-    if v >= 2:
-        return 11 - v
-    return 0
-
-class BRCPFField(CharField):
-    """
-    This field validate a CPF number or a CPF string. A CPF number is
-    compounded by XXX.XXX.XXX-VD. The two last digits are check digits.
-
-    More information:
-    http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas
-    """
-    default_error_messages = {
-        'invalid': _("Invalid CPF number."),
-        'max_digits': _("This field requires at most 11 digits or 14 characters."),
-        'digits_only': _("This field requires only numbers."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(BRCPFField, self).__init__(max_length=14, min_length=11, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Value can be either a string in the format XXX.XXX.XXX-XX or an
-        11-digit number.
-        """
-        value = super(BRCPFField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        orig_value = value[:]
-        if not value.isdigit():
-            value = re.sub("[-\.]", "", value)
-        try:
-            int(value)
-        except ValueError:
-            raise ValidationError(self.error_messages['digits_only'])
-        if len(value) != 11:
-            raise ValidationError(self.error_messages['max_digits'])
-        orig_dv = value[-2:]
-
-        new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(range(10, 1, -1))])
-        new_1dv = DV_maker(new_1dv % 11)
-        value = value[:-2] + str(new_1dv) + value[-1]
-        new_2dv = sum([i * int(value[idx]) for idx, i in enumerate(range(11, 1, -1))])
-        new_2dv = DV_maker(new_2dv % 11)
-        value = value[:-1] + str(new_2dv)
-        if value[-2:] != orig_dv:
-            raise ValidationError(self.error_messages['invalid'])
-
-        return orig_value
-
-class BRCNPJField(Field):
-    default_error_messages = {
-        'invalid': _("Invalid CNPJ number."),
-        'digits_only': _("This field requires only numbers."),
-        'max_digits': _("This field requires at least 14 digits"),
-    }
-
-    def clean(self, value):
-        """
-        Value can be either a string in the format XX.XXX.XXX/XXXX-XX or a
-        group of 14 characters.
-        """
-        value = super(BRCNPJField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        orig_value = value[:]
-        if not value.isdigit():
-            value = re.sub("[-/\.]", "", value)
-        try:
-            int(value)
-        except ValueError:
-            raise ValidationError(self.error_messages['digits_only'])
-        if len(value) != 14:
-            raise ValidationError(self.error_messages['max_digits'])
-        orig_dv = value[-2:]
-
-        new_1dv = sum([i * int(value[idx]) for idx, i in enumerate(range(5, 1, -1) + range(9, 1, -1))])
-        new_1dv = DV_maker(new_1dv % 11)
-        value = value[:-2] + str(new_1dv) + value[-1]
-        new_2dv = sum([i * int(value[idx]) for idx, i in enumerate(range(6, 1, -1) + range(9, 1, -1))])
-        new_2dv = DV_maker(new_2dv % 11)
-        value = value[:-1] + str(new_2dv)
-        if value[-2:] != orig_dv:
-            raise ValidationError(self.error_messages['invalid'])
-
-        return orig_value
diff --git a/webapp/django/contrib/localflavor/ca/__init__.py b/webapp/django/contrib/localflavor/ca/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/ca/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/ca/ca_provinces.py b/webapp/django/contrib/localflavor/ca/ca_provinces.py
deleted file mode 100644
index 746716f..0000000
--- a/webapp/django/contrib/localflavor/ca/ca_provinces.py
+++ /dev/null
@@ -1,59 +0,0 @@
-""" 
-An alphabetical list of provinces and territories for use as `choices` 
-in a formfield., and a mapping of province misspellings/abbreviations to 
-normalized abbreviations
-
-Source: http://www.canada.gc.ca/othergov/prov_e.html 
-
-This exists in this standalone file so that it's only imported into memory 
-when explicitly needed. 
-""" 
-
-PROVINCE_CHOICES = ( 
-    ('AB', 'Alberta'), 
-    ('BC', 'British Columbia'), 
-    ('MB', 'Manitoba'), 
-    ('NB', 'New Brunswick'), 
-    ('NF', 'Newfoundland and Labrador'), 
-    ('NT', 'Northwest Territories'), 
-    ('NS', 'Nova Scotia'), 
-    ('NU', 'Nunavut'), 
-    ('ON', 'Ontario'), 
-    ('PE', 'Prince Edward Island'), 
-    ('QC', 'Quebec'), 
-    ('SK', 'Saskatchewan'), 
-    ('YK', 'Yukon') 
-)
-
-PROVINCES_NORMALIZED = {
-    'ab': 'AB',
-    'alberta': 'AB',
-    'bc': 'BC',
-    'b.c.': 'BC',
-    'british columbia': 'BC',
-    'mb': 'MB',
-    'manitoba': 'MB',
-    'nb': 'NB',
-    'new brunswick': 'NB',
-    'nf': 'NF',
-    'newfoundland': 'NF',
-    'newfoundland and labrador': 'NF',
-    'nt': 'NT',
-    'northwest territories': 'NT',
-    'ns': 'NS',
-    'nova scotia': 'NS',
-    'nu': 'NU',
-    'nunavut': 'NU',
-    'on': 'ON',
-    'ontario': 'ON',
-    'pe': 'PE',
-    'pei': 'PE',
-    'p.e.i.': 'PE',
-    'prince edward island': 'PE',
-    'qc': 'QC',
-    'quebec': 'QC',
-    'sk': 'SK',
-    'saskatchewan': 'SK',
-    'yk': 'YK',
-    'yukon': 'YK',
-}
\ No newline at end of file
diff --git a/webapp/django/contrib/localflavor/ca/forms.py b/webapp/django/contrib/localflavor/ca/forms.py
deleted file mode 100644
index 327d938..0000000
--- a/webapp/django/contrib/localflavor/ca/forms.py
+++ /dev/null
@@ -1,126 +0,0 @@
-"""
-Canada-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.forms.util import smart_unicode
-from django.utils.translation import ugettext_lazy as _
-import re
-
-phone_digits_re = re.compile(r'^(?:1-?)?(\d{3})[-\.]?(\d{3})[-\.]?(\d{4})$')
-sin_re = re.compile(r"^(\d{3})-(\d{3})-(\d{3})$")
-
-class CAPostalCodeField(RegexField):
-    """Canadian postal code field."""
-    default_error_messages = {
-        'invalid': _(u'Enter a postal code in the format XXX XXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(CAPostalCodeField, self).__init__(r'^[ABCEGHJKLMNPRSTVXYZ]\d[A-Z] \d[A-Z]\d$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class CAPhoneNumberField(Field):
-    """Canadian phone number field."""
-    default_error_messages = {
-        'invalid': u'Phone numbers must be in XXX-XXX-XXXX format.',
-    }
-
-    def clean(self, value):
-        """Validate a phone number.
-        """
-        super(CAPhoneNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value = re.sub('(\(|\)|\s+)', '', smart_unicode(value))
-        m = phone_digits_re.search(value)
-        if m:
-            return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3))
-        raise ValidationError(self.error_messages['invalid'])
-
-class CAProvinceField(Field):
-    """
-    A form field that validates its input is a Canadian province name or abbreviation.
-    It normalizes the input to the standard two-leter postal service
-    abbreviation for the given province.
-    """
-    default_error_messages = {
-        'invalid': u'Enter a Canadian province or territory.',
-    }
-
-    def clean(self, value):
-        from ca_provinces import PROVINCES_NORMALIZED
-        super(CAProvinceField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        try:
-            value = value.strip().lower()
-        except AttributeError:
-            pass
-        else:
-            try:
-                return PROVINCES_NORMALIZED[value.strip().lower()].decode('ascii')
-            except KeyError:
-                pass
-        raise ValidationError(self.error_messages['invalid'])
-
-class CAProvinceSelect(Select):
-    """
-    A Select widget that uses a list of Canadian provinces and
-    territories as its choices.
-    """
-    def __init__(self, attrs=None):
-        from ca_provinces import PROVINCE_CHOICES # relative import
-        super(CAProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)
-
-class CASocialInsuranceNumberField(Field):
-    """
-    A Canadian Social Insurance Number (SIN).
-
-    Checks the following rules to determine whether the number is valid:
-
-        * Conforms to the XXX-XXX-XXX format.
-        * Passes the check digit process "Luhn Algorithm"
-             See: http://en.wikipedia.org/wiki/Social_Insurance_Number
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.'),
-    }
-
-    def clean(self, value):
-        super(CASocialInsuranceNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-
-        match = re.match(sin_re, value)
-        if not match:
-            raise ValidationError(self.error_messages['invalid'])
-
-        number = u'%s-%s-%s' % (match.group(1), match.group(2), match.group(3))
-        check_number = u'%s%s%s' % (match.group(1), match.group(2), match.group(3))
-        if not self.luhn_checksum_is_valid(check_number):
-            raise ValidationError(self.error_messages['invalid'])
-        return number
-
-    def luhn_checksum_is_valid(self, number):
-        """
-        Checks to make sure that the SIN passes a luhn mod-10 checksum
-        See: http://en.wikipedia.org/wiki/Luhn_algorithm
-        """
-
-        sum = 0
-        num_digits = len(number)
-        oddeven = num_digits & 1
-
-        for count in range(0, num_digits):
-            digit = int(number[count])
-
-            if not (( count & 1 ) ^ oddeven ):
-                digit = digit * 2
-            if digit > 9:
-                digit = digit - 9
-
-            sum = sum + digit
-
-        return ( (sum % 10) == 0 )
diff --git a/webapp/django/contrib/localflavor/ch/__init__.py b/webapp/django/contrib/localflavor/ch/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/ch/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/ch/ch_states.py b/webapp/django/contrib/localflavor/ch/ch_states.py
deleted file mode 100644
index ba5934a..0000000
--- a/webapp/django/contrib/localflavor/ch/ch_states.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- coding: utf-8 -*
-from django.utils.translation import ugettext_lazy as _
-
-STATE_CHOICES = (
-    ('AG', _('Aargau')),
-    ('AI', _('Appenzell Innerrhoden')),
-    ('AR', _('Appenzell Ausserrhoden')),
-    ('BS', _('Basel-Stadt')),
-    ('BL', _('Basel-Land')),
-    ('BE', _('Berne')),
-    ('FR', _('Fribourg')),
-    ('GE', _('Geneva')),
-    ('GL', _('Glarus')),
-    ('GR', _('Graubuenden')),
-    ('JU', _('Jura')),
-    ('LU', _('Lucerne')),
-    ('NE', _('Neuchatel')),
-    ('NW', _('Nidwalden')),
-    ('OW', _('Obwalden')),
-    ('SH', _('Schaffhausen')),
-    ('SZ', _('Schwyz')),
-    ('SO', _('Solothurn')),
-    ('SG', _('St. Gallen')),
-    ('TG', _('Thurgau')),
-    ('TI', _('Ticino')),
-    ('UR', _('Uri')),
-    ('VS', _('Valais')),
-    ('VD', _('Vaud')),
-    ('ZG', _('Zug')),
-    ('ZH', _('Zurich'))
-)
diff --git a/webapp/django/contrib/localflavor/ch/forms.py b/webapp/django/contrib/localflavor/ch/forms.py
deleted file mode 100644
index bd92fca..0000000
--- a/webapp/django/contrib/localflavor/ch/forms.py
+++ /dev/null
@@ -1,118 +0,0 @@
-"""
-Swiss-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.encoding import smart_unicode
-from django.utils.translation import ugettext_lazy as _
-import re
-
-id_re = re.compile(r"^(?P<idnumber>\w{8})(?P<pos9>(\d{1}|<))(?P<checksum>\d{1})$")
-phone_digits_re = re.compile(r'^0([1-9]{1})\d{8}$')
-
-class CHZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(CHZipCodeField, self).__init__(r'^\d{4}$',
-        max_length=None, min_length=None, *args, **kwargs)
-
-class CHPhoneNumberField(Field):
-    """
-    Validate local Swiss phone number (not international ones)
-    The correct format is '0XX XXX XX XX'.
-    '0XX.XXX.XX.XX' and '0XXXXXXXXX' validate but are corrected to
-    '0XX XXX XX XX'.
-    """
-    default_error_messages = {
-        'invalid': 'Phone numbers must be in 0XX XXX XX XX format.',
-    }
-
-    def clean(self, value):
-        super(CHPhoneNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value = re.sub('(\.|\s|/|-)', '', smart_unicode(value))
-        m = phone_digits_re.search(value)
-        if m:
-            return u'%s %s %s %s' % (value[0:3], value[3:6], value[6:8], value[8:10])
-        raise ValidationError(self.error_messages['invalid'])
-
-class CHStateSelect(Select):
-    """
-    A Select widget that uses a list of CH states as its choices.
-    """
-    def __init__(self, attrs=None):
-        from ch_states import STATE_CHOICES # relative import
-        super(CHStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
-
-class CHIdentityCardNumberField(Field):
-    """
-    A Swiss identity card number.
-
-    Checks the following rules to determine whether the number is valid:
-
-        * Conforms to the X1234567<0 or 1234567890 format.
-        * Included checksums match calculated checksums
-
-    Algorithm is documented at http://adi.kousz.ch/artikel/IDCHE.htm
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.'),
-    }
-
-    def has_valid_checksum(self, number):
-        given_number, given_checksum = number[:-1], number[-1]
-        new_number = given_number
-        calculated_checksum = 0
-        fragment = ""
-        parameter = 7
-
-        first = str(number[:1])
-        if first.isalpha():
-            num = ord(first.upper()) - 65
-            if num < 0 or num > 8:
-                return False
-            new_number = str(num) + new_number[1:]
-            new_number = new_number[:8] + '0'
-
-        if not new_number.isdigit():
-            return False
-
-        for i in range(len(new_number)):
-          fragment = int(new_number[i])*parameter
-          calculated_checksum += fragment
-
-          if parameter == 1:
-            parameter = 7
-          elif parameter == 3:
-            parameter = 1
-          elif parameter ==7:
-            parameter = 3
-
-        return str(calculated_checksum)[-1] == given_checksum
-
-    def clean(self, value):
-        super(CHIdentityCardNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-
-        match = re.match(id_re, value)
-        if not match:
-            raise ValidationError(self.error_messages['invalid'])
-
-        idnumber, pos9, checksum = match.groupdict()['idnumber'], match.groupdict()['pos9'], match.groupdict()['checksum']
-
-        if idnumber == '00000000' or \
-           idnumber == 'A0000000':
-            raise ValidationError(self.error_messages['invalid'])
-
-        all_digits = "%s%s%s" % (idnumber, pos9, checksum)
-        if not self.has_valid_checksum(all_digits):
-            raise ValidationError(self.error_messages['invalid'])
-
-        return u'%s%s%s' % (idnumber, pos9, checksum)
-
diff --git a/webapp/django/contrib/localflavor/cl/__init__.py b/webapp/django/contrib/localflavor/cl/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/cl/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/cl/cl_regions.py b/webapp/django/contrib/localflavor/cl/cl_regions.py
deleted file mode 100644
index 47db6d3..0000000
--- a/webapp/django/contrib/localflavor/cl/cl_regions.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-A list of Chilean regions as `choices` in a formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-REGION_CHOICES = (
-    ('RM',  u'Región Metropolitana de Santiago'),
-    ('I',   u'Región de Tarapacá'),
-    ('II',  u'Región de Antofagasta'),
-    ('III', u'Región de Atacama'),
-    ('IV',  u'Región de Coquimbo'),
-    ('V',   u'Región de Valparaíso'),
-    ('VI',  u'Región del Libertador Bernardo O\'Higgins'),
-    ('VII', u'Región del Maule'),
-    ('VIII',u'Región del Bío Bío'),
-    ('IX',  u'Región de la Araucanía'),
-    ('X',   u'Región de los Lagos'),
-    ('XI',  u'Región de Aysén del General Carlos Ibáñez del Campo'),
-    ('XII', u'Región de Magallanes y la Antártica Chilena'),
-    ('XIV', u'Región de Los Ríos'),
-    ('XV',  u'Región de Arica-Parinacota'),
-)
diff --git a/webapp/django/contrib/localflavor/cl/forms.py b/webapp/django/contrib/localflavor/cl/forms.py
deleted file mode 100644
index 61b3ab7..0000000
--- a/webapp/django/contrib/localflavor/cl/forms.py
+++ /dev/null
@@ -1,94 +0,0 @@
-"""
-Chile specific form helpers.
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import RegexField, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode
-
-
-class CLRegionSelect(Select):
-    """
-    A Select widget that uses a list of Chilean Regions (Regiones)
-    as its choices.
-    """
-    def __init__(self, attrs=None):
-        from cl_regions import REGION_CHOICES
-        super(CLRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
-
-class CLRutField(RegexField):
-    """
-    Chilean "Rol Unico Tributario" (RUT) field. This is the Chilean national
-    identification number.
-
-    Samples for testing are available from
-    https://palena.sii.cl/cvc/dte/ee_empresas_emisoras.html
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid Chilean RUT.'),
-        'strict': _('Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.'),
-        'checksum': _('The Chilean RUT is not valid.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        if 'strict' in kwargs:
-            del kwargs['strict']
-            super(CLRutField, self).__init__(r'^(\d{1,2}\.)?\d{3}\.\d{3}-[\dkK]$',
-                error_message=self.default_error_messages['strict'], *args, **kwargs)
-        else:
-            # In non-strict mode, accept RUTs that validate but do not exist in
-            # the real world.
-            super(CLRutField, self).__init__(r'^[\d\.]{1,11}-?[\dkK]$', *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Check and clean the Chilean RUT.
-        """
-        super(CLRutField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        rut, verificador = self._canonify(value)
-        if self._algorithm(rut) == verificador:
-            return self._format(rut, verificador)
-        else:
-            raise ValidationError(self.error_messages['checksum'])
-
-    def _algorithm(self, rut):
-        """
-        Takes RUT in pure canonical form, calculates the verifier digit.
-        """
-        suma  = 0
-        multi = 2
-        for r in rut[::-1]:
-            suma  += int(r) * multi
-            multi += 1
-            if multi == 8:
-                multi = 2
-        return u'0123456789K0'[11 - suma % 11]
-
-    def _canonify(self, rut):
-        """
-        Turns the RUT into one normalized format. Returns a (rut, verifier)
-        tuple.
-        """
-        rut = smart_unicode(rut).replace(' ', '').replace('.', '').replace('-', '')
-        return rut[:-1], rut[-1]
-
-    def _format(self, code, verifier=None):
-        """
-        Formats the RUT from canonical form to the common string representation.
-        If verifier=None, then the last digit in 'code' is the verifier.
-        """
-        if verifier is None:
-            verifier = code[-1]
-            code = code[:-1]
-        while len(code) > 3 and '.' not in code[:3]:
-            pos = code.find('.')
-            if pos == -1:
-                new_dot = -3
-            else:
-                new_dot = pos - 3
-            code = code[:new_dot] + '.' + code[new_dot:]
-        return u'%s-%s' % (code, verifier)
-
diff --git a/webapp/django/contrib/localflavor/de/__init__.py b/webapp/django/contrib/localflavor/de/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/de/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/de/de_states.py b/webapp/django/contrib/localflavor/de/de_states.py
deleted file mode 100644
index 2872a78..0000000
--- a/webapp/django/contrib/localflavor/de/de_states.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- coding: utf-8 -*
-from django.utils.translation import ugettext_lazy as _
-
-STATE_CHOICES = (
-    ('BW', _('Baden-Wuerttemberg')),
-    ('BY', _('Bavaria')),
-    ('BE', _('Berlin')),
-    ('BB', _('Brandenburg')),
-    ('HB', _('Bremen')),
-    ('HH', _('Hamburg')),
-    ('HE', _('Hessen')),
-    ('MV', _('Mecklenburg-Western Pomerania')),
-    ('NI', _('Lower Saxony')),
-    ('NW', _('North Rhine-Westphalia')),
-    ('RP', _('Rhineland-Palatinate')),
-    ('SL', _('Saarland')),
-    ('SN', _('Saxony')),
-    ('ST', _('Saxony-Anhalt')),
-    ('SH', _('Schleswig-Holstein')),
-    ('TH', _('Thuringia')),
-)
diff --git a/webapp/django/contrib/localflavor/de/forms.py b/webapp/django/contrib/localflavor/de/forms.py
deleted file mode 100644
index 7a1b7c0..0000000
--- a/webapp/django/contrib/localflavor/de/forms.py
+++ /dev/null
@@ -1,83 +0,0 @@
-"""
-DE-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-import re
-
-id_re = re.compile(r"^(?P<residence>\d{10})(?P<origin>\w{1,3})[-\ ]?(?P<birthday>\d{7})[-\ ]?(?P<validity>\d{7})[-\ ]?(?P<checksum>\d{1})$")
-
-class DEZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXXX.'),
-    }
-    def __init__(self, *args, **kwargs):
-        super(DEZipCodeField, self).__init__(r'^\d{5}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class DEStateSelect(Select):
-    """
-    A Select widget that uses a list of DE states as its choices.
-    """
-    def __init__(self, attrs=None):
-        from de_states import STATE_CHOICES
-        super(DEStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
-
-class DEIdentityCardNumberField(Field):
-    """
-    A German identity card number.
-
-    Checks the following rules to determine whether the number is valid:
-
-        * Conforms to the XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.
-        * No group consists entirely of zeroes.
-        * Included checksums match calculated checksums
-
-    Algorithm is documented at http://de.wikipedia.org/wiki/Personalausweis
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.'),
-    }
-
-    def has_valid_checksum(self, number):
-        given_number, given_checksum = number[:-1], number[-1]
-        calculated_checksum = 0
-        fragment = ""
-        parameter = 7
-
-        for i in range(len(given_number)):
-            fragment = str(int(given_number[i]) * parameter)
-            if fragment.isalnum():
-                calculated_checksum += int(fragment[-1])
-            if parameter == 1:
-                parameter = 7
-            elif parameter == 3:
-                parameter = 1
-            elif parameter ==7:
-                parameter = 3
-
-        return str(calculated_checksum)[-1] == given_checksum
-
-    def clean(self, value):
-        super(DEIdentityCardNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        match = re.match(id_re, value)
-        if not match:
-            raise ValidationError(self.error_messages['invalid'])
-
-        gd = match.groupdict()
-        residence, origin = gd['residence'], gd['origin']
-        birthday, validity, checksum = gd['birthday'], gd['validity'], gd['checksum']
-
-        if residence == '0000000000' or birthday == '0000000' or validity == '0000000':
-            raise ValidationError(self.error_messages['invalid'])
-
-        all_digits = u"%s%s%s%s" % (residence, birthday, validity, checksum)
-        if not self.has_valid_checksum(residence) or not self.has_valid_checksum(birthday) or \
-            not self.has_valid_checksum(validity) or not self.has_valid_checksum(all_digits):
-                raise ValidationError(self.error_messages['invalid'])
-
-        return u'%s%s-%s-%s-%s' % (residence, origin, birthday, validity, checksum)
diff --git a/webapp/django/contrib/localflavor/es/__init__.py b/webapp/django/contrib/localflavor/es/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/es/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/es/es_provinces.py b/webapp/django/contrib/localflavor/es/es_provinces.py
deleted file mode 100644
index 9f5e126..0000000
--- a/webapp/django/contrib/localflavor/es/es_provinces.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# -*- coding: utf-8 -*-
-from django.utils.translation import ugettext_lazy as _
-
-PROVINCE_CHOICES = (
-    ('01', _('Arava')),
-    ('02', _('Albacete')),
-    ('03', _('Alacant')),
-    ('04', _('Almeria')),
-    ('05', _('Avila')),
-    ('06', _('Badajoz')),
-    ('07', _('Illes Balears')),
-    ('08', _('Barcelona')),
-    ('09', _('Burgos')),
-    ('10', _('Caceres')),
-    ('11', _('Cadiz')),
-    ('12', _('Castello')),
-    ('13', _('Ciudad Real')),
-    ('14', _('Cordoba')),
-    ('15', _('A Coruna')),
-    ('16', _('Cuenca')),
-    ('17', _('Girona')),
-    ('18', _('Granada')),
-    ('19', _('Guadalajara')),
-    ('20', _('Guipuzkoa')),
-    ('21', _('Huelva')),
-    ('22', _('Huesca')),
-    ('23', _('Jaen')),
-    ('24', _('Leon')),
-    ('25', _('Lleida')),
-    ('26', _('La Rioja')),
-    ('27', _('Lugo')),
-    ('28', _('Madrid')),
-    ('29', _('Malaga')),
-    ('30', _('Murcia')),
-    ('31', _('Navarre')),
-    ('32', _('Ourense')),
-    ('33', _('Asturias')),
-    ('34', _('Palencia')),
-    ('35', _('Las Palmas')),
-    ('36', _('Pontevedra')),
-    ('37', _('Salamanca')),
-    ('38', _('Santa Cruz de Tenerife')),
-    ('39', _('Cantabria')),
-    ('40', _('Segovia')),
-    ('41', _('Seville')),
-    ('42', _('Soria')),
-    ('43', _('Tarragona')),
-    ('44', _('Teruel')),
-    ('45', _('Toledo')),
-    ('46', _('Valencia')),
-    ('47', _('Valladolid')),
-    ('48', _('Bizkaia')),
-    ('49', _('Zamora')),
-    ('50', _('Zaragoza')),
-    ('51', _('Ceuta')),
-    ('52', _('Melilla')),
-)
-
diff --git a/webapp/django/contrib/localflavor/es/es_regions.py b/webapp/django/contrib/localflavor/es/es_regions.py
deleted file mode 100644
index 3c1ea0e..0000000
--- a/webapp/django/contrib/localflavor/es/es_regions.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- coding: utf-8 -*-
-from django.utils.translation import ugettext_lazy as _
-
-REGION_CHOICES = (
-    ('AN', _('Andalusia')),
-    ('AR', _('Aragon')),
-    ('O', _('Principality of Asturias')),
-    ('IB', _('Balearic Islands')),
-    ('PV', _('Basque Country')),
-    ('CN', _('Canary Islands')),
-    ('S', _('Cantabria')),
-    ('CM', _('Castile-La Mancha')),
-    ('CL', _('Castile and Leon')),
-    ('CT', _('Catalonia')),
-    ('EX', _('Extremadura')),
-    ('GA', _('Galicia')),
-    ('LO', _('La Rioja')),
-    ('M', _('Madrid')),
-    ('MU', _('Region of Murcia')),
-    ('NA', _('Foral Community of Navarre')),
-    ('VC', _('Valencian Community')),
-)
-
diff --git a/webapp/django/contrib/localflavor/es/forms.py b/webapp/django/contrib/localflavor/es/forms.py
deleted file mode 100644
index 145bf90..0000000
--- a/webapp/django/contrib/localflavor/es/forms.py
+++ /dev/null
@@ -1,184 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Spanish-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import RegexField, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-import re
-
-class ESPostalCodeField(RegexField):
-    """
-    A form field that validates its input as a spanish postal code.
-
-    Spanish postal code is a five digits string, with two first digits
-    between 01 and 52, assigned to provinces code.
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid postal code in the range and format 01XXX - 52XXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ESPostalCodeField, self).__init__(
-                r'^(0[1-9]|[1-4][0-9]|5[0-2])\d{3}$',
-                max_length=None, min_length=None, *args, **kwargs)
-
-class ESPhoneNumberField(RegexField):
-    """
-    A form field that validates its input as a Spanish phone number.
-    Information numbers are ommited.
-
-    Spanish phone numbers are nine digit numbers, where first digit is 6 (for
-    cell phones), 8 (for special phones), or 9 (for landlines and special
-    phones)
-
-    TODO: accept and strip characters like dot, hyphen... in phone number
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ESPhoneNumberField, self).__init__(r'^(6|8|9)\d{8}$',
-                max_length=None, min_length=None, *args, **kwargs)
-
-class ESIdentityCardNumberField(RegexField):
-    """
-    Spanish NIF/NIE/CIF (Fiscal Identification Number) code.
-
-    Validates three diferent formats:
-
-        NIF (individuals): 12345678A
-        CIF (companies): A12345678
-        NIE (foreigners): X12345678A
-
-    according to a couple of simple checksum algorithms.
-
-    Value can include a space or hyphen separator between number and letters.
-    Number length is not checked for NIF (or NIE), old values start with a 1,
-    and future values can contain digits greater than 8. The CIF control digit
-    can be a number or a letter depending on company type. Algorithm is not
-    public, and different authors have different opinions on which ones allows
-    letters, so both validations are assumed true for all types.
-    """
-    default_error_messages = {
-        'invalid': _('Please enter a valid NIF, NIE, or CIF.'),
-        'invalid_only_nif': _('Please enter a valid NIF or NIE.'),
-        'invalid_nif': _('Invalid checksum for NIF.'),
-        'invalid_nie': _('Invalid checksum for NIE.'),
-        'invalid_cif': _('Invalid checksum for CIF.'),
-    }
-
-    def __init__(self, only_nif=False, *args, **kwargs):
-        self.only_nif = only_nif
-        self.nif_control = 'TRWAGMYFPDXBNJZSQVHLCKE'
-        self.cif_control = 'JABCDEFGHI'
-        self.cif_types = 'ABCDEFGHKLMNPQS'
-        self.nie_types = 'XT'
-        super(ESIdentityCardNumberField, self).__init__(r'^([%s]?)[ -]?(\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types + self.cif_types.lower() + self.nie_types.lower(), self.nif_control + self.nif_control.lower()),
-                max_length=None, min_length=None,
-                error_message=self.default_error_messages['invalid%s' % (self.only_nif and '_only_nif' or '')],
-                *args, **kwargs)
-
-    def clean(self, value):
-        super(ESIdentityCardNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        nif_get_checksum = lambda d: self.nif_control[int(d)%23]
-
-        value = value.upper().replace(' ', '').replace('-', '')
-        m = re.match(r'^([%s]?)[ -]?(\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types, self.nif_control), value)
-        letter1, number, letter2 = m.groups()
-
-        if not letter1 and letter2:
-            # NIF
-            if letter2 == nif_get_checksum(number):
-                return value
-            else:
-                raise ValidationError, self.error_messages['invalid_nif']
-        elif letter1 in self.nie_types and letter2:
-            # NIE
-            if letter2 == nif_get_checksum(number):
-                return value
-            else:
-                raise ValidationError, self.error_messages['invalid_nie']
-        elif not self.only_nif and letter1 in self.cif_types and len(number) in [7, 8]:
-            # CIF
-            if not letter2:
-                number, letter2 = number[:-1], int(number[-1])
-            checksum = cif_get_checksum(number)
-            if letter2 in (checksum, self.cif_control[checksum]):
-                return value
-            else:
-                raise ValidationError, self.error_messages['invalid_cif']
-        else:
-            raise ValidationError, self.error_messages['invalid']
-
-class ESCCCField(RegexField):
-    """
-    A form field that validates its input as a Spanish bank account or CCC
-    (Codigo Cuenta Cliente).
-
-        Spanish CCC is in format EEEE-OOOO-CC-AAAAAAAAAA where:
-
-            E = entity
-            O = office
-            C = checksum
-            A = account
-
-        It's also valid to use a space as delimiter, or to use no delimiter.
-
-        First checksum digit validates entity and office, and last one
-        validates account. Validation is done multiplying every digit of 10
-        digit value (with leading 0 if necessary) by number in its position in
-        string 1, 2, 4, 8, 5, 10, 9, 7, 3, 6. Sum resulting numbers and extract
-        it from 11.  Result is checksum except when 10 then is 1, or when 11
-        then is 0.
-
-        TODO: allow IBAN validation too
-    """
-    default_error_messages = {
-        'invalid': _('Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.'),
-        'checksum': _('Invalid checksum for bank account number.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ESCCCField, self).__init__(r'^\d{4}[ -]?\d{4}[ -]?\d{2}[ -]?\d{10}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-    def clean(self, value):
-        super(ESCCCField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        control_str = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6]
-        m = re.match(r'^(\d{4})[ -]?(\d{4})[ -]?(\d{2})[ -]?(\d{10})$', value)
-        entity, office, checksum, account = m.groups()
-        get_checksum = lambda d: str(11 - sum([int(digit) * int(control) for digit, control in zip(d, control_str)]) % 11).replace('10', '1').replace('11', '0')
-        if get_checksum('00' + entity + office) + get_checksum(account) == checksum:
-            return value
-        else:
-            raise ValidationError, self.error_messages['checksum']
-
-class ESRegionSelect(Select):
-    """
-    A Select widget that uses a list of spanish regions as its choices.
-    """
-    def __init__(self, attrs=None):
-        from es_regions import REGION_CHOICES
-        super(ESRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
-
-class ESProvinceSelect(Select):
-    """
-    A Select widget that uses a list of spanish provinces as its choices.
-    """
-    def __init__(self, attrs=None):
-        from es_provinces import PROVINCE_CHOICES
-        super(ESProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)
-
-
-def cif_get_checksum(number):
-    s1 = sum([int(digit) for pos, digit in enumerate(number) if int(pos) % 2])
-    s2 = sum([sum([int(unit) for unit in str(int(digit) * 2)]) for pos, digit in enumerate(number) if not int(pos) % 2])
-    return (10 - ((s1 + s2) % 10)) % 10
-
diff --git a/webapp/django/contrib/localflavor/fi/__init__.py b/webapp/django/contrib/localflavor/fi/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/fi/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/fi/fi_municipalities.py b/webapp/django/contrib/localflavor/fi/fi_municipalities.py
deleted file mode 100644
index 965a52d..0000000
--- a/webapp/django/contrib/localflavor/fi/fi_municipalities.py
+++ /dev/null
@@ -1,427 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-An alphabetical list of Finnish municipalities for use as `choices` in a
-formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-MUNICIPALITY_CHOICES = (
-    ('akaa', u"Akaa"),
-    ('alaharma', u"Alahärmä"),
-    ('alajarvi', u"Alajärvi"),
-    ('alastaro', u"Alastaro"),
-    ('alavieska', u"Alavieska"),
-    ('alavus', u"Alavus"),
-    ('anjalankoski', u"Anjalankoski"),
-    ('artjarvi', u"Artjärvi"),
-    ('asikkala', u"Asikkala"),
-    ('askainen', u"Askainen"),
-    ('askola', u"Askola"),
-    ('aura', u"Aura"),
-    ('brando', u"Brändö"),
-    ('dragsfjard', u"Dragsfjärd"),
-    ('eckero', u"Eckerö"),
-    ('elimaki', u"Elimäki"),
-    ('eno', u"Eno"),
-    ('enonkoski', u"Enonkoski"),
-    ('enontekio', u"Enontekiö"),
-    ('espoo', u"Espoo"),
-    ('eura', u"Eura"),
-    ('eurajoki', u"Eurajoki"),
-    ('evijarvi', u"Evijärvi"),
-    ('finstrom', u"Finström"),
-    ('forssa', u"Forssa"),
-    ('foglo', u"Föglö"),
-    ('geta', u"Geta"),
-    ('haapajarvi', u"Haapajärvi"),
-    ('haapavesi', u"Haapavesi"),
-    ('hailuoto', u"Hailuoto"),
-    ('halikko', u"Halikko"),
-    ('halsua', u"Halsua"),
-    ('hamina', u"Hamina"),
-    ('hammarland', u"Hammarland"),
-    ('hankasalmi', u"Hankasalmi"),
-    ('hanko', u"Hanko"),
-    ('harjavalta', u"Harjavalta"),
-    ('hartola', u"Hartola"),
-    ('hattula', u"Hattula"),
-    ('hauho', u"Hauho"),
-    ('haukipudas', u"Haukipudas"),
-    ('hausjarvi', u"Hausjärvi"),
-    ('heinola', u"Heinola"),
-    ('heinavesi', u"Heinävesi"),
-    ('helsinki', u"Helsinki"),
-    ('himanka', u"Himanka"),
-    ('hirvensalmi', u"Hirvensalmi"),
-    ('hollola', u"Hollola"),
-    ('honkajoki', u"Honkajoki"),
-    ('houtskari', u"Houtskari"),
-    ('huittinen', u"Huittinen"),
-    ('humppila', u"Humppila"),
-    ('hyrynsalmi', u"Hyrynsalmi"),
-    ('hyvinkaa', u"Hyvinkää"),
-    ('hameenkoski', u"Hämeenkoski"),
-    ('hameenkyro', u"Hämeenkyrö"),
-    ('hameenlinna', u"Hämeenlinna"),
-    ('ii', u"Ii"),
-    ('iisalmi', u"Iisalmi"),
-    ('iitti', u"Iitti"),
-    ('ikaalinen', u"Ikaalinen"),
-    ('ilmajoki', u"Ilmajoki"),
-    ('ilomantsi', u"Ilomantsi"),
-    ('imatra', u"Imatra"),
-    ('inari', u"Inari"),
-    ('inio', u"Iniö"),
-    ('inkoo', u"Inkoo"),
-    ('isojoki', u"Isojoki"),
-    ('isokyro', u"Isokyrö"),
-    ('jaala', u"Jaala"),
-    ('jalasjarvi', u"Jalasjärvi"),
-    ('janakkala', u"Janakkala"),
-    ('joensuu', u"Joensuu"),
-    ('jokioinen', u"Jokioinen"),
-    ('jomala', u"Jomala"),
-    ('joroinen', u"Joroinen"),
-    ('joutsa', u"Joutsa"),
-    ('joutseno', u"Joutseno"),
-    ('juankoski', u"Juankoski"),
-    ('jurva', u"Jurva"),
-    ('juuka', u"Juuka"),
-    ('juupajoki', u"Juupajoki"),
-    ('juva', u"Juva"),
-    ('jyvaskyla', u"Jyväskylä"),
-    ('jyvaskylan_mlk', u"Jyväskylän maalaiskunta"),
-    ('jamijarvi', u"Jämijärvi"),
-    ('jamsa', u"Jämsä"),
-    ('jamsankoski', u"Jämsänkoski"),
-    ('jarvenpaa', u"Järvenpää"),
-    ('kaarina', u"Kaarina"),
-    ('kaavi', u"Kaavi"),
-    ('kajaani', u"Kajaani"),
-    ('kalajoki', u"Kalajoki"),
-    ('kalvola', u"Kalvola"),
-    ('kangasala', u"Kangasala"),
-    ('kangasniemi', u"Kangasniemi"),
-    ('kankaanpaa', u"Kankaanpää"),
-    ('kannonkoski', u"Kannonkoski"),
-    ('kannus', u"Kannus"),
-    ('karijoki', u"Karijoki"),
-    ('karjaa', u"Karjaa"),
-    ('karjalohja', u"Karjalohja"),
-    ('karkkila', u"Karkkila"),
-    ('karstula', u"Karstula"),
-    ('karttula', u"Karttula"),
-    ('karvia', u"Karvia"),
-    ('kaskinen', u"Kaskinen"),
-    ('kauhajoki', u"Kauhajoki"),
-    ('kauhava', u"Kauhava"),
-    ('kauniainen', u"Kauniainen"),
-    ('kaustinen', u"Kaustinen"),
-    ('keitele', u"Keitele"),
-    ('kemi', u"Kemi"),
-    ('kemijarvi', u"Kemijärvi"),
-    ('keminmaa', u"Keminmaa"),
-    ('kemio', u"Kemiö"),
-    ('kempele', u"Kempele"),
-    ('kerava', u"Kerava"),
-    ('kerimaki', u"Kerimäki"),
-    ('kestila', u"Kestilä"),
-    ('kesalahti', u"Kesälahti"),
-    ('keuruu', u"Keuruu"),
-    ('kihnio', u"Kihniö"),
-    ('kiikala', u"Kiikala"),
-    ('kiikoinen', u"Kiikoinen"),
-    ('kiiminki', u"Kiiminki"),
-    ('kinnula', u"Kinnula"),
-    ('kirkkonummi', u"Kirkkonummi"),
-    ('kisko', u"Kisko"),
-    ('kitee', u"Kitee"),
-    ('kittila', u"Kittilä"),
-    ('kiukainen', u"Kiukainen"),
-    ('kiuruvesi', u"Kiuruvesi"),
-    ('kivijarvi', u"Kivijärvi"),
-    ('kokemaki', u"Kokemäki"),
-    ('kokkola', u"Kokkola"),
-    ('kolari', u"Kolari"),
-    ('konnevesi', u"Konnevesi"),
-    ('kontiolahti', u"Kontiolahti"),
-    ('korpilahti', u"Korpilahti"),
-    ('korppoo', u"Korppoo"),
-    ('korsnas', u"Korsnäs"),
-    ('kortesjarvi', u"Kortesjärvi"),
-    ('koskitl', u"KoskiTl"),
-    ('kotka', u"Kotka"),
-    ('kouvola', u"Kouvola"),
-    ('kristiinankaupunki', u"Kristiinankaupunki"),
-    ('kruunupyy', u"Kruunupyy"),
-    ('kuhmalahti', u"Kuhmalahti"),
-    ('kuhmo', u"Kuhmo"),
-    ('kuhmoinen', u"Kuhmoinen"),
-    ('kumlinge', u"Kumlinge"),
-    ('kuopio', u"Kuopio"),
-    ('kuortane', u"Kuortane"),
-    ('kurikka', u"Kurikka"),
-    ('kuru', u"Kuru"),
-    ('kustavi', u"Kustavi"),
-    ('kuusamo', u"Kuusamo"),
-    ('kuusankoski', u"Kuusankoski"),
-    ('kuusjoki', u"Kuusjoki"),
-    ('kylmakoski', u"Kylmäkoski"),
-    ('kyyjarvi', u"Kyyjärvi"),
-    ('kalvia', u"Kälviä"),
-    ('karkola', u"Kärkölä"),
-    ('karsamaki', u"Kärsämäki"),
-    ('kokar', u"Kökar"),
-    ('koylio', u"Köyliö"),
-    ('lahti', u"Lahti"),
-    ('laihia', u"Laihia"),
-    ('laitila', u"Laitila"),
-    ('lammi', u"Lammi"),
-    ('lapinjarvi', u"Lapinjärvi"),
-    ('lapinlahti', u"Lapinlahti"),
-    ('lappajarvi', u"Lappajärvi"),
-    ('lappeenranta', u"Lappeenranta"),
-    ('lappi', u"Lappi"),
-    ('lapua', u"Lapua"),
-    ('laukaa', u"Laukaa"),
-    ('lavia', u"Lavia"),
-    ('lehtimaki', u"Lehtimäki"),
-    ('leivonmaki', u"Leivonmäki"),
-    ('lemi', u"Lemi"),
-    ('lemland', u"Lemland"),
-    ('lempaala', u"Lempäälä"),
-    ('lemu', u"Lemu"),
-    ('leppavirta', u"Leppävirta"),
-    ('lestijarvi', u"Lestijärvi"),
-    ('lieksa', u"Lieksa"),
-    ('lieto', u"Lieto"),
-    ('liljendal', u"Liljendal"),
-    ('liminka', u"Liminka"),
-    ('liperi', u"Liperi"),
-    ('lohja', u"Lohja"),
-    ('lohtaja', u"Lohtaja"),
-    ('loimaa', u"Loimaa"),
-    ('loppi', u"Loppi"),
-    ('loviisa', u"Loviisa"),
-    ('luhanka', u"Luhanka"),
-    ('lumijoki', u"Lumijoki"),
-    ('lumparland', u"Lumparland"),
-    ('luoto', u"Luoto"),
-    ('luumaki', u"Luumäki"),
-    ('luvia', u"Luvia"),
-    ('maalahti', u"Maalahti"),
-    ('maaninka', u"Maaninka"),
-    ('maarianhamina', u"Maarianhamina"),
-    ('marttila', u"Marttila"),
-    ('masku', u"Masku"),
-    ('mellila', u"Mellilä"),
-    ('merijarvi', u"Merijärvi"),
-    ('merikarvia', u"Merikarvia"),
-    ('merimasku', u"Merimasku"),
-    ('miehikkala', u"Miehikkälä"),
-    ('mikkeli', u"Mikkeli"),
-    ('mouhijarvi', u"Mouhijärvi"),
-    ('muhos', u"Muhos"),
-    ('multia', u"Multia"),
-    ('muonio', u"Muonio"),
-    ('mustasaari', u"Mustasaari"),
-    ('muurame', u"Muurame"),
-    ('muurla', u"Muurla"),
-    ('mynamaki', u"Mynämäki"),
-    ('myrskyla', u"Myrskylä"),
-    ('mantsala', u"Mäntsälä"),
-    ('mantta', u"Mänttä"),
-    ('mantyharju', u"Mäntyharju"),
-    ('naantali', u"Naantali"),
-    ('nakkila', u"Nakkila"),
-    ('nastola', u"Nastola"),
-    ('nauvo', u"Nauvo"),
-    ('nilsia', u"Nilsiä"),
-    ('nivala', u"Nivala"),
-    ('nokia', u"Nokia"),
-    ('noormarkku', u"Noormarkku"),
-    ('nousiainen', u"Nousiainen"),
-    ('nummi-pusula', u"Nummi-Pusula"),
-    ('nurmes', u"Nurmes"),
-    ('nurmijarvi', u"Nurmijärvi"),
-    ('nurmo', u"Nurmo"),
-    ('narpio', u"Närpiö"),
-    ('oravainen', u"Oravainen"),
-    ('orimattila', u"Orimattila"),
-    ('oripaa', u"Oripää"),
-    ('orivesi', u"Orivesi"),
-    ('oulainen', u"Oulainen"),
-    ('oulu', u"Oulu"),
-    ('oulunsalo', u"Oulunsalo"),
-    ('outokumpu', u"Outokumpu"),
-    ('padasjoki', u"Padasjoki"),
-    ('paimio', u"Paimio"),
-    ('paltamo', u"Paltamo"),
-    ('parainen', u"Parainen"),
-    ('parikkala', u"Parikkala"),
-    ('parkano', u"Parkano"),
-    ('pedersore', u"Pedersöre"),
-    ('pelkosenniemi', u"Pelkosenniemi"),
-    ('pello', u"Pello"),
-    ('perho', u"Perho"),
-    ('pernaja', u"Pernaja"),
-    ('pernio', u"Perniö"),
-    ('pertteli', u"Pertteli"),
-    ('pertunmaa', u"Pertunmaa"),
-    ('petajavesi', u"Petäjävesi"),
-    ('pieksamaki', u"Pieksämäki"),
-    ('pielavesi', u"Pielavesi"),
-    ('pietarsaari', u"Pietarsaari"),
-    ('pihtipudas', u"Pihtipudas"),
-    ('piikkio', u"Piikkiö"),
-    ('piippola', u"Piippola"),
-    ('pirkkala', u"Pirkkala"),
-    ('pohja', u"Pohja"),
-    ('polvijarvi', u"Polvijärvi"),
-    ('pomarkku', u"Pomarkku"),
-    ('pori', u"Pori"),
-    ('pornainen', u"Pornainen"),
-    ('porvoo', u"Porvoo"),
-    ('posio', u"Posio"),
-    ('pudasjarvi', u"Pudasjärvi"),
-    ('pukkila', u"Pukkila"),
-    ('pulkkila', u"Pulkkila"),
-    ('punkaharju', u"Punkaharju"),
-    ('punkalaidun', u"Punkalaidun"),
-    ('puolanka', u"Puolanka"),
-    ('puumala', u"Puumala"),
-    ('pyhtaa', u"Pyhtää"),
-    ('pyhajoki', u"Pyhäjoki"),
-    ('pyhajarvi', u"Pyhäjärvi"),
-    ('pyhanta', u"Pyhäntä"),
-    ('pyharanta', u"Pyhäranta"),
-    ('pyhaselka', u"Pyhäselkä"),
-    ('pylkonmaki', u"Pylkönmäki"),
-    ('palkane', u"Pälkäne"),
-    ('poytya', u"Pöytyä"),
-    ('raahe', u"Raahe"),
-    ('raisio', u"Raisio"),
-    ('rantasalmi', u"Rantasalmi"),
-    ('rantsila', u"Rantsila"),
-    ('ranua', u"Ranua"),
-    ('rauma', u"Rauma"),
-    ('rautalampi', u"Rautalampi"),
-    ('rautavaara', u"Rautavaara"),
-    ('rautjarvi', u"Rautjärvi"),
-    ('reisjarvi', u"Reisjärvi"),
-    ('renko', u"Renko"),
-    ('riihimaki', u"Riihimäki"),
-    ('ristiina', u"Ristiina"),
-    ('ristijarvi', u"Ristijärvi"),
-    ('rovaniemi', u"Rovaniemi"),
-    ('ruokolahti', u"Ruokolahti"),
-    ('ruotsinpyhtaa', u"Ruotsinpyhtää"),
-    ('ruovesi', u"Ruovesi"),
-    ('rusko', u"Rusko"),
-    ('rymattyla', u"Rymättylä"),
-    ('raakkyla', u"Rääkkylä"),
-    ('saarijarvi', u"Saarijärvi"),
-    ('salla', u"Salla"),
-    ('salo', u"Salo"),
-    ('saltvik', u"Saltvik"),
-    ('sammatti', u"Sammatti"),
-    ('sauvo', u"Sauvo"),
-    ('savitaipale', u"Savitaipale"),
-    ('savonlinna', u"Savonlinna"),
-    ('savonranta', u"Savonranta"),
-    ('savukoski', u"Savukoski"),
-    ('seinajoki', u"Seinäjoki"),
-    ('sievi', u"Sievi"),
-    ('siikainen', u"Siikainen"),
-    ('siikajoki', u"Siikajoki"),
-    ('siilinjarvi', u"Siilinjärvi"),
-    ('simo', u"Simo"),
-    ('sipoo', u"Sipoo"),
-    ('siuntio', u"Siuntio"),
-    ('sodankyla', u"Sodankylä"),
-    ('soini', u"Soini"),
-    ('somero', u"Somero"),
-    ('sonkajarvi', u"Sonkajärvi"),
-    ('sotkamo', u"Sotkamo"),
-    ('sottunga', u"Sottunga"),
-    ('sulkava', u"Sulkava"),
-    ('sund', u"Sund"),
-    ('suomenniemi', u"Suomenniemi"),
-    ('suomusjarvi', u"Suomusjärvi"),
-    ('suomussalmi', u"Suomussalmi"),
-    ('suonenjoki', u"Suonenjoki"),
-    ('sysma', u"Sysmä"),
-    ('sakyla', u"Säkylä"),
-    ('sarkisalo', u"Särkisalo"),
-    ('taipalsaari', u"Taipalsaari"),
-    ('taivalkoski', u"Taivalkoski"),
-    ('taivassalo', u"Taivassalo"),
-    ('tammela', u"Tammela"),
-    ('tammisaari', u"Tammisaari"),
-    ('tampere', u"Tampere"),
-    ('tarvasjoki', u"Tarvasjoki"),
-    ('tervo', u"Tervo"),
-    ('tervola', u"Tervola"),
-    ('teuva', u"Teuva"),
-    ('tohmajarvi', u"Tohmajärvi"),
-    ('toholampi', u"Toholampi"),
-    ('toivakka', u"Toivakka"),
-    ('tornio', u"Tornio"),
-    ('turku', u"Turku"),
-    ('tuulos', u"Tuulos"),
-    ('tuusniemi', u"Tuusniemi"),
-    ('tuusula', u"Tuusula"),
-    ('tyrnava', u"Tyrnävä"),
-    ('toysa', u"Töysä"),
-    ('ullava', u"Ullava"),
-    ('ulvila', u"Ulvila"),
-    ('urjala', u"Urjala"),
-    ('utajarvi', u"Utajärvi"),
-    ('utsjoki', u"Utsjoki"),
-    ('uurainen', u"Uurainen"),
-    ('uusikaarlepyy', u"Uusikaarlepyy"),
-    ('uusikaupunki', u"Uusikaupunki"),
-    ('vaala', u"Vaala"),
-    ('vaasa', u"Vaasa"),
-    ('vahto', u"Vahto"),
-    ('valkeakoski', u"Valkeakoski"),
-    ('valkeala', u"Valkeala"),
-    ('valtimo', u"Valtimo"),
-    ('vammala', u"Vammala"),
-    ('vampula', u"Vampula"),
-    ('vantaa', u"Vantaa"),
-    ('varkaus', u"Varkaus"),
-    ('varpaisjarvi', u"Varpaisjärvi"),
-    ('vehmaa', u"Vehmaa"),
-    ('velkua', u"Velkua"),
-    ('vesanto', u"Vesanto"),
-    ('vesilahti', u"Vesilahti"),
-    ('veteli', u"Veteli"),
-    ('vierema', u"Vieremä"),
-    ('vihanti', u"Vihanti"),
-    ('vihti', u"Vihti"),
-    ('viitasaari', u"Viitasaari"),
-    ('vilppula', u"Vilppula"),
-    ('vimpeli', u"Vimpeli"),
-    ('virolahti', u"Virolahti"),
-    ('virrat', u"Virrat"),
-    ('vardo', u"Vårdö"),
-    ('vahakyro', u"Vähäkyrö"),
-    ('vastanfjard', u"Västanfjärd"),
-    ('voyri-maksamaa', u"Vöyri-Maksamaa"),
-    ('yliharma', u"Ylihärmä"),
-    ('yli-ii', u"Yli-Ii"),
-    ('ylikiiminki', u"Ylikiiminki"),
-    ('ylistaro', u"Ylistaro"),
-    ('ylitornio', u"Ylitornio"),
-    ('ylivieska', u"Ylivieska"),
-    ('ylamaa', u"Ylämaa"),
-    ('ylane', u"Yläne"),
-    ('ylojarvi', u"Ylöjärvi"),
-    ('ypaja', u"Ypäjä"),
-    ('aetsa', u"Äetsä"),
-    ('ahtari', u"Ähtäri"),
-    ('aanekoski', u"Äänekoski")
-)
\ No newline at end of file
diff --git a/webapp/django/contrib/localflavor/fi/forms.py b/webapp/django/contrib/localflavor/fi/forms.py
deleted file mode 100644
index 2b82a79..0000000
--- a/webapp/django/contrib/localflavor/fi/forms.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""
-FI-specific Form helpers
-"""
-
-import re
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-
-class FIZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXXX.'),
-    }
-    def __init__(self, *args, **kwargs):
-        super(FIZipCodeField, self).__init__(r'^\d{5}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class FIMunicipalitySelect(Select):
-    """
-    A Select widget that uses a list of Finnish municipalities as its choices.
-    """
-    def __init__(self, attrs=None):
-        from fi_municipalities import MUNICIPALITY_CHOICES
-        super(FIMunicipalitySelect, self).__init__(attrs, choices=MUNICIPALITY_CHOICES)
-
-class FISocialSecurityNumber(Field):
-    default_error_messages = {
-        'invalid': _('Enter a valid Finnish social security number.'),
-    }
-
-    def clean(self, value):
-        super(FISocialSecurityNumber, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-
-        checkmarks = "0123456789ABCDEFHJKLMNPRSTUVWXY"
-        result = re.match(r"""^
-            (?P<date>([0-2]\d|3[01])
-            (0\d|1[012])
-            (\d{2}))
-            [A+-]
-            (?P<serial>(\d{3}))
-            (?P<checksum>[%s])$""" % checkmarks, value, re.VERBOSE | re.IGNORECASE)
-        if not result:
-            raise ValidationError(self.error_messages['invalid'])
-        gd = result.groupdict()
-        checksum = int(gd['date'] + gd['serial'])
-        if checkmarks[checksum % len(checkmarks)] == gd['checksum'].upper():
-            return u'%s' % value.upper()
-        raise ValidationError(self.error_messages['invalid'])
diff --git a/webapp/django/contrib/localflavor/fr/__init__.py b/webapp/django/contrib/localflavor/fr/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/fr/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/fr/forms.py b/webapp/django/contrib/localflavor/fr/forms.py
deleted file mode 100644
index 8d9d9d7..0000000
--- a/webapp/django/contrib/localflavor/fr/forms.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""
-FR-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.encoding import smart_unicode
-from django.utils.translation import ugettext_lazy as _
-import re
-
-phone_digits_re = re.compile(r'^0\d(\s|\.)?(\d{2}(\s|\.)?){3}\d{2}$')
-
-class FRZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(FRZipCodeField, self).__init__(r'^\d{5}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class FRPhoneNumberField(Field):
-    """
-    Validate local French phone number (not international ones)
-    The correct format is '0X XX XX XX XX'.
-    '0X.XX.XX.XX.XX' and '0XXXXXXXXX' validate but are corrected to
-    '0X XX XX XX XX'.
-    """
-    default_error_messages = {
-        'invalid': u'Phone numbers must be in 0X XX XX XX XX format.',
-    }
-
-    def clean(self, value):
-        super(FRPhoneNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value = re.sub('(\.|\s)', '', smart_unicode(value))
-        m = phone_digits_re.search(value)
-        if m:
-            return u'%s %s %s %s %s' % (value[0:2], value[2:4], value[4:6], value[6:8], value[8:10])
-        raise ValidationError(self.error_messages['invalid'])
-
-class FRDepartmentSelect(Select):
-    """
-    A Select widget that uses a list of FR departments as its choices.
-    """
-    def __init__(self, attrs=None):
-        from fr_department import DEPARTMENT_ASCII_CHOICES
-        super(FRDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_ASCII_CHOICES)
-
diff --git a/webapp/django/contrib/localflavor/fr/fr_department.py b/webapp/django/contrib/localflavor/fr/fr_department.py
deleted file mode 100644
index 02de295..0000000
--- a/webapp/django/contrib/localflavor/fr/fr_department.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-
-DEPARTMENT_ASCII_CHOICES = (
-    ('01', '01 - Ain'),
-    ('02', '02 - Aisne'),
-    ('03', '03 - Allier'),
-    ('04', '04 - Alpes-de-Haute-Provence'),
-    ('05', '05 - Hautes-Alpes'),
-    ('06', '06 - Alpes-Maritimes'),
-    ('07', '07 - Ardeche'),
-    ('08', '08 - Ardennes'),
-    ('09', '09 - Ariege'),
-    ('10', '10 - Aube'),
-    ('11', '11 - Aude'),
-    ('12', '12 - Aveyron'),
-    ('13', '13 - Bouches-du-Rhone'),
-    ('14', '14 - Calvados'),
-    ('15', '15 - Cantal'),
-    ('16', '16 - Charente'),
-    ('17', '17 - Charente-Maritime'),
-    ('18', '18 - Cher'),
-    ('19', '19 - Correze'),
-    ('21', '21 - Cote-d\'Or'),
-    ('22', '22 - Cotes-d\'Armor'),
-    ('23', '23 - Creuse'),
-    ('24', '24 - Dordogne'),
-    ('25', '25 - Doubs'),
-    ('26', '26 - Drome'),
-    ('27', '27 - Eure'),
-    ('28', '28 - Eure-et-Loire'),
-    ('29', '29 - Finistere'),
-    ('2A', '2A - Corse-du-Sud'),
-    ('2B', '2B - Haute-Corse'),
-    ('30', '30 - Gard'),
-    ('31', '31 - Haute-Garonne'),
-    ('32', '32 - Gers'),
-    ('33', '33 - Gironde'),
-    ('34', '34 - Herault'),
-    ('35', '35 - Ille-et-Vilaine'),
-    ('36', '36 - Indre'),
-    ('37', '37 - Indre-et-Loire'),
-    ('38', '38 - Isere'),
-    ('39', '39 - Jura'),
-    ('40', '40 - Landes'),
-    ('41', '41 - Loir-et-Cher'),
-    ('42', '42 - Loire'),
-    ('43', '43 - Haute-Loire'),
-    ('44', '44 - Loire-Atlantique'),
-    ('45', '45 - Loiret'),
-    ('46', '46 - Lot'),
-    ('47', '47 - Lot-et-Garonne'),
-    ('48', '48 - Lozere'),
-    ('49', '49 - Maine-et-Loire'),
-    ('50', '50 - Manche'),
-    ('51', '51 - Marne'),
-    ('52', '52 - Haute-Marne'),
-    ('53', '53 - Mayenne'),
-    ('54', '54 - Meurthe-et-Moselle'),
-    ('55', '55 - Meuse'),
-    ('56', '56 - Morbihan'),
-    ('57', '57 - Moselle'),
-    ('58', '58 - Nievre'),
-    ('59', '59 - Nord'),
-    ('60', '60 - Oise'),
-    ('61', '61 - Orne'),
-    ('62', '62 - Pas-de-Calais'),
-    ('63', '63 - Puy-de-Dome'),
-    ('64', '64 - Pyrenees-Atlantiques'),
-    ('65', '65 - Hautes-Pyrenees'),
-    ('66', '66 - Pyrenees-Orientales'),
-    ('67', '67 - Bas-Rhin'),
-    ('68', '68 - Haut-Rhin'),
-    ('69', '69 - Rhone'),
-    ('70', '70 - Haute-Saone'),
-    ('71', '71 - Saone-et-Loire'),
-    ('72', '72 - Sarthe'),
-    ('73', '73 - Savoie'),
-    ('74', '74 - Haute-Savoie'),
-    ('75', '75 - Paris'),
-    ('76', '76 - Seine-Maritime'),
-    ('77', '77 - Seine-et-Marne'),
-    ('78', '78 - Yvelines'),
-    ('79', '79 - Deux-Sevres'),
-    ('80', '80 - Somme'),
-    ('81', '81 - Tarn'),
-    ('82', '82 - Tarn-et-Garonne'),
-    ('83', '83 - Var'),
-    ('84', '84 - Vaucluse'),
-    ('85', '85 - Vendee'),
-    ('86', '86 - Vienne'),
-    ('87', '87 - Haute-Vienne'),
-    ('88', '88 - Vosges'),
-    ('89', '89 - Yonne'),
-    ('90', '90 - Territoire de Belfort'),
-    ('91', '91 - Essonne'),
-    ('92', '92 - Hauts-de-Seine'),
-    ('93', '93 - Seine-Saint-Denis'),
-    ('94', '94 - Val-de-Marne'),
-    ('95', '95 - Val-d\'Oise'),
-    ('2A', '2A - Corse du sud'),
-    ('2B', '2B - Haute Corse'),
-    ('971', '971 - Guadeloupe'),
-    ('972', '972 - Martinique'),
-    ('973', '973 - Guyane'),
-    ('974', '974 - La Reunion'),
-    ('975', '975 - Saint-Pierre-et-Miquelon'),
-    ('976', '976 - Mayotte'),
-    ('984', '984 - Terres Australes et Antarctiques'),
-    ('986', '986 - Wallis et Futuna'),
-    ('987', '987 - Polynesie Francaise'),
-    ('988', '988 - Nouvelle-Caledonie'),
-)
diff --git a/webapp/django/contrib/localflavor/generic/__init__.py b/webapp/django/contrib/localflavor/generic/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/generic/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/generic/forms.py b/webapp/django/contrib/localflavor/generic/forms.py
deleted file mode 100644
index 8bafce7..0000000
--- a/webapp/django/contrib/localflavor/generic/forms.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from django import forms
-
-DEFAULT_DATE_INPUT_FORMATS = (
-    '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06'
-    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
-    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
-    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
-    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
-)
-
-DEFAULT_DATETIME_INPUT_FORMATS = (
-    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
-    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
-    '%Y-%m-%d',              # '2006-10-25'
-    '%d/%m/%Y %H:%M:%S',     # '25/10/2006 14:30:59'
-    '%d/%m/%Y %H:%M',        # '25/10/2006 14:30'
-    '%d/%m/%Y',              # '25/10/2006'
-    '%d/%m/%y %H:%M:%S',     # '25/10/06 14:30:59'
-    '%d/%m/%y %H:%M',        # '25/10/06 14:30'
-    '%d/%m/%y',              # '25/10/06'
-)
-
-class DateField(forms.DateField):
-    """
-    A date input field which uses non-US date input formats by default.
-    """
-    def __init__(self, input_formats=None, *args, **kwargs):
-        input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS
-        super(DateField, self).__init__(input_formats=input_formats, *args, **kwargs)
-
-class DateTimeField(forms.DateTimeField):
-    """
-    A date and time input field which uses non-US date and time input formats
-    by default.
-    """
-    def __init__(self, input_formats=None, *args, **kwargs):
-        input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS
-        super(DateTimeField, self).__init__(input_formats=input_formats, *args, **kwargs)
diff --git a/webapp/django/contrib/localflavor/in_/__init__.py b/webapp/django/contrib/localflavor/in_/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/in_/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/in_/forms.py b/webapp/django/contrib/localflavor/in_/forms.py
deleted file mode 100644
index 270b0a0..0000000
--- a/webapp/django/contrib/localflavor/in_/forms.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-India-specific Form helpers.
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.encoding import smart_unicode
-from django.utils.translation import gettext
-import re
-
-
-class INZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': gettext(u'Enter a zip code in the format XXXXXXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(INZipCodeField, self).__init__(r'^\d{6}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class INStateField(Field):
-    """
-    A form field that validates its input is a Indian state name or
-    abbreviation. It normalizes the input to the standard two-letter vehicle
-    registration abbreviation for the given state or union territory
-    """
-    default_error_messages = {
-        'invalid': u'Enter a Indian state or territory.',
-    }
-
-    def clean(self, value):
-        from in_states import STATES_NORMALIZED
-        super(INStateField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        try:
-            value = value.strip().lower()
-        except AttributeError:
-            pass
-        else:
-            try:
-                return smart_unicode(STATES_NORMALIZED[value.strip().lower()])
-            except KeyError:
-                pass
-        raise ValidationError(self.error_messages['invalid'])
-
-class INStateSelect(Select):
-    """
-    A Select widget that uses a list of Indian states/territories as its
-    choices.
-    """
-    def __init__(self, attrs=None):
-        from in_states import STATE_CHOICES
-        super(INStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
-
diff --git a/webapp/django/contrib/localflavor/in_/in_states.py b/webapp/django/contrib/localflavor/in_/in_states.py
deleted file mode 100644
index 498efe7..0000000
--- a/webapp/django/contrib/localflavor/in_/in_states.py
+++ /dev/null
@@ -1,84 +0,0 @@
-"""
-A mapping of state misspellings/abbreviations to normalized abbreviations, and
-an alphabetical list of states for use as `choices` in a formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-STATE_CHOICES = (
-    'KA', 'Karnataka',
-    'AP', 'Andhra Pradesh',
-    'KL', 'Kerala',
-    'TN', 'Tamil Nadu',
-    'MH', 'Maharashtra',
-    'UP', 'Uttar Pradesh',
-    'GA', 'Goa',
-    'GJ', 'Gujarat',
-    'RJ', 'Rajasthan',
-    'HP', 'Himachal Pradesh',
-    'JK', 'Jammu and Kashmir',
-    'AR', 'Arunachal Pradesh',
-    'AS', 'Assam',
-    'BR', 'Bihar',
-    'CG', 'Chattisgarh',
-    'HR', 'Haryana',
-    'JH', 'Jharkhand',
-    'MP', 'Madhya Pradesh',
-    'MN', 'Manipur',
-    'ML', 'Meghalaya',
-    'MZ', 'Mizoram',
-    'NL', 'Nagaland',
-    'OR', 'Orissa',
-    'PB', 'Punjab',
-    'SK', 'Sikkim',
-    'TR', 'Tripura',
-    'UA', 'Uttarakhand',
-    'WB', 'West Bengal',
-
-    # Union Territories
-    'AN', 'Andaman and Nicobar',
-    'CH', 'Chandigarh',
-    'DN', 'Dadra and Nagar Haveli',
-    'DD', 'Daman and Diu',
-    'DL', 'Delhi',
-    'LD', 'Lakshadweep',
-    'PY', 'Pondicherry',
-)
-
-STATES_NORMALIZED = {
-    'ka': 'KA',
-    'karnatka': 'KA',
-    'tn': 'TN',
-    'tamilnad': 'TN',
-    'tamilnadu': 'TN',
-    'andra pradesh': 'AP',
-    'andrapradesh': 'AP',
-    'andhrapradesh': 'AP',
-    'maharastra': 'MH',
-    'mh': 'MH',
-    'ap': 'AP',
-    'dl': 'DL',
-    'dd': 'DD',
-    'br': 'BR',
-    'ar': 'AR',
-    'sk': 'SK',
-    'kl': 'KL',
-    'ga': 'GA',
-    'rj': 'RJ',
-    'rajastan': 'RJ',
-    'rajasthan': 'RJ',
-    'hp': 'HP',
-    'ua': 'UA',
-    'up': 'UP',
-    'mp': 'MP',
-    'mz': 'MZ',
-    'bengal': 'WB',
-    'westbengal': 'WB',
-    'mizo': 'MZ',
-    'orisa': 'OR',
-    'odisa': 'OR',
-    'or': 'OR',
-    'ar': 'AR',
-}
-
diff --git a/webapp/django/contrib/localflavor/is_/__init__.py b/webapp/django/contrib/localflavor/is_/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/is_/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/is_/forms.py b/webapp/django/contrib/localflavor/is_/forms.py
deleted file mode 100644
index cab6eb1..0000000
--- a/webapp/django/contrib/localflavor/is_/forms.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""
-Iceland specific form helpers.
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import RegexField, EMPTY_VALUES
-from django.forms.widgets import Select
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode
-
-class ISIdNumberField(RegexField):
-    """
-    Icelandic identification number (kennitala). This is a number every citizen
-    of Iceland has.
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.'),
-        'checksum': _(u'The Icelandic identification number is not valid.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        kwargs['min_length'],kwargs['max_length'] = 10,11
-        super(ISIdNumberField, self).__init__(r'^\d{6}(-| )?\d{4}$', *args, **kwargs)
-
-    def clean(self, value):
-        value = super(ISIdNumberField, self).clean(value)
-
-        if value in EMPTY_VALUES:
-            return u''
-
-        value = self._canonify(value)
-        if self._validate(value):
-            return self._format(value)
-        else:
-            raise ValidationError(self.error_messages['checksum'])
-
-    def _canonify(self, value):
-        """
-        Returns the value as only digits.
-        """
-        return value.replace('-', '').replace(' ', '')
-
-    def _validate(self, value):
-        """
-        Takes in the value in canonical form and checks the verifier digit. The
-        method is modulo 11.
-        """
-        check = [3, 2, 7, 6, 5, 4, 3, 2, 1, 0]
-        return sum([int(value[i]) * check[i] for i in range(10)]) % 11 == 0
-
-    def _format(self, value):
-        """
-        Takes in the value in canonical form and returns it in the common
-        display format.
-        """
-        return smart_unicode(value[:6]+'-'+value[6:])
-
-class ISPhoneNumberField(RegexField):
-    """
-    Icelandic phone number. Seven digits with an optional hyphen or space after
-    the first three digits.
-    """
-    def __init__(self, *args, **kwargs):
-        kwargs['min_length'], kwargs['max_length'] = 7,8
-        super(ISPhoneNumberField, self).__init__(r'^\d{3}(-| )?\d{4}$', *args, **kwargs)
-
-    def clean(self, value):
-        value = super(ISPhoneNumberField, self).clean(value)
-
-        if value in EMPTY_VALUES:
-            return u''
-
-        return value.replace('-', '').replace(' ', '')
-
-class ISPostalCodeSelect(Select):
-    """
-    A Select widget that uses a list of Icelandic postal codes as its choices.
-    """
-    def __init__(self, attrs=None):
-        from is_postalcodes import IS_POSTALCODES
-        super(ISPostalCodeSelect, self).__init__(attrs, choices=IS_POSTALCODES)
-
diff --git a/webapp/django/contrib/localflavor/is_/is_postalcodes.py b/webapp/django/contrib/localflavor/is_/is_postalcodes.py
deleted file mode 100644
index 4feca9c..0000000
--- a/webapp/django/contrib/localflavor/is_/is_postalcodes.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# -*- coding: utf-8 -*-
-
-IS_POSTALCODES = (
-    ('101', u'101 Reykjavík'),
-    ('103', u'103 Reykjavík'),
-    ('104', u'104 Reykjavík'),
-    ('105', u'105 Reykjavík'),
-    ('107', u'107 Reykjavík'),
-    ('108', u'108 Reykjavík'),
-    ('109', u'109 Reykjavík'),
-    ('110', u'110 Reykjavík'),
-    ('111', u'111 Reykjavík'),
-    ('112', u'112 Reykjavík'),
-    ('113', u'113 Reykjavík'),
-    ('116', u'116 Kjalarnes'),
-    ('121', u'121 Reykjavík'),
-    ('123', u'123 Reykjavík'),
-    ('124', u'124 Reykjavík'),
-    ('125', u'125 Reykjavík'),
-    ('127', u'127 Reykjavík'),
-    ('128', u'128 Reykjavík'),
-    ('129', u'129 Reykjavík'),
-    ('130', u'130 Reykjavík'),
-    ('132', u'132 Reykjavík'),
-    ('150', u'150 Reykjavík'),
-    ('155', u'155 Reykjavík'),
-    ('170', u'170 Seltjarnarnes'),
-    ('172', u'172 Seltjarnarnes'),
-    ('190', u'190 Vogar'),
-    ('200', u'200 Kópavogur'),
-    ('201', u'201 Kópavogur'),
-    ('202', u'202 Kópavogur'),
-    ('203', u'203 Kópavogur'),
-    ('210', u'210 Garðabær'),
-    ('212', u'212 Garðabær'),
-    ('220', u'220 Hafnarfjörður'),
-    ('221', u'221 Hafnarfjörður'),
-    ('222', u'222 Hafnarfjörður'),
-    ('225', u'225 Álftanes'),
-    ('230', u'230 Reykjanesbær'),
-    ('232', u'232 Reykjanesbær'),
-    ('233', u'233 Reykjanesbær'),
-    ('235', u'235 Keflavíkurflugvöllur'),
-    ('240', u'240 Grindavík'),
-    ('245', u'245 Sandgerði'),
-    ('250', u'250 Garður'),
-    ('260', u'260 Reykjanesbær'),
-    ('270', u'270 Mosfellsbær'),
-    ('300', u'300 Akranes'),
-    ('301', u'301 Akranes'),
-    ('302', u'302 Akranes'),
-    ('310', u'310 Borgarnes'),
-    ('311', u'311 Borgarnes'),
-    ('320', u'320 Reykholt í Borgarfirði'),
-    ('340', u'340 Stykkishólmur'),
-    ('345', u'345 Flatey á Breiðafirði'),
-    ('350', u'350 Grundarfjörður'),
-    ('355', u'355 Ólafsvík'),
-    ('356', u'356 Snæfellsbær'),
-    ('360', u'360 Hellissandur'),
-    ('370', u'370 Búðardalur'),
-    ('371', u'371 Búðardalur'),
-    ('380', u'380 Reykhólahreppur'),
-    ('400', u'400 Ísafjörður'),
-    ('401', u'401 Ísafjörður'),
-    ('410', u'410 Hnífsdalur'),
-    ('415', u'415 Bolungarvík'),
-    ('420', u'420 Súðavík'),
-    ('425', u'425 Flateyri'),
-    ('430', u'430 Suðureyri'),
-    ('450', u'450 Patreksfjörður'),
-    ('451', u'451 Patreksfjörður'),
-    ('460', u'460 Tálknafjörður'),
-    ('465', u'465 Bíldudalur'),
-    ('470', u'470 Þingeyri'),
-    ('471', u'471 Þingeyri'),
-    ('500', u'500 Staður'),
-    ('510', u'510 Hólmavík'),
-    ('512', u'512 Hólmavík'),
-    ('520', u'520 Drangsnes'),
-    ('522', u'522 Kjörvogur'),
-    ('523', u'523 Bær'),
-    ('524', u'524 Norðurfjörður'),
-    ('530', u'530 Hvammstangi'),
-    ('531', u'531 Hvammstangi'),
-    ('540', u'540 Blönduós'),
-    ('541', u'541 Blönduós'),
-    ('545', u'545 Skagaströnd'),
-    ('550', u'550 Sauðárkrókur'),
-    ('551', u'551 Sauðárkrókur'),
-    ('560', u'560 Varmahlíð'),
-    ('565', u'565 Hofsós'),
-    ('566', u'566 Hofsós'),
-    ('570', u'570 Fljót'),
-    ('580', u'580 Siglufjörður'),
-    ('600', u'600 Akureyri'),
-    ('601', u'601 Akureyri'),
-    ('602', u'602 Akureyri'),
-    ('603', u'603 Akureyri'),
-    ('610', u'610 Grenivík'),
-    ('611', u'611 Grímsey'),
-    ('620', u'620 Dalvík'),
-    ('621', u'621 Dalvík'),
-    ('625', u'625 Ólafsfjörður'),
-    ('630', u'630 Hrísey'),
-    ('640', u'640 Húsavík'),
-    ('641', u'641 Húsavík'),
-    ('645', u'645 Fosshóll'),
-    ('650', u'650 Laugar'),
-    ('660', u'660 Mývatn'),
-    ('670', u'670 Kópasker'),
-    ('671', u'671 Kópasker'),
-    ('675', u'675 Raufarhöfn'),
-    ('680', u'680 Þórshöfn'),
-    ('681', u'681 Þórshöfn'),
-    ('685', u'685 Bakkafjörður'),
-    ('690', u'690 Vopnafjörður'),
-    ('700', u'700 Egilsstaðir'),
-    ('701', u'701 Egilsstaðir'),
-    ('710', u'710 Seyðisfjörður'),
-    ('715', u'715 Mjóifjörður'),
-    ('720', u'720 Borgarfjörður eystri'),
-    ('730', u'730 Reyðarfjörður'),
-    ('735', u'735 Eskifjörður'),
-    ('740', u'740 Neskaupstaður'),
-    ('750', u'750 Fáskrúðsfjörður'),
-    ('755', u'755 Stöðvarfjörður'),
-    ('760', u'760 Breiðdalsvík'),
-    ('765', u'765 Djúpivogur'),
-    ('780', u'780 Höfn í Hornafirði'),
-    ('781', u'781 Höfn í Hornafirði'),
-    ('785', u'785 Öræfi'),
-    ('800', u'800 Selfoss'),
-    ('801', u'801 Selfoss'),
-    ('802', u'802 Selfoss'),
-    ('810', u'810 Hveragerði'),
-    ('815', u'815 Þorlákshöfn'),
-    ('820', u'820 Eyrarbakki'),
-    ('825', u'825 Stokkseyri'),
-    ('840', u'840 Laugarvatn'),
-    ('845', u'845 Flúðir'),
-    ('850', u'850 Hella'),
-    ('851', u'851 Hella'),
-    ('860', u'860 Hvolsvöllur'),
-    ('861', u'861 Hvolsvöllur'),
-    ('870', u'870 Vík'),
-    ('871', u'871 Vík'),
-    ('880', u'880 Kirkjubæjarklaustur'),
-    ('900', u'900 Vestmannaeyjar'),
-    ('902', u'902 Vestmannaeyjar')
-)
diff --git a/webapp/django/contrib/localflavor/it/__init__.py b/webapp/django/contrib/localflavor/it/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/it/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/it/forms.py b/webapp/django/contrib/localflavor/it/forms.py
deleted file mode 100644
index d2d6519..0000000
--- a/webapp/django/contrib/localflavor/it/forms.py
+++ /dev/null
@@ -1,83 +0,0 @@
-"""
-IT-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode
-from django.contrib.localflavor.it.util import ssn_check_digit, vat_number_check_digit
-import re
-
-class ITZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a valid zip code.'),
-    }
-    def __init__(self, *args, **kwargs):
-        super(ITZipCodeField, self).__init__(r'^\d{5}$',
-        max_length=None, min_length=None, *args, **kwargs)
-
-class ITRegionSelect(Select):
-    """
-    A Select widget that uses a list of IT regions as its choices.
-    """
-    def __init__(self, attrs=None):
-        from it_region import REGION_CHOICES
-        super(ITRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
-
-class ITProvinceSelect(Select):
-    """
-    A Select widget that uses a list of IT provinces as its choices.
-    """
-    def __init__(self, attrs=None):
-        from it_province import PROVINCE_CHOICES
-        super(ITProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)
-
-class ITSocialSecurityNumberField(RegexField):
-    """
-    A form field that validates Italian Social Security numbers (codice fiscale).
-    For reference see http://www.agenziaentrate.it/ and search for
-    'Informazioni sulla codificazione delle persone fisiche'.
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a valid Social Security number.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ITSocialSecurityNumberField, self).__init__(r'^\w{3}\s*\w{3}\s*\w{5}\s*\w{5}$',
-        max_length=None, min_length=None, *args, **kwargs)
-
-    def clean(self, value):
-        value = super(ITSocialSecurityNumberField, self).clean(value)
-        if value == u'':
-            return value
-        value = re.sub('\s', u'', value).upper()
-        try:
-            check_digit = ssn_check_digit(value)
-        except ValueError:
-            raise ValidationError(self.error_messages['invalid'])
-        if not value[15] == check_digit:
-            raise ValidationError(self.error_messages['invalid'])
-        return value
-
-class ITVatNumberField(Field):
-    """
-    A form field that validates Italian VAT numbers (partita IVA).
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a valid VAT number.'),
-    }
-
-    def clean(self, value):
-        value = super(ITVatNumberField, self).clean(value)
-        if value == u'':
-            return value
-        try:
-            vat_number = int(value)
-        except ValueError:
-            raise ValidationError(self.error_messages['invalid'])
-        vat_number = str(vat_number).zfill(11)
-        check_digit = vat_number_check_digit(vat_number[0:10])
-        if not vat_number[10] == check_digit:
-            raise ValidationError(self.error_messages['invalid'])
-        return smart_unicode(vat_number)
diff --git a/webapp/django/contrib/localflavor/it/it_province.py b/webapp/django/contrib/localflavor/it/it_province.py
deleted file mode 100644
index 8737335..0000000
--- a/webapp/django/contrib/localflavor/it/it_province.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# -*- coding: utf-8 -*
-
-PROVINCE_CHOICES = (
-    ('AG', 'Agrigento'),
-    ('AL', 'Alessandria'),
-    ('AN', 'Ancona'),
-    ('AO', 'Aosta'),
-    ('AR', 'Arezzo'),
-    ('AP', 'Ascoli Piceno'),
-    ('AT', 'Asti'),
-    ('AV', 'Avellino'),
-    ('BA', 'Bari'),
-#    ('BT', 'Barletta-Andria-Trani'), # active starting from 2009
-    ('BL', 'Belluno'),
-    ('BN', 'Benevento'),
-    ('BG', 'Bergamo'),
-    ('BI', 'Biella'),
-    ('BO', 'Bologna'),
-    ('BZ', 'Bolzano/Bozen'),
-    ('BS', 'Brescia'),
-    ('BR', 'Brindisi'),
-    ('CA', 'Cagliari'),
-    ('CL', 'Caltanissetta'),
-    ('CB', 'Campobasso'),
-    ('CI', 'Carbonia-Iglesias'),
-    ('CE', 'Caserta'),
-    ('CT', 'Catania'),
-    ('CZ', 'Catanzaro'),
-    ('CH', 'Chieti'),
-    ('CO', 'Como'),
-    ('CS', 'Cosenza'),
-    ('CR', 'Cremona'),
-    ('KR', 'Crotone'),
-    ('CN', 'Cuneo'),
-    ('EN', 'Enna'),
-#    ('FM', 'Fermo'), # active starting from 2009
-    ('FE', 'Ferrara'),
-    ('FI', 'Firenze'),
-    ('FG', 'Foggia'),
-    ('FC', 'Forlì-Cesena'),
-    ('FR', 'Frosinone'),
-    ('GE', 'Genova'),
-    ('GO', 'Gorizia'),
-    ('GR', 'Grosseto'),
-    ('IM', 'Imperia'),
-    ('IS', 'Isernia'),
-    ('SP', 'La Spezia'),
-    ('AQ', u'L’Aquila'),
-    ('LT', 'Latina'),
-    ('LE', 'Lecce'),
-    ('LC', 'Lecco'),
-    ('LI', 'Livorno'),
-    ('LO', 'Lodi'),
-    ('LU', 'Lucca'),
-    ('MC', 'Macerata'),
-    ('MN', 'Mantova'),
-    ('MS', 'Massa-Carrara'),
-    ('MT', 'Matera'),
-    ('VS', 'Medio Campidano'),
-    ('ME', 'Messina'),
-    ('MI', 'Milano'),
-    ('MO', 'Modena'),
-#    ('MB', 'Monza e Brianza'), # active starting from 2009
-    ('NA', 'Napoli'),
-    ('NO', 'Novara'),
-    ('NU', 'Nuoro'),
-    ('OG', 'Ogliastra'),
-    ('OT', 'Olbia-Tempio'),
-    ('OR', 'Oristano'),
-    ('PD', 'Padova'),
-    ('PA', 'Palermo'),
-    ('PR', 'Parma'),
-    ('PV', 'Pavia'),
-    ('PG', 'Perugia'),
-    ('PU', 'Pesaro e Urbino'),
-    ('PE', 'Pescara'),
-    ('PC', 'Piacenza'),
-    ('PI', 'Pisa'),
-    ('PT', 'Pistoia'),
-    ('PN', 'Pordenone'),
-    ('PZ', 'Potenza'),
-    ('PO', 'Prato'),
-    ('RG', 'Ragusa'),
-    ('RA', 'Ravenna'),
-    ('RC', 'Reggio Calabria'),
-    ('RE', 'Reggio Emilia'),
-    ('RI', 'Rieti'),
-    ('RN', 'Rimini'),
-    ('RM', 'Roma'),
-    ('RO', 'Rovigo'),
-    ('SA', 'Salerno'),
-    ('SS', 'Sassari'),
-    ('SV', 'Savona'),
-    ('SI', 'Siena'),
-    ('SR', 'Siracusa'),
-    ('SO', 'Sondrio'),
-    ('TA', 'Taranto'),
-    ('TE', 'Teramo'),
-    ('TR', 'Terni'),
-    ('TO', 'Torino'),
-    ('TP', 'Trapani'),
-    ('TN', 'Trento'),
-    ('TV', 'Treviso'),
-    ('TS', 'Trieste'),
-    ('UD', 'Udine'),
-    ('VA', 'Varese'),
-    ('VE', 'Venezia'),
-    ('VB', 'Verbano Cusio Ossola'),
-    ('VC', 'Vercelli'),
-    ('VR', 'Verona'),
-    ('VV', 'Vibo Valentia'),
-    ('VI', 'Vicenza'),
-    ('VT', 'Viterbo'),
-)
diff --git a/webapp/django/contrib/localflavor/it/it_region.py b/webapp/django/contrib/localflavor/it/it_region.py
deleted file mode 100644
index 0700b46..0000000
--- a/webapp/django/contrib/localflavor/it/it_region.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*
-
-REGION_CHOICES = (
-    ('ABR', 'Abruzzo'),
-    ('BAS', 'Basilicata'),
-    ('CAL', 'Calabria'),
-    ('CAM', 'Campania'),
-    ('EMR', 'Emilia-Romagna'),
-    ('FVG', 'Friuli-Venezia Giulia'),
-    ('LAZ', 'Lazio'),
-    ('LIG', 'Liguria'),
-    ('LOM', 'Lombardia'),
-    ('MAR', 'Marche'),
-    ('MOL', 'Molise'),
-    ('PMN', 'Piemonte'),
-    ('PUG', 'Puglia'),
-    ('SAR', 'Sardegna'),
-    ('SIC', 'Sicilia'),
-    ('TOS', 'Toscana'),
-    ('TAA', 'Trentino-Alto Adige'),
-    ('UMB', 'Umbria'),
-    ('VAO', u'Valle d’Aosta'),
-    ('VEN', 'Veneto'),
-)
diff --git a/webapp/django/contrib/localflavor/it/util.py b/webapp/django/contrib/localflavor/it/util.py
deleted file mode 100644
index c162ff7..0000000
--- a/webapp/django/contrib/localflavor/it/util.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from django.utils.encoding import smart_str, smart_unicode
-
-def ssn_check_digit(value):
-    "Calculate Italian social security number check digit."
-    ssn_even_chars = {
-        '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8,
-        '9': 9, 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7,
-        'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15,
-        'Q': 16, 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23,
-        'Y': 24, 'Z': 25
-    }
-    ssn_odd_chars = {
-        '0': 1, '1': 0, '2': 5, '3': 7, '4': 9, '5': 13, '6': 15, '7': 17, '8':
-        19, '9': 21, 'A': 1, 'B': 0, 'C': 5, 'D': 7, 'E': 9, 'F': 13, 'G': 15,
-        'H': 17, 'I': 19, 'J': 21, 'K': 2, 'L': 4, 'M': 18, 'N': 20, 'O': 11,
-        'P': 3, 'Q': 6, 'R': 8, 'S': 12, 'T': 14, 'U': 16, 'V': 10, 'W': 22,
-        'X': 25, 'Y': 24, 'Z': 23
-    }
-    # Chars from 'A' to 'Z'
-    ssn_check_digits = [chr(x) for x in range(65, 91)]
-
-    ssn = value.upper()
-    total = 0
-    for i in range(0, 15):
-        try:
-            if i % 2 == 0:
-                total += ssn_odd_chars[ssn[i]]
-            else:
-                total += ssn_even_chars[ssn[i]]
-        except KeyError:
-            msg = "Character '%(char)s' is not allowed." % {'char': ssn[i]}
-            raise ValueError(msg)
-    return ssn_check_digits[total % 26]
-
-def vat_number_check_digit(vat_number):
-    "Calculate Italian VAT number check digit."
-    normalized_vat_number = smart_str(vat_number).zfill(10)
-    total = 0
-    for i in range(0, 10, 2):
-        total += int(normalized_vat_number[i])
-    for i in range(1, 11, 2):
-        quotient , remainder = divmod(int(normalized_vat_number[i]) * 2, 10)
-        total += quotient + remainder
-    return smart_unicode((10 - total % 10) % 10)
diff --git a/webapp/django/contrib/localflavor/jp/__init__.py b/webapp/django/contrib/localflavor/jp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/jp/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/jp/forms.py b/webapp/django/contrib/localflavor/jp/forms.py
deleted file mode 100644
index c86dbaf..0000000
--- a/webapp/django/contrib/localflavor/jp/forms.py
+++ /dev/null
@@ -1,38 +0,0 @@
-"""
-JP-specific Form helpers
-"""
-
-from django.core import validators
-from django.forms import ValidationError
-from django.utils.translation import ugettext_lazy as _
-from django.forms.fields import RegexField, Select
-
-class JPPostalCodeField(RegexField):
-    """
-    A form field that validates its input is a Japanese postcode.
-
-    Accepts 7 digits, with or without a hyphen.
-    """
-    default_error_messages = {
-        'invalid': _('Enter a postal code in the format XXXXXXX or XXX-XXXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(JPPostalCodeField, self).__init__(r'^\d{3}-\d{4}$|^\d{7}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Validates the input and returns a string that contains only numbers.
-        Returns an empty string for empty values.
-        """
-        v = super(JPPostalCodeField, self).clean(value)
-        return v.replace('-', '')
-
-class JPPrefectureSelect(Select):
-    """
-    A Select widget that uses a list of Japanese prefectures as its choices.
-    """
-    def __init__(self, attrs=None):
-        from jp_prefectures import JP_PREFECTURES
-        super(JPPrefectureSelect, self).__init__(attrs, choices=JP_PREFECTURES)
diff --git a/webapp/django/contrib/localflavor/jp/jp_prefectures.py b/webapp/django/contrib/localflavor/jp/jp_prefectures.py
deleted file mode 100644
index f079fe6..0000000
--- a/webapp/django/contrib/localflavor/jp/jp_prefectures.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from django.utils.translation import ugettext_lazy
-
-JP_PREFECTURES = (
-    ('hokkaido', ugettext_lazy('Hokkaido'),),
-    ('aomori', ugettext_lazy('Aomori'),),
-    ('iwate', ugettext_lazy('Iwate'),),
-    ('miyagi', ugettext_lazy('Miyagi'),),
-    ('akita', ugettext_lazy('Akita'),),
-    ('yamagata', ugettext_lazy('Yamagata'),),
-    ('fukushima', ugettext_lazy('Fukushima'),),
-    ('ibaraki', ugettext_lazy('Ibaraki'),),
-    ('tochigi', ugettext_lazy('Tochigi'),),
-    ('gunma', ugettext_lazy('Gunma'),),
-    ('saitama', ugettext_lazy('Saitama'),),
-    ('chiba', ugettext_lazy('Chiba'),),
-    ('tokyo', ugettext_lazy('Tokyo'),),
-    ('kanagawa', ugettext_lazy('Kanagawa'),),
-    ('yamanashi', ugettext_lazy('Yamanashi'),),
-    ('nagano', ugettext_lazy('Nagano'),),
-    ('niigata', ugettext_lazy('Niigata'),),
-    ('toyama', ugettext_lazy('Toyama'),),
-    ('ishikawa', ugettext_lazy('Ishikawa'),),
-    ('fukui', ugettext_lazy('Fukui'),),
-    ('gifu', ugettext_lazy('Gifu'),),
-    ('shizuoka', ugettext_lazy('Shizuoka'),),
-    ('aichi', ugettext_lazy('Aichi'),),
-    ('mie', ugettext_lazy('Mie'),),
-    ('shiga', ugettext_lazy('Shiga'),),
-    ('kyoto', ugettext_lazy('Kyoto'),),
-    ('osaka', ugettext_lazy('Osaka'),),
-    ('hyogo', ugettext_lazy('Hyogo'),),
-    ('nara', ugettext_lazy('Nara'),),
-    ('wakayama', ugettext_lazy('Wakayama'),),
-    ('tottori', ugettext_lazy('Tottori'),),
-    ('shimane', ugettext_lazy('Shimane'),),
-    ('okayama', ugettext_lazy('Okayama'),),
-    ('hiroshima', ugettext_lazy('Hiroshima'),),
-    ('yamaguchi', ugettext_lazy('Yamaguchi'),),
-    ('tokushima', ugettext_lazy('Tokushima'),),
-    ('kagawa', ugettext_lazy('Kagawa'),),
-    ('ehime', ugettext_lazy('Ehime'),),
-    ('kochi', ugettext_lazy('Kochi'),),
-    ('fukuoka', ugettext_lazy('Fukuoka'),),
-    ('saga', ugettext_lazy('Saga'),),
-    ('nagasaki', ugettext_lazy('Nagasaki'),),
-    ('kumamoto', ugettext_lazy('Kumamoto'),),
-    ('oita', ugettext_lazy('Oita'),),
-    ('miyazaki', ugettext_lazy('Miyazaki'),),
-    ('kagoshima', ugettext_lazy('Kagoshima'),),
-    ('okinawa', ugettext_lazy('Okinawa'),),
-)
diff --git a/webapp/django/contrib/localflavor/mx/__init__.py b/webapp/django/contrib/localflavor/mx/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/mx/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/mx/forms.py b/webapp/django/contrib/localflavor/mx/forms.py
deleted file mode 100644
index 9581937..0000000
--- a/webapp/django/contrib/localflavor/mx/forms.py
+++ /dev/null
@@ -1,14 +0,0 @@
-"""
-Mexican-specific form helpers.
-"""
-
-from django.forms.fields import Select
-
-class MXStateSelect(Select):
-    """
-    A Select widget that uses a list of Mexican states as its choices.
-    """
-    def __init__(self, attrs=None):
-        from mx_states import STATE_CHOICES
-        super(MXStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
-
diff --git a/webapp/django/contrib/localflavor/mx/mx_states.py b/webapp/django/contrib/localflavor/mx/mx_states.py
deleted file mode 100644
index eed1700..0000000
--- a/webapp/django/contrib/localflavor/mx/mx_states.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-A list of Mexican states for use as `choices` in a formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-from django.utils.translation import ugettext_lazy as _
-
-STATE_CHOICES = (
-    ('AGU', _(u'Aguascalientes')),
-    ('BCN', _(u'Baja California')),
-    ('BCS', _(u'Baja California Sur')),
-    ('CAM', _(u'Campeche')),
-    ('CHH', _(u'Chihuahua')),
-    ('CHP', _(u'Chiapas')),
-    ('COA', _(u'Coahuila')),
-    ('COL', _(u'Colima')),
-    ('DIF', _(u'Distrito Federal')),
-    ('DUR', _(u'Durango')),
-    ('GRO', _(u'Guerrero')),
-    ('GUA', _(u'Guanajuato')),
-    ('HID', _(u'Hidalgo')),
-    ('JAL', _(u'Jalisco')),
-    ('MEX', _(u'Estado de México')),
-    ('MIC', _(u'Michoacán')),
-    ('MOR', _(u'Morelos')),
-    ('NAY', _(u'Nayarit')),
-    ('NLE', _(u'Nuevo León')),
-    ('OAX', _(u'Oaxaca')),
-    ('PUE', _(u'Puebla')),
-    ('QUE', _(u'Querétaro')),
-    ('ROO', _(u'Quintana Roo')),
-    ('SIN', _(u'Sinaloa')),
-    ('SLP', _(u'San Luis Potosí')),
-    ('SON', _(u'Sonora')),
-    ('TAB', _(u'Tabasco')),
-    ('TAM', _(u'Tamaulipas')),
-    ('TLA', _(u'Tlaxcala')),
-    ('VER', _(u'Veracruz')),
-    ('YUC', _(u'Yucatán')),
-    ('ZAC', _(u'Zacatecas')),
-)
-
diff --git a/webapp/django/contrib/localflavor/nl/__init__.py b/webapp/django/contrib/localflavor/nl/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/nl/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/nl/forms.py b/webapp/django/contrib/localflavor/nl/forms.py
deleted file mode 100644
index 6dc5319..0000000
--- a/webapp/django/contrib/localflavor/nl/forms.py
+++ /dev/null
@@ -1,100 +0,0 @@
-"""
-NL-specific Form helpers
-"""
-
-import re
-
-from django.forms import ValidationError
-from django.forms.fields import Field, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode
-
-pc_re = re.compile('^\d{4}[A-Z]{2}$')
-sofi_re = re.compile('^\d{9}$')
-numeric_re = re.compile('^\d+$')
-
-class NLZipCodeField(Field):
-    """
-    A Dutch postal code field.
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid postal code'),
-    }
-
-    def clean(self, value):
-        super(NLZipCodeField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-
-        value = value.strip().upper().replace(' ', '')
-        if not pc_re.search(value):
-            raise ValidationError(self.error_messages['invalid'])
-
-        if int(value[:4]) < 1000:
-            raise ValidationError(self.error_messages['invalid'])
-
-        return u'%s %s' % (value[:4], value[4:])
-
-class NLProvinceSelect(Select):
-    """
-    A Select widget that uses a list of provinces of the Netherlands as its
-    choices.
-    """
-    def __init__(self, attrs=None):
-        from nl_provinces import PROVINCE_CHOICES
-        super(NLProvinceSelect, self).__init__(attrs, choices=PROVINCE_CHOICES)
-
-class NLPhoneNumberField(Field):
-    """
-    A Dutch telephone number field.
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid phone number'),
-    }
-
-    def clean(self, value):
-        super(NLPhoneNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-
-        phone_nr = re.sub('[\-\s\(\)]', '', smart_unicode(value))
-
-        if len(phone_nr) == 10 and numeric_re.search(phone_nr):
-            return value
-
-        if phone_nr[:3] == '+31' and len(phone_nr) == 12 and \
-           numeric_re.search(phone_nr[3:]):
-            return value
-
-        raise ValidationError(self.error_messages['invalid'])
-
-class NLSoFiNumberField(Field):
-    """
-    A Dutch social security number (SoFi/BSN) field.
-
-    http://nl.wikipedia.org/wiki/Sofinummer
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid SoFi number'),
-    }
-
-    def clean(self, value):
-        super(NLSoFiNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-
-        if not sofi_re.search(value):
-            raise ValidationError(self.error_messages['invalid'])
-
-        if int(value) == 0:
-            raise ValidationError(self.error_messages['invalid'])
-
-        checksum = 0
-        for i in range(9, 1, -1):
-            checksum += int(value[9-i]) * i
-        checksum -= int(value[-1])
-
-        if checksum % 11 != 0:
-            raise ValidationError(self.error_messages['invalid'])
-
-        return value
diff --git a/webapp/django/contrib/localflavor/nl/nl_provinces.py b/webapp/django/contrib/localflavor/nl/nl_provinces.py
deleted file mode 100644
index 602917d..0000000
--- a/webapp/django/contrib/localflavor/nl/nl_provinces.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.utils.translation import ugettext_lazy as _
-
-PROVINCE_CHOICES = (
-    ('DR', _('Drenthe')),
-    ('FL', _('Flevoland')),
-    ('FR', _('Friesland')),
-    ('GL', _('Gelderland')),
-    ('GR', _('Groningen')),
-    ('LB', _('Limburg')),
-    ('NB', _('Noord-Brabant')),
-    ('NH', _('Noord-Holland')),
-    ('OV', _('Overijssel')),
-    ('UT', _('Utrecht')),
-    ('ZE', _('Zeeland')),
-    ('ZH', _('Zuid-Holland')),
-)
diff --git a/webapp/django/contrib/localflavor/no/__init__.py b/webapp/django/contrib/localflavor/no/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/no/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/no/forms.py b/webapp/django/contrib/localflavor/no/forms.py
deleted file mode 100644
index 0fe55ad..0000000
--- a/webapp/django/contrib/localflavor/no/forms.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""
-Norwegian-specific Form helpers
-"""
-
-import re, datetime
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-
-class NOZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(NOZipCodeField, self).__init__(r'^\d{4}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class NOMunicipalitySelect(Select):
-    """
-    A Select widget that uses a list of Norwegian municipalities (fylker)
-    as its choices.
-    """
-    def __init__(self, attrs=None):
-        from no_municipalities import MUNICIPALITY_CHOICES
-        super(NOMunicipalitySelect, self).__init__(attrs, choices=MUNICIPALITY_CHOICES)
-
-class NOSocialSecurityNumber(Field):
-    """
-    Algorithm is documented at http://no.wikipedia.org/wiki/Personnummer
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a valid Norwegian social security number.'),
-    }
-
-    def clean(self, value):
-        super(NOSocialSecurityNumber, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-
-        if not re.match(r'^\d{11}$', value):
-            raise ValidationError(self.error_messages['invalid'])
-
-        day = int(value[:2])
-        month = int(value[2:4])
-        year2 = int(value[4:6])
-
-        inum = int(value[6:9])
-        self.birthday = None
-        try:
-            if 000 <= inum < 500:
-                self.birthday = datetime.date(1900+year2, month, day)
-            if 500 <= inum < 750 and year2 > 54:
-                self.birthday = datetime.date(1800+year2, month, day)
-            if 500 <= inum < 1000 and year2 < 40:
-                self.birthday = datetime.date(2000+year2, month, day)
-            if 900 <= inum < 1000 and year2 > 39:
-                self.birthday = datetime.date(1900+year2, month, day)
-        except ValueError:
-            raise ValidationError(self.error_messages['invalid'])
-
-        sexnum = int(value[8])
-        if sexnum % 2 == 0:
-            self.gender = 'F'
-        else:
-            self.gender = 'M'
-
-        digits = map(int, list(value))
-        weight_1 = [3, 7, 6, 1, 8, 9, 4, 5, 2, 1, 0]
-        weight_2 = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2, 1]
-
-        def multiply_reduce(aval, bval):
-            return sum([(a * b) for (a, b) in zip(aval, bval)])
-
-        if multiply_reduce(digits, weight_1) % 11 != 0:
-            raise ValidationError(self.error_messages['invalid'])
-        if multiply_reduce(digits, weight_2) % 11 != 0:
-            raise ValidationError(self.error_messages['invalid'])
-
-        return value
-
diff --git a/webapp/django/contrib/localflavor/no/no_municipalities.py b/webapp/django/contrib/localflavor/no/no_municipalities.py
deleted file mode 100644
index d6bacda..0000000
--- a/webapp/django/contrib/localflavor/no/no_municipalities.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-An alphabetical list of Norwegian municipalities (fylker) fro use as `choices`
-in a formfield.
-
-This exists in this standalone file so that it's on ly imported into memory
-when explicitly needed.
-"""
-
-MUNICIPALITY_CHOICES = (
-    ('akershus', u'Akershus'),
-    ('austagder', u'Aust-Agder'),
-    ('buskerud', u'Buskerud'),
-    ('finnmark', u'Finnmark'),
-    ('hedmark', u'Hedmark'),
-    ('hordaland', u'Hordaland'),
-    ('janmayen', u'Jan Mayen'),
-    ('moreogromsdal', u'Møre og Romsdal'),
-    ('nordtrondelag', u'Nord-Trøndelag'),
-    ('nordland', u'Nordland'),
-    ('oppland', u'Oppland'),
-    ('oslo', u'Oslo'),
-    ('rogaland', u'Rogaland'),
-    ('sognogfjordane', u'Sogn og Fjordane'),
-    ('svalbard', u'Svalbard'),
-    ('sortrondelag', u'Sør-Trøndelag'),
-    ('telemark', u'Telemark'),
-    ('troms', u'Troms'),
-    ('vestagder', u'Vest-Agder'),
-    ('vestfold', u'Vestfold'),
-    ('ostfold', u'Østfold')
-)
diff --git a/webapp/django/contrib/localflavor/pe/__init__.py b/webapp/django/contrib/localflavor/pe/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/pe/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/pe/forms.py b/webapp/django/contrib/localflavor/pe/forms.py
deleted file mode 100644
index d83a222..0000000
--- a/webapp/django/contrib/localflavor/pe/forms.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-PE-specific Form helpers.
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import RegexField, CharField, Select, EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-
-class PERegionSelect(Select):
-    """
-    A Select widget that uses a list of Peruvian Regions as its choices.
-    """
-    def __init__(self, attrs=None):
-        from pe_region import REGION_CHOICES
-        super(PERegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
-
-class PEDNIField(CharField):
-    """
-    A field that validates `Documento Nacional de IdentidadŽ (DNI) numbers.
-    """
-    default_error_messages = {
-        'invalid': _("This field requires only numbers."),
-        'max_digits': _("This field requires 8 digits."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(PEDNIField, self).__init__(max_length=8, min_length=8, *args,
-                **kwargs)
-
-    def clean(self, value):
-        """
-        Value must be a string in the XXXXXXXX formats.
-        """
-        value = super(PEDNIField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        if not value.isdigit():
-            raise ValidationError(self.error_messages['invalid'])
-        if len(value) != 8:
-            raise ValidationError(self.error_messages['max_digits'])
-
-        return value
-
-class PERUCField(RegexField):
-    """
-    This field validates a RUC (Registro Unico de Contribuyentes). A RUC is of
-    the form XXXXXXXXXXX.
-    """
-    default_error_messages = {
-        'invalid': _("This field requires only numbers."),
-        'max_digits': _("This field requires 11 digits."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(PERUCField, self).__init__(max_length=11, min_length=11, *args,
-            **kwargs)
-
-    def clean(self, value):
-        """
-        Value must be an 11-digit number.
-        """
-        value = super(PERUCField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        if not value.isdigit():
-            raise ValidationError(self.error_messages['invalid'])
-        if len(value) != 11:
-            raise ValidationError(self.error_messages['max_digits'])
-        return value
-
diff --git a/webapp/django/contrib/localflavor/pe/pe_region.py b/webapp/django/contrib/localflavor/pe/pe_region.py
deleted file mode 100644
index 9863bd3..0000000
--- a/webapp/django/contrib/localflavor/pe/pe_region.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-A list of Peru regions as `choices` in a formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-REGION_CHOICES = (
-    ('AMA', u'Amazonas'),
-    ('ANC', u'Ancash'),
-    ('APU', u'Apurímac'),
-    ('ARE', u'Arequipa'),
-    ('AYA', u'Ayacucho'),
-    ('CAJ', u'Cajamarca'),
-    ('CAL', u'Callao'),
-    ('CUS', u'Cusco'),
-    ('HUV', u'Huancavelica'),
-    ('HUC', u'Huánuco'),
-    ('ICA', u'Ica'),
-    ('JUN', u'Junín'),
-    ('LAL', u'La Libertad'),
-    ('LAM', u'Lambayeque'),
-    ('LIM', u'Lima'),
-    ('LOR', u'Loreto'),
-    ('MDD', u'Madre de Dios'),
-    ('MOQ', u'Moquegua'),
-    ('PAS', u'Pasco'),
-    ('PIU', u'Piura'),
-    ('PUN', u'Puno'),
-    ('SAM', u'San Martín'),
-    ('TAC', u'Tacna'),
-    ('TUM', u'Tumbes'),
-    ('UCA', u'Ucayali'),
-)
diff --git a/webapp/django/contrib/localflavor/pl/__init__.py b/webapp/django/contrib/localflavor/pl/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/pl/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/pl/forms.py b/webapp/django/contrib/localflavor/pl/forms.py
deleted file mode 100644
index 5532eb8..0000000
--- a/webapp/django/contrib/localflavor/pl/forms.py
+++ /dev/null
@@ -1,160 +0,0 @@
-"""
-Polish-specific form helpers
-"""
-
-import re
-
-from django.forms import ValidationError
-from django.forms.fields import Select, RegexField
-from django.utils.translation import ugettext_lazy as _
-
-class PLProvinceSelect(Select):
-    """
-    A select widget with list of Polish administrative provinces as choices.
-    """
-    def __init__(self, attrs=None):
-        from pl_voivodeships import VOIVODESHIP_CHOICES
-        super(PLProvinceSelect, self).__init__(attrs, choices=VOIVODESHIP_CHOICES)
-
-class PLCountiesSelect(Select):
-    """
-    A select widget with list of Polish administrative units as choices.
-    """
-    def __init__(self, attrs=None):
-        from pl_administrativeunits import ADMINISTRATIVE_UNIT_CHOICES
-        super(PLCountiesSelect, self).__init__(attrs, choices=ADMINISTRATIVE_UNIT_CHOICES)
-
-class PLPESELField(RegexField):
-    """
-    A form field that validates as Polish Identification Number (PESEL).
-
-    Checks the following rules:
-        * the length consist of 11 digits
-        * has a valid checksum
-
-    The algorithm is documented at http://en.wikipedia.org/wiki/PESEL.
-    """
-    default_error_messages = {
-        'invalid': _(u'National Identification Number consists of 11 digits.'),
-        'checksum': _(u'Wrong checksum for the National Identification Number.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(PLPESELField, self).__init__(r'^\d{11}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-    def clean(self,value):
-        super(PLPESELField, self).clean(value)
-        if not self.has_valid_checksum(value):
-            raise ValidationError(self.error_messages['checksum'])
-        return u'%s' % value
-
-    def has_valid_checksum(self, number):
-        """
-        Calculates a checksum with the provided algorithm.
-        """
-        multiple_table = (1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1)
-        result = 0
-        for i in range(len(number)):
-            result += int(number[i]) * multiple_table[i]
-        return result % 10 == 0
-
-class PLNIPField(RegexField):
-    """
-    A form field that validates as Polish Tax Number (NIP).
-    Valid forms are: XXX-XXX-YY-YY or XX-XX-YYY-YYY.
-
-    Checksum algorithm based on documentation at
-    http://wipos.p.lodz.pl/zylla/ut/nip-rego.html
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX.'),
-        'checksum': _(u'Wrong checksum for the Tax Number (NIP).'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(PLNIPField, self).__init__(r'^\d{3}-\d{3}-\d{2}-\d{2}$|^\d{2}-\d{2}-\d{3}-\d{3}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-    def clean(self,value):
-        super(PLNIPField, self).clean(value)
-        value = re.sub("[-]", "", value)
-        if not self.has_valid_checksum(value):
-            raise ValidationError(self.error_messages['checksum'])
-        return u'%s' % value
-
-    def has_valid_checksum(self, number):
-        """
-        Calculates a checksum with the provided algorithm.
-        """
-        multiple_table = (6, 5, 7, 2, 3, 4, 5, 6, 7)
-        result = 0
-        for i in range(len(number)-1):
-            result += int(number[i]) * multiple_table[i]
-
-        result %= 11
-        if result == int(number[-1]):
-            return True
-        else:
-            return False
-
-class PLREGONField(RegexField):
-    """
-    A form field that validated as Polish National Official Business Register
-    Number (REGON). Valid numbers contain 7 or 9 digits.
-
-    More on the field: http://www.stat.gov.pl/bip/regon_ENG_HTML.htm
-
-    The checksum algorithm is documented at http://wipos.p.lodz.pl/zylla/ut/nip-rego.html
-    """
-    default_error_messages = {
-        'invalid': _(u'National Business Register Number (REGON) consists of 7 or 9 digits.'),
-        'checksum': _(u'Wrong checksum for the National Business Register Number (REGON).'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(PLREGONField, self).__init__(r'^\d{7,9}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-    def clean(self,value):
-        super(PLREGONField, self).clean(value)
-        if not self.has_valid_checksum(value):
-            raise ValidationError(self.error_messages['checksum'])
-        return u'%s' % value
-
-    def has_valid_checksum(self, number):
-        """
-        Calculates a checksum with the provided algorithm.
-        """
-        multiple_table_7 = (2, 3, 4, 5, 6, 7)
-        multiple_table_9 = (8, 9, 2, 3, 4, 5, 6, 7)
-        result = 0
-
-        if len(number) == 7:
-            multiple_table = multiple_table_7
-        else:
-            multiple_table = multiple_table_9
-
-        for i in range(len(number)-1):
-            result += int(number[i]) * multiple_table[i]
-
-        result %= 11
-        if result == 10:
-            result = 0
-        if result  == int(number[-1]):
-            return True
-        else:
-            return False
-
-class PLPostalCodeField(RegexField):
-    """
-    A form field that validates as Polish postal code.
-    Valid code is XX-XXX where X is digit.
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a postal code in the format XX-XXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(PLPostalCodeField, self).__init__(r'^\d{2}-\d{3}$',
-            max_length=None, min_length=None, *args, **kwargs)
diff --git a/webapp/django/contrib/localflavor/pl/pl_administrativeunits.py b/webapp/django/contrib/localflavor/pl/pl_administrativeunits.py
deleted file mode 100644
index 9777ea2..0000000
--- a/webapp/django/contrib/localflavor/pl/pl_administrativeunits.py
+++ /dev/null
@@ -1,385 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Polish administrative units as in http://pl.wikipedia.org/wiki/Podzia%C5%82_administracyjny_Polski
-"""
-
-
-ADMINISTRATIVE_UNIT_CHOICES = (
-    ('wroclaw', u'Wrocław'),
-    ('jeleniagora', u'Jelenia Góra'),
-    ('legnica', u'Legnica'),
-    ('boleslawiecki', u'bolesławiecki'),
-    ('dzierzoniowski', u'dzierżoniowski'),
-    ('glogowski', u'głogowski'),
-    ('gorowski', u'górowski'),
-    ('jaworski', u'jaworski'),
-    ('jeleniogorski', u'jeleniogórski'),
-    ('kamiennogorski', u'kamiennogórski'),
-    ('klodzki', u'kłodzki'),
-    ('legnicki', u'legnicki'),
-    ('lubanski', u'lubański'),
-    ('lubinski', u'lubiński'),
-    ('lwowecki', u'lwówecki'),
-    ('milicki', u'milicki'),
-    ('olesnicki', u'oleśnicki'),
-    ('olawski', u'oławski'),
-    ('polkowicki', u'polkowicki'),
-    ('strzelinski', u'strzeliński'),
-    ('sredzki', u'średzki'),
-    ('swidnicki', u'świdnicki'),
-    ('trzebnicki', u'trzebnicki'),
-    ('walbrzyski', u'wałbrzyski'),
-    ('wolowski', u'wołowski'),
-    ('wroclawski', u'wrocławski'),
-    ('zabkowicki', u'ząbkowicki'),
-    ('zgorzelecki', u'zgorzelecki'),
-    ('zlotoryjski', u'złotoryjski'),
-    ('bydgoszcz', u'Bydgoszcz'),
-    ('torun', u'Toruń'),
-    ('wloclawek', u'Włocławek'),
-    ('grudziadz', u'Grudziądz'),
-    ('aleksandrowski', u'aleksandrowski'),
-    ('brodnicki', u'brodnicki'),
-    ('bydgoski', u'bydgoski'),
-    ('chelminski', u'chełmiński'),
-    ('golubsko-dobrzynski', u'golubsko-dobrzyński'),
-    ('grudziadzki', u'grudziądzki'),
-    ('inowroclawski', u'inowrocławski'),
-    ('lipnowski', u'lipnowski'),
-    ('mogilenski', u'mogileński'),
-    ('nakielski', u'nakielski'),
-    ('radziejowski', u'radziejowski'),
-    ('rypinski', u'rypiński'),
-    ('sepolenski', u'sępoleński'),
-    ('swiecki', u'świecki'),
-    ('torunski', u'toruński'),
-    ('tucholski', u'tucholski'),
-    ('wabrzeski', u'wąbrzeski'),
-    ('wloclawski', u'wrocławski'),
-    ('zninski', u'źniński'),
-    ('lublin', u'Lublin'),
-    ('biala-podlaska', u'Biała Podlaska'),
-    ('chelm', u'Chełm'),
-    ('zamosc', u'Zamość'),
-    ('bialski', u'bialski'),
-    ('bilgorajski', u'biłgorajski'),
-    ('chelmski', u'chełmski'),
-    ('hrubieszowski', u'hrubieszowski'),
-    ('janowski', u'janowski'),
-    ('krasnostawski', u'krasnostawski'),
-    ('krasnicki', u'kraśnicki'),
-    ('lubartowski', u'lubartowski'),
-    ('lubelski', u'lubelski'),
-    ('leczynski', u'łęczyński'),
-    ('lukowski', u'łukowski'),
-    ('opolski', u'opolski'),
-    ('parczewski', u'parczewski'),
-    ('pulawski', u'puławski'),
-    ('radzynski', u'radzyński'),
-    ('rycki', u'rycki'),
-    ('swidnicki', u'świdnicki'),
-    ('tomaszowski', u'tomaszowski'),
-    ('wlodawski', u'włodawski'),
-    ('zamojski', u'zamojski'),
-    ('gorzow-wielkopolski', u'Gorzów Wielkopolski'),
-    ('zielona-gora', u'Zielona Góra'),
-    ('gorzowski', u'gorzowski'),
-    ('krosnienski', u'krośnieński'),
-    ('miedzyrzecki', u'międzyrzecki'),
-    ('nowosolski', u'nowosolski'),
-    ('slubicki', u'słubicki'),
-    ('strzelecko-drezdenecki', u'strzelecko-drezdenecki'),
-    ('sulecinski', u'suleńciński'),
-    ('swiebodzinski', u'świebodziński'),
-    ('wschowski', u'wschowski'),
-    ('zielonogorski', u'zielonogórski'),
-    ('zaganski', u'żagański'),
-    ('zarski', u'żarski'),
-    ('lodz', u'Łódź'),
-    ('piotrkow-trybunalski', u'Piotrków Trybunalski'),
-    ('skierniewice', u'Skierniewice'),
-    ('belchatowski', u'bełchatowski'),
-    ('brzezinski', u'brzeziński'),
-    ('kutnowski', u'kutnowski'),
-    ('laski', u'łaski'),
-    ('leczycki', u'łęczycki'),
-    ('lowicki', u'łowicki'),
-    ('lodzki wschodni', u'łódzki wschodni'),
-    ('opoczynski', u'opoczyński'),
-    ('pabianicki', u'pabianicki'),
-    ('pajeczanski', u'pajęczański'),
-    ('piotrkowski', u'piotrkowski'),
-    ('poddebicki', u'poddębicki'),
-    ('radomszczanski', u'radomszczański'),
-    ('rawski', u'rawski'),
-    ('sieradzki', u'sieradzki'),
-    ('skierniewicki', u'skierniewicki'),
-    ('tomaszowski', u'tomaszowski'),
-    ('wielunski', u'wieluński'),
-    ('wieruszowski', u'wieruszowski'),
-    ('zdunskowolski', u'zduńskowolski'),
-    ('zgierski', u'zgierski'),
-    ('krakow', u'Kraków'),
-    ('tarnow', u'Tarnów'),
-    ('nowy-sacz', u'Nowy Sącz'),
-    ('bochenski', u'bocheński'),
-    ('brzeski', u'brzeski'),
-    ('chrzanowski', u'chrzanowski'),
-    ('dabrowski', u'dąbrowski'),
-    ('gorlicki', u'gorlicki'),
-    ('krakowski', u'krakowski'),
-    ('limanowski', u'limanowski'),
-    ('miechowski', u'miechowski'),
-    ('myslenicki', u'myślenicki'),
-    ('nowosadecki', u'nowosądecki'),
-    ('nowotarski', u'nowotarski'),
-    ('olkuski', u'olkuski'),
-    ('oswiecimski', u'oświęcimski'),
-    ('proszowicki', u'proszowicki'),
-    ('suski', u'suski'),
-    ('tarnowski', u'tarnowski'),
-    ('tatrzanski', u'tatrzański'),
-    ('wadowicki', u'wadowicki'),
-    ('wielicki', u'wielicki'),
-    ('warszawa', u'Warszawa'),
-    ('ostroleka', u'Ostrołęka'),
-    ('plock', u'Płock'),
-    ('radom', u'Radom'),
-    ('siedlce', u'Siedlce'),
-    ('bialobrzeski', u'białobrzeski'),
-    ('ciechanowski', u'ciechanowski'),
-    ('garwolinski', u'garwoliński'),
-    ('gostyninski', u'gostyniński'),
-    ('grodziski', u'grodziski'),
-    ('grojecki', u'grójecki'),
-    ('kozienicki', u'kozenicki'),
-    ('legionowski', u'legionowski'),
-    ('lipski', u'lipski'),
-    ('losicki', u'łosicki'),
-    ('makowski', u'makowski'),
-    ('minski', u'miński'),
-    ('mlawski', u'mławski'),
-    ('nowodworski', u'nowodworski'),
-    ('ostrolecki', u'ostrołęcki'),
-    ('ostrowski', u'ostrowski'),
-    ('otwocki', u'otwocki'),
-    ('piaseczynski', u'piaseczyński'),
-    ('plocki', u'płocki'),
-    ('plonski', u'płoński'),
-    ('pruszkowski', u'pruszkowski'),
-    ('przasnyski', u'przasnyski'),
-    ('przysuski', u'przysuski'),
-    ('pultuski', u'pułtuski'),
-    ('radomski', u'radomski'),
-    ('siedlecki', u'siedlecki'),
-    ('sierpecki', u'sierpecki'),
-    ('sochaczewski', u'sochaczewski'),
-    ('sokolowski', u'sokołowski'),
-    ('szydlowiecki', u'szydłowiecki'),
-    ('warszawski-zachodni', u'warszawski zachodni'),
-    ('wegrowski', u'węgrowski'),
-    ('wolominski', u'wołomiński'),
-    ('wyszkowski', u'wyszkowski'),
-    ('zwolenski', u'zwoleński'),
-    ('zurominski', u'żuromiński'),
-    ('zyrardowski', u'żyrardowski'),
-    ('opole', u'Opole'),
-    ('brzeski', u'brzeski'),
-    ('glubczycki', u'głubczyski'),
-    ('kedzierzynsko-kozielski', u'kędzierzyński-kozielski'),
-    ('kluczborski', u'kluczborski'),
-    ('krapkowicki', u'krapkowicki'),
-    ('namyslowski', u'namysłowski'),
-    ('nyski', u'nyski'),
-    ('oleski', u'oleski'),
-    ('opolski', u'opolski'),
-    ('prudnicki', u'prudnicki'),
-    ('strzelecki', u'strzelecki'),
-    ('rzeszow', u'Rzeszów'),
-    ('krosno', u'Krosno'),
-    ('przemysl', u'Przemyśl'),
-    ('tarnobrzeg', u'Tarnobrzeg'),
-    ('bieszczadzki', u'bieszczadzki'),
-    ('brzozowski', u'brzozowski'),
-    ('debicki', u'dębicki'),
-    ('jaroslawski', u'jarosławski'),
-    ('jasielski', u'jasielski'),
-    ('kolbuszowski', u'kolbuszowski'),
-    ('krosnienski', u'krośnieński'),
-    ('leski', u'leski'),
-    ('lezajski', u'leżajski'),
-    ('lubaczowski', u'lubaczowski'),
-    ('lancucki', u'łańcucki'),
-    ('mielecki', u'mielecki'),
-    ('nizanski', u'niżański'),
-    ('przemyski', u'przemyski'),
-    ('przeworski', u'przeworski'),
-    ('ropczycko-sedziszowski', u'ropczycko-sędziszowski'),
-    ('rzeszowski', u'rzeszowski'),
-    ('sanocki', u'sanocki'),
-    ('stalowowolski', u'stalowowolski'),
-    ('strzyzowski', u'strzyżowski'),
-    ('tarnobrzeski', u'tarnobrzeski'),
-    ('bialystok', u'Białystok'),
-    ('lomza', u'Łomża'),
-    ('suwalki', u'Suwałki'),
-    ('augustowski', u'augustowski'),
-    ('bialostocki', u'białostocki'),
-    ('bielski', u'bielski'),
-    ('grajewski', u'grajewski'),
-    ('hajnowski', u'hajnowski'),
-    ('kolnenski', u'kolneński'),
-    ('łomzynski', u'łomżyński'),
-    ('moniecki', u'moniecki'),
-    ('sejnenski', u'sejneński'),
-    ('siemiatycki', u'siematycki'),
-    ('sokolski', u'sokólski'),
-    ('suwalski', u'suwalski'),
-    ('wysokomazowiecki', u'wysokomazowiecki'),
-    ('zambrowski', u'zambrowski'),
-    ('gdansk', u'Gdańsk'),
-    ('gdynia', u'Gdynia'),
-    ('slupsk', u'Słupsk'),
-    ('sopot', u'Sopot'),
-    ('bytowski', u'bytowski'),
-    ('chojnicki', u'chojnicki'),
-    ('czluchowski', u'człuchowski'),
-    ('kartuski', u'kartuski'),
-    ('koscierski', u'kościerski'),
-    ('kwidzynski', u'kwidzyński'),
-    ('leborski', u'lęborski'),
-    ('malborski', u'malborski'),
-    ('nowodworski', u'nowodworski'),
-    ('gdanski', u'gdański'),
-    ('pucki', u'pucki'),
-    ('slupski', u'słupski'),
-    ('starogardzki', u'starogardzki'),
-    ('sztumski', u'sztumski'),
-    ('tczewski', u'tczewski'),
-    ('wejherowski', u'wejcherowski'),
-    ('katowice', u'Katowice'),
-    ('bielsko-biala', u'Bielsko-Biała'),
-    ('bytom', u'Bytom'),
-    ('chorzow', u'Chorzów'),
-    ('czestochowa', u'Częstochowa'),
-    ('dabrowa-gornicza', u'Dąbrowa Górnicza'),
-    ('gliwice', u'Gliwice'),
-    ('jastrzebie-zdroj', u'Jastrzębie Zdrój'),
-    ('jaworzno', u'Jaworzno'),
-    ('myslowice', u'Mysłowice'),
-    ('piekary-slaskie', u'Piekary Śląskie'),
-    ('ruda-slaska', u'Ruda Śląska'),
-    ('rybnik', u'Rybnik'),
-    ('siemianowice-slaskie', u'Siemianowice Śląskie'),
-    ('sosnowiec', u'Sosnowiec'),
-    ('swietochlowice', u'Świętochłowice'),
-    ('tychy', u'Tychy'),
-    ('zabrze', u'Zabrze'),
-    ('zory', u'Żory'),
-    ('bedzinski', u'będziński'),
-    ('bielski', u'bielski'),
-    ('bierunsko-ledzinski', u'bieruńsko-lędziński'),
-    ('cieszynski', u'cieszyński'),
-    ('czestochowski', u'częstochowski'),
-    ('gliwicki', u'gliwicki'),
-    ('klobucki', u'kłobucki'),
-    ('lubliniecki', u'lubliniecki'),
-    ('mikolowski', u'mikołowski'),
-    ('myszkowski', u'myszkowski'),
-    ('pszczynski', u'pszczyński'),
-    ('raciborski', u'raciborski'),
-    ('rybnicki', u'rybnicki'),
-    ('tarnogorski', u'tarnogórski'),
-    ('wodzislawski', u'wodzisławski'),
-    ('zawiercianski', u'zawierciański'),
-    ('zywiecki', u'żywiecki'),
-    ('kielce', u'Kielce'),
-    ('buski', u'buski'),
-    ('jedrzejowski', u'jędrzejowski'),
-    ('kazimierski', u'kazimierski'),
-    ('kielecki', u'kielecki'),
-    ('konecki', u'konecki'),
-    ('opatowski', u'opatowski'),
-    ('ostrowiecki', u'ostrowiecki'),
-    ('pinczowski', u'pińczowski'),
-    ('sandomierski', u'sandomierski'),
-    ('skarzyski', u'skarżyski'),
-    ('starachowicki', u'starachowicki'),
-    ('staszowski', u'staszowski'),
-    ('wloszczowski', u'włoszczowski'),
-    ('olsztyn', u'Olsztyn'),
-    ('elblag', u'Elbląg'),
-    ('bartoszycki', u'bartoszycki'),
-    ('braniewski', u'braniewski'),
-    ('dzialdowski', u'działdowski'),
-    ('elblaski', u'elbląski'),
-    ('elcki', u'ełcki'),
-    ('gizycki', u'giżycki'),
-    ('goldapski', u'gołdapski'),
-    ('ilawski', u'iławski'),
-    ('ketrzynski', u'kętrzyński'),
-    ('lidzbarski', u'lidzbarski'),
-    ('mragowski', u'mrągowski'),
-    ('nidzicki', u'nidzicki'),
-    ('nowomiejski', u'nowomiejski'),
-    ('olecki', u'olecki'),
-    ('olsztynski', u'olsztyński'),
-    ('ostrodzki', u'ostródzki'),
-    ('piski', u'piski'),
-    ('szczycienski', u'szczycieński'),
-    ('wegorzewski', u'węgorzewski'),
-    ('poznan', u'Poznań'),
-    ('kalisz', u'Kalisz'),
-    ('konin', u'Konin'),
-    ('leszno', u'Leszno'),
-    ('chodzieski', u'chodziejski'),
-    ('czarnkowsko-trzcianecki', u'czarnkowsko-trzcianecki'),
-    ('gnieznienski', u'gnieźnieński'),
-    ('gostynski', u'gostyński'),
-    ('grodziski', u'grodziski'),
-    ('jarocinski', u'jarociński'),
-    ('kaliski', u'kaliski'),
-    ('kepinski', u'kępiński'),
-    ('kolski', u'kolski'),
-    ('koninski', u'koniński'),
-    ('koscianski', u'kościański'),
-    ('krotoszynski', u'krotoszyński'),
-    ('leszczynski', u'leszczyński'),
-    ('miedzychodzki', u'międzychodzki'),
-    ('nowotomyski', u'nowotomyski'),
-    ('obornicki', u'obornicki'),
-    ('ostrowski', u'ostrowski'),
-    ('ostrzeszowski', u'ostrzeszowski'),
-    ('pilski', u'pilski'),
-    ('pleszewski', u'pleszewski'),
-    ('poznanski', u'poznański'),
-    ('rawicki', u'rawicki'),
-    ('slupecki', u'słupecki'),
-    ('szamotulski', u'szamotulski'),
-    ('sredzki', u'średzki'),
-    ('sremski', u'śremski'),
-    ('turecki', u'turecki'),
-    ('wagrowiecki', u'wągrowiecki'),
-    ('wolsztynski', u'wolsztyński'),
-    ('wrzesinski', u'wrzesiński'),
-    ('zlotowski', u'złotowski'),
-    ('bialogardzki', u'białogardzki'),
-    ('choszczenski', u'choszczeński'),
-    ('drawski', u'drawski'),
-    ('goleniowski', u'goleniowski'),
-    ('gryficki', u'gryficki'),
-    ('gryfinski', u'gryfiński'),
-    ('kamienski', u'kamieński'),
-    ('kolobrzeski', u'kołobrzeski'),
-    ('koszalinski', u'koszaliński'),
-    ('lobeski', u'łobeski'),
-    ('mysliborski', u'myśliborski'),
-    ('policki', u'policki'),
-    ('pyrzycki', u'pyrzycki'),
-    ('slawienski', u'sławieński'),
-    ('stargardzki', u'stargardzki'),
-    ('szczecinecki', u'szczecinecki'),
-    ('swidwinski', u'świdwiński'),
-    ('walecki', u'wałecki'),
-)
-
diff --git a/webapp/django/contrib/localflavor/pl/pl_voivodeships.py b/webapp/django/contrib/localflavor/pl/pl_voivodeships.py
deleted file mode 100644
index d8caede..0000000
--- a/webapp/django/contrib/localflavor/pl/pl_voivodeships.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""
-Polish voivodeship as in http://en.wikipedia.org/wiki/Poland#Administrative_division
-"""
-
-from django.utils.translation import ugettext_lazy as _
-
-VOIVODESHIP_CHOICES = (
-    ('lower_silesia', _('Lower Silesia')),
-    ('kuyavia-pomerania', _('Kuyavia-Pomerania')),
-    ('lublin', _('Lublin')),
-    ('lubusz', _('Lubusz')),
-    ('lodz', _('Lodz')),
-    ('lesser_poland', _('Lesser Poland')),
-    ('masovia', _('Masovia')),
-    ('opole', _('Opole')),
-    ('subcarpatia', _('Subcarpatia')),
-    ('podlasie', _('Podlasie')),
-    ('pomerania', _('Pomerania')),
-    ('silesia', _('Silesia')),
-    ('swietokrzyskie', _('Swietokrzyskie')),
-    ('warmia-masuria', _('Warmia-Masuria')),
-    ('greater_poland', _('Greater Poland')),
-    ('west_pomerania', _('West Pomerania')),
-)
diff --git a/webapp/django/contrib/localflavor/ro/__init__.py b/webapp/django/contrib/localflavor/ro/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/ro/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/ro/forms.py b/webapp/django/contrib/localflavor/ro/forms.py
deleted file mode 100644
index ca51d91..0000000
--- a/webapp/django/contrib/localflavor/ro/forms.py
+++ /dev/null
@@ -1,200 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Romanian specific form helpers.
-"""
-
-import re
-
-from django.forms import ValidationError, Field, RegexField, Select
-from django.forms.fields import EMPTY_VALUES
-from django.utils.translation import ugettext_lazy as _
-
-class ROCIFField(RegexField):
-    """
-    A Romanian fiscal identity code (CIF) field
-
-    For CIF validation algorithm see http://www.validari.ro/cui.html
-    """
-    default_error_messages = {
-        'invalid': _("Enter a valid CIF."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ROCIFField, self).__init__(r'^[0-9]{2,10}', max_length=10,
-                min_length=2, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        CIF validation
-        """
-        value = super(ROCIFField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        # strip RO part
-        if value[0:2] == 'RO':
-            value = value[2:]
-        key = '753217532'[::-1]
-        value = value[::-1]
-        key_iter = iter(key)
-        checksum = 0
-        for digit in value[1:]:
-            checksum += int(digit) * int(key_iter.next())
-        checksum = checksum * 10 % 11
-        if checksum == 10:
-            checksum = 0
-        if checksum != int(value[0]):
-            raise ValidationError(self.error_messages['invalid'])
-        return value[::-1]
-
-class ROCNPField(RegexField):
-    """
-    A Romanian personal identity code (CNP) field
-
-    For CNP validation algorithm see http://www.validari.ro/cnp.html
-    """
-    default_error_messages = {
-        'invalid': _("Enter a valid CNP."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ROCNPField, self).__init__(r'^[1-9][0-9]{12}', max_length=13,
-            min_length=13, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        CNP validations
-        """
-        value = super(ROCNPField, self).clean(value)
-        # check birthdate digits
-        import datetime
-        try:
-            datetime.date(int(value[1:3]),int(value[3:5]),int(value[5:7]))
-        except:
-            raise ValidationError(self.error_messages['invalid'])
-        # checksum
-        key = '279146358279'
-        checksum = 0
-        value_iter = iter(value)
-        for digit in key:
-            checksum += int(digit) * int(value_iter.next())
-        checksum %= 11
-        if checksum == 10:
-            checksum = 1
-        if checksum != int(value[12]):
-            raise ValidationError(self.error_messages['invalid'])
-        return value
-
-class ROCountyField(Field):
-    """
-    A form field that validates its input is a Romanian county name or
-    abbreviation. It normalizes the input to the standard vehicle registration
-    abbreviation for the given county
-
-    WARNING: This field will only accept names written with diacritics; consider
-    using ROCountySelect if this behavior is unnaceptable for you
-    Example:
-        Argeş => valid
-        Arges => invalid
-    """
-    default_error_messages = {
-        'invalid': u'Enter a Romanian county code or name.',
-    }
-
-    def clean(self, value):
-        from ro_counties import COUNTIES_CHOICES
-        super(ROCountyField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        try:
-            value = value.strip().upper()
-        except AttributeError:
-            pass
-        # search for county code
-        for entry in COUNTIES_CHOICES:
-            if value in entry:
-                return value
-        # search for county name
-        normalized_CC = []
-        for entry in COUNTIES_CHOICES:
-            normalized_CC.append((entry[0],entry[1].upper()))
-        for entry in normalized_CC:
-            if entry[1] == value:
-                return entry[0]
-        raise ValidationError(self.error_messages['invalid'])
-
-class ROCountySelect(Select):
-    """
-    A Select widget that uses a list of Romanian counties (judete) as its
-    choices.
-    """
-    def __init__(self, attrs=None):
-        from ro_counties import COUNTIES_CHOICES
-        super(ROCountySelect, self).__init__(attrs, choices=COUNTIES_CHOICES)
-
-class ROIBANField(RegexField):
-    """
-    Romanian International Bank Account Number (IBAN) field
-
-    For Romanian IBAN validation algorithm see http://validari.ro/iban.html
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ROIBANField, self).__init__(r'^[0-9A-Za-z\-\s]{24,40}$',
-                max_length=40, min_length=24, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Strips - and spaces, performs country code and checksum validation
-        """
-        value = super(ROIBANField, self).clean(value)
-        value = value.replace('-','')
-        value = value.replace(' ','')
-        value = value.upper()
-        if value[0:2] != 'RO':
-            raise ValidationError(self.error_messages['invalid'])
-        numeric_format = ''
-        for char in value[4:] + value[0:4]:
-            if char.isalpha():
-                numeric_format += str(ord(char) - 55)
-            else:
-                numeric_format += char
-        if int(numeric_format) % 97 != 1:
-            raise ValidationError(self.error_messages['invalid'])
-        return value
-
-class ROPhoneNumberField(RegexField):
-    """Romanian phone number field"""
-    default_error_messages = {
-        'invalid': _('Phone numbers must be in XXXX-XXXXXX format.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ROPhoneNumberField, self).__init__(r'^[0-9\-\(\)\s]{10,20}$',
-                max_length=20, min_length=10, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Strips -, (, ) and spaces. Checks the final length.
-        """
-        value = super(ROPhoneNumberField, self).clean(value)
-        value = value.replace('-','')
-        value = value.replace('(','')
-        value = value.replace(')','')
-        value = value.replace(' ','')
-        if len(value) != 10:
-            raise ValidationError(self.error_messages['invalid'])
-        return value
-
-class ROPostalCodeField(RegexField):
-    """Romanian postal code field."""
-    default_error_messages = {
-        'invalid': _('Enter a valid postal code in the format XXXXXX'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ROPostalCodeField, self).__init__(r'^[0-9][0-8][0-9]{4}$',
-                max_length=6, min_length=6, *args, **kwargs)
-
diff --git a/webapp/django/contrib/localflavor/ro/ro_counties.py b/webapp/django/contrib/localflavor/ro/ro_counties.py
deleted file mode 100644
index 40423dd..0000000
--- a/webapp/django/contrib/localflavor/ro/ro_counties.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-A list of Romanian counties as `choices` in a formfield.
-
-This exists as a standalone file so that it's only imported into memory when
-explicitly needed.
-"""
-
-COUNTIES_CHOICES = (
-    ('AB', u'Alba'),
-    ('AR', u'Arad'),
-    ('AG', u'Argeş'),
-    ('BC', u'Bacău'),
-    ('BH', u'Bihor'),
-    ('BN', u'Bistriţa-Năsăud'),
-    ('BT', u'Botoşani'),
-    ('BV', u'Braşov'),
-    ('BR', u'Brăila'),
-    ('B',  u'Bucureşti'),
-    ('BZ', u'Buzău'),
-    ('CS', u'Caraş-Severin'),
-    ('CL', u'Călăraşi'),
-    ('CJ', u'Cluj'),
-    ('CT', u'Constanţa'),
-    ('CV', u'Covasna'),
-    ('DB', u'Dâmboviţa'),
-    ('DJ', u'Dolj'),
-    ('GL', u'Galaţi'),
-    ('GR', u'Giurgiu'),
-    ('GJ', u'Gorj'),
-    ('HR', u'Harghita'),
-    ('HD', u'Hunedoara'),
-    ('IL', u'Ialomiţa'),
-    ('IS', u'Iaşi'),
-    ('IF', u'Ilfov'),
-    ('MM', u'Maramureş'),
-    ('MH', u'Mehedinţi'),
-    ('MS', u'Mureş'),
-    ('NT', u'Neamţ'),
-    ('OT', u'Olt'),
-    ('PH', u'Prahova'),
-    ('SM', u'Satu Mare'),
-    ('SJ', u'Sălaj'),
-    ('SB', u'Sibiu'),
-    ('SV', u'Suceava'),
-    ('TR', u'Teleorman'),
-    ('TM', u'Timiş'),
-    ('TL', u'Tulcea'),
-    ('VS', u'Vaslui'),
-    ('VL', u'Vâlcea'),
-    ('VN', u'Vrancea'),
-)
diff --git a/webapp/django/contrib/localflavor/sk/__init__.py b/webapp/django/contrib/localflavor/sk/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/sk/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/sk/forms.py b/webapp/django/contrib/localflavor/sk/forms.py
deleted file mode 100644
index 863a612..0000000
--- a/webapp/django/contrib/localflavor/sk/forms.py
+++ /dev/null
@@ -1,43 +0,0 @@
-"""
-Slovak-specific form helpers
-"""
-
-from django.forms.fields import Select, RegexField
-from django.utils.translation import ugettext_lazy as _
-
-class SKRegionSelect(Select):
-    """
-    A select widget widget with list of Slovak regions as choices.
-    """
-    def __init__(self, attrs=None):
-        from sk_regions import REGION_CHOICES
-        super(SKRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
-
-class SKDistrictSelect(Select):
-    """
-    A select widget with list of Slovak districts as choices.
-    """
-    def __init__(self, attrs=None):
-        from sk_districts import DISTRICT_CHOICES
-        super(SKDistrictSelect, self).__init__(attrs, choices=DISTRICT_CHOICES)
-
-class SKPostalCodeField(RegexField):
-    """
-    A form field that validates its input as Slovak postal code.
-    Valid form is XXXXX or XXX XX, where X represents integer.
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a postal code in the format XXXXX or XXX XX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(SKPostalCodeField, self).__init__(r'^\d{5}$|^\d{3} \d{2}$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Validates the input and returns a string that contains only numbers.
-        Returns an empty string for empty values.
-        """
-        v = super(SKPostalCodeField, self).clean(value)
-        return v.replace(' ', '')
diff --git a/webapp/django/contrib/localflavor/sk/sk_districts.py b/webapp/django/contrib/localflavor/sk/sk_districts.py
deleted file mode 100644
index 95e8796..0000000
--- a/webapp/django/contrib/localflavor/sk/sk_districts.py
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
-Slovak districts according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska
-"""
-
-from django.utils.translation import ugettext_lazy as _
-
-DISTRICT_CHOICES = (
-    ('BB', _('Banska Bystrica')),
-    ('BS', _('Banska Stiavnica')),
-    ('BJ', _('Bardejov')),
-    ('BN', _('Banovce nad Bebravou')),
-    ('BR', _('Brezno')),
-    ('BA1', _('Bratislava I')),
-    ('BA2', _('Bratislava II')),
-    ('BA3', _('Bratislava III')),
-    ('BA4', _('Bratislava IV')),
-    ('BA5', _('Bratislava V')),
-    ('BY', _('Bytca')),
-    ('CA', _('Cadca')),
-    ('DT', _('Detva')),
-    ('DK', _('Dolny Kubin')),
-    ('DS', _('Dunajska Streda')),
-    ('GA', _('Galanta')),
-    ('GL', _('Gelnica')),
-    ('HC', _('Hlohovec')),
-    ('HE', _('Humenne')),
-    ('IL', _('Ilava')),
-    ('KK', _('Kezmarok')),
-    ('KN', _('Komarno')),
-    ('KE1', _('Kosice I')),
-    ('KE2', _('Kosice II')),
-    ('KE3', _('Kosice III')),
-    ('KE4', _('Kosice IV')),
-    ('KEO', _('Kosice - okolie')),
-    ('KA', _('Krupina')),
-    ('KM', _('Kysucke Nove Mesto')),
-    ('LV', _('Levice')),
-    ('LE', _('Levoca')),
-    ('LM', _('Liptovsky Mikulas')),
-    ('LC', _('Lucenec')),
-    ('MA', _('Malacky')),
-    ('MT', _('Martin')),
-    ('ML', _('Medzilaborce')),
-    ('MI', _('Michalovce')),
-    ('MY', _('Myjava')),
-    ('NO', _('Namestovo')),
-    ('NR', _('Nitra')),
-    ('NM', _('Nove Mesto nad Vahom')),
-    ('NZ', _('Nove Zamky')),
-    ('PE', _('Partizanske')),
-    ('PK', _('Pezinok')),
-    ('PN', _('Piestany')),
-    ('PT', _('Poltar')),
-    ('PP', _('Poprad')),
-    ('PB', _('Povazska Bystrica')),
-    ('PO', _('Presov')),
-    ('PD', _('Prievidza')),
-    ('PU', _('Puchov')),
-    ('RA', _('Revuca')),
-    ('RS', _('Rimavska Sobota')),
-    ('RV', _('Roznava')),
-    ('RK', _('Ruzomberok')),
-    ('SB', _('Sabinov')),
-    ('SC', _('Senec')),
-    ('SE', _('Senica')),
-    ('SI', _('Skalica')),
-    ('SV', _('Snina')),
-    ('SO', _('Sobrance')),
-    ('SN', _('Spisska Nova Ves')),
-    ('SL', _('Stara Lubovna')),
-    ('SP', _('Stropkov')),
-    ('SK', _('Svidnik')),
-    ('SA', _('Sala')),
-    ('TO', _('Topolcany')),
-    ('TV', _('Trebisov')),
-    ('TN', _('Trencin')),
-    ('TT', _('Trnava')),
-    ('TR', _('Turcianske Teplice')),
-    ('TS', _('Tvrdosin')),
-    ('VK', _('Velky Krtis')),
-    ('VT', _('Vranov nad Toplou')),
-    ('ZM', _('Zlate Moravce')),
-    ('ZV', _('Zvolen')),
-    ('ZC', _('Zarnovica')),
-    ('ZH', _('Ziar nad Hronom')),
-    ('ZA', _('Zilina')),
-)
diff --git a/webapp/django/contrib/localflavor/sk/sk_regions.py b/webapp/django/contrib/localflavor/sk/sk_regions.py
deleted file mode 100644
index 66de814..0000000
--- a/webapp/django/contrib/localflavor/sk/sk_regions.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""
-Slovak regions according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska
-"""
-
-from django.utils.translation import ugettext_lazy as _
-
-REGION_CHOICES = (
-    ('BB', _('Banska Bystrica region')),
-    ('BA', _('Bratislava region')),
-    ('KE', _('Kosice region')),
-    ('NR', _('Nitra region')),
-    ('PO', _('Presov region')),
-    ('TN', _('Trencin region')),
-    ('TT', _('Trnava region')),
-    ('ZA', _('Zilina region')),
-)
diff --git a/webapp/django/contrib/localflavor/uk/__init__.py b/webapp/django/contrib/localflavor/uk/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/uk/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/uk/forms.py b/webapp/django/contrib/localflavor/uk/forms.py
deleted file mode 100644
index 7df7364..0000000
--- a/webapp/django/contrib/localflavor/uk/forms.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-UK-specific Form helpers
-"""
-
-import re
-
-from django.forms.fields import CharField, Select
-from django.forms import ValidationError
-from django.utils.translation import ugettext_lazy as _
-
-class UKPostcodeField(CharField):
-    """
-    A form field that validates its input is a UK postcode.
-
-    The regular expression used is sourced from the schema for British Standard
-    BS7666 address types: http://www.govtalk.gov.uk/gdsc/schemas/bs7666-v2-0.xsd
-
-    The value is uppercased and a space added in the correct place, if required.
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a valid postcode.'),
-    }
-    outcode_pattern = '[A-PR-UWYZ]([0-9]{1,2}|([A-HIK-Y][0-9](|[0-9]|[ABEHMNPRVWXY]))|[0-9][A-HJKSTUW])'
-    incode_pattern = '[0-9][ABD-HJLNP-UW-Z]{2}'
-    postcode_regex = re.compile(r'^(GIR 0AA|%s %s)$' % (outcode_pattern, incode_pattern))
-    space_regex = re.compile(r' *(%s)$' % incode_pattern)
-
-    def clean(self, value):
-        value = super(UKPostcodeField, self).clean(value)
-        if value == u'':
-            return value
-        postcode = value.upper().strip()
-        # Put a single space before the incode (second part).
-        postcode = self.space_regex.sub(r' \1', postcode)
-        if not self.postcode_regex.search(postcode):
-            raise ValidationError(self.default_error_messages['invalid'])
-        return postcode
-
-class UKCountySelect(Select):
-    """
-    A Select widget that uses a list of UK Counties/Regions as its choices.
-    """
-    def __init__(self, attrs=None):
-        from uk_regions import UK_REGION_CHOICES
-        super(UKCountySelect, self).__init__(attrs, choices=UK_REGION_CHOICES)
-
-class UKNationSelect(Select):
-    """
-    A Select widget that uses a list of UK Nations as its choices.
-    """
-    def __init__(self, attrs=None):
-        from uk_regions import UK_NATIONS_CHOICES
-        super(UKNationSelect, self).__init__(attrs, choices=UK_NATIONS_CHOICES)
diff --git a/webapp/django/contrib/localflavor/uk/uk_regions.py b/webapp/django/contrib/localflavor/uk/uk_regions.py
deleted file mode 100644
index dd92f5e..0000000
--- a/webapp/django/contrib/localflavor/uk/uk_regions.py
+++ /dev/null
@@ -1,97 +0,0 @@
-"""
-Sources:
-    English regions: http://www.statistics.gov.uk/geography/downloads/31_10_01_REGION_names_and_codes_12_00.xls
-    Northern Ireland regions: http://en.wikipedia.org/wiki/List_of_Irish_counties_by_area
-    Welsh regions: http://en.wikipedia.org/wiki/Preserved_counties_of_Wales
-    Scottish regions: http://en.wikipedia.org/wiki/Regions_and_districts_of_Scotland
-"""
-from django.utils.translation import ugettext_lazy as _
-
-ENGLAND_REGION_CHOICES = (
-    ("Bedfordshire", _("Bedfordshire")),
-    ("Buckinghamshire", _("Buckinghamshire")),
-    ("Cambridgeshire", ("Cambridgeshire")),
-    ("Cheshire", _("Cheshire")),
-    ("Cornwall and Isles of Scilly", _("Cornwall and Isles of Scilly")),
-    ("Cumbria", _("Cumbria")),
-    ("Derbyshire", _("Derbyshire")),
-    ("Devon", _("Devon")),
-    ("Dorset", _("Dorset")),
-    ("Durham", _("Durham")),
-    ("East Sussex", _("East Sussex")),
-    ("Essex", _("Essex")),
-    ("Gloucestershire", _("Gloucestershire")),
-    ("Greater London", _("Greater London")),
-    ("Greater Manchester", _("Greater Manchester")),
-    ("Hampshire", _("Hampshire")),
-    ("Hertfordshire", _("Hertfordshire")),
-    ("Kent", _("Kent")),
-    ("Lancashire", _("Lancashire")),
-    ("Leicestershire", _("Leicestershire")),
-    ("Lincolnshire", _("Lincolnshire")),
-    ("Merseyside", _("Merseyside")),
-    ("Norfolk", _("Norfolk")),
-    ("North Yorkshire", _("North Yorkshire")),
-    ("Northamptonshire", _("Northamptonshire")),
-    ("Northumberland", _("Northumberland")),
-    ("Nottinghamshire", _("Nottinghamshire")),
-    ("Oxfordshire", _("Oxfordshire")),
-    ("Shropshire", _("Shropshire")),
-    ("Somerset", _("Somerset")),
-    ("South Yorkshire", _("South Yorkshire")),
-    ("Staffordshire", _("Staffordshire")),
-    ("Suffolk", _("Suffolk")),
-    ("Surrey", _("Surrey")),
-    ("Tyne and Wear", _("Tyne and Wear")),
-    ("Warwickshire", _("Warwickshire")),
-    ("West Midlands", _("West Midlands")),
-    ("West Sussex", _("West Sussex")),
-    ("West Yorkshire", _("West Yorkshire")),
-    ("Wiltshire", _("Wiltshire")),
-    ("Worcestershire", _("Worcestershire")),
-)
-
-NORTHERN_IRELAND_REGION_CHOICES = (
-    ("County Antrim", _("County Antrim")),
-    ("County Armagh", _("County Armagh")),
-    ("County Down", _("County Down")),
-    ("County Fermanagh", _("County Fermanagh")),
-    ("County Londonderry", _("County Londonderry")),
-    ("County Tyrone", _("County Tyrone")),
-)
-
-WALES_REGION_CHOICES = (
-    ("Clwyd", _("Clwyd")),
-    ("Dyfed", _("Dyfed")),
-    ("Gwent", _("Gwent")),
-    ("Gwynedd", _("Gwynedd")),
-    ("Mid Glamorgan", _("Mid Glamorgan")),
-    ("Powys", _("Powys")),
-    ("South Glamorgan", _("South Glamorgan")),
-    ("West Glamorgan", _("West Glamorgan")),
-)
-
-SCOTTISH_REGION_CHOICES = (
-    ("Borders", _("Borders")),
-    ("Central Scotland", _("Central Scotland")),
-    ("Dumfries and Galloway", _("Dumfries and Galloway")),
-    ("Fife", _("Fife")),
-    ("Grampian", _("Grampian")),
-    ("Highland", _("Highland")),
-    ("Lothian", _("Lothian")),
-    ("Orkney Islands", _("Orkney Islands")),
-    ("Shetland Islands", _("Shetland Islands")),
-    ("Strathclyde", _("Strathclyde")),
-    ("Tayside", _("Tayside")),
-    ("Western Isles", _("Western Isles")),
-)
-
-UK_NATIONS_CHOICES = (
-    ("England", _("England")),
-    ("Northern Ireland", _("Northern Ireland")),
-    ("Scotland", _("Scotland")),
-    ("Wales", _("Wales")),
-)
-
-UK_REGION_CHOICES = ENGLAND_REGION_CHOICES + NORTHERN_IRELAND_REGION_CHOICES + WALES_REGION_CHOICES + SCOTTISH_REGION_CHOICES
-
diff --git a/webapp/django/contrib/localflavor/us/__init__.py b/webapp/django/contrib/localflavor/us/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/us/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/us/forms.py b/webapp/django/contrib/localflavor/us/forms.py
deleted file mode 100644
index a744edc..0000000
--- a/webapp/django/contrib/localflavor/us/forms.py
+++ /dev/null
@@ -1,112 +0,0 @@
-"""
-USA-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, Select, EMPTY_VALUES
-from django.utils.encoding import smart_unicode
-from django.utils.translation import ugettext_lazy as _
-import re
-
-phone_digits_re = re.compile(r'^(?:1-?)?(\d{3})[-\.]?(\d{3})[-\.]?(\d{4})$')
-ssn_re = re.compile(r"^(?P<area>\d{3})[-\ ]?(?P<group>\d{2})[-\ ]?(?P<serial>\d{4})$")
-
-class USZipCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _('Enter a zip code in the format XXXXX or XXXXX-XXXX.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(USZipCodeField, self).__init__(r'^\d{5}(?:-\d{4})?$',
-            max_length=None, min_length=None, *args, **kwargs)
-
-class USPhoneNumberField(Field):
-    default_error_messages = {
-        'invalid': u'Phone numbers must be in XXX-XXX-XXXX format.',
-    }
-
-    def clean(self, value):
-        super(USPhoneNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value = re.sub('(\(|\)|\s+)', '', smart_unicode(value))
-        m = phone_digits_re.search(value)
-        if m:
-            return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3))
-        raise ValidationError(self.error_messages['invalid'])
-
-class USSocialSecurityNumberField(Field):
-    """
-    A United States Social Security number.
-
-    Checks the following rules to determine whether the number is valid:
-
-        * Conforms to the XXX-XX-XXXX format.
-        * No group consists entirely of zeroes.
-        * The leading group is not "666" (block "666" will never be allocated).
-        * The number is not in the promotional block 987-65-4320 through
-          987-65-4329, which are permanently invalid.
-        * The number is not one known to be invalid due to otherwise widespread
-          promotional use or distribution (e.g., the Woolworth's number or the
-          1962 promotional number).
-    """
-    default_error_messages = {
-        'invalid': _('Enter a valid U.S. Social Security number in XXX-XX-XXXX format.'),
-    }
-
-    def clean(self, value):
-        super(USSocialSecurityNumberField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        match = re.match(ssn_re, value)
-        if not match:
-            raise ValidationError(self.error_messages['invalid'])
-        area, group, serial = match.groupdict()['area'], match.groupdict()['group'], match.groupdict()['serial']
-
-        # First pass: no blocks of all zeroes.
-        if area == '000' or \
-           group == '00' or \
-           serial == '0000':
-            raise ValidationError(self.error_messages['invalid'])
-
-        # Second pass: promotional and otherwise permanently invalid numbers.
-        if area == '666' or \
-           (area == '987' and group == '65' and 4320 <= int(serial) <= 4329) or \
-           value == '078-05-1120' or \
-           value == '219-09-9999':
-            raise ValidationError(self.error_messages['invalid'])
-        return u'%s-%s-%s' % (area, group, serial)
-
-class USStateField(Field):
-    """
-    A form field that validates its input is a U.S. state name or abbreviation.
-    It normalizes the input to the standard two-leter postal service
-    abbreviation for the given state.
-    """
-    default_error_messages = {
-        'invalid': u'Enter a U.S. state or territory.',
-    }
-
-    def clean(self, value):
-        from us_states import STATES_NORMALIZED
-        super(USStateField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        try:
-            value = value.strip().lower()
-        except AttributeError:
-            pass
-        else:
-            try:
-                return STATES_NORMALIZED[value.strip().lower()].decode('ascii')
-            except KeyError:
-                pass
-        raise ValidationError(self.error_messages['invalid'])
-
-class USStateSelect(Select):
-    """
-    A Select widget that uses a list of U.S. states/territories as its choices.
-    """
-    def __init__(self, attrs=None):
-        from us_states import STATE_CHOICES
-        super(USStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
diff --git a/webapp/django/contrib/localflavor/us/us_states.py b/webapp/django/contrib/localflavor/us/us_states.py
deleted file mode 100644
index c84facc..0000000
--- a/webapp/django/contrib/localflavor/us/us_states.py
+++ /dev/null
@@ -1,240 +0,0 @@
-"""
-A mapping of state misspellings/abbreviations to normalized abbreviations, and
-an alphabetical list of states for use as `choices` in a formfield.
-
-This exists in this standalone file so that it's only imported into memory
-when explicitly needed.
-"""
-
-STATE_CHOICES = (
-    ('AL', 'Alabama'),
-    ('AK', 'Alaska'),
-    ('AS', 'American Samoa'),
-    ('AZ', 'Arizona'),
-    ('AR', 'Arkansas'),
-    ('CA', 'California'),
-    ('CO', 'Colorado'),
-    ('CT', 'Connecticut'),
-    ('DE', 'Delaware'),
-    ('DC', 'District of Columbia'),
-    ('FM', 'Federated States of Micronesia'),
-    ('FL', 'Florida'),
-    ('GA', 'Georgia'),
-    ('GU', 'Guam'),
-    ('HI', 'Hawaii'),
-    ('ID', 'Idaho'),
-    ('IL', 'Illinois'),
-    ('IN', 'Indiana'),
-    ('IA', 'Iowa'),
-    ('KS', 'Kansas'),
-    ('KY', 'Kentucky'),
-    ('LA', 'Louisiana'),
-    ('ME', 'Maine'),
-    ('MH', 'Marshall Islands'),
-    ('MD', 'Maryland'),
-    ('MA', 'Massachusetts'),
-    ('MI', 'Michigan'),
-    ('MN', 'Minnesota'),
-    ('MS', 'Mississippi'),
-    ('MO', 'Missouri'),
-    ('MT', 'Montana'),
-    ('NE', 'Nebraska'),
-    ('NV', 'Nevada'),
-    ('NH', 'New Hampshire'),
-    ('NJ', 'New Jersey'),
-    ('NM', 'New Mexico'),
-    ('NY', 'New York'),
-    ('NC', 'North Carolina'),
-    ('ND', 'North Dakota'),
-    ('MP', 'Northern Mariana Islands'),
-    ('OH', 'Ohio'),
-    ('OK', 'Oklahoma'),
-    ('OR', 'Oregon'),
-    ('PW', 'Palau'),
-    ('PA', 'Pennsylvania'),
-    ('PR', 'Puerto Rico'),
-    ('RI', 'Rhode Island'),
-    ('SC', 'South Carolina'),
-    ('SD', 'South Dakota'),
-    ('TN', 'Tennessee'),
-    ('TX', 'Texas'),
-    ('UT', 'Utah'),
-    ('VT', 'Vermont'),
-    ('VI', 'Virgin Islands'),
-    ('VA', 'Virginia'),
-    ('WA', 'Washington'),
-    ('WV', 'West Virginia'),
-    ('WI', 'Wisconsin'),
-    ('WY', 'Wyoming'),
-)
-
-STATES_NORMALIZED = {
-    'ak': 'AK',
-    'al': 'AL',
-    'ala': 'AL',
-    'alabama': 'AL',
-    'alaska': 'AK',
-    'american samao': 'AS',
-    'american samoa': 'AS',
-    'ar': 'AR',
-    'ariz': 'AZ',
-    'arizona': 'AZ',
-    'ark': 'AR',
-    'arkansas': 'AR',
-    'as': 'AS',
-    'az': 'AZ',
-    'ca': 'CA',
-    'calf': 'CA',
-    'calif': 'CA',
-    'california': 'CA',
-    'co': 'CO',
-    'colo': 'CO',
-    'colorado': 'CO',
-    'conn': 'CT',
-    'connecticut': 'CT',
-    'ct': 'CT',
-    'dc': 'DC',
-    'de': 'DE',
-    'del': 'DE',
-    'delaware': 'DE',
-    'deleware': 'DE',
-    'district of columbia': 'DC',
-    'federated states of micronesia': 'FM',
-    'fl': 'FL',
-    'fla': 'FL',
-    'florida': 'FL',
-    'fm': 'FM',
-    'ga': 'GA',
-    'georgia': 'GA',
-    'gu': 'GU',
-    'guam': 'GU',
-    'hawaii': 'HI',
-    'hi': 'HI',
-    'ia': 'IA',
-    'id': 'ID',
-    'idaho': 'ID',
-    'il': 'IL',
-    'ill': 'IL',
-    'illinois': 'IL',
-    'in': 'IN',
-    'ind': 'IN',
-    'indiana': 'IN',
-    'iowa': 'IA',
-    'kan': 'KS',
-    'kans': 'KS',
-    'kansas': 'KS',
-    'kentucky': 'KY',
-    'ks': 'KS',
-    'ky': 'KY',
-    'la': 'LA',
-    'louisiana': 'LA',
-    'ma': 'MA',
-    'maine': 'ME',
-    'marianas islands': 'MP',
-    'marianas islands of the pacific': 'MP',
-    'marinas islands of the pacific': 'MP',
-    'maryland': 'MD',
-    'mass': 'MA',
-    'massachusetts': 'MA',
-    'massachussetts': 'MA',
-    'md': 'MD',
-    'me': 'ME',
-    'mi': 'MI',
-    'mich': 'MI',
-    'michigan': 'MI',
-    'micronesia': 'FM',
-    'minn': 'MN',
-    'minnesota': 'MN',
-    'miss': 'MS',
-    'mississippi': 'MS',
-    'missouri': 'MO',
-    'mn': 'MN',
-    'mo': 'MO',
-    'mont': 'MT',
-    'montana': 'MT',
-    'mp': 'MP',
-    'ms': 'MS',
-    'mt': 'MT',
-    'n d': 'ND',
-    'n dak': 'ND',
-    'n h': 'NH',
-    'n j': 'NJ',
-    'n m': 'NM',
-    'n mex': 'NM',
-    'nc': 'NC',
-    'nd': 'ND',
-    'ne': 'NE',
-    'neb': 'NE',
-    'nebr': 'NE',
-    'nebraska': 'NE',
-    'nev': 'NV',
-    'nevada': 'NV',
-    'new hampshire': 'NH',
-    'new jersey': 'NJ',
-    'new mexico': 'NM',
-    'new york': 'NY',
-    'nh': 'NH',
-    'nj': 'NJ',
-    'nm': 'NM',
-    'nmex': 'NM',
-    'north carolina': 'NC',
-    'north dakota': 'ND',
-    'northern mariana islands': 'MP',
-    'nv': 'NV',
-    'ny': 'NY',
-    'oh': 'OH',
-    'ohio': 'OH',
-    'ok': 'OK',
-    'okla': 'OK',
-    'oklahoma': 'OK',
-    'or': 'OR',
-    'ore': 'OR',
-    'oreg': 'OR',
-    'oregon': 'OR',
-    'pa': 'PA',
-    'penn': 'PA',
-    'pennsylvania': 'PA',
-    'pr': 'PR',
-    'puerto rico': 'PR',
-    'rhode island': 'RI',
-    'ri': 'RI',
-    's dak': 'SD',
-    'sc': 'SC',
-    'sd': 'SD',
-    'sdak': 'SD',
-    'south carolina': 'SC',
-    'south dakota': 'SD',
-    'tenn': 'TN',
-    'tennessee': 'TN',
-    'territory of hawaii': 'HI',
-    'tex': 'TX',
-    'texas': 'TX',
-    'tn': 'TN',
-    'tx': 'TX',
-    'us virgin islands': 'VI',
-    'usvi': 'VI',
-    'ut': 'UT',
-    'utah': 'UT',
-    'va': 'VA',
-    'vermont': 'VT',
-    'vi': 'VI',
-    'viginia': 'VA',
-    'virgin islands': 'VI',
-    'virgina': 'VA',
-    'virginia': 'VA',
-    'vt': 'VT',
-    'w va': 'WV',
-    'wa': 'WA',
-    'wash': 'WA',
-    'washington': 'WA',
-    'west virginia': 'WV',
-    'wi': 'WI',
-    'wis': 'WI',
-    'wisc': 'WI',
-    'wisconsin': 'WI',
-    'wv': 'WV',
-    'wva': 'WV',
-    'wy': 'WY',
-    'wyo': 'WY',
-    'wyoming': 'WY',
-}
diff --git a/webapp/django/contrib/localflavor/za/__init__.py b/webapp/django/contrib/localflavor/za/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/localflavor/za/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/localflavor/za/forms.py b/webapp/django/contrib/localflavor/za/forms.py
deleted file mode 100644
index 7b7b714..0000000
--- a/webapp/django/contrib/localflavor/za/forms.py
+++ /dev/null
@@ -1,59 +0,0 @@
-"""
-South Africa-specific Form helpers
-"""
-
-from django.forms import ValidationError
-from django.forms.fields import Field, RegexField, EMPTY_VALUES
-from django.utils.checksums import luhn
-from django.utils.translation import gettext as _
-import re
-from datetime import date
-
-id_re = re.compile(r'^(?P<yy>\d\d)(?P<mm>\d\d)(?P<dd>\d\d)(?P<mid>\d{4})(?P<end>\d{3})')
-
-class ZAIDField(Field):
-    """A form field for South African ID numbers -- the checksum is validated
-    using the Luhn checksum, and uses a simlistic (read: not entirely accurate)
-    check for the birthdate
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a valid South African ID number'),
-    }
-
-    def clean(self, value):
-        # strip spaces and dashes
-        value = value.strip().replace(' ', '').replace('-', '')
-
-        super(ZAIDField, self).clean(value)
-
-        if value in EMPTY_VALUES:
-            return u''
-
-        match = re.match(id_re, value)
-
-        if not match:
-            raise ValidationError(self.error_messages['invalid'])
-
-        g = match.groupdict()
-
-        try:
-            # The year 2000 is conveniently a leapyear.
-            # This algorithm will break in xx00 years which aren't leap years
-            # There is no way to guess the century of a ZA ID number
-            d = date(int(g['yy']) + 2000, int(g['mm']), int(g['dd']))
-        except ValueError:
-            raise ValidationError(self.error_messages['invalid'])
-
-        if not luhn(value):
-            raise ValidationError(self.error_messages['invalid'])
-
-        return value
-
-class ZAPostCodeField(RegexField):
-    default_error_messages = {
-        'invalid': _(u'Enter a valid South African postal code'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(ZAPostCodeField, self).__init__(r'^\d{4}$',
-            max_length=None, min_length=None)
diff --git a/webapp/django/contrib/localflavor/za/za_provinces.py b/webapp/django/contrib/localflavor/za/za_provinces.py
deleted file mode 100644
index 0bc6fe1..0000000
--- a/webapp/django/contrib/localflavor/za/za_provinces.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from django.utils.translation import gettext_lazy as _
-
-PROVINCE_CHOICES = (
-    ('EC', _('Eastern Cape')),
-    ('FS', _('Free State')),
-    ('GP', _('Gauteng')),
-    ('KN', _('KwaZulu-Natal')),
-    ('LP', _('Limpopo')),
-    ('MP', _('Mpumalanga')),
-    ('NC', _('Northern Cape')),
-    ('NW', _('North West')),
-    ('WC', _('Western Cape')),
-)
diff --git a/webapp/django/contrib/markup/__init__.py b/webapp/django/contrib/markup/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/markup/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/markup/models.py b/webapp/django/contrib/markup/models.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/markup/models.py
+++ /dev/null
diff --git a/webapp/django/contrib/markup/templatetags/__init__.py b/webapp/django/contrib/markup/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/markup/templatetags/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/markup/templatetags/markup.py b/webapp/django/contrib/markup/templatetags/markup.py
deleted file mode 100644
index 982620bd..0000000
--- a/webapp/django/contrib/markup/templatetags/markup.py
+++ /dev/null
@@ -1,94 +0,0 @@
-"""
-Set of "markup" template filters for Django.  These filters transform plain text
-markup syntaxes to HTML; currently there is support for:
-
-    * Textile, which requires the PyTextile library available at
-      http://dealmeida.net/projects/textile/
-
-    * Markdown, which requires the Python-markdown library from
-      http://www.freewisdom.org/projects/python-markdown
-
-    * ReStructuredText, which requires docutils from http://docutils.sf.net/
-
-In each case, if the required library is not installed, the filter will
-silently fail and return the un-marked-up text.
-"""
-
-from django import template
-from django.conf import settings
-from django.utils.encoding import smart_str, force_unicode
-from django.utils.safestring import mark_safe
-
-register = template.Library()
-
-def textile(value):
-    try:
-        import textile
-    except ImportError:
-        if settings.DEBUG:
-            raise template.TemplateSyntaxError, "Error in {% textile %} filter: The Python textile library isn't installed."
-        return force_unicode(value)
-    else:
-        return mark_safe(force_unicode(textile.textile(smart_str(value), encoding='utf-8', output='utf-8')))
-textile.is_safe = True
-
-def markdown(value, arg=''):
-    """
-    Runs Markdown over a given value, optionally using various
-    extensions python-markdown supports.
-
-    Syntax::
-
-        {{ value|markdown:"extension1_name,extension2_name..." }}
-
-    To enable safe mode, which strips raw HTML and only returns HTML
-    generated by actual Markdown syntax, pass "safe" as the first
-    extension in the list.
-
-    If the version of Markdown in use does not support extensions,
-    they will be silently ignored.
-
-    """
-    try:
-        import markdown
-    except ImportError:
-        if settings.DEBUG:
-            raise template.TemplateSyntaxError, "Error in {% markdown %} filter: The Python markdown library isn't installed."
-        return force_unicode(value)
-    else:
-        # markdown.version was first added in 1.6b. The only version of markdown
-        # to fully support extensions before 1.6b was the shortlived 1.6a.
-        if hasattr(markdown, 'version'):
-            extensions = [e for e in arg.split(",") if e]
-            if len(extensions) > 0 and extensions[0] == "safe":
-                extensions = extensions[1:]
-                safe_mode = True
-            else:
-                safe_mode = False
-
-            # Unicode support only in markdown v1.7 or above. Version_info
-            # exist only in markdown v1.6.2rc-2 or above.
-            if getattr(markdown, "version_info", None) < (1,7):
-                return mark_safe(force_unicode(markdown.markdown(smart_str(value), extensions, safe_mode=safe_mode)))
-            else:
-                return mark_safe(markdown.markdown(force_unicode(value), extensions, safe_mode=safe_mode))
-        else:
-            return mark_safe(force_unicode(markdown.markdown(smart_str(value))))
-markdown.is_safe = True
-
-def restructuredtext(value):
-    try:
-        from docutils.core import publish_parts
-    except ImportError:
-        if settings.DEBUG:
-            raise template.TemplateSyntaxError, "Error in {% restructuredtext %} filter: The Python docutils library isn't installed."
-        return force_unicode(value)
-    else:
-        docutils_settings = getattr(settings, "RESTRUCTUREDTEXT_FILTER_SETTINGS", {})
-        parts = publish_parts(source=smart_str(value), writer_name="html4css1", settings_overrides=docutils_settings)
-        return mark_safe(force_unicode(parts["fragment"]))
-restructuredtext.is_safe = True
-
-register.filter(textile)
-register.filter(markdown)
-register.filter(restructuredtext)
diff --git a/webapp/django/contrib/markup/tests.py b/webapp/django/contrib/markup/tests.py
deleted file mode 100644
index 9a96f8c..0000000
--- a/webapp/django/contrib/markup/tests.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Quick tests for the markup templatetags (django.contrib.markup)
-
-import re
-import unittest
-
-from django.template import Template, Context, add_to_builtins
-from django.utils.html import escape
-
-add_to_builtins('django.contrib.markup.templatetags.markup')
-
-class Templates(unittest.TestCase):
-    def test_textile(self):
-        try:
-            import textile
-        except ImportError:
-            textile = None
-
-        textile_content = """Paragraph 1
-
-Paragraph 2 with "quotes" and @code@"""
-
-        t = Template("{{ textile_content|textile }}")
-        rendered = t.render(Context(locals())).strip()
-        if textile:
-            self.assertEqual(rendered, """<p>Paragraph 1</p>
-
-<p>Paragraph 2 with &#8220;quotes&#8221; and <code>code</code></p>""")
-        else:
-            self.assertEqual(rendered, escape(textile_content))
-
-    def test_markdown(self):
-        try:
-            import markdown
-        except ImportError:
-            markdown = None
-
-        markdown_content = """Paragraph 1
-
-## An h2"""
-
-        t = Template("{{ markdown_content|markdown }}")
-        rendered = t.render(Context(locals())).strip()
-        if markdown:
-            pattern = re.compile("""<p>Paragraph 1\s*</p>\s*<h2>\s*An h2</h2>""")
-            self.assert_(pattern.match(rendered))
-        else:
-            self.assertEqual(rendered, markdown_content)
-
-    def test_docutils(self):
-        try:
-            import docutils
-        except ImportError:
-            docutils = None
-
-        rest_content = """Paragraph 1
-
-Paragraph 2 with a link_
-
-.. _link: http://www.example.com/"""
-
-        t = Template("{{ rest_content|restructuredtext }}")
-        rendered = t.render(Context(locals())).strip()
-        if docutils:
-            # Different versions of docutils return slightly different HTML
-            try:
-                # Docutils v0.4 and earlier
-                self.assertEqual(rendered, """<p>Paragraph 1</p>
-<p>Paragraph 2 with a <a class="reference" href="http://www.example.com/">link</a></p>""")
-            except AssertionError, e:
-                # Docutils from SVN (which will become 0.5)
-                self.assertEqual(rendered, """<p>Paragraph 1</p>
-<p>Paragraph 2 with a <a class="reference external" href="http://www.example.com/">link</a></p>""")
-        else:
-            self.assertEqual(rendered, rest_content)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/webapp/django/contrib/redirects/README.TXT b/webapp/django/contrib/redirects/README.TXT
deleted file mode 100644
index 3544904a..0000000
--- a/webapp/django/contrib/redirects/README.TXT
+++ /dev/null
@@ -1,8 +0,0 @@
-This is an optional add-on app, redirects.
-
-For full documentation, see either of these:
-
-    * The file django/docs/redirects.txt in the Django distribution
-    * http://www.djangoproject.com/documentation/redirects/ on the Web
-
-Both have identical content.
\ No newline at end of file
diff --git a/webapp/django/contrib/redirects/__init__.py b/webapp/django/contrib/redirects/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/redirects/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/redirects/admin.py b/webapp/django/contrib/redirects/admin.py
deleted file mode 100644
index a9b2a32..0000000
--- a/webapp/django/contrib/redirects/admin.py
+++ /dev/null
@@ -1,11 +0,0 @@
-
-from django.contrib import admin
-from django.contrib.redirects.models import Redirect
-
-class RedirectAdmin(admin.ModelAdmin):
-    list_display = ('old_path', 'new_path')
-    list_filter = ('site',)
-    search_fields = ('old_path', 'new_path')
-    radio_fields = {'site': admin.VERTICAL}
-
-admin.site.register(Redirect, RedirectAdmin)
\ No newline at end of file
diff --git a/webapp/django/contrib/redirects/middleware.py b/webapp/django/contrib/redirects/middleware.py
deleted file mode 100644
index 8998c2c..0000000
--- a/webapp/django/contrib/redirects/middleware.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from django.contrib.redirects.models import Redirect
-from django import http
-from django.conf import settings
-
-class RedirectFallbackMiddleware(object):
-    def process_response(self, request, response):
-        if response.status_code != 404:
-            return response # No need to check for a redirect for non-404 responses.
-        path = request.get_full_path()
-        try:
-            r = Redirect.objects.get(site__id__exact=settings.SITE_ID, old_path=path)
-        except Redirect.DoesNotExist:
-            r = None
-        if r is None and settings.APPEND_SLASH:
-            # Try removing the trailing slash.
-            try:
-                r = Redirect.objects.get(site__id__exact=settings.SITE_ID,
-                    old_path=path[:path.rfind('/')]+path[path.rfind('/')+1:])
-            except Redirect.DoesNotExist:
-                pass
-        if r is not None:
-            if r.new_path == '':
-                return http.HttpResponseGone()
-            return http.HttpResponsePermanentRedirect(r.new_path)
-
-        # No redirect was found. Return the response.
-        return response
diff --git a/webapp/django/contrib/redirects/models.py b/webapp/django/contrib/redirects/models.py
deleted file mode 100644
index 4233d55..0000000
--- a/webapp/django/contrib/redirects/models.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.db import models
-from django.contrib.sites.models import Site
-from django.utils.translation import ugettext_lazy as _
-
-class Redirect(models.Model):
-    site = models.ForeignKey(Site)
-    old_path = models.CharField(_('redirect from'), max_length=200, db_index=True,
-        help_text=_("This should be an absolute path, excluding the domain name. Example: '/events/search/'."))
-    new_path = models.CharField(_('redirect to'), max_length=200, blank=True,
-        help_text=_("This can be either an absolute path (as above) or a full URL starting with 'http://'."))
-
-    class Meta:
-        verbose_name = _('redirect')
-        verbose_name_plural = _('redirects')
-        db_table = 'django_redirect'
-        unique_together=(('site', 'old_path'),)
-        ordering = ('old_path',)
-    
-    def __unicode__(self):
-        return "%s ---> %s" % (self.old_path, self.new_path)
diff --git a/webapp/django/contrib/sessions/__init__.py b/webapp/django/contrib/sessions/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/sessions/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/sessions/backends/__init__.py b/webapp/django/contrib/sessions/backends/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/sessions/backends/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/sessions/backends/base.py b/webapp/django/contrib/sessions/backends/base.py
deleted file mode 100644
index b4cdead..0000000
--- a/webapp/django/contrib/sessions/backends/base.py
+++ /dev/null
@@ -1,287 +0,0 @@
-import base64
-import os
-import random
-import sys
-import time
-from datetime import datetime, timedelta
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-
-from django.conf import settings
-from django.core.exceptions import SuspiciousOperation
-from django.utils.hashcompat import md5_constructor
-
-# Use the system (hardware-based) random number generator if it exists.
-if hasattr(random, 'SystemRandom'):
-    randrange = random.SystemRandom().randrange
-else:
-    randrange = random.randrange
-MAX_SESSION_KEY = 18446744073709551616L     # 2 << 63
-
-class CreateError(Exception):
-    """
-    Used internally as a consistent exception type to catch from save (see the
-    docstring for SessionBase.save() for details).
-    """
-    pass
-
-class SessionBase(object):
-    """
-    Base class for all Session classes.
-    """
-    TEST_COOKIE_NAME = 'testcookie'
-    TEST_COOKIE_VALUE = 'worked'
-
-    def __init__(self, session_key=None):
-        self._session_key = session_key
-        self.accessed = False
-        self.modified = False
-
-    def __contains__(self, key):
-        return key in self._session
-
-    def __getitem__(self, key):
-        return self._session[key]
-
-    def __setitem__(self, key, value):
-        self._session[key] = value
-        self.modified = True
-
-    def __delitem__(self, key):
-        del self._session[key]
-        self.modified = True
-
-    def keys(self):
-        return self._session.keys()
-
-    def items(self):
-        return self._session.items()
-
-    def get(self, key, default=None):
-        return self._session.get(key, default)
-
-    def pop(self, key, *args):
-        self.modified = self.modified or key in self._session
-        return self._session.pop(key, *args)
-
-    def setdefault(self, key, value):
-        if key in self._session:
-            return self._session[key]
-        else:
-            self.modified = True
-            self._session[key] = value
-            return value
-
-    def set_test_cookie(self):
-        self[self.TEST_COOKIE_NAME] = self.TEST_COOKIE_VALUE
-
-    def test_cookie_worked(self):
-        return self.get(self.TEST_COOKIE_NAME) == self.TEST_COOKIE_VALUE
-
-    def delete_test_cookie(self):
-        del self[self.TEST_COOKIE_NAME]
-
-    def encode(self, session_dict):
-        "Returns the given session dictionary pickled and encoded as a string."
-        pickled = pickle.dumps(session_dict, pickle.HIGHEST_PROTOCOL)
-        pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
-        return base64.encodestring(pickled + pickled_md5)
-
-    def decode(self, session_data):
-        encoded_data = base64.decodestring(session_data)
-        pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
-        if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
-            raise SuspiciousOperation("User tampered with session cookie.")
-        try:
-            return pickle.loads(pickled)
-        # Unpickling can cause a variety of exceptions. If something happens,
-        # just return an empty dictionary (an empty session).
-        except:
-            return {}
-
-    def update(self, dict_):
-        self._session.update(dict_)
-        self.modified = True
-
-    def has_key(self, key):
-        return self._session.has_key(key)
-
-    def values(self):
-        return self._session.values()
-
-    def iterkeys(self):
-        return self._session.iterkeys()
-
-    def itervalues(self):
-        return self._session.itervalues()
-
-    def iteritems(self):
-        return self._session.iteritems()
-
-    def clear(self):
-        # To avoid unnecessary persistent storage accesses, we set up the
-        # internals directly (loading data wastes time, since we are going to
-        # set it to an empty dict anyway).
-        self._session_cache = {}
-        self.accessed = True
-        self.modified = True
-
-    def _get_new_session_key(self):
-        "Returns session key that isn't being used."
-        # The random module is seeded when this Apache child is created.
-        # Use settings.SECRET_KEY as added salt.
-        try:
-            pid = os.getpid()
-        except AttributeError:
-            # No getpid() in Jython, for example
-            pid = 1
-        while 1:
-            session_key = md5_constructor("%s%s%s%s"
-                    % (randrange(0, MAX_SESSION_KEY), pid, time.time(),
-                       settings.SECRET_KEY)).hexdigest()
-            if not self.exists(session_key):
-                break
-        return session_key
-
-    def _get_session_key(self):
-        if self._session_key:
-            return self._session_key
-        else:
-            self._session_key = self._get_new_session_key()
-            return self._session_key
-
-    def _set_session_key(self, session_key):
-        self._session_key = session_key
-
-    session_key = property(_get_session_key, _set_session_key)
-
-    def _get_session(self, no_load=False):
-        """
-        Lazily loads session from storage (unless "no_load" is True, when only
-        an empty dict is stored) and stores it in the current instance.
-        """
-        self.accessed = True
-        try:
-            return self._session_cache
-        except AttributeError:
-            if self._session_key is None or no_load:
-                self._session_cache = {}
-            else:
-                self._session_cache = self.load()
-        return self._session_cache
-
-    _session = property(_get_session)
-
-    def get_expiry_age(self):
-        """Get the number of seconds until the session expires."""
-        expiry = self.get('_session_expiry')
-        if not expiry:   # Checks both None and 0 cases
-            return settings.SESSION_COOKIE_AGE
-        if not isinstance(expiry, datetime):
-            return expiry
-        delta = expiry - datetime.now()
-        return delta.days * 86400 + delta.seconds
-
-    def get_expiry_date(self):
-        """Get session the expiry date (as a datetime object)."""
-        expiry = self.get('_session_expiry')
-        if isinstance(expiry, datetime):
-            return expiry
-        if not expiry:   # Checks both None and 0 cases
-            expiry = settings.SESSION_COOKIE_AGE
-        return datetime.now() + timedelta(seconds=expiry)
-
-    def set_expiry(self, value):
-        """
-        Sets a custom expiration for the session. ``value`` can be an integer,
-        a Python ``datetime`` or ``timedelta`` object or ``None``.
-
-        If ``value`` is an integer, the session will expire after that many
-        seconds of inactivity. If set to ``0`` then the session will expire on
-        browser close.
-
-        If ``value`` is a ``datetime`` or ``timedelta`` object, the session
-        will expire at that specific future time.
-
-        If ``value`` is ``None``, the session uses the global session expiry
-        policy.
-        """
-        if value is None:
-            # Remove any custom expiration for this session.
-            try:
-                del self['_session_expiry']
-            except KeyError:
-                pass
-            return
-        if isinstance(value, timedelta):
-            value = datetime.now() + value
-        self['_session_expiry'] = value
-
-    def get_expire_at_browser_close(self):
-        """
-        Returns ``True`` if the session is set to expire when the browser
-        closes, and ``False`` if there's an expiry date. Use
-        ``get_expiry_date()`` or ``get_expiry_age()`` to find the actual expiry
-        date/age, if there is one.
-        """
-        if self.get('_session_expiry') is None:
-            return settings.SESSION_EXPIRE_AT_BROWSER_CLOSE
-        return self.get('_session_expiry') == 0
-
-    def flush(self):
-        """
-        Removes the current session data from the database and regenerates the
-        key.
-        """
-        self.clear()
-        self.delete()
-        self.create()
-
-    def cycle_key(self):
-        """
-        Creates a new session key, whilst retaining the current session data.
-        """
-        data = self._session_cache
-        key = self.session_key
-        self.create()
-        self._session_cache = data
-        self.delete(key)
-
-    # Methods that child classes must implement.
-
-    def exists(self, session_key):
-        """
-        Returns True if the given session_key already exists.
-        """
-        raise NotImplementedError
-
-    def create(self):
-        """
-        Creates a new session instance. Guaranteed to create a new object with
-        a unique key and will have saved the result once (with empty data)
-        before the method returns.
-        """
-        raise NotImplementedError
-
-    def save(self, must_create=False):
-        """
-        Saves the session data. If 'must_create' is True, a new session object
-        is created (otherwise a CreateError exception is raised). Otherwise,
-        save() can update an existing object with the same key.
-        """
-        raise NotImplementedError
-
-    def delete(self, session_key=None):
-        """
-        Deletes the session data under this key. If the key is None, the
-        current session key value is used.
-        """
-        raise NotImplementedError
-
-    def load(self):
-        """
-        Loads the session data and returns a dictionary.
-        """
-        raise NotImplementedError
diff --git a/webapp/django/contrib/sessions/backends/cache.py b/webapp/django/contrib/sessions/backends/cache.py
deleted file mode 100644
index 94ae448..0000000
--- a/webapp/django/contrib/sessions/backends/cache.py
+++ /dev/null
@@ -1,50 +0,0 @@
-from django.contrib.sessions.backends.base import SessionBase, CreateError
-from django.core.cache import cache
-
-class SessionStore(SessionBase):
-    """
-    A cache-based session store.
-    """
-    def __init__(self, session_key=None):
-        self._cache = cache
-        super(SessionStore, self).__init__(session_key)
-
-    def load(self):
-        session_data = self._cache.get(self.session_key)
-        if session_data is not None:
-            return session_data
-        self.create()
-        return {}
-
-    def create(self):
-        while True:
-            self.session_key = self._get_new_session_key()
-            try:
-                self.save(must_create=True)
-            except CreateError:
-                continue
-            self.modified = True
-            return
-
-    def save(self, must_create=False):
-        if must_create:
-            func = self._cache.add
-        else:
-            func = self._cache.set
-        result = func(self.session_key, self._get_session(no_load=must_create),
-                self.get_expiry_age())
-        if must_create and not result:
-            raise CreateError
-
-    def exists(self, session_key):
-        if self._cache.get(session_key):
-            return True
-        return False
-
-    def delete(self, session_key=None):
-        if session_key is None:
-            if self._session_key is None:
-                return
-            session_key = self._session_key
-        self._cache.delete(session_key)
-
diff --git a/webapp/django/contrib/sessions/backends/db.py b/webapp/django/contrib/sessions/backends/db.py
deleted file mode 100644
index 85c4a0d..0000000
--- a/webapp/django/contrib/sessions/backends/db.py
+++ /dev/null
@@ -1,73 +0,0 @@
-import datetime
-from django.contrib.sessions.models import Session
-from django.contrib.sessions.backends.base import SessionBase, CreateError
-from django.core.exceptions import SuspiciousOperation
-from django.db import IntegrityError, transaction
-from django.utils.encoding import force_unicode
-
-class SessionStore(SessionBase):
-    """
-    Implements database session store.
-    """
-    def load(self):
-        try:
-            s = Session.objects.get(
-                session_key = self.session_key,
-                expire_date__gt=datetime.datetime.now()
-            )
-            return self.decode(force_unicode(s.session_data))
-        except (Session.DoesNotExist, SuspiciousOperation):
-            self.create()
-            return {}
-
-    def exists(self, session_key):
-        try:
-            Session.objects.get(session_key=session_key)
-        except Session.DoesNotExist:
-            return False
-        return True
-
-    def create(self):
-        while True:
-            self.session_key = self._get_new_session_key()
-            try:
-                # Save immediately to ensure we have a unique entry in the
-                # database.
-                self.save(must_create=True)
-            except CreateError:
-                # Key wasn't unique. Try again.
-                continue
-            self.modified = True
-            self._session_cache = {}
-            return
-
-    def save(self, must_create=False):
-        """
-        Saves the current session data to the database. If 'must_create' is
-        True, a database error will be raised if the saving operation doesn't
-        create a *new* entry (as opposed to possibly updating an existing
-        entry).
-        """
-        obj = Session(
-            session_key = self.session_key,
-            session_data = self.encode(self._get_session(no_load=must_create)),
-            expire_date = self.get_expiry_date()
-        )
-        sid = transaction.savepoint()
-        try:
-            obj.save(force_insert=must_create)
-        except IntegrityError:
-            if must_create:
-                transaction.savepoint_rollback(sid)
-                raise CreateError
-            raise
-
-    def delete(self, session_key=None):
-        if session_key is None:
-            if self._session_key is None:
-                return
-            session_key = self._session_key
-        try:
-            Session.objects.get(session_key=session_key).delete()
-        except Session.DoesNotExist:
-            pass
diff --git a/webapp/django/contrib/sessions/backends/file.py b/webapp/django/contrib/sessions/backends/file.py
deleted file mode 100644
index 36a03b6..0000000
--- a/webapp/django/contrib/sessions/backends/file.py
+++ /dev/null
@@ -1,107 +0,0 @@
-import errno
-import os
-import tempfile
-
-from django.conf import settings
-from django.contrib.sessions.backends.base import SessionBase, CreateError
-from django.core.exceptions import SuspiciousOperation, ImproperlyConfigured
-
-
-class SessionStore(SessionBase):
-    """
-    Implements a file based session store.
-    """
-    def __init__(self, session_key=None):
-        self.storage_path = getattr(settings, "SESSION_FILE_PATH", None)
-        if not self.storage_path:
-            self.storage_path = tempfile.gettempdir()
-
-        # Make sure the storage path is valid.
-        if not os.path.isdir(self.storage_path):
-            raise ImproperlyConfigured(
-                "The session storage path %r doesn't exist. Please set your"
-                " SESSION_FILE_PATH setting to an existing directory in which"
-                " Django can store session data." % self.storage_path)
-
-        self.file_prefix = settings.SESSION_COOKIE_NAME
-        super(SessionStore, self).__init__(session_key)
-
-    def _key_to_file(self, session_key=None):
-        """
-        Get the file associated with this session key.
-        """
-        if session_key is None:
-            session_key = self.session_key
-
-        # Make sure we're not vulnerable to directory traversal. Session keys
-        # should always be md5s, so they should never contain directory
-        # components.
-        if os.path.sep in session_key:
-            raise SuspiciousOperation(
-                "Invalid characters (directory components) in session key")
-
-        return os.path.join(self.storage_path, self.file_prefix + session_key)
-
-    def load(self):
-        session_data = {}
-        try:
-            session_file = open(self._key_to_file(), "rb")
-            try:
-                try:
-                    session_data = self.decode(session_file.read())
-                except (EOFError, SuspiciousOperation):
-                    self.create()
-            finally:
-                session_file.close()
-        except IOError:
-            pass
-        return session_data
-
-    def create(self):
-        while True:
-            self._session_key = self._get_new_session_key()
-            try:
-                self.save(must_create=True)
-            except CreateError:
-                continue
-            self.modified = True
-            self._session_cache = {}
-            return
-
-    def save(self, must_create=False):
-        flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC | getattr(os, 'O_BINARY', 0)
-        if must_create:
-            flags |= os.O_EXCL
-        # Because this may trigger a load from storage, we must do it before
-        # truncating the file to save.
-        session_data = self._get_session(no_load=must_create)
-        try:
-            fd = os.open(self._key_to_file(self.session_key), flags)
-            try:
-                os.write(fd, self.encode(session_data))
-            finally:
-                os.close(fd)
-        except OSError, e:
-            if must_create and e.errno == errno.EEXIST:
-                raise CreateError
-            raise
-        except (IOError, EOFError):
-            pass
-
-    def exists(self, session_key):
-        if os.path.exists(self._key_to_file(session_key)):
-            return True
-        return False
-
-    def delete(self, session_key=None):
-        if session_key is None:
-            if self._session_key is None:
-                return
-            session_key = self._session_key
-        try:
-            os.unlink(self._key_to_file(session_key))
-        except OSError:
-            pass
-
-    def clean(self):
-        pass
diff --git a/webapp/django/contrib/sessions/middleware.py b/webapp/django/contrib/sessions/middleware.py
deleted file mode 100644
index ce6e678..0000000
--- a/webapp/django/contrib/sessions/middleware.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import time
-
-from django.conf import settings
-from django.utils.cache import patch_vary_headers
-from django.utils.http import cookie_date
-
-class SessionMiddleware(object):
-    def process_request(self, request):
-        engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
-        session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
-        request.session = engine.SessionStore(session_key)
-
-    def process_response(self, request, response):
-        # If request.session was modified, or if response.session was set, save
-        # those changes and set a session cookie.
-        try:
-            accessed = request.session.accessed
-            modified = request.session.modified
-        except AttributeError:
-            pass
-        else:
-            if accessed:
-                patch_vary_headers(response, ('Cookie',))
-            if modified or settings.SESSION_SAVE_EVERY_REQUEST:
-                if request.session.get_expire_at_browser_close():
-                    max_age = None
-                    expires = None
-                else:
-                    max_age = request.session.get_expiry_age()
-                    expires_time = time.time() + max_age
-                    expires = cookie_date(expires_time)
-                # Save the session data and refresh the client cookie.
-                request.session.save()
-                response.set_cookie(settings.SESSION_COOKIE_NAME,
-                        request.session.session_key, max_age=max_age,
-                        expires=expires, domain=settings.SESSION_COOKIE_DOMAIN,
-                        path=settings.SESSION_COOKIE_PATH,
-                        secure=settings.SESSION_COOKIE_SECURE or None)
-        return response
diff --git a/webapp/django/contrib/sessions/models.py b/webapp/django/contrib/sessions/models.py
deleted file mode 100644
index cf2865f..0000000
--- a/webapp/django/contrib/sessions/models.py
+++ /dev/null
@@ -1,67 +0,0 @@
-import base64
-import cPickle as pickle
-
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-from django.conf import settings
-from django.utils.hashcompat import md5_constructor
-
-
-class SessionManager(models.Manager):
-    def encode(self, session_dict):
-        """
-        Returns the given session dictionary pickled and encoded as a string.
-        """
-        pickled = pickle.dumps(session_dict)
-        pickled_md5 = md5_constructor(pickled + settings.SECRET_KEY).hexdigest()
-        return base64.encodestring(pickled + pickled_md5)
-
-    def save(self, session_key, session_dict, expire_date):
-        s = self.model(session_key, self.encode(session_dict), expire_date)
-        if session_dict:
-            s.save()
-        else:
-            s.delete() # Clear sessions with no data.
-        return s
-
-
-class Session(models.Model):
-    """
-    Django provides full support for anonymous sessions. The session
-    framework lets you store and retrieve arbitrary data on a
-    per-site-visitor basis. It stores data on the server side and
-    abstracts the sending and receiving of cookies. Cookies contain a
-    session ID -- not the data itself.
-
-    The Django sessions framework is entirely cookie-based. It does
-    not fall back to putting session IDs in URLs. This is an intentional
-    design decision. Not only does that behavior make URLs ugly, it makes
-    your site vulnerable to session-ID theft via the "Referer" header.
-
-    For complete documentation on using Sessions in your code, consult
-    the sessions documentation that is shipped with Django (also available
-    on the Django website).
-    """
-    session_key = models.CharField(_('session key'), max_length=40,
-                                   primary_key=True)
-    session_data = models.TextField(_('session data'))
-    expire_date = models.DateTimeField(_('expire date'))
-    objects = SessionManager()
-
-    class Meta:
-        db_table = 'django_session'
-        verbose_name = _('session')
-        verbose_name_plural = _('sessions')
-
-    def get_decoded(self):
-        encoded_data = base64.decodestring(self.session_data)
-        pickled, tamper_check = encoded_data[:-32], encoded_data[-32:]
-        if md5_constructor(pickled + settings.SECRET_KEY).hexdigest() != tamper_check:
-            from django.core.exceptions import SuspiciousOperation
-            raise SuspiciousOperation, "User tampered with session cookie."
-        try:
-            return pickle.loads(pickled)
-        # Unpickling can cause a variety of exceptions. If something happens,
-        # just return an empty dictionary (an empty session).
-        except:
-            return {}
diff --git a/webapp/django/contrib/sessions/tests.py b/webapp/django/contrib/sessions/tests.py
deleted file mode 100644
index 5efc17d..0000000
--- a/webapp/django/contrib/sessions/tests.py
+++ /dev/null
@@ -1,341 +0,0 @@
-r"""
-
->>> from django.conf import settings
->>> from django.contrib.sessions.backends.db import SessionStore as DatabaseSession
->>> from django.contrib.sessions.backends.cache import SessionStore as CacheSession
->>> from django.contrib.sessions.backends.file import SessionStore as FileSession
->>> from django.contrib.sessions.backends.base import SessionBase
->>> from django.contrib.sessions.models import Session
-
->>> db_session = DatabaseSession()
->>> db_session.modified
-False
->>> db_session.get('cat')
->>> db_session['cat'] = "dog"
->>> db_session.modified
-True
->>> db_session.pop('cat')
-'dog'
->>> db_session.pop('some key', 'does not exist')
-'does not exist'
->>> db_session.save()
->>> db_session.exists(db_session.session_key)
-True
->>> db_session.delete(db_session.session_key)
->>> db_session.exists(db_session.session_key)
-False
-
->>> db_session['foo'] = 'bar'
->>> db_session.save()
->>> db_session.exists(db_session.session_key)
-True
->>> prev_key = db_session.session_key
->>> db_session.flush()
->>> db_session.exists(prev_key)
-False
->>> db_session.session_key == prev_key
-False
->>> db_session.modified, db_session.accessed
-(True, True)
->>> db_session['a'], db_session['b'] = 'c', 'd'
->>> db_session.save()
->>> prev_key = db_session.session_key
->>> prev_data = db_session.items()
->>> db_session.cycle_key()
->>> db_session.session_key == prev_key
-False
->>> db_session.items() == prev_data
-True
-
-# Submitting an invalid session key (either by guessing, or if the db has
-# removed the key) results in a new key being generated.
->>> Session.objects.filter(pk=db_session.session_key).delete()
->>> db_session = DatabaseSession(db_session.session_key)
->>> db_session.save()
->>> DatabaseSession('1').get('cat')
-
->>> file_session = FileSession()
->>> file_session.modified
-False
->>> file_session['cat'] = "dog"
->>> file_session.modified
-True
->>> file_session.pop('cat')
-'dog'
->>> file_session.pop('some key', 'does not exist')
-'does not exist'
->>> file_session.save()
->>> file_session.exists(file_session.session_key)
-True
->>> file_session.delete(file_session.session_key)
->>> file_session.exists(file_session.session_key)
-False
->>> FileSession('1').get('cat')
-
->>> file_session['foo'] = 'bar'
->>> file_session.save()
->>> file_session.exists(file_session.session_key)
-True
->>> prev_key = file_session.session_key
->>> file_session.flush()
->>> file_session.exists(prev_key)
-False
->>> file_session.session_key == prev_key
-False
->>> file_session.modified, file_session.accessed
-(True, True)
->>> file_session['a'], file_session['b'] = 'c', 'd'
->>> file_session.save()
->>> prev_key = file_session.session_key
->>> prev_data = file_session.items()
->>> file_session.cycle_key()
->>> file_session.session_key == prev_key
-False
->>> file_session.items() == prev_data
-True
-
->>> Session.objects.filter(pk=file_session.session_key).delete()
->>> file_session = FileSession(file_session.session_key)
->>> file_session.save()
-
-# Make sure the file backend checks for a good storage dir
->>> settings.SESSION_FILE_PATH = "/if/this/directory/exists/you/have/a/weird/computer"
->>> FileSession()
-Traceback (innermost last):
-    ...
-ImproperlyConfigured: The session storage path '/if/this/directory/exists/you/have/a/weird/computer' doesn't exist. Please set your SESSION_FILE_PATH setting to an existing directory in which Django can store session data.
-
->>> cache_session = CacheSession()
->>> cache_session.modified
-False
->>> cache_session['cat'] = "dog"
->>> cache_session.modified
-True
->>> cache_session.pop('cat')
-'dog'
->>> cache_session.pop('some key', 'does not exist')
-'does not exist'
->>> cache_session.save()
->>> cache_session.delete(cache_session.session_key)
->>> cache_session.exists(cache_session.session_key)
-False
->>> cache_session['foo'] = 'bar'
->>> cache_session.save()
->>> cache_session.exists(cache_session.session_key)
-True
->>> prev_key = cache_session.session_key
->>> cache_session.flush()
->>> cache_session.exists(prev_key)
-False
->>> cache_session.session_key == prev_key
-False
->>> cache_session.modified, cache_session.accessed
-(True, True)
->>> cache_session['a'], cache_session['b'] = 'c', 'd'
->>> cache_session.save()
->>> prev_key = cache_session.session_key
->>> prev_data = cache_session.items()
->>> cache_session.cycle_key()
->>> cache_session.session_key == prev_key
-False
->>> cache_session.items() == prev_data
-True
-
->>> Session.objects.filter(pk=cache_session.session_key).delete()
->>> cache_session = CacheSession(cache_session.session_key)
->>> cache_session.save()
->>> CacheSession('1').get('cat')
-
->>> s = SessionBase()
->>> s._session['some key'] = 'exists' # Pre-populate the session with some data
->>> s.accessed = False   # Reset to pretend this wasn't accessed previously
-
->>> s.accessed, s.modified
-(False, False)
-
->>> s.pop('non existant key', 'does not exist')
-'does not exist'
->>> s.accessed, s.modified
-(True, False)
-
->>> s.setdefault('foo', 'bar')
-'bar'
->>> s.setdefault('foo', 'baz')
-'bar'
-
->>> s.accessed = False  # Reset the accessed flag
-
->>> s.pop('some key')
-'exists'
->>> s.accessed, s.modified
-(True, True)
-
->>> s.pop('some key', 'does not exist')
-'does not exist'
-
-
->>> s.get('update key', None)
-
-# test .update()
->>> s.modified = s.accessed = False   # Reset to pretend this wasn't accessed previously
->>> s.update({'update key':1})
->>> s.accessed, s.modified
-(True, True)
->>> s.get('update key', None)
-1
-
-# test .has_key()
->>> s.modified = s.accessed = False   # Reset to pretend this wasn't accessed previously
->>> s.has_key('update key')
-True
->>> s.accessed, s.modified
-(True, False)
-
-# test .values()
->>> s = SessionBase()
->>> s.values()
-[]
->>> s.accessed
-True
->>> s['x'] = 1
->>> s.values()
-[1]
-
-# test .iterkeys()
->>> s.accessed = False
->>> i = s.iterkeys()
->>> hasattr(i,'__iter__')
-True
->>> s.accessed
-True
->>> list(i)
-['x']
-
-# test .itervalues()
->>> s.accessed = False
->>> i = s.itervalues()
->>> hasattr(i,'__iter__')
-True
->>> s.accessed
-True
->>> list(i)
-[1]
-
-# test .iteritems()
->>> s.accessed = False
->>> i = s.iteritems()
->>> hasattr(i,'__iter__')
-True
->>> s.accessed
-True
->>> list(i)
-[('x', 1)]
-
-# test .clear()
->>> s.modified = s.accessed = False
->>> s.items()
-[('x', 1)]
->>> s.clear()
->>> s.items()
-[]
->>> s.accessed, s.modified
-(True, True)
-
-#########################
-# Custom session expiry #
-#########################
-
->>> from django.conf import settings
->>> from datetime import datetime, timedelta
-
->>> td10 = timedelta(seconds=10)
-
-# A normal session has a max age equal to settings
->>> s.get_expiry_age() == settings.SESSION_COOKIE_AGE
-True
-
-# So does a custom session with an idle expiration time of 0 (but it'll expire
-# at browser close)
->>> s.set_expiry(0)
->>> s.get_expiry_age() == settings.SESSION_COOKIE_AGE
-True
-
-# Custom session idle expiration time
->>> s.set_expiry(10)
->>> delta = s.get_expiry_date() - datetime.now()
->>> delta.seconds in (9, 10)
-True
->>> age = s.get_expiry_age()
->>> age in (9, 10)
-True
-
-# Custom session fixed expiry date (timedelta)
->>> s.set_expiry(td10)
->>> delta = s.get_expiry_date() - datetime.now()
->>> delta.seconds in (9, 10)
-True
->>> age = s.get_expiry_age()
->>> age in (9, 10)
-True
-
-# Custom session fixed expiry date (fixed datetime)
->>> s.set_expiry(datetime.now() + td10)
->>> delta = s.get_expiry_date() - datetime.now()
->>> delta.seconds in (9, 10)
-True
->>> age = s.get_expiry_age()
->>> age in (9, 10)
-True
-
-# Set back to default session age
->>> s.set_expiry(None)
->>> s.get_expiry_age() == settings.SESSION_COOKIE_AGE
-True
-
-# Allow to set back to default session age even if no alternate has been set
->>> s.set_expiry(None)
-
-
-# We're changing the setting then reverting back to the original setting at the
-# end of these tests.
->>> original_expire_at_browser_close = settings.SESSION_EXPIRE_AT_BROWSER_CLOSE
->>> settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = False
-
-# Custom session age
->>> s.set_expiry(10)
->>> s.get_expire_at_browser_close()
-False
-
-# Custom expire-at-browser-close
->>> s.set_expiry(0)
->>> s.get_expire_at_browser_close()
-True
-
-# Default session age
->>> s.set_expiry(None)
->>> s.get_expire_at_browser_close()
-False
-
->>> settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = True
-
-# Custom session age
->>> s.set_expiry(10)
->>> s.get_expire_at_browser_close()
-False
-
-# Custom expire-at-browser-close
->>> s.set_expiry(0)
->>> s.get_expire_at_browser_close()
-True
-
-# Default session age
->>> s.set_expiry(None)
->>> s.get_expire_at_browser_close()
-True
-
->>> settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = original_expire_at_browser_close
-"""
-
-if __name__ == '__main__':
-    import doctest
-    doctest.testmod()
diff --git a/webapp/django/contrib/sitemaps/__init__.py b/webapp/django/contrib/sitemaps/__init__.py
deleted file mode 100644
index 2d0e047..0000000
--- a/webapp/django/contrib/sitemaps/__init__.py
+++ /dev/null
@@ -1,100 +0,0 @@
-from django.core import urlresolvers, paginator
-import urllib
-
-PING_URL = "http://www.google.com/webmasters/tools/ping"
-
-class SitemapNotFound(Exception):
-    pass
-
-def ping_google(sitemap_url=None, ping_url=PING_URL):
-    """
-    Alerts Google that the sitemap for the current site has been updated.
-    If sitemap_url is provided, it should be an absolute path to the sitemap
-    for this site -- e.g., '/sitemap.xml'. If sitemap_url is not provided, this
-    function will attempt to deduce it by using urlresolvers.reverse().
-    """
-    if sitemap_url is None:
-        try:
-            # First, try to get the "index" sitemap URL.
-            sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.index')
-        except urlresolvers.NoReverseMatch:
-            try:
-                # Next, try for the "global" sitemap URL.
-                sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.sitemap')
-            except urlresolvers.NoReverseMatch:
-                pass
-
-    if sitemap_url is None:
-        raise SitemapNotFound("You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected.")
-
-    from django.contrib.sites.models import Site
-    current_site = Site.objects.get_current()
-    url = "http://%s%s" % (current_site.domain, sitemap_url)
-    params = urllib.urlencode({'sitemap':url})
-    urllib.urlopen("%s?%s" % (ping_url, params))
-
-class Sitemap:
-    # This limit is defined by Google. See the index documentation at
-    # http://sitemaps.org/protocol.php#index.
-    limit = 50000
-
-    def __get(self, name, obj, default=None):
-        try:
-            attr = getattr(self, name)
-        except AttributeError:
-            return default
-        if callable(attr):
-            return attr(obj)
-        return attr
-
-    def items(self):
-        return []
-
-    def location(self, obj):
-        return obj.get_absolute_url()
-
-    def _get_paginator(self):
-        if not hasattr(self, "_paginator"):
-            self._paginator = paginator.Paginator(self.items(), self.limit)
-        return self._paginator
-    paginator = property(_get_paginator)
-
-    def get_urls(self, page=1):
-        from django.contrib.sites.models import Site
-        current_site = Site.objects.get_current()
-        urls = []
-        for item in self.paginator.page(page).object_list:
-            loc = "http://%s%s" % (current_site.domain, self.__get('location', item))
-            url_info = {
-                'location':   loc,
-                'lastmod':    self.__get('lastmod', item, None),
-                'changefreq': self.__get('changefreq', item, None),
-                'priority':   self.__get('priority', item, None)
-            }
-            urls.append(url_info)
-        return urls
-
-class FlatPageSitemap(Sitemap):
-    def items(self):
-        from django.contrib.sites.models import Site
-        current_site = Site.objects.get_current()
-        return current_site.flatpage_set.all()
-
-class GenericSitemap(Sitemap):
-    priority = None
-    changefreq = None
-
-    def __init__(self, info_dict, priority=None, changefreq=None):
-        self.queryset = info_dict['queryset']
-        self.date_field = info_dict.get('date_field', None)
-        self.priority = priority
-        self.changefreq = changefreq
-
-    def items(self):
-        # Make sure to return a clone; we don't want premature evaluation.
-        return self.queryset.filter()
-
-    def lastmod(self, item):
-        if self.date_field is not None:
-            return getattr(item, self.date_field)
-        return None
diff --git a/webapp/django/contrib/sitemaps/management/__init__.py b/webapp/django/contrib/sitemaps/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/sitemaps/management/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/sitemaps/management/commands/__init__.py b/webapp/django/contrib/sitemaps/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/sitemaps/management/commands/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/sitemaps/management/commands/ping_google.py b/webapp/django/contrib/sitemaps/management/commands/ping_google.py
deleted file mode 100644
index afff04b..0000000
--- a/webapp/django/contrib/sitemaps/management/commands/ping_google.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.core.management.base import BaseCommand
-from django.contrib.sitemaps import ping_google
-
-
-class Command(BaseCommand):
-    help = "Ping google with an updated sitemap, pass optional url of sitemap"
-
-    def execute(self, *args, **options):
-        if len(args) == 1:
-            sitemap_url = args[0]
-        else:
-            sitemap_url = None
-        ping_google(sitemap_url=sitemap_url)
-
diff --git a/webapp/django/contrib/sitemaps/templates/sitemap.xml b/webapp/django/contrib/sitemaps/templates/sitemap.xml
deleted file mode 100644
index c0d529d..0000000
--- a/webapp/django/contrib/sitemaps/templates/sitemap.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-{% autoescape off %}<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-{% spaceless %}
-{% for url in urlset %}
-  <url>
-    <loc>{{ url.location|escape }}</loc>
-    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
-    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
-    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
-   </url>
-{% endfor %}
-{% endspaceless %}
-</urlset>
-{% endautoescape %}
diff --git a/webapp/django/contrib/sitemaps/templates/sitemap_index.xml b/webapp/django/contrib/sitemaps/templates/sitemap_index.xml
deleted file mode 100644
index 497ae8b..0000000
--- a/webapp/django/contrib/sitemaps/templates/sitemap_index.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-{% autoescape off %}<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-{% for location in sitemaps %}<sitemap><loc>{{ location|escape }}</loc></sitemap>{% endfor %}
-</sitemapindex>
-{% endautoescape %}
diff --git a/webapp/django/contrib/sitemaps/views.py b/webapp/django/contrib/sitemaps/views.py
deleted file mode 100644
index 7a5fe38..0000000
--- a/webapp/django/contrib/sitemaps/views.py
+++ /dev/null
@@ -1,45 +0,0 @@
-from django.http import HttpResponse, Http404
-from django.template import loader
-from django.contrib.sites.models import Site
-from django.core import urlresolvers
-from django.utils.encoding import smart_str
-from django.core.paginator import EmptyPage, PageNotAnInteger
-
-def index(request, sitemaps):
-    current_site = Site.objects.get_current()
-    sites = []
-    protocol = request.is_secure() and 'https' or 'http'
-    for section, site in sitemaps.items():
-        if callable(site):
-            pages = site().paginator.num_pages
-        else:
-            pages = site.paginator.num_pages
-        sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.sitemap', kwargs={'section': section})
-        sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url))
-        if pages > 1:
-            for page in range(2, pages+1):
-                sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))
-    xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
-    return HttpResponse(xml, mimetype='application/xml')
-
-def sitemap(request, sitemaps, section=None):
-    maps, urls = [], []
-    if section is not None:
-        if section not in sitemaps:
-            raise Http404("No sitemap available for section: %r" % section)
-        maps.append(sitemaps[section])
-    else:
-        maps = sitemaps.values()
-    page = request.GET.get("p", 1)
-    for site in maps:
-        try:
-            if callable(site):
-                urls.extend(site().get_urls(page))
-            else:
-                urls.extend(site.get_urls(page))
-        except EmptyPage:
-            raise Http404("Page %s empty" % page)
-        except PageNotAnInteger:
-            raise Http404("No page '%s'" % page)
-    xml = smart_str(loader.render_to_string('sitemap.xml', {'urlset': urls}))
-    return HttpResponse(xml, mimetype='application/xml')
diff --git a/webapp/django/contrib/sites/__init__.py b/webapp/django/contrib/sites/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/sites/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/sites/admin.py b/webapp/django/contrib/sites/admin.py
deleted file mode 100644
index 2442c24..0000000
--- a/webapp/django/contrib/sites/admin.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django.contrib import admin
-from django.contrib.sites.models import Site
-
-
-class SiteAdmin(admin.ModelAdmin):
-    list_display = ('domain', 'name')
-    search_fields = ('domain', 'name')
-
-admin.site.register(Site, SiteAdmin)
\ No newline at end of file
diff --git a/webapp/django/contrib/sites/management.py b/webapp/django/contrib/sites/management.py
deleted file mode 100644
index 25c0760..0000000
--- a/webapp/django/contrib/sites/management.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""
-Creates the default Site object.
-"""
-
-from django.db.models import signals
-from django.contrib.sites.models import Site
-from django.contrib.sites import models as site_app
-
-def create_default_site(app, created_models, verbosity, **kwargs):
-    if Site in created_models:
-        if verbosity >= 2:
-            print "Creating example.com Site object"
-        s = Site(domain="example.com", name="example.com")
-        s.save()
-    Site.objects.clear_cache()
-
-signals.post_syncdb.connect(create_default_site, sender=site_app)
diff --git a/webapp/django/contrib/sites/managers.py b/webapp/django/contrib/sites/managers.py
deleted file mode 100644
index d49244f..0000000
--- a/webapp/django/contrib/sites/managers.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.conf import settings
-from django.db import models
-from django.db.models.fields import FieldDoesNotExist
-
-class CurrentSiteManager(models.Manager):
-    "Use this to limit objects to those associated with the current site."
-    def __init__(self, field_name='site'):
-        super(CurrentSiteManager, self).__init__()
-        self.__field_name = field_name
-        self.__is_validated = False
-
-    def get_query_set(self):
-        if not self.__is_validated:
-            try:
-                self.model._meta.get_field(self.__field_name)
-            except FieldDoesNotExist:
-                raise ValueError, "%s couldn't find a field named %s in %s." % \
-                    (self.__class__.__name__, self.__field_name, self.model._meta.object_name)
-            self.__is_validated = True
-        return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})
diff --git a/webapp/django/contrib/sites/models.py b/webapp/django/contrib/sites/models.py
deleted file mode 100644
index c44e5ce..0000000
--- a/webapp/django/contrib/sites/models.py
+++ /dev/null
@@ -1,71 +0,0 @@
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-
-SITE_CACHE = {}
-
-class SiteManager(models.Manager):
-    def get_current(self):
-        """
-        Returns the current ``Site`` based on the SITE_ID in the
-        project's settings. The ``Site`` object is cached the first
-        time it's retrieved from the database.
-        """
-        from django.conf import settings
-        try:
-            sid = settings.SITE_ID
-        except AttributeError:
-            from django.core.exceptions import ImproperlyConfigured
-            raise ImproperlyConfigured("You're using the Django \"sites framework\" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting to fix this error.")
-        try:
-            current_site = SITE_CACHE[sid]
-        except KeyError:
-            current_site = self.get(pk=sid)
-            SITE_CACHE[sid] = current_site
-        return current_site
-
-    def clear_cache(self):
-        """Clears the ``Site`` object cache."""
-        global SITE_CACHE
-        SITE_CACHE = {}
-
-class Site(models.Model):
-    domain = models.CharField(_('domain name'), max_length=100)
-    name = models.CharField(_('display name'), max_length=50)
-    objects = SiteManager()
-
-    class Meta:
-        db_table = 'django_site'
-        verbose_name = _('site')
-        verbose_name_plural = _('sites')
-        ordering = ('domain',)
-
-    def __unicode__(self):
-        return self.domain
-    
-    def delete(self):
-        pk = self.pk
-        super(Site, self).delete()
-        try:
-            del(SITE_CACHE[pk])
-        except KeyError:
-            pass
-
-class RequestSite(object):
-    """
-    A class that shares the primary interface of Site (i.e., it has
-    ``domain`` and ``name`` attributes) but gets its data from a Django
-    HttpRequest object rather than from a database.
-
-    The save() and delete() methods raise NotImplementedError.
-    """
-    def __init__(self, request):
-        self.domain = self.name = request.get_host()
-
-    def __unicode__(self):
-        return self.domain
-
-    def save(self):
-        raise NotImplementedError('RequestSite cannot be saved.')
-
-    def delete(self):
-        raise NotImplementedError('RequestSite cannot be deleted.')
diff --git a/webapp/django/contrib/sites/tests.py b/webapp/django/contrib/sites/tests.py
deleted file mode 100644
index f39f7a2..0000000
--- a/webapp/django/contrib/sites/tests.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""
->>> from django.contrib.sites.models import Site
->>> from django.conf import settings
->>> Site(id=settings.SITE_ID, domain="example.com", name="example.com").save()
- 	
->>> # Make sure that get_current() does not return a deleted Site object.
->>> s = Site.objects.get_current()
->>> isinstance(s, Site)
-True
-
->>> s.delete()
->>> Site.objects.get_current()
-Traceback (most recent call last):
-...
-DoesNotExist: Site matching query does not exist.
-"""
diff --git a/webapp/django/contrib/syndication/__init__.py b/webapp/django/contrib/syndication/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/syndication/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/syndication/feeds.py b/webapp/django/contrib/syndication/feeds.py
deleted file mode 100644
index a1f0810..0000000
--- a/webapp/django/contrib/syndication/feeds.py
+++ /dev/null
@@ -1,178 +0,0 @@
-from datetime import datetime, timedelta
-
-from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
-from django.template import loader, Template, TemplateDoesNotExist
-from django.contrib.sites.models import Site, RequestSite
-from django.utils import feedgenerator
-from django.utils.tzinfo import FixedOffset
-from django.utils.encoding import smart_unicode, iri_to_uri
-from django.conf import settings         
-from django.template import RequestContext
-
-def add_domain(domain, url):
-    if not (url.startswith('http://') or url.startswith('https://')):
-        # 'url' must already be ASCII and URL-quoted, so no need for encoding
-        # conversions here.
-        url = iri_to_uri(u'http://%s%s' % (domain, url))
-    return url
-
-class FeedDoesNotExist(ObjectDoesNotExist):
-    pass
-
-class Feed(object):
-    item_pubdate = None
-    item_enclosure_url = None
-    feed_type = feedgenerator.DefaultFeed
-    title_template = None
-    description_template = None
-
-    def __init__(self, slug, request):
-        self.slug = slug
-        self.request = request
-        self.feed_url = request.path
-        self.title_template_name = self.title_template or ('feeds/%s_title.html' % slug)
-        self.description_template_name = self.description_template or ('feeds/%s_description.html' % slug)
-
-    def item_link(self, item):
-        try:
-            return item.get_absolute_url()
-        except AttributeError:
-            raise ImproperlyConfigured, "Give your %s class a get_absolute_url() method, or define an item_link() method in your Feed class." % item.__class__.__name__
-
-    def __get_dynamic_attr(self, attname, obj, default=None):
-        try:
-            attr = getattr(self, attname)
-        except AttributeError:
-            return default
-        if callable(attr):
-            # Check func_code.co_argcount rather than try/excepting the
-            # function and catching the TypeError, because something inside
-            # the function may raise the TypeError. This technique is more
-            # accurate.
-            if hasattr(attr, 'func_code'):
-                argcount = attr.func_code.co_argcount
-            else:
-                argcount = attr.__call__.func_code.co_argcount
-            if argcount == 2: # one argument is 'self'
-                return attr(obj)
-            else:
-                return attr()
-        return attr
-
-    def feed_extra_kwargs(self, obj):
-        """
-        Returns an extra keyword arguments dictionary that is used when
-        initializing the feed generator.
-        """
-        return {}
-
-    def item_extra_kwargs(self, item):
-        """
-        Returns an extra keyword arguments dictionary that is used with
-        the `add_item` call of the feed generator.
-        """
-        return {}
-
-    def get_object(self, bits):
-        return None
-
-    def get_feed(self, url=None):
-        """
-        Returns a feedgenerator.DefaultFeed object, fully populated, for
-        this feed. Raises FeedDoesNotExist for invalid parameters.
-        """
-        if url:
-            bits = url.split('/')
-        else:
-            bits = []
-
-        try:
-            obj = self.get_object(bits)
-        except ObjectDoesNotExist:
-            raise FeedDoesNotExist
-
-        if Site._meta.installed:
-            current_site = Site.objects.get_current()
-        else:
-            current_site = RequestSite(self.request)
-        
-        link = self.__get_dynamic_attr('link', obj)
-        link = add_domain(current_site.domain, link)
-
-        feed = self.feed_type(
-            title = self.__get_dynamic_attr('title', obj),
-            subtitle = self.__get_dynamic_attr('subtitle', obj),
-            link = link,
-            description = self.__get_dynamic_attr('description', obj),
-            language = settings.LANGUAGE_CODE.decode(),
-            feed_url = add_domain(current_site.domain,
-                                  self.__get_dynamic_attr('feed_url', obj)),
-            author_name = self.__get_dynamic_attr('author_name', obj),
-            author_link = self.__get_dynamic_attr('author_link', obj),
-            author_email = self.__get_dynamic_attr('author_email', obj),
-            categories = self.__get_dynamic_attr('categories', obj),
-            feed_copyright = self.__get_dynamic_attr('feed_copyright', obj),
-            feed_guid = self.__get_dynamic_attr('feed_guid', obj),
-            ttl = self.__get_dynamic_attr('ttl', obj),
-            **self.feed_extra_kwargs(obj)
-        )
-
-        try:
-            title_tmp = loader.get_template(self.title_template_name)
-        except TemplateDoesNotExist:
-            title_tmp = Template('{{ obj }}')
-        try:
-            description_tmp = loader.get_template(self.description_template_name)
-        except TemplateDoesNotExist:
-            description_tmp = Template('{{ obj }}')
-
-        for item in self.__get_dynamic_attr('items', obj):
-            link = add_domain(current_site.domain, self.__get_dynamic_attr('item_link', item))
-            enc = None
-            enc_url = self.__get_dynamic_attr('item_enclosure_url', item)
-            if enc_url:
-                enc = feedgenerator.Enclosure(
-                    url = smart_unicode(enc_url),
-                    length = smart_unicode(self.__get_dynamic_attr('item_enclosure_length', item)),
-                    mime_type = smart_unicode(self.__get_dynamic_attr('item_enclosure_mime_type', item))
-                )
-            author_name = self.__get_dynamic_attr('item_author_name', item)
-            if author_name is not None:
-                author_email = self.__get_dynamic_attr('item_author_email', item)
-                author_link = self.__get_dynamic_attr('item_author_link', item)
-            else:
-                author_email = author_link = None
-
-            pubdate = self.__get_dynamic_attr('item_pubdate', item)
-            if pubdate:
-                now = datetime.now()
-                utcnow = datetime.utcnow()
-
-                # Must always subtract smaller time from larger time here.
-                if utcnow > now:
-                    sign = -1
-                    tzDifference = (utcnow - now)
-                else:
-                    sign = 1
-                    tzDifference = (now - utcnow)
-
-                # Round the timezone offset to the nearest half hour.
-                tzOffsetMinutes = sign * ((tzDifference.seconds / 60 + 15) / 30) * 30
-                tzOffset = timedelta(minutes=tzOffsetMinutes)
-                pubdate = pubdate.replace(tzinfo=FixedOffset(tzOffset))
-
-            feed.add_item(
-                title = title_tmp.render(RequestContext(self.request, {'obj': item, 'site': current_site})),
-                link = link,
-                description = description_tmp.render(RequestContext(self.request, {'obj': item, 'site': current_site})),
-                unique_id = self.__get_dynamic_attr('item_guid', item, link),
-                enclosure = enc,
-                pubdate = pubdate,
-                author_name = author_name,
-                author_email = author_email,
-                author_link = author_link,
-                categories = self.__get_dynamic_attr('item_categories', item),
-                item_copyright = self.__get_dynamic_attr('item_copyright', item),
-                **self.item_extra_kwargs(item)
-            )
-        return feed
diff --git a/webapp/django/contrib/syndication/views.py b/webapp/django/contrib/syndication/views.py
deleted file mode 100644
index 423d333..0000000
--- a/webapp/django/contrib/syndication/views.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from django.contrib.syndication import feeds
-from django.http import HttpResponse, Http404
-
-def feed(request, url, feed_dict=None):
-    if not feed_dict:
-        raise Http404, "No feeds are registered."
-
-    try:
-        slug, param = url.split('/', 1)
-    except ValueError:
-        slug, param = url, ''
-
-    try:
-        f = feed_dict[slug]
-    except KeyError:
-        raise Http404, "Slug %r isn't registered." % slug
-
-    try:
-        feedgen = f(slug, request).get_feed(param)
-    except feeds.FeedDoesNotExist:
-        raise Http404, "Invalid feed parameters. Slug %r is valid, but other parameters, or lack thereof, are not." % slug
-
-    response = HttpResponse(mimetype=feedgen.mime_type)
-    feedgen.write(response, 'utf-8')
-    return response
diff --git a/webapp/django/contrib/webdesign/__init__.py b/webapp/django/contrib/webdesign/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/webdesign/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/webdesign/lorem_ipsum.py b/webapp/django/contrib/webdesign/lorem_ipsum.py
deleted file mode 100644
index 4ad175d..0000000
--- a/webapp/django/contrib/webdesign/lorem_ipsum.py
+++ /dev/null
@@ -1,101 +0,0 @@
-"""
-Utility functions for generating "lorem ipsum" Latin text.
-"""
-
-import random
-
-COMMON_P = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
-
-WORDS = ('exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet',
-        'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi',
-        'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi',
-        'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos',
-        'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum',
-        'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus',
-        'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus',
-        'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum',
-        'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem',
-        'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus',
-        'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente',
-        'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet',
-        'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta',
-        'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima',
-        'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim',
-        'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores',
-        'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias',
-        'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea',
-        'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt',
-        'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate',
-        'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius',
-        'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos',
-        'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore',
-        'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo',
-        'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi',
-        'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam',
-        'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique',
-        'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere',
-        'maxime', 'corrupti')
-
-COMMON_WORDS = ('lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur',
-        'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt',
-        'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua')
-
-def sentence():
-    """
-    Returns a randomly generated sentence of lorem ipsum text.
-
-    The first word is capitalized, and the sentence ends in either a period or
-    question mark. Commas are added at random.
-    """
-    # Determine the number of comma-separated sections and number of words in
-    # each section for this sentence.
-    sections = [u' '.join(random.sample(WORDS, random.randint(3, 12))) for i in range(random.randint(1, 5))]
-    s = u', '.join(sections)
-    # Convert to sentence case and add end punctuation.
-    return u'%s%s%s' % (s[0].upper(), s[1:], random.choice('?.'))
-
-def paragraph():
-    """
-    Returns a randomly generated paragraph of lorem ipsum text.
-
-    The paragraph consists of between 1 and 4 sentences, inclusive.
-    """
-    return u' '.join([sentence() for i in range(random.randint(1, 4))])
-
-def paragraphs(count, common=True):
-    """
-    Returns a list of paragraphs as returned by paragraph().
-
-    If `common` is True, then the first paragraph will be the standard
-    'lorem ipsum' paragraph. Otherwise, the first paragraph will be random
-    Latin text. Either way, subsequent paragraphs will be random Latin text.
-    """
-    paras = []
-    for i in range(count):
-        if common and i == 0:
-            paras.append(COMMON_P)
-        else:
-            paras.append(paragraph())
-    return paras
-
-def words(count, common=True):
-    """
-    Returns a string of `count` lorem ipsum words separated by a single space.
-
-    If `common` is True, then the first 19 words will be the standard
-    'lorem ipsum' words. Otherwise, all words will be selected randomly.
-    """
-    if common:
-        word_list = list(COMMON_WORDS)
-    else:
-        word_list = []
-    c = len(word_list)
-    if count > c:
-        count -= c
-        while count > 0:
-            c = min(count, len(WORDS))
-            count -= c
-            word_list += random.sample(WORDS, c)
-    else:
-        word_list = word_list[:count]
-    return u' '.join(word_list)
diff --git a/webapp/django/contrib/webdesign/models.py b/webapp/django/contrib/webdesign/models.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/webdesign/models.py
+++ /dev/null
diff --git a/webapp/django/contrib/webdesign/templatetags/__init__.py b/webapp/django/contrib/webdesign/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/contrib/webdesign/templatetags/__init__.py
+++ /dev/null
diff --git a/webapp/django/contrib/webdesign/templatetags/webdesign.py b/webapp/django/contrib/webdesign/templatetags/webdesign.py
deleted file mode 100644
index 1eb1790..0000000
--- a/webapp/django/contrib/webdesign/templatetags/webdesign.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from django.contrib.webdesign.lorem_ipsum import words, paragraphs
-from django import template
-
-register = template.Library()
-
-class LoremNode(template.Node):
-    def __init__(self, count, method, common):
-        self.count, self.method, self.common = count, method, common
-
-    def render(self, context):
-        try:
-            count = int(self.count.resolve(context))
-        except (ValueError, TypeError):
-            count = 1
-        if self.method == 'w':
-            return words(count, common=self.common)
-        else:
-            paras = paragraphs(count, common=self.common)
-        if self.method == 'p':
-            paras = ['<p>%s</p>' % p for p in paras]
-        return u'\n\n'.join(paras)
-
-#@register.tag
-def lorem(parser, token):
-    """
-    Creates random Latin text useful for providing test data in templates.
-
-    Usage format::
-
-        {% lorem [count] [method] [random] %}
-
-    ``count`` is a number (or variable) containing the number of paragraphs or
-    words to generate (default is 1).
-
-    ``method`` is either ``w`` for words, ``p`` for HTML paragraphs, ``b`` for
-    plain-text paragraph blocks (default is ``b``).
-
-    ``random`` is the word ``random``, which if given, does not use the common
-    paragraph (starting "Lorem ipsum dolor sit amet, consectetuer...").
-
-    Examples:
-        * ``{% lorem %}`` will output the common "lorem ipsum" paragraph
-        * ``{% lorem 3 p %}`` will output the common "lorem ipsum" paragraph
-          and two random paragraphs each wrapped in HTML ``<p>`` tags
-        * ``{% lorem 2 w random %}`` will output two random latin words
-    """
-    bits = list(token.split_contents())
-    tagname = bits[0]
-    # Random bit
-    common = bits[-1] != 'random'
-    if not common:
-        bits.pop()
-    # Method bit
-    if bits[-1] in ('w', 'p', 'b'):
-        method = bits.pop()
-    else:
-        method = 'b'
-    # Count bit
-    if len(bits) > 1:
-        count = bits.pop()
-    else:
-        count = '1'
-    count = parser.compile_filter(count)
-    if len(bits) != 1:
-        raise template.TemplateSyntaxError("Incorrect format for %r tag" % tagname)
-    return LoremNode(count, method, common)
-lorem = register.tag(lorem)
diff --git a/webapp/django/contrib/webdesign/tests.py b/webapp/django/contrib/webdesign/tests.py
deleted file mode 100644
index d155620..0000000
--- a/webapp/django/contrib/webdesign/tests.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- coding: utf-8 -*-
-
-r"""
->>> words(7)
-u'lorem ipsum dolor sit amet consectetur adipisicing'
-
->>> paragraphs(1)
-['Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.']
-
->>> from django.template import loader, Context
->>> t = loader.get_template_from_string("{% load webdesign %}{% lorem 3 w %}")
->>> t.render(Context({}))
-u'lorem ipsum dolor'
-"""
-
-from django.contrib.webdesign.lorem_ipsum import *
-
-if __name__ == '__main__':
-    import doctest
-    doctest.testmod()
diff --git a/webapp/django/core/__init__.py b/webapp/django/core/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/core/__init__.py
+++ /dev/null
diff --git a/webapp/django/core/cache/__init__.py b/webapp/django/core/cache/__init__.py
deleted file mode 100644
index 93e7adb..0000000
--- a/webapp/django/core/cache/__init__.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""
-Caching framework.
-
-This package defines set of cache backends that all conform to a simple API.
-In a nutshell, a cache is a set of values -- which can be any object that
-may be pickled -- identified by string keys.  For the complete API, see
-the abstract BaseCache class in django.core.cache.backends.base.
-
-Client code should not access a cache backend directly; instead it should
-either use the "cache" variable made available here, or it should use the
-get_cache() function made available here. get_cache() takes a backend URI
-(e.g. "memcached://127.0.0.1:11211/") and returns an instance of a backend
-cache class.
-
-See docs/cache.txt for information on the public API.
-"""
-
-from cgi import parse_qsl
-from django.conf import settings
-from django.core import signals
-from django.core.cache.backends.base import InvalidCacheBackendError
-
-# Name for use in settings file --> name of module in "backends" directory.
-# Any backend scheme that is not in this dictionary is treated as a Python
-# import path to a custom backend.
-BACKENDS = {
-    'memcached': 'memcached',
-    'locmem': 'locmem',
-    'file': 'filebased',
-    'db': 'db',
-    'dummy': 'dummy',
-}
-
-def get_cache(backend_uri):
-    if backend_uri.find(':') == -1:
-        raise InvalidCacheBackendError, "Backend URI must start with scheme://"
-    scheme, rest = backend_uri.split(':', 1)
-    if not rest.startswith('//'):
-        raise InvalidCacheBackendError, "Backend URI must start with scheme://"
-
-    host = rest[2:]
-    qpos = rest.find('?')
-    if qpos != -1:
-        params = dict(parse_qsl(rest[qpos+1:]))
-        host = rest[2:qpos]
-    else:
-        params = {}
-    if host.endswith('/'):
-        host = host[:-1]
-
-    if scheme in BACKENDS:
-        module = __import__('django.core.cache.backends.%s' % BACKENDS[scheme], {}, {}, [''])
-    else:
-        module = __import__(scheme, {}, {}, [''])
-    return getattr(module, 'CacheClass')(host, params)
-
-cache = get_cache(settings.CACHE_BACKEND)
-
-# Some caches -- pythont-memcached in particular -- need to do a cleanup at the
-# end of a request cycle. If the cache provides a close() method, wire it up
-# here.
-if hasattr(cache, 'close'):
-    signals.request_finished.connect(cache.close)
-
diff --git a/webapp/django/core/cache/backends/__init__.py b/webapp/django/core/cache/backends/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/core/cache/backends/__init__.py
+++ /dev/null
diff --git a/webapp/django/core/cache/backends/base.py b/webapp/django/core/cache/backends/base.py
deleted file mode 100644
index cb5fe06..0000000
--- a/webapp/django/core/cache/backends/base.py
+++ /dev/null
@@ -1,75 +0,0 @@
-"Base Cache class."
-
-from django.core.exceptions import ImproperlyConfigured
-
-class InvalidCacheBackendError(ImproperlyConfigured):
-    pass
-
-class BaseCache(object):
-    def __init__(self, params):
-        timeout = params.get('timeout', 300)
-        try:
-            timeout = int(timeout)
-        except (ValueError, TypeError):
-            timeout = 300
-        self.default_timeout = timeout
-
-    def add(self, key, value, timeout=None):
-        """
-        Set a value in the cache if the key does not already exist. If
-        timeout is given, that timeout will be used for the key; otherwise
-        the default cache timeout will be used.
-
-        Returns True if the value was stored, False otherwise.
-        """
-        raise NotImplementedError
-
-    def get(self, key, default=None):
-        """
-        Fetch a given key from the cache. If the key does not exist, return
-        default, which itself defaults to None.
-        """
-        raise NotImplementedError
-
-    def set(self, key, value, timeout=None):
-        """
-        Set a value in the cache. If timeout is given, that timeout will be
-        used for the key; otherwise the default cache timeout will be used.
-        """
-        raise NotImplementedError
-
-    def delete(self, key):
-        """
-        Delete a key from the cache, failing silently.
-        """
-        raise NotImplementedError
-
-    def get_many(self, keys):
-        """
-        Fetch a bunch of keys from the cache. For certain backends (memcached,
-        pgsql) this can be *much* faster when fetching multiple values.
-
-        Returns a dict mapping each key in keys to its value. If the given
-        key is missing, it will be missing from the response dict.
-        """
-        d = {}
-        for k in keys:
-            val = self.get(k)
-            if val is not None:
-                d[k] = val
-        return d
-
-    def has_key(self, key):
-        """
-        Returns True if the key is in the cache and has not expired.
-        """
-        return self.get(key) is not None
-
-    def __contains__(self, key):
-        """
-        Returns True if the key is in the cache and has not expired.
-        """
-        # This is a separate method, rather than just a copy of has_key(),
-        # so that it always has the same functionality as has_key(), even
-        # if a subclass overrides it.
-        return self.has_key(key)
diff --git a/webapp/django/core/cache/backends/db.py b/webapp/django/core/cache/backends/db.py
deleted file mode 100644
index d2b422a..0000000
--- a/webapp/django/core/cache/backends/db.py
+++ /dev/null
@@ -1,89 +0,0 @@
-"Database cache backend."
-
-from django.core.cache.backends.base import BaseCache
-from django.db import connection, transaction, DatabaseError
-import base64, time
-from datetime import datetime
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-
-class CacheClass(BaseCache):
-    def __init__(self, table, params):
-        BaseCache.__init__(self, params)
-        self._table = table
-        max_entries = params.get('max_entries', 300)
-        try:
-            self._max_entries = int(max_entries)
-        except (ValueError, TypeError):
-            self._max_entries = 300
-        cull_frequency = params.get('cull_frequency', 3)
-        try:
-            self._cull_frequency = int(cull_frequency)
-        except (ValueError, TypeError):
-            self._cull_frequency = 3
-
-    def get(self, key, default=None):
-        cursor = connection.cursor()
-        cursor.execute("SELECT cache_key, value, expires FROM %s WHERE cache_key = %%s" % self._table, [key])
-        row = cursor.fetchone()
-        if row is None:
-            return default
-        now = datetime.now()
-        if row[2] < now:
-            cursor.execute("DELETE FROM %s WHERE cache_key = %%s" % self._table, [key])
-            transaction.commit_unless_managed()
-            return default
-        return pickle.loads(base64.decodestring(row[1]))
-
-    def set(self, key, value, timeout=None):
-        self._base_set('set', key, value, timeout)
-
-    def add(self, key, value, timeout=None):
-        return self._base_set('add', key, value, timeout)
-
-    def _base_set(self, mode, key, value, timeout=None):
-        if timeout is None:
-            timeout = self.default_timeout
-        cursor = connection.cursor()
-        cursor.execute("SELECT COUNT(*) FROM %s" % self._table)
-        num = cursor.fetchone()[0]
-        now = datetime.now().replace(microsecond=0)
-        exp = datetime.fromtimestamp(time.time() + timeout).replace(microsecond=0)
-        if num > self._max_entries:
-            self._cull(cursor, now)
-        encoded = base64.encodestring(pickle.dumps(value, 2)).strip()
-        cursor.execute("SELECT cache_key FROM %s WHERE cache_key = %%s" % self._table, [key])
-        try:
-            if mode == 'set' and cursor.fetchone():
-                cursor.execute("UPDATE %s SET value = %%s, expires = %%s WHERE cache_key = %%s" % self._table, [encoded, str(exp), key])
-            else:
-                cursor.execute("INSERT INTO %s (cache_key, value, expires) VALUES (%%s, %%s, %%s)" % self._table, [key, encoded, str(exp)])
-        except DatabaseError:
-            # To be threadsafe, updates/inserts are allowed to fail silently
-            return False
-        else:
-            transaction.commit_unless_managed()
-            return True
-
-    def delete(self, key):
-        cursor = connection.cursor()
-        cursor.execute("DELETE FROM %s WHERE cache_key = %%s" % self._table, [key])
-        transaction.commit_unless_managed()
-
-    def has_key(self, key):
-        cursor = connection.cursor()
-        cursor.execute("SELECT cache_key FROM %s WHERE cache_key = %%s" % self._table, [key])
-        return cursor.fetchone() is not None
-
-    def _cull(self, cursor, now):
-        if self._cull_frequency == 0:
-            cursor.execute("DELETE FROM %s" % self._table)
-        else:
-            cursor.execute("DELETE FROM %s WHERE expires < %%s" % self._table, [str(now)])
-            cursor.execute("SELECT COUNT(*) FROM %s" % self._table)
-            num = cursor.fetchone()[0]
-            if num > self._max_entries:
-                cursor.execute("SELECT cache_key FROM %s ORDER BY cache_key LIMIT 1 OFFSET %%s" % self._table, [num / self._cull_frequency])
-                cursor.execute("DELETE FROM %s WHERE cache_key < %%s" % self._table, [cursor.fetchone()[0]])
diff --git a/webapp/django/core/cache/backends/dummy.py b/webapp/django/core/cache/backends/dummy.py
deleted file mode 100644
index e479703..0000000
--- a/webapp/django/core/cache/backends/dummy.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"Dummy cache backend"
-
-from django.core.cache.backends.base import BaseCache
-
-class CacheClass(BaseCache):
-    def __init__(self, *args, **kwargs):
-        pass
-
-    def add(self, *args, **kwargs):
-        return True
-
-    def get(self, key, default=None):
-        return default
-
-    def set(self, *args, **kwargs):
-        pass
-
-    def delete(self, *args, **kwargs):
-        pass
-
-    def get_many(self, *args, **kwargs):
-        return {}
-
-    def has_key(self, *args, **kwargs):
-        return False
diff --git a/webapp/django/core/cache/backends/filebased.py b/webapp/django/core/cache/backends/filebased.py
deleted file mode 100644
index 181197a..0000000
--- a/webapp/django/core/cache/backends/filebased.py
+++ /dev/null
@@ -1,152 +0,0 @@
-"File-based cache backend"
-
-import os
-import time
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-
-from django.core.cache.backends.base import BaseCache
-from django.utils.hashcompat import md5_constructor
-
-class CacheClass(BaseCache):
-    def __init__(self, dir, params):
-        BaseCache.__init__(self, params)
-
-        max_entries = params.get('max_entries', 300)
-        try:
-            self._max_entries = int(max_entries)
-        except (ValueError, TypeError):
-            self._max_entries = 300
-
-        cull_frequency = params.get('cull_frequency', 3)
-        try:
-            self._cull_frequency = int(cull_frequency)
-        except (ValueError, TypeError):
-            self._cull_frequency = 3
-
-        self._dir = dir
-        if not os.path.exists(self._dir):
-            self._createdir()
-
-    def add(self, key, value, timeout=None):
-        if self.has_key(key):
-            return False
-
-        self.set(key, value, timeout)
-        return True
-
-    def get(self, key, default=None):
-        fname = self._key_to_file(key)
-        try:
-            f = open(fname, 'rb')
-            exp = pickle.load(f)
-            now = time.time()
-            if exp < now:
-                f.close()
-                self._delete(fname)
-            else:
-                return pickle.load(f)
-        except (IOError, OSError, EOFError, pickle.PickleError):
-            pass
-        return default
-
-    def set(self, key, value, timeout=None):
-        fname = self._key_to_file(key)
-        dirname = os.path.dirname(fname)
-
-        if timeout is None:
-            timeout = self.default_timeout
-
-        self._cull()
-
-        try:
-            if not os.path.exists(dirname):
-                os.makedirs(dirname)
-
-            f = open(fname, 'wb')
-            now = time.time()
-            pickle.dump(now + timeout, f, pickle.HIGHEST_PROTOCOL)
-            pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)
-        except (IOError, OSError):
-            pass
-
-    def delete(self, key):
-        try:
-            self._delete(self._key_to_file(key))
-        except (IOError, OSError):
-            pass
-
-    def _delete(self, fname):
-        os.remove(fname)
-        try:
-            # Remove the 2 subdirs if they're empty
-            dirname = os.path.dirname(fname)
-            os.rmdir(dirname)
-            os.rmdir(os.path.dirname(dirname))
-        except (IOError, OSError):
-            pass
-
-    def has_key(self, key):
-        fname = self._key_to_file(key)
-        try:
-            f = open(fname, 'rb')
-            exp = pickle.load(f)
-            now = time.time()
-            if exp < now:
-                f.close()
-                self._delete(fname)
-                return False
-            else:
-                return True
-        except (IOError, OSError, EOFError, pickle.PickleError):
-            return False
-
-    def _cull(self):
-        if int(self._num_entries) < self._max_entries:
-            return
-
-        try:
-            filelist = os.listdir(self._dir)
-        except (IOError, OSError):
-            return
-
-        if self._cull_frequency == 0:
-            doomed = filelist
-        else:
-            doomed = [os.path.join(self._dir, k) for (i, k) in enumerate(filelist) if i % self._cull_frequency == 0]
-
-        for topdir in doomed:
-            try:
-                for root, _, files in os.walk(topdir):
-                    for f in files:
-                        self._delete(os.path.join(root, f))
-            except (IOError, OSError):
-                pass
-
-    def _createdir(self):
-        try:
-            os.makedirs(self._dir)
-        except OSError:
-            raise EnvironmentError, "Cache directory '%s' does not exist and could not be created'" % self._dir
-
-    def _key_to_file(self, key):
-        """
-        Convert the filename into an md5 string. We'll turn the first couple
-        bits of the path into directory prefixes to be nice to filesystems
-        that have problems with large numbers of files in a directory.
-
-        Thus, a cache key of "foo" gets turnned into a file named
-        ``{cache-dir}ac/bd/18db4cc2f85cedef654fccc4a4d8``.
-        """
-        path = md5_constructor(key.encode('utf-8')).hexdigest()
-        path = os.path.join(path[:2], path[2:4], path[4:])
-        return os.path.join(self._dir, path)
-
-    def _get_num_entries(self):
-        count = 0
-        for _,_,files in os.walk(self._dir):
-            count += len(files)
-        return count
-    _num_entries = property(_get_num_entries)
diff --git a/webapp/django/core/cache/backends/locmem.py b/webapp/django/core/cache/backends/locmem.py
deleted file mode 100644
index 15a169d..0000000
--- a/webapp/django/core/cache/backends/locmem.py
+++ /dev/null
@@ -1,129 +0,0 @@
-"Thread-safe in-memory cache backend."
-
-import time
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-
-from django.core.cache.backends.base import BaseCache
-from django.utils.synch import RWLock
-
-class CacheClass(BaseCache):
-    def __init__(self, _, params):
-        BaseCache.__init__(self, params)
-        self._cache = {}
-        self._expire_info = {}
-
-        max_entries = params.get('max_entries', 300)
-        try:
-            self._max_entries = int(max_entries)
-        except (ValueError, TypeError):
-            self._max_entries = 300
-
-        cull_frequency = params.get('cull_frequency', 3)
-        try:
-            self._cull_frequency = int(cull_frequency)
-        except (ValueError, TypeError):
-            self._cull_frequency = 3
-
-        self._lock = RWLock()
-
-    def add(self, key, value, timeout=None):
-        self._lock.writer_enters()
-        try:
-            exp = self._expire_info.get(key)
-            if exp is None or exp <= time.time():
-                try:
-                    self._set(key, pickle.dumps(value), timeout)
-                    return True
-                except pickle.PickleError:
-                    pass
-            return False
-        finally:
-            self._lock.writer_leaves()
-
-    def get(self, key, default=None):
-        self._lock.reader_enters()
-        try:
-            exp = self._expire_info.get(key)
-            if exp is None:
-                return default
-            elif exp > time.time():
-                try:
-                    return pickle.loads(self._cache[key])
-                except pickle.PickleError:
-                    return default
-        finally:
-            self._lock.reader_leaves()
-        self._lock.writer_enters()
-        try:
-            del self._cache[key]
-            del self._expire_info[key]
-            return default
-        finally:
-            self._lock.writer_leaves()
-
-    def _set(self, key, value, timeout=None):
-        if len(self._cache) >= self._max_entries:
-            self._cull()
-        if timeout is None:
-            timeout = self.default_timeout
-        self._cache[key] = value
-        self._expire_info[key] = time.time() + timeout
-
-    def set(self, key, value, timeout=None):
-        self._lock.writer_enters()
-        # Python 2.3 and 2.4 don't allow combined try-except-finally blocks.
-        try:
-            try:
-                self._set(key, pickle.dumps(value), timeout)
-            except pickle.PickleError:
-                pass
-        finally:
-            self._lock.writer_leaves()
-
-    def has_key(self, key):
-        self._lock.reader_enters()
-        try:
-            exp = self._expire_info.get(key)
-            if exp is None:
-                return False
-            elif exp > time.time():
-                return True
-        finally:
-            self._lock.reader_leaves()
-
-        self._lock.writer_enters()
-        try:
-            del self._cache[key]
-            del self._expire_info[key]
-            return False
-        finally:
-            self._lock.writer_leaves()
-
-    def _cull(self):
-        if self._cull_frequency == 0:
-            self._cache.clear()
-            self._expire_info.clear()
-        else:
-            doomed = [k for (i, k) in enumerate(self._cache) if i % self._cull_frequency == 0]
-            for k in doomed:
-                self._delete(k)
-
-    def _delete(self, key):
-        try:
-            del self._cache[key]
-        except KeyError:
-            pass
-        try:
-            del self._expire_info[key]
-        except KeyError:
-            pass
-
-    def delete(self, key):
-        self._lock.writer_enters()
-        try:
-            self._delete(key)
-        finally:
-            self._lock.writer_leaves()
diff --git a/webapp/django/core/cache/backends/memcached.py b/webapp/django/core/cache/backends/memcached.py
deleted file mode 100644
index beb8844..0000000
--- a/webapp/django/core/cache/backends/memcached.py
+++ /dev/null
@@ -1,47 +0,0 @@
-"Memcached cache backend"
-
-from django.core.cache.backends.base import BaseCache, InvalidCacheBackendError
-from django.utils.encoding import smart_unicode, smart_str
-
-try:
-    import cmemcache as memcache
-except ImportError:
-    try:
-        import memcache
-    except:
-        raise InvalidCacheBackendError("Memcached cache backend requires either the 'memcache' or 'cmemcache' library")
-
-class CacheClass(BaseCache):
-    def __init__(self, server, params):
-        BaseCache.__init__(self, params)
-        self._cache = memcache.Client(server.split(';'))
-
-    def add(self, key, value, timeout=0):
-        if isinstance(value, unicode):
-            value = value.encode('utf-8')
-        return self._cache.add(smart_str(key), value, timeout or self.default_timeout)
-
-    def get(self, key, default=None):
-        val = self._cache.get(smart_str(key))
-        if val is None:
-            return default
-        else:
-            if isinstance(val, basestring):
-                return smart_unicode(val)
-            else:
-                return val
-
-    def set(self, key, value, timeout=0):
-        if isinstance(value, unicode):
-            value = value.encode('utf-8')
-        self._cache.set(smart_str(key), value, timeout or self.default_timeout)
-
-    def delete(self, key):
-        self._cache.delete(smart_str(key))
-
-    def get_many(self, keys):
-        return self._cache.get_multi(map(smart_str,keys))
-
-    def close(self, **kwargs):
-        self._cache.disconnect_all()
-
diff --git a/webapp/django/core/context_processors.py b/webapp/django/core/context_processors.py
deleted file mode 100644
index cb07125ce..0000000
--- a/webapp/django/core/context_processors.py
+++ /dev/null
@@ -1,85 +0,0 @@
-"""
-A set of request processors that return dictionaries to be merged into a
-template context. Each function takes the request object as its only parameter
-and returns a dictionary to add to the context.
-
-These are referenced from the setting TEMPLATE_CONTEXT_PROCESSORS and used by
-RequestContext.
-"""
-
-from django.conf import settings
-
-def auth(request):
-    """
-    Returns context variables required by apps that use Django's authentication
-    system.
-
-    If there is no 'user' attribute in the request, uses AnonymousUser (from
-    django.contrib.auth).
-    """
-    if hasattr(request, 'user'):
-        user = request.user
-    else:
-        from django.contrib.auth.models import AnonymousUser
-        user = AnonymousUser()
-    return {
-        'user': user,
-        'messages': user.get_and_delete_messages(),
-        'perms': PermWrapper(user),
-    }
-
-def debug(request):
-    "Returns context variables helpful for debugging."
-    context_extras = {}
-    if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
-        context_extras['debug'] = True
-        from django.db import connection
-        context_extras['sql_queries'] = connection.queries
-    return context_extras
-
-def i18n(request):
-    from django.utils import translation
-
-    context_extras = {}
-    context_extras['LANGUAGES'] = settings.LANGUAGES
-    context_extras['LANGUAGE_CODE'] = translation.get_language()
-    context_extras['LANGUAGE_BIDI'] = translation.get_language_bidi()
-
-    return context_extras
-
-def media(request):
-    """
-    Adds media-related context variables to the context.
-
-    """
-    return {'MEDIA_URL': settings.MEDIA_URL}
-
-def request(request):
-    return {'request': request}
-
-# PermWrapper and PermLookupDict proxy the permissions system into objects that
-# the template system can understand.
-
-class PermLookupDict(object):
-    def __init__(self, user, module_name):
-        self.user, self.module_name = user, module_name
-
-    def __repr__(self):
-        return str(self.user.get_all_permissions())
-
-    def __getitem__(self, perm_name):
-        return self.user.has_perm("%s.%s" % (self.module_name, perm_name))
-
-    def __nonzero__(self):
-        return self.user.has_module_perms(self.module_name)
-
-class PermWrapper(object):
-    def __init__(self, user):
-        self.user = user
-
-    def __getitem__(self, module_name):
-        return PermLookupDict(self.user, module_name)
-        
-    def __iter__(self):
-        # I am large, I contain multitudes.
-        raise TypeError("PermWrapper is not iterable.")
diff --git a/webapp/django/core/exceptions.py b/webapp/django/core/exceptions.py
deleted file mode 100644
index e5df8ca..0000000
--- a/webapp/django/core/exceptions.py
+++ /dev/null
@@ -1,34 +0,0 @@
-"Global Django exceptions"
-
-class ObjectDoesNotExist(Exception):
-    "The requested object does not exist"
-    silent_variable_failure = True
-
-class MultipleObjectsReturned(Exception):
-    "The query returned multiple objects when only one was expected."
-    pass
-
-class SuspiciousOperation(Exception):
-    "The user did something suspicious"
-    pass
-
-class PermissionDenied(Exception):
-    "The user did not have permission to do that"
-    pass
-
-class ViewDoesNotExist(Exception):
-    "The requested view does not exist"
-    pass
-
-class MiddlewareNotUsed(Exception):
-    "This middleware is not used in this server configuration"
-    pass
-
-class ImproperlyConfigured(Exception):
-    "Django is somehow improperly configured"
-    pass
-
-class FieldError(Exception):
-    """Some kind of problem with a model field."""
-    pass
-
diff --git a/webapp/django/core/files/__init__.py b/webapp/django/core/files/__init__.py
deleted file mode 100644
index 0c3ef57..0000000
--- a/webapp/django/core/files/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from django.core.files.base import File
diff --git a/webapp/django/core/files/base.py b/webapp/django/core/files/base.py
deleted file mode 100644
index 69739d6..0000000
--- a/webapp/django/core/files/base.py
+++ /dev/null
@@ -1,169 +0,0 @@
-import os
-
-from django.utils.encoding import smart_str, smart_unicode
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-class File(object):
-    DEFAULT_CHUNK_SIZE = 64 * 2**10
-
-    def __init__(self, file):
-        self.file = file
-        self._name = file.name
-        self._mode = file.mode
-        self._closed = False
-
-    def __str__(self):
-        return smart_str(self.name or '')
-
-    def __unicode__(self):
-        return smart_unicode(self.name or u'')
-
-    def __repr__(self):
-        return "<%s: %s>" % (self.__class__.__name__, self or "None")
-
-    def __nonzero__(self):
-        return not not self.name
-
-    def __len__(self):
-        return self.size
-
-    def _get_name(self):
-        return self._name
-    name = property(_get_name)
-
-    def _get_mode(self):
-        return self._mode
-    mode = property(_get_mode)
-
-    def _get_closed(self):
-        return self._closed
-    closed = property(_get_closed)
-
-    def _get_size(self):
-        if not hasattr(self, '_size'):
-            if hasattr(self.file, 'size'):
-                self._size = self.file.size
-            elif os.path.exists(self.file.name):
-                self._size = os.path.getsize(self.file.name)
-            else:
-                raise AttributeError("Unable to determine the file's size.")
-        return self._size
-
-    def _set_size(self, size):
-        self._size = size
-
-    size = property(_get_size, _set_size)
-
-    def chunks(self, chunk_size=None):
-        """
-        Read the file and yield chucks of ``chunk_size`` bytes (defaults to
-        ``UploadedFile.DEFAULT_CHUNK_SIZE``).
-        """
-        if not chunk_size:
-            chunk_size = self.__class__.DEFAULT_CHUNK_SIZE
-
-        if hasattr(self, 'seek'):
-            self.seek(0)
-        # Assume the pointer is at zero...
-        counter = self.size
-
-        while counter > 0:
-            yield self.read(chunk_size)
-            counter -= chunk_size
-
-    def multiple_chunks(self, chunk_size=None):
-        """
-        Returns ``True`` if you can expect multiple chunks.
-
-        NB: If a particular file representation is in memory, subclasses should
-        always return ``False`` -- there's no good reason to read from memory in
-        chunks.
-        """
-        if not chunk_size:
-            chunk_size = self.DEFAULT_CHUNK_SIZE
-        return self.size > chunk_size
-
-    def xreadlines(self):
-        return iter(self)
-
-    def readlines(self):
-        return list(self.xreadlines())
-
-    def __iter__(self):
-        # Iterate over this file-like object by newlines
-        buffer_ = None
-        for chunk in self.chunks():
-            chunk_buffer = StringIO(chunk)
-
-            for line in chunk_buffer:
-                if buffer_:
-                    line = buffer_ + line
-                    buffer_ = None
-
-                # If this is the end of a line, yield
-                # otherwise, wait for the next round
-                if line[-1] in ('\n', '\r'):
-                    yield line
-                else:
-                    buffer_ = line
-
-        if buffer_ is not None:
-            yield buffer_
-
-    def open(self, mode=None):
-        if not self.closed:
-            self.seek(0)
-        elif os.path.exists(self.file.name):
-            self.file = open(self.file.name, mode or self.file.mode)
-        else:
-            raise ValueError("The file cannot be reopened.")
-
-    def seek(self, position):
-        self.file.seek(position)
-
-    def tell(self):
-        return self.file.tell()
-
-    def read(self, num_bytes=None):
-        if num_bytes is None:
-            return self.file.read()
-        return self.file.read(num_bytes)
-
-    def write(self, content):
-        if not self.mode.startswith('w'):
-            raise IOError("File was not opened with write access.")
-        self.file.write(content)
-
-    def flush(self):
-        if not self.mode.startswith('w'):
-            raise IOError("File was not opened with write access.")
-        self.file.flush()
-
-    def close(self):
-        self.file.close()
-        self._closed = True
-
-class ContentFile(File):
-    """
-    A File-like object that takes just raw content, rather than an actual file.
-    """
-    def __init__(self, content):
-        self.file = StringIO(content or '')
-        self.size = len(content or '')
-        self.file.seek(0)
-        self._closed = False
-
-    def __str__(self):
-        return 'Raw content'
-
-    def __nonzero__(self):
-        return True
-
-    def open(self, mode=None):
-        if self._closed:
-            self._closed = False
-        self.seek(0)
diff --git a/webapp/django/core/files/images.py b/webapp/django/core/files/images.py
deleted file mode 100644
index 5ddcdd4..0000000
--- a/webapp/django/core/files/images.py
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
-Utility functions for handling images.
-
-Requires PIL, as you might imagine.
-"""
-
-from django.core.files import File
-
-class ImageFile(File):
-    """
-    A mixin for use alongside django.core.files.base.File, which provides
-    additional features for dealing with images.
-    """
-    def _get_width(self):
-        return self._get_image_dimensions()[0]
-    width = property(_get_width)
-
-    def _get_height(self):
-        return self._get_image_dimensions()[1]
-    height = property(_get_height)
-
-    def _get_image_dimensions(self):
-        if not hasattr(self, '_dimensions_cache'):
-            self._dimensions_cache = get_image_dimensions(self)
-        return self._dimensions_cache
-
-def get_image_dimensions(file_or_path):
-    """Returns the (width, height) of an image, given an open file or a path."""
-    from PIL import ImageFile as PILImageFile
-    p = PILImageFile.Parser()
-    if hasattr(file_or_path, 'read'):
-        file = file_or_path
-    else:
-        file = open(file_or_path, 'rb')
-    while 1:
-        data = file.read(1024)
-        if not data:
-            break
-        p.feed(data)
-        if p.image:
-            return p.image.size
-    return None
diff --git a/webapp/django/core/files/locks.py b/webapp/django/core/files/locks.py
deleted file mode 100644
index 98a1155..0000000
--- a/webapp/django/core/files/locks.py
+++ /dev/null
@@ -1,70 +0,0 @@
-"""
-Portable file locking utilities.
-
-Based partially on example by Jonathan Feignberg <jdf@pobox.com> in the Python
-Cookbook, licensed under the Python Software License.
-
-    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203
-
-Example Usage::
-
-    >>> from django.core.files import locks
-    >>> f = open('./file', 'wb')
-    >>> locks.lock(f, locks.LOCK_EX)
-    >>> f.write('Django')
-    >>> f.close()
-"""
-
-__all__ = ('LOCK_EX','LOCK_SH','LOCK_NB','lock','unlock')
-
-system_type = None
-
-try:
-    import win32con
-    import win32file
-    import pywintypes
-    LOCK_EX = win32con.LOCKFILE_EXCLUSIVE_LOCK
-    LOCK_SH = 0
-    LOCK_NB = win32con.LOCKFILE_FAIL_IMMEDIATELY
-    __overlapped = pywintypes.OVERLAPPED()
-    system_type = 'nt'
-except (ImportError, AttributeError):
-    pass
-
-try:
-    import fcntl
-    LOCK_EX = fcntl.LOCK_EX
-    LOCK_SH = fcntl.LOCK_SH
-    LOCK_NB = fcntl.LOCK_NB
-    system_type = 'posix'
-except (ImportError, AttributeError):
-    pass
-
-def fd(f):
-    """Get a filedescriptor from something which could be a file or an fd."""
-    return hasattr(f, 'fileno') and f.fileno() or f
-
-if system_type == 'nt':
-    def lock(file, flags):
-        hfile = win32file._get_osfhandle(fd(file))
-        win32file.LockFileEx(hfile, flags, 0, -0x10000, __overlapped)
-
-    def unlock(file):
-        hfile = win32file._get_osfhandle(fd(file))
-        win32file.UnlockFileEx(hfile, 0, -0x10000, __overlapped)
-elif system_type == 'posix':
-    def lock(file, flags):
-        fcntl.flock(fd(file), flags)
-
-    def unlock(file):
-        fcntl.flock(fd(file), fcntl.LOCK_UN)
-else:
-    # File locking is not supported.
-    LOCK_EX = LOCK_SH = LOCK_NB = None
-
-    # Dummy functions that don't do anything.
-    def lock(file, flags):
-        pass
-
-    def unlock(file):
-        pass
diff --git a/webapp/django/core/files/move.py b/webapp/django/core/files/move.py
deleted file mode 100644
index 58a0ab1..0000000
--- a/webapp/django/core/files/move.py
+++ /dev/null
@@ -1,88 +0,0 @@
-"""
-Move a file in the safest way possible::
-
-    >>> from django.core.files.move import file_move_save
-    >>> file_move_save("/tmp/old_file", "/tmp/new_file")
-"""
-
-import os
-from django.core.files import locks
-
-try:
-    from shutil import copystat
-except ImportError:
-    def copystat(src, dst):
-        """Copy all stat info (mode bits, atime and mtime) from src to dst"""
-        st = os.stat(src)
-        mode = stat.S_IMODE(st.st_mode)
-        if hasattr(os, 'utime'):
-            os.utime(dst, (st.st_atime, st.st_mtime))
-        if hasattr(os, 'chmod'):
-            os.chmod(dst, mode)
-
-__all__ = ['file_move_safe']
-
-def _samefile(src, dst):
-    # Macintosh, Unix.
-    if hasattr(os.path,'samefile'):
-        try:
-            return os.path.samefile(src, dst)
-        except OSError:
-            return False
-
-    # All other platforms: check for same pathname.
-    return (os.path.normcase(os.path.abspath(src)) ==
-            os.path.normcase(os.path.abspath(dst)))
-
-def file_move_safe(old_file_name, new_file_name, chunk_size = 1024*64, allow_overwrite=False):
-    """
-    Moves a file from one location to another in the safest way possible.
-
-    First, try using ``shutils.move``, which is OS-dependent but doesn't break
-    if moving across filesystems. Then, try ``os.rename``, which will break
-    across filesystems. Finally, streams manually from one file to another in
-    pure Python.
-
-    If the destination file exists and ``allow_overwrite`` is ``False``, this
-    function will throw an ``IOError``.
-    """
-
-    # There's no reason to move if we don't have to.
-    if _samefile(old_file_name, new_file_name):
-        return
-
-    try:
-        os.rename(old_file_name, new_file_name)
-        return
-    except OSError:
-        # This will happen with os.rename if moving to another filesystem
-        # or when moving opened files on certain operating systems
-        pass
-
-    # first open the old file, so that it won't go away
-    old_file = open(old_file_name, 'rb')
-    try:
-        # now open the new file, not forgetting allow_overwrite
-        fd = os.open(new_file_name, os.O_WRONLY | os.O_CREAT | getattr(os, 'O_BINARY', 0) |
-                                    (not allow_overwrite and os.O_EXCL or 0))
-        try:
-            locks.lock(fd, locks.LOCK_EX)
-            current_chunk = None
-            while current_chunk != '':
-                current_chunk = old_file.read(chunk_size)
-                os.write(fd, current_chunk)
-        finally:
-            locks.unlock(fd)
-            os.close(fd)
-    finally:
-        old_file.close()
-    copystat(old_file_name, new_file_name)
-
-    try:
-        os.remove(old_file_name)
-    except OSError, e:
-        # Certain operating systems (Cygwin and Windows)
-        # fail when deleting opened files, ignore it
-        if getattr(e, 'winerror', 0) != 32:
-            # FIXME: should we also ignore errno 13?
-            raise
diff --git a/webapp/django/core/files/storage.py b/webapp/django/core/files/storage.py
deleted file mode 100644
index 30d9be9..0000000
--- a/webapp/django/core/files/storage.py
+++ /dev/null
@@ -1,224 +0,0 @@
-import os
-import urlparse
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured, SuspiciousOperation
-from django.utils.encoding import force_unicode
-from django.utils.text import get_valid_filename
-from django.utils._os import safe_join
-from django.core.files import locks, File
-from django.core.files.move import file_move_safe
-
-__all__ = ('Storage', 'FileSystemStorage', 'DefaultStorage', 'default_storage')
-
-class Storage(object):
-    """
-    A base storage class, providing some default behaviors that all other
-    storage systems can inherit or override, as necessary.
-    """
-
-    # The following methods represent a public interface to private methods.
-    # These shouldn't be overridden by subclasses unless absolutely necessary.
-
-    def open(self, name, mode='rb', mixin=None):
-        """
-        Retrieves the specified file from storage, using the optional mixin
-        class to customize what features are available on the File returned.
-        """
-        file = self._open(name, mode)
-        if mixin:
-            # Add the mixin as a parent class of the File returned from storage.
-            file.__class__ = type(mixin.__name__, (mixin, file.__class__), {})
-        return file
-
-    def save(self, name, content):
-        """
-        Saves new content to the file specified by name. The content should be a
-        proper File object, ready to be read from the beginning.
-        """
-        # Get the proper name for the file, as it will actually be saved.
-        if name is None:
-            name = content.name
-        
-        name = self.get_available_name(name)
-        name = self._save(name, content)
-
-        # Store filenames with forward slashes, even on Windows
-        return force_unicode(name.replace('\\', '/'))
-
-    # These methods are part of the public API, with default implementations.
-
-    def get_valid_name(self, name):
-        """
-        Returns a filename, based on the provided filename, that's suitable for
-        use in the target storage system.
-        """
-        return get_valid_filename(name)
-
-    def get_available_name(self, name):
-        """
-        Returns a filename that's free on the target storage system, and
-        available for new content to be written to.
-        """
-        # If the filename already exists, keep adding an underscore to the name
-        # of the file until the filename doesn't exist.
-        while self.exists(name):
-            try:
-                dot_index = name.rindex('.')
-            except ValueError: # filename has no dot
-                name += '_'
-            else:
-                name = name[:dot_index] + '_' + name[dot_index:]
-        return name
-
-    def path(self, name):
-        """
-        Returns a local filesystem path where the file can be retrieved using
-        Python's built-in open() function. Storage systems that can't be
-        accessed using open() should *not* implement this method.
-        """
-        raise NotImplementedError("This backend doesn't support absolute paths.")
-
-    # The following methods form the public API for storage systems, but with
-    # no default implementations. Subclasses must implement *all* of these.
-
-    def delete(self, name):
-        """
-        Deletes the specified file from the storage system.
-        """
-        raise NotImplementedError()
-
-    def exists(self, name):
-        """
-        Returns True if a file referened by the given name already exists in the
-        storage system, or False if the name is available for a new file.
-        """
-        raise NotImplementedError()
-
-    def listdir(self, path):
-        """
-        Lists the contents of the specified path, returning a 2-tuple of lists;
-        the first item being directories, the second item being files.
-        """
-        raise NotImplementedError()
-
-    def size(self, name):
-        """
-        Returns the total size, in bytes, of the file specified by name.
-        """
-        raise NotImplementedError()
-
-    def url(self, name):
-        """
-        Returns an absolute URL where the file's contents can be accessed
-        directly by a web browser.
-        """
-        raise NotImplementedError()
-
-class FileSystemStorage(Storage):
-    """
-    Standard filesystem storage
-    """
-
-    def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):
-        self.location = os.path.abspath(location)
-        self.base_url = base_url
-
-    def _open(self, name, mode='rb'):
-        return File(open(self.path(name), mode))
-
-    def _save(self, name, content):
-        full_path = self.path(name)
-
-        directory = os.path.dirname(full_path)
-        if not os.path.exists(directory):
-            os.makedirs(directory)
-        elif not os.path.isdir(directory):
-            raise IOError("%s exists and is not a directory." % directory)
-
-        # There's a potential race condition between get_available_name and
-        # saving the file; it's possible that two threads might return the
-        # same name, at which point all sorts of fun happens. So we need to
-        # try to create the file, but if it already exists we have to go back
-        # to get_available_name() and try again.
-
-        while True:
-            try:
-                # This file has a file path that we can move.
-                if hasattr(content, 'temporary_file_path'):
-                    file_move_safe(content.temporary_file_path(), full_path)
-                    content.close()
-
-                # This is a normal uploadedfile that we can stream.
-                else:
-                    # This fun binary flag incantation makes os.open throw an
-                    # OSError if the file already exists before we open it.
-                    fd = os.open(full_path, os.O_WRONLY | os.O_CREAT | os.O_EXCL | getattr(os, 'O_BINARY', 0))
-                    try:
-                        locks.lock(fd, locks.LOCK_EX)
-                        for chunk in content.chunks():
-                            os.write(fd, chunk)
-                    finally:
-                        locks.unlock(fd)
-                        os.close(fd)
-            except OSError:
-                # Ooops, we need a new file name.
-                name = self.get_available_name(name)
-                full_path = self.path(name)
-            else:
-                # OK, the file save worked. Break out of the loop.
-                break
-                
-        return name
-
-    def delete(self, name):
-        name = self.path(name)
-        # If the file exists, delete it from the filesystem.
-        if os.path.exists(name):
-            os.remove(name)
-
-    def exists(self, name):
-        return os.path.exists(self.path(name))
-
-    def listdir(self, path):
-        path = self.path(path)
-        directories, files = [], []
-        for entry in os.listdir(path):
-            if os.path.isdir(os.path.join(path, entry)):
-                directories.append(entry)
-            else:
-                files.append(entry)
-        return directories, files
-
-    def path(self, name):
-        try:
-            path = safe_join(self.location, name)
-        except ValueError:
-            raise SuspiciousOperation("Attempted access to '%s' denied." % name)
-        return os.path.normpath(path)
-
-    def size(self, name):
-        return os.path.getsize(self.path(name))
-
-    def url(self, name):
-        if self.base_url is None:
-            raise ValueError("This file is not accessible via a URL.")
-        return urlparse.urljoin(self.base_url, name).replace('\\', '/')
-
-def get_storage_class(import_path):
-    try:
-        dot = import_path.rindex('.')
-    except ValueError:
-        raise ImproperlyConfigured("%s isn't a storage module." % import_path)
-    module, classname = import_path[:dot], import_path[dot+1:]
-    try:
-        mod = __import__(module, {}, {}, [''])
-    except ImportError, e:
-        raise ImproperlyConfigured('Error importing storage module %s: "%s"' % (module, e))
-    try:
-        return getattr(mod, classname)
-    except AttributeError:
-        raise ImproperlyConfigured('Storage module "%s" does not define a "%s" class.' % (module, classname))
-
-DefaultStorage = get_storage_class(settings.DEFAULT_FILE_STORAGE)
-default_storage = DefaultStorage()
diff --git a/webapp/django/core/files/temp.py b/webapp/django/core/files/temp.py
deleted file mode 100644
index f0d7d74..0000000
--- a/webapp/django/core/files/temp.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
-The temp module provides a NamedTemporaryFile that can be re-opened on any
-platform. Most platforms use the standard Python tempfile.TemporaryFile class,
-but MS Windows users are given a custom class.
-
-This is needed because in Windows NT, the default implementation of
-NamedTemporaryFile uses the O_TEMPORARY flag, and thus cannot be reopened [1].
-
-1: http://mail.python.org/pipermail/python-list/2005-December/359474.html
-"""
-
-import os
-import tempfile
-
-__all__ = ('NamedTemporaryFile', 'gettempdir',)
-
-if os.name == 'nt':
-    class TemporaryFile(object):
-        """
-        Temporary file object constructor that works in Windows and supports
-        reopening of the temporary file in windows.
-        """
-        def __init__(self, mode='w+b', bufsize=-1, suffix='', prefix='',
-                dir=None):
-            fd, name = tempfile.mkstemp(suffix=suffix, prefix=prefix,
-                                          dir=dir)
-            self.name = name
-            self.file = os.fdopen(fd, mode, bufsize)
-            self.close_called = False
-
-        # Because close can be called during shutdown
-        # we need to cache os.unlink and access it
-        # as self.unlink only
-        unlink = os.unlink
-
-        def close(self):
-            if not self.close_called:
-                self.close_called = True
-                try:
-                    self.file.close()
-                except (OSError, IOError):
-                    pass
-                try:
-                    self.unlink(self.name)
-                except (OSError):
-                    pass
-
-        def __del__(self):
-            self.close()
-
-        def read(self, *args):          return self.file.read(*args)
-        def seek(self, offset):         return self.file.seek(offset)
-        def write(self, s):             return self.file.write(s)
-        def __iter__(self):             return iter(self.file)
-        def readlines(self, size=None): return self.file.readlines(size)
-        def xreadlines(self):           return self.file.xreadlines()
-
-    NamedTemporaryFile = TemporaryFile
-else:
-    NamedTemporaryFile = tempfile.NamedTemporaryFile
-
-gettempdir = tempfile.gettempdir
diff --git a/webapp/django/core/files/uploadedfile.py b/webapp/django/core/files/uploadedfile.py
deleted file mode 100644
index afbcdba..0000000
--- a/webapp/django/core/files/uploadedfile.py
+++ /dev/null
@@ -1,156 +0,0 @@
-"""
-Classes representing uploaded files.
-"""
-
-import os
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-from django.conf import settings
-from django.core.files.base import File
-from django.core.files import temp as tempfile
-
-__all__ = ('UploadedFile', 'TemporaryUploadedFile', 'InMemoryUploadedFile',
-           'SimpleUploadedFile')
-
-class UploadedFile(File):
-    """
-    A abstract uploaded file (``TemporaryUploadedFile`` and
-    ``InMemoryUploadedFile`` are the built-in concrete subclasses).
-
-    An ``UploadedFile`` object behaves somewhat like a file object and
-    represents some file data that the user submitted with a form.
-    """
-    DEFAULT_CHUNK_SIZE = 64 * 2**10
-
-    def __init__(self, name=None, content_type=None, size=None, charset=None):
-        self.name = name
-        self.size = size
-        self.content_type = content_type
-        self.charset = charset
-
-    def __repr__(self):
-        return "<%s: %s (%s)>" % (self.__class__.__name__, self.name, self.content_type)
-
-    def _get_name(self):
-        return self._name
-
-    def _set_name(self, name):
-        # Sanitize the file name so that it can't be dangerous.
-        if name is not None:
-            # Just use the basename of the file -- anything else is dangerous.
-            name = os.path.basename(name)
-
-            # File names longer than 255 characters can cause problems on older OSes.
-            if len(name) > 255:
-                name, ext = os.path.splitext(name)
-                name = name[:255 - len(ext)] + ext
-
-        self._name = name
-
-    name = property(_get_name, _set_name)
-
-    # Abstract methods; subclasses *must* define read() and probably should
-    # define open/close.
-    def read(self, num_bytes=None):
-        raise NotImplementedError()
-
-    def open(self):
-        pass
-
-    def close(self):
-        pass
-
-class TemporaryUploadedFile(UploadedFile):
-    """
-    A file uploaded to a temporary location (i.e. stream-to-disk).
-    """
-    def __init__(self, name, content_type, size, charset):
-        super(TemporaryUploadedFile, self).__init__(name, content_type, size, charset)
-        if settings.FILE_UPLOAD_TEMP_DIR:
-            self._file = tempfile.NamedTemporaryFile(suffix='.upload', dir=settings.FILE_UPLOAD_TEMP_DIR)
-        else:
-            self._file = tempfile.NamedTemporaryFile(suffix='.upload')
-
-    def temporary_file_path(self):
-        """
-        Returns the full path of this file.
-        """
-        return self._file.name
-
-    # Most methods on this object get proxied to NamedTemporaryFile.
-    # We can't directly subclass because NamedTemporaryFile is actually a
-    # factory function
-    def read(self, *args):          return self._file.read(*args)
-    def seek(self, offset):         return self._file.seek(offset)
-    def write(self, s):             return self._file.write(s)
-    def __iter__(self):             return iter(self._file)
-    def readlines(self, size=None): return self._file.readlines(size)
-    def xreadlines(self):           return self._file.xreadlines()
-    def close(self):
-        try:
-            return self._file.close()
-        except OSError, e:
-            if e.errno == 2:
-                # Means the file was moved or deleted before the tempfile could unlink it.
-                # Still sets self._file.close_called and calls self._file.file.close()
-                # before the exception
-                return
-            else:
-                raise e
-
-class InMemoryUploadedFile(UploadedFile):
-    """
-    A file uploaded into memory (i.e. stream-to-memory).
-    """
-    def __init__(self, file, field_name, name, content_type, size, charset):
-        super(InMemoryUploadedFile, self).__init__(name, content_type, size, charset)
-        self.file = file
-        self.field_name = field_name
-        self.file.seek(0)
-
-    def seek(self, *args, **kwargs):
-        self.file.seek(*args, **kwargs)
-
-    def open(self):
-        self.seek(0)
-
-    def read(self, *args, **kwargs):
-        return self.file.read(*args, **kwargs)
-
-    def chunks(self, chunk_size=None):
-        self.file.seek(0)
-        yield self.read()
-
-    def multiple_chunks(self, chunk_size=None):
-        # Since it's in memory, we'll never have multiple chunks.
-        return False
-
-class SimpleUploadedFile(InMemoryUploadedFile):
-    """
-    A simple representation of a file, which just has content, size, and a name.
-    """
-    def __init__(self, name, content, content_type='text/plain'):
-        self.file = StringIO(content or '')
-        self.name = name
-        self.field_name = None
-        self.size = len(content or '')
-        self.content_type = content_type
-        self.charset = None
-        self.file.seek(0)
-
-    def from_dict(cls, file_dict):
-        """
-        Creates a SimpleUploadedFile object from
-        a dictionary object with the following keys:
-           - filename
-           - content-type
-           - content
-        """
-        return cls(file_dict['filename'],
-                   file_dict['content'],
-                   file_dict.get('content-type', 'text/plain'))
-
-    from_dict = classmethod(from_dict)
diff --git a/webapp/django/core/files/uploadhandler.py b/webapp/django/core/files/uploadhandler.py
deleted file mode 100644
index fa4d2df..0000000
--- a/webapp/django/core/files/uploadhandler.py
+++ /dev/null
@@ -1,213 +0,0 @@
-"""
-Base file upload handler classes, and the built-in concrete subclasses
-"""
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.core.files.uploadedfile import TemporaryUploadedFile, InMemoryUploadedFile
-
-__all__ = ['UploadFileException','StopUpload', 'SkipFile', 'FileUploadHandler',
-           'TemporaryFileUploadHandler', 'MemoryFileUploadHandler',
-           'load_handler']
-
-class UploadFileException(Exception):
-    """
-    Any error having to do with uploading files.
-    """
-    pass
-
-class StopUpload(UploadFileException):
-    """
-    This exception is raised when an upload must abort.
-    """
-    def __init__(self, connection_reset=False):
-        """
-        If ``connection_reset`` is ``True``, Django knows will halt the upload
-        without consuming the rest of the upload. This will cause the browser to
-        show a "connection reset" error.
-        """
-        self.connection_reset = connection_reset
-
-    def __unicode__(self):
-        if self.connection_reset:
-            return u'StopUpload: Halt current upload.'
-        else:
-            return u'StopUpload: Consume request data, then halt.'
-
-class SkipFile(UploadFileException):
-    """
-    This exception is raised by an upload handler that wants to skip a given file.
-    """
-    pass
-    
-class StopFutureHandlers(UploadFileException):
-    """
-    Upload handers that have handled a file and do not want future handlers to
-    run should raise this exception instead of returning None.
-    """
-    pass
-
-class FileUploadHandler(object):
-    """
-    Base class for streaming upload handlers.
-    """
-    chunk_size = 64 * 2 ** 10 #: The default chunk size is 64 KB.
-
-    def __init__(self, request=None):
-        self.file_name = None
-        self.content_type = None
-        self.content_length = None
-        self.charset = None
-        self.request = request
-
-    def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):
-        """
-        Handle the raw input from the client.
-
-        Parameters:
-
-            :input_data:
-                An object that supports reading via .read().
-            :META:
-                ``request.META``.
-            :content_length:
-                The (integer) value of the Content-Length header from the
-                client.
-            :boundary: The boundary from the Content-Type header. Be sure to
-                prepend two '--'.
-        """
-        pass
-
-    def new_file(self, field_name, file_name, content_type, content_length, charset=None):
-        """
-        Signal that a new file has been started.
-
-        Warning: As with any data from the client, you should not trust
-        content_length (and sometimes won't even get it).
-        """
-        self.field_name = field_name
-        self.file_name = file_name
-        self.content_type = content_type
-        self.content_length = content_length
-        self.charset = charset
-
-    def receive_data_chunk(self, raw_data, start):
-        """
-        Receive data from the streamed upload parser. ``start`` is the position
-        in the file of the chunk.
-        """
-        raise NotImplementedError()
-
-    def file_complete(self, file_size):
-        """
-        Signal that a file has completed. File size corresponds to the actual
-        size accumulated by all the chunks.
-
-        Subclasses must should return a valid ``UploadedFile`` object.
-        """
-        raise NotImplementedError()
-
-    def upload_complete(self):
-        """
-        Signal that the upload is complete. Subclasses should perform cleanup
-        that is necessary for this handler.
-        """
-        pass
-
-class TemporaryFileUploadHandler(FileUploadHandler):
-    """
-    Upload handler that streams data into a temporary file.
-    """
-    def __init__(self, *args, **kwargs):
-        super(TemporaryFileUploadHandler, self).__init__(*args, **kwargs)
-
-    def new_file(self, file_name, *args, **kwargs):
-        """
-        Create the file object to append to as data is coming in.
-        """
-        super(TemporaryFileUploadHandler, self).new_file(file_name, *args, **kwargs)
-        self.file = TemporaryUploadedFile(self.file_name, self.content_type, 0, self.charset)
-
-    def receive_data_chunk(self, raw_data, start):
-        self.file.write(raw_data)
-
-    def file_complete(self, file_size):
-        self.file.seek(0)
-        self.file.size = file_size
-        return self.file
-
-class MemoryFileUploadHandler(FileUploadHandler):
-    """
-    File upload handler to stream uploads into memory (used for small files).
-    """
-
-    def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):
-        """
-        Use the content_length to signal whether or not this handler should be in use.
-        """
-        # Check the content-length header to see if we should
-        # If the the post is too large, we cannot use the Memory handler.
-        if content_length > settings.FILE_UPLOAD_MAX_MEMORY_SIZE:
-            self.activated = False
-        else:
-            self.activated = True
-
-    def new_file(self, *args, **kwargs):
-        super(MemoryFileUploadHandler, self).new_file(*args, **kwargs)
-        if self.activated:
-            self.file = StringIO()
-            raise StopFutureHandlers()
-
-    def receive_data_chunk(self, raw_data, start):
-        """
-        Add the data to the StringIO file.
-        """
-        if self.activated:
-            self.file.write(raw_data)
-        else:
-            return raw_data
-
-    def file_complete(self, file_size):
-        """
-        Return a file object if we're activated.
-        """
-        if not self.activated:
-            return
-
-        return InMemoryUploadedFile(
-            file = self.file,
-            field_name = self.field_name,
-            name = self.file_name,
-            content_type = self.content_type,
-            size = file_size,
-            charset = self.charset
-        )
-
-
-def load_handler(path, *args, **kwargs):
-    """
-    Given a path to a handler, return an instance of that handler.
-
-    E.g.::
-        >>> load_handler('django.core.files.uploadhandler.TemporaryFileUploadHandler', request)
-        <TemporaryFileUploadHandler object at 0x...>
-
-    """
-    i = path.rfind('.')
-    module, attr = path[:i], path[i+1:]
-    try:
-        mod = __import__(module, {}, {}, [attr])
-    except ImportError, e:
-        raise ImproperlyConfigured('Error importing upload handler module %s: "%s"' % (module, e))
-    except ValueError, e:
-        raise ImproperlyConfigured('Error importing upload handler module. Is FILE_UPLOAD_HANDLERS a correctly defined list or tuple?')
-    try:
-        cls = getattr(mod, attr)
-    except AttributeError:
-        raise ImproperlyConfigured('Module "%s" does not define a "%s" upload handler backend' % (module, attr))
-    return cls(*args, **kwargs)
diff --git a/webapp/django/core/handlers/__init__.py b/webapp/django/core/handlers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/core/handlers/__init__.py
+++ /dev/null
diff --git a/webapp/django/core/handlers/base.py b/webapp/django/core/handlers/base.py
deleted file mode 100644
index b34d0e0..0000000
--- a/webapp/django/core/handlers/base.py
+++ /dev/null
@@ -1,200 +0,0 @@
-import sys
-
-from django import http
-from django.core import signals
-from django.utils.encoding import force_unicode
-
-class BaseHandler(object):
-    # Changes that are always applied to a response (in this order).
-    response_fixes = [
-        http.fix_location_header,
-        http.conditional_content_removal,
-        http.fix_IE_for_attach,
-        http.fix_IE_for_vary,
-    ]
-
-    def __init__(self):
-        self._request_middleware = self._view_middleware = self._response_middleware = self._exception_middleware = None
-
-    def load_middleware(self):
-        """
-        Populate middleware lists from settings.MIDDLEWARE_CLASSES.
-
-        Must be called after the environment is fixed (see __call__).
-        """
-        from django.conf import settings
-        from django.core import exceptions
-        self._request_middleware = []
-        self._view_middleware = []
-        self._response_middleware = []
-        self._exception_middleware = []
-        for middleware_path in settings.MIDDLEWARE_CLASSES:
-            try:
-                dot = middleware_path.rindex('.')
-            except ValueError:
-                raise exceptions.ImproperlyConfigured, '%s isn\'t a middleware module' % middleware_path
-            mw_module, mw_classname = middleware_path[:dot], middleware_path[dot+1:]
-            try:
-                mod = __import__(mw_module, {}, {}, [''])
-            except ImportError, e:
-                raise exceptions.ImproperlyConfigured, 'Error importing middleware %s: "%s"' % (mw_module, e)
-            try:
-                mw_class = getattr(mod, mw_classname)
-            except AttributeError:
-                raise exceptions.ImproperlyConfigured, 'Middleware module "%s" does not define a "%s" class' % (mw_module, mw_classname)
-
-            try:
-                mw_instance = mw_class()
-            except exceptions.MiddlewareNotUsed:
-                continue
-
-            if hasattr(mw_instance, 'process_request'):
-                self._request_middleware.append(mw_instance.process_request)
-            if hasattr(mw_instance, 'process_view'):
-                self._view_middleware.append(mw_instance.process_view)
-            if hasattr(mw_instance, 'process_response'):
-                self._response_middleware.insert(0, mw_instance.process_response)
-            if hasattr(mw_instance, 'process_exception'):
-                self._exception_middleware.insert(0, mw_instance.process_exception)
-
-    def get_response(self, request):
-        "Returns an HttpResponse object for the given HttpRequest"
-        from django.core import exceptions, urlresolvers
-        from django.conf import settings
-
-        # Apply request middleware
-        for middleware_method in self._request_middleware:
-            response = middleware_method(request)
-            if response:
-                return response
-
-        # Get urlconf from request object, if available.  Otherwise use default.
-        urlconf = getattr(request, "urlconf", settings.ROOT_URLCONF)
-
-        resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
-        try:
-            callback, callback_args, callback_kwargs = resolver.resolve(
-                    request.path_info)
-
-            # Apply view middleware
-            for middleware_method in self._view_middleware:
-                response = middleware_method(request, callback, callback_args, callback_kwargs)
-                if response:
-                    return response
-
-            try:
-                response = callback(request, *callback_args, **callback_kwargs)
-            except Exception, e:
-                # If the view raised an exception, run it through exception
-                # middleware, and if the exception middleware returns a
-                # response, use that. Otherwise, reraise the exception.
-                for middleware_method in self._exception_middleware:
-                    response = middleware_method(request, e)
-                    if response:
-                        return response
-                raise
-
-            # Complain if the view returned None (a common error).
-            if response is None:
-                try:
-                    view_name = callback.func_name # If it's a function
-                except AttributeError:
-                    view_name = callback.__class__.__name__ + '.__call__' # If it's a class
-                raise ValueError, "The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name)
-
-            return response
-        except http.Http404, e:
-            if settings.DEBUG:
-                from django.views import debug
-                return debug.technical_404_response(request, e)
-            else:
-                try:
-                    callback, param_dict = resolver.resolve404()
-                    return callback(request, **param_dict)
-                except:
-                    try:
-                        return self.handle_uncaught_exception(request, resolver, sys.exc_info())
-                    finally:
-                        receivers = signals.got_request_exception.send(sender=self.__class__, request=request)
-        except exceptions.PermissionDenied:
-            return http.HttpResponseForbidden('<h1>Permission denied</h1>')
-        except SystemExit:
-            # Allow sys.exit() to actually exit. See tickets #1023 and #4701
-            raise
-        except: # Handle everything else, including SuspiciousOperation, etc.
-            # Get the exception info now, in case another exception is thrown later.
-            exc_info = sys.exc_info()
-            receivers = signals.got_request_exception.send(sender=self.__class__, request=request)
-            return self.handle_uncaught_exception(request, resolver, exc_info)
-
-    def handle_uncaught_exception(self, request, resolver, exc_info):
-        """
-        Processing for any otherwise uncaught exceptions (those that will
-        generate HTTP 500 responses). Can be overridden by subclasses who want
-        customised 500 handling.
-
-        Be *very* careful when overriding this because the error could be
-        caused by anything, so assuming something like the database is always
-        available would be an error.
-        """
-        from django.conf import settings
-        from django.core.mail import mail_admins
-
-        if settings.DEBUG_PROPAGATE_EXCEPTIONS:
-            raise
-
-        if settings.DEBUG:
-            from django.views import debug
-            return debug.technical_500_response(request, *exc_info)
-
-        # When DEBUG is False, send an error message to the admins.
-        subject = 'Error (%s IP): %s' % ((request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS and 'internal' or 'EXTERNAL'), request.path)
-        try:
-            request_repr = repr(request)
-        except:
-            request_repr = "Request repr() unavailable"
-        message = "%s\n\n%s" % (self._get_traceback(exc_info), request_repr)
-        mail_admins(subject, message, fail_silently=True)
-        # Return an HttpResponse that displays a friendly error message.
-        callback, param_dict = resolver.resolve500()
-        return callback(request, **param_dict)
-
-    def _get_traceback(self, exc_info=None):
-        "Helper function to return the traceback as a string"
-        import traceback
-        return '\n'.join(traceback.format_exception(*(exc_info or sys.exc_info())))
-
-    def apply_response_fixes(self, request, response):
-        """
-        Applies each of the functions in self.response_fixes to the request and
-        response, modifying the response in the process. Returns the new
-        response.
-        """
-        for func in self.response_fixes:
-            response = func(request, response)
-        return response
-
-def get_script_name(environ):
-    """
-    Returns the equivalent of the HTTP request's SCRIPT_NAME environment
-    variable. If Apache mod_rewrite has been used, returns what would have been
-    the script name prior to any rewriting (so it's the script name as seen
-    from the client's perspective), unless DJANGO_USE_POST_REWRITE is set (to
-    anything).
-    """
-    from django.conf import settings
-    if settings.FORCE_SCRIPT_NAME is not None:
-        return force_unicode(settings.FORCE_SCRIPT_NAME)
-
-    # If Apache's mod_rewrite had a whack at the URL, Apache set either
-    # SCRIPT_URL or REDIRECT_URL to the full resource URL before applying any
-    # rewrites. Unfortunately not every webserver (lighttpd!) passes this
-    # information through all the time, so FORCE_SCRIPT_NAME, above, is still
-    # needed.
-    script_url = environ.get('SCRIPT_URL', u'')
-    if not script_url:
-        script_url = environ.get('REDIRECT_URL', u'')
-    if script_url:
-        return force_unicode(script_url[:-len(environ.get('PATH_INFO', ''))])
-    return force_unicode(environ.get('SCRIPT_NAME', u''))
-
diff --git a/webapp/django/core/handlers/modpython.py b/webapp/django/core/handlers/modpython.py
deleted file mode 100644
index aa3fb23..0000000
--- a/webapp/django/core/handlers/modpython.py
+++ /dev/null
@@ -1,210 +0,0 @@
-import os
-from pprint import pformat
-
-from django import http
-from django.core import signals
-from django.core.handlers.base import BaseHandler
-from django.core.urlresolvers import set_script_prefix
-from django.utils import datastructures
-from django.utils.encoding import force_unicode, smart_str
-
-# NOTE: do *not* import settings (or any module which eventually imports
-# settings) until after ModPythonHandler has been called; otherwise os.environ
-# won't be set up correctly (with respect to settings).
-
-class ModPythonRequest(http.HttpRequest):
-    def __init__(self, req):
-        self._req = req
-        # FIXME: This isn't ideal. The request URI may be encoded (it's
-        # non-normalized) slightly differently to the "real" SCRIPT_NAME
-        # and PATH_INFO values. This causes problems when we compute path_info,
-        # below. For now, don't use script names that will be subject to
-        # encoding/decoding.
-        self.path = force_unicode(req.uri)
-        root = req.get_options().get('django.root', '')
-        self.django_root = root
-        # req.path_info isn't necessarily computed correctly in all
-        # circumstances (it's out of mod_python's control a bit), so we use
-        # req.uri and some string manipulations to get the right value.
-        if root and req.uri.startswith(root):
-            self.path_info = force_unicode(req.uri[len(root):])
-        else:
-            self.path_info = self.path
-        if not self.path_info:
-            # Django prefers empty paths to be '/', rather than '', to give us
-            # a common start character for URL patterns. So this is a little
-            # naughty, but also pretty harmless.
-            self.path_info = u'/'
-
-    def __repr__(self):
-        # Since this is called as part of error handling, we need to be very
-        # robust against potentially malformed input.
-        try:
-            get = pformat(self.GET)
-        except:
-            get = '<could not parse>'
-        try:
-            post = pformat(self.POST)
-        except:
-            post = '<could not parse>'
-        try:
-            cookies = pformat(self.COOKIES)
-        except:
-            cookies = '<could not parse>'
-        try:
-            meta = pformat(self.META)
-        except:
-            meta = '<could not parse>'
-        return smart_str(u'<ModPythonRequest\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' %
-                         (self.path, unicode(get), unicode(post),
-                          unicode(cookies), unicode(meta)))
-
-    def get_full_path(self):
-        return '%s%s' % (self.path, self._req.args and ('?' + self._req.args) or '')
-
-    def is_secure(self):
-        try:
-            return self._req.is_https()
-        except AttributeError:
-            # mod_python < 3.2.10 doesn't have req.is_https().
-            return self._req.subprocess_env.get('HTTPS', '').lower() in ('on', '1')
-
-    def _load_post_and_files(self):
-        "Populates self._post and self._files"
-        if 'content-type' in self._req.headers_in and self._req.headers_in['content-type'].startswith('multipart'):
-            self._raw_post_data = ''
-            self._post, self._files = self.parse_file_upload(self.META, self._req)
-        else:
-            self._post, self._files = http.QueryDict(self.raw_post_data, encoding=self._encoding), datastructures.MultiValueDict()
-
-    def _get_request(self):
-        if not hasattr(self, '_request'):
-            self._request = datastructures.MergeDict(self.POST, self.GET)
-        return self._request
-
-    def _get_get(self):
-        if not hasattr(self, '_get'):
-            self._get = http.QueryDict(self._req.args, encoding=self._encoding)
-        return self._get
-
-    def _set_get(self, get):
-        self._get = get
-
-    def _get_post(self):
-        if not hasattr(self, '_post'):
-            self._load_post_and_files()
-        return self._post
-
-    def _set_post(self, post):
-        self._post = post
-
-    def _get_cookies(self):
-        if not hasattr(self, '_cookies'):
-            self._cookies = http.parse_cookie(self._req.headers_in.get('cookie', ''))
-        return self._cookies
-
-    def _set_cookies(self, cookies):
-        self._cookies = cookies
-
-    def _get_files(self):
-        if not hasattr(self, '_files'):
-            self._load_post_and_files()
-        return self._files
-
-    def _get_meta(self):
-        "Lazy loader that returns self.META dictionary"
-        if not hasattr(self, '_meta'):
-            self._meta = {
-                'AUTH_TYPE':         self._req.ap_auth_type,
-                'CONTENT_LENGTH':    self._req.clength, # This may be wrong
-                'CONTENT_TYPE':      self._req.content_type, # This may be wrong
-                'GATEWAY_INTERFACE': 'CGI/1.1',
-                'PATH_INFO':         self.path_info,
-                'PATH_TRANSLATED':   None, # Not supported
-                'QUERY_STRING':      self._req.args,
-                'REMOTE_ADDR':       self._req.connection.remote_ip,
-                'REMOTE_HOST':       None, # DNS lookups not supported
-                'REMOTE_IDENT':      self._req.connection.remote_logname,
-                'REMOTE_USER':       self._req.user,
-                'REQUEST_METHOD':    self._req.method,
-                'SCRIPT_NAME':       self.django_root,
-                'SERVER_NAME':       self._req.server.server_hostname,
-                'SERVER_PORT':       self._req.server.port,
-                'SERVER_PROTOCOL':   self._req.protocol,
-                'SERVER_SOFTWARE':   'mod_python'
-            }
-            for key, value in self._req.headers_in.items():
-                key = 'HTTP_' + key.upper().replace('-', '_')
-                self._meta[key] = value
-        return self._meta
-
-    def _get_raw_post_data(self):
-        try:
-            return self._raw_post_data
-        except AttributeError:
-            self._raw_post_data = self._req.read()
-            return self._raw_post_data
-
-    def _get_method(self):
-        return self.META['REQUEST_METHOD'].upper()
-
-    GET = property(_get_get, _set_get)
-    POST = property(_get_post, _set_post)
-    COOKIES = property(_get_cookies, _set_cookies)
-    FILES = property(_get_files)
-    META = property(_get_meta)
-    REQUEST = property(_get_request)
-    raw_post_data = property(_get_raw_post_data)
-    method = property(_get_method)
-
-class ModPythonHandler(BaseHandler):
-    request_class = ModPythonRequest
-
-    def __call__(self, req):
-        # mod_python fakes the environ, and thus doesn't process SetEnv.  This fixes that
-        os.environ.update(req.subprocess_env)
-
-        # now that the environ works we can see the correct settings, so imports
-        # that use settings now can work
-        from django.conf import settings
-
-        # if we need to set up middleware, now that settings works we can do it now.
-        if self._request_middleware is None:
-            self.load_middleware()
-
-        set_script_prefix(req.get_options().get('django.root', ''))
-        signals.request_started.send(sender=self.__class__)
-        try:
-            try:
-                request = self.request_class(req)
-            except UnicodeDecodeError:
-                response = http.HttpResponseBadRequest()
-            else:
-                response = self.get_response(request)
-
-                # Apply response middleware
-                for middleware_method in self._response_middleware:
-                    response = middleware_method(request, response)
-                response = self.apply_response_fixes(request, response)
-        finally:
-            signals.request_finished.send(sender=self.__class__)
-
-        # Convert our custom HttpResponse object back into the mod_python req.
-        req.content_type = response['Content-Type']
-        for key, value in response.items():
-            if key != 'content-type':
-                req.headers_out[str(key)] = str(value)
-        for c in response.cookies.values():
-            req.headers_out.add('Set-Cookie', c.output(header=''))
-        req.status = response.status_code
-        try:
-            for chunk in response:
-                req.write(chunk)
-        finally:
-            response.close()
-
-        return 0 # mod_python.apache.OK
-
-def handler(req):
-    # mod_python hooks into this function.
-    return ModPythonHandler()(req)
diff --git a/webapp/django/core/handlers/profiler-hotshot.py b/webapp/django/core/handlers/profiler-hotshot.py
deleted file mode 100644
index 6cf94b0..0000000
--- a/webapp/django/core/handlers/profiler-hotshot.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import hotshot, time, os
-from django.core.handlers.modpython import ModPythonHandler
-
-PROFILE_DATA_DIR = "/var/log/cmsprofile"
-
-def handler(req):
-    '''
-    Handler that uses hotshot to store profile data.
-
-    Stores profile data in PROFILE_DATA_DIR.  Since hotshot has no way (that I
-    know of) to append profile data to a single file, each request gets its own
-    profile.  The file names are in the format <url>.<n>.prof where <url> is
-    the request path with "/" replaced by ".", and <n> is a timestamp with
-    microseconds to prevent overwriting files.
-
-    Use the gather_profile_stats.py script to gather these individual request
-    profiles into aggregated profiles by request path.
-    '''
-    profname = "%s.%.3f.prof" % (req.uri.strip("/").replace('/', '.'), time.time())
-    profname = os.path.join(PROFILE_DATA_DIR, profname)
-    prof = hotshot.Profile(profname)
-    return prof.runcall(ModPythonHandler(), req)
diff --git a/webapp/django/core/handlers/wsgi.py b/webapp/django/core/handlers/wsgi.py
deleted file mode 100644
index d1336b3..0000000
--- a/webapp/django/core/handlers/wsgi.py
+++ /dev/null
@@ -1,238 +0,0 @@
-from threading import Lock
-from pprint import pformat
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-from django import http
-from django.core import signals
-from django.core.handlers import base
-from django.core.urlresolvers import set_script_prefix
-from django.utils import datastructures
-from django.utils.encoding import force_unicode
-
-# See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
-STATUS_CODE_TEXT = {
-    100: 'CONTINUE',
-    101: 'SWITCHING PROTOCOLS',
-    200: 'OK',
-    201: 'CREATED',
-    202: 'ACCEPTED',
-    203: 'NON-AUTHORITATIVE INFORMATION',
-    204: 'NO CONTENT',
-    205: 'RESET CONTENT',
-    206: 'PARTIAL CONTENT',
-    300: 'MULTIPLE CHOICES',
-    301: 'MOVED PERMANENTLY',
-    302: 'FOUND',
-    303: 'SEE OTHER',
-    304: 'NOT MODIFIED',
-    305: 'USE PROXY',
-    306: 'RESERVED',
-    307: 'TEMPORARY REDIRECT',
-    400: 'BAD REQUEST',
-    401: 'UNAUTHORIZED',
-    402: 'PAYMENT REQUIRED',
-    403: 'FORBIDDEN',
-    404: 'NOT FOUND',
-    405: 'METHOD NOT ALLOWED',
-    406: 'NOT ACCEPTABLE',
-    407: 'PROXY AUTHENTICATION REQUIRED',
-    408: 'REQUEST TIMEOUT',
-    409: 'CONFLICT',
-    410: 'GONE',
-    411: 'LENGTH REQUIRED',
-    412: 'PRECONDITION FAILED',
-    413: 'REQUEST ENTITY TOO LARGE',
-    414: 'REQUEST-URI TOO LONG',
-    415: 'UNSUPPORTED MEDIA TYPE',
-    416: 'REQUESTED RANGE NOT SATISFIABLE',
-    417: 'EXPECTATION FAILED',
-    500: 'INTERNAL SERVER ERROR',
-    501: 'NOT IMPLEMENTED',
-    502: 'BAD GATEWAY',
-    503: 'SERVICE UNAVAILABLE',
-    504: 'GATEWAY TIMEOUT',
-    505: 'HTTP VERSION NOT SUPPORTED',
-}
-
-def safe_copyfileobj(fsrc, fdst, length=16*1024, size=0):
-    """
-    A version of shutil.copyfileobj that will not read more than 'size' bytes.
-    This makes it safe from clients sending more than CONTENT_LENGTH bytes of
-    data in the body.
-    """
-    if not size:
-        return
-    while size > 0:
-        buf = fsrc.read(min(length, size))
-        if not buf:
-            break
-        fdst.write(buf)
-        size -= len(buf)
-
-class WSGIRequest(http.HttpRequest):
-    def __init__(self, environ):
-        script_name = base.get_script_name(environ)
-        path_info = force_unicode(environ.get('PATH_INFO', u'/'))
-        if not path_info:
-            # Sometimes PATH_INFO exists, but is empty (e.g. accessing
-            # the SCRIPT_NAME URL without a trailing slash). We really need to
-            # operate as if they'd requested '/'. Not amazingly nice to force
-            # the path like this, but should be harmless.
-            path_info = u'/'
-        self.environ = environ
-        self.path_info = path_info
-        self.path = '%s%s' % (script_name, path_info)
-        self.META = environ
-        self.META['PATH_INFO'] = path_info
-        self.META['SCRIPT_NAME'] = script_name
-        self.method = environ['REQUEST_METHOD'].upper()
-
-    def __repr__(self):
-        # Since this is called as part of error handling, we need to be very
-        # robust against potentially malformed input.
-        try:
-            get = pformat(self.GET)
-        except:
-            get = '<could not parse>'
-        try:
-            post = pformat(self.POST)
-        except:
-            post = '<could not parse>'
-        try:
-            cookies = pformat(self.COOKIES)
-        except:
-            cookies = '<could not parse>'
-        try:
-            meta = pformat(self.META)
-        except:
-            meta = '<could not parse>'
-        return '<WSGIRequest\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \
-            (get, post, cookies, meta)
-
-    def get_full_path(self):
-        return '%s%s' % (self.path, self.environ.get('QUERY_STRING', '') and ('?' + self.environ.get('QUERY_STRING', '')) or '')
-
-    def is_secure(self):
-        return 'wsgi.url_scheme' in self.environ \
-            and self.environ['wsgi.url_scheme'] == 'https'
-
-    def _load_post_and_files(self):
-        # Populates self._post and self._files
-        if self.method == 'POST':
-            if self.environ.get('CONTENT_TYPE', '').startswith('multipart'):
-                self._raw_post_data = ''
-                self._post, self._files = self.parse_file_upload(self.META, self.environ['wsgi.input'])
-            else:
-                self._post, self._files = http.QueryDict(self.raw_post_data, encoding=self._encoding), datastructures.MultiValueDict()
-        else:
-            self._post, self._files = http.QueryDict('', encoding=self._encoding), datastructures.MultiValueDict()
-
-    def _get_request(self):
-        if not hasattr(self, '_request'):
-            self._request = datastructures.MergeDict(self.POST, self.GET)
-        return self._request
-
-    def _get_get(self):
-        if not hasattr(self, '_get'):
-            # The WSGI spec says 'QUERY_STRING' may be absent.
-            self._get = http.QueryDict(self.environ.get('QUERY_STRING', ''), encoding=self._encoding)
-        return self._get
-
-    def _set_get(self, get):
-        self._get = get
-
-    def _get_post(self):
-        if not hasattr(self, '_post'):
-            self._load_post_and_files()
-        return self._post
-
-    def _set_post(self, post):
-        self._post = post
-
-    def _get_cookies(self):
-        if not hasattr(self, '_cookies'):
-            self._cookies = http.parse_cookie(self.environ.get('HTTP_COOKIE', ''))
-        return self._cookies
-
-    def _set_cookies(self, cookies):
-        self._cookies = cookies
-
-    def _get_files(self):
-        if not hasattr(self, '_files'):
-            self._load_post_and_files()
-        return self._files
-
-    def _get_raw_post_data(self):
-        try:
-            return self._raw_post_data
-        except AttributeError:
-            buf = StringIO()
-            try:
-                # CONTENT_LENGTH might be absent if POST doesn't have content at all (lighttpd)
-                content_length = int(self.environ.get('CONTENT_LENGTH', 0))
-            except (ValueError, TypeError):
-                # If CONTENT_LENGTH was empty string or not an integer, don't
-                # error out. We've also seen None passed in here (against all
-                # specs, but see ticket #8259), so we handle TypeError as well.
-                content_length = 0
-            if content_length > 0:
-                safe_copyfileobj(self.environ['wsgi.input'], buf,
-                        size=content_length)
-            self._raw_post_data = buf.getvalue()
-            buf.close()
-            return self._raw_post_data
-
-    GET = property(_get_get, _set_get)
-    POST = property(_get_post, _set_post)
-    COOKIES = property(_get_cookies, _set_cookies)
-    FILES = property(_get_files)
-    REQUEST = property(_get_request)
-    raw_post_data = property(_get_raw_post_data)
-
-class WSGIHandler(base.BaseHandler):
-    initLock = Lock()
-    request_class = WSGIRequest
-
-    def __call__(self, environ, start_response):
-        from django.conf import settings
-
-        # Set up middleware if needed. We couldn't do this earlier, because
-        # settings weren't available.
-        if self._request_middleware is None:
-            self.initLock.acquire()
-            # Check that middleware is still uninitialised.
-            if self._request_middleware is None:
-                self.load_middleware()
-            self.initLock.release()
-
-        set_script_prefix(base.get_script_name(environ))
-        signals.request_started.send(sender=self.__class__)
-        try:
-            try:
-                request = self.request_class(environ)
-            except UnicodeDecodeError:
-                response = http.HttpResponseBadRequest()
-            else:
-                response = self.get_response(request)
-
-                # Apply response middleware
-                for middleware_method in self._response_middleware:
-                    response = middleware_method(request, response)
-                response = self.apply_response_fixes(request, response)
-        finally:
-            signals.request_finished.send(sender=self.__class__)
-
-        try:
-            status_text = STATUS_CODE_TEXT[response.status_code]
-        except KeyError:
-            status_text = 'UNKNOWN STATUS CODE'
-        status = '%s %s' % (response.status_code, status_text)
-        response_headers = [(str(k), str(v)) for k, v in response.items()]
-        for c in response.cookies.values():
-            response_headers.append(('Set-Cookie', str(c.output(header=''))))
-        start_response(status, response_headers)
-        return response
-
diff --git a/webapp/django/core/mail.py b/webapp/django/core/mail.py
deleted file mode 100644
index 1ac2a39..0000000
--- a/webapp/django/core/mail.py
+++ /dev/null
@@ -1,371 +0,0 @@
-"""
-Tools for sending email.
-"""
-
-import mimetypes
-import os
-import smtplib
-import socket
-import time
-import random
-from email import Charset, Encoders
-from email.MIMEText import MIMEText
-from email.MIMEMultipart import MIMEMultipart
-from email.MIMEBase import MIMEBase
-from email.Header import Header
-from email.Utils import formatdate, parseaddr, formataddr
-
-from django.conf import settings
-from django.utils.encoding import smart_str, force_unicode
-
-# Don't BASE64-encode UTF-8 messages so that we avoid unwanted attention from
-# some spam filters.
-Charset.add_charset('utf-8', Charset.SHORTEST, Charset.QP, 'utf-8')
-
-# Default MIME type to use on attachments (if it is not explicitly given
-# and cannot be guessed).
-DEFAULT_ATTACHMENT_MIME_TYPE = 'application/octet-stream'
-
-# Cache the hostname, but do it lazily: socket.getfqdn() can take a couple of
-# seconds, which slows down the restart of the server.
-class CachedDnsName(object):
-    def __str__(self):
-        return self.get_fqdn()
-
-    def get_fqdn(self):
-        if not hasattr(self, '_fqdn'):
-            self._fqdn = socket.getfqdn()
-        return self._fqdn
-
-DNS_NAME = CachedDnsName()
-
-# Copied from Python standard library, with the following modifications:
-# * Used cached hostname for performance.
-# * Added try/except to support lack of getpid() in Jython (#5496).
-def make_msgid(idstring=None):
-    """Returns a string suitable for RFC 2822 compliant Message-ID, e.g:
-
-    <20020201195627.33539.96671@nightshade.la.mastaler.com>
-
-    Optional idstring if given is a string used to strengthen the
-    uniqueness of the message id.
-    """
-    timeval = time.time()
-    utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval))
-    try:
-        pid = os.getpid()
-    except AttributeError:
-        # No getpid() in Jython, for example.
-        pid = 1
-    randint = random.randrange(100000)
-    if idstring is None:
-        idstring = ''
-    else:
-        idstring = '.' + idstring
-    idhost = DNS_NAME
-    msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, idhost)
-    return msgid
-
-class BadHeaderError(ValueError):
-    pass
-
-def forbid_multi_line_headers(name, val):
-    """Forbids multi-line headers, to prevent header injection."""
-    val = force_unicode(val)
-    if '\n' in val or '\r' in val:
-        raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name))
-    try:
-        val = val.encode('ascii')
-    except UnicodeEncodeError:
-        if name.lower() in ('to', 'from', 'cc'):
-            result = []
-            for item in val.split(', '):
-                nm, addr = parseaddr(item)
-                nm = str(Header(nm, settings.DEFAULT_CHARSET))
-                result.append(formataddr((nm, str(addr))))
-            val = ', '.join(result)
-        else:
-            val = Header(val, settings.DEFAULT_CHARSET)
-    else:
-        if name.lower() == 'subject':
-            val = Header(val)
-    return name, val
-
-class SafeMIMEText(MIMEText):
-    def __setitem__(self, name, val):
-        name, val = forbid_multi_line_headers(name, val)
-        MIMEText.__setitem__(self, name, val)
-
-class SafeMIMEMultipart(MIMEMultipart):
-    def __setitem__(self, name, val):
-        name, val = forbid_multi_line_headers(name, val)
-        MIMEMultipart.__setitem__(self, name, val)
-
-class SMTPConnection(object):
-    """
-    A wrapper that manages the SMTP network connection.
-    """
-
-    def __init__(self, host=None, port=None, username=None, password=None,
-                 use_tls=None, fail_silently=False):
-        self.host = host or settings.EMAIL_HOST
-        self.port = port or settings.EMAIL_PORT
-        self.username = username or settings.EMAIL_HOST_USER
-        self.password = password or settings.EMAIL_HOST_PASSWORD
-        self.use_tls = (use_tls is not None) and use_tls or settings.EMAIL_USE_TLS
-        self.fail_silently = fail_silently
-        self.connection = None
-
-    def open(self):
-        """
-        Ensures we have a connection to the email server. Returns whether or
-        not a new connection was required (True or False).
-        """
-        if self.connection:
-            # Nothing to do if the connection is already open.
-            return False
-        try:
-            # If local_hostname is not specified, socket.getfqdn() gets used.
-            # For performance, we use the cached FQDN for local_hostname.
-            self.connection = smtplib.SMTP(self.host, self.port,
-                                           local_hostname=DNS_NAME.get_fqdn())
-            if self.use_tls:
-                self.connection.ehlo()
-                self.connection.starttls()
-                self.connection.ehlo()
-            if self.username and self.password:
-                self.connection.login(self.username, self.password)
-            return True
-        except:
-            if not self.fail_silently:
-                raise
-
-    def close(self):
-        """Closes the connection to the email server."""
-        try:
-            try:
-                self.connection.quit()
-            except socket.sslerror:
-                # This happens when calling quit() on a TLS connection
-                # sometimes.
-                self.connection.close()
-            except:
-                if self.fail_silently:
-                    return
-                raise
-        finally:
-            self.connection = None
-
-    def send_messages(self, email_messages):
-        """
-        Sends one or more EmailMessage objects and returns the number of email
-        messages sent.
-        """
-        if not email_messages:
-            return
-        new_conn_created = self.open()
-        if not self.connection:
-            # We failed silently on open(). Trying to send would be pointless.
-            return
-        num_sent = 0
-        for message in email_messages:
-            sent = self._send(message)
-            if sent:
-                num_sent += 1
-        if new_conn_created:
-            self.close()
-        return num_sent
-
-    def _send(self, email_message):
-        """A helper method that does the actual sending."""
-        if not email_message.recipients():
-            return False
-        try:
-            self.connection.sendmail(email_message.from_email,
-                    email_message.recipients(),
-                    email_message.message().as_string())
-        except:
-            if not self.fail_silently:
-                raise
-            return False
-        return True
-
-class EmailMessage(object):
-    """
-    A container for email information.
-    """
-    content_subtype = 'plain'
-    multipart_subtype = 'mixed'
-    encoding = None     # None => use settings default
-
-    def __init__(self, subject='', body='', from_email=None, to=None, bcc=None,
-            connection=None, attachments=None, headers=None):
-        """
-        Initialize a single email message (which can be sent to multiple
-        recipients).
-
-        All strings used to create the message can be unicode strings (or UTF-8
-        bytestrings). The SafeMIMEText class will handle any necessary encoding
-        conversions.
-        """
-        if to:
-            assert not isinstance(to, basestring), '"to" argument must be a list or tuple'
-            self.to = list(to)
-        else:
-            self.to = []
-        if bcc:
-            assert not isinstance(bcc, basestring), '"bcc" argument must be a list or tuple'
-            self.bcc = list(bcc)
-        else:
-            self.bcc = []
-        self.from_email = from_email or settings.DEFAULT_FROM_EMAIL
-        self.subject = subject
-        self.body = body
-        self.attachments = attachments or []
-        self.extra_headers = headers or {}
-        self.connection = connection
-
-    def get_connection(self, fail_silently=False):
-        if not self.connection:
-            self.connection = SMTPConnection(fail_silently=fail_silently)
-        return self.connection
-
-    def message(self):
-        encoding = self.encoding or settings.DEFAULT_CHARSET
-        msg = SafeMIMEText(smart_str(self.body, settings.DEFAULT_CHARSET),
-                           self.content_subtype, encoding)
-        if self.attachments:
-            body_msg = msg
-            msg = SafeMIMEMultipart(_subtype=self.multipart_subtype)
-            if self.body:
-                msg.attach(body_msg)
-            for attachment in self.attachments:
-                if isinstance(attachment, MIMEBase):
-                    msg.attach(attachment)
-                else:
-                    msg.attach(self._create_attachment(*attachment))
-        msg['Subject'] = self.subject
-        msg['From'] = self.from_email
-        msg['To'] = ', '.join(self.to)
-        msg['Date'] = formatdate()
-        msg['Message-ID'] = make_msgid()
-        for name, value in self.extra_headers.items():
-            msg[name] = value
-        return msg
-
-    def recipients(self):
-        """
-        Returns a list of all recipients of the email (includes direct
-        addressees as well as Bcc entries).
-        """
-        return self.to + self.bcc
-
-    def send(self, fail_silently=False):
-        """Sends the email message."""
-        return self.get_connection(fail_silently).send_messages([self])
-
-    def attach(self, filename=None, content=None, mimetype=None):
-        """
-        Attaches a file with the given filename and content. The filename can
-        be omitted (useful for multipart/alternative messages) and the mimetype
-        is guessed, if not provided.
-
-        If the first parameter is a MIMEBase subclass it is inserted directly
-        into the resulting message attachments.
-        """
-        if isinstance(filename, MIMEBase):
-            assert content == mimetype == None
-            self.attachments.append(filename)
-        else:
-            assert content is not None
-            self.attachments.append((filename, content, mimetype))
-
-    def attach_file(self, path, mimetype=None):
-        """Attaches a file from the filesystem."""
-        filename = os.path.basename(path)
-        content = open(path, 'rb').read()
-        self.attach(filename, content, mimetype)
-
-    def _create_attachment(self, filename, content, mimetype=None):
-        """
-        Converts the filename, content, mimetype triple into a MIME attachment
-        object.
-        """
-        if mimetype is None:
-            mimetype, _ = mimetypes.guess_type(filename)
-            if mimetype is None:
-                mimetype = DEFAULT_ATTACHMENT_MIME_TYPE
-        basetype, subtype = mimetype.split('/', 1)
-        if basetype == 'text':
-            attachment = SafeMIMEText(smart_str(content,
-                settings.DEFAULT_CHARSET), subtype, settings.DEFAULT_CHARSET)
-        else:
-            # Encode non-text attachments with base64.
-            attachment = MIMEBase(basetype, subtype)
-            attachment.set_payload(content)
-            Encoders.encode_base64(attachment)
-        if filename:
-            attachment.add_header('Content-Disposition', 'attachment',
-                                  filename=filename)
-        return attachment
-
-class EmailMultiAlternatives(EmailMessage):
-    """
-    A version of EmailMessage that makes it easy to send multipart/alternative
-    messages. For example, including text and HTML versions of the text is
-    made easier.
-    """
-    multipart_subtype = 'alternative'
-
-    def attach_alternative(self, content, mimetype=None):
-        """Attach an alternative content representation."""
-        self.attach(content=content, mimetype=mimetype)
-
-def send_mail(subject, message, from_email, recipient_list,
-              fail_silently=False, auth_user=None, auth_password=None):
-    """
-    Easy wrapper for sending a single message to a recipient list. All members
-    of the recipient list will see the other recipients in the 'To' field.
-
-    If auth_user is None, the EMAIL_HOST_USER setting is used.
-    If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.
-
-    Note: The API for this method is frozen. New code wanting to extend the
-    functionality should use the EmailMessage class directly.
-    """
-    connection = SMTPConnection(username=auth_user, password=auth_password,
-                                fail_silently=fail_silently)
-    return EmailMessage(subject, message, from_email, recipient_list,
-                        connection=connection).send()
-
-def send_mass_mail(datatuple, fail_silently=False, auth_user=None,
-                   auth_password=None):
-    """
-    Given a datatuple of (subject, message, from_email, recipient_list), sends
-    each message to each recipient list. Returns the number of e-mails sent.
-
-    If from_email is None, the DEFAULT_FROM_EMAIL setting is used.
-    If auth_user and auth_password are set, they're used to log in.
-    If auth_user is None, the EMAIL_HOST_USER setting is used.
-    If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.
-
-    Note: The API for this method is frozen. New code wanting to extend the
-    functionality should use the EmailMessage class directly.
-    """
-    connection = SMTPConnection(username=auth_user, password=auth_password,
-                                fail_silently=fail_silently)
-    messages = [EmailMessage(subject, message, sender, recipient)
-                for subject, message, sender, recipient in datatuple]
-    return connection.send_messages(messages)
-
-def mail_admins(subject, message, fail_silently=False):
-    """Sends a message to the admins, as defined by the ADMINS setting."""
-    EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
-                 settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS]
-                 ).send(fail_silently=fail_silently)
-
-def mail_managers(subject, message, fail_silently=False):
-    """Sends a message to the managers, as defined by the MANAGERS setting."""
-    EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
-                 settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS]
-                 ).send(fail_silently=fail_silently)
diff --git a/webapp/django/core/management/__init__.py b/webapp/django/core/management/__init__.py
deleted file mode 100644
index fc1e82b..0000000
--- a/webapp/django/core/management/__init__.py
+++ /dev/null
@@ -1,334 +0,0 @@
-import os
-import sys
-from optparse import OptionParser
-import imp
-
-import django
-from django.core.management.base import BaseCommand, CommandError, handle_default_options
-
-# For backwards compatibility: get_version() used to be in this module.
-get_version = django.get_version
-
-# A cache of loaded commands, so that call_command
-# doesn't have to reload every time it's called.
-_commands = None
-
-def find_commands(management_dir):
-    """
-    Given a path to a management directory, returns a list of all the command
-    names that are available.
-
-    Returns an empty list if no commands are defined.
-    """
-    command_dir = os.path.join(management_dir, 'commands')
-    try:
-        return [f[:-3] for f in os.listdir(command_dir)
-                if not f.startswith('_') and f.endswith('.py')]
-    except OSError:
-        return []
-
-def find_management_module(app_name):
-    """
-    Determines the path to the management module for the given app_name,
-    without actually importing the application or the management module.
-
-    Raises ImportError if the management module cannot be found for any reason.
-    """
-    parts = app_name.split('.')
-    parts.append('management')
-    parts.reverse()
-    part = parts.pop()
-    path = None
-    
-    # When using manage.py, the project module is added to the path,
-    # loaded, then removed from the path. This means that 
-    # testproject.testapp.models can be loaded in future, even if
-    # testproject isn't in the path. When looking for the management
-    # module, we need look for the case where the project name is part
-    # of the app_name but the project directory itself isn't on the path.
-    try:
-        f, path, descr = imp.find_module(part,path)
-    except ImportError,e:
-        if os.path.basename(os.getcwd()) != part:
-            raise e
-        
-    while parts:
-        part = parts.pop()
-        f, path, descr = imp.find_module(part, path and [path] or None)
-    return path
-
-def load_command_class(app_name, name):
-    """
-    Given a command name and an application name, returns the Command
-    class instance. All errors raised by the import process
-    (ImportError, AttributeError) are allowed to propagate.
-    """
-    return getattr(__import__('%s.management.commands.%s' % (app_name, name),
-                   {}, {}, ['Command']), 'Command')()
-
-def get_commands():
-    """
-    Returns a dictionary mapping command names to their callback applications.
-
-    This works by looking for a management.commands package in django.core, and
-    in each installed application -- if a commands package exists, all commands
-    in that package are registered.
-
-    Core commands are always included. If a settings module has been
-    specified, user-defined commands will also be included, the
-    startproject command will be disabled, and the startapp command
-    will be modified to use the directory in which the settings module appears.
-
-    The dictionary is in the format {command_name: app_name}. Key-value
-    pairs from this dictionary can then be used in calls to
-    load_command_class(app_name, command_name)
-
-    If a specific version of a command must be loaded (e.g., with the
-    startapp command), the instantiated module can be placed in the
-    dictionary in place of the application name.
-
-    The dictionary is cached on the first call and reused on subsequent
-    calls.
-    """
-    global _commands
-    if _commands is None:
-        _commands = dict([(name, 'django.core') for name in find_commands(__path__[0])])
-
-        # Find the installed apps
-        try:
-            from django.conf import settings
-            apps = settings.INSTALLED_APPS
-        except (AttributeError, EnvironmentError, ImportError):
-            apps = []
-
-        # Find the project directory
-        try:
-            from django.conf import settings
-            project_directory = setup_environ(
-                __import__(
-                    settings.SETTINGS_MODULE, {}, {}, 
-                    (settings.SETTINGS_MODULE.split(".")[-1],)
-                )
-            )
-        except (AttributeError, EnvironmentError, ImportError):
-            project_directory = None
-
-        # Find and load the management module for each installed app.
-        for app_name in apps:
-            try:
-                path = find_management_module(app_name)
-                _commands.update(dict([(name, app_name)
-                                       for name in find_commands(path)]))
-            except ImportError:
-                pass # No management module - ignore this app
-
-        if project_directory:
-            # Remove the "startproject" command from self.commands, because
-            # that's a django-admin.py command, not a manage.py command.
-            del _commands['startproject']
-
-            # Override the startapp command so that it always uses the
-            # project_directory, not the current working directory
-            # (which is default).
-            from django.core.management.commands.startapp import ProjectCommand
-            _commands['startapp'] = ProjectCommand(project_directory)
-
-    return _commands
-
-def call_command(name, *args, **options):
-    """
-    Calls the given command, with the given options and args/kwargs.
-
-    This is the primary API you should use for calling specific commands.
-
-    Some examples:
-        call_command('syncdb')
-        call_command('shell', plain=True)
-        call_command('sqlall', 'myapp')
-    """
-    try:
-        app_name = get_commands()[name]
-        if isinstance(app_name, BaseCommand):
-            # If the command is already loaded, use it directly.
-            klass = app_name
-        else:
-            klass = load_command_class(app_name, name)
-    except KeyError:
-        raise CommandError, "Unknown command: %r" % name
-    return klass.execute(*args, **options)
-
-class LaxOptionParser(OptionParser):
-    """
-    An option parser that doesn't raise any errors on unknown options.
-
-    This is needed because the --settings and --pythonpath options affect
-    the commands (and thus the options) that are available to the user.
-    """
-    def error(self, msg):
-        pass
-    
-    def print_help(self):
-        """Output nothing.
-        
-        The lax options are included in the normal option parser, so under
-        normal usage, we don't need to print the lax options.
-        """
-        pass
-    
-    def print_lax_help(self):
-        """Output the basic options available to every command.
-        
-        This just redirects to the default print_help() behaviour.
-        """
-        OptionParser.print_help(self)
-        
-    def _process_args(self, largs, rargs, values):
-        """
-        Overrides OptionParser._process_args to exclusively handle default
-        options and ignore args and other options. 
-        
-        This overrides the behavior of the super class, which stop parsing 
-        at the first unrecognized option.
-        """
-        while rargs:
-            arg = rargs[0]
-            try:
-                if arg[0:2] == "--" and len(arg) > 2:
-                    # process a single long option (possibly with value(s))
-                    # the superclass code pops the arg off rargs
-                    self._process_long_opt(rargs, values)
-                elif arg[:1] == "-" and len(arg) > 1:
-                    # process a cluster of short options (possibly with
-                    # value(s) for the last one only)
-                    # the superclass code pops the arg off rargs
-                    self._process_short_opts(rargs, values)
-                else:
-                    # it's either a non-default option or an arg
-                    # either way, add it to the args list so we can keep
-                    # dealing with options
-                    del rargs[0]
-                    raise error
-            except:
-                largs.append(arg)
-
-class ManagementUtility(object):
-    """
-    Encapsulates the logic of the django-admin.py and manage.py utilities.
-
-    A ManagementUtility has a number of commands, which can be manipulated
-    by editing the self.commands dictionary.
-    """
-    def __init__(self, argv=None):
-        self.argv = argv or sys.argv[:]
-        self.prog_name = os.path.basename(self.argv[0])
-
-    def main_help_text(self):
-        """
-        Returns the script's main help text, as a string.
-        """
-        usage = ['',"Type '%s help <subcommand>' for help on a specific subcommand." % self.prog_name,'']
-        usage.append('Available subcommands:')
-        commands = get_commands().keys()
-        commands.sort()
-        for cmd in commands:
-            usage.append('  %s' % cmd)
-        return '\n'.join(usage)
-
-    def fetch_command(self, subcommand):
-        """
-        Tries to fetch the given subcommand, printing a message with the
-        appropriate command called from the command line (usually
-        "django-admin.py" or "manage.py") if it can't be found.
-        """
-        try:
-            app_name = get_commands()[subcommand]
-            if isinstance(app_name, BaseCommand):
-                # If the command is already loaded, use it directly.
-                klass = app_name
-            else:
-                klass = load_command_class(app_name, subcommand)
-        except KeyError:
-            sys.stderr.write("Unknown command: %r\nType '%s help' for usage.\n" % \
-                (subcommand, self.prog_name))
-            sys.exit(1)
-        return klass
-
-    def execute(self):
-        """
-        Given the command-line arguments, this figures out which subcommand is
-        being run, creates a parser appropriate to that command, and runs it.
-        """
-        # Preprocess options to extract --settings and --pythonpath.
-        # These options could affect the commands that are available, so they
-        # must be processed early.
-        parser = LaxOptionParser(usage="%prog subcommand [options] [args]",
-                                 version=get_version(), 
-                                 option_list=BaseCommand.option_list)
-        try:
-            options, args = parser.parse_args(self.argv)
-            handle_default_options(options)
-        except:
-            pass # Ignore any option errors at this point.
-
-        try:
-            subcommand = self.argv[1]
-        except IndexError:
-            sys.stderr.write("Type '%s help' for usage.\n" % self.prog_name)
-            sys.exit(1)
-
-        if subcommand == 'help':
-            if len(args) > 2:
-                self.fetch_command(args[2]).print_help(self.prog_name, args[2])
-            else:
-                parser.print_lax_help()
-                sys.stderr.write(self.main_help_text() + '\n')
-                sys.exit(1)
-        # Special-cases: We want 'django-admin.py --version' and
-        # 'django-admin.py --help' to work, for backwards compatibility.
-        elif self.argv[1:] == ['--version']:
-            # LaxOptionParser already takes care of printing the version.
-            pass
-        elif self.argv[1:] == ['--help']:
-            parser.print_lax_help()
-            sys.stderr.write(self.main_help_text() + '\n')
-        else:
-            self.fetch_command(subcommand).run_from_argv(self.argv)
-
-def setup_environ(settings_mod):
-    """
-    Configures the runtime environment. This can also be used by external
-    scripts wanting to set up a similar environment to manage.py.
-    Returns the project directory (assuming the passed settings module is
-    directly in the project directory).
-    """
-    # Add this project to sys.path so that it's importable in the conventional
-    # way. For example, if this file (manage.py) lives in a directory
-    # "myproject", this code would add "/path/to/myproject" to sys.path.
-    project_directory, settings_filename = os.path.split(settings_mod.__file__)
-    if project_directory == os.curdir or not project_directory:
-        project_directory = os.getcwd()
-    project_name = os.path.basename(project_directory)
-    settings_name = os.path.splitext(settings_filename)[0]
-    sys.path.append(os.path.join(project_directory, os.pardir))
-    project_module = __import__(project_name, {}, {}, [''])
-    sys.path.pop()
-
-    # Set DJANGO_SETTINGS_MODULE appropriately.
-    os.environ['DJANGO_SETTINGS_MODULE'] = '%s.%s' % (project_name, settings_name)
-    return project_directory
-
-def execute_from_command_line(argv=None):
-    """
-    A simple method that runs a ManagementUtility.
-    """
-    utility = ManagementUtility(argv)
-    utility.execute()
-
-def execute_manager(settings_mod, argv=None):
-    """
-    Like execute_from_command_line(), but for use by manage.py, a
-    project-specific django-admin.py utility.
-    """
-    setup_environ(settings_mod)
-    utility = ManagementUtility(argv)
-    utility.execute()
diff --git a/webapp/django/core/management/base.py b/webapp/django/core/management/base.py
deleted file mode 100644
index 20cc7c0..0000000
--- a/webapp/django/core/management/base.py
+++ /dev/null
@@ -1,242 +0,0 @@
-import os
-import sys
-from optparse import make_option, OptionParser
-
-import django
-from django.core.exceptions import ImproperlyConfigured
-from django.core.management.color import color_style
-
-try:
-    set
-except NameError:
-    from sets import Set as set     # For Python 2.3
-
-class CommandError(Exception):
-    pass
-
-def handle_default_options(options):
-    """
-    Include any default options that all commands should accept
-    here so that ManagementUtility can handle them before searching
-    for user commands.
-    """
-    if options.settings:
-        os.environ['DJANGO_SETTINGS_MODULE'] = options.settings
-    if options.pythonpath:
-        sys.path.insert(0, options.pythonpath)
-
-class BaseCommand(object):
-    # Metadata about this command.
-    option_list = (
-        make_option('--settings',
-            help='The Python path to a settings module, e.g. "myproject.settings.main". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.'),
-        make_option('--pythonpath',
-            help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".'),
-        make_option('--traceback', action='store_true',
-            help='Print traceback on exception'),
-    )
-    help = ''
-    args = ''
-
-    # Configuration shortcuts that alter various logic.
-    can_import_settings = True
-    requires_model_validation = True
-    output_transaction = False # Whether to wrap the output in a "BEGIN; COMMIT;"
-
-    def __init__(self):
-        self.style = color_style()
-
-    def get_version(self):
-        """
-        Returns the Django version, which should be correct for all built-in
-        Django commands. User-supplied commands should override this method.
-        """
-        return django.get_version()
-
-    def usage(self, subcommand):
-        usage = '%%prog %s [options] %s' % (subcommand, self.args)
-        if self.help:
-            return '%s\n\n%s' % (usage, self.help)
-        else:
-            return usage
-
-    def create_parser(self, prog_name, subcommand):
-        return OptionParser(prog=prog_name,
-                            usage=self.usage(subcommand),
-                            version=self.get_version(),
-                            option_list=self.option_list)
-
-    def print_help(self, prog_name, subcommand):
-        parser = self.create_parser(prog_name, subcommand)
-        parser.print_help()
-
-    def run_from_argv(self, argv):
-        parser = self.create_parser(argv[0], argv[1])
-        options, args = parser.parse_args(argv[2:])
-        handle_default_options(options)
-        self.execute(*args, **options.__dict__)
-
-    def execute(self, *args, **options):
-        # Switch to English, because django-admin.py creates database content
-        # like permissions, and those shouldn't contain any translations.
-        # But only do this if we can assume we have a working settings file,
-        # because django.utils.translation requires settings.
-        if self.can_import_settings:
-            try:
-                from django.utils import translation
-                translation.activate('en-us')
-            except ImportError, e:
-                # If settings should be available, but aren't, 
-                # raise the error and quit.
-                sys.stderr.write(self.style.ERROR(str('Error: %s\n' % e)))
-                sys.exit(1)
-        try:
-            if self.requires_model_validation:
-                self.validate()
-            output = self.handle(*args, **options)
-            if output:
-                if self.output_transaction:
-                    # This needs to be imported here, because it relies on settings.
-                    from django.db import connection
-                    if connection.ops.start_transaction_sql():
-                        print self.style.SQL_KEYWORD(connection.ops.start_transaction_sql())
-                print output
-                if self.output_transaction:
-                    print self.style.SQL_KEYWORD("COMMIT;")
-        except CommandError, e:
-            sys.stderr.write(self.style.ERROR(str('Error: %s\n' % e)))
-            sys.exit(1)
-
-    def validate(self, app=None, display_num_errors=False):
-        """
-        Validates the given app, raising CommandError for any errors.
-
-        If app is None, then this will validate all installed apps.
-        """
-        from django.core.management.validation import get_validation_errors
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        s = StringIO()
-        num_errors = get_validation_errors(s, app)
-        if num_errors:
-            s.seek(0)
-            error_text = s.read()
-            raise CommandError("One or more models did not validate:\n%s" % error_text)
-        if display_num_errors:
-            print "%s error%s found" % (num_errors, num_errors != 1 and 's' or '')
-
-    def handle(self, *args, **options):
-        raise NotImplementedError()
-
-class AppCommand(BaseCommand):
-    args = '<appname appname ...>'
-
-    def handle(self, *app_labels, **options):
-        from django.db import models
-        if not app_labels:
-            raise CommandError('Enter at least one appname.')
-        try:
-            app_list = [models.get_app(app_label) for app_label in app_labels]
-        except (ImproperlyConfigured, ImportError), e:
-            raise CommandError("%s. Are you sure your INSTALLED_APPS setting is correct?" % e)
-        output = []
-        for app in app_list:
-            app_output = self.handle_app(app, **options)
-            if app_output:
-                output.append(app_output)
-        return '\n'.join(output)
-
-    def handle_app(self, app, **options):
-        raise NotImplementedError()
-
-class LabelCommand(BaseCommand):
-    args = '<label label ...>'
-    label = 'label'
-
-    def handle(self, *labels, **options):
-        if not labels:
-            raise CommandError('Enter at least one %s.' % self.label)
-
-        output = []
-        for label in labels:
-            label_output = self.handle_label(label, **options)
-            if label_output:
-                output.append(label_output)
-        return '\n'.join(output)
-
-    def handle_label(self, label, **options):
-        raise NotImplementedError()
-
-class NoArgsCommand(BaseCommand):
-    args = ''
-
-    def handle(self, *args, **options):
-        if args:
-            raise CommandError("Command doesn't accept any arguments")
-        return self.handle_noargs(**options)
-
-    def handle_noargs(self, **options):
-        raise NotImplementedError()
-
-def copy_helper(style, app_or_project, name, directory, other_name=''):
-    """
-    Copies either a Django application layout template or a Django project
-    layout template into the specified directory.
-    """
-    # style -- A color style object (see django.core.management.color).
-    # app_or_project -- The string 'app' or 'project'.
-    # name -- The name of the application or project.
-    # directory -- The directory to which the layout template should be copied.
-    # other_name -- When copying an application layout, this should be the name
-    #               of the project.
-    import re
-    import shutil
-    other = {'project': 'app', 'app': 'project'}[app_or_project]
-    if not re.search(r'^\w+$', name): # If it's not a valid directory name.
-        raise CommandError("%r is not a valid %s name. Please use only numbers, letters and underscores." % (name, app_or_project))
-    top_dir = os.path.join(directory, name)
-    try:
-        os.mkdir(top_dir)
-    except OSError, e:
-        raise CommandError(e)
-
-    # Determine where the app or project templates are. Use
-    # django.__path__[0] because we don't know into which directory
-    # django has been installed.
-    template_dir = os.path.join(django.__path__[0], 'conf', '%s_template' % app_or_project)
-
-    for d, subdirs, files in os.walk(template_dir):
-        relative_dir = d[len(template_dir)+1:].replace('%s_name' % app_or_project, name)
-        if relative_dir:
-            os.mkdir(os.path.join(top_dir, relative_dir))
-        for i, subdir in enumerate(subdirs):
-            if subdir.startswith('.'):
-                del subdirs[i]
-        for f in files:
-            if f.endswith('.pyc'):
-                continue
-            path_old = os.path.join(d, f)
-            path_new = os.path.join(top_dir, relative_dir, f.replace('%s_name' % app_or_project, name))
-            fp_old = open(path_old, 'r')
-            fp_new = open(path_new, 'w')
-            fp_new.write(fp_old.read().replace('{{ %s_name }}' % app_or_project, name).replace('{{ %s_name }}' % other, other_name))
-            fp_old.close()
-            fp_new.close()
-            try:
-                shutil.copymode(path_old, path_new)
-                _make_writeable(path_new)
-            except OSError:
-                sys.stderr.write(style.NOTICE("Notice: Couldn't set permission bits on %s. You're probably using an uncommon filesystem setup. No problem.\n" % path_new))
-
-def _make_writeable(filename):
-    "Makes sure that the file is writeable. Useful if our source is read-only."
-    import stat
-    if sys.platform.startswith('java'):
-        # On Jython there is no os.access()
-        return
-    if not os.access(filename, os.W_OK):
-        st = os.stat(filename)
-        new_permissions = stat.S_IMODE(st.st_mode) | stat.S_IWUSR
-        os.chmod(filename, new_permissions)
diff --git a/webapp/django/core/management/color.py b/webapp/django/core/management/color.py
deleted file mode 100644
index f5e3939..0000000
--- a/webapp/django/core/management/color.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-Sets up the terminal color scheme.
-"""
-
-import sys
-
-from django.utils import termcolors
-
-def supports_color():
-    """
-    Returns True if the running system's terminal supports color, and False
-    otherwise.
-    """
-    unsupported_platform = (sys.platform in ('win32', 'Pocket PC'))
-    # isatty is not always implemented, #6223.
-    is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()
-    if unsupported_platform or not is_a_tty:
-        return False
-    return True
-
-def color_style():
-    """Returns a Style object with the Django color scheme."""
-    if not supports_color():
-        return no_style()
-    class dummy: pass
-    style = dummy()
-    style.ERROR = termcolors.make_style(fg='red', opts=('bold',))
-    style.ERROR_OUTPUT = termcolors.make_style(fg='red', opts=('bold',))
-    style.NOTICE = termcolors.make_style(fg='red')
-    style.SQL_FIELD = termcolors.make_style(fg='green', opts=('bold',))
-    style.SQL_COLTYPE = termcolors.make_style(fg='green')
-    style.SQL_KEYWORD = termcolors.make_style(fg='yellow')
-    style.SQL_TABLE = termcolors.make_style(opts=('bold',))
-    return style
-
-def no_style():
-    """Returns a Style object that has no colors."""
-    class dummy:
-        def __getattr__(self, attr):
-            return lambda x: x
-    return dummy()
diff --git a/webapp/django/core/management/commands/__init__.py b/webapp/django/core/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/core/management/commands/__init__.py
+++ /dev/null
diff --git a/webapp/django/core/management/commands/adminindex.py b/webapp/django/core/management/commands/adminindex.py
deleted file mode 100644
index 4f38913..0000000
--- a/webapp/django/core/management/commands/adminindex.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from django.core.management.base import AppCommand
-from django.utils.encoding import force_unicode
-from django.utils.text import capfirst
-
-MODULE_TEMPLATE = '''    {%% if perms.%(app)s.%(addperm)s or perms.%(app)s.%(changeperm)s %%}
-    <tr>
-        <th>{%% if perms.%(app)s.%(changeperm)s %%}<a href="%(app)s/%(mod)s/">{%% endif %%}%(name)s{%% if perms.%(app)s.%(changeperm)s %%}</a>{%% endif %%}</th>
-        <td class="x50">{%% if perms.%(app)s.%(addperm)s %%}<a href="%(app)s/%(mod)s/add/" class="addlink">{%% endif %%}Add{%% if perms.%(app)s.%(addperm)s %%}</a>{%% endif %%}</td>
-        <td class="x75">{%% if perms.%(app)s.%(changeperm)s %%}<a href="%(app)s/%(mod)s/" class="changelink">{%% endif %%}Change{%% if perms.%(app)s.%(changeperm)s %%}</a>{%% endif %%}</td>
-    </tr>
-    {%% endif %%}'''
-
-class Command(AppCommand):
-    help = 'Prints the admin-index template snippet for the given app name(s).'
-
-    def handle_app(self, app, **options):
-        from django.db.models import get_models
-        output = []
-        app_models = get_models(app)
-        app_label = app_models[0]._meta.app_label
-        output.append('{%% if perms.%s %%}' % app_label)
-        output.append('<div class="module"><h2>%s</h2><table>' % app_label.title())
-        for model in app_models:
-            if model._meta.admin:
-                output.append(MODULE_TEMPLATE % {
-                    'app': app_label,
-                    'mod': model._meta.module_name,
-                    'name': force_unicode(capfirst(model._meta.verbose_name_plural)),
-                    'addperm': model._meta.get_add_permission(),
-                    'changeperm': model._meta.get_change_permission(),
-                })
-        output.append('</table></div>')
-        output.append('{% endif %}')
-        return '\n'.join(output)
diff --git a/webapp/django/core/management/commands/cleanup.py b/webapp/django/core/management/commands/cleanup.py
deleted file mode 100644
index a5c932b..0000000
--- a/webapp/django/core/management/commands/cleanup.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import datetime
-from django.core.management.base import NoArgsCommand
-
-class Command(NoArgsCommand):
-    help = "Can be run as a cronjob or directly to clean out old data from the database (only expired sessions at the moment)."
-
-    def handle_noargs(self, **options):
-        from django.db import transaction
-        from django.contrib.sessions.models import Session
-        Session.objects.filter(expire_date__lt=datetime.datetime.now()).delete()
-        transaction.commit_unless_managed()
diff --git a/webapp/django/core/management/commands/compilemessages.py b/webapp/django/core/management/commands/compilemessages.py
deleted file mode 100644
index d1f1647..0000000
--- a/webapp/django/core/management/commands/compilemessages.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import os
-import sys
-from optparse import make_option
-from django.core.management.base import BaseCommand, CommandError
-
-try:
-    set
-except NameError:
-    from sets import Set as set     # For Python 2.3
-
-def compile_messages(locale=None):
-    basedirs = [os.path.join('conf', 'locale'), 'locale']
-    if os.environ.get('DJANGO_SETTINGS_MODULE'):
-        from django.conf import settings
-        basedirs.extend(settings.LOCALE_PATHS)
-
-    # Gather existing directories.
-    basedirs = set(map(os.path.abspath, filter(os.path.isdir, basedirs)))
-
-    if not basedirs:
-        raise CommandError("This script should be run from the Django SVN tree or your project or app tree, or with the settings module specified.")
-
-    for basedir in basedirs:
-        if locale:
-            basedir = os.path.join(basedir, locale, 'LC_MESSAGES')
-        for dirpath, dirnames, filenames in os.walk(basedir):
-            for f in filenames:
-                if f.endswith('.po'):
-                    sys.stderr.write('processing file %s in %s\n' % (f, dirpath))
-                    pf = os.path.splitext(os.path.join(dirpath, f))[0]
-                    # Store the names of the .mo and .po files in an environment
-                    # variable, rather than doing a string replacement into the
-                    # command, so that we can take advantage of shell quoting, to
-                    # quote any malicious characters/escaping.
-                    # See http://cyberelk.net/tim/articles/cmdline/ar01s02.html
-                    os.environ['djangocompilemo'] = pf + '.mo'
-                    os.environ['djangocompilepo'] = pf + '.po'
-                    if sys.platform == 'win32': # Different shell-variable syntax
-                        cmd = 'msgfmt --check-format -o "%djangocompilemo%" "%djangocompilepo%"'
-                    else:
-                        cmd = 'msgfmt --check-format -o "$djangocompilemo" "$djangocompilepo"'
-                    os.system(cmd)
-
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--locale', '-l', dest='locale',
-            help='The locale to process. Default is to process all.'),
-    )
-    help = 'Compiles .po files to .mo files for use with builtin gettext support.'
-
-    requires_model_validation = False
-    can_import_settings = False
-
-    def handle(self, **options):
-        locale = options.get('locale')
-        compile_messages(locale)
diff --git a/webapp/django/core/management/commands/createcachetable.py b/webapp/django/core/management/commands/createcachetable.py
deleted file mode 100644
index 098bca7..0000000
--- a/webapp/django/core/management/commands/createcachetable.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from django.core.management.base import LabelCommand
-
-class Command(LabelCommand):
-    help = "Creates the table needed to use the SQL cache backend."
-    args = "<tablename>"
-    label = 'tablename'
-
-    requires_model_validation = False
-
-    def handle_label(self, tablename, **options):
-        from django.db import connection, transaction, models
-        fields = (
-            # "key" is a reserved word in MySQL, so use "cache_key" instead.
-            models.CharField(name='cache_key', max_length=255, unique=True, primary_key=True),
-            models.TextField(name='value'),
-            models.DateTimeField(name='expires', db_index=True),
-        )
-        table_output = []
-        index_output = []
-        qn = connection.ops.quote_name
-        for f in fields:
-            field_output = [qn(f.name), f.db_type()]
-            field_output.append("%sNULL" % (not f.null and "NOT " or ""))
-            if f.primary_key:
-                field_output.append("PRIMARY KEY")
-            elif f.unique:
-                field_output.append("UNIQUE")
-            if f.db_index:
-                unique = f.unique and "UNIQUE " or ""
-                index_output.append("CREATE %sINDEX %s_%s ON %s (%s);" % \
-                    (unique, tablename, f.name, qn(tablename),
-                    qn(f.name)))
-            table_output.append(" ".join(field_output))
-        full_statement = ["CREATE TABLE %s (" % qn(tablename)]
-        for i, line in enumerate(table_output):
-            full_statement.append('    %s%s' % (line, i < len(table_output)-1 and ',' or ''))
-        full_statement.append(');')
-        curs = connection.cursor()
-        curs.execute("\n".join(full_statement))
-        for statement in index_output:
-            curs.execute(statement)
-        transaction.commit_unless_managed()
diff --git a/webapp/django/core/management/commands/dbshell.py b/webapp/django/core/management/commands/dbshell.py
deleted file mode 100644
index 18faa6a..0000000
--- a/webapp/django/core/management/commands/dbshell.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import NoArgsCommand
-
-class Command(NoArgsCommand):
-    help = "Runs the command-line client for the current DATABASE_ENGINE."
-
-    requires_model_validation = False
-
-    def handle_noargs(self, **options):
-        from django.db import connection
-        connection.client.runshell()
diff --git a/webapp/django/core/management/commands/diffsettings.py b/webapp/django/core/management/commands/diffsettings.py
deleted file mode 100644
index 2459f11..0000000
--- a/webapp/django/core/management/commands/diffsettings.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from django.core.management.base import NoArgsCommand
-
-def module_to_dict(module, omittable=lambda k: k.startswith('_')):
-    "Converts a module namespace to a Python dictionary. Used by get_settings_diff."
-    return dict([(k, repr(v)) for k, v in module.__dict__.items() if not omittable(k)])
-
-class Command(NoArgsCommand):
-    help = """Displays differences between the current settings.py and Django's
-    default settings. Settings that don't appear in the defaults are
-    followed by "###"."""
-
-    requires_model_validation = False
-
-    def handle_noargs(self, **options):
-        # Inspired by Postfix's "postconf -n".
-        from django.conf import settings, global_settings
-
-        # Because settings are imported lazily, we need to explicitly load them.
-        settings._import_settings()
-
-        user_settings = module_to_dict(settings._target)
-        default_settings = module_to_dict(global_settings)
-
-        output = []
-        keys = user_settings.keys()
-        keys.sort()
-        for key in keys:
-            if key not in default_settings:
-                output.append("%s = %s  ###" % (key, user_settings[key]))
-            elif user_settings[key] != default_settings[key]:
-                output.append("%s = %s" % (key, user_settings[key]))
-        print '\n'.join(output)
diff --git a/webapp/django/core/management/commands/dumpdata.py b/webapp/django/core/management/commands/dumpdata.py
deleted file mode 100644
index 2559d57..0000000
--- a/webapp/django/core/management/commands/dumpdata.py
+++ /dev/null
@@ -1,52 +0,0 @@
-from django.core.management.base import BaseCommand, CommandError
-from django.core import serializers
-
-from optparse import make_option
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--format', default='json', dest='format',
-            help='Specifies the output serialization format for fixtures.'),
-        make_option('--indent', default=None, dest='indent', type='int',
-            help='Specifies the indent level to use when pretty-printing output'),
-        make_option('-e', '--exclude', dest='exclude',action='append', default=[], 
-            help='App to exclude (use multiple --exclude to exclude multiple apps).'),
-    )
-    help = 'Output the contents of the database as a fixture of the given format.'
-    args = '[appname ...]'
-
-    def handle(self, *app_labels, **options):
-        from django.db.models import get_app, get_apps, get_models
-
-        format = options.get('format','json')
-        indent = options.get('indent',None)
-        exclude = options.get('exclude',[])
-        show_traceback = options.get('traceback', False)
-
-        excluded_apps = [get_app(app_label) for app_label in exclude]
-
-        if len(app_labels) == 0:
-            app_list = [app for app in get_apps() if app not in excluded_apps]
-        else:
-            app_list = [get_app(app_label) for app_label in app_labels]
-
-        # Check that the serialization format exists; this is a shortcut to
-        # avoid collating all the objects and _then_ failing.
-        if format not in serializers.get_public_serializer_formats():
-            raise CommandError("Unknown serialization format: %s" % format)
-
-        try:
-            serializers.get_serializer(format)
-        except KeyError:
-            raise CommandError("Unknown serialization format: %s" % format)
-
-        objects = []
-        for app in app_list:
-            for model in get_models(app):
-                objects.extend(model._default_manager.all())
-        try:
-            return serializers.serialize(format, objects, indent=indent)
-        except Exception, e:
-            if show_traceback:
-                raise
-            raise CommandError("Unable to serialize database: %s" % e)
diff --git a/webapp/django/core/management/commands/flush.py b/webapp/django/core/management/commands/flush.py
deleted file mode 100644
index 51d5034..0000000
--- a/webapp/django/core/management/commands/flush.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from django.core.management.base import NoArgsCommand, CommandError
-from django.core.management.color import no_style
-from optparse import make_option
-
-class Command(NoArgsCommand):
-    option_list = NoArgsCommand.option_list + (
-        make_option('--verbosity', action='store', dest='verbosity', default='1',
-            type='choice', choices=['0', '1', '2'],
-            help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
-        make_option('--noinput', action='store_false', dest='interactive', default=True,
-            help='Tells Django to NOT prompt the user for input of any kind.'),
-    )
-    help = "Executes ``sqlflush`` on the current database."
-
-    def handle_noargs(self, **options):
-        from django.conf import settings
-        from django.db import connection, transaction, models
-        from django.core.management.sql import sql_flush, emit_post_sync_signal
-
-        verbosity = int(options.get('verbosity', 1))
-        interactive = options.get('interactive')
-
-        self.style = no_style()
-
-        # Import the 'management' module within each installed app, to register
-        # dispatcher events.
-        for app_name in settings.INSTALLED_APPS:
-            try:
-                __import__(app_name + '.management', {}, {}, [''])
-            except ImportError:
-                pass
-
-        sql_list = sql_flush(self.style, only_django=True)
-
-        if interactive:
-            confirm = raw_input("""You have requested a flush of the database.
-This will IRREVERSIBLY DESTROY all data currently in the %r database,
-and return each table to the state it was in after syncdb.
-Are you sure you want to do this?
-
-    Type 'yes' to continue, or 'no' to cancel: """ % settings.DATABASE_NAME)
-        else:
-            confirm = 'yes'
-
-        if confirm == 'yes':
-            try:
-                cursor = connection.cursor()
-                for sql in sql_list:
-                    cursor.execute(sql)
-            except Exception, e:
-                transaction.rollback_unless_managed()
-                raise CommandError("""Database %s couldn't be flushed. Possible reasons:
-      * The database isn't running or isn't configured correctly.
-      * At least one of the expected database tables doesn't exist.
-      * The SQL was invalid.
-    Hint: Look at the output of 'django-admin.py sqlflush'. That's the SQL this command wasn't able to run.
-    The full error: %s""" % (settings.DATABASE_NAME, e))
-            transaction.commit_unless_managed()
-
-            # Emit the post sync signal. This allows individual
-            # applications to respond as if the database had been
-            # sync'd from scratch.
-            emit_post_sync_signal(models.get_models(), verbosity, interactive)
-
-            # Reinstall the initial_data fixture.
-            from django.core.management import call_command
-            call_command('loaddata', 'initial_data', **options)
-
-        else:
-            print "Flush cancelled."
diff --git a/webapp/django/core/management/commands/inspectdb.py b/webapp/django/core/management/commands/inspectdb.py
deleted file mode 100644
index 6e84ed6..0000000
--- a/webapp/django/core/management/commands/inspectdb.py
+++ /dev/null
@@ -1,125 +0,0 @@
-from django.core.management.base import NoArgsCommand, CommandError
-
-class Command(NoArgsCommand):
-    help = "Introspects the database tables in the given database and outputs a Django model module."
-
-    requires_model_validation = False
-
-    def handle_noargs(self, **options):
-        try:
-            for line in self.handle_inspection():
-                print line
-        except NotImplementedError:
-            raise CommandError("Database inspection isn't supported for the currently selected database backend.")
-
-    def handle_inspection(self):
-        from django.db import connection
-        import keyword
-
-        table2model = lambda table_name: table_name.title().replace('_', '').replace(' ', '').replace('-', '')
-
-        cursor = connection.cursor()
-        yield "# This is an auto-generated Django model module."
-        yield "# You'll have to do the following manually to clean this up:"
-        yield "#     * Rearrange models' order"
-        yield "#     * Make sure each model has one field with primary_key=True"
-        yield "# Feel free to rename the models, but don't rename db_table values or field names."
-        yield "#"
-        yield "# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'"
-        yield "# into your database."
-        yield ''
-        yield 'from django.db import models'
-        yield ''
-        for table_name in connection.introspection.get_table_list(cursor):
-            yield 'class %s(models.Model):' % table2model(table_name)
-            try:
-                relations = connection.introspection.get_relations(cursor, table_name)
-            except NotImplementedError:
-                relations = {}
-            try:
-                indexes = connection.introspection.get_indexes(cursor, table_name)
-            except NotImplementedError:
-                indexes = {}
-            for i, row in enumerate(connection.introspection.get_table_description(cursor, table_name)):
-                att_name = row[0].lower()
-                comment_notes = [] # Holds Field notes, to be displayed in a Python comment.
-                extra_params = {}  # Holds Field parameters such as 'db_column'.
-
-                # If we need to do field name modifiations, 
-                # remember the original field name
-                if ' ' in att_name or '-' in att_name or keyword.iskeyword(att_name):
-                    extra_params['db_column'] = att_name
-                  
-                # Now modify the field name to make it python compatible.  
-                if ' ' in att_name:
-                    att_name = att_name.replace(' ', '_')
-                    comment_notes.append('Field renamed to remove spaces.')
-                if '-' in att_name:
-                    att_name = att_name.replace('-', '_')
-                    comment_notes.append('Field renamed to remove dashes.')
-                if keyword.iskeyword(att_name):
-                    att_name += '_field'
-                    comment_notes.append('Field renamed because it was a Python reserved word.')
-
-                if i in relations:
-                    rel_to = relations[i][1] == table_name and "'self'" or table2model(relations[i][1])
-                    field_type = 'ForeignKey(%s' % rel_to
-                    if att_name.endswith('_id'):
-                        att_name = att_name[:-3]
-                    else:
-                        extra_params['db_column'] = att_name
-                else:
-                    try:
-                        field_type = connection.introspection.data_types_reverse[row[1]]
-                    except KeyError:
-                        field_type = 'TextField'
-                        comment_notes.append('This field type is a guess.')
-
-                    # This is a hook for DATA_TYPES_REVERSE to return a tuple of
-                    # (field_type, extra_params_dict).
-                    if type(field_type) is tuple:
-                        field_type, new_params = field_type
-                        extra_params.update(new_params)
-
-                    # Add max_length for all CharFields.
-                    if field_type == 'CharField' and row[3]:
-                        extra_params['max_length'] = row[3]
-
-                    if field_type == 'DecimalField':
-                        extra_params['max_digits'] = row[4]
-                        extra_params['decimal_places'] = row[5]
-
-                    # Add primary_key and unique, if necessary.
-                    column_name = extra_params.get('db_column', att_name)
-                    if column_name in indexes:
-                        if indexes[column_name]['primary_key']:
-                            extra_params['primary_key'] = True
-                        elif indexes[column_name]['unique']:
-                            extra_params['unique'] = True
-
-                    field_type += '('
-
-                # Don't output 'id = meta.AutoField(primary_key=True)', because
-                # that's assumed if it doesn't exist.
-                if att_name == 'id' and field_type == 'AutoField(' and extra_params == {'primary_key': True}:
-                    continue
-
-                # Add 'null' and 'blank', if the 'null_ok' flag was present in the
-                # table description.
-                if row[6]: # If it's NULL...
-                    extra_params['blank'] = True
-                    if not field_type in ('TextField(', 'CharField('):
-                        extra_params['null'] = True
-
-                field_desc = '%s = models.%s' % (att_name, field_type)
-                if extra_params:
-                    if not field_desc.endswith('('):
-                        field_desc += ', '
-                    field_desc += ', '.join(['%s=%r' % (k, v) for k, v in extra_params.items()])
-                field_desc += ')'
-                if comment_notes:
-                    field_desc += ' # ' + ' '.join(comment_notes)
-                yield '    %s' % field_desc
-            yield '    class Meta:'
-            yield '        db_table = %r' % table_name
-            yield ''
diff --git a/webapp/django/core/management/commands/loaddata.py b/webapp/django/core/management/commands/loaddata.py
deleted file mode 100644
index c69eeb9..0000000
--- a/webapp/django/core/management/commands/loaddata.py
+++ /dev/null
@@ -1,181 +0,0 @@
-from django.core.management.base import BaseCommand
-from django.core.management.color import no_style
-from optparse import make_option
-import sys
-import os
-
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--verbosity', action='store', dest='verbosity', default='1',
-            type='choice', choices=['0', '1', '2'],
-            help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
-    )
-    help = 'Installs the named fixture(s) in the database.'
-    args = "fixture [fixture ...]"
-
-    def handle(self, *fixture_labels, **options):
-        from django.db.models import get_apps
-        from django.core import serializers
-        from django.db import connection, transaction
-        from django.conf import settings
-
-        self.style = no_style()
-
-        verbosity = int(options.get('verbosity', 1))
-        show_traceback = options.get('traceback', False)
-        
-        # commit is a stealth option - it isn't really useful as 
-        # a command line option, but it can be useful when invoking
-        # loaddata from within another script. 
-        # If commit=True, loaddata will use its own transaction;
-        # if commit=False, the data load SQL will become part of
-        # the transaction in place when loaddata was invoked.
-        commit = options.get('commit', True)
-        
-        # Keep a count of the installed objects and fixtures
-        fixture_count = 0
-        object_count = 0
-        objects_per_fixture = []
-        models = set()
-
-        humanize = lambda dirname: dirname and "'%s'" % dirname or 'absolute path'
-
-        # Get a cursor (even though we don't need one yet). This has
-        # the side effect of initializing the test database (if
-        # it isn't already initialized).
-        cursor = connection.cursor()
-
-        # Start transaction management. All fixtures are installed in a
-        # single transaction to ensure that all references are resolved.
-        if commit:
-            transaction.commit_unless_managed()
-            transaction.enter_transaction_management()
-            transaction.managed(True)
-
-        app_fixtures = [os.path.join(os.path.dirname(app.__file__), 'fixtures') for app in get_apps()]
-        for fixture_label in fixture_labels:
-            parts = fixture_label.split('.')
-            if len(parts) == 1:
-                fixture_name = fixture_label
-                formats = serializers.get_public_serializer_formats()
-            else:
-                fixture_name, format = '.'.join(parts[:-1]), parts[-1]
-                if format in serializers.get_public_serializer_formats():
-                    formats = [format]
-                else:
-                    formats = []
-
-            if formats:
-                if verbosity > 1:
-                    print "Loading '%s' fixtures..." % fixture_name
-            else:
-                sys.stderr.write(
-                    self.style.ERROR("Problem installing fixture '%s': %s is not a known serialization format." %
-                        (fixture_name, format)))
-                transaction.rollback()
-                transaction.leave_transaction_management()
-                return
-
-            if os.path.isabs(fixture_name):
-                fixture_dirs = [fixture_name]
-            else:
-                fixture_dirs = app_fixtures + list(settings.FIXTURE_DIRS) + ['']
-
-            for fixture_dir in fixture_dirs:
-                if verbosity > 1:
-                    print "Checking %s for fixtures..." % humanize(fixture_dir)
-
-                label_found = False
-                for format in formats:
-                    serializer = serializers.get_serializer(format)
-                    if verbosity > 1:
-                        print "Trying %s for %s fixture '%s'..." % \
-                            (humanize(fixture_dir), format, fixture_name)
-                    try:
-                        full_path = os.path.join(fixture_dir, '.'.join([fixture_name, format]))
-                        fixture = open(full_path, 'r')
-                        if label_found:
-                            fixture.close()
-                            print self.style.ERROR("Multiple fixtures named '%s' in %s. Aborting." %
-                                (fixture_name, humanize(fixture_dir)))
-                            transaction.rollback()
-                            transaction.leave_transaction_management()
-                            return
-                        else:
-                            fixture_count += 1
-                            objects_per_fixture.append(0)
-                            if verbosity > 0:
-                                print "Installing %s fixture '%s' from %s." % \
-                                    (format, fixture_name, humanize(fixture_dir))
-                            try:
-                                objects = serializers.deserialize(format, fixture)
-                                for obj in objects:
-                                    object_count += 1
-                                    objects_per_fixture[-1] += 1
-                                    models.add(obj.object.__class__)
-                                    obj.save()
-                                label_found = True
-                            except (SystemExit, KeyboardInterrupt):
-                                raise
-                            except Exception:
-                                import traceback
-                                fixture.close()
-                                transaction.rollback()
-                                transaction.leave_transaction_management()
-                                if show_traceback:
-                                    import traceback
-                                    traceback.print_exc()
-                                else:
-                                    sys.stderr.write(
-                                        self.style.ERROR("Problem installing fixture '%s': %s\n" %
-                                             (full_path, traceback.format_exc())))
-                                return
-                            fixture.close()
-                    except:
-                        if verbosity > 1:
-                            print "No %s fixture '%s' in %s." % \
-                                (format, fixture_name, humanize(fixture_dir))
-
-
-        # If any of the fixtures we loaded contain 0 objects, assume that an
-        # error was encountered during fixture loading.
-        if 0 in objects_per_fixture:
-            sys.stderr.write(
-                self.style.ERROR("No fixture data found for '%s'. (File format may be invalid.)" %
-                    (fixture_name)))
-            transaction.rollback()
-            transaction.leave_transaction_management()
-            return
-            
-        # If we found even one object in a fixture, we need to reset the
-        # database sequences.
-        if object_count > 0:
-            sequence_sql = connection.ops.sequence_reset_sql(self.style, models)
-            if sequence_sql:
-                if verbosity > 1:
-                    print "Resetting sequences"
-                for line in sequence_sql:
-                    cursor.execute(line)
-        
-        if commit:
-            transaction.commit()
-            transaction.leave_transaction_management()
-
-        if object_count == 0:
-            if verbosity > 1:
-                print "No fixtures found."
-        else:
-            if verbosity > 0:
-                print "Installed %d object(s) from %d fixture(s)" % (object_count, fixture_count)
-                
-        # Close the DB connection. This is required as a workaround for an
-        # edge case in MySQL: if the same connection is used to
-        # create tables, load data, and query, the query can return
-        # incorrect results. See Django #7572, MySQL #37735.
-        if commit:
-            connection.close()
diff --git a/webapp/django/core/management/commands/makemessages.py b/webapp/django/core/management/commands/makemessages.py
deleted file mode 100644
index aaa99eed9..0000000
--- a/webapp/django/core/management/commands/makemessages.py
+++ /dev/null
@@ -1,205 +0,0 @@
-import re
-import os
-import sys
-from itertools import dropwhile
-from optparse import make_option
-from django.core.management.base import CommandError, BaseCommand
-
-try:
-    set
-except NameError:
-    from sets import Set as set     # For Python 2.3
-
-pythonize_re = re.compile(r'\n\s*//')
-
-def handle_extensions(extensions=('html',)):
-    """
-    organizes multiple extensions that are separated with commas or passed by
-    using --extension/-e multiple times.
-
-    for example: running 'django-admin makemessages -e js,txt -e xhtml -a'
-    would result in a extension list: ['.js', '.txt', '.xhtml']
-
-    >>> handle_extensions(['.html', 'html,js,py,py,py,.py', 'py,.py'])
-    ['.html', '.js']
-    >>> handle_extensions(['.html, txt,.tpl'])
-    ['.html', '.tpl', '.txt']
-    """
-    ext_list = []
-    for ext in extensions:
-        ext_list.extend(ext.replace(' ','').split(','))
-    for i, ext in enumerate(ext_list):
-        if not ext.startswith('.'):
-            ext_list[i] = '.%s' % ext_list[i]
-
-    # we don't want *.py files here because of the way non-*.py files
-    # are handled in make_messages() (they are copied to file.ext.py files to
-    # trick xgettext to parse them as Python files)
-    return set([x for x in ext_list if x != '.py'])
-
-def make_messages(locale=None, domain='django', verbosity='1', all=False, extensions=None):
-    """
-    Uses the locale directory from the Django SVN tree or an application/
-    project to process all
-    """
-    # Need to ensure that the i18n framework is enabled
-    from django.conf import settings
-    if settings.configured:
-        settings.USE_I18N = True
-    else:
-        settings.configure(USE_I18N = True)
-
-    from django.utils.translation import templatize
-
-    if os.path.isdir(os.path.join('conf', 'locale')):
-        localedir = os.path.abspath(os.path.join('conf', 'locale'))
-    elif os.path.isdir('locale'):
-        localedir = os.path.abspath('locale')
-    else:
-        raise CommandError("This script should be run from the Django SVN tree or your project or app tree. If you did indeed run it from the SVN checkout or your project or application, maybe you are just missing the conf/locale (in the django tree) or locale (for project and application) directory? It is not created automatically, you have to create it by hand if you want to enable i18n for your project or application.")
-
-    if domain not in ('django', 'djangojs'):
-        raise CommandError("currently makemessages only supports domains 'django' and 'djangojs'")
-
-    if (locale is None and not all) or domain is None:
-        # backwards compatible error message
-        if not sys.argv[0].endswith("make-messages.py"):
-            message = "Type '%s help %s' for usage.\n" % (os.path.basename(sys.argv[0]), sys.argv[1])
-        else:
-            message = "usage: make-messages.py -l <language>\n   or: make-messages.py -a\n"
-        raise CommandError(message)
-
-    languages = []
-    if locale is not None:
-        languages.append(locale)
-    elif all:
-        languages = [el for el in os.listdir(localedir) if not el.startswith('.')]
-
-    for locale in languages:
-        if verbosity > 0:
-            print "processing language", locale
-        basedir = os.path.join(localedir, locale, 'LC_MESSAGES')
-        if not os.path.isdir(basedir):
-            os.makedirs(basedir)
-
-        pofile = os.path.join(basedir, '%s.po' % domain)
-        potfile = os.path.join(basedir, '%s.pot' % domain)
-
-        if os.path.exists(potfile):
-            os.unlink(potfile)
-
-        all_files = []
-        for (dirpath, dirnames, filenames) in os.walk("."):
-            all_files.extend([(dirpath, f) for f in filenames])
-        all_files.sort()
-        for dirpath, file in all_files:
-            file_base, file_ext = os.path.splitext(file)
-            if domain == 'djangojs' and file_ext == '.js':
-                if verbosity > 1:
-                    sys.stdout.write('processing file %s in %s\n' % (file, dirpath))
-                src = open(os.path.join(dirpath, file), "rb").read()
-                src = pythonize_re.sub('\n#', src)
-                open(os.path.join(dirpath, '%s.py' % file), "wb").write(src)
-                thefile = '%s.py' % file
-                cmd = 'xgettext -d %s -L Perl --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % (domain, os.path.join(dirpath, thefile))
-                (stdin, stdout, stderr) = os.popen3(cmd, 't')
-                msgs = stdout.read()
-                errors = stderr.read()
-                if errors:
-                    raise CommandError("errors happened while running xgettext on %s\n%s" % (file, errors))
-                old = '#: '+os.path.join(dirpath, thefile)[2:]
-                new = '#: '+os.path.join(dirpath, file)[2:]
-                msgs = msgs.replace(old, new)
-                if os.path.exists(potfile):
-                    # Strip the header
-                    msgs = '\n'.join(dropwhile(len, msgs.split('\n')))
-                else:
-                    msgs = msgs.replace('charset=CHARSET', 'charset=UTF-8')
-                if msgs:
-                    open(potfile, 'ab').write(msgs)
-                os.unlink(os.path.join(dirpath, thefile))
-            elif domain == 'django' and (file_ext == '.py' or file_ext in extensions):
-                thefile = file
-                if file_ext in extensions:
-                    src = open(os.path.join(dirpath, file), "rb").read()
-                    thefile = '%s.py' % file
-                    open(os.path.join(dirpath, thefile), "wb").write(templatize(src))
-                if verbosity > 1:
-                    sys.stdout.write('processing file %s in %s\n' % (file, dirpath))
-                cmd = 'xgettext -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 --keyword=ugettext_noop --keyword=ugettext_lazy --keyword=ungettext_lazy:1,2 --from-code UTF-8 -o - "%s"' % (
-                    domain, os.path.join(dirpath, thefile))
-                (stdin, stdout, stderr) = os.popen3(cmd, 't')
-                msgs = stdout.read()
-                errors = stderr.read()
-                if errors:
-                    raise CommandError("errors happened while running xgettext on %s\n%s" % (file, errors))
-                if thefile != file:
-                    old = '#: '+os.path.join(dirpath, thefile)[2:]
-                    new = '#: '+os.path.join(dirpath, file)[2:]
-                    msgs = msgs.replace(old, new)
-                if os.path.exists(potfile):
-                    # Strip the header
-                    msgs = '\n'.join(dropwhile(len, msgs.split('\n')))
-                else:
-                    msgs = msgs.replace('charset=CHARSET', 'charset=UTF-8')
-                if msgs:
-                    open(potfile, 'ab').write(msgs)
-                if thefile != file:
-                    os.unlink(os.path.join(dirpath, thefile))
-
-        if os.path.exists(potfile):
-            (stdin, stdout, stderr) = os.popen3('msguniq --to-code=utf-8 "%s"' % potfile, 'b')
-            msgs = stdout.read()
-            errors = stderr.read()
-            if errors:
-                raise CommandError("errors happened while running msguniq\n%s" % errors)
-            open(potfile, 'w').write(msgs)
-            if os.path.exists(pofile):
-                (stdin, stdout, stderr) = os.popen3('msgmerge -q "%s" "%s"' % (pofile, potfile), 'b')
-                msgs = stdout.read()
-                errors = stderr.read()
-                if errors:
-                    raise CommandError("errors happened while running msgmerge\n%s" % errors)
-            open(pofile, 'wb').write(msgs)
-            os.unlink(potfile)
-
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--locale', '-l', default=None, dest='locale',
-            help='Creates or updates the message files only for the given locale (e.g. pt_BR).'),
-        make_option('--domain', '-d', default='django', dest='domain',
-            help='The domain of the message files (default: "django").'),
-        make_option('--verbosity', '-v', action='store', dest='verbosity',
-            default='1', type='choice', choices=['0', '1', '2'],
-            help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
-        make_option('--all', '-a', action='store_true', dest='all',
-            default=False, help='Reexamines all source code and templates for new translation strings and updates all message files for all available languages.'),
-        make_option('--extension', '-e', dest='extensions',
-            help='The file extension(s) to examine (default: ".html", separate multiple extensions with commas, or use -e multiple times)',
-            action='append'),
-    )
-    help = "Runs over the entire source tree of the current directory and pulls out all strings marked for translation. It creates (or updates) a message file in the conf/locale (in the django tree) or locale (for project and application) directory."
-
-    requires_model_validation = False
-    can_import_settings = False
-
-    def handle(self, *args, **options):
-        if len(args) != 0:
-            raise CommandError("Command doesn't accept any arguments")
-
-        locale = options.get('locale')
-        domain = options.get('domain')
-        verbosity = int(options.get('verbosity'))
-        process_all = options.get('all')
-        extensions = options.get('extensions') or ['html']
-
-        if domain == 'djangojs':
-            extensions = []
-        else:
-            extensions = handle_extensions(extensions)
-
-        if '.js' in extensions:
-            raise CommandError("JavaScript files should be examined by using the special 'djangojs' domain only.")
-
-        make_messages(locale, domain, verbosity, process_all, extensions)
diff --git a/webapp/django/core/management/commands/reset.py b/webapp/django/core/management/commands/reset.py
deleted file mode 100644
index 3e7ca9f..0000000
--- a/webapp/django/core/management/commands/reset.py
+++ /dev/null
@@ -1,52 +0,0 @@
-from django.core.management.base import AppCommand, CommandError
-from django.core.management.color import no_style
-from optparse import make_option
-
-class Command(AppCommand):
-    option_list = AppCommand.option_list + (
-        make_option('--noinput', action='store_false', dest='interactive', default=True,
-            help='Tells Django to NOT prompt the user for input of any kind.'),
-    )
-    help = "Executes ``sqlreset`` for the given app(s) in the current database."
-    args = '[appname ...]'
-
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.db import connection, transaction
-        from django.conf import settings
-        from django.core.management.sql import sql_reset
-
-        app_name = app.__name__.split('.')[-2]
-
-        self.style = no_style()
-
-        sql_list = sql_reset(app, self.style)
-
-        if options.get('interactive'):
-            confirm = raw_input("""
-You have requested a database reset.
-This will IRREVERSIBLY DESTROY any data for
-the "%s" application in the database "%s".
-Are you sure you want to do this?
-
-Type 'yes' to continue, or 'no' to cancel: """ % (app_name, settings.DATABASE_NAME))
-        else:
-            confirm = 'yes'
-
-        if confirm == 'yes':
-            try:
-                cursor = connection.cursor()
-                for sql in sql_list:
-                    cursor.execute(sql)
-            except Exception, e:
-                transaction.rollback_unless_managed()
-                raise CommandError("""Error: %s couldn't be reset. Possible reasons:
-  * The database isn't running or isn't configured correctly.
-  * At least one of the database tables doesn't exist.
-  * The SQL was invalid.
-Hint: Look at the output of 'django-admin.py sqlreset %s'. That's the SQL this command wasn't able to run.
-The full error: %s""" % (app_name, app_name, e))
-            transaction.commit_unless_managed()
-        else:
-            print "Reset cancelled."
diff --git a/webapp/django/core/management/commands/runfcgi.py b/webapp/django/core/management/commands/runfcgi.py
deleted file mode 100644
index a60d4eb..0000000
--- a/webapp/django/core/management/commands/runfcgi.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.core.management.base import BaseCommand
-
-class Command(BaseCommand):
-    help = "Runs this project as a FastCGI application. Requires flup."
-    args = '[various KEY=val options, use `runfcgi help` for help]'
-
-    def handle(self, *args, **options):
-        from django.conf import settings
-        from django.utils import translation
-        # Activate the current language, because it won't get activated later.
-        try:
-            translation.activate(settings.LANGUAGE_CODE)
-        except AttributeError:
-            pass
-        from django.core.servers.fastcgi import runfastcgi
-        runfastcgi(args)
-        
-    def usage(self, subcommand):
-        from django.core.servers.fastcgi import FASTCGI_HELP
-        return FASTCGI_HELP
diff --git a/webapp/django/core/management/commands/runserver.py b/webapp/django/core/management/commands/runserver.py
deleted file mode 100644
index 12808bc..0000000
--- a/webapp/django/core/management/commands/runserver.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from django.core.management.base import BaseCommand, CommandError
-from optparse import make_option
-import os
-import sys
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--noreload', action='store_false', dest='use_reloader', default=True,
-            help='Tells Django to NOT use the auto-reloader.'),
-        make_option('--adminmedia', dest='admin_media_path', default='',
-            help='Specifies the directory from which to serve admin media.'),
-    )
-    help = "Starts a lightweight Web server for development."
-    args = '[optional port number, or ipaddr:port]'
-
-    # Validation is called explicitly each time the server is reloaded.
-    requires_model_validation = False
-
-    def handle(self, addrport='', *args, **options):
-        import django
-        from django.core.servers.basehttp import run, AdminMediaHandler, WSGIServerException
-        from django.core.handlers.wsgi import WSGIHandler
-        if args:
-            raise CommandError('Usage is runserver %s' % self.args)
-        if not addrport:
-            addr = ''
-            port = '8000'
-        else:
-            try:
-                addr, port = addrport.split(':')
-            except ValueError:
-                addr, port = '', addrport
-        if not addr:
-            addr = '127.0.0.1'
-
-        if not port.isdigit():
-            raise CommandError("%r is not a valid port number." % port)
-
-        use_reloader = options.get('use_reloader', True)
-        admin_media_path = options.get('admin_media_path', '')
-        shutdown_message = options.get('shutdown_message', '')
-        quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C'
-
-        def inner_run():
-            from django.conf import settings
-            print "Validating models..."
-            self.validate(display_num_errors=True)
-            print "\nDjango version %s, using settings %r" % (django.get_version(), settings.SETTINGS_MODULE)
-            print "Development server is running at http://%s:%s/" % (addr, port)
-            print "Quit the server with %s." % quit_command
-            try:
-                path = admin_media_path or django.__path__[0] + '/contrib/admin/media'
-                handler = AdminMediaHandler(WSGIHandler(), path)
-                run(addr, int(port), handler)
-            except WSGIServerException, e:
-                # Use helpful error messages instead of ugly tracebacks.
-                ERRORS = {
-                    13: "You don't have permission to access that port.",
-                    98: "That port is already in use.",
-                    99: "That IP address can't be assigned-to.",
-                }
-                try:
-                    error_text = ERRORS[e.args[0].args[0]]
-                except (AttributeError, KeyError):
-                    error_text = str(e)
-                sys.stderr.write(self.style.ERROR("Error: %s" % error_text) + '\n')
-                # Need to use an OS exit because sys.exit doesn't work in a thread
-                os._exit(1)
-            except KeyboardInterrupt:
-                if shutdown_message:
-                    print shutdown_message
-                sys.exit(0)
-        if use_reloader:
-            from django.utils import autoreload
-            autoreload.main(inner_run)
-        else:
-            inner_run()
diff --git a/webapp/django/core/management/commands/shell.py b/webapp/django/core/management/commands/shell.py
deleted file mode 100644
index 9616902..0000000
--- a/webapp/django/core/management/commands/shell.py
+++ /dev/null
@@ -1,59 +0,0 @@
-import os
-from django.core.management.base import NoArgsCommand
-from optparse import make_option
-
-class Command(NoArgsCommand):
-    option_list = NoArgsCommand.option_list + (
-        make_option('--plain', action='store_true', dest='plain',
-            help='Tells Django to use plain Python, not IPython.'),
-    )
-    help = "Runs a Python interactive interpreter. Tries to use IPython, if it's available."
-
-    requires_model_validation = False
-
-    def handle_noargs(self, **options):
-        # XXX: (Temporary) workaround for ticket #1796: force early loading of all
-        # models from installed apps.
-        from django.db.models.loading import get_models
-        loaded_models = get_models()
-
-        use_plain = options.get('plain', False)
-
-        try:
-            if use_plain:
-                # Don't bother loading IPython, because the user wants plain Python.
-                raise ImportError
-            import IPython
-            # Explicitly pass an empty list as arguments, because otherwise IPython
-            # would use sys.argv from this script.
-            shell = IPython.Shell.IPShell(argv=[])
-            shell.mainloop()
-        except ImportError:
-            import code
-            # Set up a dictionary to serve as the environment for the shell, so
-            # that tab completion works on objects that are imported at runtime.
-            # See ticket 5082.
-            imported_objects = {}
-            try: # Try activating rlcompleter, because it's handy.
-                import readline
-            except ImportError:
-                pass
-            else:
-                # We don't have to wrap the following import in a 'try', because
-                # we already know 'readline' was imported successfully.
-                import rlcompleter
-                readline.set_completer(rlcompleter.Completer(imported_objects).complete)
-                readline.parse_and_bind("tab:complete")
-
-            # We want to honor both $PYTHONSTARTUP and .pythonrc.py, so follow system
-            # conventions and get $PYTHONSTARTUP first then import user.
-            if not use_plain: 
-                pythonrc = os.environ.get("PYTHONSTARTUP") 
-                if pythonrc and os.path.isfile(pythonrc): 
-                    try: 
-                        execfile(pythonrc) 
-                    except NameError: 
-                        pass
-                # This will import .pythonrc.py as a side-effect
-                import user
-            code.interact(local=imported_objects)
diff --git a/webapp/django/core/management/commands/sql.py b/webapp/django/core/management/commands/sql.py
deleted file mode 100644
index bc68a1e..0000000
--- a/webapp/django/core/management/commands/sql.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
-    help = "Prints the CREATE TABLE SQL statements for the given app name(s)."
-
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.core.management.sql import sql_create
-        return u'\n'.join(sql_create(app, self.style)).encode('utf-8')
diff --git a/webapp/django/core/management/commands/sqlall.py b/webapp/django/core/management/commands/sqlall.py
deleted file mode 100644
index 5d510f1..0000000
--- a/webapp/django/core/management/commands/sqlall.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
-    help = "Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s)."
-
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.core.management.sql import sql_all
-        return u'\n'.join(sql_all(app, self.style)).encode('utf-8')
diff --git a/webapp/django/core/management/commands/sqlclear.py b/webapp/django/core/management/commands/sqlclear.py
deleted file mode 100644
index 8550e88..0000000
--- a/webapp/django/core/management/commands/sqlclear.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
-    help = "Prints the DROP TABLE SQL statements for the given app name(s)."
-
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.core.management.sql import sql_delete
-        return u'\n'.join(sql_delete(app, self.style)).encode('utf-8')
diff --git a/webapp/django/core/management/commands/sqlcustom.py b/webapp/django/core/management/commands/sqlcustom.py
deleted file mode 100644
index 465330d..0000000
--- a/webapp/django/core/management/commands/sqlcustom.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
-    help = "Prints the custom table modifying SQL statements for the given app name(s)."
-
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.core.management.sql import sql_custom
-        return u'\n'.join(sql_custom(app, self.style)).encode('utf-8')
diff --git a/webapp/django/core/management/commands/sqlflush.py b/webapp/django/core/management/commands/sqlflush.py
deleted file mode 100644
index d0f71d38..0000000
--- a/webapp/django/core/management/commands/sqlflush.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import NoArgsCommand
-
-class Command(NoArgsCommand):
-    help = "Returns a list of the SQL statements required to return all tables in the database to the state they were in just after they were installed."
-
-    output_transaction = True
-
-    def handle_noargs(self, **options):
-        from django.core.management.sql import sql_flush
-        return u'\n'.join(sql_flush(self.style, only_django=True)).encode('utf-8')
diff --git a/webapp/django/core/management/commands/sqlindexes.py b/webapp/django/core/management/commands/sqlindexes.py
deleted file mode 100644
index 9693588..0000000
--- a/webapp/django/core/management/commands/sqlindexes.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
-    help = "Prints the CREATE INDEX SQL statements for the given model module name(s)."
-
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.core.management.sql import sql_indexes
-        return u'\n'.join(sql_indexes(app, self.style)).encode('utf-8')
diff --git a/webapp/django/core/management/commands/sqlinitialdata.py b/webapp/django/core/management/commands/sqlinitialdata.py
deleted file mode 100644
index b9e2249..0000000
--- a/webapp/django/core/management/commands/sqlinitialdata.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from django.core.management.base import AppCommand, CommandError
-
-class Command(AppCommand):
-    help = "RENAMED: see 'sqlcustom'"
-
-    def handle(self, *apps, **options):
-        raise CommandError("This command has been renamed. Use the 'sqlcustom' command instead.")
diff --git a/webapp/django/core/management/commands/sqlreset.py b/webapp/django/core/management/commands/sqlreset.py
deleted file mode 100644
index ec40848c..0000000
--- a/webapp/django/core/management/commands/sqlreset.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
-    help = "Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s)."
-
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.core.management.sql import sql_reset
-        return u'\n'.join(sql_reset(app, self.style)).encode('utf-8')
diff --git a/webapp/django/core/management/commands/sqlsequencereset.py b/webapp/django/core/management/commands/sqlsequencereset.py
deleted file mode 100644
index e8dad0b..0000000
--- a/webapp/django/core/management/commands/sqlsequencereset.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
-    help = 'Prints the SQL statements for resetting sequences for the given app name(s).'
-    output_transaction = True
-
-    def handle_app(self, app, **options):
-        from django.db import connection, models
-        return u'\n'.join(connection.ops.sequence_reset_sql(self.style, models.get_models(app))).encode('utf-8')
diff --git a/webapp/django/core/management/commands/startapp.py b/webapp/django/core/management/commands/startapp.py
deleted file mode 100644
index a81c427..0000000
--- a/webapp/django/core/management/commands/startapp.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import os
-
-from django.core.management.base import copy_helper, CommandError, LabelCommand
-
-class Command(LabelCommand):
-    help = "Creates a Django app directory structure for the given app name in the current directory."
-    args = "[appname]"
-    label = 'application name'
-
-    requires_model_validation = False
-    # Can't import settings during this command, because they haven't
-    # necessarily been created.
-    can_import_settings = False
-
-    def handle_label(self, app_name, directory=None, **options):
-        if directory is None:
-            directory = os.getcwd()
-
-        # Determine the project_name by using the basename of directory,
-        # which should be the full path of the project directory (or the
-        # current directory if no directory was passed).
-        project_name = os.path.basename(directory)
-        if app_name == project_name:
-            raise CommandError("You cannot create an app with the same name"
-                               " (%r) as your project." % app_name)
-
-        # Check that the app_name cannot be imported.
-        try:
-            __import__(app_name)
-        except ImportError:
-            pass
-        else:
-            raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name." % app_name)
-
-        copy_helper(self.style, 'app', app_name, directory, project_name)
-
-class ProjectCommand(Command):
-    help = ("Creates a Django app directory structure for the given app name"
-            " in this project's directory.")
-
-    def __init__(self, project_directory):
-        super(ProjectCommand, self).__init__()
-        self.project_directory = project_directory
-
-    def handle_label(self, app_name, **options):
-        super(ProjectCommand, self).handle_label(app_name, self.project_directory, **options)
diff --git a/webapp/django/core/management/commands/startproject.py b/webapp/django/core/management/commands/startproject.py
deleted file mode 100644
index 540a64d..0000000
--- a/webapp/django/core/management/commands/startproject.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from django.core.management.base import copy_helper, CommandError, LabelCommand
-import os
-import re
-from random import choice
-
-class Command(LabelCommand):
-    help = "Creates a Django project directory structure for the given project name in the current directory."
-    args = "[projectname]"
-    label = 'project name'
-
-    requires_model_validation = False
-    # Can't import settings during this command, because they haven't
-    # necessarily been created.
-    can_import_settings = False
-
-    def handle_label(self, project_name, **options):
-        # Determine the project_name a bit naively -- by looking at the name of
-        # the parent directory.
-        directory = os.getcwd()
-
-        # Check that the project_name cannot be imported.
-        try:
-            __import__(project_name)
-        except ImportError:
-            pass
-        else:
-            raise CommandError("%r conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name." % project_name)
-
-        copy_helper(self.style, 'project', project_name, directory)
-
-        # Create a random SECRET_KEY hash, and put it in the main settings.
-        main_settings_file = os.path.join(directory, project_name, 'settings.py')
-        settings_contents = open(main_settings_file, 'r').read()
-        fp = open(main_settings_file, 'w')
-        secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])
-        settings_contents = re.sub(r"(?<=SECRET_KEY = ')'", secret_key + "'", settings_contents)
-        fp.write(settings_contents)
-        fp.close()
diff --git a/webapp/django/core/management/commands/syncdb.py b/webapp/django/core/management/commands/syncdb.py
deleted file mode 100644
index 7aeed49..0000000
--- a/webapp/django/core/management/commands/syncdb.py
+++ /dev/null
@@ -1,152 +0,0 @@
-from django.core.management.base import NoArgsCommand
-from django.core.management.color import no_style
-from optparse import make_option
-import sys
-
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-class Command(NoArgsCommand):
-    option_list = NoArgsCommand.option_list + (
-        make_option('--verbosity', action='store', dest='verbosity', default='1',
-            type='choice', choices=['0', '1', '2'],
-            help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
-        make_option('--noinput', action='store_false', dest='interactive', default=True,
-            help='Tells Django to NOT prompt the user for input of any kind.'),
-    )
-    help = "Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
-
-    def handle_noargs(self, **options):
-        from django.db import connection, transaction, models
-        from django.conf import settings
-        from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
-
-        verbosity = int(options.get('verbosity', 1))
-        interactive = options.get('interactive')
-        show_traceback = options.get('traceback', False)
-
-        self.style = no_style()
-
-        # Import the 'management' module within each installed app, to register
-        # dispatcher events.
-        for app_name in settings.INSTALLED_APPS:
-            try:
-                __import__(app_name + '.management', {}, {}, [''])
-            except ImportError, exc:
-                # This is slightly hackish. We want to ignore ImportErrors
-                # if the "management" module itself is missing -- but we don't
-                # want to ignore the exception if the management module exists
-                # but raises an ImportError for some reason. The only way we
-                # can do this is to check the text of the exception. Note that
-                # we're a bit broad in how we check the text, because different
-                # Python implementations may not use the same text. 
-                # CPython uses the text "No module named management"
-                # PyPy uses "No module named myproject.myapp.management"
-                msg = exc.args[0]
-                if not msg.startswith('No module named') or 'management' not in msg:
-                    raise
-
-        cursor = connection.cursor()
-
-        # Get a list of already installed *models* so that references work right.
-        tables = connection.introspection.table_names()
-        seen_models = connection.introspection.installed_models(tables)
-        created_models = set()
-        pending_references = {}
-
-        # Create the tables for each model
-        for app in models.get_apps():
-            app_name = app.__name__.split('.')[-2]
-            model_list = models.get_models(app)
-            for model in model_list:
-                # Create the model's database table, if it doesn't already exist.
-                if verbosity >= 2:
-                    print "Processing %s.%s model" % (app_name, model._meta.object_name)
-                if connection.introspection.table_name_converter(model._meta.db_table) in tables:
-                    continue
-                sql, references = connection.creation.sql_create_model(model, self.style, seen_models)
-                seen_models.add(model)
-                created_models.add(model)
-                for refto, refs in references.items():
-                    pending_references.setdefault(refto, []).extend(refs)
-                    if refto in seen_models:
-                        sql.extend(connection.creation.sql_for_pending_references(refto, self.style, pending_references))
-                sql.extend(connection.creation.sql_for_pending_references(model, self.style, pending_references))
-                if verbosity >= 1:
-                    print "Creating table %s" % model._meta.db_table
-                for statement in sql:
-                    cursor.execute(statement)
-                tables.append(connection.introspection.table_name_converter(model._meta.db_table))
-
-        # Create the m2m tables. This must be done after all tables have been created
-        # to ensure that all referred tables will exist.
-        for app in models.get_apps():
-            app_name = app.__name__.split('.')[-2]
-            model_list = models.get_models(app)
-            for model in model_list:
-                if model in created_models:
-                    sql = connection.creation.sql_for_many_to_many(model, self.style)
-                    if sql:
-                        if verbosity >= 2:
-                            print "Creating many-to-many tables for %s.%s model" % (app_name, model._meta.object_name)
-                        for statement in sql:
-                            cursor.execute(statement)
-
-        transaction.commit_unless_managed()
-
-        # Send the post_syncdb signal, so individual apps can do whatever they need
-        # to do at this point.
-        emit_post_sync_signal(created_models, verbosity, interactive)
-        
-        # The connection may have been closed by a syncdb handler.
-        cursor = connection.cursor()
-        
-        # Install custom SQL for the app (but only if this
-        # is a model we've just created)
-        for app in models.get_apps():
-            app_name = app.__name__.split('.')[-2]
-            for model in models.get_models(app):
-                if model in created_models:
-                    custom_sql = custom_sql_for_model(model, self.style)
-                    if custom_sql:
-                        if verbosity >= 1:
-                            print "Installing custom SQL for %s.%s model" % (app_name, model._meta.object_name)
-                        try:
-                            for sql in custom_sql:
-                                cursor.execute(sql)
-                        except Exception, e:
-                            sys.stderr.write("Failed to install custom SQL for %s.%s model: %s\n" % \
-                                                (app_name, model._meta.object_name, e))
-                            if show_traceback:
-                                import traceback
-                                traceback.print_exc()
-                            transaction.rollback_unless_managed()
-                        else:
-                            transaction.commit_unless_managed()
-                    else:
-                        if verbosity >= 2:
-                            print "No custom SQL for %s.%s model" % (app_name, model._meta.object_name)
-        # Install SQL indicies for all newly created models
-        for app in models.get_apps():
-            app_name = app.__name__.split('.')[-2]
-            for model in models.get_models(app):
-                if model in created_models:
-                    index_sql = connection.creation.sql_indexes_for_model(model, self.style)
-                    if index_sql:
-                        if verbosity >= 1:
-                            print "Installing index for %s.%s model" % (app_name, model._meta.object_name)
-                        try:
-                            for sql in index_sql:
-                                cursor.execute(sql)
-                        except Exception, e:
-                            sys.stderr.write("Failed to install index for %s.%s model: %s\n" % \
-                                                (app_name, model._meta.object_name, e))
-                            transaction.rollback_unless_managed()
-                        else:
-                            transaction.commit_unless_managed()
-
-        # Install the 'initial_data' fixture, using format discovery
-        from django.core.management import call_command
-        call_command('loaddata', 'initial_data', verbosity=verbosity)
diff --git a/webapp/django/core/management/commands/test.py b/webapp/django/core/management/commands/test.py
deleted file mode 100644
index ef7b197..0000000
--- a/webapp/django/core/management/commands/test.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from django.core.management.base import BaseCommand
-from optparse import make_option
-import sys
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--verbosity', action='store', dest='verbosity', default='1',
-            type='choice', choices=['0', '1', '2'],
-            help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
-        make_option('--noinput', action='store_false', dest='interactive', default=True,
-            help='Tells Django to NOT prompt the user for input of any kind.'),
-    )
-    help = 'Runs the test suite for the specified applications, or the entire site if no apps are specified.'
-    args = '[appname ...]'
-
-    requires_model_validation = False
-
-    def handle(self, *test_labels, **options):
-        from django.conf import settings
-
-        verbosity = int(options.get('verbosity', 1))
-        interactive = options.get('interactive', True)
-    
-        test_path = settings.TEST_RUNNER.split('.')
-        # Allow for Python 2.5 relative paths
-        if len(test_path) > 1:
-            test_module_name = '.'.join(test_path[:-1])
-        else:
-            test_module_name = '.'
-        test_module = __import__(test_module_name, {}, {}, test_path[-1])
-        test_runner = getattr(test_module, test_path[-1])
-
-        failures = test_runner(test_labels, verbosity=verbosity, interactive=interactive)
-        if failures:
-            sys.exit(failures)
diff --git a/webapp/django/core/management/commands/testserver.py b/webapp/django/core/management/commands/testserver.py
deleted file mode 100644
index 78983e7..0000000
--- a/webapp/django/core/management/commands/testserver.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from django.core.management.base import BaseCommand
-
-from optparse import make_option
-
-class Command(BaseCommand):
-    option_list = BaseCommand.option_list + (
-        make_option('--verbosity', action='store', dest='verbosity', default='1',
-            type='choice', choices=['0', '1', '2'],
-            help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
-        make_option('--addrport', action='store', dest='addrport', 
-            type='string', default='',
-            help='port number or ipaddr:port to run the server on'),
-    )
-    help = 'Runs a development server with data from the given fixture(s).'
-    args = '[fixture ...]'
-
-    requires_model_validation = False
-
-    def handle(self, *fixture_labels, **options):
-        from django.core.management import call_command
-        from django.db import connection
-
-        verbosity = int(options.get('verbosity', 1))
-        addrport = options.get('addrport')
-
-        # Create a test database.
-        db_name = connection.creation.create_test_db(verbosity=verbosity)
-
-        # Import the fixture data into the test database.
-        call_command('loaddata', *fixture_labels, **{'verbosity': verbosity})
-
-        # Run the development server. Turn off auto-reloading because it causes
-        # a strange error -- it causes this handle() method to be called
-        # multiple times.
-        shutdown_message = '\nServer stopped.\nNote that the test database, %r, has not been deleted. You can explore it on your own.' % db_name
-        call_command('runserver', addrport=addrport, shutdown_message=shutdown_message, use_reloader=False)
diff --git a/webapp/django/core/management/commands/validate.py b/webapp/django/core/management/commands/validate.py
deleted file mode 100644
index 760d41c..0000000
--- a/webapp/django/core/management/commands/validate.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django.core.management.base import NoArgsCommand
-
-class Command(NoArgsCommand):
-    help = "Validates all installed models."
-
-    requires_model_validation = False
-
-    def handle_noargs(self, **options):
-        self.validate(display_num_errors=True)
diff --git a/webapp/django/core/management/sql.py b/webapp/django/core/management/sql.py
deleted file mode 100644
index 4874a49..0000000
--- a/webapp/django/core/management/sql.py
+++ /dev/null
@@ -1,205 +0,0 @@
-from django.core.management.base import CommandError
-import os
-import re
-
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-def sql_create(app, style):
-    "Returns a list of the CREATE TABLE SQL statements for the given app."
-    from django.db import connection, models
-    from django.conf import settings
-
-    if settings.DATABASE_ENGINE == 'dummy':
-        # This must be the "dummy" database backend, which means the user
-        # hasn't set DATABASE_ENGINE.
-        raise CommandError("Django doesn't know which syntax to use for your SQL statements,\n" +
-            "because you haven't specified the DATABASE_ENGINE setting.\n" +
-            "Edit your settings file and change DATABASE_ENGINE to something like 'postgresql' or 'mysql'.")
-
-    # Get installed models, so we generate REFERENCES right.
-    # We trim models from the current app so that the sqlreset command does not
-    # generate invalid SQL (leaving models out of known_models is harmless, so
-    # we can be conservative).
-    app_models = models.get_models(app)
-    final_output = []
-    tables = connection.introspection.table_names()
-    known_models = set([model for model in connection.introspection.installed_models(tables) if model not in app_models])
-    pending_references = {}
-
-    for model in app_models:
-        output, references = connection.creation.sql_create_model(model, style, known_models)
-        final_output.extend(output)
-        for refto, refs in references.items():
-            pending_references.setdefault(refto, []).extend(refs)
-            if refto in known_models:
-                final_output.extend(connection.creation.sql_for_pending_references(refto, style, pending_references))
-        final_output.extend(connection.creation.sql_for_pending_references(model, style, pending_references))
-        # Keep track of the fact that we've created the table for this model.
-        known_models.add(model)
-
-    # Create the many-to-many join tables.
-    for model in app_models:
-        final_output.extend(connection.creation.sql_for_many_to_many(model, style))
-
-    # Handle references to tables that are from other apps
-    # but don't exist physically.
-    not_installed_models = set(pending_references.keys())
-    if not_installed_models:
-        alter_sql = []
-        for model in not_installed_models:
-            alter_sql.extend(['-- ' + sql for sql in
-                connection.creation.sql_for_pending_references(model, style, pending_references)])
-        if alter_sql:
-            final_output.append('-- The following references should be added but depend on non-existent tables:')
-            final_output.extend(alter_sql)
-
-    return final_output
-
-def sql_delete(app, style):
-    "Returns a list of the DROP TABLE SQL statements for the given app."
-    from django.db import connection, models
-    from django.db.backends.util import truncate_name
-    from django.contrib.contenttypes import generic
-
-    # This should work even if a connection isn't available
-    try:
-        cursor = connection.cursor()
-    except:
-        cursor = None
-
-    # Figure out which tables already exist
-    if cursor:
-        table_names = connection.introspection.get_table_list(cursor)
-    else:
-        table_names = []
-
-    output = []
-
-    # Output DROP TABLE statements for standard application tables.
-    to_delete = set()
-
-    references_to_delete = {}
-    app_models = models.get_models(app)
-    for model in app_models:
-        if cursor and connection.introspection.table_name_converter(model._meta.db_table) in table_names:
-            # The table exists, so it needs to be dropped
-            opts = model._meta
-            for f in opts.local_fields:
-                if f.rel and f.rel.to not in to_delete:
-                    references_to_delete.setdefault(f.rel.to, []).append( (model, f) )
-
-            to_delete.add(model)
-
-    for model in app_models:
-        if connection.introspection.table_name_converter(model._meta.db_table) in table_names:
-            output.extend(connection.creation.sql_destroy_model(model, references_to_delete, style))
-
-    # Output DROP TABLE statements for many-to-many tables.
-    for model in app_models:
-        opts = model._meta
-        for f in opts.local_many_to_many:
-            if cursor and connection.introspection.table_name_converter(f.m2m_db_table()) in table_names:
-                output.extend(connection.creation.sql_destroy_many_to_many(model, f, style))
-
-    # Close database connection explicitly, in case this output is being piped
-    # directly into a database client, to avoid locking issues.
-    if cursor:
-        cursor.close()
-        connection.close()
-
-    return output[::-1] # Reverse it, to deal with table dependencies.
-
-def sql_reset(app, style):
-    "Returns a list of the DROP TABLE SQL, then the CREATE TABLE SQL, for the given module."
-    return sql_delete(app, style) + sql_all(app, style)
-
-def sql_flush(style, only_django=False):
-    """
-    Returns a list of the SQL statements used to flush the database.
-    
-    If only_django is True, then only table names that have associated Django
-    models and are in INSTALLED_APPS will be included.
-    """
-    from django.db import connection
-    if only_django:
-        tables = connection.introspection.django_table_names()
-    else:
-        tables = connection.introspection.table_names()
-    statements = connection.ops.sql_flush(style, tables, connection.introspection.sequence_list())
-    return statements
-
-def sql_custom(app, style):
-    "Returns a list of the custom table modifying SQL statements for the given app."
-    from django.db.models import get_models
-    output = []
-
-    app_models = get_models(app)
-    app_dir = os.path.normpath(os.path.join(os.path.dirname(app.__file__), 'sql'))
-
-    for model in app_models:
-        output.extend(custom_sql_for_model(model, style))
-
-    return output
-
-def sql_indexes(app, style):
-    "Returns a list of the CREATE INDEX SQL statements for all models in the given app."
-    from django.db import connection, models
-    output = []
-    for model in models.get_models(app):
-        output.extend(connection.creation.sql_indexes_for_model(model, style))
-    return output
-
-def sql_all(app, style):
-    "Returns a list of CREATE TABLE SQL, initial-data inserts, and CREATE INDEX SQL for the given module."
-    return sql_create(app, style) + sql_custom(app, style) + sql_indexes(app, style)
-
-def custom_sql_for_model(model, style):
-    from django.db import models
-    from django.conf import settings
-
-    opts = model._meta
-    app_dir = os.path.normpath(os.path.join(os.path.dirname(models.get_app(model._meta.app_label).__file__), 'sql'))
-    output = []
-
-    # Post-creation SQL should come before any initial SQL data is loaded.
-    # However, this should not be done for fields that are part of a a parent
-    # model (via model inheritance).
-    nm = opts.init_name_map()
-    post_sql_fields = [f for f in opts.local_fields if hasattr(f, 'post_create_sql')]
-    for f in post_sql_fields:
-        output.extend(f.post_create_sql(style, model._meta.db_table))
-
-    # Some backends can't execute more than one SQL statement at a time,
-    # so split into separate statements.
-    statements = re.compile(r";[ \t]*$", re.M)
-
-    # Find custom SQL, if it's available.
-    sql_files = [os.path.join(app_dir, "%s.%s.sql" % (opts.object_name.lower(), settings.DATABASE_ENGINE)),
-                 os.path.join(app_dir, "%s.sql" % opts.object_name.lower())]
-    for sql_file in sql_files:
-        if os.path.exists(sql_file):
-            fp = open(sql_file, 'U')
-            for statement in statements.split(fp.read().decode(settings.FILE_CHARSET)):
-                # Remove any comments from the file
-                statement = re.sub(ur"--.*([\n\Z]|$)", "", statement)
-                if statement.strip():
-                    output.append(statement + u";")
-            fp.close()
-
-    return output
-
-
-def emit_post_sync_signal(created_models, verbosity, interactive):
-    from django.db import models
-    from django.dispatch import dispatcher
-    # Emit the post_sync signal for every application.
-    for app in models.get_apps():
-        app_name = app.__name__.split('.')[-2]
-        if verbosity >= 2:
-            print "Running post-sync handlers for application", app_name
-        models.signals.post_syncdb.send(sender=app, app=app,
-            created_models=created_models, verbosity=verbosity,
-            interactive=interactive)
diff --git a/webapp/django/core/management/validation.py b/webapp/django/core/management/validation.py
deleted file mode 100644
index 0b3542c..0000000
--- a/webapp/django/core/management/validation.py
+++ /dev/null
@@ -1,221 +0,0 @@
-import sys
-from django.core.management.color import color_style
-from django.utils.itercompat import is_iterable
-
-class ModelErrorCollection:
-    def __init__(self, outfile=sys.stdout):
-        self.errors = []
-        self.outfile = outfile
-        self.style = color_style()
-
-    def add(self, context, error):
-        self.errors.append((context, error))
-        self.outfile.write(self.style.ERROR("%s: %s\n" % (context, error)))
-
-def get_validation_errors(outfile, app=None):
-    """
-    Validates all models that are part of the specified app. If no app name is provided,
-    validates all models of all installed apps. Writes errors, if any, to outfile.
-    Returns number of errors.
-    """
-    from django.conf import settings
-    from django.db import models, connection
-    from django.db.models.loading import get_app_errors
-    from django.db.models.fields.related import RelatedObject
-
-    e = ModelErrorCollection(outfile)
-
-    for (app_name, error) in get_app_errors().items():
-        e.add(app_name, error)
-
-    for cls in models.get_models(app):
-        opts = cls._meta
-
-        # Do field-specific validation.
-        for f in opts.local_fields:
-            if f.name == 'id' and not f.primary_key and opts.pk.name == 'id':
-                e.add(opts, '"%s": You can\'t use "id" as a field name, because each model automatically gets an "id" field if none of the fields have primary_key=True. You need to either remove/rename your "id" field or add primary_key=True to a field.' % f.name)
-            if f.name.endswith('_'):
-                e.add(opts, '"%s": Field names cannot end with underscores, because this would lead to ambiguous queryset filters.' % f.name)
-            if isinstance(f, models.CharField) and f.max_length in (None, 0):
-                e.add(opts, '"%s": CharFields require a "max_length" attribute.' % f.name)
-            if isinstance(f, models.DecimalField):
-                if f.decimal_places is None:
-                    e.add(opts, '"%s": DecimalFields require a "decimal_places" attribute.' % f.name)
-                if f.max_digits is None:
-                    e.add(opts, '"%s": DecimalFields require a "max_digits" attribute.' % f.name)
-            if isinstance(f, models.FileField) and not f.upload_to:
-                e.add(opts, '"%s": FileFields require an "upload_to" attribute.' % f.name)
-            if isinstance(f, models.ImageField):
-                try:
-                    from PIL import Image
-                except ImportError:
-                    e.add(opts, '"%s": To use ImageFields, you need to install the Python Imaging Library. Get it at http://www.pythonware.com/products/pil/ .' % f.name)
-            if f.choices:
-                if isinstance(f.choices, basestring) or not is_iterable(f.choices):
-                    e.add(opts, '"%s": "choices" should be iterable (e.g., a tuple or list).' % f.name)
-                else:
-                    for c in f.choices:
-                        if not type(c) in (tuple, list) or len(c) != 2:
-                            e.add(opts, '"%s": "choices" should be a sequence of two-tuples.' % f.name)
-            if f.db_index not in (None, True, False):
-                e.add(opts, '"%s": "db_index" should be either None, True or False.' % f.name)
-
-            # Perform any backend-specific field validation.
-            connection.validation.validate_field(e, opts, f)
-
-            # Check to see if the related field will clash with any existing
-            # fields, m2m fields, m2m related objects or related objects
-            if f.rel:
-                if f.rel.to not in models.get_models():
-                    e.add(opts, "'%s' has a relation with model %s, which has either not been installed or is abstract." % (f.name, f.rel.to))
-                # it is a string and we could not find the model it refers to
-                # so skip the next section
-                if isinstance(f.rel.to, (str, unicode)):
-                    continue
-
-                rel_opts = f.rel.to._meta
-                rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()
-                rel_query_name = f.related_query_name()
-                for r in rel_opts.fields:
-                    if r.name == rel_name:
-                        e.add(opts, "Accessor for field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                    if r.name == rel_query_name:
-                        e.add(opts, "Reverse query name for field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                for r in rel_opts.local_many_to_many:
-                    if r.name == rel_name:
-                        e.add(opts, "Accessor for field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                    if r.name == rel_query_name:
-                        e.add(opts, "Reverse query name for field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                for r in rel_opts.get_all_related_many_to_many_objects():
-                    if r.get_accessor_name() == rel_name:
-                        e.add(opts, "Accessor for field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-                    if r.get_accessor_name() == rel_query_name:
-                        e.add(opts, "Reverse query name for field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-                for r in rel_opts.get_all_related_objects():
-                    if r.field is not f:
-                        if r.get_accessor_name() == rel_name:
-                            e.add(opts, "Accessor for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-                        if r.get_accessor_name() == rel_query_name:
-                            e.add(opts, "Reverse query name for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-
-        seen_intermediary_signatures = []
-        for i, f in enumerate(opts.local_many_to_many):
-            # Check to see if the related m2m field will clash with any
-            # existing fields, m2m fields, m2m related objects or related
-            # objects
-            if f.rel.to not in models.get_models():
-                e.add(opts, "'%s' has an m2m relation with model %s, which has either not been installed or is abstract." % (f.name, f.rel.to))
-                # it is a string and we could not find the model it refers to
-                # so skip the next section
-                if isinstance(f.rel.to, (str, unicode)):
-                    continue
-
-            # Check that the field is not set to unique.  ManyToManyFields do not support unique.
-            if f.unique:
-                e.add(opts, "ManyToManyFields cannot be unique.  Remove the unique argument on '%s'." % f.name)
-
-            if getattr(f.rel, 'through', None) is not None:
-                if hasattr(f.rel, 'through_model'):
-                    from_model, to_model = cls, f.rel.to
-                    if from_model == to_model and f.rel.symmetrical:
-                        e.add(opts, "Many-to-many fields with intermediate tables cannot be symmetrical.")
-                    seen_from, seen_to, seen_self = False, False, 0
-                    for inter_field in f.rel.through_model._meta.fields:
-                        rel_to = getattr(inter_field.rel, 'to', None)
-                        if from_model == to_model: # relation to self
-                            if rel_to == from_model:
-                                seen_self += 1
-                            if seen_self > 2:
-                                e.add(opts, "Intermediary model %s has more than two foreign keys to %s, which is ambiguous and is not permitted." % (f.rel.through_model._meta.object_name, from_model._meta.object_name))
-                        else:
-                            if rel_to == from_model:
-                                if seen_from:
-                                    e.add(opts, "Intermediary model %s has more than one foreign key to %s, which is ambiguous and is not permitted." % (f.rel.through_model._meta.object_name, rel_from._meta.object_name))
-                                else:
-                                    seen_from = True
-                            elif rel_to == to_model:
-                                if seen_to:
-                                    e.add(opts, "Intermediary model %s has more than one foreign key to %s, which is ambiguous and is not permitted." % (f.rel.through_model._meta.object_name, rel_to._meta.object_name))
-                                else:
-                                    seen_to = True
-                    if f.rel.through_model not in models.get_models():
-                        e.add(opts, "'%s' specifies an m2m relation through model %s, which has not been installed." % (f.name, f.rel.through))
-                    signature = (f.rel.to, cls, f.rel.through_model)
-                    if signature in seen_intermediary_signatures:
-                        e.add(opts, "The model %s has two manually-defined m2m relations through the model %s, which is not permitted. Please consider using an extra field on your intermediary model instead." % (cls._meta.object_name, f.rel.through_model._meta.object_name))
-                    else:
-                        seen_intermediary_signatures.append(signature)
-                    seen_related_fk, seen_this_fk = False, False
-                    for field in f.rel.through_model._meta.fields:
-                        if field.rel:
-                            if not seen_related_fk and field.rel.to == f.rel.to:
-                                seen_related_fk = True
-                            elif field.rel.to == cls:
-                                seen_this_fk = True
-                    if not seen_related_fk or not seen_this_fk:
-                        e.add(opts, "'%s' has a manually-defined m2m relation through model %s, which does not have foreign keys to %s and %s" % (f.name, f.rel.through, f.rel.to._meta.object_name, cls._meta.object_name))
-                else:
-                    e.add(opts, "'%s' specifies an m2m relation through model %s, which has not been installed" % (f.name, f.rel.through))
-
-            rel_opts = f.rel.to._meta
-            rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()
-            rel_query_name = f.related_query_name()
-            # If rel_name is none, there is no reverse accessor (this only
-            # occurs for symmetrical m2m relations to self). If this is the
-            # case, there are no clashes to check for this field, as there are
-            # no reverse descriptors for this field.
-            if rel_name is not None:
-                for r in rel_opts.fields:
-                    if r.name == rel_name:
-                        e.add(opts, "Accessor for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                    if r.name == rel_query_name:
-                        e.add(opts, "Reverse query name for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                for r in rel_opts.local_many_to_many:
-                    if r.name == rel_name:
-                        e.add(opts, "Accessor for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                    if r.name == rel_query_name:
-                        e.add(opts, "Reverse query name for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
-                for r in rel_opts.get_all_related_many_to_many_objects():
-                    if r.field is not f:
-                        if r.get_accessor_name() == rel_name:
-                            e.add(opts, "Accessor for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-                        if r.get_accessor_name() == rel_query_name:
-                            e.add(opts, "Reverse query name for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-                for r in rel_opts.get_all_related_objects():
-                    if r.get_accessor_name() == rel_name:
-                        e.add(opts, "Accessor for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-                    if r.get_accessor_name() == rel_query_name:
-                        e.add(opts, "Reverse query name for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-
-        # Check ordering attribute.
-        if opts.ordering:
-            for field_name in opts.ordering:
-                if field_name == '?': continue
-                if field_name.startswith('-'):
-                    field_name = field_name[1:]
-                if opts.order_with_respect_to and field_name == '_order':
-                    continue
-                # Skip ordering in the format field1__field2 (FIXME: checking
-                # this format would be nice, but it's a little fiddly).
-                if '_' in field_name:
-                    continue
-                try:
-                    opts.get_field(field_name, many_to_many=False)
-                except models.FieldDoesNotExist:
-                    e.add(opts, '"ordering" refers to "%s", a field that doesn\'t exist.' % field_name)
-
-        # Check unique_together.
-        for ut in opts.unique_together:
-            for field_name in ut:
-                try:
-                    f = opts.get_field(field_name, many_to_many=True)
-                except models.FieldDoesNotExist:
-                    e.add(opts, '"unique_together" refers to %s, a field that doesn\'t exist. Check your syntax.' % field_name)
-                else:
-                    if isinstance(f.rel, models.ManyToManyRel):
-                        e.add(opts, '"unique_together" refers to %s. ManyToManyFields are not supported in unique_together.' % f.name)
-                    if f not in opts.local_fields:
-                        e.add(opts, '"unique_together" refers to %s. This is not in the same model as the unique_together statement.' % f.name)
-
-    return len(e.errors)
diff --git a/webapp/django/core/paginator.py b/webapp/django/core/paginator.py
deleted file mode 100644
index 495cdf2..0000000
--- a/webapp/django/core/paginator.py
+++ /dev/null
@@ -1,120 +0,0 @@
-from math import ceil
-
-class InvalidPage(Exception):
-    pass
-
-class PageNotAnInteger(InvalidPage):
-    pass
-
-class EmptyPage(InvalidPage):
-    pass
-
-class Paginator(object):
-    def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True):
-        self.object_list = object_list
-        self.per_page = per_page
-        self.orphans = orphans
-        self.allow_empty_first_page = allow_empty_first_page
-        self._num_pages = self._count = None
-
-    def validate_number(self, number):
-        "Validates the given 1-based page number."
-        try:
-            number = int(number)
-        except ValueError:
-            raise PageNotAnInteger('That page number is not an integer')
-        if number < 1:
-            raise EmptyPage('That page number is less than 1')
-        if number > self.num_pages:
-            if number == 1 and self.allow_empty_first_page:
-                pass
-            else:
-                raise EmptyPage('That page contains no results')
-        return number
-
-    def page(self, number):
-        "Returns a Page object for the given 1-based page number."
-        number = self.validate_number(number)
-        bottom = (number - 1) * self.per_page
-        top = bottom + self.per_page
-        if top + self.orphans >= self.count:
-            top = self.count
-        return Page(self.object_list[bottom:top], number, self)
-
-    def _get_count(self):
-        "Returns the total number of objects, across all pages."
-        if self._count is None:
-            try:
-                self._count = self.object_list.count()
-            except (AttributeError, TypeError):
-                # AttributeError if object_list has no count() method.
-                # TypeError if object_list.count() requires arguments
-                # (i.e. is of type list).
-                self._count = len(self.object_list)
-        return self._count
-    count = property(_get_count)
-
-    def _get_num_pages(self):
-        "Returns the total number of pages."
-        if self._num_pages is None:
-            if self.count == 0 and not self.allow_empty_first_page:
-                self._num_pages = 0
-            else:
-                hits = max(1, self.count - self.orphans)
-                self._num_pages = int(ceil(hits / float(self.per_page)))
-        return self._num_pages
-    num_pages = property(_get_num_pages)
-
-    def _get_page_range(self):
-        """
-        Returns a 1-based range of pages for iterating through within
-        a template for loop.
-        """
-        return range(1, self.num_pages + 1)
-    page_range = property(_get_page_range)
-
-QuerySetPaginator = Paginator # For backwards-compatibility.
-
-class Page(object):
-    def __init__(self, object_list, number, paginator):
-        self.object_list = object_list
-        self.number = number
-        self.paginator = paginator
-
-    def __repr__(self):
-        return '<Page %s of %s>' % (self.number, self.paginator.num_pages)
-
-    def has_next(self):
-        return self.number < self.paginator.num_pages
-
-    def has_previous(self):
-        return self.number > 1
-
-    def has_other_pages(self):
-        return self.has_previous() or self.has_next()
-
-    def next_page_number(self):
-        return self.number + 1
-
-    def previous_page_number(self):
-        return self.number - 1
-
-    def start_index(self):
-        """
-        Returns the 1-based index of the first object on this page,
-        relative to total objects in the paginator.
-        """
-        # Special case, return zero if no items.
-        if self.paginator.count == 0:
-            return 0
-        return (self.paginator.per_page * (self.number - 1)) + 1
-
-    def end_index(self):
-        """
-        Returns the 1-based index of the last object on this page,
-        relative to total objects found (hits).
-        """
-        # Special case for the last page because there can be orphans.
-        if self.number == self.paginator.num_pages:
-            return self.paginator.count
-        return self.number * self.paginator.per_page
diff --git a/webapp/django/core/serializers/__init__.py b/webapp/django/core/serializers/__init__.py
deleted file mode 100644
index 5365efe..0000000
--- a/webapp/django/core/serializers/__init__.py
+++ /dev/null
@@ -1,112 +0,0 @@
-"""
-Interfaces for serializing Django objects.
-
-Usage::
-
-    from django.core import serializers
-    json = serializers.serialize("json", some_query_set)
-    objects = list(serializers.deserialize("json", json))
-
-To add your own serializers, use the SERIALIZATION_MODULES setting::
-
-    SERIALIZATION_MODULES = {
-        "csv" : "path.to.csv.serializer",
-        "txt" : "path.to.txt.serializer",
-    }
-
-"""
-
-from django.conf import settings
-
-# Built-in serializers
-BUILTIN_SERIALIZERS = {
-    "xml"    : "django.core.serializers.xml_serializer",
-    "python" : "django.core.serializers.python",
-    "json"   : "django.core.serializers.json",
-}
-
-# Check for PyYaml and register the serializer if it's available.
-try:
-    import yaml
-    BUILTIN_SERIALIZERS["yaml"] = "django.core.serializers.pyyaml"
-except ImportError:
-    pass
-
-_serializers = {}
-
-def register_serializer(format, serializer_module, serializers=None):
-    """"Register a new serializer. 
-    
-    ``serializer_module`` should be the fully qualified module name
-    for the serializer.
-    
-    If ``serializers`` is provided, the registration will be added
-    to the provided dictionary.
-    
-    If ``serializers`` is not provided, the registration will be made
-    directly into the global register of serializers. Adding serializers
-    directly is not a thread-safe operation.
-    """
-    module = __import__(serializer_module, {}, {}, [''])
-    if serializers is None:
-        _serializers[format] = module
-    else:
-        serializers[format] = module
-        
-def unregister_serializer(format):
-    "Unregister a given serializer. This is not a thread-safe operation."
-    del _serializers[format]
-
-def get_serializer(format):
-    if not _serializers:
-        _load_serializers()
-    return _serializers[format].Serializer
-
-def get_serializer_formats():
-    if not _serializers:
-        _load_serializers()
-    return _serializers.keys()
-
-def get_public_serializer_formats():
-    if not _serializers:
-        _load_serializers()
-    return [k for k, v in _serializers.iteritems() if not v.Serializer.internal_use_only]
-
-def get_deserializer(format):
-    if not _serializers:
-        _load_serializers()
-    return _serializers[format].Deserializer
-
-def serialize(format, queryset, **options):
-    """
-    Serialize a queryset (or any iterator that returns database objects) using
-    a certain serializer.
-    """
-    s = get_serializer(format)()
-    s.serialize(queryset, **options)
-    return s.getvalue()
-
-def deserialize(format, stream_or_string):
-    """
-    Deserialize a stream or a string. Returns an iterator that yields ``(obj,
-    m2m_relation_dict)``, where ``obj`` is a instantiated -- but *unsaved* --
-    object, and ``m2m_relation_dict`` is a dictionary of ``{m2m_field_name :
-    list_of_related_objects}``.
-    """
-    d = get_deserializer(format)
-    return d(stream_or_string)
-
-def _load_serializers():
-    """
-    Register built-in and settings-defined serializers. This is done lazily so
-    that user code has a chance to (e.g.) set up custom settings without
-    needing to be careful of import order.
-    """
-    global _serializers
-    serializers = {}
-    for format in BUILTIN_SERIALIZERS:
-        register_serializer(format, BUILTIN_SERIALIZERS[format], serializers)
-    if hasattr(settings, "SERIALIZATION_MODULES"):
-        for format in settings.SERIALIZATION_MODULES:
-            register_serializer(format, settings.SERIALIZATION_MODULES[format], serializers)
-    _serializers = serializers
diff --git a/webapp/django/core/serializers/base.py b/webapp/django/core/serializers/base.py
deleted file mode 100644
index bfd785a..0000000
--- a/webapp/django/core/serializers/base.py
+++ /dev/null
@@ -1,175 +0,0 @@
-"""
-Module for abstract serializer/unserializer base classes.
-"""
-
-from StringIO import StringIO
-
-from django.db import models
-from django.utils.encoding import smart_str, smart_unicode
-from django.utils import datetime_safe
-
-class SerializationError(Exception):
-    """Something bad happened during serialization."""
-    pass
-
-class DeserializationError(Exception):
-    """Something bad happened during deserialization."""
-    pass
-
-class Serializer(object):
-    """
-    Abstract serializer base class.
-    """
-
-    # Indicates if the implemented serializer is only available for
-    # internal Django use.
-    internal_use_only = False
-
-    def serialize(self, queryset, **options):
-        """
-        Serialize a queryset.
-        """
-        self.options = options
-
-        self.stream = options.get("stream", StringIO())
-        self.selected_fields = options.get("fields")
-
-        self.start_serialization()
-        for obj in queryset:
-            self.start_object(obj)
-            for field in obj._meta.local_fields:
-                if field.serialize:
-                    if field.rel is None:
-                        if self.selected_fields is None or field.attname in self.selected_fields:
-                            self.handle_field(obj, field)
-                    else:
-                        if self.selected_fields is None or field.attname[:-3] in self.selected_fields:
-                            self.handle_fk_field(obj, field)
-            for field in obj._meta.many_to_many:
-                if field.serialize:
-                    if self.selected_fields is None or field.attname in self.selected_fields:
-                        self.handle_m2m_field(obj, field)
-            self.end_object(obj)
-        self.end_serialization()
-        return self.getvalue()
-
-    def get_string_value(self, obj, field):
-        """
-        Convert a field's value to a string.
-        """
-        if isinstance(field, models.DateTimeField):
-            d = datetime_safe.new_datetime(getattr(obj, field.name))
-            value = d.strftime("%Y-%m-%d %H:%M:%S")
-        else:
-            value = field.flatten_data(follow=None, obj=obj).get(field.name, "")
-        return smart_unicode(value)
-
-    def start_serialization(self):
-        """
-        Called when serializing of the queryset starts.
-        """
-        raise NotImplementedError
-
-    def end_serialization(self):
-        """
-        Called when serializing of the queryset ends.
-        """
-        pass
-
-    def start_object(self, obj):
-        """
-        Called when serializing of an object starts.
-        """
-        raise NotImplementedError
-
-    def end_object(self, obj):
-        """
-        Called when serializing of an object ends.
-        """
-        pass
-
-    def handle_field(self, obj, field):
-        """
-        Called to handle each individual (non-relational) field on an object.
-        """
-        raise NotImplementedError
-
-    def handle_fk_field(self, obj, field):
-        """
-        Called to handle a ForeignKey field.
-        """
-        raise NotImplementedError
-
-    def handle_m2m_field(self, obj, field):
-        """
-        Called to handle a ManyToManyField.
-        """
-        raise NotImplementedError
-
-    def getvalue(self):
-        """
-        Return the fully serialized queryset (or None if the output stream is
-        not seekable).
-        """
-        if callable(getattr(self.stream, 'getvalue', None)):
-            return self.stream.getvalue()
-
-class Deserializer(object):
-    """
-    Abstract base deserializer class.
-    """
-
-    def __init__(self, stream_or_string, **options):
-        """
-        Init this serializer given a stream or a string
-        """
-        self.options = options
-        if isinstance(stream_or_string, basestring):
-            self.stream = StringIO(stream_or_string)
-        else:
-            self.stream = stream_or_string
-        # hack to make sure that the models have all been loaded before
-        # deserialization starts (otherwise subclass calls to get_model()
-        # and friends might fail...)
-        models.get_apps()
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        """Iteration iterface -- return the next item in the stream"""
-        raise NotImplementedError
-
-class DeserializedObject(object):
-    """
-    A deserialized model.
-
-    Basically a container for holding the pre-saved deserialized data along
-    with the many-to-many data saved with the object.
-
-    Call ``save()`` to save the object (with the many-to-many data) to the
-    database; call ``save(save_m2m=False)`` to save just the object fields
-    (and not touch the many-to-many stuff.)
-    """
-
-    def __init__(self, obj, m2m_data=None):
-        self.object = obj
-        self.m2m_data = m2m_data
-
-    def __repr__(self):
-        return "<DeserializedObject: %s>" % smart_str(self.object)
-
-    def save(self, save_m2m=True):
-        # Call save on the Model baseclass directly. This bypasses any
-        # model-defined save. The save is also forced to be raw.
-        # This ensures that the data that is deserialized is literally
-        # what came from the file, not post-processed by pre_save/save
-        # methods.
-        models.Model.save_base(self.object, raw=True)
-        if self.m2m_data and save_m2m:
-            for accessor_name, object_list in self.m2m_data.items():
-                setattr(self.object, accessor_name, object_list)
-
-        # prevent a second (possibly accidental) call to save() from saving
-        # the m2m data twice.
-        self.m2m_data = None
diff --git a/webapp/django/core/serializers/json.py b/webapp/django/core/serializers/json.py
deleted file mode 100644
index 97e5bc9..0000000
--- a/webapp/django/core/serializers/json.py
+++ /dev/null
@@ -1,68 +0,0 @@
-"""
-Serialize data to/from JSON
-"""
-
-import datetime
-from StringIO import StringIO
-
-from django.core.serializers.python import Serializer as PythonSerializer
-from django.core.serializers.python import Deserializer as PythonDeserializer
-from django.utils import datetime_safe
-from django.utils import simplejson
-
-try:
-    import decimal
-except ImportError:
-    from django.utils import _decimal as decimal    # Python 2.3 fallback
-
-class Serializer(PythonSerializer):
-    """
-    Convert a queryset to JSON.
-    """
-    internal_use_only = False
-
-    def end_serialization(self):
-        self.options.pop('stream', None)
-        self.options.pop('fields', None)
-        simplejson.dump(self.objects, self.stream, cls=DjangoJSONEncoder, **self.options)
-
-    def getvalue(self):
-        if callable(getattr(self.stream, 'getvalue', None)):
-            return self.stream.getvalue()
-
-def Deserializer(stream_or_string, **options):
-    """
-    Deserialize a stream or string of JSON data.
-    """
-    if isinstance(stream_or_string, basestring):
-        stream = StringIO(stream_or_string)
-    else:
-        stream = stream_or_string
-    for obj in PythonDeserializer(simplejson.load(stream)):
-        yield obj
-
-class DjangoJSONEncoder(simplejson.JSONEncoder):
-    """
-    JSONEncoder subclass that knows how to encode date/time and decimal types.
-    """
-
-    DATE_FORMAT = "%Y-%m-%d"
-    TIME_FORMAT = "%H:%M:%S"
-
-    def default(self, o):
-        if isinstance(o, datetime.datetime):
-            d = datetime_safe.new_datetime(o)
-            return d.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT))
-        elif isinstance(o, datetime.date):
-            d = datetime_safe.new_date(o)
-            return d.strftime(self.DATE_FORMAT)
-        elif isinstance(o, datetime.time):
-            return o.strftime(self.TIME_FORMAT)
-        elif isinstance(o, decimal.Decimal):
-            return str(o)
-        else:
-            return super(DjangoJSONEncoder, self).default(o)
-
-# Older, deprecated class name (for backwards compatibility purposes).
-DateTimeAwareJSONEncoder = DjangoJSONEncoder
-
diff --git a/webapp/django/core/serializers/python.py b/webapp/django/core/serializers/python.py
deleted file mode 100644
index c129c06..0000000
--- a/webapp/django/core/serializers/python.py
+++ /dev/null
@@ -1,108 +0,0 @@
-"""
-A Python "serializer". Doesn't do much serializing per se -- just converts to
-and from basic Python data types (lists, dicts, strings, etc.). Useful as a basis for
-other serializers.
-"""
-
-from django.conf import settings
-from django.core.serializers import base
-from django.db import models
-from django.utils.encoding import smart_unicode
-
-class Serializer(base.Serializer):
-    """
-    Serializes a QuerySet to basic Python objects.
-    """
-    
-    internal_use_only = True
-    
-    def start_serialization(self):
-        self._current = None
-        self.objects = []
-
-    def end_serialization(self):
-        pass
-
-    def start_object(self, obj):
-        self._current = {}
-
-    def end_object(self, obj):
-        self.objects.append({
-            "model"  : smart_unicode(obj._meta),
-            "pk"     : smart_unicode(obj._get_pk_val(), strings_only=True),
-            "fields" : self._current
-        })
-        self._current = None
-
-    def handle_field(self, obj, field):
-        self._current[field.name] = smart_unicode(getattr(obj, field.name), strings_only=True)
-
-    def handle_fk_field(self, obj, field):
-        related = getattr(obj, field.name)
-        if related is not None:
-            if field.rel.field_name == related._meta.pk.name:
-                # Related to remote object via primary key
-                related = related._get_pk_val()
-            else:
-                # Related to remote object via other field
-                related = getattr(related, field.rel.field_name)
-        self._current[field.name] = smart_unicode(related, strings_only=True)
-
-    def handle_m2m_field(self, obj, field):
-        if field.creates_table:
-            self._current[field.name] = [smart_unicode(related._get_pk_val(), strings_only=True)
-                               for related in getattr(obj, field.name).iterator()]
-
-    def getvalue(self):
-        return self.objects
-
-def Deserializer(object_list, **options):
-    """
-    Deserialize simple Python objects back into Django ORM instances.
-
-    It's expected that you pass the Python objects themselves (instead of a
-    stream or a string) to the constructor
-    """
-    models.get_apps()
-    for d in object_list:
-        # Look up the model and starting build a dict of data for it.
-        Model = _get_model(d["model"])
-        data = {Model._meta.pk.attname : Model._meta.pk.to_python(d["pk"])}
-        m2m_data = {}
-
-        # Handle each field
-        for (field_name, field_value) in d["fields"].iteritems():
-            if isinstance(field_value, str):
-                field_value = smart_unicode(field_value, options.get("encoding", settings.DEFAULT_CHARSET), strings_only=True)
-
-            field = Model._meta.get_field(field_name)
-
-            # Handle M2M relations
-            if field.rel and isinstance(field.rel, models.ManyToManyRel):
-                m2m_convert = field.rel.to._meta.pk.to_python
-                m2m_data[field.name] = [m2m_convert(smart_unicode(pk)) for pk in field_value]
-
-            # Handle FK fields
-            elif field.rel and isinstance(field.rel, models.ManyToOneRel):
-                if field_value:
-                    data[field.attname] = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
-                else:
-                    data[field.attname] = None
-
-            # Handle all other fields
-            else:
-                data[field.name] = field.to_python(field_value)
-
-        yield base.DeserializedObject(Model(**data), m2m_data)
-
-def _get_model(model_identifier):
-    """
-    Helper to look up a model from an "app_label.module_name" string.
-    """
-    try:
-        Model = models.get_model(*model_identifier.split("."))
-    except TypeError:
-        Model = None
-    if Model is None:
-        raise base.DeserializationError(u"Invalid model identifier: '%s'" % model_identifier)
-    return Model
diff --git a/webapp/django/core/serializers/pyyaml.py b/webapp/django/core/serializers/pyyaml.py
deleted file mode 100644
index ac77166..0000000
--- a/webapp/django/core/serializers/pyyaml.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""
-YAML serializer.
-
-Requires PyYaml (http://pyyaml.org/), but that's checked for in __init__.
-"""
-
-from StringIO import StringIO
-import yaml
-
-from django.db import models
-from django.core.serializers.python import Serializer as PythonSerializer
-from django.core.serializers.python import Deserializer as PythonDeserializer
-
-class Serializer(PythonSerializer):
-    """
-    Convert a queryset to YAML.
-    """
-    
-    internal_use_only = False
-    
-    def handle_field(self, obj, field):
-        # A nasty special case: base YAML doesn't support serialization of time
-        # types (as opposed to dates or datetimes, which it does support). Since
-        # we want to use the "safe" serializer for better interoperability, we
-        # need to do something with those pesky times. Converting 'em to strings
-        # isn't perfect, but it's better than a "!!python/time" type which would
-        # halt deserialization under any other language.
-        if isinstance(field, models.TimeField) and getattr(obj, field.name) is not None:
-            self._current[field.name] = str(getattr(obj, field.name))
-        else:
-            super(Serializer, self).handle_field(obj, field)
-    
-    def end_serialization(self):
-        self.options.pop('stream', None)
-        self.options.pop('fields', None)
-        yaml.safe_dump(self.objects, self.stream, **self.options)
-
-    def getvalue(self):
-        return self.stream.getvalue()
-
-def Deserializer(stream_or_string, **options):
-    """
-    Deserialize a stream or string of YAML data.
-    """
-    if isinstance(stream_or_string, basestring):
-        stream = StringIO(stream_or_string)
-    else:
-        stream = stream_or_string
-    for obj in PythonDeserializer(yaml.load(stream)):
-        yield obj
-
diff --git a/webapp/django/core/serializers/xml_serializer.py b/webapp/django/core/serializers/xml_serializer.py
deleted file mode 100644
index 04498db..0000000
--- a/webapp/django/core/serializers/xml_serializer.py
+++ /dev/null
@@ -1,238 +0,0 @@
-"""
-XML serializer.
-"""
-
-from django.conf import settings
-from django.core.serializers import base
-from django.db import models
-from django.utils.xmlutils import SimplerXMLGenerator
-from django.utils.encoding import smart_unicode
-from xml.dom import pulldom
-
-class Serializer(base.Serializer):
-    """
-    Serializes a QuerySet to XML.
-    """
-
-    def indent(self, level):
-        if self.options.get('indent', None) is not None:
-            self.xml.ignorableWhitespace('\n' + ' ' * self.options.get('indent', None) * level)
-
-    def start_serialization(self):
-        """
-        Start serialization -- open the XML document and the root element.
-        """
-        self.xml = SimplerXMLGenerator(self.stream, self.options.get("encoding", settings.DEFAULT_CHARSET))
-        self.xml.startDocument()
-        self.xml.startElement("django-objects", {"version" : "1.0"})
-
-    def end_serialization(self):
-        """
-        End serialization -- end the document.
-        """
-        self.indent(0)
-        self.xml.endElement("django-objects")
-        self.xml.endDocument()
-
-    def start_object(self, obj):
-        """
-        Called as each object is handled.
-        """
-        if not hasattr(obj, "_meta"):
-            raise base.SerializationError("Non-model object (%s) encountered during serialization" % type(obj))
-
-        self.indent(1)
-        self.xml.startElement("object", {
-            "pk"    : smart_unicode(obj._get_pk_val()),
-            "model" : smart_unicode(obj._meta),
-        })
-
-    def end_object(self, obj):
-        """
-        Called after handling all fields for an object.
-        """
-        self.indent(1)
-        self.xml.endElement("object")
-
-    def handle_field(self, obj, field):
-        """
-        Called to handle each field on an object (except for ForeignKeys and
-        ManyToManyFields)
-        """
-        self.indent(2)
-        self.xml.startElement("field", {
-            "name" : field.name,
-            "type" : field.get_internal_type()
-        })
-
-        # Get a "string version" of the object's data (this is handled by the
-        # serializer base class).
-        if getattr(obj, field.name) is not None:
-            value = self.get_string_value(obj, field)
-            self.xml.characters(smart_unicode(value))
-        else:
-            self.xml.addQuickElement("None")
-
-        self.xml.endElement("field")
-
-    def handle_fk_field(self, obj, field):
-        """
-        Called to handle a ForeignKey (we need to treat them slightly
-        differently from regular fields).
-        """
-        self._start_relational_field(field)
-        related = getattr(obj, field.name)
-        if related is not None:
-            if field.rel.field_name == related._meta.pk.name:
-                # Related to remote object via primary key
-                related = related._get_pk_val()
-            else:
-                # Related to remote object via other field
-                related = getattr(related, field.rel.field_name)
-            self.xml.characters(smart_unicode(related))
-        else:
-            self.xml.addQuickElement("None")
-        self.xml.endElement("field")
-
-    def handle_m2m_field(self, obj, field):
-        """
-        Called to handle a ManyToManyField. Related objects are only
-        serialized as references to the object's PK (i.e. the related *data*
-        is not dumped, just the relation).
-        """
-        if field.creates_table:
-            self._start_relational_field(field)
-            for relobj in getattr(obj, field.name).iterator():
-                self.xml.addQuickElement("object", attrs={"pk" : smart_unicode(relobj._get_pk_val())})
-            self.xml.endElement("field")
-
-    def _start_relational_field(self, field):
-        """
-        Helper to output the <field> element for relational fields
-        """
-        self.indent(2)
-        self.xml.startElement("field", {
-            "name" : field.name,
-            "rel"  : field.rel.__class__.__name__,
-            "to"   : smart_unicode(field.rel.to._meta),
-        })
-
-class Deserializer(base.Deserializer):
-    """
-    Deserialize XML.
-    """
-
-    def __init__(self, stream_or_string, **options):
-        super(Deserializer, self).__init__(stream_or_string, **options)
-        self.event_stream = pulldom.parse(self.stream)
-
-    def next(self):
-        for event, node in self.event_stream:
-            if event == "START_ELEMENT" and node.nodeName == "object":
-                self.event_stream.expandNode(node)
-                return self._handle_object(node)
-        raise StopIteration
-
-    def _handle_object(self, node):
-        """
-        Convert an <object> node to a DeserializedObject.
-        """
-        # Look up the model using the model loading mechanism. If this fails,
-        # bail.
-        Model = self._get_model_from_node(node, "model")
-
-        # Start building a data dictionary from the object.  If the node is
-        # missing the pk attribute, bail.
-        pk = node.getAttribute("pk")
-        if not pk:
-            raise base.DeserializationError("<object> node is missing the 'pk' attribute")
-
-        data = {Model._meta.pk.attname : Model._meta.pk.to_python(pk)}
-
-        # Also start building a dict of m2m data (this is saved as
-        # {m2m_accessor_attribute : [list_of_related_objects]})
-        m2m_data = {}
-
-        # Deseralize each field.
-        for field_node in node.getElementsByTagName("field"):
-            # If the field is missing the name attribute, bail (are you
-            # sensing a pattern here?)
-            field_name = field_node.getAttribute("name")
-            if not field_name:
-                raise base.DeserializationError("<field> node is missing the 'name' attribute")
-
-            # Get the field from the Model. This will raise a
-            # FieldDoesNotExist if, well, the field doesn't exist, which will
-            # be propagated correctly.
-            field = Model._meta.get_field(field_name)
-
-            # As is usually the case, relation fields get the special treatment.
-            if field.rel and isinstance(field.rel, models.ManyToManyRel):
-                m2m_data[field.name] = self._handle_m2m_field_node(field_node, field)
-            elif field.rel and isinstance(field.rel, models.ManyToOneRel):
-                data[field.attname] = self._handle_fk_field_node(field_node, field)
-            else:
-                if field_node.getElementsByTagName('None'):
-                    value = None
-                else:
-                    value = field.to_python(getInnerText(field_node).strip())
-                data[field.name] = value
-
-        # Return a DeserializedObject so that the m2m data has a place to live.
-        return base.DeserializedObject(Model(**data), m2m_data)
-
-    def _handle_fk_field_node(self, node, field):
-        """
-        Handle a <field> node for a ForeignKey
-        """
-        # Check if there is a child node named 'None', returning None if so.
-        if node.getElementsByTagName('None'):
-            return None
-        else:
-            return field.rel.to._meta.get_field(field.rel.field_name).to_python(
-                       getInnerText(node).strip())
-
-    def _handle_m2m_field_node(self, node, field):
-        """
-        Handle a <field> node for a ManyToManyField.
-        """
-        return [field.rel.to._meta.pk.to_python(
-                    c.getAttribute("pk"))
-                    for c in node.getElementsByTagName("object")]
-
-    def _get_model_from_node(self, node, attr):
-        """
-        Helper to look up a model from a <object model=...> or a <field
-        rel=... to=...> node.
-        """
-        model_identifier = node.getAttribute(attr)
-        if not model_identifier:
-            raise base.DeserializationError(
-                "<%s> node is missing the required '%s' attribute" \
-                    % (node.nodeName, attr))
-        try:
-            Model = models.get_model(*model_identifier.split("."))
-        except TypeError:
-            Model = None
-        if Model is None:
-            raise base.DeserializationError(
-                "<%s> node has invalid model identifier: '%s'" % \
-                    (node.nodeName, model_identifier))
-        return Model
-
-
-def getInnerText(node):
-    """
-    Get all the inner text of a DOM node (recursively).
-    """
-    # inspired by http://mail.python.org/pipermail/xml-sig/2005-March/011022.html
-    inner_text = []
-    for child in node.childNodes:
-        if child.nodeType == child.TEXT_NODE or child.nodeType == child.CDATA_SECTION_NODE:
-            inner_text.append(child.data)
-        elif child.nodeType == child.ELEMENT_NODE:
-            inner_text.extend(getInnerText(child))
-        else:
-           pass
-    return u"".join(inner_text)
-
diff --git a/webapp/django/core/servers/__init__.py b/webapp/django/core/servers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/core/servers/__init__.py
+++ /dev/null
diff --git a/webapp/django/core/servers/basehttp.py b/webapp/django/core/servers/basehttp.py
deleted file mode 100644
index f88f8c7..0000000
--- a/webapp/django/core/servers/basehttp.py
+++ /dev/null
@@ -1,665 +0,0 @@
-"""
-BaseHTTPServer that implements the Python WSGI protocol (PEP 333, rev 1.21).
-
-Adapted from wsgiref.simple_server: http://svn.eby-sarna.com/wsgiref/
-
-This is a simple server for use in testing or debugging Django apps. It hasn't
-been reviewed for security issues. Don't use it for production use.
-"""
-
-from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
-import mimetypes
-import os
-import re
-import sys
-import urllib
-
-from django.utils.http import http_date
-
-__version__ = "0.1"
-__all__ = ['WSGIServer','WSGIRequestHandler']
-
-server_version = "WSGIServer/" + __version__
-sys_version = "Python/" + sys.version.split()[0]
-software_version = server_version + ' ' + sys_version
-
-class WSGIServerException(Exception):
-    pass
-
-class FileWrapper(object):
-    """Wrapper to convert file-like objects to iterables"""
-
-    def __init__(self, filelike, blksize=8192):
-        self.filelike = filelike
-        self.blksize = blksize
-        if hasattr(filelike,'close'):
-            self.close = filelike.close
-
-    def __getitem__(self,key):
-        data = self.filelike.read(self.blksize)
-        if data:
-            return data
-        raise IndexError
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        data = self.filelike.read(self.blksize)
-        if data:
-            return data
-        raise StopIteration
-
-# Regular expression that matches `special' characters in parameters, the
-# existence of which force quoting of the parameter value.
-tspecials = re.compile(r'[ \(\)<>@,;:\\"/\[\]\?=]')
-
-def _formatparam(param, value=None, quote=1):
-    """Convenience function to format and return a key=value pair.
-
-    This will quote the value if needed or if quote is true.
-    """
-    if value is not None and len(value) > 0:
-        if quote or tspecials.search(value):
-            value = value.replace('\\', '\\\\').replace('"', r'\"')
-            return '%s="%s"' % (param, value)
-        else:
-            return '%s=%s' % (param, value)
-    else:
-        return param
-
-class Headers(object):
-    """Manage a collection of HTTP response headers"""
-    def __init__(self,headers):
-        if not isinstance(headers, list):
-            raise TypeError("Headers must be a list of name/value tuples")
-        self._headers = headers
-
-    def __len__(self):
-        """Return the total number of headers, including duplicates."""
-        return len(self._headers)
-
-    def __setitem__(self, name, val):
-        """Set the value of a header."""
-        del self[name]
-        self._headers.append((name, val))
-
-    def __delitem__(self,name):
-        """Delete all occurrences of a header, if present.
-
-        Does *not* raise an exception if the header is missing.
-        """
-        name = name.lower()
-        self._headers[:] = [kv for kv in self._headers if kv[0].lower()<>name]
-
-    def __getitem__(self,name):
-        """Get the first header value for 'name'
-
-        Return None if the header is missing instead of raising an exception.
-
-        Note that if the header appeared multiple times, the first exactly which
-        occurrance gets returned is undefined.  Use getall() to get all
-        the values matching a header field name.
-        """
-        return self.get(name)
-
-    def has_key(self, name):
-        """Return true if the message contains the header."""
-        return self.get(name) is not None
-
-    __contains__ = has_key
-
-    def get_all(self, name):
-        """Return a list of all the values for the named field.
-
-        These will be sorted in the order they appeared in the original header
-        list or were added to this instance, and may contain duplicates.  Any
-        fields deleted and re-inserted are always appended to the header list.
-        If no fields exist with the given name, returns an empty list.
-        """
-        name = name.lower()
-        return [kv[1] for kv in self._headers if kv[0].lower()==name]
-
-
-    def get(self,name,default=None):
-        """Get the first header value for 'name', or return 'default'"""
-        name = name.lower()
-        for k,v in self._headers:
-            if k.lower()==name:
-                return v
-        return default
-
-    def keys(self):
-        """Return a list of all the header field names.
-
-        These will be sorted in the order they appeared in the original header
-        list, or were added to this instance, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return [k for k, v in self._headers]
-
-    def values(self):
-        """Return a list of all header values.
-
-        These will be sorted in the order they appeared in the original header
-        list, or were added to this instance, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return [v for k, v in self._headers]
-
-    def items(self):
-        """Get all the header fields and values.
-
-        These will be sorted in the order they were in the original header
-        list, or were added to this instance, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return self._headers[:]
-
-    def __repr__(self):
-        return "Headers(%s)" % `self._headers`
-
-    def __str__(self):
-        """str() returns the formatted headers, complete with end line,
-        suitable for direct HTTP transmission."""
-        return '\r\n'.join(["%s: %s" % kv for kv in self._headers]+['',''])
-
-    def setdefault(self,name,value):
-        """Return first matching header value for 'name', or 'value'
-
-        If there is no header named 'name', add a new header with name 'name'
-        and value 'value'."""
-        result = self.get(name)
-        if result is None:
-            self._headers.append((name,value))
-            return value
-        else:
-            return result
-
-    def add_header(self, _name, _value, **_params):
-        """Extended header setting.
-
-        _name is the header field to add.  keyword arguments can be used to set
-        additional parameters for the header field, with underscores converted
-        to dashes.  Normally the parameter will be added as key="value" unless
-        value is None, in which case only the key will be added.
-
-        Example:
-
-        h.add_header('content-disposition', 'attachment', filename='bud.gif')
-
-        Note that unlike the corresponding 'email.Message' method, this does
-        *not* handle '(charset, language, value)' tuples: all values must be
-        strings or None.
-        """
-        parts = []
-        if _value is not None:
-            parts.append(_value)
-        for k, v in _params.items():
-            if v is None:
-                parts.append(k.replace('_', '-'))
-            else:
-                parts.append(_formatparam(k.replace('_', '-'), v))
-        self._headers.append((_name, "; ".join(parts)))
-
-def guess_scheme(environ):
-    """Return a guess for whether 'wsgi.url_scheme' should be 'http' or 'https'
-    """
-    if environ.get("HTTPS") in ('yes','on','1'):
-        return 'https'
-    else:
-        return 'http'
-
-_hop_headers = {
-    'connection':1, 'keep-alive':1, 'proxy-authenticate':1,
-    'proxy-authorization':1, 'te':1, 'trailers':1, 'transfer-encoding':1,
-    'upgrade':1
-}
-
-def is_hop_by_hop(header_name):
-    """Return true if 'header_name' is an HTTP/1.1 "Hop-by-Hop" header"""
-    return header_name.lower() in _hop_headers
-
-class ServerHandler(object):
-    """Manage the invocation of a WSGI application"""
-
-    # Configuration parameters; can override per-subclass or per-instance
-    wsgi_version = (1,0)
-    wsgi_multithread = True
-    wsgi_multiprocess = True
-    wsgi_run_once = False
-
-    origin_server = True    # We are transmitting direct to client
-    http_version  = "1.0"   # Version that should be used for response
-    server_software = software_version
-
-    # os_environ is used to supply configuration from the OS environment:
-    # by default it's a copy of 'os.environ' as of import time, but you can
-    # override this in e.g. your __init__ method.
-    os_environ = dict(os.environ.items())
-
-    # Collaborator classes
-    wsgi_file_wrapper = FileWrapper     # set to None to disable
-    headers_class = Headers             # must be a Headers-like class
-
-    # Error handling (also per-subclass or per-instance)
-    traceback_limit = None  # Print entire traceback to self.get_stderr()
-    error_status = "500 INTERNAL SERVER ERROR"
-    error_headers = [('Content-Type','text/plain')]
-
-    # State variables (don't mess with these)
-    status = result = None
-    headers_sent = False
-    headers = None
-    bytes_sent = 0
-
-    def __init__(self, stdin, stdout, stderr, environ, multithread=True,
-        multiprocess=False):
-        self.stdin = stdin
-        self.stdout = stdout
-        self.stderr = stderr
-        self.base_env = environ
-        self.wsgi_multithread = multithread
-        self.wsgi_multiprocess = multiprocess
-
-    def run(self, application):
-        """Invoke the application"""
-        # Note to self: don't move the close()!  Asynchronous servers shouldn't
-        # call close() from finish_response(), so if you close() anywhere but
-        # the double-error branch here, you'll break asynchronous servers by
-        # prematurely closing.  Async servers must return from 'run()' without
-        # closing if there might still be output to iterate over.
-        try:
-            self.setup_environ()
-            self.result = application(self.environ, self.start_response)
-            self.finish_response()
-        except:
-            try:
-                self.handle_error()
-            except:
-                # If we get an error handling an error, just give up already!
-                self.close()
-                raise   # ...and let the actual server figure it out.
-
-    def setup_environ(self):
-        """Set up the environment for one request"""
-
-        env = self.environ = self.os_environ.copy()
-        self.add_cgi_vars()
-
-        env['wsgi.input']        = self.get_stdin()
-        env['wsgi.errors']       = self.get_stderr()
-        env['wsgi.version']      = self.wsgi_version
-        env['wsgi.run_once']     = self.wsgi_run_once
-        env['wsgi.url_scheme']   = self.get_scheme()
-        env['wsgi.multithread']  = self.wsgi_multithread
-        env['wsgi.multiprocess'] = self.wsgi_multiprocess
-
-        if self.wsgi_file_wrapper is not None:
-            env['wsgi.file_wrapper'] = self.wsgi_file_wrapper
-
-        if self.origin_server and self.server_software:
-            env.setdefault('SERVER_SOFTWARE',self.server_software)
-
-    def finish_response(self):
-        """Send any iterable data, then close self and the iterable
-
-        Subclasses intended for use in asynchronous servers will
-        want to redefine this method, such that it sets up callbacks
-        in the event loop to iterate over the data, and to call
-        'self.close()' once the response is finished.
-        """
-        if not self.result_is_file() and not self.sendfile():
-            for data in self.result:
-                self.write(data)
-            self.finish_content()
-        self.close()
-
-    def get_scheme(self):
-        """Return the URL scheme being used"""
-        return guess_scheme(self.environ)
-
-    def set_content_length(self):
-        """Compute Content-Length or switch to chunked encoding if possible"""
-        try:
-            blocks = len(self.result)
-        except (TypeError, AttributeError, NotImplementedError):
-            pass
-        else:
-            if blocks==1:
-                self.headers['Content-Length'] = str(self.bytes_sent)
-                return
-        # XXX Try for chunked encoding if origin server and client is 1.1
-
-    def cleanup_headers(self):
-        """Make any necessary header changes or defaults
-
-        Subclasses can extend this to add other defaults.
-        """
-        if 'Content-Length' not in self.headers:
-            self.set_content_length()
-
-    def start_response(self, status, headers,exc_info=None):
-        """'start_response()' callable as specified by PEP 333"""
-
-        if exc_info:
-            try:
-                if self.headers_sent:
-                    # Re-raise original exception if headers sent
-                    raise exc_info[0], exc_info[1], exc_info[2]
-            finally:
-                exc_info = None        # avoid dangling circular ref
-        elif self.headers is not None:
-            raise AssertionError("Headers already set!")
-
-        assert isinstance(status, str),"Status must be a string"
-        assert len(status)>=4,"Status must be at least 4 characters"
-        assert int(status[:3]),"Status message must begin w/3-digit code"
-        assert status[3]==" ", "Status message must have a space after code"
-        if __debug__:
-            for name,val in headers:
-                assert isinstance(name, str),"Header names must be strings"
-                assert isinstance(val, str),"Header values must be strings"
-                assert not is_hop_by_hop(name),"Hop-by-hop headers not allowed"
-        self.status = status
-        self.headers = self.headers_class(headers)
-        return self.write
-
-    def send_preamble(self):
-        """Transmit version/status/date/server, via self._write()"""
-        if self.origin_server:
-            if self.client_is_modern():
-                self._write('HTTP/%s %s\r\n' % (self.http_version,self.status))
-                if 'Date' not in self.headers:
-                    self._write(
-                        'Date: %s\r\n' % http_date()
-                    )
-                if self.server_software and 'Server' not in self.headers:
-                    self._write('Server: %s\r\n' % self.server_software)
-        else:
-            self._write('Status: %s\r\n' % self.status)
-
-    def write(self, data):
-        """'write()' callable as specified by PEP 333"""
-
-        assert isinstance(data, str), "write() argument must be string"
-
-        if not self.status:
-            raise AssertionError("write() before start_response()")
-
-        elif not self.headers_sent:
-            # Before the first output, send the stored headers
-            self.bytes_sent = len(data)    # make sure we know content-length
-            self.send_headers()
-        else:
-            self.bytes_sent += len(data)
-
-        # XXX check Content-Length and truncate if too many bytes written?
-
-        # If data is too large, socket will choke, so write chunks no larger
-        # than 32MB at a time.
-        length = len(data)
-        if length > 33554432:
-            offset = 0
-            while offset < length:
-                chunk_size = min(33554432, length)
-                self._write(data[offset:offset+chunk_size])
-                self._flush()
-                offset += chunk_size
-        else:
-            self._write(data)
-            self._flush()
-
-    def sendfile(self):
-        """Platform-specific file transmission
-
-        Override this method in subclasses to support platform-specific
-        file transmission.  It is only called if the application's
-        return iterable ('self.result') is an instance of
-        'self.wsgi_file_wrapper'.
-
-        This method should return a true value if it was able to actually
-        transmit the wrapped file-like object using a platform-specific
-        approach.  It should return a false value if normal iteration
-        should be used instead.  An exception can be raised to indicate
-        that transmission was attempted, but failed.
-
-        NOTE: this method should call 'self.send_headers()' if
-        'self.headers_sent' is false and it is going to attempt direct
-        transmission of the file1.
-        """
-        return False   # No platform-specific transmission by default
-
-    def finish_content(self):
-        """Ensure headers and content have both been sent"""
-        if not self.headers_sent:
-            self.headers['Content-Length'] = "0"
-            self.send_headers()
-        else:
-            pass # XXX check if content-length was too short?
-
-    def close(self):
-        try:
-            self.request_handler.log_request(self.status.split(' ',1)[0], self.bytes_sent)
-        finally:
-            try:
-                if hasattr(self.result,'close'):
-                    self.result.close()
-            finally:
-                self.result = self.headers = self.status = self.environ = None
-                self.bytes_sent = 0; self.headers_sent = False
-
-    def send_headers(self):
-        """Transmit headers to the client, via self._write()"""
-        self.cleanup_headers()
-        self.headers_sent = True
-        if not self.origin_server or self.client_is_modern():
-            self.send_preamble()
-            self._write(str(self.headers))
-
-    def result_is_file(self):
-        """True if 'self.result' is an instance of 'self.wsgi_file_wrapper'"""
-        wrapper = self.wsgi_file_wrapper
-        return wrapper is not None and isinstance(self.result,wrapper)
-
-    def client_is_modern(self):
-        """True if client can accept status and headers"""
-        return self.environ['SERVER_PROTOCOL'].upper() != 'HTTP/0.9'
-
-    def log_exception(self,exc_info):
-        """Log the 'exc_info' tuple in the server log
-
-        Subclasses may override to retarget the output or change its format.
-        """
-        try:
-            from traceback import print_exception
-            stderr = self.get_stderr()
-            print_exception(
-                exc_info[0], exc_info[1], exc_info[2],
-                self.traceback_limit, stderr
-            )
-            stderr.flush()
-        finally:
-            exc_info = None
-
-    def handle_error(self):
-        """Log current error, and send error output to client if possible"""
-        self.log_exception(sys.exc_info())
-        if not self.headers_sent:
-            self.result = self.error_output(self.environ, self.start_response)
-            self.finish_response()
-        # XXX else: attempt advanced recovery techniques for HTML or text?
-
-    def error_output(self, environ, start_response):
-        import traceback
-        start_response(self.error_status, self.error_headers[:], sys.exc_info())
-        return ['\n'.join(traceback.format_exception(*sys.exc_info()))]
-
-    # Pure abstract methods; *must* be overridden in subclasses
-
-    def _write(self,data):
-        self.stdout.write(data)
-        self._write = self.stdout.write
-
-    def _flush(self):
-        self.stdout.flush()
-        self._flush = self.stdout.flush
-
-    def get_stdin(self):
-        return self.stdin
-
-    def get_stderr(self):
-        return self.stderr
-
-    def add_cgi_vars(self):
-        self.environ.update(self.base_env)
-
-class WSGIServer(HTTPServer):
-    """BaseHTTPServer that implements the Python WSGI protocol"""
-    application = None
-
-    def server_bind(self):
-        """Override server_bind to store the server name."""
-        try:
-            HTTPServer.server_bind(self)
-        except Exception, e:
-            raise WSGIServerException, e
-        self.setup_environ()
-
-    def setup_environ(self):
-        # Set up base environment
-        env = self.base_environ = {}
-        env['SERVER_NAME'] = self.server_name
-        env['GATEWAY_INTERFACE'] = 'CGI/1.1'
-        env['SERVER_PORT'] = str(self.server_port)
-        env['REMOTE_HOST']=''
-        env['CONTENT_LENGTH']=''
-        env['SCRIPT_NAME'] = ''
-
-    def get_app(self):
-        return self.application
-
-    def set_app(self,application):
-        self.application = application
-
-class WSGIRequestHandler(BaseHTTPRequestHandler):
-    server_version = "WSGIServer/" + __version__
-
-    def __init__(self, *args, **kwargs):
-        from django.conf import settings
-        self.admin_media_prefix = settings.ADMIN_MEDIA_PREFIX
-        # We set self.path to avoid crashes in log_message() on unsupported
-        # requests (like "OPTIONS").
-        self.path = ''
-        BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
-
-    def get_environ(self):
-        env = self.server.base_environ.copy()
-        env['SERVER_PROTOCOL'] = self.request_version
-        env['REQUEST_METHOD'] = self.command
-        if '?' in self.path:
-            path,query = self.path.split('?',1)
-        else:
-            path,query = self.path,''
-
-        env['PATH_INFO'] = urllib.unquote(path)
-        env['QUERY_STRING'] = query
-        env['REMOTE_ADDR'] = self.client_address[0]
-
-        if self.headers.typeheader is None:
-            env['CONTENT_TYPE'] = self.headers.type
-        else:
-            env['CONTENT_TYPE'] = self.headers.typeheader
-
-        length = self.headers.getheader('content-length')
-        if length:
-            env['CONTENT_LENGTH'] = length
-
-        for h in self.headers.headers:
-            k,v = h.split(':',1)
-            k=k.replace('-','_').upper(); v=v.strip()
-            if k in env:
-                continue                    # skip content length, type,etc.
-            if 'HTTP_'+k in env:
-                env['HTTP_'+k] += ','+v     # comma-separate multiple headers
-            else:
-                env['HTTP_'+k] = v
-        return env
-
-    def get_stderr(self):
-        return sys.stderr
-
-    def handle(self):
-        """Handle a single HTTP request"""
-        self.raw_requestline = self.rfile.readline()
-        if not self.parse_request(): # An error code has been sent, just exit
-            return
-        handler = ServerHandler(self.rfile, self.wfile, self.get_stderr(), self.get_environ())
-        handler.request_handler = self      # backpointer for logging
-        handler.run(self.server.get_app())
-
-    def log_message(self, format, *args):
-        # Don't bother logging requests for admin images or the favicon.
-        if self.path.startswith(self.admin_media_prefix) or self.path == '/favicon.ico':
-            return
-        sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))
-
-class AdminMediaHandler(object):
-    """
-    WSGI middleware that intercepts calls to the admin media directory, as
-    defined by the ADMIN_MEDIA_PREFIX setting, and serves those images.
-    Use this ONLY LOCALLY, for development! This hasn't been tested for
-    security and is not super efficient.
-    """
-    def __init__(self, application, media_dir=None):
-        from django.conf import settings
-        self.application = application
-        if not media_dir:
-            import django
-            self.media_dir = django.__path__[0] + '/contrib/admin/media'
-        else:
-            self.media_dir = media_dir
-        self.media_url = settings.ADMIN_MEDIA_PREFIX
-
-    def __call__(self, environ, start_response):
-        import os.path
-
-        # Ignore requests that aren't under ADMIN_MEDIA_PREFIX. Also ignore
-        # all requests if ADMIN_MEDIA_PREFIX isn't a relative URL.
-        if self.media_url.startswith('http://') or self.media_url.startswith('https://') \
-            or not environ['PATH_INFO'].startswith(self.media_url):
-            return self.application(environ, start_response)
-
-        # Find the admin file and serve it up, if it exists and is readable.
-        relative_url = environ['PATH_INFO'][len(self.media_url):]
-        file_path = os.path.join(self.media_dir, relative_url)
-        if not os.path.exists(file_path):
-            status = '404 NOT FOUND'
-            headers = {'Content-type': 'text/plain'}
-            output = ['Page not found: %s' % file_path]
-        else:
-            try:
-                fp = open(file_path, 'rb')
-            except IOError:
-                status = '401 UNAUTHORIZED'
-                headers = {'Content-type': 'text/plain'}
-                output = ['Permission denied: %s' % file_path]
-            else:
-                status = '200 OK'
-                headers = {}
-                mime_type = mimetypes.guess_type(file_path)[0]
-                if mime_type:
-                    headers['Content-Type'] = mime_type
-                output = [fp.read()]
-                fp.close()
-        start_response(status, headers.items())
-        return output
-
-def run(addr, port, wsgi_handler):
-    server_address = (addr, port)
-    httpd = WSGIServer(server_address, WSGIRequestHandler)
-    httpd.set_app(wsgi_handler)
-    httpd.serve_forever()
diff --git a/webapp/django/core/servers/fastcgi.py b/webapp/django/core/servers/fastcgi.py
deleted file mode 100644
index dc4c35b..0000000
--- a/webapp/django/core/servers/fastcgi.py
+++ /dev/null
@@ -1,179 +0,0 @@
-"""
-FastCGI (or SCGI, or AJP1.3 ...) server that implements the WSGI protocol.
-
-Uses the flup python package: http://www.saddi.com/software/flup/
-
-This is a adaptation of the flup package to add FastCGI server support
-to run Django apps from Web servers that support the FastCGI protocol.
-This module can be run standalone or from the django-admin / manage.py
-scripts using the "runfcgi" directive.
-
-Run with the extra option "help" for a list of additional options you can
-pass to this server.
-"""
-
-import sys, os
-
-__version__ = "0.1"
-__all__ = ["runfastcgi"]
-
-FASTCGI_HELP = r"""
-  Run this project as a fastcgi (or some other protocol supported
-  by flup) application. To do this, the flup package from
-  http://www.saddi.com/software/flup/ is required.
-
-   runfcgi [options] [fcgi settings]
-
-Optional Fcgi settings: (setting=value)
-  protocol=PROTOCOL    fcgi, scgi, ajp, ... (default fcgi)
-  host=HOSTNAME        hostname to listen on..
-  port=PORTNUM         port to listen on.
-  socket=FILE          UNIX socket to listen on.
-  method=IMPL          prefork or threaded (default prefork)
-  maxrequests=NUMBER   number of requests a child handles before it is 
-                       killed and a new child is forked (0 = no limit).
-  maxspare=NUMBER      max number of spare processes / threads
-  minspare=NUMBER      min number of spare processes / threads.
-  maxchildren=NUMBER   hard limit number of processes / threads
-  daemonize=BOOL       whether to detach from terminal.
-  pidfile=FILE         write the spawned process-id to this file.
-  workdir=DIRECTORY    change to this directory when daemonizing.
-  outlog=FILE          write stdout to this file.
-  errlog=FILE          write stderr to this file.
-  umask=UMASK          umask to use when daemonizing (default 022).
-
-Examples:
-  Run a "standard" fastcgi process on a file-descriptor
-  (for webservers which spawn your processes for you)
-    $ manage.py runfcgi method=threaded
-
-  Run a scgi server on a TCP host/port
-    $ manage.py runfcgi protocol=scgi method=prefork host=127.0.0.1 port=8025
-
-  Run a fastcgi server on a UNIX domain socket (posix platforms only)
-    $ manage.py runfcgi method=prefork socket=/tmp/fcgi.sock
-
-  Run a fastCGI as a daemon and write the spawned PID in a file
-    $ manage.py runfcgi socket=/tmp/fcgi.sock method=prefork \
-        daemonize=true pidfile=/var/run/django-fcgi.pid
-
-"""
-
-FASTCGI_OPTIONS = {
-    'protocol': 'fcgi',
-    'host': None,
-    'port': None,
-    'socket': None,
-    'method': 'fork',
-    'daemonize': None,
-    'workdir': '/',
-    'pidfile': None,
-    'maxspare': 5,
-    'minspare': 2,
-    'maxchildren': 50,
-    'maxrequests': 0,
-    'outlog': None,
-    'errlog': None,
-    'umask': None,
-}
-
-def fastcgi_help(message=None):
-    print FASTCGI_HELP
-    if message:
-        print message
-    return False
-
-def runfastcgi(argset=[], **kwargs):
-    options = FASTCGI_OPTIONS.copy()
-    options.update(kwargs)
-    for x in argset:
-        if "=" in x:
-            k, v = x.split('=', 1)
-        else:
-            k, v = x, True
-        options[k.lower()] = v
-
-    if "help" in options:
-        return fastcgi_help()
-
-    try:
-        import flup
-    except ImportError, e:
-        print >> sys.stderr, "ERROR: %s" % e
-        print >> sys.stderr, "  Unable to load the flup package.  In order to run django"
-        print >> sys.stderr, "  as a FastCGI application, you will need to get flup from"
-        print >> sys.stderr, "  http://www.saddi.com/software/flup/   If you've already"
-        print >> sys.stderr, "  installed flup, then make sure you have it in your PYTHONPATH."
-        return False
-
-    flup_module = 'server.' + options['protocol']
-
-    if options['method'] in ('prefork', 'fork'):
-        wsgi_opts = {
-            'maxSpare': int(options["maxspare"]),
-            'minSpare': int(options["minspare"]),
-            'maxChildren': int(options["maxchildren"]),
-            'maxRequests': int(options["maxrequests"]), 
-        }
-        flup_module += '_fork'
-    elif options['method'] in ('thread', 'threaded'):
-        wsgi_opts = {
-            'maxSpare': int(options["maxspare"]),
-            'minSpare': int(options["minspare"]),
-            'maxThreads': int(options["maxchildren"]),
-        }
-    else:
-        return fastcgi_help("ERROR: Implementation must be one of prefork or thread.")
-
-    wsgi_opts['debug'] = False # Turn off flup tracebacks
-
-    try:
-        WSGIServer = getattr(__import__('flup.' + flup_module, '', '', flup_module), 'WSGIServer')
-    except:
-        print "Can't import flup." + flup_module
-        return False
-
-    # Prep up and go
-    from django.core.handlers.wsgi import WSGIHandler
-
-    if options["host"] and options["port"] and not options["socket"]:
-        wsgi_opts['bindAddress'] = (options["host"], int(options["port"]))
-    elif options["socket"] and not options["host"] and not options["port"]:
-        wsgi_opts['bindAddress'] = options["socket"]
-    elif not options["socket"] and not options["host"] and not options["port"]:
-        wsgi_opts['bindAddress'] = None
-    else:
-        return fastcgi_help("Invalid combination of host, port, socket.")
-
-    if options["daemonize"] is None:
-        # Default to daemonizing if we're running on a socket/named pipe.
-        daemonize = (wsgi_opts['bindAddress'] is not None)
-    else:
-        if options["daemonize"].lower() in ('true', 'yes', 't'):
-            daemonize = True
-        elif options["daemonize"].lower() in ('false', 'no', 'f'):
-            daemonize = False
-        else:
-            return fastcgi_help("ERROR: Invalid option for daemonize parameter.")
-
-    daemon_kwargs = {}
-    if options['outlog']:
-        daemon_kwargs['out_log'] = options['outlog']
-    if options['errlog']:
-        daemon_kwargs['err_log'] = options['errlog']
-    if options['umask']:
-        daemon_kwargs['umask'] = int(options['umask'])
-
-    if daemonize:
-        from django.utils.daemonize import become_daemon
-        become_daemon(our_home_dir=options["workdir"], **daemon_kwargs)
-
-    if options["pidfile"]:
-        fp = open(options["pidfile"], "w")
-        fp.write("%d\n" % os.getpid())
-        fp.close()
-
-    WSGIServer(WSGIHandler(), **wsgi_opts).run()
-
-if __name__ == '__main__':
-    runfastcgi(sys.argv[1:])
diff --git a/webapp/django/core/signals.py b/webapp/django/core/signals.py
deleted file mode 100644
index a14af00..0000000
--- a/webapp/django/core/signals.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.dispatch import Signal
-
-request_started = Signal()
-request_finished = Signal()
-got_request_exception = Signal(providing_args=["request"])
diff --git a/webapp/django/core/template_loader.py b/webapp/django/core/template_loader.py
deleted file mode 100644
index ee86178..0000000
--- a/webapp/django/core/template_loader.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# This module is DEPRECATED!
-#
-# You should no longer be using django.template_loader.
-#
-# Use django.template.loader instead.
-
-from django.template.loader import *
diff --git a/webapp/django/core/urlresolvers.py b/webapp/django/core/urlresolvers.py
deleted file mode 100644
index f6e09c1..0000000
--- a/webapp/django/core/urlresolvers.py
+++ /dev/null
@@ -1,330 +0,0 @@
-"""
-This module converts requested URLs to callback view functions.
-
-RegexURLResolver is the main class here. Its resolve() method takes a URL (as
-a string) and returns a tuple in this format:
-
-    (view_function, function_args, function_kwargs)
-"""
-
-import re
-
-from django.http import Http404
-from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
-from django.utils.encoding import iri_to_uri, force_unicode, smart_str
-from django.utils.functional import memoize
-from django.utils.thread_support import currentThread
-
-try:
-    reversed
-except NameError:
-    from django.utils.itercompat import reversed     # Python 2.3 fallback
-
-_resolver_cache = {} # Maps urlconf modules to RegexURLResolver instances.
-_callable_cache = {} # Maps view and url pattern names to their view functions.
-
-# SCRIPT_NAME prefixes for each thread are stored here. If there's no entry for
-# the current thread (which is the only one we ever access), it is assumed to
-# be empty.
-_prefixes = {}
-
-class Resolver404(Http404):
-    pass
-
-class NoReverseMatch(Exception):
-    # Don't make this raise an error when used in a template.
-    silent_variable_failure = True
-
-def get_callable(lookup_view, can_fail=False):
-    """
-    Convert a string version of a function name to the callable object.
-
-    If the lookup_view is not an import path, it is assumed to be a URL pattern
-    label and the original string is returned.
-
-    If can_fail is True, lookup_view might be a URL pattern label, so errors
-    during the import fail and the string is returned.
-    """
-    if not callable(lookup_view):
-        try:
-            # Bail early for non-ASCII strings (they can't be functions).
-            lookup_view = lookup_view.encode('ascii')
-            mod_name, func_name = get_mod_func(lookup_view)
-            if func_name != '':
-                lookup_view = getattr(__import__(mod_name, {}, {}, ['']), func_name)
-        except (ImportError, AttributeError):
-            if not can_fail:
-                raise
-        except UnicodeEncodeError:
-            pass
-    return lookup_view
-get_callable = memoize(get_callable, _callable_cache, 1)
-
-def get_resolver(urlconf):
-    if urlconf is None:
-        from django.conf import settings
-        urlconf = settings.ROOT_URLCONF
-    return RegexURLResolver(r'^/', urlconf)
-get_resolver = memoize(get_resolver, _resolver_cache, 1)
-
-def get_mod_func(callback):
-    # Converts 'django.views.news.stories.story_detail' to
-    # ['django.views.news.stories', 'story_detail']
-    try:
-        dot = callback.rindex('.')
-    except ValueError:
-        return callback, ''
-    return callback[:dot], callback[dot+1:]
-
-def reverse_helper(regex, *args, **kwargs):
-    """
-    Does a "reverse" lookup -- returns the URL for the given args/kwargs.
-    The args/kwargs are applied to the given compiled regular expression.
-    For example:
-
-        >>> reverse_helper(re.compile('^places/(\d+)/$'), 3)
-        'places/3/'
-        >>> reverse_helper(re.compile('^places/(?P<id>\d+)/$'), id=3)
-        'places/3/'
-        >>> reverse_helper(re.compile('^people/(?P<state>\w\w)/(\w+)/$'), 'adrian', state='il')
-        'people/il/adrian/'
-
-    Raises NoReverseMatch if the args/kwargs aren't valid for the regex.
-    """
-    # TODO: Handle nested parenthesis in the following regex.
-    result = re.sub(r'\(([^)]+)\)', MatchChecker(args, kwargs), regex.pattern)
-    return result.replace('^', '').replace('$', '').replace('\\', '')
-
-class MatchChecker(object):
-    "Class used in reverse RegexURLPattern lookup."
-    def __init__(self, args, kwargs):
-        self.args, self.kwargs = args, kwargs
-        self.current_arg = 0
-
-    def __call__(self, match_obj):
-        # match_obj.group(1) is the contents of the parenthesis.
-        # First we need to figure out whether it's a named or unnamed group.
-        #
-        grouped = match_obj.group(1)
-        m = re.search(r'^\?P<(\w+)>(.*?)$', grouped, re.UNICODE)
-        if m: # If this was a named group...
-            # m.group(1) is the name of the group
-            # m.group(2) is the regex.
-            try:
-                value = self.kwargs[m.group(1)]
-            except KeyError:
-                # It was a named group, but the arg was passed in as a
-                # positional arg or not at all.
-                try:
-                    value = self.args[self.current_arg]
-                    self.current_arg += 1
-                except IndexError:
-                    # The arg wasn't passed in.
-                    raise NoReverseMatch('Not enough positional arguments passed in')
-            test_regex = m.group(2)
-        else: # Otherwise, this was a positional (unnamed) group.
-            try:
-                value = self.args[self.current_arg]
-                self.current_arg += 1
-            except IndexError:
-                # The arg wasn't passed in.
-                raise NoReverseMatch('Not enough positional arguments passed in')
-            test_regex = grouped
-        # Note we're using re.match here on purpose because the start of
-        # to string needs to match.
-        if not re.match(test_regex + '$', force_unicode(value), re.UNICODE):
-            raise NoReverseMatch("Value %r didn't match regular expression %r" % (value, test_regex))
-        return force_unicode(value)
-
-class RegexURLPattern(object):
-    def __init__(self, regex, callback, default_args=None, name=None):
-        # regex is a string representing a regular expression.
-        # callback is either a string like 'foo.views.news.stories.story_detail'
-        # which represents the path to a module and a view function name, or a
-        # callable object (view).
-        self.regex = re.compile(regex, re.UNICODE)
-        if callable(callback):
-            self._callback = callback
-        else:
-            self._callback = None
-            self._callback_str = callback
-        self.default_args = default_args or {}
-        self.name = name
-
-    def __repr__(self):
-        return '<%s %s %s>' % (self.__class__.__name__, self.name, self.regex.pattern)
-
-    def add_prefix(self, prefix):
-        """
-        Adds the prefix string to a string-based callback.
-        """
-        if not prefix or not hasattr(self, '_callback_str'):
-            return
-        self._callback_str = prefix + '.' + self._callback_str
-
-    def resolve(self, path):
-        match = self.regex.search(path)
-        if match:
-            # If there are any named groups, use those as kwargs, ignoring
-            # non-named groups. Otherwise, pass all non-named arguments as
-            # positional arguments.
-            kwargs = match.groupdict()
-            if kwargs:
-                args = ()
-            else:
-                args = match.groups()
-            # In both cases, pass any extra_kwargs as **kwargs.
-            kwargs.update(self.default_args)
-
-            return self.callback, args, kwargs
-
-    def _get_callback(self):
-        if self._callback is not None:
-            return self._callback
-        try:
-            self._callback = get_callable(self._callback_str)
-        except ImportError, e:
-            mod_name, _ = get_mod_func(self._callback_str)
-            raise ViewDoesNotExist, "Could not import %s. Error was: %s" % (mod_name, str(e))
-        except AttributeError, e:
-            mod_name, func_name = get_mod_func(self._callback_str)
-            raise ViewDoesNotExist, "Tried %s in module %s. Error was: %s" % (func_name, mod_name, str(e))
-        return self._callback
-    callback = property(_get_callback)
-
-    def reverse(self, viewname, *args, **kwargs):
-        mod_name, func_name = get_mod_func(viewname)
-        try:
-            lookup_view = getattr(__import__(mod_name, {}, {}, ['']), func_name)
-        except (ImportError, AttributeError):
-            raise NoReverseMatch
-        if lookup_view != self.callback:
-            raise NoReverseMatch
-        return self.reverse_helper(*args, **kwargs)
-
-    def reverse_helper(self, *args, **kwargs):
-        return reverse_helper(self.regex, *args, **kwargs)
-
-class RegexURLResolver(object):
-    def __init__(self, regex, urlconf_name, default_kwargs=None):
-        # regex is a string representing a regular expression.
-        # urlconf_name is a string representing the module containing urlconfs.
-        self.regex = re.compile(regex, re.UNICODE)
-        self.urlconf_name = urlconf_name
-        self.callback = None
-        self.default_kwargs = default_kwargs or {}
-        self._reverse_dict = {}
-
-    def __repr__(self):
-        return '<%s %s %s>' % (self.__class__.__name__, self.urlconf_name, self.regex.pattern)
-
-    def _get_reverse_dict(self):
-        if not self._reverse_dict and hasattr(self.urlconf_module, 'urlpatterns'):
-            for pattern in reversed(self.urlconf_module.urlpatterns):
-                if isinstance(pattern, RegexURLResolver):
-                    for key, value in pattern.reverse_dict.iteritems():
-                        self._reverse_dict[key] = (pattern,) + value
-                else:
-                    self._reverse_dict[pattern.callback] = (pattern,)
-                    self._reverse_dict[pattern.name] = (pattern,)
-        return self._reverse_dict
-    reverse_dict = property(_get_reverse_dict)
-
-    def resolve(self, path):
-        tried = []
-        match = self.regex.search(path)
-        if match:
-            new_path = path[match.end():]
-            for pattern in self.urlconf_module.urlpatterns:
-                try:
-                    sub_match = pattern.resolve(new_path)
-                except Resolver404, e:
-                    tried.extend([(pattern.regex.pattern + '   ' + t) for t in e.args[0]['tried']])
-                else:
-                    if sub_match:
-                        sub_match_dict = dict([(smart_str(k), v) for k, v in match.groupdict().items()])
-                        sub_match_dict.update(self.default_kwargs)
-                        for k, v in sub_match[2].iteritems():
-                            sub_match_dict[smart_str(k)] = v
-                        return sub_match[0], sub_match[1], sub_match_dict
-                    tried.append(pattern.regex.pattern)
-            raise Resolver404, {'tried': tried, 'path': new_path}
-
-    def _get_urlconf_module(self):
-        try:
-            return self._urlconf_module
-        except AttributeError:
-            try:
-                self._urlconf_module = __import__(self.urlconf_name, {}, {}, [''])
-            except Exception, e:
-                # Either an invalid urlconf_name, such as "foo.bar.", or some
-                # kind of problem during the actual import.
-                raise ImproperlyConfigured, "Error while importing URLconf %r: %s" % (self.urlconf_name, e)
-            return self._urlconf_module
-    urlconf_module = property(_get_urlconf_module)
-
-    def _get_url_patterns(self):
-        return self.urlconf_module.urlpatterns
-    url_patterns = property(_get_url_patterns)
-
-    def _resolve_special(self, view_type):
-        callback = getattr(self.urlconf_module, 'handler%s' % view_type)
-        mod_name, func_name = get_mod_func(callback)
-        try:
-            return getattr(__import__(mod_name, {}, {}, ['']), func_name), {}
-        except (ImportError, AttributeError), e:
-            raise ViewDoesNotExist, "Tried %s. Error was: %s" % (callback, str(e))
-
-    def resolve404(self):
-        return self._resolve_special('404')
-
-    def resolve500(self):
-        return self._resolve_special('500')
-
-    def reverse(self, lookup_view, *args, **kwargs):
-        try:
-            lookup_view = get_callable(lookup_view, True)
-        except (ImportError, AttributeError):
-            raise NoReverseMatch("'%s' is not a callable." % lookup_view)
-        if lookup_view in self.reverse_dict:
-            return u''.join([reverse_helper(part.regex, *args, **kwargs) for part in self.reverse_dict[lookup_view]])
-        raise NoReverseMatch("Reverse for '%s' not found." % lookup_view)
-
-    def reverse_helper(self, lookup_view, *args, **kwargs):
-        sub_match = self.reverse(lookup_view, *args, **kwargs)
-        result = reverse_helper(self.regex, *args, **kwargs)
-        return result + sub_match
-
-def resolve(path, urlconf=None):
-    return get_resolver(urlconf).resolve(path)
-
-def reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None):
-    args = args or []
-    kwargs = kwargs or {}
-    if prefix is None:
-        prefix = get_script_prefix()
-    return iri_to_uri(u'%s%s' % (prefix, get_resolver(urlconf).reverse(viewname,
-            *args, **kwargs)))
-
-def clear_url_caches():
-    global _resolver_cache
-    global _callable_cache
-    _resolver_cache.clear()
-    _callable_cache.clear()
-
-def set_script_prefix(prefix):
-    """
-    Sets the script prefix for the current thread.
-    """
-    if not prefix.endswith('/'):
-        prefix += '/'
-    _prefixes[currentThread()] = prefix
-
-def get_script_prefix():
-    """
-    Returns the currently active script prefix. Useful for client code that
-    wishes to construct their own URLs manually (although accessing the request
-    instance is normally going to be a lot cleaner).
-    """
-    return _prefixes.get(currentThread(), u'/')
-
diff --git a/webapp/django/core/validators.py b/webapp/django/core/validators.py
deleted file mode 100644
index f94db40..0000000
--- a/webapp/django/core/validators.py
+++ /dev/null
@@ -1,598 +0,0 @@
-"""
-A library of validators that return None and raise ValidationError when the
-provided data isn't valid.
-
-Validators may be callable classes, and they may have an 'always_test'
-attribute. If an 'always_test' attribute exists (regardless of value), the
-validator will *always* be run, regardless of whether its associated
-form field is required.
-"""
-
-import urllib2
-import re
-try:
-    from decimal import Decimal, DecimalException
-except ImportError:
-    from django.utils._decimal import Decimal, DecimalException    # Python 2.3
-
-from django.conf import settings
-from django.utils.translation import ugettext as _, ugettext_lazy, ungettext
-from django.utils.functional import Promise, lazy
-from django.utils.encoding import force_unicode, smart_str
-
-_datere = r'\d{4}-\d{1,2}-\d{1,2}'
-_timere = r'(?:[01]?[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?'
-alnum_re = re.compile(r'^\w+$')
-alnumurl_re = re.compile(r'^[-\w/]+$')
-ansi_date_re = re.compile('^%s$' % _datere)
-ansi_time_re = re.compile('^%s$' % _timere)
-ansi_datetime_re = re.compile('^%s %s$' % (_datere, _timere))
-email_re = re.compile(
-    r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"  # dot-atom
-    r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"' # quoted-string
-    r')@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$', re.IGNORECASE)  # domain
-integer_re = re.compile(r'^-?\d+$')
-ip4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$')
-phone_re = re.compile(r'^[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}$', re.IGNORECASE)
-slug_re = re.compile(r'^[-\w]+$')
-url_re = re.compile(r'^https?://\S+$')
-
-lazy_inter = lazy(lambda a,b: force_unicode(a) % b, unicode)
-
-class ValidationError(Exception):
-    def __init__(self, message):
-        "ValidationError can be passed a string or a list."
-        if isinstance(message, list):
-            self.messages = [force_unicode(msg) for msg in message]
-        else:
-            assert isinstance(message, (basestring, Promise)), ("%s should be a string" % repr(message))
-            self.messages = [force_unicode(message)]
-
-    def __str__(self):
-        # This is needed because, without a __str__(), printing an exception
-        # instance would result in this:
-        # AttributeError: ValidationError instance has no attribute 'args'
-        # See http://www.python.org/doc/current/tut/node10.html#handling
-        return str(self.messages)
-
-class CriticalValidationError(Exception):
-    def __init__(self, message):
-        "ValidationError can be passed a string or a list."
-        if isinstance(message, list):
-            self.messages = [force_unicode(msg) for msg in message]
-        else:
-            assert isinstance(message, (basestring, Promise)), ("'%s' should be a string" % message)
-            self.messages = [force_unicode(message)]
-
-    def __str__(self):
-        return str(self.messages)
-
-def isAlphaNumeric(field_data, all_data):
-    if not alnum_re.search(field_data):
-        raise ValidationError, _("This value must contain only letters, numbers and underscores.")
-
-def isAlphaNumericURL(field_data, all_data):
-    if not alnumurl_re.search(field_data):
-        raise ValidationError, _("This value must contain only letters, numbers, underscores, dashes or slashes.")
-
-def isSlug(field_data, all_data):
-    if not slug_re.search(field_data):
-        raise ValidationError, _("This value must contain only letters, numbers, underscores or hyphens.")
-
-def isLowerCase(field_data, all_data):
-    if field_data.lower() != field_data:
-        raise ValidationError, _("Uppercase letters are not allowed here.")
-
-def isUpperCase(field_data, all_data):
-    if field_data.upper() != field_data:
-        raise ValidationError, _("Lowercase letters are not allowed here.")
-
-def isCommaSeparatedIntegerList(field_data, all_data):
-    for supposed_int in field_data.split(','):
-        try:
-            int(supposed_int)
-        except ValueError:
-            raise ValidationError, _("Enter only digits separated by commas.")
-
-def isCommaSeparatedEmailList(field_data, all_data):
-    """
-    Checks that field_data is a string of e-mail addresses separated by commas.
-    Blank field_data values will not throw a validation error, and whitespace
-    is allowed around the commas.
-    """
-    for supposed_email in field_data.split(','):
-        try:
-            isValidEmail(supposed_email.strip(), '')
-        except ValidationError:
-            raise ValidationError, _("Enter valid e-mail addresses separated by commas.")
-
-def isValidIPAddress4(field_data, all_data):
-    if not ip4_re.search(field_data):
-        raise ValidationError, _("Please enter a valid IP address.")
-
-def isNotEmpty(field_data, all_data):
-    if field_data.strip() == '':
-        raise ValidationError, _("Empty values are not allowed here.")
-
-def isOnlyDigits(field_data, all_data):
-    if not field_data.isdigit():
-        raise ValidationError, _("Non-numeric characters aren't allowed here.")
-
-def isNotOnlyDigits(field_data, all_data):
-    if field_data.isdigit():
-        raise ValidationError, _("This value can't be comprised solely of digits.")
-
-def isInteger(field_data, all_data):
-    # This differs from isOnlyDigits because this accepts the negative sign
-    if not integer_re.search(field_data):
-        raise ValidationError, _("Enter a whole number.")
-
-def isOnlyLetters(field_data, all_data):
-    if not field_data.isalpha():
-        raise ValidationError, _("Only alphabetical characters are allowed here.")
-
-def _isValidDate(date_string):
-    """
-    A helper function used by isValidANSIDate and isValidANSIDatetime to
-    check if the date is valid.  The date string is assumed to already be in
-    YYYY-MM-DD format.
-    """
-    from datetime import date
-    # Could use time.strptime here and catch errors, but datetime.date below
-    # produces much friendlier error messages.
-    year, month, day = map(int, date_string.split('-'))
-    try:
-        date(year, month, day)
-    except ValueError, e:
-        msg = _('Invalid date: %s') % _(str(e))
-        raise ValidationError, msg
-
-def isValidANSIDate(field_data, all_data):
-    if not ansi_date_re.search(field_data):
-        raise ValidationError, _('Enter a valid date in YYYY-MM-DD format.')
-    _isValidDate(field_data)
-
-def isValidANSITime(field_data, all_data):
-    if not ansi_time_re.search(field_data):
-        raise ValidationError, _('Enter a valid time in HH:MM format.')
-
-def isValidANSIDatetime(field_data, all_data):
-    if not ansi_datetime_re.search(field_data):
-        raise ValidationError, _('Enter a valid date/time in YYYY-MM-DD HH:MM format.')
-    _isValidDate(field_data.split()[0])
-
-def isValidEmail(field_data, all_data):
-    if not email_re.search(field_data):
-        raise ValidationError, _('Enter a valid e-mail address.')
-
-def isValidImage(field_data, all_data):
-    """
-    Checks that the file-upload field data contains a valid image (GIF, JPG,
-    PNG, possibly others -- whatever the Python Imaging Library supports).
-    """
-    from PIL import Image
-    from cStringIO import StringIO
-    try:
-        content = field_data.read()
-    except TypeError:
-        raise ValidationError, _("No file was submitted. Check the encoding type on the form.")
-    try:
-        # load() is the only method that can spot a truncated JPEG,
-        #  but it cannot be called sanely after verify()
-        trial_image = Image.open(StringIO(content))
-        trial_image.load()
-        # verify() is the only method that can spot a corrupt PNG,
-        #  but it must be called immediately after the constructor
-        trial_image = Image.open(StringIO(content))
-        trial_image.verify()
-    except Exception: # Python Imaging Library doesn't recognize it as an image
-        raise ValidationError, _("Upload a valid image. The file you uploaded was either not an image or a corrupted image.")
-
-def isValidImageURL(field_data, all_data):
-    uc = URLMimeTypeCheck(('image/jpeg', 'image/gif', 'image/png'))
-    try:
-        uc(field_data, all_data)
-    except URLMimeTypeCheck.InvalidContentType:
-        raise ValidationError, _("The URL %s does not point to a valid image.") % field_data
-
-def isValidPhone(field_data, all_data):
-    if not phone_re.search(field_data):
-        raise ValidationError, _('Phone numbers must be in XXX-XXX-XXXX format. "%s" is invalid.') % field_data
-
-def isValidQuicktimeVideoURL(field_data, all_data):
-    "Checks that the given URL is a video that can be played by QuickTime (qt, mpeg)"
-    uc = URLMimeTypeCheck(('video/quicktime', 'video/mpeg',))
-    try:
-        uc(field_data, all_data)
-    except URLMimeTypeCheck.InvalidContentType:
-        raise ValidationError, _("The URL %s does not point to a valid QuickTime video.") % field_data
-
-def isValidURL(field_data, all_data):
-    if not url_re.search(field_data):
-        raise ValidationError, _("A valid URL is required.")
-
-def isValidHTML(field_data, all_data):
-    import urllib, urllib2
-    try:
-        u = urllib2.urlopen('http://validator.w3.org/check', urllib.urlencode({'fragment': field_data, 'output': 'xml'}))
-    except:
-        # Validator or Internet connection is unavailable. Fail silently.
-        return
-    html_is_valid = (u.headers.get('x-w3c-validator-status', 'Invalid') == 'Valid')
-    if html_is_valid:
-        return
-    from xml.dom.minidom import parseString
-    error_messages = [e.firstChild.wholeText for e in parseString(u.read()).getElementsByTagName('messages')[0].getElementsByTagName('msg')]
-    raise ValidationError, _("Valid HTML is required. Specific errors are:\n%s") % "\n".join(error_messages)
-
-def isWellFormedXml(field_data, all_data):
-    from xml.dom.minidom import parseString
-    try:
-        parseString(field_data)
-    except Exception, e: # Naked except because we're not sure what will be thrown
-        raise ValidationError, _("Badly formed XML: %s") % str(e)
-
-def isWellFormedXmlFragment(field_data, all_data):
-    isWellFormedXml('<root>%s</root>' % field_data, all_data)
-
-def isExistingURL(field_data, all_data):
-    try:
-        headers = {
-            "Accept" : "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
-            "Accept-Language" : "en-us,en;q=0.5",
-            "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
-            "Connection" : "close",
-            "User-Agent": settings.URL_VALIDATOR_USER_AGENT
-            }
-        req = urllib2.Request(field_data,None, headers)
-        u = urllib2.urlopen(req)
-    except ValueError:
-        raise ValidationError, _("Invalid URL: %s") % field_data
-    except urllib2.HTTPError, e:
-        # 401s are valid; they just mean authorization is required.
-        # 301 and 302 are redirects; they just mean look somewhere else.
-        if str(e.code) not in ('401','301','302'):
-            raise ValidationError, _("The URL %s is a broken link.") % field_data
-    except: # urllib2.URLError, httplib.InvalidURL, etc.
-        raise ValidationError, _("The URL %s is a broken link.") % field_data
-
-def isValidUSState(field_data, all_data):
-    "Checks that the given string is a valid two-letter U.S. state abbreviation"
-    states = ['AA', 'AE', 'AK', 'AL', 'AP', 'AR', 'AS', 'AZ', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'FM', 'GA', 'GU', 'HI', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME', 'MH', 'MI', 'MN', 'MO', 'MP', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'PR', 'PW', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VA', 'VI', 'VT', 'WA', 'WI', 'WV', 'WY']
-    if field_data.upper() not in states:
-        raise ValidationError, _("Enter a valid U.S. state abbreviation.")
-
-def hasNoProfanities(field_data, all_data):
-    """
-    Checks that the given string has no profanities in it. This does a simple
-    check for whether each profanity exists within the string, so 'fuck' will
-    catch 'motherfucker' as well. Raises a ValidationError such as:
-        Watch your mouth! The words "f--k" and "s--t" are not allowed here.
-    """
-    field_data = field_data.lower() # normalize
-    words_seen = [w for w in settings.PROFANITIES_LIST if w in field_data]
-    if words_seen:
-        from django.utils.text import get_text_list
-        plural = len(words_seen)
-        raise ValidationError, ungettext("Watch your mouth! The word %s is not allowed here.",
-            "Watch your mouth! The words %s are not allowed here.", plural) % \
-            get_text_list(['"%s%s%s"' % (i[0], '-'*(len(i)-2), i[-1]) for i in words_seen], _('and'))
-
-class AlwaysMatchesOtherField(object):
-    def __init__(self, other_field_name, error_message=None):
-        self.other = other_field_name
-        self.error_message = error_message or lazy_inter(ugettext_lazy("This field must match the '%s' field."), self.other)
-        self.always_test = True
-
-    def __call__(self, field_data, all_data):
-        if field_data != all_data[self.other]:
-            raise ValidationError, self.error_message
-
-class ValidateIfOtherFieldEquals(object):
-    def __init__(self, other_field, other_value, validator_list):
-        self.other_field, self.other_value = other_field, other_value
-        self.validator_list = validator_list
-        self.always_test = True
-
-    def __call__(self, field_data, all_data):
-        if self.other_field in all_data and all_data[self.other_field] == self.other_value:
-            for v in self.validator_list:
-                v(field_data, all_data)
-
-class RequiredIfOtherFieldNotGiven(object):
-    def __init__(self, other_field_name, error_message=ugettext_lazy("Please enter something for at least one field.")):
-        self.other, self.error_message = other_field_name, error_message
-        self.always_test = True
-
-    def __call__(self, field_data, all_data):
-        if not all_data.get(self.other, False) and not field_data:
-            raise ValidationError, self.error_message
-
-class RequiredIfOtherFieldsGiven(object):
-    def __init__(self, other_field_names, error_message=ugettext_lazy("Please enter both fields or leave them both empty.")):
-        self.other, self.error_message = other_field_names, error_message
-        self.always_test = True
-
-    def __call__(self, field_data, all_data):
-        for field in self.other:
-            if all_data.get(field, False) and not field_data:
-                raise ValidationError, self.error_message
-
-class RequiredIfOtherFieldGiven(RequiredIfOtherFieldsGiven):
-    "Like RequiredIfOtherFieldsGiven, but takes a single field name instead of a list."
-    def __init__(self, other_field_name, error_message=ugettext_lazy("Please enter both fields or leave them both empty.")):
-        RequiredIfOtherFieldsGiven.__init__(self, [other_field_name], error_message)
-
-class RequiredIfOtherFieldEquals(object):
-    def __init__(self, other_field, other_value, error_message=None, other_label=None):
-        self.other_field = other_field
-        self.other_value = other_value
-        other_label = other_label or other_value
-        self.error_message = error_message or lazy_inter(ugettext_lazy("This field must be given if %(field)s is %(value)s"), {
-            'field': other_field, 'value': other_label})
-        self.always_test = True
-
-    def __call__(self, field_data, all_data):
-        if self.other_field in all_data and all_data[self.other_field] == self.other_value and not field_data:
-            raise ValidationError(self.error_message)
-
-class RequiredIfOtherFieldDoesNotEqual(object):
-    def __init__(self, other_field, other_value, other_label=None, error_message=None):
-        self.other_field = other_field
-        self.other_value = other_value
-        other_label = other_label or other_value
-        self.error_message = error_message or lazy_inter(ugettext_lazy("This field must be given if %(field)s is not %(value)s"), {
-            'field': other_field, 'value': other_label})
-        self.always_test = True
-
-    def __call__(self, field_data, all_data):
-        if self.other_field in all_data and all_data[self.other_field] != self.other_value and not field_data:
-            raise ValidationError(self.error_message)
-
-class IsLessThanOtherField(object):
-    def __init__(self, other_field_name, error_message):
-        self.other, self.error_message = other_field_name, error_message
-
-    def __call__(self, field_data, all_data):
-        if field_data > all_data[self.other]:
-            raise ValidationError, self.error_message
-
-class UniqueAmongstFieldsWithPrefix(object):
-    def __init__(self, field_name, prefix, error_message):
-        self.field_name, self.prefix = field_name, prefix
-        self.error_message = error_message or ugettext_lazy("Duplicate values are not allowed.")
-
-    def __call__(self, field_data, all_data):
-        for field_name, value in all_data.items():
-            if field_name != self.field_name and value == field_data:
-                raise ValidationError, self.error_message
-
-class NumberIsInRange(object):
-    """
-    Validator that tests if a value is in a range (inclusive).
-    """
-    def __init__(self, lower=None, upper=None, error_message=''):
-        self.lower, self.upper = lower, upper
-        if not error_message:
-            if lower and upper:
-                 self.error_message = _("This value must be between %(lower)s and %(upper)s.") % {'lower': lower, 'upper': upper}
-            elif lower:
-                self.error_message = _("This value must be at least %s.") % lower
-            elif upper:
-                self.error_message = _("This value must be no more than %s.") % upper
-        else:
-            self.error_message = error_message
-
-    def __call__(self, field_data, all_data):
-        # Try to make the value numeric. If this fails, we assume another
-        # validator will catch the problem.
-        try:
-            val = float(field_data)
-        except ValueError:
-            return
-
-        # Now validate
-        if self.lower and self.upper and (val < self.lower or val > self.upper):
-            raise ValidationError(self.error_message)
-        elif self.lower and val < self.lower:
-            raise ValidationError(self.error_message)
-        elif self.upper and val > self.upper:
-            raise ValidationError(self.error_message)
-
-class IsAPowerOf(object):
-    """
-    Usage: If you create an instance of the IsPowerOf validator:
-        v = IsAPowerOf(2)
-
-    The following calls will succeed:
-        v(4, None)
-        v(8, None)
-        v(16, None)
-
-    But this call:
-        v(17, None)
-    will raise "django.core.validators.ValidationError: ['This value must be a power of 2.']"
-    """
-    def __init__(self, power_of):
-        self.power_of = power_of
-
-    def __call__(self, field_data, all_data):
-        from math import log
-        val = log(int(field_data)) / log(self.power_of)
-        if val != int(val):
-            raise ValidationError, _("This value must be a power of %s.") % self.power_of
-
-class IsValidDecimal(object):
-    def __init__(self, max_digits, decimal_places):
-        self.max_digits, self.decimal_places = max_digits, decimal_places
-
-    def __call__(self, field_data, all_data):
-        try:
-            val = Decimal(field_data)
-        except DecimalException:
-            raise ValidationError, _("Please enter a valid decimal number.")
-
-        pieces = str(val).lstrip("-").split('.')
-        decimals = (len(pieces) == 2) and len(pieces[1]) or 0
-        digits = len(pieces[0])
-
-        if digits + decimals > self.max_digits:
-            raise ValidationError, ungettext("Please enter a valid decimal number with at most %s total digit.",
-                "Please enter a valid decimal number with at most %s total digits.", self.max_digits) % self.max_digits
-        if digits > (self.max_digits - self.decimal_places):
-            raise ValidationError, ungettext( "Please enter a valid decimal number with a whole part of at most %s digit.",
-                "Please enter a valid decimal number with a whole part of at most %s digits.", str(self.max_digits-self.decimal_places)) % str(self.max_digits-self.decimal_places)
-        if decimals > self.decimal_places:
-            raise ValidationError, ungettext("Please enter a valid decimal number with at most %s decimal place.",
-                "Please enter a valid decimal number with at most %s decimal places.", self.decimal_places) % self.decimal_places
-
-def isValidFloat(field_data, all_data):
-    data = smart_str(field_data)
-    try:
-        float(data)
-    except ValueError:
-        raise ValidationError, _("Please enter a valid floating point number.")
-
-class HasAllowableSize(object):
-    """
-    Checks that the file-upload field data is a certain size. min_size and
-    max_size are measurements in bytes.
-    """
-    def __init__(self, min_size=None, max_size=None, min_error_message=None, max_error_message=None):
-        self.min_size, self.max_size = min_size, max_size
-        self.min_error_message = min_error_message or lazy_inter(ugettext_lazy("Make sure your uploaded file is at least %s bytes big."), min_size)
-        self.max_error_message = max_error_message or lazy_inter(ugettext_lazy("Make sure your uploaded file is at most %s bytes big."), max_size)
-
-    def __call__(self, field_data, all_data):
-        try:
-            content = field_data.read()
-        except TypeError:
-            raise ValidationError, ugettext_lazy("No file was submitted. Check the encoding type on the form.")
-        if self.min_size is not None and len(content) < self.min_size:
-            raise ValidationError, self.min_error_message
-        if self.max_size is not None and len(content) > self.max_size:
-            raise ValidationError, self.max_error_message
-
-class MatchesRegularExpression(object):
-    """
-    Checks that the field matches the given regular-expression. The regex
-    should be in string format, not already compiled.
-    """
-    def __init__(self, regexp, error_message=ugettext_lazy("The format for this field is wrong.")):
-        self.regexp = re.compile(regexp)
-        self.error_message = error_message
-
-    def __call__(self, field_data, all_data):
-        if not self.regexp.search(field_data):
-            raise ValidationError(self.error_message)
-
-class AnyValidator(object):
-    """
-    This validator tries all given validators. If any one of them succeeds,
-    validation passes. If none of them succeeds, the given message is thrown
-    as a validation error. The message is rather unspecific, so it's best to
-    specify one on instantiation.
-    """
-    def __init__(self, validator_list=None, error_message=ugettext_lazy("This field is invalid.")):
-        if validator_list is None: validator_list = []
-        self.validator_list = validator_list
-        self.error_message = error_message
-        for v in validator_list:
-            if hasattr(v, 'always_test'):
-                self.always_test = True
-
-    def __call__(self, field_data, all_data):
-        for v in self.validator_list:
-            try:
-                v(field_data, all_data)
-                return
-            except ValidationError, e:
-                pass
-        raise ValidationError(self.error_message)
-
-class URLMimeTypeCheck(object):
-    "Checks that the provided URL points to a document with a listed mime type"
-    class CouldNotRetrieve(ValidationError):
-        pass
-    class InvalidContentType(ValidationError):
-        pass
-
-    def __init__(self, mime_type_list):
-        self.mime_type_list = mime_type_list
-
-    def __call__(self, field_data, all_data):
-        import urllib2
-        try:
-            isValidURL(field_data, all_data)
-        except ValidationError:
-            raise
-        try:
-            info = urllib2.urlopen(field_data).info()
-        except (urllib2.HTTPError, urllib2.URLError):
-            raise URLMimeTypeCheck.CouldNotRetrieve, _("Could not retrieve anything from %s.") % field_data
-        content_type = info['content-type']
-        if content_type not in self.mime_type_list:
-            raise URLMimeTypeCheck.InvalidContentType, _("The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'.") % {
-                'url': field_data, 'contenttype': content_type}
-
-class RelaxNGCompact(object):
-    "Validate against a Relax NG compact schema"
-    def __init__(self, schema_path, additional_root_element=None):
-        self.schema_path = schema_path
-        self.additional_root_element = additional_root_element
-
-    def __call__(self, field_data, all_data):
-        import os, tempfile
-        if self.additional_root_element:
-            field_data = '<%(are)s>%(data)s\n</%(are)s>' % {
-                'are': self.additional_root_element,
-                'data': field_data
-            }
-        filename = tempfile.mktemp() # Insecure, but nothing else worked
-        fp = open(filename, 'w')
-        fp.write(field_data)
-        fp.close()
-        if not os.path.exists(settings.JING_PATH):
-            raise Exception, "%s not found!" % settings.JING_PATH
-        p = os.popen('%s -c %s %s' % (settings.JING_PATH, self.schema_path, filename))
-        errors = [line.strip() for line in p.readlines()]
-        p.close()
-        os.unlink(filename)
-        display_errors = []
-        lines = field_data.split('\n')
-        for error in errors:
-            ignored, line, level, message = error.split(':', 3)
-            # Scrape the Jing error messages to reword them more nicely.
-            m = re.search(r'Expected "(.*?)" to terminate element starting on line (\d+)', message)
-            if m:
-                display_errors.append(_('Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with "%(start)s".)') % \
-                    {'tag':m.group(1).replace('/', ''), 'line':m.group(2), 'start':lines[int(m.group(2)) - 1][:30]})
-                continue
-            if message.strip() == 'text not allowed here':
-                display_errors.append(_('Some text starting on line %(line)s is not allowed in that context. (Line starts with "%(start)s".)') % \
-                    {'line':line, 'start':lines[int(line) - 1][:30]})
-                continue
-            m = re.search(r'\s*attribute "(.*?)" not allowed at this point; ignored', message)
-            if m:
-                display_errors.append(_('"%(attr)s" on line %(line)s is an invalid attribute. (Line starts with "%(start)s".)') % \
-                    {'attr':m.group(1), 'line':line, 'start':lines[int(line) - 1][:30]})
-                continue
-            m = re.search(r'\s*unknown element "(.*?)"', message)
-            if m:
-                display_errors.append(_('"<%(tag)s>" on line %(line)s is an invalid tag. (Line starts with "%(start)s".)') % \
-                    {'tag':m.group(1), 'line':line, 'start':lines[int(line) - 1][:30]})
-                continue
-            if message.strip() == 'required attributes missing':
-                display_errors.append(_('A tag on line %(line)s is missing one or more required attributes. (Line starts with "%(start)s".)') % \
-                    {'line':line, 'start':lines[int(line) - 1][:30]})
-                continue
-            m = re.search(r'\s*bad value for attribute "(.*?)"', message)
-            if m:
-                display_errors.append(_('The "%(attr)s" attribute on line %(line)s has an invalid value. (Line starts with "%(start)s".)') % \
-                    {'attr':m.group(1), 'line':line, 'start':lines[int(line) - 1][:30]})
-                continue
-            # Failing all those checks, use the default error message.
-            display_error = 'Line %s: %s [%s]' % (line, message, level.strip())
-            display_errors.append(display_error)
-        if len(display_errors) > 0:
-            raise ValidationError, display_errors
diff --git a/webapp/django/core/xheaders.py b/webapp/django/core/xheaders.py
deleted file mode 100644
index 34335f1..0000000
--- a/webapp/django/core/xheaders.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""
-Pages in Django can are served up with custom HTTP headers containing useful
-information about those pages -- namely, the content type and object ID.
-
-This module contains utility functions for retrieving and doing interesting
-things with these special "X-Headers" (so called because the HTTP spec demands
-that custom headers are prefixed with "X-").
-
-Next time you're at slashdot.org, watch out for X-Fry and X-Bender. :)
-"""
-
-def populate_xheaders(request, response, model, object_id):
-    """
-    Adds the "X-Object-Type" and "X-Object-Id" headers to the given
-    HttpResponse according to the given model and object_id -- but only if the
-    given HttpRequest object has an IP address within the INTERNAL_IPS setting
-    or if the request is from a logged in staff member.
-    """
-    from django.conf import settings
-    if (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS
-            or (hasattr(request, 'user') and request.user.is_authenticated()
-                and request.user.is_staff)):
-        response['X-Object-Type'] = "%s.%s" % (model._meta.app_label, model._meta.object_name.lower())
-        response['X-Object-Id'] = str(object_id)
diff --git a/webapp/django/db/__init__.py b/webapp/django/db/__init__.py
deleted file mode 100644
index d15fd32..0000000
--- a/webapp/django/db/__init__.py
+++ /dev/null
@@ -1,63 +0,0 @@
-import os
-from django.conf import settings
-from django.core import signals
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.functional import curry
-
-__all__ = ('backend', 'connection', 'DatabaseError', 'IntegrityError')
-
-if not settings.DATABASE_ENGINE:
-    settings.DATABASE_ENGINE = 'dummy'
-
-try:
-    # Most of the time, the database backend will be one of the official
-    # backends that ships with Django, so look there first.
-    _import_path = 'django.db.backends.'
-    backend = __import__('%s%s.base' % (_import_path, settings.DATABASE_ENGINE), {}, {}, [''])
-except ImportError, e:
-    # If the import failed, we might be looking for a database backend
-    # distributed external to Django. So we'll try that next.
-    try:
-        _import_path = ''
-        backend = __import__('%s.base' % settings.DATABASE_ENGINE, {}, {}, [''])
-    except ImportError, e_user:
-        # The database backend wasn't found. Display a helpful error message
-        # listing all possible (built-in) database backends.
-        backend_dir = os.path.join(__path__[0], 'backends')
-        try:
-            available_backends = [f for f in os.listdir(backend_dir) if not f.startswith('_') and not f.startswith('.') and not f.endswith('.py') and not f.endswith('.pyc')]
-        except EnvironmentError:
-            available_backends = []
-        available_backends.sort()
-        if settings.DATABASE_ENGINE not in available_backends:
-            raise ImproperlyConfigured, "%r isn't an available database backend. Available options are: %s\nError was: %s" % \
-                (settings.DATABASE_ENGINE, ", ".join(map(repr, available_backends)), e_user)
-        else:
-            raise # If there's some other error, this must be an error in Django itself.
-
-# Convenient aliases for backend bits.
-connection = backend.DatabaseWrapper(**settings.DATABASE_OPTIONS)
-DatabaseError = backend.DatabaseError
-IntegrityError = backend.IntegrityError
-
-# Register an event that closes the database connection
-# when a Django request is finished.
-def close_connection(**kwargs):
-    connection.close()
-signals.request_finished.connect(close_connection)
-
-# Register an event that resets connection.queries
-# when a Django request is started.
-def reset_queries(**kwargs):
-    connection.queries = []
-signals.request_started.connect(reset_queries)
-
-# Register an event that rolls back the connection
-# when a Django request has an exception.
-def _rollback_on_exception(**kwargs):
-    from django.db import transaction
-    try:
-        transaction.rollback_unless_managed()
-    except DatabaseError:
-        pass
-signals.got_request_exception.connect(_rollback_on_exception)
diff --git a/webapp/django/db/backends/__init__.py b/webapp/django/db/backends/__init__.py
deleted file mode 100644
index 074fa0e..0000000
--- a/webapp/django/db/backends/__init__.py
+++ /dev/null
@@ -1,448 +0,0 @@
-try:
-    # Only exists in Python 2.4+
-    from threading import local
-except ImportError:
-    # Import copy of _thread_local.py from Python 2.4
-    from django.utils._threading_local import local
-try:
-    set
-except NameError:
-    # Python 2.3 compat
-    from sets import Set as set
-
-from django.db.backends import util
-from django.utils import datetime_safe
-
-class BaseDatabaseWrapper(local):
-    """
-    Represents a database connection.
-    """
-    ops = None
-    def __init__(self, **kwargs):
-        self.connection = None
-        self.queries = []
-        self.options = kwargs
-
-    def _commit(self):
-        if self.connection is not None:
-            return self.connection.commit()
-
-    def _rollback(self):
-        if self.connection is not None:
-            return self.connection.rollback()
-
-    def _savepoint(self, sid):
-        if not self.features.uses_savepoints:
-            return
-        self.connection.cursor().execute(self.ops.savepoint_create_sql(sid))
-
-    def _savepoint_rollback(self, sid):
-        if not self.features.uses_savepoints:
-            return
-        self.connection.cursor().execute(self.ops.savepoint_rollback_sql(sid))
-
-    def _savepoint_commit(self, sid):
-        if not self.features.uses_savepoints:
-            return
-        self.connection.cursor().execute(self.ops.savepoint_commit_sql(sid))
-
-    def close(self):
-        if self.connection is not None:
-            self.connection.close()
-            self.connection = None
-
-    def cursor(self):
-        from django.conf import settings
-        cursor = self._cursor(settings)
-        if settings.DEBUG:
-            return self.make_debug_cursor(cursor)
-        return cursor
-
-    def make_debug_cursor(self, cursor):
-        return util.CursorDebugWrapper(cursor, self)
-
-class BaseDatabaseFeatures(object):
-    # True if django.db.backend.utils.typecast_timestamp is used on values
-    # returned from dates() calls.
-    needs_datetime_string_cast = True
-    uses_custom_query_class = False
-    empty_fetchmany_value = []
-    update_can_self_select = True
-    interprets_empty_strings_as_nulls = False
-    can_use_chunked_reads = True
-    uses_savepoints = False
-
-class BaseDatabaseOperations(object):
-    """
-    This class encapsulates all backend-specific differences, such as the way
-    a backend performs ordering or calculates the ID of a recently-inserted
-    row.
-    """
-    def autoinc_sql(self, table, column):
-        """
-        Returns any SQL needed to support auto-incrementing primary keys, or
-        None if no SQL is necessary.
-
-        This SQL is executed when a table is created.
-        """
-        return None
-
-    def date_extract_sql(self, lookup_type, field_name):
-        """
-        Given a lookup_type of 'year', 'month' or 'day', returns the SQL that
-        extracts a value from the given date field field_name.
-        """
-        raise NotImplementedError()
-
-    def date_trunc_sql(self, lookup_type, field_name):
-        """
-        Given a lookup_type of 'year', 'month' or 'day', returns the SQL that
-        truncates the given date field field_name to a DATE object with only
-        the given specificity.
-        """
-        raise NotImplementedError()
-
-    def datetime_cast_sql(self):
-        """
-        Returns the SQL necessary to cast a datetime value so that it will be
-        retrieved as a Python datetime object instead of a string.
-
-        This SQL should include a '%s' in place of the field's name.
-        """
-        return "%s"
-
-    def deferrable_sql(self):
-        """
-        Returns the SQL necessary to make a constraint "initially deferred"
-        during a CREATE TABLE statement.
-        """
-        return ''
-
-    def drop_foreignkey_sql(self):
-        """
-        Returns the SQL command that drops a foreign key.
-        """
-        return "DROP CONSTRAINT"
-
-    def drop_sequence_sql(self, table):
-        """
-        Returns any SQL necessary to drop the sequence for the given table.
-        Returns None if no SQL is necessary.
-        """
-        return None
-
-    def field_cast_sql(self, db_type):
-        """
-        Given a column type (e.g. 'BLOB', 'VARCHAR'), returns the SQL necessary
-        to cast it before using it in a WHERE statement. Note that the
-        resulting string should contain a '%s' placeholder for the column being
-        searched against.
-        """
-        return '%s'
-
-    def fulltext_search_sql(self, field_name):
-        """
-        Returns the SQL WHERE clause to use in order to perform a full-text
-        search of the given field_name. Note that the resulting string should
-        contain a '%s' placeholder for the value being searched against.
-        """
-        raise NotImplementedError('Full-text search is not implemented for this database backend')
-
-    def last_executed_query(self, cursor, sql, params):
-        """
-        Returns a string of the query last executed by the given cursor, with
-        placeholders replaced with actual values.
-
-        `sql` is the raw query containing placeholders, and `params` is the
-        sequence of parameters. These are used by default, but this method
-        exists for database backends to provide a better implementation
-        according to their own quoting schemes.
-        """
-        from django.utils.encoding import smart_unicode, force_unicode
-
-        # Convert params to contain Unicode values.
-        to_unicode = lambda s: force_unicode(s, strings_only=True)
-        if isinstance(params, (list, tuple)):
-            u_params = tuple([to_unicode(val) for val in params])
-        else:
-            u_params = dict([(to_unicode(k), to_unicode(v)) for k, v in params.items()])
-
-        return smart_unicode(sql) % u_params
-
-    def last_insert_id(self, cursor, table_name, pk_name):
-        """
-        Given a cursor object that has just performed an INSERT statement into
-        a table that has an auto-incrementing ID, returns the newly created ID.
-
-        This method also receives the table name and the name of the primary-key
-        column.
-        """
-        return cursor.lastrowid
-
-    def lookup_cast(self, lookup_type):
-        """
-        Returns the string to use in a query when performing lookups
-        ("contains", "like", etc). The resulting string should contain a '%s'
-        placeholder for the column being searched against.
-        """
-        return "%s"
-
-    def max_name_length(self):
-        """
-        Returns the maximum length of table and column names, or None if there
-        is no limit.
-        """
-        return None
-
-    def no_limit_value(self):
-        """
-        Returns the value to use for the LIMIT when we are wanting "LIMIT
-        infinity". Returns None if the limit clause can be omitted in this case.
-        """
-        # FIXME: API may need to change once Oracle backend is repaired.
-        raise NotImplementedError()
-
-    def pk_default_value(self):
-        """
-        Returns the value to use during an INSERT statement to specify that
-        the field should use its default value.
-        """
-        return 'DEFAULT'
-
-    def query_class(self, DefaultQueryClass):
-        """
-        Given the default Query class, returns a custom Query class
-        to use for this backend. Returns None if a custom Query isn't used.
-        See also BaseDatabaseFeatures.uses_custom_query_class, which regulates
-        whether this method is called at all.
-        """
-        return None
-
-    def quote_name(self, name):
-        """
-        Returns a quoted version of the given table, index or column name. Does
-        not quote the given name if it's already been quoted.
-        """
-        raise NotImplementedError()
-
-    def random_function_sql(self):
-        """
-        Returns a SQL expression that returns a random value.
-        """
-        return 'RANDOM()'
-
-    def regex_lookup(self, lookup_type):
-        """
-        Returns the string to use in a query when performing regular expression
-        lookups (using "regex" or "iregex"). The resulting string should
-        contain a '%s' placeholder for the column being searched against.
-
-        If the feature is not supported (or part of it is not supported), a
-        NotImplementedError exception can be raised.
-        """
-        raise NotImplementedError
-
-    def savepoint_create_sql(self, sid):
-        """
-        Returns the SQL for starting a new savepoint. Only required if the
-        "uses_savepoints" feature is True. The "sid" parameter is a string
-        for the savepoint id.
-        """
-        raise NotImplementedError
-
-    def savepoint_commit_sql(self, sid):
-        """
-        Returns the SQL for committing the given savepoint.
-        """
-        raise NotImplementedError
-
-    def savepoint_rollback_sql(self, sid):
-        """
-        Returns the SQL for rolling back the given savepoint.
-        """
-        raise NotImplementedError
-
-    def sql_flush(self, style, tables, sequences):
-        """
-        Returns a list of SQL statements required to remove all data from
-        the given database tables (without actually removing the tables
-        themselves).
-
-        The `style` argument is a Style object as returned by either
-        color_style() or no_style() in django.core.management.color.
-        """
-        raise NotImplementedError()
-
-    def sequence_reset_sql(self, style, model_list):
-        """
-        Returns a list of the SQL statements required to reset sequences for
-        the given models.
-
-        The `style` argument is a Style object as returned by either
-        color_style() or no_style() in django.core.management.color.
-        """
-        return [] # No sequence reset required by default.
-
-    def start_transaction_sql(self):
-        """
-        Returns the SQL statement required to start a transaction.
-        """
-        return "BEGIN;"
-
-    def sql_for_tablespace(self, tablespace, inline=False):
-        """
-        Returns the SQL that will be appended to tables or rows to define
-        a tablespace. Returns '' if the backend doesn't use tablespaces.
-        """
-        return ''
-
-    def prep_for_like_query(self, x):
-        """Prepares a value for use in a LIKE query."""
-        from django.utils.encoding import smart_unicode
-        return smart_unicode(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_")
-
-    def value_to_db_date(self, value):
-        """
-        Transform a date value to an object compatible with what is expected
-        by the backend driver for date columns.
-        """
-        if value is None:
-            return None
-        return datetime_safe.new_date(value).strftime('%Y-%m-%d')
-
-    def value_to_db_datetime(self, value):
-        """
-        Transform a datetime value to an object compatible with what is expected
-        by the backend driver for datetime columns.
-        """
-        if value is None:
-            return None
-        return unicode(value)
-
-    def value_to_db_time(self, value):
-        """
-        Transform a datetime value to an object compatible with what is expected
-        by the backend driver for time columns.
-        """
-        if value is None:
-            return None
-        return unicode(value)
-
-    def value_to_db_decimal(self, value, max_digits, decimal_places):
-        """
-        Transform a decimal.Decimal value to an object compatible with what is
-        expected by the backend driver for decimal (numeric) columns.
-        """
-        if value is None:
-            return None
-        return util.format_number(value, max_digits, decimal_places)
-
-    def year_lookup_bounds(self, value):
-        """
-        Returns a two-elements list with the lower and upper bound to be used
-        with a BETWEEN operator to query a field value using a year lookup
-
-        `value` is an int, containing the looked-up year.
-        """
-        first = '%s-01-01 00:00:00'
-        second = '%s-12-31 23:59:59.999999'
-        return [first % value, second % value]
-
-    def year_lookup_bounds_for_date_field(self, value):
-        """
-        Returns a two-elements list with the lower and upper bound to be used
-        with a BETWEEN operator to query a DateField value using a year lookup
-
-        `value` is an int, containing the looked-up year.
-
-        By default, it just calls `self.year_lookup_bounds`. Some backends need
-        this hook because on their DB date fields can't be compared to values
-        which include a time part.
-        """
-        return self.year_lookup_bounds(value)
-
-class BaseDatabaseIntrospection(object):
-    """
-    This class encapsulates all backend-specific introspection utilities
-    """
-    data_types_reverse = {}
-
-    def __init__(self, connection):
-        self.connection = connection
-
-    def table_name_converter(self, name):
-        """Apply a conversion to the name for the purposes of comparison.
-
-        The default table name converter is for case sensitive comparison.
-        """
-        return name
-
-    def table_names(self):
-        "Returns a list of names of all tables that exist in the database."
-        cursor = self.connection.cursor()
-        return self.get_table_list(cursor)
-
-    def django_table_names(self, only_existing=False):
-        """
-        Returns a list of all table names that have associated Django models and
-        are in INSTALLED_APPS.
-
-        If only_existing is True, the resulting list will only include the tables
-        that actually exist in the database.
-        """
-        from django.db import models
-        tables = set()
-        for app in models.get_apps():
-            for model in models.get_models(app):
-                tables.add(model._meta.db_table)
-                tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many])
-        if only_existing:
-            tables = [t for t in tables if t in self.table_names()]
-        return tables
-
-    def installed_models(self, tables):
-        "Returns a set of all models represented by the provided list of table names."
-        from django.db import models
-        all_models = []
-        for app in models.get_apps():
-            for model in models.get_models(app):
-                all_models.append(model)
-        return set([m for m in all_models
-            if self.table_name_converter(m._meta.db_table) in map(self.table_name_converter, tables)
-        ])
-
-    def sequence_list(self):
-        "Returns a list of information about all DB sequences for all models in all apps."
-        from django.db import models
-
-        apps = models.get_apps()
-        sequence_list = []
-
-        for app in apps:
-            for model in models.get_models(app):
-                for f in model._meta.local_fields:
-                    if isinstance(f, models.AutoField):
-                        sequence_list.append({'table': model._meta.db_table, 'column': f.column})
-                        break # Only one AutoField is allowed per model, so don't bother continuing.
-
-                for f in model._meta.local_many_to_many:
-                    sequence_list.append({'table': f.m2m_db_table(), 'column': None})
-
-        return sequence_list
-
-class BaseDatabaseClient(object):
-    """
-    This class encapsualtes all backend-specific methods for opening a
-    client shell
-    """
-    def runshell(self):
-        raise NotImplementedError()
-
-class BaseDatabaseValidation(object):
-    """
-    This class encapsualtes all backend-specific model validation.
-    """
-    def validate_field(self, errors, opts, f):
-        "By default, there is no backend-specific validation"
-        pass
-
diff --git a/webapp/django/db/backends/creation.py b/webapp/django/db/backends/creation.py
deleted file mode 100644
index e746035..0000000
--- a/webapp/django/db/backends/creation.py
+++ /dev/null
@@ -1,404 +0,0 @@
-import sys
-import time
-try:
-    set
-except NameError:
-    # Python 2.3 compat
-    from sets import Set as set
-
-from django.conf import settings
-from django.core.management import call_command
-
-# The prefix to put on the default database name when creating
-# the test database.
-TEST_DATABASE_PREFIX = 'test_'
-
-class BaseDatabaseCreation(object):
-    """
-    This class encapsulates all backend-specific differences that pertain to
-    database *creation*, such as the column types to use for particular Django
-    Fields, the SQL used to create and destroy tables, and the creation and
-    destruction of test databases.
-    """
-    data_types = {}
-
-    def __init__(self, connection):
-        self.connection = connection
-
-    def sql_create_model(self, model, style, known_models=set()):
-        """
-        Returns the SQL required to create a single model, as a tuple of:
-            (list_of_sql, pending_references_dict)
-        """
-        from django.db import models
-
-        opts = model._meta
-        final_output = []
-        table_output = []
-        pending_references = {}
-        qn = self.connection.ops.quote_name
-        for f in opts.local_fields:
-            col_type = f.db_type()
-            tablespace = f.db_tablespace or opts.db_tablespace
-            if col_type is None:
-                # Skip ManyToManyFields, because they're not represented as
-                # database columns in this table.
-                continue
-            # Make the definition (e.g. 'foo VARCHAR(30)') for this field.
-            field_output = [style.SQL_FIELD(qn(f.column)),
-                style.SQL_COLTYPE(col_type)]
-            field_output.append(style.SQL_KEYWORD('%sNULL' % (not f.null and 'NOT ' or '')))
-            if f.primary_key:
-                field_output.append(style.SQL_KEYWORD('PRIMARY KEY'))
-            elif f.unique:
-                field_output.append(style.SQL_KEYWORD('UNIQUE'))
-            if tablespace and f.unique:
-                # We must specify the index tablespace inline, because we
-                # won't be generating a CREATE INDEX statement for this field.
-                field_output.append(self.connection.ops.tablespace_sql(tablespace, inline=True))
-            if f.rel:
-                ref_output, pending = self.sql_for_inline_foreign_key_references(f, known_models, style)
-                if pending:
-                    pr = pending_references.setdefault(f.rel.to, []).append((model, f))
-                else:
-                    field_output.extend(ref_output)
-            table_output.append(' '.join(field_output))
-        if opts.order_with_respect_to:
-            table_output.append(style.SQL_FIELD(qn('_order')) + ' ' + \
-                style.SQL_COLTYPE(models.IntegerField().db_type()) + ' ' + \
-                style.SQL_KEYWORD('NULL'))
-        for field_constraints in opts.unique_together:
-            table_output.append(style.SQL_KEYWORD('UNIQUE') + ' (%s)' % \
-                ", ".join([style.SQL_FIELD(qn(opts.get_field(f).column)) for f in field_constraints]))
-
-        full_statement = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + style.SQL_TABLE(qn(opts.db_table)) + ' (']
-        for i, line in enumerate(table_output): # Combine and add commas.
-            full_statement.append('    %s%s' % (line, i < len(table_output)-1 and ',' or ''))
-        full_statement.append(')')
-        if opts.db_tablespace:
-            full_statement.append(self.connection.ops.tablespace_sql(opts.db_tablespace))
-        full_statement.append(';')
-        final_output.append('\n'.join(full_statement))
-
-        if opts.has_auto_field:
-            # Add any extra SQL needed to support auto-incrementing primary keys.
-            auto_column = opts.auto_field.db_column or opts.auto_field.name
-            autoinc_sql = self.connection.ops.autoinc_sql(opts.db_table, auto_column)
-            if autoinc_sql:
-                for stmt in autoinc_sql:
-                    final_output.append(stmt)
-
-        return final_output, pending_references
-
-    def sql_for_inline_foreign_key_references(self, field, known_models, style):
-        "Return the SQL snippet defining the foreign key reference for a field"
-        qn = self.connection.ops.quote_name
-        if field.rel.to in known_models:
-            output = [style.SQL_KEYWORD('REFERENCES') + ' ' + \
-                style.SQL_TABLE(qn(field.rel.to._meta.db_table)) + ' (' + \
-                style.SQL_FIELD(qn(field.rel.to._meta.get_field(field.rel.field_name).column)) + ')' +
-                self.connection.ops.deferrable_sql()
-            ]
-            pending = False
-        else:
-            # We haven't yet created the table to which this field
-            # is related, so save it for later.
-            output = []
-            pending = True
-
-        return output, pending
-
-    def sql_for_pending_references(self, model, style, pending_references):
-        "Returns any ALTER TABLE statements to add constraints after the fact."
-        from django.db.backends.util import truncate_name
-
-        qn = self.connection.ops.quote_name
-        final_output = []
-        opts = model._meta
-        if model in pending_references:
-            for rel_class, f in pending_references[model]:
-                rel_opts = rel_class._meta
-                r_table = rel_opts.db_table
-                r_col = f.column
-                table = opts.db_table
-                col = opts.get_field(f.rel.field_name).column
-                # For MySQL, r_name must be unique in the first 64 characters.
-                # So we are careful with character usage here.
-                r_name = '%s_refs_%s_%x' % (r_col, col, abs(hash((r_table, table))))
-                final_output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' % \
-                    (qn(r_table), truncate_name(r_name, self.connection.ops.max_name_length()),
-                    qn(r_col), qn(table), qn(col),
-                    self.connection.ops.deferrable_sql()))
-            del pending_references[model]
-        return final_output
-
-    def sql_for_many_to_many(self, model, style):
-        "Return the CREATE TABLE statments for all the many-to-many tables defined on a model"
-        output = []
-        for f in model._meta.local_many_to_many:
-            output.extend(self.sql_for_many_to_many_field(model, f, style))
-        return output
-
-    def sql_for_many_to_many_field(self, model, f, style):
-        "Return the CREATE TABLE statements for a single m2m field"
-        from django.db import models
-        from django.db.backends.util import truncate_name
-
-        output = []
-        if f.creates_table:
-            opts = model._meta
-            qn = self.connection.ops.quote_name
-            tablespace = f.db_tablespace or opts.db_tablespace
-            if tablespace:
-                sql = self.connection.ops.tablespace_sql(tablespace, inline=True)
-                if sql:
-                    tablespace_sql = ' ' + sql
-                else:
-                    tablespace_sql = ''
-            else:
-                tablespace_sql = ''
-            table_output = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + \
-                style.SQL_TABLE(qn(f.m2m_db_table())) + ' (']
-            table_output.append('    %s %s %s%s,' %
-                (style.SQL_FIELD(qn('id')),
-                style.SQL_COLTYPE(models.AutoField(primary_key=True).db_type()),
-                style.SQL_KEYWORD('NOT NULL PRIMARY KEY'),
-                tablespace_sql))
-
-            deferred = []
-            inline_output, deferred = self.sql_for_inline_many_to_many_references(model, f, style)
-            table_output.extend(inline_output)
-
-            table_output.append('    %s (%s, %s)%s' %
-                (style.SQL_KEYWORD('UNIQUE'),
-                style.SQL_FIELD(qn(f.m2m_column_name())),
-                style.SQL_FIELD(qn(f.m2m_reverse_name())),
-                tablespace_sql))
-            table_output.append(')')
-            if opts.db_tablespace:
-                # f.db_tablespace is only for indices, so ignore its value here.
-                table_output.append(self.connection.ops.tablespace_sql(opts.db_tablespace))
-            table_output.append(';')
-            output.append('\n'.join(table_output))
-
-            for r_table, r_col, table, col in deferred:
-                r_name = '%s_refs_%s_%x' % (r_col, col,
-                        abs(hash((r_table, table))))
-                output.append(style.SQL_KEYWORD('ALTER TABLE') + ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' %
-                (qn(r_table),
-                truncate_name(r_name, self.connection.ops.max_name_length()),
-                qn(r_col), qn(table), qn(col),
-                self.connection.ops.deferrable_sql()))
-
-            # Add any extra SQL needed to support auto-incrementing PKs
-            autoinc_sql = self.connection.ops.autoinc_sql(f.m2m_db_table(), 'id')
-            if autoinc_sql:
-                for stmt in autoinc_sql:
-                    output.append(stmt)
-        return output
-
-    def sql_for_inline_many_to_many_references(self, model, field, style):
-        "Create the references to other tables required by a many-to-many table"
-        from django.db import models
-        opts = model._meta
-        qn = self.connection.ops.quote_name
-
-        table_output = [
-            '    %s %s %s %s (%s)%s,' %
-                (style.SQL_FIELD(qn(field.m2m_column_name())),
-                style.SQL_COLTYPE(models.ForeignKey(model).db_type()),
-                style.SQL_KEYWORD('NOT NULL REFERENCES'),
-                style.SQL_TABLE(qn(opts.db_table)),
-                style.SQL_FIELD(qn(opts.pk.column)),
-                self.connection.ops.deferrable_sql()),
-            '    %s %s %s %s (%s)%s,' %
-                (style.SQL_FIELD(qn(field.m2m_reverse_name())),
-                style.SQL_COLTYPE(models.ForeignKey(field.rel.to).db_type()),
-                style.SQL_KEYWORD('NOT NULL REFERENCES'),
-                style.SQL_TABLE(qn(field.rel.to._meta.db_table)),
-                style.SQL_FIELD(qn(field.rel.to._meta.pk.column)),
-                self.connection.ops.deferrable_sql())
-        ]
-        deferred = []
-
-        return table_output, deferred
-
-    def sql_indexes_for_model(self, model, style):
-        "Returns the CREATE INDEX SQL statements for a single model"
-        output = []
-        for f in model._meta.local_fields:
-            output.extend(self.sql_indexes_for_field(model, f, style))
-        return output
-
-    def sql_indexes_for_field(self, model, f, style):
-        "Return the CREATE INDEX SQL statements for a single model field"
-        if f.db_index and not f.unique:
-            qn = self.connection.ops.quote_name
-            tablespace = f.db_tablespace or model._meta.db_tablespace
-            if tablespace:
-                sql = self.connection.ops.tablespace_sql(tablespace)
-                if sql:
-                    tablespace_sql = ' ' + sql
-                else:
-                    tablespace_sql = ''
-            else:
-                tablespace_sql = ''
-            output = [style.SQL_KEYWORD('CREATE INDEX') + ' ' +
-                style.SQL_TABLE(qn('%s_%s' % (model._meta.db_table, f.column))) + ' ' +
-                style.SQL_KEYWORD('ON') + ' ' +
-                style.SQL_TABLE(qn(model._meta.db_table)) + ' ' +
-                "(%s)" % style.SQL_FIELD(qn(f.column)) +
-                "%s;" % tablespace_sql]
-        else:
-            output = []
-        return output
-
-    def sql_destroy_model(self, model, references_to_delete, style):
-        "Return the DROP TABLE and restraint dropping statements for a single model"
-        # Drop the table now
-        qn = self.connection.ops.quote_name
-        output = ['%s %s;' % (style.SQL_KEYWORD('DROP TABLE'),
-                              style.SQL_TABLE(qn(model._meta.db_table)))]
-        if model in references_to_delete:
-            output.extend(self.sql_remove_table_constraints(model, references_to_delete, style))
-
-        if model._meta.has_auto_field:
-            ds = self.connection.ops.drop_sequence_sql(model._meta.db_table)
-            if ds:
-                output.append(ds)
-        return output
-
-    def sql_remove_table_constraints(self, model, references_to_delete, style):
-        from django.db.backends.util import truncate_name
-
-        output = []
-        qn = self.connection.ops.quote_name
-        for rel_class, f in references_to_delete[model]:
-            table = rel_class._meta.db_table
-            col = f.column
-            r_table = model._meta.db_table
-            r_col = model._meta.get_field(f.rel.field_name).column
-            r_name = '%s_refs_%s_%x' % (col, r_col, abs(hash((table, r_table))))
-            output.append('%s %s %s %s;' % \
-                (style.SQL_KEYWORD('ALTER TABLE'),
-                style.SQL_TABLE(qn(table)),
-                style.SQL_KEYWORD(self.connection.ops.drop_foreignkey_sql()),
-                style.SQL_FIELD(truncate_name(r_name, self.connection.ops.max_name_length()))))
-        del references_to_delete[model]
-        return output
-
-    def sql_destroy_many_to_many(self, model, f, style):
-        "Returns the DROP TABLE statements for a single m2m field"
-        qn = self.connection.ops.quote_name
-        output = []
-        if f.creates_table:
-            output.append("%s %s;" % (style.SQL_KEYWORD('DROP TABLE'),
-                style.SQL_TABLE(qn(f.m2m_db_table()))))
-            ds = self.connection.ops.drop_sequence_sql("%s_%s" % (model._meta.db_table, f.column))
-            if ds:
-                output.append(ds)
-        return output
-
-    def create_test_db(self, verbosity=1, autoclobber=False):
-        """
-        Creates a test database, prompting the user for confirmation if the
-        database already exists. Returns the name of the test database created.
-        """
-        if verbosity >= 1:
-            print "Creating test database..."
-
-        test_database_name = self._create_test_db(verbosity, autoclobber)
-
-        self.connection.close()
-        settings.DATABASE_NAME = test_database_name
-
-        call_command('syncdb', verbosity=verbosity, interactive=False)
-
-        if settings.CACHE_BACKEND.startswith('db://'):
-            cache_name = settings.CACHE_BACKEND[len('db://'):]
-            call_command('createcachetable', cache_name)
-
-        # Get a cursor (even though we don't need one yet). This has
-        # the side effect of initializing the test database.
-        cursor = self.connection.cursor()
-
-        return test_database_name
-
-    def _create_test_db(self, verbosity, autoclobber):
-        "Internal implementation - creates the test db tables."
-        suffix = self.sql_table_creation_suffix()
-
-        if settings.TEST_DATABASE_NAME:
-            test_database_name = settings.TEST_DATABASE_NAME
-        else:
-            test_database_name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME
-
-        qn = self.connection.ops.quote_name
-
-        # Create the test database and connect to it. We need to autocommit
-        # if the database supports it because PostgreSQL doesn't allow
-        # CREATE/DROP DATABASE statements within transactions.
-        cursor = self.connection.cursor()
-        self.set_autocommit()
-        try:
-            cursor.execute("CREATE DATABASE %s %s" % (qn(test_database_name), suffix))
-        except Exception, e:
-            sys.stderr.write("Got an error creating the test database: %s\n" % e)
-            if not autoclobber:
-                confirm = raw_input("Type 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: " % test_database_name)
-            if autoclobber or confirm == 'yes':
-                try:
-                    if verbosity >= 1:
-                        print "Destroying old test database..."
-                    cursor.execute("DROP DATABASE %s" % qn(test_database_name))
-                    if verbosity >= 1:
-                        print "Creating test database..."
-                    cursor.execute("CREATE DATABASE %s %s" % (qn(test_database_name), suffix))
-                except Exception, e:
-                    sys.stderr.write("Got an error recreating the test database: %s\n" % e)
-                    sys.exit(2)
-            else:
-                print "Tests cancelled."
-                sys.exit(1)
-
-        return test_database_name
-
-    def destroy_test_db(self, old_database_name, verbosity=1):
-        """
-        Destroy a test database, prompting the user for confirmation if the
-        database already exists. Returns the name of the test database created.
-        """
-        if verbosity >= 1:
-            print "Destroying test database..."
-        self.connection.close()
-        test_database_name = settings.DATABASE_NAME
-        settings.DATABASE_NAME = old_database_name
-
-        self._destroy_test_db(test_database_name, verbosity)
-
-    def _destroy_test_db(self, test_database_name, verbosity):
-        "Internal implementation - remove the test db tables."
-        # Remove the test database to clean up after
-        # ourselves. Connect to the previous database (not the test database)
-        # to do so, because it's not allowed to delete a database while being
-        # connected to it.
-        cursor = self.connection.cursor()
-        self.set_autocommit()
-        time.sleep(1) # To avoid "database is being accessed by other users" errors.
-        cursor.execute("DROP DATABASE %s" % self.connection.ops.quote_name(test_database_name))
-        self.connection.close()
-
-    def set_autocommit(self):
-        "Make sure a connection is in autocommit mode."
-        if hasattr(self.connection.connection, "autocommit"):
-            if callable(self.connection.connection.autocommit):
-                self.connection.connection.autocommit(True)
-            else:
-                self.connection.connection.autocommit = True
-        elif hasattr(self.connection.connection, "set_isolation_level"):
-            self.connection.connection.set_isolation_level(0)
-
-    def sql_table_creation_suffix(self):
-        "SQL to append to the end of the test table creation statements"
-        return ''
-
diff --git a/webapp/django/db/backends/dummy/__init__.py b/webapp/django/db/backends/dummy/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/db/backends/dummy/__init__.py
+++ /dev/null
diff --git a/webapp/django/db/backends/dummy/base.py b/webapp/django/db/backends/dummy/base.py
deleted file mode 100644
index 530ea9c..0000000
--- a/webapp/django/db/backends/dummy/base.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
-Dummy database backend for Django.
-
-Django uses this if the DATABASE_ENGINE setting is empty (None or empty string).
-
-Each of these API functions, except connection.close(), raises
-ImproperlyConfigured.
-"""
-
-from django.core.exceptions import ImproperlyConfigured
-from django.db.backends import *
-from django.db.backends.creation import BaseDatabaseCreation
-
-def complain(*args, **kwargs):
-    raise ImproperlyConfigured, "You haven't set the DATABASE_ENGINE setting yet."
-
-def ignore(*args, **kwargs):
-    pass
-
-class DatabaseError(Exception):
-    pass
-
-class IntegrityError(DatabaseError):
-    pass
-
-class DatabaseOperations(BaseDatabaseOperations):
-    quote_name = complain
-
-class DatabaseClient(BaseDatabaseClient):
-    runshell = complain
-    
-class DatabaseIntrospection(BaseDatabaseIntrospection):
-    get_table_list = complain
-    get_table_description = complain
-    get_relations = complain
-    get_indexes = complain
-    
-class DatabaseWrapper(object):    
-    operators = {}
-    cursor = complain
-    _commit = complain
-    _rollback = ignore
-
-    def __init__(self, *args, **kwargs):
-        super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
-        self.features = BaseDatabaseFeatures()
-        self.ops = DatabaseOperations()
-        self.client = DatabaseClient()
-        self.creation = BaseDatabaseCreation(self)
-        self.introspection = DatabaseIntrospection(self)
-        self.validation = BaseDatabaseValidation()
-
-    def close(self):
-        pass
diff --git a/webapp/django/db/backends/mysql/__init__.py b/webapp/django/db/backends/mysql/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/db/backends/mysql/__init__.py
+++ /dev/null
diff --git a/webapp/django/db/backends/mysql/base.py b/webapp/django/db/backends/mysql/base.py
deleted file mode 100644
index 07fb700..0000000
--- a/webapp/django/db/backends/mysql/base.py
+++ /dev/null
@@ -1,227 +0,0 @@
-"""
-MySQL database backend for Django.
-
-Requires MySQLdb: http://sourceforge.net/projects/mysql-python
-"""
-
-import re
-
-try:
-    import MySQLdb as Database
-except ImportError, e:
-    from django.core.exceptions import ImproperlyConfigured
-    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
-
-# We want version (1, 2, 1, 'final', 2) or later. We can't just use
-# lexicographic ordering in this check because then (1, 2, 1, 'gamma')
-# inadvertently passes the version test.
-version = Database.version_info
-if (version < (1,2,1) or (version[:3] == (1, 2, 1) and
-        (len(version) < 5 or version[3] != 'final' or version[4] < 2))):
-    from django.core.exceptions import ImproperlyConfigured
-    raise ImproperlyConfigured("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__)
-
-from MySQLdb.converters import conversions
-from MySQLdb.constants import FIELD_TYPE, FLAG
-
-from django.db.backends import *
-from django.db.backends.mysql.client import DatabaseClient
-from django.db.backends.mysql.creation import DatabaseCreation
-from django.db.backends.mysql.introspection import DatabaseIntrospection
-from django.db.backends.mysql.validation import DatabaseValidation
-
-# Raise exceptions for database warnings if DEBUG is on
-from django.conf import settings
-if settings.DEBUG:
-    from warnings import filterwarnings
-    filterwarnings("error", category=Database.Warning)
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-# MySQLdb-1.2.1 supports the Python boolean type, and only uses datetime
-# module for time-related columns; older versions could have used mx.DateTime
-# or strings if there were no datetime module. However, MySQLdb still returns
-# TIME columns as timedelta -- they are more like timedelta in terms of actual
-# behavior as they are signed and include days -- and Django expects time, so
-# we still need to override that.
-django_conversions = conversions.copy()
-django_conversions.update({
-    FIELD_TYPE.TIME: util.typecast_time,
-    FIELD_TYPE.DECIMAL: util.typecast_decimal,
-    FIELD_TYPE.NEWDECIMAL: util.typecast_decimal,
-})
-
-# This should match the numerical portion of the version numbers (we can treat
-# versions like 5.0.24 and 5.0.24a as the same). Based on the list of version
-# at http://dev.mysql.com/doc/refman/4.1/en/news.html and
-# http://dev.mysql.com/doc/refman/5.0/en/news.html .
-server_version_re = re.compile(r'(\d{1,2})\.(\d{1,2})\.(\d{1,2})')
-
-# MySQLdb-1.2.1 and newer automatically makes use of SHOW WARNINGS on
-# MySQL-4.1 and newer, so the MysqlDebugWrapper is unnecessary. Since the
-# point is to raise Warnings as exceptions, this can be done with the Python
-# warning module, and this is setup when the connection is created, and the
-# standard util.CursorDebugWrapper can be used. Also, using sql_mode
-# TRADITIONAL will automatically cause most warnings to be treated as errors.
-
-class DatabaseFeatures(BaseDatabaseFeatures):
-    empty_fetchmany_value = ()
-    update_can_self_select = False
-
-class DatabaseOperations(BaseDatabaseOperations):
-    def date_extract_sql(self, lookup_type, field_name):
-        # http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
-        return "EXTRACT(%s FROM %s)" % (lookup_type.upper(), field_name)
-
-    def date_trunc_sql(self, lookup_type, field_name):
-        fields = ['year', 'month', 'day', 'hour', 'minute', 'second']
-        format = ('%%Y-', '%%m', '-%%d', ' %%H:', '%%i', ':%%s') # Use double percents to escape.
-        format_def = ('0000-', '01', '-01', ' 00:', '00', ':00')
-        try:
-            i = fields.index(lookup_type) + 1
-        except ValueError:
-            sql = field_name
-        else:
-            format_str = ''.join([f for f in format[:i]] + [f for f in format_def[i:]])
-            sql = "CAST(DATE_FORMAT(%s, '%s') AS DATETIME)" % (field_name, format_str)
-        return sql
-
-    def drop_foreignkey_sql(self):
-        return "DROP FOREIGN KEY"
-
-    def fulltext_search_sql(self, field_name):
-        return 'MATCH (%s) AGAINST (%%s IN BOOLEAN MODE)' % field_name
-
-    def no_limit_value(self):
-        # 2**64 - 1, as recommended by the MySQL documentation
-        return 18446744073709551615L
-
-    def quote_name(self, name):
-        if name.startswith("`") and name.endswith("`"):
-            return name # Quoting once is enough.
-        return "`%s`" % name
-
-    def random_function_sql(self):
-        return 'RAND()'
-
-    def sql_flush(self, style, tables, sequences):
-        # NB: The generated SQL below is specific to MySQL
-        # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements
-        # to clear all tables of all data
-        if tables:
-            sql = ['SET FOREIGN_KEY_CHECKS = 0;']
-            for table in tables:
-                sql.append('%s %s;' % (style.SQL_KEYWORD('TRUNCATE'), style.SQL_FIELD(self.quote_name(table))))
-            sql.append('SET FOREIGN_KEY_CHECKS = 1;')
-
-            # 'ALTER TABLE table AUTO_INCREMENT = 1;'... style SQL statements
-            # to reset sequence indices
-            sql.extend(["%s %s %s %s %s;" % \
-                (style.SQL_KEYWORD('ALTER'),
-                 style.SQL_KEYWORD('TABLE'),
-                 style.SQL_TABLE(self.quote_name(sequence['table'])),
-                 style.SQL_KEYWORD('AUTO_INCREMENT'),
-                 style.SQL_FIELD('= 1'),
-                ) for sequence in sequences])
-            return sql
-        else:
-            return []
-
-    def value_to_db_datetime(self, value):
-        # MySQL doesn't support microseconds
-        if value is None:
-            return None
-        return unicode(value.replace(microsecond=0))
-
-    def value_to_db_time(self, value):
-        # MySQL doesn't support microseconds
-        if value is None:
-            return None
-        return unicode(value.replace(microsecond=0))
-
-    def year_lookup_bounds(self, value):
-        # Again, no microseconds
-        first = '%s-01-01 00:00:00'
-        second = '%s-12-31 23:59:59.99'
-        return [first % value, second % value]
-
-class DatabaseWrapper(BaseDatabaseWrapper):
-
-    operators = {
-        'exact': '= %s',
-        'iexact': 'LIKE %s',
-        'contains': 'LIKE BINARY %s',
-        'icontains': 'LIKE %s',
-        'regex': 'REGEXP BINARY %s',
-        'iregex': 'REGEXP %s',
-        'gt': '> %s',
-        'gte': '>= %s',
-        'lt': '< %s',
-        'lte': '<= %s',
-        'startswith': 'LIKE BINARY %s',
-        'endswith': 'LIKE BINARY %s',
-        'istartswith': 'LIKE %s',
-        'iendswith': 'LIKE %s',
-    }
-
-    def __init__(self, **kwargs):
-        super(DatabaseWrapper, self).__init__(**kwargs)
-        self.server_version = None
-
-        self.features = DatabaseFeatures()
-        self.ops = DatabaseOperations()
-        self.client = DatabaseClient()
-        self.creation = DatabaseCreation(self)
-        self.introspection = DatabaseIntrospection(self)
-        self.validation = DatabaseValidation()
-
-    def _valid_connection(self):
-        if self.connection is not None:
-            try:
-                self.connection.ping()
-                return True
-            except DatabaseError:
-                self.connection.close()
-                self.connection = None
-        return False
-
-    def _cursor(self, settings):
-        if not self._valid_connection():
-            kwargs = {
-                'conv': django_conversions,
-                'charset': 'utf8',
-                'use_unicode': True,
-            }
-            if settings.DATABASE_USER:
-                kwargs['user'] = settings.DATABASE_USER
-            if settings.DATABASE_NAME:
-                kwargs['db'] = settings.DATABASE_NAME
-            if settings.DATABASE_PASSWORD:
-                kwargs['passwd'] = settings.DATABASE_PASSWORD
-            if settings.DATABASE_HOST.startswith('/'):
-                kwargs['unix_socket'] = settings.DATABASE_HOST
-            elif settings.DATABASE_HOST:
-                kwargs['host'] = settings.DATABASE_HOST
-            if settings.DATABASE_PORT:
-                kwargs['port'] = int(settings.DATABASE_PORT)
-            kwargs.update(self.options)
-            self.connection = Database.connect(**kwargs)
-        cursor = self.connection.cursor()
-        return cursor
-
-    def _rollback(self):
-        try:
-            BaseDatabaseWrapper._rollback(self)
-        except Database.NotSupportedError:
-            pass
-
-    def get_server_version(self):
-        if not self.server_version:
-            if not self._valid_connection():
-                self.cursor()
-            m = server_version_re.match(self.connection.get_server_info())
-            if not m:
-                raise Exception('Unable to determine MySQL version from version string %r' % self.connection.get_server_info())
-            self.server_version = tuple([int(x) for x in m.groups()])
-        return self.server_version
diff --git a/webapp/django/db/backends/mysql/client.py b/webapp/django/db/backends/mysql/client.py
deleted file mode 100644
index 2475886..0000000
--- a/webapp/django/db/backends/mysql/client.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from django.db.backends import BaseDatabaseClient
-from django.conf import settings
-import os
-
-class DatabaseClient(BaseDatabaseClient):
-    def runshell(self):
-        args = ['']
-        db = settings.DATABASE_OPTIONS.get('db', settings.DATABASE_NAME)
-        user = settings.DATABASE_OPTIONS.get('user', settings.DATABASE_USER)
-        passwd = settings.DATABASE_OPTIONS.get('passwd', settings.DATABASE_PASSWORD)
-        host = settings.DATABASE_OPTIONS.get('host', settings.DATABASE_HOST)
-        port = settings.DATABASE_OPTIONS.get('port', settings.DATABASE_PORT)
-        defaults_file = settings.DATABASE_OPTIONS.get('read_default_file')
-        # Seems to be no good way to set sql_mode with CLI
-    
-        if defaults_file:
-            args += ["--defaults-file=%s" % defaults_file]
-        if user:
-            args += ["--user=%s" % user]
-        if passwd:
-            args += ["--password=%s" % passwd]
-        if host:
-            args += ["--host=%s" % host]
-        if port:
-            args += ["--port=%s" % port]
-        if db:
-            args += [db]
-
-        os.execvp('mysql', args)
diff --git a/webapp/django/db/backends/mysql/creation.py b/webapp/django/db/backends/mysql/creation.py
deleted file mode 100644
index 96faaac..0000000
--- a/webapp/django/db/backends/mysql/creation.py
+++ /dev/null
@@ -1,68 +0,0 @@
-from django.conf import settings
-from django.db.backends.creation import BaseDatabaseCreation
-
-class DatabaseCreation(BaseDatabaseCreation):
-    # This dictionary maps Field objects to their associated MySQL column
-    # types, as strings. Column-type strings can contain format strings; they'll
-    # be interpolated against the values of Field.__dict__ before being output.
-    # If a column type is set to None, it won't be included in the output.
-    data_types = {
-        'AutoField':         'integer AUTO_INCREMENT',
-        'BooleanField':      'bool',
-        'CharField':         'varchar(%(max_length)s)',
-        'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
-        'DateField':         'date',
-        'DateTimeField':     'datetime',
-        'DecimalField':      'numeric(%(max_digits)s, %(decimal_places)s)',
-        'FileField':         'varchar(%(max_length)s)',
-        'FilePathField':     'varchar(%(max_length)s)',
-        'FloatField':        'double precision',
-        'IntegerField':      'integer',
-        'IPAddressField':    'char(15)',
-        'NullBooleanField':  'bool',
-        'OneToOneField':     'integer',
-        'PhoneNumberField':  'varchar(20)',
-        'PositiveIntegerField': 'integer UNSIGNED',
-        'PositiveSmallIntegerField': 'smallint UNSIGNED',
-        'SlugField':         'varchar(%(max_length)s)',
-        'SmallIntegerField': 'smallint',
-        'TextField':         'longtext',
-        'TimeField':         'time',
-        'USStateField':      'varchar(2)',
-    }
-
-    def sql_table_creation_suffix(self):
-        suffix = []
-        if settings.TEST_DATABASE_CHARSET:
-            suffix.append('CHARACTER SET %s' % settings.TEST_DATABASE_CHARSET)
-        if settings.TEST_DATABASE_COLLATION:
-            suffix.append('COLLATE %s' % settings.TEST_DATABASE_COLLATION)
-        return ' '.join(suffix)
-
-    def sql_for_inline_foreign_key_references(self, field, known_models, style):
-        "All inline references are pending under MySQL"
-        return [], True
-        
-    def sql_for_inline_many_to_many_references(self, model, field, style):
-        from django.db import models
-        opts = model._meta
-        qn = self.connection.ops.quote_name
-        
-        table_output = [
-            '    %s %s %s,' %
-                (style.SQL_FIELD(qn(field.m2m_column_name())),
-                style.SQL_COLTYPE(models.ForeignKey(model).db_type()),
-                style.SQL_KEYWORD('NOT NULL')),
-            '    %s %s %s,' %
-            (style.SQL_FIELD(qn(field.m2m_reverse_name())),
-            style.SQL_COLTYPE(models.ForeignKey(field.rel.to).db_type()),
-            style.SQL_KEYWORD('NOT NULL'))
-        ]
-        deferred = [
-            (field.m2m_db_table(), field.m2m_column_name(), opts.db_table,
-                opts.pk.column),
-            (field.m2m_db_table(), field.m2m_reverse_name(),
-                field.rel.to._meta.db_table, field.rel.to._meta.pk.column)
-            ]
-        return table_output, deferred
-        
\ No newline at end of file
diff --git a/webapp/django/db/backends/mysql/introspection.py b/webapp/django/db/backends/mysql/introspection.py
deleted file mode 100644
index d8d59b7..0000000
--- a/webapp/django/db/backends/mysql/introspection.py
+++ /dev/null
@@ -1,98 +0,0 @@
-from django.db.backends import BaseDatabaseIntrospection
-from MySQLdb import ProgrammingError, OperationalError
-from MySQLdb.constants import FIELD_TYPE
-import re
-
-foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)")
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
-    data_types_reverse = {
-        FIELD_TYPE.BLOB: 'TextField',
-        FIELD_TYPE.CHAR: 'CharField',
-        FIELD_TYPE.DECIMAL: 'DecimalField',
-        FIELD_TYPE.NEWDECIMAL: 'DecimalField',
-        FIELD_TYPE.DATE: 'DateField',
-        FIELD_TYPE.DATETIME: 'DateTimeField',
-        FIELD_TYPE.DOUBLE: 'FloatField',
-        FIELD_TYPE.FLOAT: 'FloatField',
-        FIELD_TYPE.INT24: 'IntegerField',
-        FIELD_TYPE.LONG: 'IntegerField',
-        FIELD_TYPE.LONGLONG: 'IntegerField',
-        FIELD_TYPE.SHORT: 'IntegerField',
-        FIELD_TYPE.STRING: 'CharField',
-        FIELD_TYPE.TIMESTAMP: 'DateTimeField',
-        FIELD_TYPE.TINY: 'IntegerField',
-        FIELD_TYPE.TINY_BLOB: 'TextField',
-        FIELD_TYPE.MEDIUM_BLOB: 'TextField',
-        FIELD_TYPE.LONG_BLOB: 'TextField',
-        FIELD_TYPE.VAR_STRING: 'CharField',
-    }
-
-    def get_table_list(self, cursor):
-        "Returns a list of table names in the current database."
-        cursor.execute("SHOW TABLES")
-        return [row[0] for row in cursor.fetchall()]
-
-    def get_table_description(self, cursor, table_name):
-        "Returns a description of the table, with the DB-API cursor.description interface."
-        cursor.execute("SELECT * FROM %s LIMIT 1" % self.connection.ops.quote_name(table_name))
-        return cursor.description
-
-    def _name_to_index(self, cursor, table_name):
-        """
-        Returns a dictionary of {field_name: field_index} for the given table.
-        Indexes are 0-based.
-        """
-        return dict([(d[0], i) for i, d in enumerate(self.get_table_description(cursor, table_name))])
-
-    def get_relations(self, cursor, table_name):
-        """
-        Returns a dictionary of {field_index: (field_index_other_table, other_table)}
-        representing all relationships to the given table. Indexes are 0-based.
-        """
-        my_field_dict = self._name_to_index(cursor, table_name)
-        constraints = []
-        relations = {}
-        try:
-            # This should work for MySQL 5.0.
-            cursor.execute("""
-                SELECT column_name, referenced_table_name, referenced_column_name
-                FROM information_schema.key_column_usage
-                WHERE table_name = %s
-                    AND table_schema = DATABASE()
-                    AND referenced_table_name IS NOT NULL
-                    AND referenced_column_name IS NOT NULL""", [table_name])
-            constraints.extend(cursor.fetchall())
-        except (ProgrammingError, OperationalError):
-            # Fall back to "SHOW CREATE TABLE", for previous MySQL versions.
-            # Go through all constraints and save the equal matches.
-            cursor.execute("SHOW CREATE TABLE %s" % self.connection.ops.quote_name(table_name))
-            for row in cursor.fetchall():
-                pos = 0
-                while True:
-                    match = foreign_key_re.search(row[1], pos)
-                    if match == None:
-                        break
-                    pos = match.end()
-                    constraints.append(match.groups())
-
-        for my_fieldname, other_table, other_field in constraints:
-            other_field_index = self._name_to_index(cursor, other_table)[other_field]
-            my_field_index = my_field_dict[my_fieldname]
-            relations[my_field_index] = (other_field_index, other_table)
-
-        return relations
-
-    def get_indexes(self, cursor, table_name):
-        """
-        Returns a dictionary of fieldname -> infodict for the given table,
-        where each infodict is in the format:
-            {'primary_key': boolean representing whether it's the primary key,
-             'unique': boolean representing whether it's a unique index}
-        """
-        cursor.execute("SHOW INDEX FROM %s" % self.connection.ops.quote_name(table_name))
-        indexes = {}
-        for row in cursor.fetchall():
-            indexes[row[4]] = {'primary_key': (row[2] == 'PRIMARY'), 'unique': not bool(row[1])}
-        return indexes
-
diff --git a/webapp/django/db/backends/mysql/validation.py b/webapp/django/db/backends/mysql/validation.py
deleted file mode 100644
index 85354a8..0000000
--- a/webapp/django/db/backends/mysql/validation.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from django.db.backends import BaseDatabaseValidation
-
-class DatabaseValidation(BaseDatabaseValidation):
-    def validate_field(self, errors, opts, f):
-        "Prior to MySQL 5.0.3, character fields could not exceed 255 characters"
-        from django.db import models
-        from django.db import connection
-        db_version = connection.get_server_version()
-        if db_version < (5, 0, 3) and isinstance(f, (models.CharField, models.CommaSeparatedIntegerField, models.SlugField)) and f.max_length > 255:
-            errors.add(opts,
-                '"%s": %s cannot have a "max_length" greater than 255 when you are using a version of MySQL prior to 5.0.3 (you are using %s).' % 
-                (f.name, f.__class__.__name__, '.'.join([str(n) for n in db_version[:3]])))
-    
\ No newline at end of file
diff --git a/webapp/django/db/backends/oracle/__init__.py b/webapp/django/db/backends/oracle/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/db/backends/oracle/__init__.py
+++ /dev/null
diff --git a/webapp/django/db/backends/oracle/base.py b/webapp/django/db/backends/oracle/base.py
deleted file mode 100644
index b8bc6d0..0000000
--- a/webapp/django/db/backends/oracle/base.py
+++ /dev/null
@@ -1,425 +0,0 @@
-"""
-Oracle database backend for Django.
-
-Requires cx_Oracle: http://www.python.net/crew/atuining/cx_Oracle/
-"""
-
-import os
-import datetime
-import time
-
-# Oracle takes client-side character set encoding from the environment.
-os.environ['NLS_LANG'] = '.UTF8'
-try:
-    import cx_Oracle as Database
-except ImportError, e:
-    from django.core.exceptions import ImproperlyConfigured
-    raise ImproperlyConfigured("Error loading cx_Oracle module: %s" % e)
-
-from django.db.backends import *
-from django.db.backends.oracle import query
-from django.db.backends.oracle.client import DatabaseClient
-from django.db.backends.oracle.creation import DatabaseCreation
-from django.db.backends.oracle.introspection import DatabaseIntrospection
-from django.utils.encoding import smart_str, force_unicode
-
-DatabaseError = Database.Error
-IntegrityError = Database.IntegrityError
-
-
-class DatabaseFeatures(BaseDatabaseFeatures):
-    empty_fetchmany_value = ()
-    needs_datetime_string_cast = False
-    uses_custom_query_class = True
-    interprets_empty_strings_as_nulls = True
-
-
-class DatabaseOperations(BaseDatabaseOperations):
-    def autoinc_sql(self, table, column):
-        # To simulate auto-incrementing primary keys in Oracle, we have to
-        # create a sequence and a trigger.
-        sq_name = get_sequence_name(table)
-        tr_name = get_trigger_name(table)
-        tbl_name = self.quote_name(table)
-        col_name = self.quote_name(column)
-        sequence_sql = """
-            DECLARE
-                i INTEGER;
-            BEGIN
-                SELECT COUNT(*) INTO i FROM USER_CATALOG
-                    WHERE TABLE_NAME = '%(sq_name)s' AND TABLE_TYPE = 'SEQUENCE';
-                IF i = 0 THEN
-                    EXECUTE IMMEDIATE 'CREATE SEQUENCE %(sq_name)s';
-                END IF;
-            END;
-            /""" % locals()
-        trigger_sql = """
-            CREATE OR REPLACE TRIGGER %(tr_name)s
-            BEFORE INSERT ON %(tbl_name)s
-            FOR EACH ROW
-            WHEN (new.%(col_name)s IS NULL)
-                BEGIN
-                    SELECT %(sq_name)s.nextval
-                    INTO :new.%(col_name)s FROM dual;
-                END;
-                /""" % locals()
-        return sequence_sql, trigger_sql
-
-    def date_extract_sql(self, lookup_type, field_name):
-        # http://download-east.oracle.com/docs/cd/B10501_01/server.920/a96540/functions42a.htm#1017163
-        return "EXTRACT(%s FROM %s)" % (lookup_type, field_name)
-
-    def date_trunc_sql(self, lookup_type, field_name):
-        # Oracle uses TRUNC() for both dates and numbers.
-        # http://download-east.oracle.com/docs/cd/B10501_01/server.920/a96540/functions155a.htm#SQLRF06151
-        if lookup_type == 'day':
-            sql = 'TRUNC(%s)' % field_name
-        else:
-            sql = "TRUNC(%s, '%s')" % (field_name, lookup_type)
-        return sql
-
-    def datetime_cast_sql(self):
-        return "TO_TIMESTAMP(%s, 'YYYY-MM-DD HH24:MI:SS.FF')"
-
-    def deferrable_sql(self):
-        return " DEFERRABLE INITIALLY DEFERRED"
-
-    def drop_sequence_sql(self, table):
-        return "DROP SEQUENCE %s;" % self.quote_name(get_sequence_name(table))
-
-    def field_cast_sql(self, db_type):
-        if db_type and db_type.endswith('LOB'):
-            return "DBMS_LOB.SUBSTR(%s)"
-        else:
-            return "%s"
-
-    def last_insert_id(self, cursor, table_name, pk_name):
-        sq_name = util.truncate_name(table_name, self.max_name_length() - 3)
-        cursor.execute('SELECT %s_sq.currval FROM dual' % sq_name)
-        return cursor.fetchone()[0]
-
-    def lookup_cast(self, lookup_type):
-        if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):
-            return "UPPER(%s)"
-        return "%s"
-
-    def max_name_length(self):
-        return 30
-
-    def query_class(self, DefaultQueryClass):
-        return query.query_class(DefaultQueryClass, Database)
-
-    def quote_name(self, name):
-        # SQL92 requires delimited (quoted) names to be case-sensitive.  When
-        # not quoted, Oracle has case-insensitive behavior for identifiers, but
-        # always defaults to uppercase.
-        # We simplify things by making Oracle identifiers always uppercase.
-        if not name.startswith('"') and not name.endswith('"'):
-            name = '"%s"' % util.truncate_name(name.upper(), self.max_name_length())
-        return name.upper()
-
-    def random_function_sql(self):
-        return "DBMS_RANDOM.RANDOM"
-
-    def regex_lookup_9(self, lookup_type):
-        raise NotImplementedError("Regexes are not supported in Oracle before version 10g.")
-
-    def regex_lookup_10(self, lookup_type):
-        if lookup_type == 'regex':
-            match_option = "'c'"
-        else:
-            match_option = "'i'"
-        return 'REGEXP_LIKE(%%s, %%s, %s)' % match_option
-
-    def regex_lookup(self, lookup_type):
-        # If regex_lookup is called before it's been initialized, then create
-        # a cursor to initialize it and recur.
-        from django.db import connection
-        connection.cursor()
-        return connection.ops.regex_lookup(lookup_type)
-
-    def sql_flush(self, style, tables, sequences):
-        # Return a list of 'TRUNCATE x;', 'TRUNCATE y;',
-        # 'TRUNCATE z;'... style SQL statements
-        if tables:
-            # Oracle does support TRUNCATE, but it seems to get us into
-            # FK referential trouble, whereas DELETE FROM table works.
-            sql = ['%s %s %s;' % \
-                    (style.SQL_KEYWORD('DELETE'),
-                     style.SQL_KEYWORD('FROM'),
-                     style.SQL_FIELD(self.quote_name(table))
-                     ) for table in tables]
-            # Since we've just deleted all the rows, running our sequence
-            # ALTER code will reset the sequence to 0.
-            for sequence_info in sequences:
-                sequence_name = get_sequence_name(sequence_info['table'])
-                table_name = self.quote_name(sequence_info['table'])
-                column_name = self.quote_name(sequence_info['column'] or 'id')
-                query = _get_sequence_reset_sql() % {'sequence': sequence_name,
-                                                     'table': table_name,
-                                                     'column': column_name}
-                sql.append(query)
-            return sql
-        else:
-            return []
-
-    def sequence_reset_sql(self, style, model_list):
-        from django.db import models
-        output = []
-        query = _get_sequence_reset_sql()
-        for model in model_list:
-            for f in model._meta.local_fields:
-                if isinstance(f, models.AutoField):
-                    table_name = self.quote_name(model._meta.db_table)
-                    sequence_name = get_sequence_name(model._meta.db_table)
-                    column_name = self.quote_name(f.column)
-                    output.append(query % {'sequence': sequence_name,
-                                           'table': table_name,
-                                           'column': column_name})
-                    break # Only one AutoField is allowed per model, so don't bother continuing.
-            for f in model._meta.many_to_many:
-                table_name = self.quote_name(f.m2m_db_table())
-                sequence_name = get_sequence_name(f.m2m_db_table())
-                column_name = self.quote_name('id')
-                output.append(query % {'sequence': sequence_name,
-                                       'table': table_name,
-                                       'column': column_name})
-        return output
-
-    def start_transaction_sql(self):
-        return ''
-
-    def tablespace_sql(self, tablespace, inline=False):
-        return "%sTABLESPACE %s" % ((inline and "USING INDEX " or ""), self.quote_name(tablespace))
-
-    def value_to_db_time(self, value):
-        if value is None:
-            return None
-        if isinstance(value, basestring):
-            return datetime.datetime(*(time.strptime(value, '%H:%M:%S')[:6]))
-        return datetime.datetime(1900, 1, 1, value.hour, value.minute,
-                                 value.second, value.microsecond)
-
-    def year_lookup_bounds_for_date_field(self, value):
-        first = '%s-01-01'
-        second = '%s-12-31'
-        return [first % value, second % value]
-
-
-class DatabaseWrapper(BaseDatabaseWrapper):
-
-    operators = {
-        'exact': '= %s',
-        'iexact': '= UPPER(%s)',
-        'contains': "LIKEC %s ESCAPE '\\'",
-        'icontains': "LIKEC UPPER(%s) ESCAPE '\\'",
-        'gt': '> %s',
-        'gte': '>= %s',
-        'lt': '< %s',
-        'lte': '<= %s',
-        'startswith': "LIKEC %s ESCAPE '\\'",
-        'endswith': "LIKEC %s ESCAPE '\\'",
-        'istartswith': "LIKEC UPPER(%s) ESCAPE '\\'",
-        'iendswith': "LIKEC UPPER(%s) ESCAPE '\\'",
-    }
-    oracle_version = None
-
-    def __init__(self, *args, **kwargs):
-        super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
-        self.features = DatabaseFeatures()
-        self.ops = DatabaseOperations()
-        self.client = DatabaseClient()
-        self.creation = DatabaseCreation(self)
-        self.introspection = DatabaseIntrospection(self)
-        self.validation = BaseDatabaseValidation()
-
-    def _valid_connection(self):
-        return self.connection is not None
-
-    def _cursor(self, settings):
-        cursor = None
-        if not self._valid_connection():
-            if len(settings.DATABASE_HOST.strip()) == 0:
-                settings.DATABASE_HOST = 'localhost'
-            if len(settings.DATABASE_PORT.strip()) != 0:
-                dsn = Database.makedsn(settings.DATABASE_HOST, int(settings.DATABASE_PORT), settings.DATABASE_NAME)
-                self.connection = Database.connect(settings.DATABASE_USER, settings.DATABASE_PASSWORD, dsn, **self.options)
-            else:
-                conn_string = "%s/%s@%s" % (settings.DATABASE_USER, settings.DATABASE_PASSWORD, settings.DATABASE_NAME)
-                self.connection = Database.connect(conn_string, **self.options)
-            cursor = FormatStylePlaceholderCursor(self.connection)
-            # Set oracle date to ansi date format.  This only needs to execute
-            # once when we create a new connection.
-            cursor.execute("ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD' "
-                           "NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF'")
-            try:
-                self.oracle_version = int(self.connection.version.split('.')[0])
-                # There's no way for the DatabaseOperations class to know the
-                # currently active Oracle version, so we do some setups here.
-                # TODO: Multi-db support will need a better solution (a way to
-                # communicate the current version).
-                if self.oracle_version <= 9:
-                    self.ops.regex_lookup = self.ops.regex_lookup_9
-                else:
-                    self.ops.regex_lookup = self.ops.regex_lookup_10
-            except ValueError:
-                pass
-            try:
-                self.connection.stmtcachesize = 20
-            except:
-                # Django docs specify cx_Oracle version 4.3.1 or higher, but
-                # stmtcachesize is available only in 4.3.2 and up.
-                pass
-        if not cursor:
-            cursor = FormatStylePlaceholderCursor(self.connection)
-        # Default arraysize of 1 is highly sub-optimal.
-        cursor.arraysize = 100
-        return cursor
-
-
-class OracleParam(object):
-    """
-    Wrapper object for formatting parameters for Oracle. If the string
-    representation of the value is large enough (greater than 4000 characters)
-    the input size needs to be set as NCLOB. Alternatively, if the parameter has
-    an `input_size` attribute, then the value of the `input_size` attribute will
-    be used instead. Otherwise, no input size will be set for the parameter when
-    executing the query.
-    """
-    def __init__(self, param, charset, strings_only=False):
-        self.smart_str = smart_str(param, charset, strings_only)
-        if hasattr(param, 'input_size'):
-            # If parameter has `input_size` attribute, use that.
-            self.input_size = param.input_size
-        elif isinstance(param, basestring) and len(param) > 4000:
-            # Mark any string parameter greater than 4000 characters as an NCLOB.
-            self.input_size = Database.NCLOB
-        else:
-            self.input_size = None
-
-
-class FormatStylePlaceholderCursor(Database.Cursor):
-    """
-    Django uses "format" (e.g. '%s') style placeholders, but Oracle uses ":var"
-    style. This fixes it -- but note that if you want to use a literal "%s" in
-    a query, you'll need to use "%%s".
-
-    We also do automatic conversion between Unicode on the Python side and
-    UTF-8 -- for talking to Oracle -- in here.
-    """
-    charset = 'utf-8'
-
-    def _format_params(self, params):
-        if isinstance(params, dict):
-            result = {}
-            for key, value in params.items():
-                result[smart_str(key, self.charset)] = OracleParam(param, self.charset)
-            return result
-        else:
-            return tuple([OracleParam(p, self.charset, True) for p in params])
-
-    def _guess_input_sizes(self, params_list):
-        if isinstance(params_list[0], dict):
-            sizes = {}
-            iterators = [params.iteritems() for params in params_list]
-        else:
-            sizes = [None] * len(params_list[0])
-            iterators = [enumerate(params) for params in params_list]
-        for iterator in iterators:
-            for key, value in iterator:
-                if value.input_size: sizes[key] = value.input_size
-        if isinstance(sizes, dict):
-            self.setinputsizes(**sizes)
-        else:
-            self.setinputsizes(*sizes)
-
-    def _param_generator(self, params):
-        if isinstance(params, dict):
-            return dict([(k, p.smart_str) for k, p in params.iteritems()])
-        else:
-            return [p.smart_str for p in params]
-
-    def execute(self, query, params=None):
-        if params is None:
-            params = []
-        else:
-            params = self._format_params(params)
-        args = [(':arg%d' % i) for i in range(len(params))]
-        # cx_Oracle wants no trailing ';' for SQL statements.  For PL/SQL, it
-        # it does want a trailing ';' but not a trailing '/'.  However, these
-        # characters must be included in the original query in case the query
-        # is being passed to SQL*Plus.
-        if query.endswith(';') or query.endswith('/'):
-            query = query[:-1]
-        query = smart_str(query, self.charset) % tuple(args)
-        self._guess_input_sizes([params])
-        return Database.Cursor.execute(self, query, self._param_generator(params))
-
-    def executemany(self, query, params=None):
-        try:
-          args = [(':arg%d' % i) for i in range(len(params[0]))]
-        except (IndexError, TypeError):
-          # No params given, nothing to do
-          return None
-        # cx_Oracle wants no trailing ';' for SQL statements.  For PL/SQL, it
-        # it does want a trailing ';' but not a trailing '/'.  However, these
-        # characters must be included in the original query in case the query
-        # is being passed to SQL*Plus.
-        if query.endswith(';') or query.endswith('/'):
-            query = query[:-1]
-        query = smart_str(query, self.charset) % tuple(args)
-        formatted = [self._format_params(i) for i in params]
-        self._guess_input_sizes(formatted)
-        return Database.Cursor.executemany(self, query, [self._param_generator(p) for p in formatted])
-
-    def fetchone(self):
-        row = Database.Cursor.fetchone(self)
-        if row is None:
-            return row
-        return tuple([to_unicode(e) for e in row])
-
-    def fetchmany(self, size=None):
-        if size is None:
-            size = self.arraysize
-        return tuple([tuple([to_unicode(e) for e in r]) for r in Database.Cursor.fetchmany(self, size)])
-
-    def fetchall(self):
-        return tuple([tuple([to_unicode(e) for e in r]) for r in Database.Cursor.fetchall(self)])
-
-def to_unicode(s):
-    """
-    Convert strings to Unicode objects (and return all other data types
-    unchanged).
-    """
-    if isinstance(s, basestring):
-        return force_unicode(s)
-    return s
-
-def _get_sequence_reset_sql():
-    # TODO: colorize this SQL code with style.SQL_KEYWORD(), etc.
-    return """
-        DECLARE
-            startvalue integer;
-            cval integer;
-        BEGIN
-            LOCK TABLE %(table)s IN SHARE MODE;
-            SELECT NVL(MAX(%(column)s), 0) INTO startvalue FROM %(table)s;
-            SELECT %(sequence)s.nextval INTO cval FROM dual;
-            cval := startvalue - cval;
-            IF cval != 0 THEN
-                EXECUTE IMMEDIATE 'ALTER SEQUENCE %(sequence)s MINVALUE 0 INCREMENT BY '||cval;
-                SELECT %(sequence)s.nextval INTO cval FROM dual;
-                EXECUTE IMMEDIATE 'ALTER SEQUENCE %(sequence)s INCREMENT BY 1';
-            END IF;
-            COMMIT;
-        END;
-        /"""
-
-def get_sequence_name(table):
-    name_length = DatabaseOperations().max_name_length() - 3
-    return '%s_SQ' % util.truncate_name(table, name_length).upper()
-
-def get_trigger_name(table):
-    name_length = DatabaseOperations().max_name_length() - 3
-    return '%s_TR' % util.truncate_name(table, name_length).upper()
diff --git a/webapp/django/db/backends/oracle/client.py b/webapp/django/db/backends/oracle/client.py
deleted file mode 100644
index 77fc9b9..0000000
--- a/webapp/django/db/backends/oracle/client.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from django.db.backends import BaseDatabaseClient
-from django.conf import settings
-import os
-
-class DatabaseClient(BaseDatabaseClient):
-    def runshell(self):
-        dsn = settings.DATABASE_USER
-        if settings.DATABASE_PASSWORD:
-            dsn += "/%s" % settings.DATABASE_PASSWORD
-        if settings.DATABASE_NAME:
-            dsn += "@%s" % settings.DATABASE_NAME
-        args = ["sqlplus", "-L", dsn]
-        os.execvp("sqlplus", args)
diff --git a/webapp/django/db/backends/oracle/creation.py b/webapp/django/db/backends/oracle/creation.py
deleted file mode 100644
index 99c1b11..0000000
--- a/webapp/django/db/backends/oracle/creation.py
+++ /dev/null
@@ -1,291 +0,0 @@
-import sys, time
-from django.conf import settings
-from django.core import management
-from django.db.backends.creation import BaseDatabaseCreation
-
-TEST_DATABASE_PREFIX = 'test_'
-PASSWORD = 'Im_a_lumberjack'
-
-class DatabaseCreation(BaseDatabaseCreation):
-    # This dictionary maps Field objects to their associated Oracle column
-    # types, as strings. Column-type strings can contain format strings; they'll
-    # be interpolated against the values of Field.__dict__ before being output.
-    # If a column type is set to None, it won't be included in the output.
-    #
-    # Any format strings starting with "qn_" are quoted before being used in the
-    # output (the "qn_" prefix is stripped before the lookup is performed.
-
-    data_types = {
-        'AutoField':                    'NUMBER(11)',
-        'BooleanField':                 'NUMBER(1) CHECK (%(qn_column)s IN (0,1))',
-        'CharField':                    'NVARCHAR2(%(max_length)s)',
-        'CommaSeparatedIntegerField':   'VARCHAR2(%(max_length)s)',
-        'DateField':                    'DATE',
-        'DateTimeField':                'TIMESTAMP',
-        'DecimalField':                 'NUMBER(%(max_digits)s, %(decimal_places)s)',
-        'FileField':                    'NVARCHAR2(%(max_length)s)',
-        'FilePathField':                'NVARCHAR2(%(max_length)s)',
-        'FloatField':                   'DOUBLE PRECISION',
-        'IntegerField':                 'NUMBER(11)',
-        'IPAddressField':               'VARCHAR2(15)',
-        'NullBooleanField':             'NUMBER(1) CHECK ((%(qn_column)s IN (0,1)) OR (%(qn_column)s IS NULL))',
-        'OneToOneField':                'NUMBER(11)',
-        'PhoneNumberField':             'VARCHAR2(20)',
-        'PositiveIntegerField':         'NUMBER(11) CHECK (%(qn_column)s >= 0)',
-        'PositiveSmallIntegerField':    'NUMBER(11) CHECK (%(qn_column)s >= 0)',
-        'SlugField':                    'NVARCHAR2(50)',
-        'SmallIntegerField':            'NUMBER(11)',
-        'TextField':                    'NCLOB',
-        'TimeField':                    'TIMESTAMP',
-        'URLField':                     'VARCHAR2(%(max_length)s)',
-        'USStateField':                 'CHAR(2)',
-    }
-
-    remember = {}
-
-    def _create_test_db(self, verbosity=1, autoclobber=False):
-        TEST_DATABASE_NAME = self._test_database_name(settings)
-        TEST_DATABASE_USER = self._test_database_user(settings)
-        TEST_DATABASE_PASSWD = self._test_database_passwd(settings)
-        TEST_DATABASE_TBLSPACE = self._test_database_tblspace(settings)
-        TEST_DATABASE_TBLSPACE_TMP = self._test_database_tblspace_tmp(settings)
-
-        parameters = {
-            'dbname': TEST_DATABASE_NAME,
-            'user': TEST_DATABASE_USER,
-            'password': TEST_DATABASE_PASSWD,
-            'tblspace': TEST_DATABASE_TBLSPACE,
-            'tblspace_temp': TEST_DATABASE_TBLSPACE_TMP,
-        }
-
-        self.remember['user'] = settings.DATABASE_USER
-        self.remember['passwd'] = settings.DATABASE_PASSWORD
-
-        cursor = self.connection.cursor()
-        if self._test_database_create(settings):
-            if verbosity >= 1:
-                print 'Creating test database...'
-            try:
-                self._execute_test_db_creation(cursor, parameters, verbosity)
-            except Exception, e:
-                sys.stderr.write("Got an error creating the test database: %s\n" % e)
-                if not autoclobber:
-                    confirm = raw_input("It appears the test database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % TEST_DATABASE_NAME)
-                if autoclobber or confirm == 'yes':
-                    try:
-                        if verbosity >= 1:
-                            print "Destroying old test database..."
-                        self._execute_test_db_destruction(cursor, parameters, verbosity)
-                        if verbosity >= 1:
-                            print "Creating test database..."
-                        self._execute_test_db_creation(cursor, parameters, verbosity)
-                    except Exception, e:
-                        sys.stderr.write("Got an error recreating the test database: %s\n" % e)
-                        sys.exit(2)
-                else:
-                    print "Tests cancelled."
-                    sys.exit(1)
-
-        if self._test_user_create(settings):
-            if verbosity >= 1:
-                print "Creating test user..."
-            try:
-                self._create_test_user(cursor, parameters, verbosity)
-            except Exception, e:
-                sys.stderr.write("Got an error creating the test user: %s\n" % e)
-                if not autoclobber:
-                    confirm = raw_input("It appears the test user, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % TEST_DATABASE_USER)
-                if autoclobber or confirm == 'yes':
-                    try:
-                        if verbosity >= 1:
-                            print "Destroying old test user..."
-                        self._destroy_test_user(cursor, parameters, verbosity)
-                        if verbosity >= 1:
-                            print "Creating test user..."
-                        self._create_test_user(cursor, parameters, verbosity)
-                    except Exception, e:
-                        sys.stderr.write("Got an error recreating the test user: %s\n" % e)
-                        sys.exit(2)
-                else:
-                    print "Tests cancelled."
-                    sys.exit(1)
-
-        settings.DATABASE_USER = TEST_DATABASE_USER
-        settings.DATABASE_PASSWORD = TEST_DATABASE_PASSWD
-
-        return settings.DATABASE_NAME
-
-    def _destroy_test_db(self, test_database_name, verbosity=1):
-        """
-        Destroy a test database, prompting the user for confirmation if the
-        database already exists. Returns the name of the test database created.
-        """
-        TEST_DATABASE_NAME = self._test_database_name(settings)
-        TEST_DATABASE_USER = self._test_database_user(settings)
-        TEST_DATABASE_PASSWD = self._test_database_passwd(settings)
-        TEST_DATABASE_TBLSPACE = self._test_database_tblspace(settings)
-        TEST_DATABASE_TBLSPACE_TMP = self._test_database_tblspace_tmp(settings)
-
-        settings.DATABASE_USER = self.remember['user']
-        settings.DATABASE_PASSWORD = self.remember['passwd']
-
-        parameters = {
-            'dbname': TEST_DATABASE_NAME,
-            'user': TEST_DATABASE_USER,
-            'password': TEST_DATABASE_PASSWD,
-            'tblspace': TEST_DATABASE_TBLSPACE,
-            'tblspace_temp': TEST_DATABASE_TBLSPACE_TMP,
-        }
-
-        self.remember['user'] = settings.DATABASE_USER
-        self.remember['passwd'] = settings.DATABASE_PASSWORD
-
-        cursor = self.connection.cursor()
-        time.sleep(1) # To avoid "database is being accessed by other users" errors.
-        if self._test_user_create(settings):
-            if verbosity >= 1:
-                print 'Destroying test user...'
-            self._destroy_test_user(cursor, parameters, verbosity)
-        if self._test_database_create(settings):
-            if verbosity >= 1:
-                print 'Destroying test database tables...'
-            self._execute_test_db_destruction(cursor, parameters, verbosity)
-        self.connection.close()
-
-    def _execute_test_db_creation(self, cursor, parameters, verbosity):
-        if verbosity >= 2:
-            print "_create_test_db(): dbname = %s" % parameters['dbname']
-        statements = [
-            """CREATE TABLESPACE %(tblspace)s
-               DATAFILE '%(tblspace)s.dbf' SIZE 20M
-               REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M
-            """,
-            """CREATE TEMPORARY TABLESPACE %(tblspace_temp)s
-               TEMPFILE '%(tblspace_temp)s.dbf' SIZE 20M
-               REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M
-            """,
-        ]
-        self._execute_statements(cursor, statements, parameters, verbosity)
-
-    def _create_test_user(self, cursor, parameters, verbosity):
-        if verbosity >= 2:
-            print "_create_test_user(): username = %s" % parameters['user']
-        statements = [
-            """CREATE USER %(user)s
-               IDENTIFIED BY %(password)s
-               DEFAULT TABLESPACE %(tblspace)s
-               TEMPORARY TABLESPACE %(tblspace_temp)s
-            """,
-            """GRANT CONNECT, RESOURCE TO %(user)s""",
-        ]
-        self._execute_statements(cursor, statements, parameters, verbosity)
-
-    def _execute_test_db_destruction(self, cursor, parameters, verbosity):
-        if verbosity >= 2:
-            print "_execute_test_db_destruction(): dbname=%s" % parameters['dbname']
-        statements = [
-            'DROP TABLESPACE %(tblspace)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',
-            'DROP TABLESPACE %(tblspace_temp)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',
-            ]
-        self._execute_statements(cursor, statements, parameters, verbosity)
-
-    def _destroy_test_user(self, cursor, parameters, verbosity):
-        if verbosity >= 2:
-            print "_destroy_test_user(): user=%s" % parameters['user']
-            print "Be patient.  This can take some time..."
-        statements = [
-            'DROP USER %(user)s CASCADE',
-        ]
-        self._execute_statements(cursor, statements, parameters, verbosity)
-
-    def _execute_statements(self, cursor, statements, parameters, verbosity):
-        for template in statements:
-            stmt = template % parameters
-            if verbosity >= 2:
-                print stmt
-            try:
-                cursor.execute(stmt)
-            except Exception, err:
-                sys.stderr.write("Failed (%s)\n" % (err))
-                raise
-
-    def _test_database_name(self, settings):
-        name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME
-        try:
-            if settings.TEST_DATABASE_NAME:
-                name = settings.TEST_DATABASE_NAME
-        except AttributeError:
-            pass
-        except:
-            raise
-        return name
-
-    def _test_database_create(self, settings):
-        name = True
-        try:
-            if settings.TEST_DATABASE_CREATE:
-                name = True
-            else:
-                name = False
-        except AttributeError:
-            pass
-        except:
-            raise
-        return name
-
-    def _test_user_create(self, settings):
-        name = True
-        try:
-            if settings.TEST_USER_CREATE:
-                name = True
-            else:
-                name = False
-        except AttributeError:
-            pass
-        except:
-            raise
-        return name
-
-    def _test_database_user(self, ettings):
-        name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME
-        try:
-            if settings.TEST_DATABASE_USER:
-                name = settings.TEST_DATABASE_USER
-        except AttributeError:
-            pass
-        except:
-            raise
-        return name
-
-    def _test_database_passwd(self, settings):
-        name = PASSWORD
-        try:
-            if settings.TEST_DATABASE_PASSWD:
-                name = settings.TEST_DATABASE_PASSWD
-        except AttributeError:
-            pass
-        except:
-            raise
-        return name
-
-    def _test_database_tblspace(self, settings):
-        name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME
-        try:
-            if settings.TEST_DATABASE_TBLSPACE:
-                name = settings.TEST_DATABASE_TBLSPACE
-        except AttributeError:
-            pass
-        except:
-            raise
-        return name
-
-    def _test_database_tblspace_tmp(self, settings):
-        name = TEST_DATABASE_PREFIX + settings.DATABASE_NAME + '_temp'
-        try:
-            if settings.TEST_DATABASE_TBLSPACE_TMP:
-                name = settings.TEST_DATABASE_TBLSPACE_TMP
-        except AttributeError:
-            pass
-        except:
-            raise
-        return name
diff --git a/webapp/django/db/backends/oracle/introspection.py b/webapp/django/db/backends/oracle/introspection.py
deleted file mode 100644
index 890e30a..0000000
--- a/webapp/django/db/backends/oracle/introspection.py
+++ /dev/null
@@ -1,103 +0,0 @@
-from django.db.backends import BaseDatabaseIntrospection
-import cx_Oracle
-import re
-
-foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)")
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
-    # Maps type objects to Django Field types.
-    data_types_reverse = {
-        cx_Oracle.CLOB: 'TextField',
-        cx_Oracle.DATETIME: 'DateTimeField',
-        cx_Oracle.FIXED_CHAR: 'CharField',
-        cx_Oracle.NCLOB: 'TextField',
-        cx_Oracle.NUMBER: 'DecimalField',
-        cx_Oracle.STRING: 'CharField',
-        cx_Oracle.TIMESTAMP: 'DateTimeField',
-    }
-
-    def get_table_list(self, cursor):
-        "Returns a list of table names in the current database."
-        cursor.execute("SELECT TABLE_NAME FROM USER_TABLES")
-        return [row[0].upper() for row in cursor.fetchall()]
-
-    def get_table_description(self, cursor, table_name):
-        "Returns a description of the table, with the DB-API cursor.description interface."
-        cursor.execute("SELECT * FROM %s WHERE ROWNUM < 2" % self.connection.ops.quote_name(table_name))
-        return cursor.description
-
-    def table_name_converter(self, name):
-        "Table name comparison is case insensitive under Oracle"
-        return name.upper()
-        
-    def _name_to_index(self, cursor, table_name):
-        """
-        Returns a dictionary of {field_name: field_index} for the given table.
-        Indexes are 0-based.
-        """
-        return dict([(d[0], i) for i, d in enumerate(self.get_table_description(cursor, table_name))])
-
-    def get_relations(self, cursor, table_name):
-        """
-        Returns a dictionary of {field_index: (field_index_other_table, other_table)}
-        representing all relationships to the given table. Indexes are 0-based.
-        """
-        cursor.execute("""
-    SELECT ta.column_id - 1, tb.table_name, tb.column_id - 1
-    FROM   user_constraints, USER_CONS_COLUMNS ca, USER_CONS_COLUMNS cb,
-           user_tab_cols ta, user_tab_cols tb
-    WHERE  user_constraints.table_name = %s AND
-           ta.table_name = %s AND
-           ta.column_name = ca.column_name AND
-           ca.table_name = %s AND
-           user_constraints.constraint_name = ca.constraint_name AND
-           user_constraints.r_constraint_name = cb.constraint_name AND
-           cb.table_name = tb.table_name AND
-           cb.column_name = tb.column_name AND
-           ca.position = cb.position""", [table_name, table_name, table_name])
-
-        relations = {}
-        for row in cursor.fetchall():
-            relations[row[0]] = (row[2], row[1])
-        return relations
-
-    def get_indexes(self, cursor, table_name):
-        """
-        Returns a dictionary of fieldname -> infodict for the given table,
-        where each infodict is in the format:
-            {'primary_key': boolean representing whether it's the primary key,
-             'unique': boolean representing whether it's a unique index}
-        """
-        # This query retrieves each index on the given table, including the
-        # first associated field name
-        # "We were in the nick of time; you were in great peril!"
-        sql = """
-    WITH primarycols AS (
-     SELECT user_cons_columns.table_name, user_cons_columns.column_name, 1 AS PRIMARYCOL
-     FROM   user_cons_columns, user_constraints
-     WHERE  user_cons_columns.constraint_name = user_constraints.constraint_name AND
-            user_constraints.constraint_type = 'P' AND
-            user_cons_columns.table_name = %s),
-     uniquecols AS (
-     SELECT user_ind_columns.table_name, user_ind_columns.column_name, 1 AS UNIQUECOL
-     FROM   user_indexes, user_ind_columns
-     WHERE  uniqueness = 'UNIQUE' AND
-            user_indexes.index_name = user_ind_columns.index_name AND
-            user_ind_columns.table_name = %s)
-    SELECT allcols.column_name, primarycols.primarycol, uniquecols.UNIQUECOL
-    FROM   (SELECT column_name FROM primarycols UNION SELECT column_name FROM
-    uniquecols) allcols,
-          primarycols, uniquecols
-    WHERE  allcols.column_name = primarycols.column_name (+) AND
-          allcols.column_name = uniquecols.column_name (+)
-        """
-        cursor.execute(sql, [table_name, table_name])
-        indexes = {}
-        for row in cursor.fetchall():
-            # row[1] (idx.indkey) is stored in the DB as an array. It comes out as
-            # a string of space-separated integers. This designates the field
-            # indexes (1-based) of the fields that have indexes on the table.
-            # Here, we skip any indexes across multiple fields.
-            indexes[row[0]] = {'primary_key': row[1], 'unique': row[2]}
-        return indexes
-
diff --git a/webapp/django/db/backends/oracle/query.py b/webapp/django/db/backends/oracle/query.py
deleted file mode 100644
index 85e2f68..0000000
--- a/webapp/django/db/backends/oracle/query.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""
-Custom Query class for Oracle.
-Derives from: django.db.models.sql.query.Query
-"""
-
-import datetime
-
-from django.db.backends import util
-
-# Cache. Maps default query class to new Oracle query class.
-_classes = {}
-
-def query_class(QueryClass, Database):
-    """
-    Returns a custom django.db.models.sql.query.Query subclass that is
-    appropriate for Oracle.
-
-    The 'Database' module (cx_Oracle) is passed in here so that all the setup
-    required to import it only needs to be done by the calling module.
-    """
-    global _classes
-    try:
-        return _classes[QueryClass]
-    except KeyError:
-        pass
-
-    class OracleQuery(QueryClass):
-        def resolve_columns(self, row, fields=()):
-            index_start = len(self.extra_select.keys())
-            values = [self.convert_values(v, None) for v in row[:index_start]]
-            for value, field in map(None, row[index_start:], fields):
-                values.append(self.convert_values(value, field))
-            return values
-
-        def convert_values(self, value, field):
-            from django.db.models.fields import DateField, DateTimeField, \
-                 TimeField, BooleanField, NullBooleanField, DecimalField, Field
-            if isinstance(value, Database.LOB):
-                value = value.read()
-            # Oracle stores empty strings as null. We need to undo this in
-            # order to adhere to the Django convention of using the empty
-            # string instead of null, but only if the field accepts the
-            # empty string.
-            if value is None and isinstance(field, Field) and field.empty_strings_allowed:
-                value = u''
-            # Convert 1 or 0 to True or False
-            elif value in (1, 0) and isinstance(field, (BooleanField, NullBooleanField)):
-                value = bool(value)
-            # Convert floats to decimals
-            elif value is not None and isinstance(field, DecimalField):
-                value = util.typecast_decimal(field.format_number(value))
-            # cx_Oracle always returns datetime.datetime objects for
-            # DATE and TIMESTAMP columns, but Django wants to see a
-            # python datetime.date, .time, or .datetime.  We use the type
-            # of the Field to determine which to cast to, but it's not
-            # always available.
-            # As a workaround, we cast to date if all the time-related
-            # values are 0, or to time if the date is 1/1/1900.
-            # This could be cleaned a bit by adding a method to the Field
-            # classes to normalize values from the database (the to_python
-            # method is used for validation and isn't what we want here).
-            elif isinstance(value, Database.Timestamp):
-                # In Python 2.3, the cx_Oracle driver returns its own
-                # Timestamp object that we must convert to a datetime class.
-                if not isinstance(value, datetime.datetime):
-                    value = datetime.datetime(value.year, value.month,
-                            value.day, value.hour, value.minute, value.second,
-                            value.fsecond)
-                if isinstance(field, DateTimeField):
-                    # DateTimeField subclasses DateField so must be checked
-                    # first.
-                    pass
-                elif isinstance(field, DateField):
-                    value = value.date()
-                elif isinstance(field, TimeField) or (value.year == 1900 and value.month == value.day == 1):
-                    value = value.time()
-                elif value.hour == value.minute == value.second == value.microsecond == 0:
-                    value = value.date()
-            return value
-
-        def as_sql(self, with_limits=True, with_col_aliases=False):
-            """
-            Creates the SQL for this query. Returns the SQL string and list
-            of parameters.  This is overriden from the original Query class
-            to handle the additional SQL Oracle requires to emulate LIMIT
-            and OFFSET.
-
-            If 'with_limits' is False, any limit/offset information is not
-            included in the query.
-            """
-
-            # The `do_offset` flag indicates whether we need to construct
-            # the SQL needed to use limit/offset with Oracle.
-            do_offset = with_limits and (self.high_mark is not None
-                                         or self.low_mark)
-            if not do_offset:
-                sql, params = super(OracleQuery, self).as_sql(with_limits=False,
-                        with_col_aliases=with_col_aliases)
-            else:
-                # `get_columns` needs to be called before `get_ordering` to
-                # populate `_select_alias`.
-                self.pre_sql_setup()
-                self.get_columns()
-                ordering = self.get_ordering()
-
-                # Oracle's ROW_NUMBER() function requires an ORDER BY clause.
-                if ordering:
-                    rn_orderby = ', '.join(ordering)
-                else:
-                    # Create a default ORDER BY since none was specified.
-                    qn = self.quote_name_unless_alias
-                    opts = self.model._meta
-                    rn_orderby = '%s.%s' % (qn(opts.db_table),
-                        qn(opts.fields[0].db_column or opts.fields[0].column))
-
-                # Ensure the base query SELECTs our special "_RN" column
-                self.extra_select['_RN'] = ('ROW_NUMBER() OVER (ORDER BY %s)'
-                                            % rn_orderby, '')
-                sql, params = super(OracleQuery, self).as_sql(with_limits=False,
-                                                        with_col_aliases=True)
-
-                # Wrap the base query in an outer SELECT * with boundaries on
-                # the "_RN" column.  This is the canonical way to emulate LIMIT
-                # and OFFSET on Oracle.
-                sql = 'SELECT * FROM (%s) WHERE "_RN" > %d' % (sql, self.low_mark)
-                if self.high_mark is not None:
-                    sql = '%s AND "_RN" <= %d' % (sql, self.high_mark)
-
-            return sql, params
-
-        def set_limits(self, low=None, high=None):
-            super(OracleQuery, self).set_limits(low, high)
-            # We need to select the row number for the LIMIT/OFFSET sql.
-            # A placeholder is added to extra_select now, because as_sql is
-            # too late to be modifying extra_select.  However, the actual sql
-            # depends on the ordering, so that is generated in as_sql.
-            self.extra_select['_RN'] = ('1', '')
-
-        def clear_limits(self):
-            super(OracleQuery, self).clear_limits()
-            if '_RN' in self.extra_select:
-                del self.extra_select['_RN']
-
-    _classes[QueryClass] = OracleQuery
-    return OracleQuery
diff --git a/webapp/django/db/backends/postgresql/__init__.py b/webapp/django/db/backends/postgresql/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/db/backends/postgresql/__init__.py
+++ /dev/null
diff --git a/webapp/django/db/backends/postgresql/base.py b/webapp/django/db/backends/postgresql/base.py
deleted file mode 100644
index 376d7ba..0000000
--- a/webapp/django/db/backends/postgresql/base.py
+++ /dev/null
@@ -1,148 +0,0 @@
-"""
-PostgreSQL database backend for Django.
-
-Requires psycopg 1: http://initd.org/projects/psycopg1
-"""
-
-from django.db.backends import *
-from django.db.backends.postgresql.client import DatabaseClient
-from django.db.backends.postgresql.creation import DatabaseCreation
-from django.db.backends.postgresql.introspection import DatabaseIntrospection
-from django.db.backends.postgresql.operations import DatabaseOperations
-from django.db.backends.postgresql.version import get_version
-from django.utils.encoding import smart_str, smart_unicode
-
-try:
-    import psycopg as Database
-except ImportError, e:
-    from django.core.exceptions import ImproperlyConfigured
-    raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-class UnicodeCursorWrapper(object):
-    """
-    A thin wrapper around psycopg cursors that allows them to accept Unicode
-    strings as params.
-
-    This is necessary because psycopg doesn't apply any DB quoting to
-    parameters that are Unicode strings. If a param is Unicode, this will
-    convert it to a bytestring using database client's encoding before passing
-    it to psycopg.
-
-    All results retrieved from the database are converted into Unicode strings
-    before being returned to the caller.
-    """
-    def __init__(self, cursor, charset):
-        self.cursor = cursor
-        self.charset = charset
-
-    def format_params(self, params):
-        if isinstance(params, dict):
-            result = {}
-            charset = self.charset
-            for key, value in params.items():
-                result[smart_str(key, charset)] = smart_str(value, charset)
-            return result
-        else:
-            return tuple([smart_str(p, self.charset, True) for p in params])
-
-    def execute(self, sql, params=()):
-        return self.cursor.execute(smart_str(sql, self.charset), self.format_params(params))
-
-    def executemany(self, sql, param_list):
-        new_param_list = [self.format_params(params) for params in param_list]
-        return self.cursor.executemany(sql, new_param_list)
-
-    def __getattr__(self, attr):
-        if attr in self.__dict__:
-            return self.__dict__[attr]
-        else:
-            return getattr(self.cursor, attr)
-
-    def __iter__(self):
-        return iter(self.cursor)
-
-class DatabaseFeatures(BaseDatabaseFeatures):
-    uses_savepoints = True
-
-class DatabaseWrapper(BaseDatabaseWrapper):
-    operators = {
-        'exact': '= %s',
-        'iexact': '= UPPER(%s)',
-        'contains': 'LIKE %s',
-        'icontains': 'LIKE UPPER(%s)',
-        'regex': '~ %s',
-        'iregex': '~* %s',
-        'gt': '> %s',
-        'gte': '>= %s',
-        'lt': '< %s',
-        'lte': '<= %s',
-        'startswith': 'LIKE %s',
-        'endswith': 'LIKE %s',
-        'istartswith': 'LIKE UPPER(%s)',
-        'iendswith': 'LIKE UPPER(%s)',
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
-        self.features = DatabaseFeatures()
-        self.ops = DatabaseOperations()
-        self.client = DatabaseClient()
-        self.creation = DatabaseCreation(self)
-        self.introspection = DatabaseIntrospection(self)
-        self.validation = BaseDatabaseValidation()
-
-    def _cursor(self, settings):
-        set_tz = False
-        if self.connection is None:
-            set_tz = True
-            if settings.DATABASE_NAME == '':
-                from django.core.exceptions import ImproperlyConfigured
-                raise ImproperlyConfigured("You need to specify DATABASE_NAME in your Django settings file.")
-            conn_string = "dbname=%s" % settings.DATABASE_NAME
-            if settings.DATABASE_USER:
-                conn_string = "user=%s %s" % (settings.DATABASE_USER, conn_string)
-            if settings.DATABASE_PASSWORD:
-                conn_string += " password='%s'" % settings.DATABASE_PASSWORD
-            if settings.DATABASE_HOST:
-                conn_string += " host=%s" % settings.DATABASE_HOST
-            if settings.DATABASE_PORT:
-                conn_string += " port=%s" % settings.DATABASE_PORT
-            self.connection = Database.connect(conn_string, **self.options)
-            self.connection.set_isolation_level(1) # make transactions transparent to all cursors
-        cursor = self.connection.cursor()
-        if set_tz:
-            cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
-            if not hasattr(self, '_version'):
-                version = get_version(cursor)
-                self.__class__._version = version
-                if version < (8, 0):
-                    # No savepoint support for earlier version of PostgreSQL.
-                    self.features.uses_savepoints = False
-        cursor.execute("SET client_encoding to 'UNICODE'")
-        cursor = UnicodeCursorWrapper(cursor, 'utf-8')
-        return cursor
-
-def typecast_string(s):
-    """
-    Cast all returned strings to unicode strings.
-    """
-    if not s and not isinstance(s, str):
-        return s
-    return smart_unicode(s)
-
-# Register these custom typecasts, because Django expects dates/times to be
-# in Python's native (standard-library) datetime/time format, whereas psycopg
-# use mx.DateTime by default.
-try:
-    Database.register_type(Database.new_type((1082,), "DATE", util.typecast_date))
-except AttributeError:
-    raise Exception("You appear to be using psycopg version 2. Set your DATABASE_ENGINE to 'postgresql_psycopg2' instead of 'postgresql'.")
-Database.register_type(Database.new_type((1083,1266), "TIME", util.typecast_time))
-Database.register_type(Database.new_type((1114,1184), "TIMESTAMP", util.typecast_timestamp))
-Database.register_type(Database.new_type((16,), "BOOLEAN", util.typecast_boolean))
-Database.register_type(Database.new_type((1700,), "NUMERIC", util.typecast_decimal))
-Database.register_type(Database.new_type(Database.types[1043].values, 'STRING', typecast_string))
diff --git a/webapp/django/db/backends/postgresql/client.py b/webapp/django/db/backends/postgresql/client.py
deleted file mode 100644
index 28daed8..0000000
--- a/webapp/django/db/backends/postgresql/client.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from django.db.backends import BaseDatabaseClient
-from django.conf import settings
-import os
-
-class DatabaseClient(BaseDatabaseClient):
-    def runshell(self):
-        args = ['psql']
-        if settings.DATABASE_USER:
-            args += ["-U", settings.DATABASE_USER]
-        if settings.DATABASE_PASSWORD:
-            args += ["-W"]
-        if settings.DATABASE_HOST:
-            args.extend(["-h", settings.DATABASE_HOST])
-        if settings.DATABASE_PORT:
-            args.extend(["-p", str(settings.DATABASE_PORT)])
-        args += [settings.DATABASE_NAME]
-        os.execvp('psql', args)
diff --git a/webapp/django/db/backends/postgresql/creation.py b/webapp/django/db/backends/postgresql/creation.py
deleted file mode 100644
index 3e537e3..0000000
--- a/webapp/django/db/backends/postgresql/creation.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from django.conf import settings
-from django.db.backends.creation import BaseDatabaseCreation
-
-class DatabaseCreation(BaseDatabaseCreation):
-    # This dictionary maps Field objects to their associated PostgreSQL column
-    # types, as strings. Column-type strings can contain format strings; they'll
-    # be interpolated against the values of Field.__dict__ before being output.
-    # If a column type is set to None, it won't be included in the output.
-    data_types = {
-        'AutoField':         'serial',
-        'BooleanField':      'boolean',
-        'CharField':         'varchar(%(max_length)s)',
-        'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
-        'DateField':         'date',
-        'DateTimeField':     'timestamp with time zone',
-        'DecimalField':      'numeric(%(max_digits)s, %(decimal_places)s)',
-        'FileField':         'varchar(%(max_length)s)',
-        'FilePathField':     'varchar(%(max_length)s)',
-        'FloatField':        'double precision',
-        'IntegerField':      'integer',
-        'IPAddressField':    'inet',
-        'NullBooleanField':  'boolean',
-        'OneToOneField':     'integer',
-        'PhoneNumberField':  'varchar(20)',
-        'PositiveIntegerField': 'integer CHECK ("%(column)s" >= 0)',
-        'PositiveSmallIntegerField': 'smallint CHECK ("%(column)s" >= 0)',
-        'SlugField':         'varchar(%(max_length)s)',
-        'SmallIntegerField': 'smallint',
-        'TextField':         'text',
-        'TimeField':         'time',
-        'USStateField':      'varchar(2)',
-    }
-
-    def sql_table_creation_suffix(self):
-        assert settings.TEST_DATABASE_COLLATION is None, "PostgreSQL does not support collation setting at database creation time."
-        if settings.TEST_DATABASE_CHARSET:
-            return "WITH ENCODING '%s'" % settings.TEST_DATABASE_CHARSET
-        return ''
diff --git a/webapp/django/db/backends/postgresql/introspection.py b/webapp/django/db/backends/postgresql/introspection.py
deleted file mode 100644
index 7b3ab3b..0000000
--- a/webapp/django/db/backends/postgresql/introspection.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from django.db.backends import BaseDatabaseIntrospection
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
-    # Maps type codes to Django Field types.
-    data_types_reverse = {
-        16: 'BooleanField',
-        21: 'SmallIntegerField',
-        23: 'IntegerField',
-        25: 'TextField',
-        701: 'FloatField',
-        869: 'IPAddressField',
-        1043: 'CharField',
-        1082: 'DateField',
-        1083: 'TimeField',
-        1114: 'DateTimeField',
-        1184: 'DateTimeField',
-        1266: 'TimeField',
-        1700: 'DecimalField',
-    }
-        
-    def get_table_list(self, cursor):
-        "Returns a list of table names in the current database."
-        cursor.execute("""
-            SELECT c.relname
-            FROM pg_catalog.pg_class c
-            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
-            WHERE c.relkind IN ('r', 'v', '')
-                AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
-                AND pg_catalog.pg_table_is_visible(c.oid)""")
-        return [row[0] for row in cursor.fetchall()]
-
-    def get_table_description(self, cursor, table_name):
-        "Returns a description of the table, with the DB-API cursor.description interface."
-        cursor.execute("SELECT * FROM %s LIMIT 1" % self.connection.ops.quote_name(table_name))
-        return cursor.description
-
-    def get_relations(self, cursor, table_name):
-        """
-        Returns a dictionary of {field_index: (field_index_other_table, other_table)}
-        representing all relationships to the given table. Indexes are 0-based.
-        """
-        cursor.execute("""
-            SELECT con.conkey, con.confkey, c2.relname
-            FROM pg_constraint con, pg_class c1, pg_class c2
-            WHERE c1.oid = con.conrelid
-                AND c2.oid = con.confrelid
-                AND c1.relname = %s
-                AND con.contype = 'f'""", [table_name])
-        relations = {}
-        for row in cursor.fetchall():
-            try:
-                # row[0] and row[1] are like "{2}", so strip the curly braces.
-                relations[int(row[0][1:-1]) - 1] = (int(row[1][1:-1]) - 1, row[2])
-            except ValueError:
-                continue
-        return relations
-
-    def get_indexes(self, cursor, table_name):
-        """
-        Returns a dictionary of fieldname -> infodict for the given table,
-        where each infodict is in the format:
-            {'primary_key': boolean representing whether it's the primary key,
-             'unique': boolean representing whether it's a unique index}
-        """
-        # This query retrieves each index on the given table, including the
-        # first associated field name
-        cursor.execute("""
-            SELECT attr.attname, idx.indkey, idx.indisunique, idx.indisprimary
-            FROM pg_catalog.pg_class c, pg_catalog.pg_class c2,
-                pg_catalog.pg_index idx, pg_catalog.pg_attribute attr
-            WHERE c.oid = idx.indrelid
-                AND idx.indexrelid = c2.oid
-                AND attr.attrelid = c.oid
-                AND attr.attnum = idx.indkey[0]
-                AND c.relname = %s""", [table_name])
-        indexes = {}
-        for row in cursor.fetchall():
-            # row[1] (idx.indkey) is stored in the DB as an array. It comes out as
-            # a string of space-separated integers. This designates the field
-            # indexes (1-based) of the fields that have indexes on the table.
-            # Here, we skip any indexes across multiple fields.
-            if ' ' in row[1]:
-                continue
-            indexes[row[0]] = {'primary_key': row[3], 'unique': row[2]}
-        return indexes
-
diff --git a/webapp/django/db/backends/postgresql/operations.py b/webapp/django/db/backends/postgresql/operations.py
deleted file mode 100644
index 01cc1fc..0000000
--- a/webapp/django/db/backends/postgresql/operations.py
+++ /dev/null
@@ -1,144 +0,0 @@
-import re
-
-from django.db.backends import BaseDatabaseOperations
-
-server_version_re = re.compile(r'PostgreSQL (\d{1,2})\.(\d{1,2})\.?(\d{1,2})?')
-
-# This DatabaseOperations class lives in here instead of base.py because it's
-# used by both the 'postgresql' and 'postgresql_psycopg2' backends.
-
-class DatabaseOperations(BaseDatabaseOperations):
-    def __init__(self):
-        self._postgres_version = None
-
-    def _get_postgres_version(self):
-        if self._postgres_version is None:
-            from django.db import connection
-            cursor = connection.cursor()
-            cursor.execute("SELECT version()")
-            version_string = cursor.fetchone()[0]
-            m = server_version_re.match(version_string)
-            if not m:
-                raise Exception('Unable to determine PostgreSQL version from version() function string: %r' % version_string)
-            self._postgres_version = [int(val) for val in m.groups() if val]
-        return self._postgres_version
-    postgres_version = property(_get_postgres_version)
-
-    def date_extract_sql(self, lookup_type, field_name):
-        # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT
-        return "EXTRACT('%s' FROM %s)" % (lookup_type, field_name)
-
-    def date_trunc_sql(self, lookup_type, field_name):
-        # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC
-        return "DATE_TRUNC('%s', %s)" % (lookup_type, field_name)
-
-    def deferrable_sql(self):
-        return " DEFERRABLE INITIALLY DEFERRED"
-
-    def lookup_cast(self, lookup_type):
-        lookup = '%s'
-
-        # Cast text lookups to text to allow things like filter(x__contains=4)
-        if lookup_type in ('iexact', 'contains', 'icontains', 'startswith',
-                           'istartswith', 'endswith', 'iendswith'):
-            lookup = "%s::text"
-
-        # Use UPPER(x) for case-insensitive lookups; it's faster.
-        if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):
-            lookup = 'UPPER(%s)' % lookup
-
-        return lookup
-
-    def field_cast_sql(self, db_type):
-        if db_type == 'inet':
-            return 'HOST(%s)'
-        return '%s'
-
-    def last_insert_id(self, cursor, table_name, pk_name):
-        cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name))
-        return cursor.fetchone()[0]
-
-    def no_limit_value(self):
-        return None
-
-    def quote_name(self, name):
-        if name.startswith('"') and name.endswith('"'):
-            return name # Quoting once is enough.
-        return '"%s"' % name
-
-    def sql_flush(self, style, tables, sequences):
-        if tables:
-            if self.postgres_version[0] >= 8 and self.postgres_version[1] >= 1:
-                # Postgres 8.1+ can do 'TRUNCATE x, y, z...;'. In fact, it *has to*
-                # in order to be able to truncate tables referenced by a foreign
-                # key in any other table. The result is a single SQL TRUNCATE
-                # statement.
-                sql = ['%s %s;' % \
-                    (style.SQL_KEYWORD('TRUNCATE'),
-                     style.SQL_FIELD(', '.join([self.quote_name(table) for table in tables]))
-                )]
-            else:
-                # Older versions of Postgres can't do TRUNCATE in a single call, so
-                # they must use a simple delete.
-                sql = ['%s %s %s;' % \
-                        (style.SQL_KEYWORD('DELETE'),
-                         style.SQL_KEYWORD('FROM'),
-                         style.SQL_FIELD(self.quote_name(table))
-                         ) for table in tables]
-
-            # 'ALTER SEQUENCE sequence_name RESTART WITH 1;'... style SQL statements
-            # to reset sequence indices
-            for sequence_info in sequences:
-                table_name = sequence_info['table']
-                column_name = sequence_info['column']
-                if column_name and len(column_name) > 0:
-                    sequence_name = '%s_%s_seq' % (table_name, column_name)
-                else:
-                    sequence_name = '%s_id_seq' % table_name
-                sql.append("%s setval('%s', 1, false);" % \
-                    (style.SQL_KEYWORD('SELECT'),
-                    style.SQL_FIELD(self.quote_name(sequence_name)))
-                )
-            return sql
-        else:
-            return []
-
-    def sequence_reset_sql(self, style, model_list):
-        from django.db import models
-        output = []
-        qn = self.quote_name
-        for model in model_list:
-            # Use `coalesce` to set the sequence for each model to the max pk value if there are records,
-            # or 1 if there are none. Set the `is_called` property (the third argument to `setval`) to true
-            # if there are records (as the max pk value is already in use), otherwise set it to false.
-            for f in model._meta.local_fields:
-                if isinstance(f, models.AutoField):
-                    output.append("%s setval('%s', coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
-                        (style.SQL_KEYWORD('SELECT'),
-                        style.SQL_FIELD(qn('%s_%s_seq' % (model._meta.db_table, f.column))),
-                        style.SQL_FIELD(qn(f.column)),
-                        style.SQL_FIELD(qn(f.column)),
-                        style.SQL_KEYWORD('IS NOT'),
-                        style.SQL_KEYWORD('FROM'),
-                        style.SQL_TABLE(qn(model._meta.db_table))))
-                    break # Only one AutoField is allowed per model, so don't bother continuing.
-            for f in model._meta.many_to_many:
-                output.append("%s setval('%s', coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
-                    (style.SQL_KEYWORD('SELECT'),
-                    style.SQL_FIELD(qn('%s_id_seq' % f.m2m_db_table())),
-                    style.SQL_FIELD(qn('id')),
-                    style.SQL_FIELD(qn('id')),
-                    style.SQL_KEYWORD('IS NOT'),
-                    style.SQL_KEYWORD('FROM'),
-                    style.SQL_TABLE(qn(f.m2m_db_table()))))
-        return output
-
-    def savepoint_create_sql(self, sid):
-        return "SAVEPOINT %s" % sid
-
-    def savepoint_commit_sql(self, sid):
-        return "RELEASE SAVEPOINT %s" % sid
-
-    def savepoint_rollback_sql(self, sid):
-        return "ROLLBACK TO SAVEPOINT %s" % sid
-
diff --git a/webapp/django/db/backends/postgresql/version.py b/webapp/django/db/backends/postgresql/version.py
deleted file mode 100644
index e14d791..0000000
--- a/webapp/django/db/backends/postgresql/version.py
+++ /dev/null
@@ -1,18 +0,0 @@
-"""
-Extracts the version of the PostgreSQL server.
-"""
-
-import re
-
-VERSION_RE = re.compile(r'PostgreSQL (\d+)\.(\d+)\.')
-
-def get_version(cursor):
-    """
-    Returns a tuple representing the major and minor version number of the
-    server. For example, (7, 4) or (8, 3).
-    """
-    cursor.execute("SELECT version()")
-    version = cursor.fetchone()[0]
-    major, minor = VERSION_RE.search(version).groups()
-    return int(major), int(minor)
-
diff --git a/webapp/django/db/backends/postgresql_psycopg2/__init__.py b/webapp/django/db/backends/postgresql_psycopg2/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/db/backends/postgresql_psycopg2/__init__.py
+++ /dev/null
diff --git a/webapp/django/db/backends/postgresql_psycopg2/base.py b/webapp/django/db/backends/postgresql_psycopg2/base.py
deleted file mode 100644
index 6ecf86b..0000000
--- a/webapp/django/db/backends/postgresql_psycopg2/base.py
+++ /dev/null
@@ -1,97 +0,0 @@
-"""
-PostgreSQL database backend for Django.
-
-Requires psycopg 2: http://initd.org/projects/psycopg2
-"""
-
-from django.db.backends import *
-from django.db.backends.postgresql.operations import DatabaseOperations as PostgresqlDatabaseOperations
-from django.db.backends.postgresql.client import DatabaseClient
-from django.db.backends.postgresql.creation import DatabaseCreation
-from django.db.backends.postgresql.version import get_version
-from django.db.backends.postgresql_psycopg2.introspection import DatabaseIntrospection
-from django.utils.safestring import SafeUnicode, SafeString
-
-try:
-    import psycopg2 as Database
-    import psycopg2.extensions
-except ImportError, e:
-    from django.core.exceptions import ImproperlyConfigured
-    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
-psycopg2.extensions.register_adapter(SafeString, psycopg2.extensions.QuotedString)
-psycopg2.extensions.register_adapter(SafeUnicode, psycopg2.extensions.QuotedString)
-
-class DatabaseFeatures(BaseDatabaseFeatures):
-    needs_datetime_string_cast = False
-    uses_savepoints = True
-
-class DatabaseOperations(PostgresqlDatabaseOperations):
-    def last_executed_query(self, cursor, sql, params):
-        # With psycopg2, cursor objects have a "query" attribute that is the
-        # exact query sent to the database. See docs here:
-        # http://www.initd.org/tracker/psycopg/wiki/psycopg2_documentation#postgresql-status-message-and-executed-query
-        return cursor.query
-
-class DatabaseWrapper(BaseDatabaseWrapper):
-    operators = {
-        'exact': '= %s',
-        'iexact': '= UPPER(%s)',
-        'contains': 'LIKE %s',
-        'icontains': 'LIKE UPPER(%s)',
-        'regex': '~ %s',
-        'iregex': '~* %s',
-        'gt': '> %s',
-        'gte': '>= %s',
-        'lt': '< %s',
-        'lte': '<= %s',
-        'startswith': 'LIKE %s',
-        'endswith': 'LIKE %s',
-        'istartswith': 'LIKE UPPER(%s)',
-        'iendswith': 'LIKE UPPER(%s)',
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(DatabaseWrapper, self).__init__(*args, **kwargs)
-        
-        self.features = DatabaseFeatures()
-        self.ops = DatabaseOperations()
-        self.client = DatabaseClient()
-        self.creation = DatabaseCreation(self)
-        self.introspection = DatabaseIntrospection(self)
-        self.validation = BaseDatabaseValidation()
-
-    def _cursor(self, settings):
-        set_tz = False
-        if self.connection is None:
-            set_tz = True
-            if settings.DATABASE_NAME == '':
-                from django.core.exceptions import ImproperlyConfigured
-                raise ImproperlyConfigured("You need to specify DATABASE_NAME in your Django settings file.")
-            conn_string = "dbname=%s" % settings.DATABASE_NAME
-            if settings.DATABASE_USER:
-                conn_string = "user=%s %s" % (settings.DATABASE_USER, conn_string)
-            if settings.DATABASE_PASSWORD:
-                conn_string += " password='%s'" % settings.DATABASE_PASSWORD
-            if settings.DATABASE_HOST:
-                conn_string += " host=%s" % settings.DATABASE_HOST
-            if settings.DATABASE_PORT:
-                conn_string += " port=%s" % settings.DATABASE_PORT
-            self.connection = Database.connect(conn_string, **self.options)
-            self.connection.set_isolation_level(1) # make transactions transparent to all cursors
-            self.connection.set_client_encoding('UTF8')
-        cursor = self.connection.cursor()
-        cursor.tzinfo_factory = None
-        if set_tz:
-            cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
-            if not hasattr(self, '_version'):
-                version = get_version(cursor)
-                self.__class__._version = version
-                if version < (8, 0):
-                    # No savepoint support for earlier version of PostgreSQL.
-                    self.features.uses_savepoints = False
-        return cursor
diff --git a/webapp/django/db/backends/postgresql_psycopg2/introspection.py b/webapp/django/db/backends/postgresql_psycopg2/introspection.py
deleted file mode 100644
index 83bd9b4..0000000
--- a/webapp/django/db/backends/postgresql_psycopg2/introspection.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from django.db.backends.postgresql.introspection import DatabaseIntrospection as PostgresDatabaseIntrospection
-
-class DatabaseIntrospection(PostgresDatabaseIntrospection):
-
-    def get_relations(self, cursor, table_name):
-        """
-        Returns a dictionary of {field_index: (field_index_other_table, other_table)}
-        representing all relationships to the given table. Indexes are 0-based.
-        """
-        cursor.execute("""
-            SELECT con.conkey, con.confkey, c2.relname
-            FROM pg_constraint con, pg_class c1, pg_class c2
-            WHERE c1.oid = con.conrelid
-                AND c2.oid = con.confrelid
-                AND c1.relname = %s
-                AND con.contype = 'f'""", [table_name])
-        relations = {}
-        for row in cursor.fetchall():
-            # row[0] and row[1] are single-item lists, so grab the single item.
-            relations[row[0][0] - 1] = (row[1][0] - 1, row[2])
-        return relations
diff --git a/webapp/django/db/backends/sqlite3/__init__.py b/webapp/django/db/backends/sqlite3/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/db/backends/sqlite3/__init__.py
+++ /dev/null
diff --git a/webapp/django/db/backends/sqlite3/base.py b/webapp/django/db/backends/sqlite3/base.py
deleted file mode 100644
index 64da52e..0000000
--- a/webapp/django/db/backends/sqlite3/base.py
+++ /dev/null
@@ -1,204 +0,0 @@
-"""
-SQLite3 backend for django.
-
-Python 2.3 and 2.4 require pysqlite2 (http://pysqlite.org/).
-
-Python 2.5 and later use the sqlite3 module in the standard library.
-"""
-
-from django.db.backends import *
-from django.db.backends.sqlite3.client import DatabaseClient
-from django.db.backends.sqlite3.creation import DatabaseCreation
-from django.db.backends.sqlite3.introspection import DatabaseIntrospection
-
-try:
-    try:
-        from sqlite3 import dbapi2 as Database
-    except ImportError:
-        from pysqlite2 import dbapi2 as Database
-except ImportError, e:
-    import sys
-    from django.core.exceptions import ImproperlyConfigured
-    if sys.version_info < (2, 5, 0):
-        module = 'pysqlite2'
-    else:
-        module = 'sqlite3'
-    raise ImproperlyConfigured, "Error loading %s module: %s" % (module, e)
-
-try:
-    import decimal
-except ImportError:
-    from django.utils import _decimal as decimal # for Python 2.3
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-Database.register_converter("bool", lambda s: str(s) == '1')
-Database.register_converter("time", util.typecast_time)
-Database.register_converter("date", util.typecast_date)
-Database.register_converter("datetime", util.typecast_timestamp)
-Database.register_converter("timestamp", util.typecast_timestamp)
-Database.register_converter("TIMESTAMP", util.typecast_timestamp)
-Database.register_converter("decimal", util.typecast_decimal)
-Database.register_adapter(decimal.Decimal, util.rev_typecast_decimal)
-if Database.version_info >= (2,4,1):
-    # Starting in 2.4.1, the str type is not accepted anymore, therefore,
-    # we convert all str objects to Unicode
-    # As registering a adapter for a primitive type causes a small
-    # slow-down, this adapter is only registered for sqlite3 versions
-    # needing it.
-    Database.register_adapter(str, lambda s:s.decode('utf-8'))
-
-class DatabaseFeatures(BaseDatabaseFeatures):
-    # SQLite cannot handle us only partially reading from a cursor's result set
-    # and then writing the same rows to the database in another cursor. This
-    # setting ensures we always read result sets fully into memory all in one
-    # go.
-    can_use_chunked_reads = False
-
-class DatabaseOperations(BaseDatabaseOperations):
-    def date_extract_sql(self, lookup_type, field_name):
-        # sqlite doesn't support extract, so we fake it with the user-defined
-        # function django_extract that's registered in connect().
-        return 'django_extract("%s", %s)' % (lookup_type.lower(), field_name)
-
-    def date_trunc_sql(self, lookup_type, field_name):
-        # sqlite doesn't support DATE_TRUNC, so we fake it with a user-defined
-        # function django_date_trunc that's registered in connect().
-        return 'django_date_trunc("%s", %s)' % (lookup_type.lower(), field_name)
-
-    def drop_foreignkey_sql(self):
-        return ""
-
-    def pk_default_value(self):
-        return 'NULL'
-
-    def quote_name(self, name):
-        if name.startswith('"') and name.endswith('"'):
-            return name # Quoting once is enough.
-        return '"%s"' % name
-
-    def no_limit_value(self):
-        return -1
-
-    def sql_flush(self, style, tables, sequences):
-        # NB: The generated SQL below is specific to SQLite
-        # Note: The DELETE FROM... SQL generated below works for SQLite databases
-        # because constraints don't exist
-        sql = ['%s %s %s;' % \
-                (style.SQL_KEYWORD('DELETE'),
-                 style.SQL_KEYWORD('FROM'),
-                 style.SQL_FIELD(self.quote_name(table))
-                 ) for table in tables]
-        # Note: No requirement for reset of auto-incremented indices (cf. other
-        # sql_flush() implementations). Just return SQL at this point
-        return sql
-
-    def year_lookup_bounds(self, value):
-        first = '%s-01-01'
-        second = '%s-12-31 23:59:59.999999'
-        return [first % value, second % value]
-
-class DatabaseWrapper(BaseDatabaseWrapper):
-    
-    # SQLite requires LIKE statements to include an ESCAPE clause if the value
-    # being escaped has a percent or underscore in it.
-    # See http://www.sqlite.org/lang_expr.html for an explanation.
-    operators = {
-        'exact': '= %s',
-        'iexact': "LIKE %s ESCAPE '\\'",
-        'contains': "LIKE %s ESCAPE '\\'",
-        'icontains': "LIKE %s ESCAPE '\\'",
-        'regex': 'REGEXP %s',
-        'iregex': "REGEXP '(?i)' || %s",
-        'gt': '> %s',
-        'gte': '>= %s',
-        'lt': '< %s',
-        'lte': '<= %s',
-        'startswith': "LIKE %s ESCAPE '\\'",
-        'endswith': "LIKE %s ESCAPE '\\'",
-        'istartswith': "LIKE %s ESCAPE '\\'",
-        'iendswith': "LIKE %s ESCAPE '\\'",
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(DatabaseWrapper, self).__init__(*args, **kwargs)
-        
-        self.features = DatabaseFeatures()
-        self.ops = DatabaseOperations()
-        self.client = DatabaseClient()
-        self.creation = DatabaseCreation(self)
-        self.introspection = DatabaseIntrospection(self)
-        self.validation = BaseDatabaseValidation()
-
-    def _cursor(self, settings):
-        if self.connection is None:
-            if not settings.DATABASE_NAME:
-                from django.core.exceptions import ImproperlyConfigured
-                raise ImproperlyConfigured, "Please fill out DATABASE_NAME in the settings module before using the database."
-            kwargs = {
-                'database': settings.DATABASE_NAME,
-                'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,
-            }
-            kwargs.update(self.options)
-            self.connection = Database.connect(**kwargs)
-            # Register extract, date_trunc, and regexp functions.
-            self.connection.create_function("django_extract", 2, _sqlite_extract)
-            self.connection.create_function("django_date_trunc", 2, _sqlite_date_trunc)
-            self.connection.create_function("regexp", 2, _sqlite_regexp)
-        return self.connection.cursor(factory=SQLiteCursorWrapper)
-
-    def close(self):
-        from django.conf import settings
-        # If database is in memory, closing the connection destroys the
-        # database. To prevent accidental data loss, ignore close requests on
-        # an in-memory db.
-        if settings.DATABASE_NAME != ":memory:":
-            BaseDatabaseWrapper.close(self)
-
-class SQLiteCursorWrapper(Database.Cursor):
-    """
-    Django uses "format" style placeholders, but pysqlite2 uses "qmark" style.
-    This fixes it -- but note that if you want to use a literal "%s" in a query,
-    you'll need to use "%%s".
-    """
-    def execute(self, query, params=()):
-        query = self.convert_query(query, len(params))
-        return Database.Cursor.execute(self, query, params)
-
-    def executemany(self, query, param_list):
-        try:
-          query = self.convert_query(query, len(param_list[0]))
-          return Database.Cursor.executemany(self, query, param_list)
-        except (IndexError,TypeError):
-          # No parameter list provided
-          return None
-
-    def convert_query(self, query, num_params):
-        return query % tuple("?" * num_params)
-
-def _sqlite_extract(lookup_type, dt):
-    try:
-        dt = util.typecast_timestamp(dt)
-    except (ValueError, TypeError):
-        return None
-    return unicode(getattr(dt, lookup_type))
-
-def _sqlite_date_trunc(lookup_type, dt):
-    try:
-        dt = util.typecast_timestamp(dt)
-    except (ValueError, TypeError):
-        return None
-    if lookup_type == 'year':
-        return "%i-01-01 00:00:00" % dt.year
-    elif lookup_type == 'month':
-        return "%i-%02i-01 00:00:00" % (dt.year, dt.month)
-    elif lookup_type == 'day':
-        return "%i-%02i-%02i 00:00:00" % (dt.year, dt.month, dt.day)
-
-def _sqlite_regexp(re_pattern, re_string):
-    import re
-    try:
-        return bool(re.search(re_pattern, re_string))
-    except:
-        return False
diff --git a/webapp/django/db/backends/sqlite3/client.py b/webapp/django/db/backends/sqlite3/client.py
deleted file mode 100644
index affb1c2..0000000
--- a/webapp/django/db/backends/sqlite3/client.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.db.backends import BaseDatabaseClient
-from django.conf import settings
-import os
-
-class DatabaseClient(BaseDatabaseClient):
-    def runshell(self):
-        args = ['', settings.DATABASE_NAME]
-        os.execvp('sqlite3', args)
diff --git a/webapp/django/db/backends/sqlite3/creation.py b/webapp/django/db/backends/sqlite3/creation.py
deleted file mode 100644
index 8943854..0000000
--- a/webapp/django/db/backends/sqlite3/creation.py
+++ /dev/null
@@ -1,72 +0,0 @@
-import os
-import sys
-from django.conf import settings
-from django.db.backends.creation import BaseDatabaseCreation
-
-class DatabaseCreation(BaseDatabaseCreation):
-    # SQLite doesn't actually support most of these types, but it "does the right
-    # thing" given more verbose field definitions, so leave them as is so that
-    # schema inspection is more useful.
-    data_types = {
-        'AutoField':                    'integer',
-        'BooleanField':                 'bool',
-        'CharField':                    'varchar(%(max_length)s)',
-        'CommaSeparatedIntegerField':   'varchar(%(max_length)s)',
-        'DateField':                    'date',
-        'DateTimeField':                'datetime',
-        'DecimalField':                 'decimal',
-        'FileField':                    'varchar(%(max_length)s)',
-        'FilePathField':                'varchar(%(max_length)s)',
-        'FloatField':                   'real',
-        'IntegerField':                 'integer',
-        'IPAddressField':               'char(15)',
-        'NullBooleanField':             'bool',
-        'OneToOneField':                'integer',
-        'PhoneNumberField':             'varchar(20)',
-        'PositiveIntegerField':         'integer unsigned',
-        'PositiveSmallIntegerField':    'smallint unsigned',
-        'SlugField':                    'varchar(%(max_length)s)',
-        'SmallIntegerField':            'smallint',
-        'TextField':                    'text',
-        'TimeField':                    'time',
-        'USStateField':                 'varchar(2)',
-    }
-    
-    def sql_for_pending_references(self, model, style, pending_references):
-        "SQLite3 doesn't support constraints"
-        return []
-
-    def sql_remove_table_constraints(self, model, references_to_delete, style):
-        "SQLite3 doesn't support constraints"
-        return []
-        
-    def _create_test_db(self, verbosity, autoclobber):
-        if settings.TEST_DATABASE_NAME and settings.TEST_DATABASE_NAME != ":memory:":
-            test_database_name = settings.TEST_DATABASE_NAME
-            # Erase the old test database
-            if verbosity >= 1:
-                print "Destroying old test database..."
-            if os.access(test_database_name, os.F_OK):
-                if not autoclobber:
-                    confirm = raw_input("Type 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: " % test_database_name)
-                if autoclobber or confirm == 'yes':
-                  try:
-                      if verbosity >= 1:
-                          print "Destroying old test database..."
-                      os.remove(test_database_name)
-                  except Exception, e:
-                      sys.stderr.write("Got an error deleting the old test database: %s\n" % e)
-                      sys.exit(2)
-                else:
-                    print "Tests cancelled."
-                    sys.exit(1)
-            if verbosity >= 1:
-                print "Creating test database..."
-        else:
-            test_database_name = ":memory:"
-        return test_database_name
-        
-    def _destroy_test_db(self, test_database_name, verbosity):
-        if test_database_name and test_database_name != ":memory:":
-            # Remove the SQLite database file
-            os.remove(test_database_name)
diff --git a/webapp/django/db/backends/sqlite3/introspection.py b/webapp/django/db/backends/sqlite3/introspection.py
deleted file mode 100644
index 5e26f33..0000000
--- a/webapp/django/db/backends/sqlite3/introspection.py
+++ /dev/null
@@ -1,89 +0,0 @@
-from django.db.backends import BaseDatabaseIntrospection
-
-# This light wrapper "fakes" a dictionary interface, because some SQLite data
-# types include variables in them -- e.g. "varchar(30)" -- and can't be matched
-# as a simple dictionary lookup.
-class FlexibleFieldLookupDict:
-    # Maps SQL types to Django Field types. Some of the SQL types have multiple
-    # entries here because SQLite allows for anything and doesn't normalize the
-    # field type; it uses whatever was given.
-    base_data_types_reverse = {
-        'bool': 'BooleanField',
-        'boolean': 'BooleanField',
-        'smallint': 'SmallIntegerField',
-        'smallinteger': 'SmallIntegerField',
-        'int': 'IntegerField',
-        'integer': 'IntegerField',
-        'text': 'TextField',
-        'char': 'CharField',
-        'date': 'DateField',
-        'datetime': 'DateTimeField',
-        'time': 'TimeField',
-    }
-
-    def __getitem__(self, key):
-        key = key.lower()
-        try:
-            return self.base_data_types_reverse[key]
-        except KeyError:
-            import re
-            m = re.search(r'^\s*(?:var)?char\s*\(\s*(\d+)\s*\)\s*$', key)
-            if m:
-                return ('CharField', {'max_length': int(m.group(1))})
-            raise KeyError
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
-    data_types_reverse = FlexibleFieldLookupDict()
-        
-    def get_table_list(self, cursor):
-        "Returns a list of table names in the current database."
-        # Skip the sqlite_sequence system table used for autoincrement key
-        # generation.
-        cursor.execute("""
-            SELECT name FROM sqlite_master
-            WHERE type='table' AND NOT name='sqlite_sequence'
-            ORDER BY name""")
-        return [row[0] for row in cursor.fetchall()]
-
-    def get_table_description(self, cursor, table_name):
-        "Returns a description of the table, with the DB-API cursor.description interface."
-        return [(info['name'], info['type'], None, None, None, None,
-                 info['null_ok']) for info in self._table_info(cursor, table_name)]
-
-    def get_relations(self, cursor, table_name):
-        raise NotImplementedError
-
-    def get_indexes(self, cursor, table_name):
-        """
-        Returns a dictionary of fieldname -> infodict for the given table,
-        where each infodict is in the format:
-            {'primary_key': boolean representing whether it's the primary key,
-             'unique': boolean representing whether it's a unique index}
-        """
-        indexes = {}
-        for info in self._table_info(cursor, table_name):
-            indexes[info['name']] = {'primary_key': info['pk'] != 0,
-                                     'unique': False}
-        cursor.execute('PRAGMA index_list(%s)' % self.connection.ops.quote_name(table_name))
-        # seq, name, unique
-        for index, unique in [(field[1], field[2]) for field in cursor.fetchall()]:
-            if not unique:
-                continue
-            cursor.execute('PRAGMA index_info(%s)' % self.connection.ops.quote_name(index))
-            info = cursor.fetchall()
-            # Skip indexes across multiple fields
-            if len(info) != 1:
-                continue
-            name = info[0][2] # seqno, cid, name
-            indexes[name]['unique'] = True
-        return indexes
-
-    def _table_info(self, cursor, name):
-        cursor.execute('PRAGMA table_info(%s)' % self.connection.ops.quote_name(name))
-        # cid, name, type, notnull, dflt_value, pk
-        return [{'name': field[1],
-                 'type': field[2],
-                 'null_ok': not field[3],
-                 'pk': field[5]     # undocumented
-                 } for field in cursor.fetchall()]
-
diff --git a/webapp/django/db/backends/util.py b/webapp/django/db/backends/util.py
deleted file mode 100644
index 7228b40..0000000
--- a/webapp/django/db/backends/util.py
+++ /dev/null
@@ -1,127 +0,0 @@
-import datetime
-from time import time
-
-from django.utils.hashcompat import md5_constructor
-
-try:
-    import decimal
-except ImportError:
-    from django.utils import _decimal as decimal    # for Python 2.3
-
-class CursorDebugWrapper(object):
-    def __init__(self, cursor, db):
-        self.cursor = cursor
-        self.db = db # Instance of a BaseDatabaseWrapper subclass
-
-    def execute(self, sql, params=()):
-        start = time()
-        try:
-            return self.cursor.execute(sql, params)
-        finally:
-            stop = time()
-            sql = self.db.ops.last_executed_query(self.cursor, sql, params)
-            self.db.queries.append({
-                'sql': sql,
-                'time': "%.3f" % (stop - start),
-            })
-
-    def executemany(self, sql, param_list):
-        start = time()
-        try:
-            return self.cursor.executemany(sql, param_list)
-        finally:
-            stop = time()
-            self.db.queries.append({
-                'sql': '%s times: %s' % (len(param_list), sql),
-                'time': "%.3f" % (stop - start),
-            })
-
-    def __getattr__(self, attr):
-        if attr in self.__dict__:
-            return self.__dict__[attr]
-        else:
-            return getattr(self.cursor, attr)
-
-    def __iter__(self):
-        return iter(self.cursor)
-
-###############################################
-# Converters from database (string) to Python #
-###############################################
-
-def typecast_date(s):
-    return s and datetime.date(*map(int, s.split('-'))) or None # returns None if s is null
-
-def typecast_time(s): # does NOT store time zone information
-    if not s: return None
-    hour, minutes, seconds = s.split(':')
-    if '.' in seconds: # check whether seconds have a fractional part
-        seconds, microseconds = seconds.split('.')
-    else:
-        microseconds = '0'
-    return datetime.time(int(hour), int(minutes), int(seconds), int(float('.'+microseconds) * 1000000))
-
-def typecast_timestamp(s): # does NOT store time zone information
-    # "2005-07-29 15:48:00.590358-05"
-    # "2005-07-29 09:56:00-05"
-    if not s: return None
-    if not ' ' in s: return typecast_date(s)
-    d, t = s.split()
-    # Extract timezone information, if it exists. Currently we just throw
-    # it away, but in the future we may make use of it.
-    if '-' in t:
-        t, tz = t.split('-', 1)
-        tz = '-' + tz
-    elif '+' in t:
-        t, tz = t.split('+', 1)
-        tz = '+' + tz
-    else:
-        tz = ''
-    dates = d.split('-')
-    times = t.split(':')
-    seconds = times[2]
-    if '.' in seconds: # check whether seconds have a fractional part
-        seconds, microseconds = seconds.split('.')
-    else:
-        microseconds = '0'
-    return datetime.datetime(int(dates[0]), int(dates[1]), int(dates[2]),
-        int(times[0]), int(times[1]), int(seconds), int(float('.'+microseconds) * 1000000))
-
-def typecast_boolean(s):
-    if s is None: return None
-    if not s: return False
-    return str(s)[0].lower() == 't'
-
-def typecast_decimal(s):
-    if s is None or s == '':
-        return None
-    return decimal.Decimal(s)
-
-###############################################
-# Converters from Python to database (string) #
-###############################################
-
-def rev_typecast_boolean(obj, d):
-    return obj and '1' or '0'
-
-def rev_typecast_decimal(d):
-    if d is None:
-        return None
-    return str(d)
-
-def truncate_name(name, length=None):
-    """Shortens a string to a repeatable mangled version with the given length.
-    """
-    if length is None or len(name) <= length:
-        return name
-
-    hash = md5_constructor(name).hexdigest()[:4]
-
-    return '%s%s' % (name[:length-4], hash)
-
-def format_number(value, max_digits, decimal_places):
-    """
-    Formats a number into a string with the requisite number of digits and
-    decimal places.
-    """
-    return u"%.*f" % (decimal_places, value)
diff --git a/webapp/django/db/models/__init__.py b/webapp/django/db/models/__init__.py
deleted file mode 100644
index cbd6855..0000000
--- a/webapp/django/db/models/__init__.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from django.conf import settings
-from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured
-from django.core import validators
-from django.db import connection
-from django.db.models.loading import get_apps, get_app, get_models, get_model, register_models
-from django.db.models.query import Q
-from django.db.models.manager import Manager
-from django.db.models.base import Model
-from django.db.models.fields import *
-from django.db.models.fields.subclassing import SubfieldBase
-from django.db.models.fields.files import FileField, ImageField
-from django.db.models.fields.related import ForeignKey, OneToOneField, ManyToManyField, ManyToOneRel, ManyToManyRel, OneToOneRel, TABULAR, STACKED
-from django.db.models import signals
-
-# Admin stages.
-ADD, CHANGE, BOTH = 1, 2, 3
-
-def permalink(func):
-    """
-    Decorator that calls urlresolvers.reverse() to return a URL using
-    parameters returned by the decorated function "func".
-
-    "func" should be a function that returns a tuple in one of the
-    following formats:
-        (viewname, viewargs)
-        (viewname, viewargs, viewkwargs)
-    """
-    from django.core.urlresolvers import reverse
-    def inner(*args, **kwargs):
-        bits = func(*args, **kwargs)
-        return reverse(bits[0], None, *bits[1:3])
-    return inner
diff --git a/webapp/django/db/models/base.py b/webapp/django/db/models/base.py
deleted file mode 100644
index 115d82b..0000000
--- a/webapp/django/db/models/base.py
+++ /dev/null
@@ -1,504 +0,0 @@
-import copy
-import types
-import sys
-import os
-from itertools import izip
-try:
-    set
-except NameError:
-    from sets import Set as set     # Python 2.3 fallback.
-
-import django.db.models.manipulators    # Imported to register signal handler.
-import django.db.models.manager         # Ditto.
-from django.core import validators
-from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned, FieldError
-from django.db.models.fields import AutoField
-from django.db.models.fields.related import OneToOneRel, ManyToOneRel, OneToOneField
-from django.db.models.query import delete_objects, Q, CollectedObjects
-from django.db.models.options import Options
-from django.db import connection, transaction, DatabaseError
-from django.db.models import signals
-from django.db.models.loading import register_models, get_model
-from django.utils.functional import curry
-from django.utils.encoding import smart_str, force_unicode, smart_unicode
-from django.core.files.move import file_move_safe
-from django.core.files import locks
-from django.conf import settings
-
-
-class ModelBase(type):
-    """
-    Metaclass for all models.
-    """
-    def __new__(cls, name, bases, attrs):
-        super_new = super(ModelBase, cls).__new__
-        parents = [b for b in bases if isinstance(b, ModelBase)]
-        if not parents:
-            # If this isn't a subclass of Model, don't do anything special.
-            return super_new(cls, name, bases, attrs)
-
-        # Create the class.
-        module = attrs.pop('__module__')
-        new_class = super_new(cls, name, bases, {'__module__': module})
-        attr_meta = attrs.pop('Meta', None)
-        abstract = getattr(attr_meta, 'abstract', False)
-        if not attr_meta:
-            meta = getattr(new_class, 'Meta', None)
-        else:
-            meta = attr_meta
-        base_meta = getattr(new_class, '_meta', None)
-
-        if getattr(meta, 'app_label', None) is None:
-            # Figure out the app_label by looking one level up.
-            # For 'django.contrib.sites.models', this would be 'sites'.
-            model_module = sys.modules[new_class.__module__]
-            kwargs = {"app_label": model_module.__name__.split('.')[-2]}
-        else:
-            kwargs = {}
-
-        new_class.add_to_class('_meta', Options(meta, **kwargs))
-        if not abstract:
-            new_class.add_to_class('DoesNotExist',
-                    subclass_exception('DoesNotExist', ObjectDoesNotExist, module))
-            new_class.add_to_class('MultipleObjectsReturned',
-                    subclass_exception('MultipleObjectsReturned', MultipleObjectsReturned, module))
-            if base_meta and not base_meta.abstract:
-                # Non-abstract child classes inherit some attributes from their
-                # non-abstract parent (unless an ABC comes before it in the
-                # method resolution order).
-                if not hasattr(meta, 'ordering'):
-                    new_class._meta.ordering = base_meta.ordering
-                if not hasattr(meta, 'get_latest_by'):
-                    new_class._meta.get_latest_by = base_meta.get_latest_by
-
-        old_default_mgr = None
-        if getattr(new_class, '_default_manager', None):
-            # We have a parent who set the default manager.
-            if new_class._default_manager.model._meta.abstract:
-                old_default_mgr = new_class._default_manager
-            new_class._default_manager = None
-
-        # Bail out early if we have already created this class.
-        m = get_model(new_class._meta.app_label, name, False)
-        if m is not None:
-            return m
-
-        # Add all attributes to the class.
-        for obj_name, obj in attrs.items():
-            new_class.add_to_class(obj_name, obj)
-
-        # Do the appropriate setup for any model parents.
-        o2o_map = dict([(f.rel.to, f) for f in new_class._meta.local_fields
-                if isinstance(f, OneToOneField)])
-        for base in parents:
-            if not hasattr(base, '_meta'):
-                # Things without _meta aren't functional models, so they're
-                # uninteresting parents.
-                continue
-            if not base._meta.abstract:
-                if base in o2o_map:
-                    field = o2o_map[base]
-                    field.primary_key = True
-                    new_class._meta.setup_pk(field)
-                else:
-                    attr_name = '%s_ptr' % base._meta.module_name
-                    field = OneToOneField(base, name=attr_name,
-                            auto_created=True, parent_link=True)
-                    new_class.add_to_class(attr_name, field)
-                new_class._meta.parents[base] = field
-            else:
-                # The abstract base class case.
-                names = set([f.name for f in new_class._meta.local_fields + new_class._meta.many_to_many])
-                for field in base._meta.local_fields + base._meta.local_many_to_many:
-                    if field.name in names:
-                        raise FieldError('Local field %r in class %r clashes with field of similar name from abstract base class %r'
-                                % (field.name, name, base.__name__))
-                    new_class.add_to_class(field.name, copy.deepcopy(field))
-
-        if abstract:
-            # Abstract base models can't be instantiated and don't appear in
-            # the list of models for an app. We do the final setup for them a
-            # little differently from normal models.
-            attr_meta.abstract = False
-            new_class.Meta = attr_meta
-            return new_class
-
-        if old_default_mgr and not new_class._default_manager:
-            new_class._default_manager = old_default_mgr._copy_to_model(new_class)
-        new_class._prepare()
-        register_models(new_class._meta.app_label, new_class)
-
-        # Because of the way imports happen (recursively), we may or may not be
-        # the first time this model tries to register with the framework. There
-        # should only be one class for each model, so we always return the
-        # registered version.
-        return get_model(new_class._meta.app_label, name, False)
-
-    def add_to_class(cls, name, value):
-        if hasattr(value, 'contribute_to_class'):
-            value.contribute_to_class(cls, name)
-        else:
-            setattr(cls, name, value)
-
-    def _prepare(cls):
-        """
-        Creates some methods once self._meta has been populated.
-        """
-        opts = cls._meta
-        opts._prepare(cls)
-
-        if opts.order_with_respect_to:
-            cls.get_next_in_order = curry(cls._get_next_or_previous_in_order, is_next=True)
-            cls.get_previous_in_order = curry(cls._get_next_or_previous_in_order, is_next=False)
-            setattr(opts.order_with_respect_to.rel.to, 'get_%s_order' % cls.__name__.lower(), curry(method_get_order, cls))
-            setattr(opts.order_with_respect_to.rel.to, 'set_%s_order' % cls.__name__.lower(), curry(method_set_order, cls))
-
-        # Give the class a docstring -- its definition.
-        if cls.__doc__ is None:
-            cls.__doc__ = "%s(%s)" % (cls.__name__, ", ".join([f.attname for f in opts.fields]))
-
-        if hasattr(cls, 'get_absolute_url'):
-            cls.get_absolute_url = curry(get_absolute_url, opts, cls.get_absolute_url)
-
-        signals.class_prepared.send(sender=cls)
-
-
-class Model(object):
-    __metaclass__ = ModelBase
-
-    def __init__(self, *args, **kwargs):
-        signals.pre_init.send(sender=self.__class__, args=args, kwargs=kwargs)
-
-        # There is a rather weird disparity here; if kwargs, it's set, then args
-        # overrides it. It should be one or the other; don't duplicate the work
-        # The reason for the kwargs check is that standard iterator passes in by
-        # args, and instantiation for iteration is 33% faster.
-        args_len = len(args)
-        if args_len > len(self._meta.fields):
-            # Daft, but matches old exception sans the err msg.
-            raise IndexError("Number of args exceeds number of fields")
-
-        fields_iter = iter(self._meta.fields)
-        if not kwargs:
-            # The ordering of the izip calls matter - izip throws StopIteration
-            # when an iter throws it. So if the first iter throws it, the second
-            # is *not* consumed. We rely on this, so don't change the order
-            # without changing the logic.
-            for val, field in izip(args, fields_iter):
-                setattr(self, field.attname, val)
-        else:
-            # Slower, kwargs-ready version.
-            for val, field in izip(args, fields_iter):
-                setattr(self, field.attname, val)
-                kwargs.pop(field.name, None)
-                # Maintain compatibility with existing calls.
-                if isinstance(field.rel, ManyToOneRel):
-                    kwargs.pop(field.attname, None)
-
-        # Now we're left with the unprocessed fields that *must* come from
-        # keywords, or default.
-
-        for field in fields_iter:
-            rel_obj = None
-            if kwargs:
-                if isinstance(field.rel, ManyToOneRel):
-                    try:
-                        # Assume object instance was passed in.
-                        rel_obj = kwargs.pop(field.name)
-                    except KeyError:
-                        try:
-                            # Object instance wasn't passed in -- must be an ID.
-                            val = kwargs.pop(field.attname)
-                        except KeyError:
-                            val = field.get_default()
-                    else:
-                        # Object instance was passed in. Special case: You can
-                        # pass in "None" for related objects if it's allowed.
-                        if rel_obj is None and field.null:
-                            val = None
-                else:
-                    val = kwargs.pop(field.attname, field.get_default())
-            else:
-                val = field.get_default()
-            # If we got passed a related instance, set it using the field.name
-            # instead of field.attname (e.g. "user" instead of "user_id") so
-            # that the object gets properly cached (and type checked) by the
-            # RelatedObjectDescriptor.
-            if rel_obj:
-                setattr(self, field.name, rel_obj)
-            else:
-                setattr(self, field.attname, val)
-
-        if kwargs:
-            for prop in kwargs.keys():
-                try:
-                    if isinstance(getattr(self.__class__, prop), property):
-                        setattr(self, prop, kwargs.pop(prop))
-                except AttributeError:
-                    pass
-            if kwargs:
-                raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0]
-        signals.post_init.send(sender=self.__class__, instance=self)
-
-    def __repr__(self):
-        return smart_str(u'<%s: %s>' % (self.__class__.__name__, unicode(self)))
-
-    def __str__(self):
-        if hasattr(self, '__unicode__'):
-            return force_unicode(self).encode('utf-8')
-        return '%s object' % self.__class__.__name__
-
-    def __eq__(self, other):
-        return isinstance(other, self.__class__) and self._get_pk_val() == other._get_pk_val()
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def __hash__(self):
-        return hash(self._get_pk_val())
-
-    def _get_pk_val(self, meta=None):
-        if not meta:
-            meta = self._meta
-        return getattr(self, meta.pk.attname)
-
-    def _set_pk_val(self, value):
-        return setattr(self, self._meta.pk.attname, value)
-
-    pk = property(_get_pk_val, _set_pk_val)
-
-    def save(self, force_insert=False, force_update=False):
-        """
-        Saves the current instance. Override this in a subclass if you want to
-        control the saving process.
-
-        The 'force_insert' and 'force_update' parameters can be used to insist
-        that the "save" must be an SQL insert or update (or equivalent for
-        non-SQL backends), respectively. Normally, they should not be set.
-        """
-        if force_insert and force_update:
-            raise ValueError("Cannot force both insert and updating in "
-                    "model saving.")
-        self.save_base(force_insert=force_insert, force_update=force_update)
-
-    save.alters_data = True
-
-    def save_base(self, raw=False, cls=None, force_insert=False,
-            force_update=False):
-        """
-        Does the heavy-lifting involved in saving. Subclasses shouldn't need to
-        override this method. It's separate from save() in order to hide the
-        need for overrides of save() to pass around internal-only parameters
-        ('raw' and 'cls').
-        """
-        assert not (force_insert and force_update)
-        if not cls:
-            cls = self.__class__
-            meta = self._meta
-            signal = True
-            signals.pre_save.send(sender=self.__class__, instance=self, raw=raw)
-        else:
-            meta = cls._meta
-            signal = False
-
-        # If we are in a raw save, save the object exactly as presented.
-        # That means that we don't try to be smart about saving attributes
-        # that might have come from the parent class - we just save the
-        # attributes we have been given to the class we have been given.
-        if not raw:
-            for parent, field in meta.parents.items():
-                # At this point, parent's primary key field may be unknown
-                # (for example, from administration form which doesn't fill
-                # this field). If so, fill it.
-                if getattr(self, parent._meta.pk.attname) is None and getattr(self, field.attname) is not None:
-                    setattr(self, parent._meta.pk.attname, getattr(self, field.attname))
-
-                self.save_base(raw, parent)
-                setattr(self, field.attname, self._get_pk_val(parent._meta))
-
-        non_pks = [f for f in meta.local_fields if not f.primary_key]
-
-        # First, try an UPDATE. If that doesn't update anything, do an INSERT.
-        pk_val = self._get_pk_val(meta)
-        # Note: the comparison with '' is required for compatibility with
-        # oldforms-style model creation.
-        pk_set = pk_val is not None and smart_unicode(pk_val) != u''
-        record_exists = True
-        manager = cls._default_manager
-        if pk_set:
-            # Determine whether a record with the primary key already exists.
-            if (force_update or (not force_insert and
-                    manager.filter(pk=pk_val).extra(select={'a': 1}).values('a').order_by())):
-                # It does already exist, so do an UPDATE.
-                if force_update or non_pks:
-                    values = [(f, None, f.get_db_prep_save(raw and getattr(self, f.attname) or f.pre_save(self, False))) for f in non_pks]
-                    rows = manager.filter(pk=pk_val)._update(values)
-                    if force_update and not rows:
-                        raise DatabaseError("Forced update did not affect any rows.")
-            else:
-                record_exists = False
-        if not pk_set or not record_exists:
-            if not pk_set:
-                if force_update:
-                    raise ValueError("Cannot force an update in save() with no primary key.")
-                values = [(f, f.get_db_prep_save(raw and getattr(self, f.attname) or f.pre_save(self, True))) for f in meta.local_fields if not isinstance(f, AutoField)]
-            else:
-                values = [(f, f.get_db_prep_save(raw and getattr(self, f.attname) or f.pre_save(self, True))) for f in meta.local_fields]
-
-            if meta.order_with_respect_to:
-                field = meta.order_with_respect_to
-                values.append((meta.get_field_by_name('_order')[0], manager.filter(**{field.name: getattr(self, field.attname)}).count()))
-            record_exists = False
-
-            update_pk = bool(meta.has_auto_field and not pk_set)
-            if values:
-                # Create a new record.
-                result = manager._insert(values, return_id=update_pk)
-            else:
-                # Create a new record with defaults for everything.
-                result = manager._insert([(meta.pk, connection.ops.pk_default_value())], return_id=update_pk, raw_values=True)
-
-            if update_pk:
-                setattr(self, meta.pk.attname, result)
-        transaction.commit_unless_managed()
-
-        if signal:
-            signals.post_save.send(sender=self.__class__, instance=self,
-                created=(not record_exists), raw=raw)
-
-    save_base.alters_data = True
-
-    def _collect_sub_objects(self, seen_objs, parent=None, nullable=False):
-        """
-        Recursively populates seen_objs with all objects related to this
-        object.
-
-        When done, seen_objs.items() will be in the format:
-            [(model_class, {pk_val: obj, pk_val: obj, ...}),
-             (model_class, {pk_val: obj, pk_val: obj, ...}), ...]
-        """
-        pk_val = self._get_pk_val()
-        if seen_objs.add(self.__class__, pk_val, self, parent, nullable):
-            return
-
-        for related in self._meta.get_all_related_objects():
-            rel_opts_name = related.get_accessor_name()
-            if isinstance(related.field.rel, OneToOneRel):
-                try:
-                    sub_obj = getattr(self, rel_opts_name)
-                except ObjectDoesNotExist:
-                    pass
-                else:
-                    sub_obj._collect_sub_objects(seen_objs, self.__class__, related.field.null)
-            else:
-                for sub_obj in getattr(self, rel_opts_name).all():
-                    sub_obj._collect_sub_objects(seen_objs, self.__class__, related.field.null)
-
-        # Handle any ancestors (for the model-inheritance case). We do this by
-        # traversing to the most remote parent classes -- those with no parents
-        # themselves -- and then adding those instances to the collection. That
-        # will include all the child instances down to "self".
-        parent_stack = self._meta.parents.values()
-        while parent_stack:
-            link = parent_stack.pop()
-            parent_obj = getattr(self, link.name)
-            if parent_obj._meta.parents:
-                parent_stack.extend(parent_obj._meta.parents.values())
-                continue
-            # At this point, parent_obj is base class (no ancestor models). So
-            # delete it and all its descendents.
-            parent_obj._collect_sub_objects(seen_objs)
-
-    def delete(self):
-        assert self._get_pk_val() is not None, "%s object can't be deleted because its %s attribute is set to None." % (self._meta.object_name, self._meta.pk.attname)
-
-        # Find all the objects than need to be deleted.
-        seen_objs = CollectedObjects()
-        self._collect_sub_objects(seen_objs)
-
-        # Actually delete the objects.
-        delete_objects(seen_objs)
-
-    delete.alters_data = True
-
-    def _get_FIELD_display(self, field):
-        value = getattr(self, field.attname)
-        return force_unicode(dict(field.flatchoices).get(value, value), strings_only=True)
-
-    def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs):
-        op = is_next and 'gt' or 'lt'
-        order = not is_next and '-' or ''
-        param = smart_str(getattr(self, field.attname))
-        q = Q(**{'%s__%s' % (field.name, op): param})
-        q = q|Q(**{field.name: param, 'pk__%s' % op: self.pk})
-        qs = self.__class__._default_manager.filter(**kwargs).filter(q).order_by('%s%s' % (order, field.name), '%spk' % order)
-        try:
-            return qs[0]
-        except IndexError:
-            raise self.DoesNotExist, "%s matching query does not exist." % self.__class__._meta.object_name
-
-    def _get_next_or_previous_in_order(self, is_next):
-        cachename = "__%s_order_cache" % is_next
-        if not hasattr(self, cachename):
-            qn = connection.ops.quote_name
-            op = is_next and '>' or '<'
-            order = not is_next and '-_order' or '_order'
-            order_field = self._meta.order_with_respect_to
-            # FIXME: When querysets support nested queries, this can be turned
-            # into a pure queryset operation.
-            where = ['%s %s (SELECT %s FROM %s WHERE %s=%%s)' % \
-                (qn('_order'), op, qn('_order'),
-                qn(self._meta.db_table), qn(self._meta.pk.column))]
-            params = [self.pk]
-            obj = self._default_manager.filter(**{order_field.name: getattr(self, order_field.attname)}).extra(where=where, params=params).order_by(order)[:1].get()
-            setattr(self, cachename, obj)
-        return getattr(self, cachename)
-
-
-
-############################################
-# HELPER FUNCTIONS (CURRIED MODEL METHODS) #
-############################################
-
-# ORDERING METHODS #########################
-
-def method_set_order(ordered_obj, self, id_list):
-    rel_val = getattr(self, ordered_obj._meta.order_with_respect_to.rel.field_name)
-    order_name = ordered_obj._meta.order_with_respect_to.name
-    # FIXME: It would be nice if there was an "update many" version of update
-    # for situations like this.
-    for i, j in enumerate(id_list):
-        ordered_obj.objects.filter(**{'pk': j, order_name: rel_val}).update(_order=i)
-    transaction.commit_unless_managed()
-
-
-def method_get_order(ordered_obj, self):
-    rel_val = getattr(self, ordered_obj._meta.order_with_respect_to.rel.field_name)
-    order_name = ordered_obj._meta.order_with_respect_to.name
-    pk_name = ordered_obj._meta.pk.name
-    return [r[pk_name] for r in
-            ordered_obj.objects.filter(**{order_name: rel_val}).values(pk_name)]
-
-
-##############################################
-# HELPER FUNCTIONS (CURRIED MODEL FUNCTIONS) #
-##############################################
-
-def get_absolute_url(opts, func, self, *args, **kwargs):
-    return settings.ABSOLUTE_URL_OVERRIDES.get('%s.%s' % (opts.app_label, opts.module_name), func)(self, *args, **kwargs)
-
-
-########
-# MISC #
-########
-
-class Empty(object):
-    pass
-
-if sys.version_info < (2, 5):
-    # Prior to Python 2.5, Exception was an old-style class
-    def subclass_exception(name, parent, unused):
-        return types.ClassType(name, (parent,), {})
-else:
-    def subclass_exception(name, parent, module):
-        return type(name, (parent,), {'__module__': module})
diff --git a/webapp/django/db/models/fields/__init__.py b/webapp/django/db/models/fields/__init__.py
deleted file mode 100644
index b8d0567..0000000
--- a/webapp/django/db/models/fields/__init__.py
+++ /dev/null
@@ -1,1035 +0,0 @@
-import copy
-import datetime
-import os
-import time
-try:
-    import decimal
-except ImportError:
-    from django.utils import _decimal as decimal    # for Python 2.3
-
-from django.db import connection
-from django.db.models import signals
-from django.db.models.query_utils import QueryWrapper
-from django.dispatch import dispatcher
-from django.conf import settings
-from django.core import validators
-from django import oldforms
-from django import forms
-from django.core.exceptions import ObjectDoesNotExist
-from django.utils.datastructures import DictWrapper
-from django.utils.functional import curry
-from django.utils.itercompat import tee
-from django.utils.text import capfirst
-from django.utils.translation import ugettext_lazy, ugettext as _
-from django.utils.encoding import smart_unicode, force_unicode, smart_str
-from django.utils import datetime_safe
-
-class NOT_PROVIDED:
-    pass
-
-# The values to use for "blank" in SelectFields. Will be appended to the start of most "choices" lists.
-BLANK_CHOICE_DASH = [("", "---------")]
-BLANK_CHOICE_NONE = [("", "None")]
-
-class FieldDoesNotExist(Exception):
-    pass
-
-def manipulator_validator_unique(f, opts, self, field_data, all_data):
-    "Validates that the value is unique for this field."
-    lookup_type = f.get_validator_unique_lookup_type()
-    try:
-        old_obj = self.manager.get(**{lookup_type: field_data})
-    except ObjectDoesNotExist:
-        return
-    if getattr(self, 'original_object', None) and self.original_object._get_pk_val() == old_obj._get_pk_val():
-        return
-    raise validators.ValidationError, _("%(optname)s with this %(fieldname)s already exists.") % {'optname': capfirst(opts.verbose_name), 'fieldname': f.verbose_name}
-
-# A guide to Field parameters:
-#
-#   * name:      The name of the field specifed in the model.
-#   * attname:   The attribute to use on the model object. This is the same as
-#                "name", except in the case of ForeignKeys, where "_id" is
-#                appended.
-#   * db_column: The db_column specified in the model (or None).
-#   * column:    The database column for this field. This is the same as
-#                "attname", except if db_column is specified.
-#
-# Code that introspects values, or does other dynamic things, should use
-# attname. For example, this gets the primary key value of object "obj":
-#
-#     getattr(obj, opts.pk.attname)
-
-class Field(object):
-    # Designates whether empty strings fundamentally are allowed at the
-    # database level.
-    empty_strings_allowed = True
-
-    # These track each time a Field instance is created. Used to retain order.
-    # The auto_creation_counter is used for fields that Django implicitly
-    # creates, creation_counter is used for all user-specified fields.
-    creation_counter = 0
-    auto_creation_counter = -1
-
-    def __init__(self, verbose_name=None, name=None, primary_key=False,
-            max_length=None, unique=False, blank=False, null=False,
-            db_index=False, core=False, rel=None, default=NOT_PROVIDED,
-            editable=True, serialize=True, unique_for_date=None,
-            unique_for_month=None, unique_for_year=None, validator_list=None,
-            choices=None, help_text='', db_column=None, db_tablespace=None,
-            auto_created=False):
-        self.name = name
-        self.verbose_name = verbose_name
-        self.primary_key = primary_key
-        self.max_length, self._unique = max_length, unique
-        self.blank, self.null = blank, null
-        # Oracle treats the empty string ('') as null, so coerce the null
-        # option whenever '' is a possible value.
-        if self.empty_strings_allowed and connection.features.interprets_empty_strings_as_nulls:
-            self.null = True
-        self.core, self.rel, self.default = core, rel, default
-        self.editable = editable
-        self.serialize = serialize
-        self.validator_list = validator_list or []
-        self.unique_for_date, self.unique_for_month = unique_for_date, unique_for_month
-        self.unique_for_year = unique_for_year
-        self._choices = choices or []
-        self.help_text = help_text
-        self.db_column = db_column
-        self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
-        self.auto_created = auto_created
-
-        # Set db_index to True if the field has a relationship and doesn't explicitly set db_index.
-        self.db_index = db_index
-
-        # Adjust the appropriate creation counter, and save our local copy.
-        if auto_created:
-            self.creation_counter = Field.auto_creation_counter
-            Field.auto_creation_counter -= 1
-        else:
-            self.creation_counter = Field.creation_counter
-            Field.creation_counter += 1
-
-    def __cmp__(self, other):
-        # This is needed because bisect does not take a comparison function.
-        return cmp(self.creation_counter, other.creation_counter)
-
-    def __deepcopy__(self, memodict):
-        # We don't have to deepcopy very much here, since most things are not
-        # intended to be altered after initial creation.
-        obj = copy.copy(self)
-        if self.rel:
-            obj.rel = copy.copy(self.rel)
-        memodict[id(self)] = obj
-        return obj
-
-    def to_python(self, value):
-        """
-        Converts the input value into the expected Python data type, raising
-        validators.ValidationError if the data can't be converted. Returns the
-        converted value. Subclasses should override this.
-        """
-        return value
-
-    def db_type(self):
-        """
-        Returns the database column data type for this field, taking into
-        account the DATABASE_ENGINE setting.
-        """
-        # The default implementation of this method looks at the
-        # backend-specific DATA_TYPES dictionary, looking up the field by its
-        # "internal type".
-        #
-        # A Field class can implement the get_internal_type() method to specify
-        # which *preexisting* Django Field class it's most similar to -- i.e.,
-        # an XMLField is represented by a TEXT column type, which is the same
-        # as the TextField Django field type, which means XMLField's
-        # get_internal_type() returns 'TextField'.
-        #
-        # But the limitation of the get_internal_type() / data_types approach
-        # is that it cannot handle database column types that aren't already
-        # mapped to one of the built-in Django field types. In this case, you
-        # can implement db_type() instead of get_internal_type() to specify
-        # exactly which wacky database column type you want to use.
-        data = DictWrapper(self.__dict__, connection.ops.quote_name, "qn_")
-        try:
-            return connection.creation.data_types[self.get_internal_type()] % data
-        except KeyError:
-            return None
-
-    def unique(self):
-        return self._unique or self.primary_key
-    unique = property(unique)
-
-    def set_attributes_from_name(self, name):
-        self.name = name
-        self.attname, self.column = self.get_attname_column()
-        if self.verbose_name is None and name:
-            self.verbose_name = name.replace('_', ' ')
-
-    def contribute_to_class(self, cls, name):
-        self.set_attributes_from_name(name)
-        cls._meta.add_field(self)
-        if self.choices:
-            setattr(cls, 'get_%s_display' % self.name, curry(cls._get_FIELD_display, field=self))
-
-    def get_attname(self):
-        return self.name
-
-    def get_attname_column(self):
-        attname = self.get_attname()
-        column = self.db_column or attname
-        return attname, column
-
-    def get_cache_name(self):
-        return '_%s_cache' % self.name
-
-    def get_internal_type(self):
-        return self.__class__.__name__
-
-    def pre_save(self, model_instance, add):
-        "Returns field's value just before saving."
-        return getattr(model_instance, self.attname)
-
-    def get_db_prep_value(self, value):
-        """Returns field's value prepared for interacting with the database
-        backend.
-
-        Used by the default implementations of ``get_db_prep_save``and
-        `get_db_prep_lookup```
-        """
-        return value
-
-    def get_db_prep_save(self, value):
-        "Returns field's value prepared for saving into a database."
-        return self.get_db_prep_value(value)
-
-    def get_db_prep_lookup(self, lookup_type, value):
-        "Returns field's value prepared for database lookup."
-        if hasattr(value, 'as_sql'):
-            sql, params = value.as_sql()
-            return QueryWrapper(('(%s)' % sql), params)
-        if lookup_type in ('regex', 'iregex', 'month', 'day', 'search'):
-            return [value]
-        elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
-            return [self.get_db_prep_value(value)]
-        elif lookup_type in ('range', 'in'):
-            return [self.get_db_prep_value(v) for v in value]
-        elif lookup_type in ('contains', 'icontains'):
-            return ["%%%s%%" % connection.ops.prep_for_like_query(value)]
-        elif lookup_type == 'iexact':
-            return [connection.ops.prep_for_like_query(value)]
-        elif lookup_type in ('startswith', 'istartswith'):
-            return ["%s%%" % connection.ops.prep_for_like_query(value)]
-        elif lookup_type in ('endswith', 'iendswith'):
-            return ["%%%s" % connection.ops.prep_for_like_query(value)]
-        elif lookup_type == 'isnull':
-            return []
-        elif lookup_type == 'year':
-            try:
-                value = int(value)
-            except ValueError:
-                raise ValueError("The __year lookup type requires an integer argument")
-
-            if self.get_internal_type() == 'DateField':
-                return connection.ops.year_lookup_bounds_for_date_field(value)
-            else:
-                return connection.ops.year_lookup_bounds(value)
-
-        raise TypeError("Field has invalid lookup: %s" % lookup_type)
-
-    def has_default(self):
-        "Returns a boolean of whether this field has a default value."
-        return self.default is not NOT_PROVIDED
-
-    def get_default(self):
-        "Returns the default value for this field."
-        if self.default is not NOT_PROVIDED:
-            if callable(self.default):
-                return self.default()
-            return force_unicode(self.default, strings_only=True)
-        if not self.empty_strings_allowed or (self.null and not connection.features.interprets_empty_strings_as_nulls):
-            return None
-        return ""
-
-    def get_manipulator_field_names(self, name_prefix):
-        """
-        Returns a list of field names that this object adds to the manipulator.
-        """
-        return [name_prefix + self.name]
-
-    def prepare_field_objs_and_params(self, manipulator, name_prefix):
-        params = {'validator_list': self.validator_list[:]}
-        if self.max_length and not self.choices: # Don't give SelectFields a max_length parameter.
-            params['max_length'] = self.max_length
-
-        if self.choices:
-            field_objs = [oldforms.SelectField]
-
-            params['choices'] = self.get_flatchoices()
-        else:
-            field_objs = self.get_manipulator_field_objs()
-        return (field_objs, params)
-
-    def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True):
-        """
-        Returns a list of oldforms.FormField instances for this field. It
-        calculates the choices at runtime, not at compile time.
-
-        name_prefix is a prefix to prepend to the "field_name" argument.
-        rel is a boolean specifying whether this field is in a related context.
-        """
-        field_objs, params = self.prepare_field_objs_and_params(manipulator, name_prefix)
-
-        # Add the "unique" validator(s).
-        for field_name_list in opts.unique_together:
-            if field_name_list[0] == self.name:
-                params['validator_list'].append(getattr(manipulator, 'isUnique%s' % '_'.join(field_name_list)))
-
-        # Add the "unique for..." validator(s).
-        if self.unique_for_date:
-            params['validator_list'].append(getattr(manipulator, 'isUnique%sFor%s' % (self.name, self.unique_for_date)))
-        if self.unique_for_month:
-            params['validator_list'].append(getattr(manipulator, 'isUnique%sFor%s' % (self.name, self.unique_for_month)))
-        if self.unique_for_year:
-            params['validator_list'].append(getattr(manipulator, 'isUnique%sFor%s' % (self.name, self.unique_for_year)))
-        if self.unique and not rel:
-            params['validator_list'].append(curry(manipulator_validator_unique, self, opts, manipulator))
-
-        # Only add is_required=True if the field cannot be blank. Primary keys
-        # are a special case, and fields in a related context should set this
-        # as False, because they'll be caught by a separate validator --
-        # RequiredIfOtherFieldGiven.
-        params['is_required'] = not self.blank and not self.primary_key and not rel
-
-        # BooleanFields (CheckboxFields) are a special case. They don't take
-        # is_required.
-        if isinstance(self, BooleanField):
-            del params['is_required']
-
-        # If this field is in a related context, check whether any other fields
-        # in the related object have core=True. If so, add a validator --
-        # RequiredIfOtherFieldsGiven -- to this FormField.
-        if rel and not self.blank and not isinstance(self, AutoField) and not isinstance(self, FileField):
-            # First, get the core fields, if any.
-            core_field_names = []
-            for f in opts.fields:
-                if f.core and f != self:
-                    core_field_names.extend(f.get_manipulator_field_names(name_prefix))
-            # Now, if there are any, add the validator to this FormField.
-            if core_field_names:
-                params['validator_list'].append(validators.RequiredIfOtherFieldsGiven(core_field_names, ugettext_lazy("This field is required.")))
-
-        # Finally, add the field_names.
-        field_names = self.get_manipulator_field_names(name_prefix)
-        return [man(field_name=field_names[i], **params) for i, man in enumerate(field_objs)]
-
-    def get_validator_unique_lookup_type(self):
-        return '%s__exact' % self.name
-
-    def get_manipulator_new_data(self, new_data, rel=False):
-        """
-        Given the full new_data dictionary (from the manipulator), returns this
-        field's data.
-        """
-        if rel:
-            return new_data.get(self.name, [self.get_default()])[0]
-        val = new_data.get(self.name, self.get_default())
-        if not self.empty_strings_allowed and val == '' and self.null:
-            val = None
-        return val
-
-    def get_choices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):
-        """Returns choices with a default blank choices included, for use
-        as SelectField choices for this field."""
-        first_choice = include_blank and blank_choice or []
-        if self.choices:
-            return first_choice + list(self.choices)
-        rel_model = self.rel.to
-        if hasattr(self.rel, 'get_related_field'):
-            lst = [(getattr(x, self.rel.get_related_field().attname), smart_unicode(x)) for x in rel_model._default_manager.complex_filter(self.rel.limit_choices_to)]
-        else:
-            lst = [(x._get_pk_val(), smart_unicode(x)) for x in rel_model._default_manager.complex_filter(self.rel.limit_choices_to)]
-        return first_choice + lst
-
-    def get_choices_default(self):
-        return self.get_choices()
-
-    def get_flatchoices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):
-        "Returns flattened choices with a default blank choice included."
-        first_choice = include_blank and blank_choice or []
-        return first_choice + list(self.flatchoices)
-
-    def _get_val_from_obj(self, obj):
-        if obj:
-            return getattr(obj, self.attname)
-        else:
-            return self.get_default()
-
-    def flatten_data(self, follow, obj=None):
-        """
-        Returns a dictionary mapping the field's manipulator field names to its
-        "flattened" string values for the admin view. obj is the instance to
-        extract the values from.
-        """
-        return {self.attname: self._get_val_from_obj(obj)}
-
-    def get_follow(self, override=None):
-        if override != None:
-            return override
-        else:
-            return self.editable
-
-    def bind(self, fieldmapping, original, bound_field_class):
-        return bound_field_class(self, fieldmapping, original)
-
-    def _get_choices(self):
-        if hasattr(self._choices, 'next'):
-            choices, self._choices = tee(self._choices)
-            return choices
-        else:
-            return self._choices
-    choices = property(_get_choices)
-
-    def _get_flatchoices(self):
-        """Flattened version of choices tuple."""
-        flat = []
-        for choice, value in self.choices:
-            if type(value) in (list, tuple):
-                flat.extend(value)
-            else:
-                flat.append((choice,value))
-        return flat
-    flatchoices = property(_get_flatchoices)
-
-    def save_form_data(self, instance, data):
-        setattr(instance, self.name, data)
-
-    def formfield(self, form_class=forms.CharField, **kwargs):
-        "Returns a django.forms.Field instance for this database Field."
-        defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}
-        if self.choices:
-            defaults['widget'] = forms.Select(choices=self.get_choices(include_blank=self.blank or not (self.has_default() or 'initial' in kwargs)))
-        if self.has_default():
-            defaults['initial'] = self.get_default()
-        defaults.update(kwargs)
-        return form_class(**defaults)
-
-    def value_from_object(self, obj):
-        "Returns the value of this field in the given model instance."
-        return getattr(obj, self.attname)
-
-class AutoField(Field):
-    empty_strings_allowed = False
-    def __init__(self, *args, **kwargs):
-        assert kwargs.get('primary_key', False) is True, "%ss must have primary_key=True." % self.__class__.__name__
-        kwargs['blank'] = True
-        Field.__init__(self, *args, **kwargs)
-
-    def to_python(self, value):
-        if value is None:
-            return value
-        try:
-            return int(value)
-        except (TypeError, ValueError):
-            raise validators.ValidationError, _("This value must be an integer.")
-
-    def get_db_prep_value(self, value):
-        if value is None:
-            return None
-        return int(value)
-
-    def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True):
-        if not rel:
-            return [] # Don't add a FormField unless it's in a related context.
-        return Field.get_manipulator_fields(self, opts, manipulator, change, name_prefix, rel, follow)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.HiddenField]
-
-    def get_manipulator_new_data(self, new_data, rel=False):
-        # Never going to be called
-        # Not in main change pages
-        # ignored in related context
-        if not rel:
-            return None
-        return Field.get_manipulator_new_data(self, new_data, rel)
-
-    def contribute_to_class(self, cls, name):
-        assert not cls._meta.has_auto_field, "A model can't have more than one AutoField."
-        super(AutoField, self).contribute_to_class(cls, name)
-        cls._meta.has_auto_field = True
-        cls._meta.auto_field = self
-
-    def formfield(self, **kwargs):
-        return None
-
-class BooleanField(Field):
-    def __init__(self, *args, **kwargs):
-        kwargs['blank'] = True
-        if 'default' not in kwargs and not kwargs.get('null'):
-            kwargs['default'] = False
-        Field.__init__(self, *args, **kwargs)
-
-    def get_internal_type(self):
-        return "BooleanField"
-
-    def to_python(self, value):
-        if value in (True, False): return value
-        if value in ('t', 'True', '1'): return True
-        if value in ('f', 'False', '0'): return False
-        raise validators.ValidationError, _("This value must be either True or False.")
-
-    def get_db_prep_value(self, value):
-        if value is None:
-            return None
-        return bool(value)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.CheckboxField]
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.BooleanField}
-        defaults.update(kwargs)
-        return super(BooleanField, self).formfield(**defaults)
-
-class CharField(Field):
-    def get_manipulator_field_objs(self):
-        return [oldforms.TextField]
-
-    def get_internal_type(self):
-        return "CharField"
-
-    def to_python(self, value):
-        if isinstance(value, basestring):
-            return value
-        if value is None:
-            if self.null:
-                return value
-            else:
-                raise validators.ValidationError, ugettext_lazy("This field cannot be null.")
-        return smart_unicode(value)
-
-    def formfield(self, **kwargs):
-        defaults = {'max_length': self.max_length}
-        defaults.update(kwargs)
-        return super(CharField, self).formfield(**defaults)
-
-# TODO: Maybe move this into contrib, because it's specialized.
-class CommaSeparatedIntegerField(CharField):
-    def get_manipulator_field_objs(self):
-        return [oldforms.CommaSeparatedIntegerField]
-
-class DateField(Field):
-    empty_strings_allowed = False
-    def __init__(self, verbose_name=None, name=None, auto_now=False, auto_now_add=False, **kwargs):
-        self.auto_now, self.auto_now_add = auto_now, auto_now_add
-        #HACKs : auto_now_add/auto_now should be done as a default or a pre_save.
-        if auto_now or auto_now_add:
-            kwargs['editable'] = False
-            kwargs['blank'] = True
-        Field.__init__(self, verbose_name, name, **kwargs)
-
-    def get_internal_type(self):
-        return "DateField"
-
-    def to_python(self, value):
-        if value is None:
-            return value
-        if isinstance(value, datetime.datetime):
-            return value.date()
-        if isinstance(value, datetime.date):
-            return value
-        validators.isValidANSIDate(value, None)
-        try:
-            return datetime.date(*time.strptime(value, '%Y-%m-%d')[:3])
-        except ValueError:
-            raise validators.ValidationError, _('Enter a valid date in YYYY-MM-DD format.')
-
-    def pre_save(self, model_instance, add):
-        if self.auto_now or (self.auto_now_add and add):
-            value = datetime.datetime.now()
-            setattr(model_instance, self.attname, value)
-            return value
-        else:
-            return super(DateField, self).pre_save(model_instance, add)
-
-    def contribute_to_class(self, cls, name):
-        super(DateField,self).contribute_to_class(cls, name)
-        if not self.null:
-            setattr(cls, 'get_next_by_%s' % self.name,
-                curry(cls._get_next_or_previous_by_FIELD, field=self, is_next=True))
-            setattr(cls, 'get_previous_by_%s' % self.name,
-                curry(cls._get_next_or_previous_by_FIELD, field=self, is_next=False))
-
-    # Needed because of horrible auto_now[_add] behaviour wrt. editable
-    def get_follow(self, override=None):
-        if override != None:
-            return override
-        else:
-            return self.editable or self.auto_now or self.auto_now_add
-
-    def get_db_prep_lookup(self, lookup_type, value):
-        # For "__month" and "__day" lookups, convert the value to a string so
-        # the database backend always sees a consistent type.
-        if lookup_type in ('month', 'day'):
-            return [force_unicode(value)]
-        return super(DateField, self).get_db_prep_lookup(lookup_type, value)
-
-    def get_db_prep_value(self, value):
-        # Casts dates into the format expected by the backend
-        return connection.ops.value_to_db_date(self.to_python(value))
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.DateField]
-
-    def flatten_data(self, follow, obj=None):
-        val = self._get_val_from_obj(obj)
-        if val is None:
-            data = ''
-        else:
-            data = datetime_safe.new_date(val).strftime("%Y-%m-%d")
-        return {self.attname: data}
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.DateField}
-        defaults.update(kwargs)
-        return super(DateField, self).formfield(**defaults)
-
-class DateTimeField(DateField):
-    def get_internal_type(self):
-        return "DateTimeField"
-
-    def to_python(self, value):
-        if value is None:
-            return value
-        if isinstance(value, datetime.datetime):
-            return value
-        if isinstance(value, datetime.date):
-            return datetime.datetime(value.year, value.month, value.day)
-
-        # Attempt to parse a datetime:
-        value = smart_str(value)
-        # split usecs, because they are not recognized by strptime.
-        if '.' in value:
-            try:
-                value, usecs = value.split('.')
-                usecs = int(usecs)
-            except ValueError:
-                raise validators.ValidationError, _('Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format.')
-        else:
-            usecs = 0
-        kwargs = {'microsecond': usecs}
-        try: # Seconds are optional, so try converting seconds first.
-            return datetime.datetime(*time.strptime(value, '%Y-%m-%d %H:%M:%S')[:6],
-                                     **kwargs)
-
-        except ValueError:
-            try: # Try without seconds.
-                return datetime.datetime(*time.strptime(value, '%Y-%m-%d %H:%M')[:5],
-                                         **kwargs)
-            except ValueError: # Try without hour/minutes/seconds.
-                try:
-                    return datetime.datetime(*time.strptime(value, '%Y-%m-%d')[:3],
-                                             **kwargs)
-                except ValueError:
-                    raise validators.ValidationError, _('Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format.')
-
-    def get_db_prep_value(self, value):
-        # Casts dates into the format expected by the backend
-        return connection.ops.value_to_db_datetime(self.to_python(value))
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.DateField, oldforms.TimeField]
-
-    def get_manipulator_field_names(self, name_prefix):
-        return [name_prefix + self.name + '_date', name_prefix + self.name + '_time']
-
-    def get_manipulator_new_data(self, new_data, rel=False):
-        date_field, time_field = self.get_manipulator_field_names('')
-        if rel:
-            d = new_data.get(date_field, [None])[0]
-            t = new_data.get(time_field, [None])[0]
-        else:
-            d = new_data.get(date_field, None)
-            t = new_data.get(time_field, None)
-        if d is not None and t is not None:
-            return datetime.datetime.combine(d, t)
-        return self.get_default()
-
-    def flatten_data(self,follow, obj = None):
-        val = self._get_val_from_obj(obj)
-        date_field, time_field = self.get_manipulator_field_names('')
-        if val is None:
-            date_data = time_data = ''
-        else:
-            d = datetime_safe.new_datetime(val)
-            date_data = d.strftime('%Y-%m-%d')
-            time_data = d.strftime('%H:%M:%S')
-        return {date_field: date_data, time_field: time_data}
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.DateTimeField}
-        defaults.update(kwargs)
-        return super(DateTimeField, self).formfield(**defaults)
-
-class DecimalField(Field):
-    empty_strings_allowed = False
-    def __init__(self, verbose_name=None, name=None, max_digits=None, decimal_places=None, **kwargs):
-        self.max_digits, self.decimal_places = max_digits, decimal_places
-        Field.__init__(self, verbose_name, name, **kwargs)
-
-    def get_internal_type(self):
-        return "DecimalField"
-
-    def to_python(self, value):
-        if value is None:
-            return value
-        try:
-            return decimal.Decimal(value)
-        except decimal.InvalidOperation:
-            raise validators.ValidationError(
-                _("This value must be a decimal number."))
-
-    def _format(self, value):
-        if isinstance(value, basestring) or value is None:
-            return value
-        else:
-            return self.format_number(value)
-
-    def format_number(self, value):
-        """
-        Formats a number into a string with the requisite number of digits and
-        decimal places.
-        """
-        # Method moved to django.db.backends.util.
-        #
-        # It is preserved because it is used by the oracle backend
-        # (django.db.backends.oracle.query), and also for
-        # backwards-compatibility with any external code which may have used
-        # this method.
-        from django.db.backends import util
-        return util.format_number(value, self.max_digits, self.decimal_places)
-
-    def get_db_prep_value(self, value):
-        return connection.ops.value_to_db_decimal(self.to_python(value),
-                self.max_digits, self.decimal_places)
-
-    def get_manipulator_field_objs(self):
-        return [curry(oldforms.DecimalField, max_digits=self.max_digits, decimal_places=self.decimal_places)]
-
-    def formfield(self, **kwargs):
-        defaults = {
-            'max_digits': self.max_digits,
-            'decimal_places': self.decimal_places,
-            'form_class': forms.DecimalField,
-        }
-        defaults.update(kwargs)
-        return super(DecimalField, self).formfield(**defaults)
-
-class EmailField(CharField):
-    def __init__(self, *args, **kwargs):
-        kwargs['max_length'] = kwargs.get('max_length', 75)
-        CharField.__init__(self, *args, **kwargs)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.EmailField]
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.EmailField}
-        defaults.update(kwargs)
-        return super(EmailField, self).formfield(**defaults)
-
-class FilePathField(Field):
-    def __init__(self, verbose_name=None, name=None, path='', match=None, recursive=False, **kwargs):
-        self.path, self.match, self.recursive = path, match, recursive
-        kwargs['max_length'] = kwargs.get('max_length', 100)
-        Field.__init__(self, verbose_name, name, **kwargs)
-
-    def formfield(self, **kwargs):
-        defaults = {
-            'path': self.path,
-            'match': self.match,
-            'recursive': self.recursive,
-            'form_class': forms.FilePathField,
-        }
-        defaults.update(kwargs)
-        return super(FilePathField, self).formfield(**defaults)
-
-    def get_manipulator_field_objs(self):
-        return [curry(oldforms.FilePathField, path=self.path, match=self.match, recursive=self.recursive)]
-
-    def get_internal_type(self):
-        return "FilePathField"
-
-class FloatField(Field):
-    empty_strings_allowed = False
-
-    def get_db_prep_value(self, value):
-        if value is None:
-            return None
-        return float(value)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.FloatField]
-
-    def get_internal_type(self):
-        return "FloatField"
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.FloatField}
-        defaults.update(kwargs)
-        return super(FloatField, self).formfield(**defaults)
-
-class IntegerField(Field):
-    empty_strings_allowed = False
-    def get_db_prep_value(self, value):
-        if value is None:
-            return None
-        return int(value)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.IntegerField]
-
-    def get_internal_type(self):
-        return "IntegerField"
-
-    def to_python(self, value):
-        if value is None:
-            return value
-        try:
-            return int(value)
-        except (TypeError, ValueError):
-            raise validators.ValidationError, _("This value must be an integer.")
-                
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.IntegerField}
-        defaults.update(kwargs)
-        return super(IntegerField, self).formfield(**defaults)
-
-class IPAddressField(Field):
-    empty_strings_allowed = False
-    def __init__(self, *args, **kwargs):
-        kwargs['max_length'] = 15
-        Field.__init__(self, *args, **kwargs)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.IPAddressField]
-
-    def get_internal_type(self):
-        return "IPAddressField"
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.IPAddressField}
-        defaults.update(kwargs)
-        return super(IPAddressField, self).formfield(**defaults)
-
-class NullBooleanField(Field):
-    empty_strings_allowed = False
-    def __init__(self, *args, **kwargs):
-        kwargs['null'] = True
-        Field.__init__(self, *args, **kwargs)
-
-    def get_internal_type(self):
-        return "NullBooleanField"
-
-    def to_python(self, value):
-        if value in (None, True, False): return value
-        if value in ('None'): return None
-        if value in ('t', 'True', '1'): return True
-        if value in ('f', 'False', '0'): return False
-        raise validators.ValidationError, _("This value must be either None, True or False.")
-
-    def get_db_prep_value(self, value):
-        if value is None:
-            return None
-        return bool(value)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.NullBooleanField]
-
-    def formfield(self, **kwargs):
-        defaults = {
-            'form_class': forms.NullBooleanField,
-            'required': not self.blank,
-            'label': capfirst(self.verbose_name),
-            'help_text': self.help_text}
-        defaults.update(kwargs)
-        return super(NullBooleanField, self).formfield(**defaults)
-
-class PhoneNumberField(Field):
-    def get_manipulator_field_objs(self):
-        return [oldforms.PhoneNumberField]
-
-    def get_internal_type(self):
-        return "PhoneNumberField"
-
-    def formfield(self, **kwargs):
-        from django.contrib.localflavor.us.forms import USPhoneNumberField
-        defaults = {'form_class': USPhoneNumberField}
-        defaults.update(kwargs)
-        return super(PhoneNumberField, self).formfield(**defaults)
-
-class PositiveIntegerField(IntegerField):
-    def get_manipulator_field_objs(self):
-        return [oldforms.PositiveIntegerField]
-
-    def get_internal_type(self):
-        return "PositiveIntegerField"
-
-    def formfield(self, **kwargs):
-        defaults = {'min_value': 0}
-        defaults.update(kwargs)
-        return super(PositiveIntegerField, self).formfield(**defaults)
-
-class PositiveSmallIntegerField(IntegerField):
-    def get_manipulator_field_objs(self):
-        return [oldforms.PositiveSmallIntegerField]
-
-    def get_internal_type(self):
-        return "PositiveSmallIntegerField"
-
-    def formfield(self, **kwargs):
-        defaults = {'min_value': 0}
-        defaults.update(kwargs)
-        return super(PositiveSmallIntegerField, self).formfield(**defaults)
-
-class SlugField(CharField):
-    def __init__(self, *args, **kwargs):
-        kwargs['max_length'] = kwargs.get('max_length', 50)
-        kwargs.setdefault('validator_list', []).append(validators.isSlug)
-        # Set db_index=True unless it's been set manually.
-        if 'db_index' not in kwargs:
-            kwargs['db_index'] = True
-        super(SlugField, self).__init__(*args, **kwargs)
-
-    def get_internal_type(self):
-        return "SlugField"
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.RegexField, 'regex': r'^[a-zA-Z0-9_-]+$',
-            'error_messages': {'invalid': _(u"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.")},
-        }
-        defaults.update(kwargs)
-        return super(SlugField, self).formfield(**defaults)
-
-class SmallIntegerField(IntegerField):
-    def get_manipulator_field_objs(self):
-        return [oldforms.SmallIntegerField]
-
-    def get_internal_type(self):
-        return "SmallIntegerField"
-
-class TextField(Field):
-    def get_manipulator_field_objs(self):
-        return [oldforms.LargeTextField]
-
-    def get_internal_type(self):
-        return "TextField"
-
-    def formfield(self, **kwargs):
-        defaults = {'widget': forms.Textarea}
-        defaults.update(kwargs)
-        return super(TextField, self).formfield(**defaults)
-
-class TimeField(Field):
-    empty_strings_allowed = False
-    def __init__(self, verbose_name=None, name=None, auto_now=False, auto_now_add=False, **kwargs):
-        self.auto_now, self.auto_now_add = auto_now, auto_now_add
-        if auto_now or auto_now_add:
-            kwargs['editable'] = False
-        Field.__init__(self, verbose_name, name, **kwargs)
-
-    def get_internal_type(self):
-        return "TimeField"
-
-    def to_python(self, value):
-        if value is None:
-            return None
-        if isinstance(value, datetime.time):
-            return value
-
-        # Attempt to parse a datetime:
-        value = smart_str(value)
-        # split usecs, because they are not recognized by strptime.
-        if '.' in value:
-            try:
-                value, usecs = value.split('.')
-                usecs = int(usecs)
-            except ValueError:
-                raise validators.ValidationError, _('Enter a valid time in HH:MM[:ss[.uuuuuu]] format.')
-        else:
-            usecs = 0
-        kwargs = {'microsecond': usecs}
-
-        try: # Seconds are optional, so try converting seconds first.
-            return datetime.time(*time.strptime(value, '%H:%M:%S')[3:6],
-                                 **kwargs)
-        except ValueError:
-            try: # Try without seconds.
-                return datetime.time(*time.strptime(value, '%H:%M')[3:5],
-                                         **kwargs)
-            except ValueError:
-                raise validators.ValidationError, _('Enter a valid time in HH:MM[:ss[.uuuuuu]] format.')
-
-    def pre_save(self, model_instance, add):
-        if self.auto_now or (self.auto_now_add and add):
-            value = datetime.datetime.now().time()
-            setattr(model_instance, self.attname, value)
-            return value
-        else:
-            return super(TimeField, self).pre_save(model_instance, add)
-
-    def get_db_prep_value(self, value):
-        # Casts times into the format expected by the backend
-        return connection.ops.value_to_db_time(self.to_python(value))
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.TimeField]
-
-    def flatten_data(self,follow, obj = None):
-        val = self._get_val_from_obj(obj)
-        return {self.attname: (val is not None and val.strftime("%H:%M:%S") or '')}
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.TimeField}
-        defaults.update(kwargs)
-        return super(TimeField, self).formfield(**defaults)
-
-class URLField(CharField):
-    def __init__(self, verbose_name=None, name=None, verify_exists=True, **kwargs):
-        kwargs['max_length'] = kwargs.get('max_length', 200)
-        if verify_exists:
-            kwargs.setdefault('validator_list', []).append(validators.isExistingURL)
-        self.verify_exists = verify_exists
-        CharField.__init__(self, verbose_name, name, **kwargs)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.URLField]
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.URLField, 'verify_exists': self.verify_exists}
-        defaults.update(kwargs)
-        return super(URLField, self).formfield(**defaults)
-
-class USStateField(Field):
-    def get_manipulator_field_objs(self):
-        return [oldforms.USStateField]
-
-    def get_internal_type(self):
-        return "USStateField"
-
-    def formfield(self, **kwargs):
-        from django.contrib.localflavor.us.forms import USStateSelect
-        defaults = {'widget': USStateSelect}
-        defaults.update(kwargs)
-        return super(USStateField, self).formfield(**defaults)
-
-class XMLField(TextField):
-    def __init__(self, verbose_name=None, name=None, schema_path=None, **kwargs):
-        self.schema_path = schema_path
-        Field.__init__(self, verbose_name, name, **kwargs)
-
-    def get_manipulator_field_objs(self):
-        return [curry(oldforms.XMLLargeTextField, schema_path=self.schema_path)]
-
diff --git a/webapp/django/db/models/fields/files.py b/webapp/django/db/models/fields/files.py
deleted file mode 100644
index 935dee6..0000000
--- a/webapp/django/db/models/fields/files.py
+++ /dev/null
@@ -1,291 +0,0 @@
-import datetime
-import os
-
-from django.conf import settings
-from django.db.models.fields import Field
-from django.core.files.base import File, ContentFile
-from django.core.files.storage import default_storage
-from django.core.files.images import ImageFile, get_image_dimensions
-from django.core.files.uploadedfile import UploadedFile
-from django.utils.functional import curry
-from django.db.models import signals
-from django.utils.encoding import force_unicode, smart_str
-from django.utils.translation import ugettext_lazy, ugettext as _
-from django import oldforms
-from django import forms
-from django.core import validators
-from django.db.models.loading import cache
-
-class FieldFile(File):
-    def __init__(self, instance, field, name):
-        self.instance = instance
-        self.field = field
-        self.storage = field.storage
-        self._name = name or u''
-        self._closed = False
-
-    def __eq__(self, other):
-        # Older code may be expecting FileField values to be simple strings.
-        # By overriding the == operator, it can remain backwards compatibility.
-        if hasattr(other, 'name'):
-            return self.name == other.name
-        return self.name == other
-
-    # The standard File contains most of the necessary properties, but
-    # FieldFiles can be instantiated without a name, so that needs to
-    # be checked for here.
-
-    def _require_file(self):
-        if not self:
-            raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)
-
-    def _get_file(self):
-        self._require_file()
-        if not hasattr(self, '_file'):
-            self._file = self.storage.open(self.name, 'rb')
-        return self._file
-    file = property(_get_file)
-
-    def _get_path(self):
-        self._require_file()
-        return self.storage.path(self.name)
-    path = property(_get_path)
-
-    def _get_url(self):
-        self._require_file()
-        return self.storage.url(self.name)
-    url = property(_get_url)
-
-    def open(self, mode='rb'):
-        self._require_file()
-        return super(FieldFile, self).open(mode)
-    # open() doesn't alter the file's contents, but it does reset the pointer
-    open.alters_data = True
-
-    # In addition to the standard File API, FieldFiles have extra methods
-    # to further manipulate the underlying file, as well as update the
-    # associated model instance.
-
-    def save(self, name, content, save=True):
-        name = self.field.generate_filename(self.instance, name)
-        self._name = self.storage.save(name, content)
-        setattr(self.instance, self.field.name, self.name)
-
-        # Update the filesize cache
-        self._size = len(content)
-
-        # Save the object because it has changed, unless save is False
-        if save:
-            self.instance.save()
-    save.alters_data = True
-
-    def delete(self, save=True):
-        self.close()
-        self.storage.delete(self.name)
-
-        self._name = None
-        setattr(self.instance, self.field.name, self.name)
-
-        # Delete the filesize cache
-        if hasattr(self, '_size'):
-            del self._size
-
-        if save:
-            self.instance.save()
-    delete.alters_data = True
-
-    def __getstate__(self):
-        # FieldFile needs access to its associated model field and an instance
-        # it's attached to in order to work properly, but the only necessary
-        # data to be pickled is the file's name itself. Everything else will
-        # be restored later, by FileDescriptor below.
-        return {'_name': self.name, '_closed': False}
-
-class FileDescriptor(object):
-    def __init__(self, field):
-        self.field = field
-
-    def __get__(self, instance=None, owner=None):
-        if instance is None:
-            raise AttributeError, "%s can only be accessed from %s instances." % (self.field.name(self.owner.__name__))
-        file = instance.__dict__[self.field.name]
-        if not isinstance(file, FieldFile):
-            # Create a new instance of FieldFile, based on a given file name
-            instance.__dict__[self.field.name] = self.field.attr_class(instance, self.field, file)
-        elif not hasattr(file, 'field'):
-            # The FieldFile was pickled, so some attributes need to be reset.
-            file.instance = instance
-            file.field = self.field
-            file.storage = self.field.storage
-        return instance.__dict__[self.field.name]
-
-    def __set__(self, instance, value):
-        instance.__dict__[self.field.name] = value
-
-class FileField(Field):
-    attr_class = FieldFile
-
-    def __init__(self, verbose_name=None, name=None, upload_to='', storage=None, **kwargs):
-        for arg in ('core', 'primary_key', 'unique'):
-            if arg in kwargs:
-                raise TypeError("'%s' is not a valid argument for %s." % (arg, self.__class__))
-
-        self.storage = storage or default_storage
-        self.upload_to = upload_to
-        if callable(upload_to):
-            self.generate_filename = upload_to
-
-        kwargs['max_length'] = kwargs.get('max_length', 100)
-        super(FileField, self).__init__(verbose_name, name, **kwargs)
-
-    def get_internal_type(self):
-        return "FileField"
-
-    def get_db_prep_lookup(self, lookup_type, value):
-        if hasattr(value, 'name'):
-            value = value.name
-        return super(FileField, self).get_db_prep_lookup(lookup_type, value)
-
-    def get_db_prep_value(self, value):
-        "Returns field's value prepared for saving into a database."
-        # Need to convert File objects provided via a form to unicode for database insertion
-        if value is None:
-            return None
-        return unicode(value)
-
-    def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True):
-        field_list = Field.get_manipulator_fields(self, opts, manipulator, change, name_prefix, rel, follow)
-        if not self.blank:
-            if rel:
-                # This validator makes sure FileFields work in a related context.
-                class RequiredFileField(object):
-                    def __init__(self, other_field_names, other_file_field_name):
-                        self.other_field_names = other_field_names
-                        self.other_file_field_name = other_file_field_name
-                        self.always_test = True
-                    def __call__(self, field_data, all_data):
-                        if not all_data.get(self.other_file_field_name, False):
-                            c = validators.RequiredIfOtherFieldsGiven(self.other_field_names, ugettext_lazy("This field is required."))
-                            c(field_data, all_data)
-                # First, get the core fields, if any.
-                core_field_names = []
-                for f in opts.fields:
-                    if f.core and f != self:
-                        core_field_names.extend(f.get_manipulator_field_names(name_prefix))
-                # Now, if there are any, add the validator to this FormField.
-                if core_field_names:
-                    field_list[0].validator_list.append(RequiredFileField(core_field_names, field_list[1].field_name))
-            else:
-                v = validators.RequiredIfOtherFieldNotGiven(field_list[1].field_name, ugettext_lazy("This field is required."))
-                v.always_test = True
-                field_list[0].validator_list.append(v)
-                field_list[0].is_required = field_list[1].is_required = False
-
-        # If the raw path is passed in, validate it's under the MEDIA_ROOT.
-        def isWithinMediaRoot(field_data, all_data):
-            f = os.path.abspath(os.path.join(settings.MEDIA_ROOT, field_data))
-            if not f.startswith(os.path.abspath(os.path.normpath(settings.MEDIA_ROOT))):
-                raise validators.ValidationError(_("Enter a valid filename."))
-        field_list[1].validator_list.append(isWithinMediaRoot)
-        return field_list
-
-    def contribute_to_class(self, cls, name):
-        super(FileField, self).contribute_to_class(cls, name)
-        setattr(cls, self.name, FileDescriptor(self))
-        signals.post_delete.connect(self.delete_file, sender=cls)
-
-    def delete_file(self, instance, sender, **kwargs):
-        file = getattr(instance, self.attname)
-        # If no other object of this type references the file,
-        # and it's not the default value for future objects,
-        # delete it from the backend.
-        if file and file.name != self.default and \
-            not sender._default_manager.filter(**{self.name: file.name}):
-                file.delete(save=False)
-        elif file:
-            # Otherwise, just close the file, so it doesn't tie up resources.
-            file.close()
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.FileUploadField, oldforms.HiddenField]
-
-    def get_manipulator_field_names(self, name_prefix):
-        return [name_prefix + self.name + '_file', name_prefix + self.name]
-
-    def save_file(self, new_data, new_object, original_object, change, rel, save=True):
-        upload_field_name = self.get_manipulator_field_names('')[0]
-        if new_data.get(upload_field_name, False):
-            if rel:
-                file = new_data[upload_field_name][0]
-            else:
-                file = new_data[upload_field_name]
-
-            # Backwards-compatible support for files-as-dictionaries.
-            # We don't need to raise a warning because the storage backend will
-            # do so for us.
-            try:
-                filename = file.name
-            except AttributeError:
-                filename = file['filename']
-            filename = self.get_filename(filename)
-
-            getattr(new_object, self.attname).save(filename, file, save)
-
-    def get_directory_name(self):
-        return os.path.normpath(force_unicode(datetime.datetime.now().strftime(smart_str(self.upload_to))))
-
-    def get_filename(self, filename):
-        return os.path.normpath(self.storage.get_valid_name(os.path.basename(filename)))
-
-    def generate_filename(self, instance, filename):
-        return os.path.join(self.get_directory_name(), self.get_filename(filename))
-
-    def save_form_data(self, instance, data):
-        if data and isinstance(data, UploadedFile):
-            getattr(instance, self.name).save(data.name, data, save=False)
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.FileField}
-        # If a file has been provided previously, then the form doesn't require
-        # that a new file is provided this time.
-        # The code to mark the form field as not required is used by
-        # form_for_instance, but can probably be removed once form_for_instance
-        # is gone. ModelForm uses a different method to check for an existing file.
-        if 'initial' in kwargs:
-            defaults['required'] = False
-        defaults.update(kwargs)
-        return super(FileField, self).formfield(**defaults)
-
-class ImageFieldFile(ImageFile, FieldFile):
-    def save(self, name, content, save=True):
-        # Repopulate the image dimension cache.
-        self._dimensions_cache = get_image_dimensions(content)
-
-        # Update width/height fields, if needed
-        if self.field.width_field:
-            setattr(self.instance, self.field.width_field, self.width)
-        if self.field.height_field:
-            setattr(self.instance, self.field.height_field, self.height)
-
-        super(ImageFieldFile, self).save(name, content, save)
-
-    def delete(self, save=True):
-        # Clear the image dimensions cache
-        if hasattr(self, '_dimensions_cache'):
-            del self._dimensions_cache
-        super(ImageFieldFile, self).delete(save)
-
-class ImageField(FileField):
-    attr_class = ImageFieldFile
-
-    def __init__(self, verbose_name=None, name=None, width_field=None, height_field=None, **kwargs):
-        self.width_field, self.height_field = width_field, height_field
-        FileField.__init__(self, verbose_name, name, **kwargs)
-
-    def get_manipulator_field_objs(self):
-        return [oldforms.ImageUploadField, oldforms.HiddenField]
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.ImageField}
-        defaults.update(kwargs)
-        return super(ImageField, self).formfield(**defaults)
diff --git a/webapp/django/db/models/fields/proxy.py b/webapp/django/db/models/fields/proxy.py
deleted file mode 100644
index 31a31e3..0000000
--- a/webapp/django/db/models/fields/proxy.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""
-Field-like classes that aren't really fields. It's easier to use objects that
-have the same attributes as fields sometimes (avoids a lot of special casing).
-"""
-
-from django.db.models import fields
-
-class OrderWrt(fields.IntegerField):
-    """
-    A proxy for the _order database field that is used when
-    Meta.order_with_respect_to is specified.
-    """
-    name = '_order'
-    attname = '_order'
-    column = '_order'
-
diff --git a/webapp/django/db/models/fields/related.py b/webapp/django/db/models/fields/related.py
deleted file mode 100644
index b09412a..0000000
--- a/webapp/django/db/models/fields/related.py
+++ /dev/null
@@ -1,944 +0,0 @@
-from django.db import connection, transaction
-from django.db.models import signals, get_model
-from django.db.models.fields import AutoField, Field, IntegerField, PositiveIntegerField, PositiveSmallIntegerField, FieldDoesNotExist
-from django.db.models.related import RelatedObject
-from django.db.models.query import QuerySet
-from django.db.models.query_utils import QueryWrapper
-from django.utils.translation import ugettext_lazy, string_concat, ungettext, ugettext as _
-from django.utils.functional import curry
-from django.core import validators
-from django import oldforms
-from django import forms
-
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-# Values for Relation.edit_inline.
-TABULAR, STACKED = 1, 2
-
-RECURSIVE_RELATIONSHIP_CONSTANT = 'self'
-
-pending_lookups = {}
-
-def add_lazy_relation(cls, field, relation, operation):
-    """
-    Adds a lookup on ``cls`` when a related field is defined using a string,
-    i.e.::
-
-        class MyModel(Model):
-            fk = ForeignKey("AnotherModel")
-
-    This string can be:
-
-        * RECURSIVE_RELATIONSHIP_CONSTANT (i.e. "self") to indicate a recursive
-          relation.
-
-        * The name of a model (i.e "AnotherModel") to indicate another model in
-          the same app.
-
-        * An app-label and model name (i.e. "someapp.AnotherModel") to indicate
-          another model in a different app.
-
-    If the other model hasn't yet been loaded -- almost a given if you're using
-    lazy relationships -- then the relation won't be set up until the
-    class_prepared signal fires at the end of model initialization.
-    
-    operation is the work that must be performed once the relation can be resolved.
-    """
-    # Check for recursive relations
-    if relation == RECURSIVE_RELATIONSHIP_CONSTANT:
-        app_label = cls._meta.app_label
-        model_name = cls.__name__
-
-    else:
-        # Look for an "app.Model" relation
-        try:
-            app_label, model_name = relation.split(".")
-        except ValueError:
-            # If we can't split, assume a model in current app
-            app_label = cls._meta.app_label
-            model_name = relation
-
-    # Try to look up the related model, and if it's already loaded resolve the
-    # string right away. If get_model returns None, it means that the related
-    # model isn't loaded yet, so we need to pend the relation until the class
-    # is prepared.
-    model = get_model(app_label, model_name, False)
-    if model:
-        operation(field, model, cls)
-    else:
-        key = (app_label, model_name)
-        value = (cls, field, operation)
-        pending_lookups.setdefault(key, []).append(value)
-
-def do_pending_lookups(sender, **kwargs):
-    """
-    Handle any pending relations to the sending model. Sent from class_prepared.
-    """
-    key = (sender._meta.app_label, sender.__name__)
-    for cls, field, operation in pending_lookups.pop(key, []):
-        operation(field, sender, cls)
-
-signals.class_prepared.connect(do_pending_lookups)
-
-def manipulator_valid_rel_key(f, self, field_data, all_data):
-    "Validates that the value is a valid foreign key"
-    klass = f.rel.to
-    try:
-        klass._default_manager.get(**{f.rel.field_name: field_data})
-    except klass.DoesNotExist:
-        raise validators.ValidationError, _("Please enter a valid %s.") % f.verbose_name
-
-#HACK
-class RelatedField(object):
-    def contribute_to_class(self, cls, name):
-        sup = super(RelatedField, self)
-
-        # Add an accessor to allow easy determination of the related query path for this field
-        self.related_query_name = curry(self._get_related_query_name, cls._meta)
-
-        if hasattr(sup, 'contribute_to_class'):
-            sup.contribute_to_class(cls, name)
-
-        if not cls._meta.abstract and self.rel.related_name:
-            self.rel.related_name = self.rel.related_name % {'class': cls.__name__.lower()}
-
-        other = self.rel.to
-        if isinstance(other, basestring):
-            def resolve_related_class(field, model, cls):
-                field.rel.to = model
-                field.do_related_class(model, cls)
-            add_lazy_relation(cls, self, other, resolve_related_class)
-        else:
-            self.do_related_class(other, cls)
-
-    def set_attributes_from_rel(self):
-        self.name = self.name or (self.rel.to._meta.object_name.lower() + '_' + self.rel.to._meta.pk.name)
-        if self.verbose_name is None:
-            self.verbose_name = self.rel.to._meta.verbose_name
-        self.rel.field_name = self.rel.field_name or self.rel.to._meta.pk.name
-
-    def do_related_class(self, other, cls):
-        self.set_attributes_from_rel()
-        related = RelatedObject(other, cls, self)
-        if not cls._meta.abstract:
-            self.contribute_to_related_class(other, related)
-
-    def get_db_prep_lookup(self, lookup_type, value):
-        # If we are doing a lookup on a Related Field, we must be
-        # comparing object instances. The value should be the PK of value,
-        # not value itself.
-        def pk_trace(value):
-            # Value may be a primary key, or an object held in a relation.
-            # If it is an object, then we need to get the primary key value for
-            # that object. In certain conditions (especially one-to-one relations),
-            # the primary key may itself be an object - so we need to keep drilling
-            # down until we hit a value that can be used for a comparison.
-            v = value
-            try:
-                while True:
-                    v = getattr(v, v._meta.pk.name)
-            except AttributeError:
-                pass
-            return v
-
-        if hasattr(value, 'as_sql'):
-            sql, params = value.as_sql()
-            return QueryWrapper(('(%s)' % sql), params)
-        if lookup_type == 'exact':
-            return [pk_trace(value)]
-        if lookup_type == 'in':
-            return [pk_trace(v) for v in value]
-        elif lookup_type == 'isnull':
-            return []
-        raise TypeError, "Related Field has invalid lookup: %s" % lookup_type
-
-    def _get_related_query_name(self, opts):
-        # This method defines the name that can be used to identify this
-        # related object in a table-spanning query. It uses the lower-cased
-        # object_name by default, but this can be overridden with the
-        # "related_name" option.
-        return self.rel.related_name or opts.object_name.lower()
-
-class SingleRelatedObjectDescriptor(object):
-    # This class provides the functionality that makes the related-object
-    # managers available as attributes on a model class, for fields that have
-    # a single "remote" value, on the class pointed to by a related field.
-    # In the example "place.restaurant", the restaurant attribute is a
-    # SingleRelatedObjectDescriptor instance.
-    def __init__(self, related):
-        self.related = related
-        self.cache_name = '_%s_cache' % related.get_accessor_name()
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            raise AttributeError, "%s must be accessed via instance" % self.related.opts.object_name
-
-        try:
-            return getattr(instance, self.cache_name)
-        except AttributeError:
-            params = {'%s__pk' % self.related.field.name: instance._get_pk_val()}
-            rel_obj = self.related.model._default_manager.get(**params)
-            setattr(instance, self.cache_name, rel_obj)
-            return rel_obj
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise AttributeError, "%s must be accessed via instance" % self.related.opts.object_name
-
-        # The similarity of the code below to the code in
-        # ReverseSingleRelatedObjectDescriptor is annoying, but there's a bunch
-        # of small differences that would make a common base class convoluted.
-
-        # If null=True, we can assign null here, but otherwise the value needs
-        # to be an instance of the related class.
-        if value is None and self.related.field.null == False:
-            raise ValueError('Cannot assign None: "%s.%s" does not allow null values.' %
-                                (instance._meta.object_name, self.related.get_accessor_name()))
-        elif value is not None and not isinstance(value, self.related.model):
-            raise ValueError('Cannot assign "%r": "%s.%s" must be a "%s" instance.' %
-                                (value, instance._meta.object_name,
-                                 self.related.get_accessor_name(), self.related.opts.object_name))
-
-        # Set the value of the related field
-        setattr(value, self.related.field.rel.get_related_field().attname, instance)
-
-        # Since we already know what the related object is, seed the related
-        # object caches now, too. This avoids another db hit if you get the
-        # object you just set.
-        setattr(instance, self.cache_name, value)
-        setattr(value, self.related.field.get_cache_name(), instance)
-
-class ReverseSingleRelatedObjectDescriptor(object):
-    # This class provides the functionality that makes the related-object
-    # managers available as attributes on a model class, for fields that have
-    # a single "remote" value, on the class that defines the related field.
-    # In the example "choice.poll", the poll attribute is a
-    # ReverseSingleRelatedObjectDescriptor instance.
-    def __init__(self, field_with_rel):
-        self.field = field_with_rel
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            raise AttributeError, "%s must be accessed via instance" % self.field.name
-        cache_name = self.field.get_cache_name()
-        try:
-            return getattr(instance, cache_name)
-        except AttributeError:
-            val = getattr(instance, self.field.attname)
-            if val is None:
-                # If NULL is an allowed value, return it.
-                if self.field.null:
-                    return None
-                raise self.field.rel.to.DoesNotExist
-            other_field = self.field.rel.get_related_field()
-            if other_field.rel:
-                params = {'%s__pk' % self.field.rel.field_name: val}
-            else:
-                params = {'%s__exact' % self.field.rel.field_name: val}
-
-            # If the related manager indicates that it should be used for
-            # related fields, respect that.
-            rel_mgr = self.field.rel.to._default_manager
-            if getattr(rel_mgr, 'use_for_related_fields', False):
-                rel_obj = rel_mgr.get(**params)
-            else:
-                rel_obj = QuerySet(self.field.rel.to).get(**params)
-            setattr(instance, cache_name, rel_obj)
-            return rel_obj
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise AttributeError, "%s must be accessed via instance" % self._field.name
-
-        # If null=True, we can assign null here, but otherwise the value needs
-        # to be an instance of the related class.
-        if value is None and self.field.null == False:
-            raise ValueError('Cannot assign None: "%s.%s" does not allow null values.' %
-                                (instance._meta.object_name, self.field.name))
-        elif value is not None and not isinstance(value, self.field.rel.to):
-            raise ValueError('Cannot assign "%r": "%s.%s" must be a "%s" instance.' %
-                                (value, instance._meta.object_name,
-                                 self.field.name, self.field.rel.to._meta.object_name))
-
-        # Set the value of the related field
-        try:
-            val = getattr(value, self.field.rel.get_related_field().attname)
-        except AttributeError:
-            val = None
-        setattr(instance, self.field.attname, val)
-
-        # Since we already know what the related object is, seed the related
-        # object cache now, too. This avoids another db hit if you get the
-        # object you just set.
-        setattr(instance, self.field.get_cache_name(), value)
-
-class ForeignRelatedObjectsDescriptor(object):
-    # This class provides the functionality that makes the related-object
-    # managers available as attributes on a model class, for fields that have
-    # multiple "remote" values and have a ForeignKey pointed at them by
-    # some other model. In the example "poll.choice_set", the choice_set
-    # attribute is a ForeignRelatedObjectsDescriptor instance.
-    def __init__(self, related):
-        self.related = related   # RelatedObject instance
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        rel_field = self.related.field
-        rel_model = self.related.model
-
-        # Dynamically create a class that subclasses the related
-        # model's default manager.
-        superclass = self.related.model._default_manager.__class__
-
-        class RelatedManager(superclass):
-            def get_query_set(self):
-                return superclass.get_query_set(self).filter(**(self.core_filters))
-
-            def add(self, *objs):
-                for obj in objs:
-                    setattr(obj, rel_field.name, instance)
-                    obj.save()
-            add.alters_data = True
-
-            def create(self, **kwargs):
-                new_obj = self.model(**kwargs)
-                self.add(new_obj)
-                return new_obj
-            create.alters_data = True
-
-            def get_or_create(self, **kwargs):
-                # Update kwargs with the related object that this
-                # ForeignRelatedObjectsDescriptor knows about.
-                kwargs.update({rel_field.name: instance})
-                return super(RelatedManager, self).get_or_create(**kwargs)
-            get_or_create.alters_data = True
-
-            # remove() and clear() are only provided if the ForeignKey can have a value of null.
-            if rel_field.null:
-                def remove(self, *objs):
-                    val = getattr(instance, rel_field.rel.get_related_field().attname)
-                    for obj in objs:
-                        # Is obj actually part of this descriptor set?
-                        if getattr(obj, rel_field.attname) == val:
-                            setattr(obj, rel_field.name, None)
-                            obj.save()
-                        else:
-                            raise rel_field.rel.to.DoesNotExist, "%r is not related to %r." % (obj, instance)
-                remove.alters_data = True
-
-                def clear(self):
-                    for obj in self.all():
-                        setattr(obj, rel_field.name, None)
-                        obj.save()
-                clear.alters_data = True
-
-        manager = RelatedManager()
-        attname = rel_field.rel.get_related_field().name
-        manager.core_filters = {'%s__%s' % (rel_field.name, attname):
-                getattr(instance, attname)}
-        manager.model = self.related.model
-
-        return manager
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        manager = self.__get__(instance)
-        # If the foreign key can support nulls, then completely clear the related set.
-        # Otherwise, just move the named objects into the set.
-        if self.related.field.null:
-            manager.clear()
-        manager.add(*value)
-
-def create_many_related_manager(superclass, through=False):
-    """Creates a manager that subclasses 'superclass' (which is a Manager)
-    and adds behavior for many-to-many related objects."""
-    class ManyRelatedManager(superclass):
-        def __init__(self, model=None, core_filters=None, instance=None, symmetrical=None,
-                join_table=None, source_col_name=None, target_col_name=None):
-            super(ManyRelatedManager, self).__init__()
-            self.core_filters = core_filters
-            self.model = model
-            self.symmetrical = symmetrical
-            self.instance = instance
-            self.join_table = join_table
-            self.source_col_name = source_col_name
-            self.target_col_name = target_col_name
-            self.through = through
-            self._pk_val = self.instance._get_pk_val()
-            if self._pk_val is None:
-                raise ValueError("%r instance needs to have a primary key value before a many-to-many relationship can be used." % instance.__class__.__name__)
-
-        def get_query_set(self):
-            return superclass.get_query_set(self)._next_is_sticky().filter(**(self.core_filters))
-
-        # If the ManyToMany relation has an intermediary model, 
-        # the add and remove methods do not exist.
-        if through is None:
-            def add(self, *objs):
-                self._add_items(self.source_col_name, self.target_col_name, *objs)
-
-                # If this is a symmetrical m2m relation to self, add the mirror entry in the m2m table
-                if self.symmetrical:
-                    self._add_items(self.target_col_name, self.source_col_name, *objs)
-            add.alters_data = True
-
-            def remove(self, *objs):
-                self._remove_items(self.source_col_name, self.target_col_name, *objs)
-
-                # If this is a symmetrical m2m relation to self, remove the mirror entry in the m2m table
-                if self.symmetrical:
-                    self._remove_items(self.target_col_name, self.source_col_name, *objs)
-            remove.alters_data = True
-
-        def clear(self):
-            self._clear_items(self.source_col_name)
-
-            # If this is a symmetrical m2m relation to self, clear the mirror entry in the m2m table
-            if self.symmetrical:
-                self._clear_items(self.target_col_name)
-        clear.alters_data = True
-
-        def create(self, **kwargs):
-            # This check needs to be done here, since we can't later remove this
-            # from the method lookup table, as we do with add and remove.
-            if through is not None:
-                raise AttributeError, "Cannot use create() on a ManyToManyField which specifies an intermediary model. Use %s's Manager instead." % through
-            new_obj = self.model(**kwargs)
-            new_obj.save()
-            self.add(new_obj)
-            return new_obj
-        create.alters_data = True
-
-        def get_or_create(self, **kwargs):
-            obj, created = \
-                    super(ManyRelatedManager, self).get_or_create(**kwargs)
-            # We only need to add() if created because if we got an object back
-            # from get() then the relationship already exists.
-            if created:
-                self.add(obj)
-            return obj, created
-        get_or_create.alters_data = True
-
-        def _add_items(self, source_col_name, target_col_name, *objs):
-            # join_table: name of the m2m link table
-            # source_col_name: the PK colname in join_table for the source object
-            # target_col_name: the PK colname in join_table for the target object
-            # *objs - objects to add. Either object instances, or primary keys of object instances.
-
-            # If there aren't any objects, there is nothing to do.
-            if objs:
-                # Check that all the objects are of the right type
-                new_ids = set()
-                for obj in objs:
-                    if isinstance(obj, self.model):
-                        new_ids.add(obj._get_pk_val())
-                    else:
-                        new_ids.add(obj)
-                # Add the newly created or already existing objects to the join table.
-                # First find out which items are already added, to avoid adding them twice
-                cursor = connection.cursor()
-                cursor.execute("SELECT %s FROM %s WHERE %s = %%s AND %s IN (%s)" % \
-                    (target_col_name, self.join_table, source_col_name,
-                    target_col_name, ",".join(['%s'] * len(new_ids))),
-                    [self._pk_val] + list(new_ids))
-                existing_ids = set([row[0] for row in cursor.fetchall()])
-
-                # Add the ones that aren't there already
-                for obj_id in (new_ids - existing_ids):
-                    cursor.execute("INSERT INTO %s (%s, %s) VALUES (%%s, %%s)" % \
-                        (self.join_table, source_col_name, target_col_name),
-                        [self._pk_val, obj_id])
-                transaction.commit_unless_managed()
-
-        def _remove_items(self, source_col_name, target_col_name, *objs):
-            # source_col_name: the PK colname in join_table for the source object
-            # target_col_name: the PK colname in join_table for the target object
-            # *objs - objects to remove
-
-            # If there aren't any objects, there is nothing to do.
-            if objs:
-                # Check that all the objects are of the right type
-                old_ids = set()
-                for obj in objs:
-                    if isinstance(obj, self.model):
-                        old_ids.add(obj._get_pk_val())
-                    else:
-                        old_ids.add(obj)
-                # Remove the specified objects from the join table
-                cursor = connection.cursor()
-                cursor.execute("DELETE FROM %s WHERE %s = %%s AND %s IN (%s)" % \
-                    (self.join_table, source_col_name,
-                    target_col_name, ",".join(['%s'] * len(old_ids))),
-                    [self._pk_val] + list(old_ids))
-                transaction.commit_unless_managed()
-
-        def _clear_items(self, source_col_name):
-            # source_col_name: the PK colname in join_table for the source object
-            cursor = connection.cursor()
-            cursor.execute("DELETE FROM %s WHERE %s = %%s" % \
-                (self.join_table, source_col_name),
-                [self._pk_val])
-            transaction.commit_unless_managed()
-
-    return ManyRelatedManager
-
-class ManyRelatedObjectsDescriptor(object):
-    # This class provides the functionality that makes the related-object
-    # managers available as attributes on a model class, for fields that have
-    # multiple "remote" values and have a ManyToManyField pointed at them by
-    # some other model (rather than having a ManyToManyField themselves).
-    # In the example "publication.article_set", the article_set attribute is a
-    # ManyRelatedObjectsDescriptor instance.
-    def __init__(self, related):
-        self.related = related   # RelatedObject instance
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        # Dynamically create a class that subclasses the related
-        # model's default manager.
-        rel_model = self.related.model
-        superclass = rel_model._default_manager.__class__
-        RelatedManager = create_many_related_manager(superclass, self.related.field.rel.through)
-
-        qn = connection.ops.quote_name
-        manager = RelatedManager(
-            model=rel_model,
-            core_filters={'%s__pk' % self.related.field.name: instance._get_pk_val()},
-            instance=instance,
-            symmetrical=False,
-            join_table=qn(self.related.field.m2m_db_table()),
-            source_col_name=qn(self.related.field.m2m_reverse_name()),
-            target_col_name=qn(self.related.field.m2m_column_name())
-        )
-
-        return manager
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        through = getattr(self.related.field.rel, 'through', None)
-        if through is not None:
-            raise AttributeError, "Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s's Manager instead." % through
-
-        manager = self.__get__(instance)
-        manager.clear()
-        manager.add(*value)
-
-class ReverseManyRelatedObjectsDescriptor(object):
-    # This class provides the functionality that makes the related-object
-    # managers available as attributes on a model class, for fields that have
-    # multiple "remote" values and have a ManyToManyField defined in their
-    # model (rather than having another model pointed *at* them).
-    # In the example "article.publications", the publications attribute is a
-    # ReverseManyRelatedObjectsDescriptor instance.
-    def __init__(self, m2m_field):
-        self.field = m2m_field
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        # Dynamically create a class that subclasses the related
-        # model's default manager.
-        rel_model=self.field.rel.to
-        superclass = rel_model._default_manager.__class__
-        RelatedManager = create_many_related_manager(superclass, self.field.rel.through)
-
-        qn = connection.ops.quote_name
-        manager = RelatedManager(
-            model=rel_model,
-            core_filters={'%s__pk' % self.field.related_query_name(): instance._get_pk_val()},
-            instance=instance,
-            symmetrical=(self.field.rel.symmetrical and instance.__class__ == rel_model),
-            join_table=qn(self.field.m2m_db_table()),
-            source_col_name=qn(self.field.m2m_column_name()),
-            target_col_name=qn(self.field.m2m_reverse_name())
-        )
-
-        return manager
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise AttributeError, "Manager must be accessed via instance"
-
-        through = getattr(self.field.rel, 'through', None)
-        if through is not None:
-            raise AttributeError, "Cannot set values on a ManyToManyField which specifies an intermediary model.  Use %s's Manager instead." % through
-
-        manager = self.__get__(instance)
-        manager.clear()
-        manager.add(*value)
-
-class ManyToOneRel(object):
-    def __init__(self, to, field_name, num_in_admin=3, min_num_in_admin=None,
-            max_num_in_admin=None, num_extra_on_change=1, edit_inline=False,
-            related_name=None, limit_choices_to=None, lookup_overrides=None,
-            parent_link=False):
-        try:
-            to._meta
-        except AttributeError: # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
-            assert isinstance(to, basestring), "'to' must be either a model, a model name or the string %r" % RECURSIVE_RELATIONSHIP_CONSTANT
-        self.to, self.field_name = to, field_name
-        self.num_in_admin, self.edit_inline = num_in_admin, edit_inline
-        self.min_num_in_admin, self.max_num_in_admin = min_num_in_admin, max_num_in_admin
-        self.num_extra_on_change, self.related_name = num_extra_on_change, related_name
-        if limit_choices_to is None:
-            limit_choices_to = {}
-        self.limit_choices_to = limit_choices_to
-        self.lookup_overrides = lookup_overrides or {}
-        self.multiple = True
-        self.parent_link = parent_link
-
-    def get_related_field(self):
-        """
-        Returns the Field in the 'to' object to which this relationship is
-        tied.
-        """
-        data = self.to._meta.get_field_by_name(self.field_name)
-        if not data[2]:
-            raise FieldDoesNotExist("No related field named '%s'" %
-                    self.field_name)
-        return data[0]
-
-class OneToOneRel(ManyToOneRel):
-    def __init__(self, to, field_name, num_in_admin=0, min_num_in_admin=None,
-            max_num_in_admin=None, num_extra_on_change=None, edit_inline=False,
-            related_name=None, limit_choices_to=None, lookup_overrides=None,
-            parent_link=False):
-        # NOTE: *_num_in_admin and num_extra_on_change are intentionally
-        # ignored here. We accept them as parameters only to match the calling
-        # signature of ManyToOneRel.__init__().
-        super(OneToOneRel, self).__init__(to, field_name, num_in_admin,
-                edit_inline=edit_inline, related_name=related_name,
-                limit_choices_to=limit_choices_to,
-                lookup_overrides=lookup_overrides, parent_link=parent_link)
-        self.multiple = False
-
-class ManyToManyRel(object):
-    def __init__(self, to, num_in_admin=0, related_name=None,
-        limit_choices_to=None, symmetrical=True, through=None):
-        self.to = to
-        self.num_in_admin = num_in_admin
-        self.related_name = related_name
-        if limit_choices_to is None:
-            limit_choices_to = {}
-        self.limit_choices_to = limit_choices_to
-        self.edit_inline = False
-        self.symmetrical = symmetrical
-        self.multiple = True
-        self.through = through
-
-class ForeignKey(RelatedField, Field):
-    empty_strings_allowed = False
-    def __init__(self, to, to_field=None, rel_class=ManyToOneRel, **kwargs):
-        try:
-            to_name = to._meta.object_name.lower()
-        except AttributeError: # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
-            assert isinstance(to, basestring), "%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
-        else:
-            assert not to._meta.abstract, "%s cannot define a relation with abstract class %s" % (self.__class__.__name__, to._meta.object_name)
-            to_field = to_field or to._meta.pk.name
-        kwargs['verbose_name'] = kwargs.get('verbose_name', None)
-
-        kwargs['rel'] = rel_class(to, to_field,
-            num_in_admin=kwargs.pop('num_in_admin', 3),
-            min_num_in_admin=kwargs.pop('min_num_in_admin', None),
-            max_num_in_admin=kwargs.pop('max_num_in_admin', None),
-            num_extra_on_change=kwargs.pop('num_extra_on_change', 1),
-            edit_inline=kwargs.pop('edit_inline', False),
-            related_name=kwargs.pop('related_name', None),
-            limit_choices_to=kwargs.pop('limit_choices_to', None),
-            lookup_overrides=kwargs.pop('lookup_overrides', None),
-            parent_link=kwargs.pop('parent_link', False))
-        Field.__init__(self, **kwargs)
-
-        self.db_index = True
-
-    def get_attname(self):
-        return '%s_id' % self.name
-
-    def get_validator_unique_lookup_type(self):
-        return '%s__%s__exact' % (self.name, self.rel.get_related_field().name)
-
-    def prepare_field_objs_and_params(self, manipulator, name_prefix):
-        params = {'validator_list': self.validator_list[:], 'member_name': name_prefix + self.attname}
-        if self.null:
-            field_objs = [oldforms.NullSelectField]
-        else:
-            field_objs = [oldforms.SelectField]
-        params['choices'] = self.get_choices_default()
-        return field_objs, params
-
-    def get_default(self):
-        "Here we check if the default value is an object and return the to_field if so."
-        field_default = super(ForeignKey, self).get_default()
-        if isinstance(field_default, self.rel.to):
-            return getattr(field_default, self.rel.get_related_field().attname)
-        return field_default
-
-    def get_manipulator_field_objs(self):
-        rel_field = self.rel.get_related_field()
-        return [oldforms.IntegerField]
-
-    def get_db_prep_save(self, value):
-        if value == '' or value == None:
-            return None
-        else:
-            return self.rel.get_related_field().get_db_prep_save(value)
-
-    def flatten_data(self, follow, obj=None):
-        if not obj:
-            # In required many-to-one fields with only one available choice,
-            # select that one available choice. Note: For SelectFields
-            # we have to check that the length of choices is *2*, not 1,
-            # because SelectFields always have an initial "blank" value.
-            if not self.blank and self.choices:
-                choice_list = self.get_choices_default()
-                if len(choice_list) == 2:
-                    return {self.attname: choice_list[1][0]}
-        return Field.flatten_data(self, follow, obj)
-
-    def contribute_to_class(self, cls, name):
-        super(ForeignKey, self).contribute_to_class(cls, name)
-        setattr(cls, self.name, ReverseSingleRelatedObjectDescriptor(self))
-        if isinstance(self.rel.to, basestring):
-            target = self.rel.to
-        else:
-            target = self.rel.to._meta.db_table
-        cls._meta.duplicate_targets[self.column] = (target, "o2m")
-
-    def contribute_to_related_class(self, cls, related):
-        setattr(cls, related.get_accessor_name(), ForeignRelatedObjectsDescriptor(related))
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.ModelChoiceField, 'queryset': self.rel.to._default_manager.complex_filter(self.rel.limit_choices_to)}
-        defaults.update(kwargs)
-        return super(ForeignKey, self).formfield(**defaults)
-
-    def db_type(self):
-        # The database column type of a ForeignKey is the column type
-        # of the field to which it points. An exception is if the ForeignKey
-        # points to an AutoField/PositiveIntegerField/PositiveSmallIntegerField,
-        # in which case the column type is simply that of an IntegerField.
-        rel_field = self.rel.get_related_field()
-        if isinstance(rel_field, (AutoField, PositiveIntegerField, PositiveSmallIntegerField)):
-            return IntegerField().db_type()
-        return rel_field.db_type()
-
-class OneToOneField(ForeignKey):
-    """
-    A OneToOneField is essentially the same as a ForeignKey, with the exception
-    that always carries a "unique" constraint with it and the reverse relation
-    always returns the object pointed to (since there will only ever be one),
-    rather than returning a list.
-    """
-    def __init__(self, to, to_field=None, **kwargs):
-        kwargs['unique'] = True
-        if 'num_in_admin' not in kwargs:
-            kwargs['num_in_admin'] = 0
-        super(OneToOneField, self).__init__(to, to_field, OneToOneRel, **kwargs)
-
-    def contribute_to_related_class(self, cls, related):
-        setattr(cls, related.get_accessor_name(),
-                SingleRelatedObjectDescriptor(related))
-        if not cls._meta.one_to_one_field:
-            cls._meta.one_to_one_field = self
-    
-    def formfield(self, **kwargs):
-        if self.rel.parent_link:
-            return None
-        return super(OneToOneField, self).formfield(**kwargs)
-
-class ManyToManyField(RelatedField, Field):
-    def __init__(self, to, **kwargs):
-        try:
-            assert not to._meta.abstract, "%s cannot define a relation with abstract class %s" % (self.__class__.__name__, to._meta.object_name)
-        except AttributeError: # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
-            assert isinstance(to, basestring), "%s(%r) is invalid. First parameter to ManyToManyField must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
-
-        kwargs['verbose_name'] = kwargs.get('verbose_name', None)
-        kwargs['rel'] = ManyToManyRel(to,
-            num_in_admin=kwargs.pop('num_in_admin', 0),
-            related_name=kwargs.pop('related_name', None),
-            limit_choices_to=kwargs.pop('limit_choices_to', None),
-            symmetrical=kwargs.pop('symmetrical', True),
-            through=kwargs.pop('through', None))
-            
-        self.db_table = kwargs.pop('db_table', None)
-        if kwargs['rel'].through is not None:
-            self.creates_table = False
-            assert self.db_table is None, "Cannot specify a db_table if an intermediary model is used."
-        else:
-            self.creates_table = True
-
-        Field.__init__(self, **kwargs)
-
-        msg = ugettext_lazy('Hold down "Control", or "Command" on a Mac, to select more than one.')
-        self.help_text = string_concat(self.help_text, ' ', msg)
-
-    def get_manipulator_field_objs(self):
-        choices = self.get_choices_default()
-        return [curry(oldforms.SelectMultipleField, size=min(max(len(choices), 5), 15), choices=choices)]
-
-    def get_choices_default(self):
-        return Field.get_choices(self, include_blank=False)
-
-    def _get_m2m_db_table(self, opts):
-        "Function that can be curried to provide the m2m table name for this relation"
-        if self.rel.through is not None:
-            return self.rel.through_model._meta.db_table
-        elif self.db_table:
-            return self.db_table
-        else:
-            return '%s_%s' % (opts.db_table, self.name)
-
-    def _get_m2m_column_name(self, related):
-        "Function that can be curried to provide the source column name for the m2m table"
-        try:
-            return self._m2m_column_name_cache
-        except:
-            if self.rel.through is not None:
-                for f in self.rel.through_model._meta.fields:
-                    if hasattr(f,'rel') and f.rel and f.rel.to == related.model:
-                        self._m2m_column_name_cache = f.column
-                        break
-            # If this is an m2m relation to self, avoid the inevitable name clash
-            elif related.model == related.parent_model:
-                self._m2m_column_name_cache = 'from_' + related.model._meta.object_name.lower() + '_id'
-            else:
-                self._m2m_column_name_cache = related.model._meta.object_name.lower() + '_id'
-                
-            # Return the newly cached value
-            return self._m2m_column_name_cache
-
-    def _get_m2m_reverse_name(self, related):
-        "Function that can be curried to provide the related column name for the m2m table"
-        try:
-            return self._m2m_reverse_name_cache
-        except:
-            if self.rel.through is not None:
-                found = False
-                for f in self.rel.through_model._meta.fields:
-                    if hasattr(f,'rel') and f.rel and f.rel.to == related.parent_model:
-                        if related.model == related.parent_model:
-                            # If this is an m2m-intermediate to self, 
-                            # the first foreign key you find will be 
-                            # the source column. Keep searching for
-                            # the second foreign key.
-                            if found:
-                                self._m2m_reverse_name_cache = f.column
-                                break
-                            else:
-                                found = True
-                        else:
-                            self._m2m_reverse_name_cache = f.column
-                            break
-            # If this is an m2m relation to self, avoid the inevitable name clash
-            elif related.model == related.parent_model:
-                self._m2m_reverse_name_cache = 'to_' + related.parent_model._meta.object_name.lower() + '_id'
-            else:
-                self._m2m_reverse_name_cache = related.parent_model._meta.object_name.lower() + '_id'
-
-            # Return the newly cached value
-            return self._m2m_reverse_name_cache
-
-    def isValidIDList(self, field_data, all_data):
-        "Validates that the value is a valid list of foreign keys"
-        mod = self.rel.to
-        try:
-            pks = map(int, field_data.split(','))
-        except ValueError:
-            # the CommaSeparatedIntegerField validator will catch this error
-            return
-        objects = mod._default_manager.in_bulk(pks)
-        if len(objects) != len(pks):
-            badkeys = [k for k in pks if k not in objects]
-            raise validators.ValidationError, ungettext("Please enter valid %(self)s IDs. The value %(value)r is invalid.",
-                    "Please enter valid %(self)s IDs. The values %(value)r are invalid.", len(badkeys)) % {
-                'self': self.verbose_name,
-                'value': len(badkeys) == 1 and badkeys[0] or tuple(badkeys),
-            }
-
-    def flatten_data(self, follow, obj = None):
-        new_data = {}
-        if obj:
-            instance_ids = [instance._get_pk_val() for instance in getattr(obj, self.name).all()]
-            new_data[self.name] = instance_ids
-        else:
-            # In required many-to-many fields with only one available choice,
-            # select that one available choice.
-            if not self.blank and not self.rel.edit_inline:
-                choices_list = self.get_choices_default()
-                if len(choices_list) == 1:
-                    new_data[self.name] = [choices_list[0][0]]
-        return new_data
-
-    def contribute_to_class(self, cls, name):
-        super(ManyToManyField, self).contribute_to_class(cls, name)        
-        # Add the descriptor for the m2m relation
-        setattr(cls, self.name, ReverseManyRelatedObjectsDescriptor(self))
-
-        # Set up the accessor for the m2m table name for the relation
-        self.m2m_db_table = curry(self._get_m2m_db_table, cls._meta)
-        
-        # Populate some necessary rel arguments so that cross-app relations
-        # work correctly.
-        if isinstance(self.rel.through, basestring):
-            def resolve_through_model(field, model, cls):
-                field.rel.through_model = model
-            add_lazy_relation(cls, self, self.rel.through, resolve_through_model)
-        elif self.rel.through:
-            self.rel.through_model = self.rel.through
-            self.rel.through = self.rel.through._meta.object_name
-            
-        if isinstance(self.rel.to, basestring):
-            target = self.rel.to
-        else:
-            target = self.rel.to._meta.db_table
-        cls._meta.duplicate_targets[self.column] = (target, "m2m")
-
-    def contribute_to_related_class(self, cls, related):
-        # m2m relations to self do not have a ManyRelatedObjectsDescriptor,
-        # as it would be redundant - unless the field is non-symmetrical.
-        if related.model != related.parent_model or not self.rel.symmetrical:
-            # Add the descriptor for the m2m relation
-            setattr(cls, related.get_accessor_name(), ManyRelatedObjectsDescriptor(related))
-
-        # Set up the accessors for the column names on the m2m table
-        self.m2m_column_name = curry(self._get_m2m_column_name, related)
-        self.m2m_reverse_name = curry(self._get_m2m_reverse_name, related)
-
-    def set_attributes_from_rel(self):
-        pass
-
-    def value_from_object(self, obj):
-        "Returns the value of this field in the given model instance."
-        return getattr(obj, self.attname).all()
-
-    def save_form_data(self, instance, data):
-        setattr(instance, self.attname, data)
-
-    def formfield(self, **kwargs):
-        defaults = {'form_class': forms.ModelMultipleChoiceField, 'queryset': self.rel.to._default_manager.complex_filter(self.rel.limit_choices_to)}
-        defaults.update(kwargs)
-        # If initial is passed in, it's a list of related objects, but the
-        # MultipleChoiceField takes a list of IDs.
-        if defaults.get('initial') is not None:
-            defaults['initial'] = [i._get_pk_val() for i in defaults['initial']]
-        return super(ManyToManyField, self).formfield(**defaults)
-
-    def db_type(self):
-        # A ManyToManyField is not represented by a single column,
-        # so return None.
-        return None
-
diff --git a/webapp/django/db/models/fields/subclassing.py b/webapp/django/db/models/fields/subclassing.py
deleted file mode 100644
index 10add10..0000000
--- a/webapp/django/db/models/fields/subclassing.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""
-Convenience routines for creating non-trivial Field subclasses.
-
-Add SubfieldBase as the __metaclass__ for your Field subclass, implement
-to_python() and the other necessary methods and everything will work seamlessly.
-"""
-
-class SubfieldBase(type):
-    """
-    A metaclass for custom Field subclasses. This ensures the model's attribute
-    has the descriptor protocol attached to it.
-    """
-    def __new__(cls, base, name, attrs):
-        new_class = super(SubfieldBase, cls).__new__(cls, base, name, attrs)
-        new_class.contribute_to_class = make_contrib(
-                attrs.get('contribute_to_class'))
-        return new_class
-
-class Creator(object):
-    """
-    A placeholder class that provides a way to set the attribute on the model.
-    """
-    def __init__(self, field):
-        self.field = field
-
-    def __get__(self, obj, type=None):
-        if obj is None:
-            raise AttributeError('Can only be accessed via an instance.')
-        return obj.__dict__[self.field.name]        
-
-    def __set__(self, obj, value):
-        obj.__dict__[self.field.name] = self.field.to_python(value)
-
-def make_contrib(func=None):
-    """
-    Returns a suitable contribute_to_class() method for the Field subclass.
-
-    If 'func' is passed in, it is the existing contribute_to_class() method on
-    the subclass and it is called before anything else. It is assumed in this
-    case that the existing contribute_to_class() calls all the necessary
-    superclass methods.
-    """
-    def contribute_to_class(self, cls, name):
-        if func:
-            func(self, cls, name)
-        else:
-            super(self.__class__, self).contribute_to_class(cls, name)
-        setattr(cls, self.name, Creator(self))
-
-    return contribute_to_class
diff --git a/webapp/django/db/models/loading.py b/webapp/django/db/models/loading.py
deleted file mode 100644
index 6837e070..0000000
--- a/webapp/django/db/models/loading.py
+++ /dev/null
@@ -1,189 +0,0 @@
-"Utilities for loading models and the modules that contain them."
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.datastructures import SortedDict
-
-import sys
-import os
-import threading
-
-__all__ = ('get_apps', 'get_app', 'get_models', 'get_model', 'register_models',
-        'load_app', 'app_cache_ready')
-
-class AppCache(object):
-    """
-    A cache that stores installed applications and their models. Used to
-    provide reverse-relations and for app introspection (e.g. admin).
-    """
-    # Use the Borg pattern to share state between all instances. Details at
-    # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531.
-    __shared_state = dict(
-        # Keys of app_store are the model modules for each application.
-        app_store = SortedDict(),
-
-        # Mapping of app_labels to a dictionary of model names to model code.
-        app_models = SortedDict(),
-
-        # Mapping of app_labels to errors raised when trying to import the app.
-        app_errors = {},
-
-        # -- Everything below here is only used when populating the cache --
-        loaded = False,
-        handled = {},
-        postponed = [],
-        nesting_level = 0,
-        write_lock = threading.RLock(),
-    )
-
-    def __init__(self):
-        self.__dict__ = self.__shared_state
-
-    def _populate(self):
-        """
-        Fill in all the cache information. This method is threadsafe, in the
-        sense that every caller will see the same state upon return, and if the
-        cache is already initialised, it does no work.
-        """
-        if self.loaded:
-            return
-        self.write_lock.acquire()
-        try:
-            if self.loaded:
-                return
-            for app_name in settings.INSTALLED_APPS:
-                if app_name in self.handled:
-                    continue
-                self.load_app(app_name, True)
-            if not self.nesting_level:
-                for app_name in self.postponed:
-                    self.load_app(app_name)
-                self.loaded = True
-        finally:
-            self.write_lock.release()
-
-    def load_app(self, app_name, can_postpone=False):
-        """
-        Loads the app with the provided fully qualified name, and returns the
-        model module.
-        """
-        self.handled[app_name] = None
-        self.nesting_level += 1
-        mod = __import__(app_name, {}, {}, ['models'])
-        self.nesting_level -= 1
-        if not hasattr(mod, 'models'):
-            if can_postpone:
-                # Either the app has no models, or the package is still being
-                # imported by Python and the model module isn't available yet.
-                # We will check again once all the recursion has finished (in
-                # populate).
-                self.postponed.append(app_name)
-            return None
-        if mod.models not in self.app_store:
-            self.app_store[mod.models] = len(self.app_store)
-        return mod.models
-
-    def app_cache_ready(self):
-        """
-        Returns true if the model cache is fully populated.
-
-        Useful for code that wants to cache the results of get_models() for
-        themselves once it is safe to do so.
-        """
-        return self.loaded
-
-    def get_apps(self):
-        "Returns a list of all installed modules that contain models."
-        self._populate()
-
-        # Ensure the returned list is always in the same order (with new apps
-        # added at the end). This avoids unstable ordering on the admin app
-        # list page, for example.
-        apps = [(v, k) for k, v in self.app_store.items()]
-        apps.sort()
-        return [elt[1] for elt in apps]
-
-    def get_app(self, app_label, emptyOK=False):
-        """
-        Returns the module containing the models for the given app_label. If
-        the app has no models in it and 'emptyOK' is True, returns None.
-        """
-        self._populate()
-        self.write_lock.acquire()
-        try:
-            for app_name in settings.INSTALLED_APPS:
-                if app_label == app_name.split('.')[-1]:
-                    mod = self.load_app(app_name, False)
-                    if mod is None:
-                        if emptyOK:
-                            return None
-                    else:
-                        return mod
-            raise ImproperlyConfigured, "App with label %s could not be found" % app_label
-        finally:
-            self.write_lock.release()
-
-    def get_app_errors(self):
-        "Returns the map of known problems with the INSTALLED_APPS."
-        self._populate()
-        return self.app_errors
-
-    def get_models(self, app_mod=None):
-        """
-        Given a module containing models, returns a list of the models.
-        Otherwise returns a list of all installed models.
-        """
-        self._populate()
-        if app_mod:
-            return self.app_models.get(app_mod.__name__.split('.')[-2], SortedDict()).values()
-        else:
-            model_list = []
-            for app_entry in self.app_models.itervalues():
-                model_list.extend(app_entry.values())
-            return model_list
-
-    def get_model(self, app_label, model_name, seed_cache=True):
-        """
-        Returns the model matching the given app_label and case-insensitive
-        model_name.
-
-        Returns None if no model is found.
-        """
-        if seed_cache:
-            self._populate()
-        return self.app_models.get(app_label, SortedDict()).get(model_name.lower())
-
-    def register_models(self, app_label, *models):
-        """
-        Register a set of models as belonging to an app.
-        """
-        for model in models:
-            # Store as 'name: model' pair in a dictionary
-            # in the app_models dictionary
-            model_name = model._meta.object_name.lower()
-            model_dict = self.app_models.setdefault(app_label, SortedDict())
-            if model_name in model_dict:
-                # The same model may be imported via different paths (e.g.
-                # appname.models and project.appname.models). We use the source
-                # filename as a means to detect identity.
-                fname1 = os.path.abspath(sys.modules[model.__module__].__file__)
-                fname2 = os.path.abspath(sys.modules[model_dict[model_name].__module__].__file__)
-                # Since the filename extension could be .py the first time and
-                # .pyc or .pyo the second time, ignore the extension when
-                # comparing.
-                if os.path.splitext(fname1)[0] == os.path.splitext(fname2)[0]:
-                    continue
-            model_dict[model_name] = model
-
-cache = AppCache()
-
-# These methods were always module level, so are kept that way for backwards
-# compatibility.
-get_apps = cache.get_apps
-get_app = cache.get_app
-get_app_errors = cache.get_app_errors
-get_models = cache.get_models
-get_model = cache.get_model
-register_models = cache.register_models
-load_app = cache.load_app
-app_cache_ready = cache.app_cache_ready
diff --git a/webapp/django/db/models/manager.py b/webapp/django/db/models/manager.py
deleted file mode 100644
index 96bd53f..0000000
--- a/webapp/django/db/models/manager.py
+++ /dev/null
@@ -1,144 +0,0 @@
-import copy
-
-from django.db.models.query import QuerySet, EmptyQuerySet, insert_query
-from django.db.models import signals
-from django.db.models.fields import FieldDoesNotExist
-
-def ensure_default_manager(sender, **kwargs):
-    cls = sender
-    if not getattr(cls, '_default_manager', None) and not cls._meta.abstract:
-        # Create the default manager, if needed.
-        try:
-            cls._meta.get_field('objects')
-            raise ValueError, "Model %s must specify a custom Manager, because it has a field named 'objects'" % cls.__name__
-        except FieldDoesNotExist:
-            pass
-        cls.add_to_class('objects', Manager())
-
-signals.class_prepared.connect(ensure_default_manager)
-
-class Manager(object):
-    # Tracks each time a Manager instance is created. Used to retain order.
-    creation_counter = 0
-
-    def __init__(self):
-        super(Manager, self).__init__()
-        # Increase the creation counter, and save our local copy.
-        self.creation_counter = Manager.creation_counter
-        Manager.creation_counter += 1
-        self.model = None
-
-    def contribute_to_class(self, model, name):
-        # TODO: Use weakref because of possible memory leak / circular reference.
-        self.model = model
-        setattr(model, name, ManagerDescriptor(self))
-        if not getattr(model, '_default_manager', None) or self.creation_counter < model._default_manager.creation_counter:
-            model._default_manager = self
-
-    def _copy_to_model(self, model):
-        """
-        Makes a copy of the manager and assigns it to 'model', which should be
-        a child of the existing model (used when inheriting a manager from an
-        abstract base class).
-        """
-        assert issubclass(model, self.model)
-        mgr = copy.copy(self)
-        mgr.model = model
-        return mgr
-
-    #######################
-    # PROXIES TO QUERYSET #
-    #######################
-
-    def get_empty_query_set(self):
-        return EmptyQuerySet(self.model)
-
-    def get_query_set(self):
-        """Returns a new QuerySet object.  Subclasses can override this method
-        to easily customize the behavior of the Manager.
-        """
-        return QuerySet(self.model)
-
-    def none(self):
-        return self.get_empty_query_set()
-
-    def all(self):
-        return self.get_query_set()
-
-    def count(self):
-        return self.get_query_set().count()
-
-    def dates(self, *args, **kwargs):
-        return self.get_query_set().dates(*args, **kwargs)
-
-    def distinct(self, *args, **kwargs):
-        return self.get_query_set().distinct(*args, **kwargs)
-
-    def extra(self, *args, **kwargs):
-        return self.get_query_set().extra(*args, **kwargs)
-
-    def get(self, *args, **kwargs):
-        return self.get_query_set().get(*args, **kwargs)
-
-    def get_or_create(self, **kwargs):
-        return self.get_query_set().get_or_create(**kwargs)
-
-    def create(self, **kwargs):
-        return self.get_query_set().create(**kwargs)
-
-    def filter(self, *args, **kwargs):
-        return self.get_query_set().filter(*args, **kwargs)
-
-    def complex_filter(self, *args, **kwargs):
-        return self.get_query_set().complex_filter(*args, **kwargs)
-
-    def exclude(self, *args, **kwargs):
-        return self.get_query_set().exclude(*args, **kwargs)
-
-    def in_bulk(self, *args, **kwargs):
-        return self.get_query_set().in_bulk(*args, **kwargs)
-
-    def iterator(self, *args, **kwargs):
-        return self.get_query_set().iterator(*args, **kwargs)
-
-    def latest(self, *args, **kwargs):
-        return self.get_query_set().latest(*args, **kwargs)
-
-    def order_by(self, *args, **kwargs):
-        return self.get_query_set().order_by(*args, **kwargs)
-
-    def select_related(self, *args, **kwargs):
-        return self.get_query_set().select_related(*args, **kwargs)
-
-    def values(self, *args, **kwargs):
-        return self.get_query_set().values(*args, **kwargs)
-
-    def values_list(self, *args, **kwargs):
-        return self.get_query_set().values_list(*args, **kwargs)
-
-    def update(self, *args, **kwargs):
-        return self.get_query_set().update(*args, **kwargs)
-
-    def reverse(self, *args, **kwargs):
-        return self.get_query_set().reverse(*args, **kwargs)
-
-    def _insert(self, values, **kwargs):
-        return insert_query(self.model, values, **kwargs)
-
-    def _update(self, values, **kwargs):
-        return self.get_query_set()._update(values, **kwargs)
-
-class ManagerDescriptor(object):
-    # This class ensures managers aren't accessible via model instances.
-    # For example, Poll.objects works, but poll_obj.objects raises AttributeError.
-    def __init__(self, manager):
-        self.manager = manager
-
-    def __get__(self, instance, type=None):
-        if instance != None:
-            raise AttributeError, "Manager isn't accessible via %s instances" % type.__name__
-        return self.manager
-
-class EmptyManager(Manager):
-    def get_query_set(self):
-        return self.get_empty_query_set()
diff --git a/webapp/django/db/models/manipulators.py b/webapp/django/db/models/manipulators.py
deleted file mode 100644
index c657d01..0000000
--- a/webapp/django/db/models/manipulators.py
+++ /dev/null
@@ -1,333 +0,0 @@
-from django.core.exceptions import ObjectDoesNotExist
-from django import oldforms
-from django.core import validators
-from django.db.models.fields import AutoField
-from django.db.models.fields.files import FileField
-from django.db.models import signals
-from django.utils.functional import curry
-from django.utils.datastructures import DotExpandedDict
-from django.utils.text import capfirst
-from django.utils.encoding import smart_str
-from django.utils.translation import ugettext as _
-from django.utils import datetime_safe
-
-def add_manipulators(sender, **kwargs):
-    cls = sender
-    cls.add_to_class('AddManipulator', AutomaticAddManipulator)
-    cls.add_to_class('ChangeManipulator', AutomaticChangeManipulator)
-
-signals.class_prepared.connect(add_manipulators)
-
-class ManipulatorDescriptor(object):
-    # This class provides the functionality that makes the default model
-    # manipulators (AddManipulator and ChangeManipulator) available via the
-    # model class.
-    def __init__(self, name, base):
-        self.man = None # Cache of the manipulator class.
-        self.name = name
-        self.base = base
-
-    def __get__(self, instance, model=None):
-        if instance != None:
-            raise AttributeError, "Manipulator cannot be accessed via instance"
-        else:
-            if not self.man:
-                # Create a class that inherits from the "Manipulator" class
-                # given in the model class (if specified) and the automatic
-                # manipulator.
-                bases = [self.base]
-                if hasattr(model, 'Manipulator'):
-                    bases = [model.Manipulator] + bases
-                self.man = type(self.name, tuple(bases), {})
-                self.man._prepare(model)
-            return self.man
-
-class AutomaticManipulator(oldforms.Manipulator):
-    def _prepare(cls, model):
-        cls.model = model
-        cls.manager = model._default_manager
-        cls.opts = model._meta
-        for field_name_list in cls.opts.unique_together:
-            setattr(cls, 'isUnique%s' % '_'.join(field_name_list), curry(manipulator_validator_unique_together, field_name_list, cls.opts))
-        for f in cls.opts.fields:
-            if f.unique_for_date:
-                setattr(cls, 'isUnique%sFor%s' % (f.name, f.unique_for_date), curry(manipulator_validator_unique_for_date, f, cls.opts.get_field(f.unique_for_date), cls.opts, 'date'))
-            if f.unique_for_month:
-                setattr(cls, 'isUnique%sFor%s' % (f.name, f.unique_for_month), curry(manipulator_validator_unique_for_date, f, cls.opts.get_field(f.unique_for_month), cls.opts, 'month'))
-            if f.unique_for_year:
-                setattr(cls, 'isUnique%sFor%s' % (f.name, f.unique_for_year), curry(manipulator_validator_unique_for_date, f, cls.opts.get_field(f.unique_for_year), cls.opts, 'year'))
-    _prepare = classmethod(_prepare)
-
-    def contribute_to_class(cls, other_cls, name):
-        setattr(other_cls, name, ManipulatorDescriptor(name, cls))
-    contribute_to_class = classmethod(contribute_to_class)
-
-    def __init__(self, follow=None):
-        self.follow = self.opts.get_follow(follow)
-        self.fields = []
-
-        for f in self.opts.fields + self.opts.many_to_many:
-            if self.follow.get(f.name, False):
-                self.fields.extend(f.get_manipulator_fields(self.opts, self, self.change))
-
-        # Add fields for related objects.
-        for f in self.opts.get_all_related_objects():
-            if self.follow.get(f.name, False):
-                fol = self.follow[f.name]
-                self.fields.extend(f.get_manipulator_fields(self.opts, self, self.change, fol))
-
-        # Add field for ordering.
-        if self.change and self.opts.get_ordered_objects():
-            self.fields.append(oldforms.CommaSeparatedIntegerField(field_name="order_"))
-
-    def save(self, new_data):
-        # TODO: big cleanup when core fields go -> use recursive manipulators.
-        params = {}
-        for f in self.opts.fields:
-            # Fields with auto_now_add should keep their original value in the change stage.
-            auto_now_add = self.change and getattr(f, 'auto_now_add', False)
-            if self.follow.get(f.name, None) and not auto_now_add:
-                param = f.get_manipulator_new_data(new_data)
-            else:
-                if self.change:
-                    param = getattr(self.original_object, f.attname)
-                else:
-                    param = f.get_default()
-            params[f.attname] = param
-
-        if self.change:
-            params[self.opts.pk.attname] = self.obj_key
-
-        # First, create the basic object itself.
-        new_object = self.model(**params)
-
-        # Now that the object's been created, save any uploaded files.
-        for f in self.opts.fields:
-            if isinstance(f, FileField):
-                f.save_file(new_data, new_object, self.change and self.original_object or None, self.change, rel=False, save=False)
-
-        # Now save the object
-        new_object.save()
-
-        # Calculate which primary fields have changed.
-        if self.change:
-            self.fields_added, self.fields_changed, self.fields_deleted = [], [], []
-            for f in self.opts.fields:
-                if not f.primary_key and smart_str(getattr(self.original_object, f.attname)) != smart_str(getattr(new_object, f.attname)):
-                    self.fields_changed.append(f.verbose_name)
-
-        # Save many-to-many objects. Example: Set sites for a poll.
-        for f in self.opts.many_to_many:
-            if self.follow.get(f.name, None):
-                if not f.rel.edit_inline:
-                    new_vals = new_data.getlist(f.name)
-                    # First, clear the existing values.
-                    rel_manager = getattr(new_object, f.name)
-                    rel_manager.clear()
-                    # Then, set the new values.
-                    for n in new_vals:
-                        rel_manager.add(f.rel.to._default_manager.get(pk=n))
-                    # TODO: Add to 'fields_changed'
-
-        expanded_data = DotExpandedDict(dict(new_data))
-        # Save many-to-one objects. Example: Add the Choice objects for a Poll.
-        for related in self.opts.get_all_related_objects():
-            # Create obj_list, which is a DotExpandedDict such as this:
-            # [('0', {'id': ['940'], 'choice': ['This is the first choice']}),
-            #  ('1', {'id': ['941'], 'choice': ['This is the second choice']}),
-            #  ('2', {'id': [''], 'choice': ['']})]
-            child_follow = self.follow.get(related.name, None)
-
-            if child_follow:
-                obj_list = expanded_data.get(related.var_name, {}).items()
-                if not obj_list:
-                    continue
-
-                obj_list.sort(lambda x, y: cmp(int(x[0]), int(y[0])))
-
-                # For each related item...
-                for _, rel_new_data in obj_list:
-
-                    params = {}
-
-                    # Keep track of which core=True fields were provided.
-                    # If all core fields were given, the related object will be saved.
-                    # If none of the core fields were given, the object will be deleted.
-                    # If some, but not all, of the fields were given, the validator would
-                    # have caught that.
-                    all_cores_given, all_cores_blank = True, True
-
-                    # Get a reference to the old object. We'll use it to compare the
-                    # old to the new, to see which fields have changed.
-                    old_rel_obj = None
-                    if self.change:
-                        if rel_new_data[related.opts.pk.name][0]:
-                            try:
-                                old_rel_obj = getattr(self.original_object, related.get_accessor_name()).get(**{'%s__exact' % related.opts.pk.name: rel_new_data[related.opts.pk.attname][0]})
-                            except ObjectDoesNotExist:
-                                pass
-
-                    for f in related.opts.fields:
-                        if f.core and not isinstance(f, FileField) and f.get_manipulator_new_data(rel_new_data, rel=True) in (None, ''):
-                            all_cores_given = False
-                        elif f.core and not isinstance(f, FileField) and f.get_manipulator_new_data(rel_new_data, rel=True) not in (None, ''):
-                            all_cores_blank = False
-                        # If this field isn't editable, give it the same value it had
-                        # previously, according to the given ID. If the ID wasn't
-                        # given, use a default value. FileFields are also a special
-                        # case, because they'll be dealt with later.
-
-                        if f == related.field:
-                            param = getattr(new_object, related.field.rel.get_related_field().attname)
-                        elif (not self.change) and isinstance(f, AutoField):
-                            param = None
-                        elif self.change and (isinstance(f, FileField) or not child_follow.get(f.name, None)):
-                            if old_rel_obj:
-                                param = getattr(old_rel_obj, f.column)
-                            else:
-                                param = f.get_default()
-                        else:
-                            param = f.get_manipulator_new_data(rel_new_data, rel=True)
-                        if param != None:
-                            params[f.attname] = param
-
-                    # Create the related item.
-                    new_rel_obj = related.model(**params)
-
-                    # If all the core fields were provided (non-empty), save the item.
-                    if all_cores_given:
-                        new_rel_obj.save()
-
-                        # Save any uploaded files.
-                        for f in related.opts.fields:
-                            if child_follow.get(f.name, None):
-                                if isinstance(f, FileField) and rel_new_data.get(f.name, False):
-                                    f.save_file(rel_new_data, new_rel_obj, self.change and old_rel_obj or None, old_rel_obj is not None, rel=True)
-
-                        # Calculate whether any fields have changed.
-                        if self.change:
-                            if not old_rel_obj: # This object didn't exist before.
-                                self.fields_added.append('%s "%s"' % (related.opts.verbose_name, new_rel_obj))
-                            else:
-                                for f in related.opts.fields:
-                                    if not f.primary_key and f != related.field and smart_str(getattr(old_rel_obj, f.attname)) != smart_str(getattr(new_rel_obj, f.attname)):
-                                        self.fields_changed.append('%s for %s "%s"' % (f.verbose_name, related.opts.verbose_name, new_rel_obj))
-
-                        # Save many-to-many objects.
-                        for f in related.opts.many_to_many:
-                            if child_follow.get(f.name, None) and not f.rel.edit_inline:
-                                new_value = rel_new_data[f.attname]
-                                setattr(new_rel_obj, f.name, f.rel.to.objects.filter(pk__in=new_value))
-                                if self.change:
-                                    self.fields_changed.append('%s for %s "%s"' % (f.verbose_name, related.opts.verbose_name, new_rel_obj))
-
-                    # If, in the change stage, all of the core fields were blank and
-                    # the primary key (ID) was provided, delete the item.
-                    if self.change and all_cores_blank and old_rel_obj:
-                        new_rel_obj.delete()
-                        self.fields_deleted.append('%s "%s"' % (related.opts.verbose_name, old_rel_obj))
-
-        # Save the order, if applicable.
-        if self.change and self.opts.get_ordered_objects():
-            order = new_data['order_'] and map(int, new_data['order_'].split(',')) or []
-            for rel_opts in self.opts.get_ordered_objects():
-                getattr(new_object, 'set_%s_order' % rel_opts.object_name.lower())(order)
-        return new_object
-
-    def get_related_objects(self):
-        return self.opts.get_followed_related_objects(self.follow)
-
-    def flatten_data(self):
-        new_data = {}
-        obj = self.change and self.original_object or None
-        for f in self.opts.get_data_holders(self.follow):
-            fol = self.follow.get(f.name)
-            new_data.update(f.flatten_data(fol, obj))
-        return new_data
-
-class AutomaticAddManipulator(AutomaticManipulator):
-    change = False
-
-class AutomaticChangeManipulator(AutomaticManipulator):
-    change = True
-    def __init__(self, obj_key, follow=None):
-        self.obj_key = obj_key
-        try:
-            self.original_object = self.manager.get(pk=obj_key)
-        except ObjectDoesNotExist:
-            # If the object doesn't exist, this might be a manipulator for a
-            # one-to-one related object that hasn't created its subobject yet.
-            # For example, this might be a Restaurant for a Place that doesn't
-            # yet have restaurant information.
-            if self.opts.one_to_one_field:
-                # Sanity check -- Make sure the "parent" object exists.
-                # For example, make sure the Place exists for the Restaurant.
-                # Let the ObjectDoesNotExist exception propagate up.
-                limit_choices_to = self.opts.one_to_one_field.rel.limit_choices_to
-                lookup_kwargs = {'%s__exact' % self.opts.one_to_one_field.rel.field_name: obj_key}
-                self.opts.one_to_one_field.rel.to.get_model_module().complex_filter(limit_choices_to).get(**lookup_kwargs)
-                params = dict([(f.attname, f.get_default()) for f in self.opts.fields])
-                params[self.opts.pk.attname] = obj_key
-                self.original_object = self.opts.get_model_module().Klass(**params)
-            else:
-                raise
-        super(AutomaticChangeManipulator, self).__init__(follow=follow)
-
-def manipulator_validator_unique_together(field_name_list, opts, self, field_data, all_data):
-    from django.db.models.fields.related import ManyToOneRel
-    from django.utils.text import get_text_list
-    field_list = [opts.get_field(field_name) for field_name in field_name_list]
-    if isinstance(field_list[0].rel, ManyToOneRel):
-        kwargs = {'%s__%s__iexact' % (field_name_list[0], field_list[0].rel.field_name): field_data}
-    else:
-        kwargs = {'%s__iexact' % field_name_list[0]: field_data}
-    for f in field_list[1:]:
-        # This is really not going to work for fields that have different
-        # form fields, e.g. DateTime.
-        # This validation needs to occur after html2python to be effective.
-        field_val = all_data.get(f.name, None)
-        if field_val is None:
-            # This will be caught by another validator, assuming the field
-            # doesn't have blank=True.
-            return
-        if isinstance(f.rel, ManyToOneRel):
-            kwargs['%s__pk' % f.name] = field_val
-        else:
-            kwargs['%s__iexact' % f.name] = field_val
-    try:
-        old_obj = self.manager.get(**kwargs)
-    except ObjectDoesNotExist:
-        return
-    if hasattr(self, 'original_object') and self.original_object._get_pk_val() == old_obj._get_pk_val():
-        pass
-    else:
-        raise validators.ValidationError, _("%(object)s with this %(type)s already exists for the given %(field)s.") % \
-            {'object': capfirst(opts.verbose_name), 'type': field_list[0].verbose_name, 'field': get_text_list([f.verbose_name for f in field_list[1:]], _('and'))}
-
-def manipulator_validator_unique_for_date(from_field, date_field, opts, lookup_type, self, field_data, all_data):
-    from django.db.models.fields.related import ManyToOneRel
-    date_str = all_data.get(date_field.get_manipulator_field_names('')[0], None)
-    date_val = oldforms.DateField.html2python(date_str)
-    if date_val is None:
-        return # Date was invalid. This will be caught by another validator.
-    lookup_kwargs = {'%s__year' % date_field.name: date_val.year}
-    if isinstance(from_field.rel, ManyToOneRel):
-        lookup_kwargs['%s__pk' % from_field.name] = field_data
-    else:
-        lookup_kwargs['%s__iexact' % from_field.name] = field_data
-    if lookup_type in ('month', 'date'):
-        lookup_kwargs['%s__month' % date_field.name] = date_val.month
-    if lookup_type == 'date':
-        lookup_kwargs['%s__day' % date_field.name] = date_val.day
-    try:
-        old_obj = self.manager.get(**lookup_kwargs)
-    except ObjectDoesNotExist:
-        return
-    else:
-        if hasattr(self, 'original_object') and self.original_object._get_pk_val() == old_obj._get_pk_val():
-            pass
-        else:
-            format_string = (lookup_type == 'date') and '%B %d, %Y' or '%B %Y'
-            date_val = datetime_safe.new_datetime(date_val)
-            raise validators.ValidationError, "Please enter a different %s. The one you entered is already being used for %s." % \
-                (from_field.verbose_name, date_val.strftime(format_string))
diff --git a/webapp/django/db/models/options.py b/webapp/django/db/models/options.py
deleted file mode 100644
index ffea6d5..0000000
--- a/webapp/django/db/models/options.py
+++ /dev/null
@@ -1,486 +0,0 @@
-import re
-from bisect import bisect
-try:
-    set
-except NameError:
-    from sets import Set as set     # Python 2.3 fallback
-
-from django.conf import settings
-from django.db.models.related import RelatedObject
-from django.db.models.fields.related import ManyToManyRel
-from django.db.models.fields import AutoField, FieldDoesNotExist
-from django.db.models.fields.proxy import OrderWrt
-from django.db.models.loading import get_models, app_cache_ready
-from django.utils.translation import activate, deactivate_all, get_language, string_concat
-from django.utils.encoding import force_unicode, smart_str
-from django.utils.datastructures import SortedDict
-
-# Calculate the verbose_name by converting from InitialCaps to "lowercase with spaces".
-get_verbose_name = lambda class_name: re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', ' \\1', class_name).lower().strip()
-
-DEFAULT_NAMES = ('verbose_name', 'db_table', 'ordering',
-                 'unique_together', 'permissions', 'get_latest_by',
-                 'order_with_respect_to', 'app_label', 'db_tablespace',
-                 'abstract')
-
-class Options(object):
-    def __init__(self, meta, app_label=None):
-        self.local_fields, self.local_many_to_many = [], []
-        self.module_name, self.verbose_name = None, None
-        self.verbose_name_plural = None
-        self.db_table = ''
-        self.ordering = []
-        self.unique_together =  []
-        self.permissions =  []
-        self.object_name, self.app_label = None, app_label
-        self.get_latest_by = None
-        self.order_with_respect_to = None
-        self.db_tablespace = settings.DEFAULT_TABLESPACE
-        self.admin = None
-        self.meta = meta
-        self.pk = None
-        self.has_auto_field, self.auto_field = False, None
-        self.one_to_one_field = None
-        self.abstract = False
-        self.parents = SortedDict()
-        self.duplicate_targets = {}
-
-    def contribute_to_class(self, cls, name):
-        from django.db import connection
-        from django.db.backends.util import truncate_name
-
-        cls._meta = self
-        self.installed = re.sub('\.models$', '', cls.__module__) in settings.INSTALLED_APPS
-        # First, construct the default values for these options.
-        self.object_name = cls.__name__
-        self.module_name = self.object_name.lower()
-        self.verbose_name = get_verbose_name(self.object_name)
-
-        # Next, apply any overridden values from 'class Meta'.
-        if self.meta:
-            meta_attrs = self.meta.__dict__.copy()
-            for name in self.meta.__dict__:
-                # Ignore any private attributes that Django doesn't care about.
-                # NOTE: We can't modify a dictionary's contents while looping
-                # over it, so we loop over the *original* dictionary instead.
-                if name.startswith('_'):
-                    del meta_attrs[name]
-            for attr_name in DEFAULT_NAMES:
-                if attr_name in meta_attrs:
-                    setattr(self, attr_name, meta_attrs.pop(attr_name))
-                elif hasattr(self.meta, attr_name):
-                    setattr(self, attr_name, getattr(self.meta, attr_name))
-
-            # unique_together can be either a tuple of tuples, or a single
-            # tuple of two strings. Normalize it to a tuple of tuples, so that
-            # calling code can uniformly expect that.
-            ut = meta_attrs.pop('unique_together', getattr(self, 'unique_together'))
-            if ut and not isinstance(ut[0], (tuple, list)):
-                ut = (ut,)
-            setattr(self, 'unique_together', ut)
-
-            # verbose_name_plural is a special case because it uses a 's'
-            # by default.
-            setattr(self, 'verbose_name_plural', meta_attrs.pop('verbose_name_plural', string_concat(self.verbose_name, 's')))
-
-            # Any leftover attributes must be invalid.
-            if meta_attrs != {}:
-                raise TypeError, "'class Meta' got invalid attribute(s): %s" % ','.join(meta_attrs.keys())
-        else:
-            self.verbose_name_plural = string_concat(self.verbose_name, 's')
-        del self.meta
-
-        # If the db_table wasn't provided, use the app_label + module_name.
-        if not self.db_table:
-            self.db_table = "%s_%s" % (self.app_label, self.module_name)
-            self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
-
-
-    def _prepare(self, model):
-        if self.order_with_respect_to:
-            self.order_with_respect_to = self.get_field(self.order_with_respect_to)
-            self.ordering = ('_order',)
-        else:
-            self.order_with_respect_to = None
-
-        if self.pk is None:
-            if self.parents:
-                # Promote the first parent link in lieu of adding yet another
-                # field.
-                field = self.parents.value_for_index(0)
-                field.primary_key = True
-                self.setup_pk(field)
-            else:
-                auto = AutoField(verbose_name='ID', primary_key=True,
-                        auto_created=True)
-                model.add_to_class('id', auto)
-
-        # Determine any sets of fields that are pointing to the same targets
-        # (e.g. two ForeignKeys to the same remote model). The query
-        # construction code needs to know this. At the end of this,
-        # self.duplicate_targets will map each duplicate field column to the
-        # columns it duplicates.
-        collections = {}
-        for column, target in self.duplicate_targets.iteritems():
-            try:
-                collections[target].add(column)
-            except KeyError:
-                collections[target] = set([column])
-        self.duplicate_targets = {}
-        for elt in collections.itervalues():
-            if len(elt) == 1:
-                continue
-            for column in elt:
-                self.duplicate_targets[column] = elt.difference(set([column]))
-
-    def add_field(self, field):
-        # Insert the given field in the order in which it was created, using
-        # the "creation_counter" attribute of the field.
-        # Move many-to-many related fields from self.fields into
-        # self.many_to_many.
-        if field.rel and isinstance(field.rel, ManyToManyRel):
-            self.local_many_to_many.insert(bisect(self.local_many_to_many, field), field)
-            if hasattr(self, '_m2m_cache'):
-                del self._m2m_cache
-        else:
-            self.local_fields.insert(bisect(self.local_fields, field), field)
-            self.setup_pk(field)
-            if hasattr(self, '_field_cache'):
-                del self._field_cache
-                del self._field_name_cache
-
-        if hasattr(self, '_name_map'):
-            del self._name_map
-
-    def setup_pk(self, field):
-        if not self.pk and field.primary_key:
-            self.pk = field
-            field.serialize = False
-
-    def __repr__(self):
-        return '<Options for %s>' % self.object_name
-
-    def __str__(self):
-        return "%s.%s" % (smart_str(self.app_label), smart_str(self.module_name))
-
-    def verbose_name_raw(self):
-        """
-        There are a few places where the untranslated verbose name is needed
-        (so that we get the same value regardless of currently active
-        locale).
-        """
-        lang = get_language()
-        deactivate_all()
-        raw = force_unicode(self.verbose_name)
-        activate(lang)
-        return raw
-    verbose_name_raw = property(verbose_name_raw)
-
-    def _fields(self):
-        """
-        The getter for self.fields. This returns the list of field objects
-        available to this model (including through parent models).
-
-        Callers are not permitted to modify this list, since it's a reference
-        to this instance (not a copy).
-        """
-        try:
-            self._field_name_cache
-        except AttributeError:
-            self._fill_fields_cache()
-        return self._field_name_cache
-    fields = property(_fields)
-
-    def get_fields_with_model(self):
-        """
-        Returns a sequence of (field, model) pairs for all fields. The "model"
-        element is None for fields on the current model. Mostly of use when
-        constructing queries so that we know which model a field belongs to.
-        """
-        try:
-            self._field_cache
-        except AttributeError:
-            self._fill_fields_cache()
-        return self._field_cache
-
-    def _fill_fields_cache(self):
-        cache = []
-        for parent in self.parents:
-            for field, model in parent._meta.get_fields_with_model():
-                if model:
-                    cache.append((field, model))
-                else:
-                    cache.append((field, parent))
-        cache.extend([(f, None) for f in self.local_fields])
-        self._field_cache = tuple(cache)
-        self._field_name_cache = [x for x, _ in cache]
-
-    def _many_to_many(self):
-        try:
-            self._m2m_cache
-        except AttributeError:
-            self._fill_m2m_cache()
-        return self._m2m_cache.keys()
-    many_to_many = property(_many_to_many)
-
-    def get_m2m_with_model(self):
-        """
-        The many-to-many version of get_fields_with_model().
-        """
-        try:
-            self._m2m_cache
-        except AttributeError:
-            self._fill_m2m_cache()
-        return self._m2m_cache.items()
-
-    def _fill_m2m_cache(self):
-        cache = SortedDict()
-        for parent in self.parents:
-            for field, model in parent._meta.get_m2m_with_model():
-                if model:
-                    cache[field] = model
-                else:
-                    cache[field] = parent
-        for field in self.local_many_to_many:
-            cache[field] = None
-        self._m2m_cache = cache
-
-    def get_field(self, name, many_to_many=True):
-        """
-        Returns the requested field by name. Raises FieldDoesNotExist on error.
-        """
-        to_search = many_to_many and (self.fields + self.many_to_many) or self.fields
-        for f in to_search:
-            if f.name == name:
-                return f
-        raise FieldDoesNotExist, '%s has no field named %r' % (self.object_name, name)
-
-    def get_field_by_name(self, name):
-        """
-        Returns the (field_object, model, direct, m2m), where field_object is
-        the Field instance for the given name, model is the model containing
-        this field (None for local fields), direct is True if the field exists
-        on this model, and m2m is True for many-to-many relations. When
-        'direct' is False, 'field_object' is the corresponding RelatedObject
-        for this field (since the field doesn't have an instance associated
-        with it).
-
-        Uses a cache internally, so after the first access, this is very fast.
-        """
-        try:
-            try:
-                return self._name_map[name]
-            except AttributeError:
-                cache = self.init_name_map()
-                return cache[name]
-        except KeyError:
-            raise FieldDoesNotExist('%s has no field named %r'
-                    % (self.object_name, name))
-
-    def get_all_field_names(self):
-        """
-        Returns a list of all field names that are possible for this model
-        (including reverse relation names).
-        """
-        try:
-            cache = self._name_map
-        except AttributeError:
-            cache = self.init_name_map()
-        names = cache.keys()
-        names.sort()
-        return names
-
-    def init_name_map(self):
-        """
-        Initialises the field name -> field object mapping.
-        """
-        cache = {}
-        # We intentionally handle related m2m objects first so that symmetrical
-        # m2m accessor names can be overridden, if necessary.
-        for f, model in self.get_all_related_m2m_objects_with_model():
-            cache[f.field.related_query_name()] = (f, model, False, True)
-        for f, model in self.get_all_related_objects_with_model():
-            cache[f.field.related_query_name()] = (f, model, False, False)
-        for f, model in self.get_m2m_with_model():
-            cache[f.name] = (f, model, True, True)
-        for f, model in self.get_fields_with_model():
-            cache[f.name] = (f, model, True, False)
-        if self.order_with_respect_to:
-            cache['_order'] = OrderWrt(), None, True, False
-        if app_cache_ready():
-            self._name_map = cache
-        return cache
-
-    def get_add_permission(self):
-        return 'add_%s' % self.object_name.lower()
-
-    def get_change_permission(self):
-        return 'change_%s' % self.object_name.lower()
-
-    def get_delete_permission(self):
-        return 'delete_%s' % self.object_name.lower()
-
-    def get_all_related_objects(self, local_only=False):
-        try:
-            self._related_objects_cache
-        except AttributeError:
-            self._fill_related_objects_cache()
-        if local_only:
-            return [k for k, v in self._related_objects_cache.items() if not v]
-        return self._related_objects_cache.keys()
-
-    def get_all_related_objects_with_model(self):
-        """
-        Returns a list of (related-object, model) pairs. Similar to
-        get_fields_with_model().
-        """
-        try:
-            self._related_objects_cache
-        except AttributeError:
-            self._fill_related_objects_cache()
-        return self._related_objects_cache.items()
-
-    def _fill_related_objects_cache(self):
-        cache = SortedDict()
-        parent_list = self.get_parent_list()
-        for parent in self.parents:
-            for obj, model in parent._meta.get_all_related_objects_with_model():
-                if (obj.field.creation_counter < 0 or obj.field.rel.parent_link) and obj.model not in parent_list:
-                    continue
-                if not model:
-                    cache[obj] = parent
-                else:
-                    cache[obj] = model
-        for klass in get_models():
-            for f in klass._meta.local_fields:
-                if f.rel and not isinstance(f.rel.to, str) and self == f.rel.to._meta:
-                    cache[RelatedObject(f.rel.to, klass, f)] = None
-        self._related_objects_cache = cache
-
-    def get_all_related_many_to_many_objects(self, local_only=False):
-        try:
-            cache = self._related_many_to_many_cache
-        except AttributeError:
-            cache = self._fill_related_many_to_many_cache()
-        if local_only:
-            return [k for k, v in cache.items() if not v]
-        return cache.keys()
-
-    def get_all_related_m2m_objects_with_model(self):
-        """
-        Returns a list of (related-m2m-object, model) pairs. Similar to
-        get_fields_with_model().
-        """
-        try:
-            cache = self._related_many_to_many_cache
-        except AttributeError:
-            cache = self._fill_related_many_to_many_cache()
-        return cache.items()
-
-    def _fill_related_many_to_many_cache(self):
-        cache = SortedDict()
-        parent_list = self.get_parent_list()
-        for parent in self.parents:
-            for obj, model in parent._meta.get_all_related_m2m_objects_with_model():
-                if obj.field.creation_counter < 0 and obj.model not in parent_list:
-                    continue
-                if not model:
-                    cache[obj] = parent
-                else:
-                    cache[obj] = model
-        for klass in get_models():
-            for f in klass._meta.local_many_to_many:
-                if f.rel and not isinstance(f.rel.to, str) and self == f.rel.to._meta:
-                    cache[RelatedObject(f.rel.to, klass, f)] = None
-        if app_cache_ready():
-            self._related_many_to_many_cache = cache
-        return cache
-
-    def get_followed_related_objects(self, follow=None):
-        if follow == None:
-            follow = self.get_follow()
-        return [f for f in self.get_all_related_objects() if follow.get(f.name, None)]
-
-    def get_data_holders(self, follow=None):
-        if follow == None:
-            follow = self.get_follow()
-        return [f for f in self.fields + self.many_to_many + self.get_all_related_objects() if follow.get(f.name, None)]
-
-    def get_follow(self, override=None):
-        follow = {}
-        for f in self.fields + self.many_to_many + self.get_all_related_objects():
-            if override and f.name in override:
-                child_override = override[f.name]
-            else:
-                child_override = None
-            fol = f.get_follow(child_override)
-            if fol != None:
-                follow[f.name] = fol
-        return follow
-
-    def get_base_chain(self, model):
-        """
-        Returns a list of parent classes leading to 'model' (order from closet
-        to most distant ancestor). This has to handle the case were 'model' is
-        a granparent or even more distant relation.
-        """
-        if not self.parents:
-            return
-        if model in self.parents:
-            return [model]
-        for parent in self.parents:
-            res = parent._meta.get_base_chain(model)
-            if res:
-                res.insert(0, parent)
-                return res
-        raise TypeError('%r is not an ancestor of this model'
-                % model._meta.module_name)
-
-    def get_parent_list(self):
-        """
-        Returns a list of all the ancestor of this model as a list. Useful for
-        determining if something is an ancestor, regardless of lineage.
-        """
-        result = set()
-        for parent in self.parents:
-            result.add(parent)
-            result.update(parent._meta.get_parent_list())
-        return result
-
-    def get_ordered_objects(self):
-        "Returns a list of Options objects that are ordered with respect to this object."
-        if not hasattr(self, '_ordered_objects'):
-            objects = []
-            # TODO
-            #for klass in get_models(get_app(self.app_label)):
-            #    opts = klass._meta
-            #    if opts.order_with_respect_to and opts.order_with_respect_to.rel \
-            #        and self == opts.order_with_respect_to.rel.to._meta:
-            #        objects.append(opts)
-            self._ordered_objects = objects
-        return self._ordered_objects
-
-    def has_field_type(self, field_type, follow=None):
-        """
-        Returns True if this object's admin form has at least one of the given
-        field_type (e.g. FileField).
-        """
-        # TODO: follow
-        if not hasattr(self, '_field_types'):
-            self._field_types = {}
-        if field_type not in self._field_types:
-            try:
-                # First check self.fields.
-                for f in self.fields:
-                    if isinstance(f, field_type):
-                        raise StopIteration
-                # Failing that, check related fields.
-                for related in self.get_followed_related_objects(follow):
-                    for f in related.opts.fields:
-                        if isinstance(f, field_type):
-                            raise StopIteration
-            except StopIteration:
-                self._field_types[field_type] = True
-            else:
-                self._field_types[field_type] = False
-        return self._field_types[field_type]
diff --git a/webapp/django/db/models/query.py b/webapp/django/db/models/query.py
deleted file mode 100644
index 2ff1c26..0000000
--- a/webapp/django/db/models/query.py
+++ /dev/null
@@ -1,884 +0,0 @@
-try:
-    set
-except NameError:
-    from sets import Set as set     # Python 2.3 fallback
-
-from django.db import connection, transaction, IntegrityError
-from django.db.models.fields import DateField
-from django.db.models.query_utils import Q, select_related_descend
-from django.db.models import signals, sql
-from django.utils.datastructures import SortedDict
-
-
-# Used to control how many objects are worked with at once in some cases (e.g.
-# when deleting objects).
-CHUNK_SIZE = 100
-ITER_CHUNK_SIZE = CHUNK_SIZE
-
-# Pull into this namespace for backwards compatibility.
-EmptyResultSet = sql.EmptyResultSet
-
-
-class CyclicDependency(Exception):
-    """
-    An error when dealing with a collection of objects that have a cyclic
-    dependency, i.e. when deleting multiple objects.
-    """
-    pass
-
-
-class CollectedObjects(object):
-    """
-    A container that stores keys and lists of values along with remembering the
-    parent objects for all the keys.
-
-    This is used for the database object deletion routines so that we can
-    calculate the 'leaf' objects which should be deleted first.
-    """
-
-    def __init__(self):
-        self.data = {}
-        self.children = {}
-
-    def add(self, model, pk, obj, parent_model, nullable=False):
-        """
-        Adds an item to the container.
-
-        Arguments:
-        * model - the class of the object being added.
-        * pk - the primary key.
-        * obj - the object itself.
-        * parent_model - the model of the parent object that this object was
-          reached through.
-        * nullable - should be True if this relation is nullable.
-
-        Returns True if the item already existed in the structure and
-        False otherwise.
-        """
-        d = self.data.setdefault(model, SortedDict())
-        retval = pk in d
-        d[pk] = obj
-        # Nullable relationships can be ignored -- they are nulled out before
-        # deleting, and therefore do not affect the order in which objects
-        # have to be deleted.
-        if parent_model is not None and not nullable:
-            self.children.setdefault(parent_model, []).append(model)
-        return retval
-
-    def __contains__(self, key):
-        return self.data.__contains__(key)
-
-    def __getitem__(self, key):
-        return self.data[key]
-
-    def __nonzero__(self):
-        return bool(self.data)
-
-    def iteritems(self):
-        for k in self.ordered_keys():
-            yield k, self[k]
-
-    def items(self):
-        return list(self.iteritems())
-
-    def keys(self):
-        return self.ordered_keys()
-
-    def ordered_keys(self):
-        """
-        Returns the models in the order that they should be dealt with (i.e.
-        models with no dependencies first).
-        """
-        dealt_with = SortedDict()
-        # Start with items that have no children
-        models = self.data.keys()
-        while len(dealt_with) < len(models):
-            found = False
-            for model in models:
-                children = self.children.setdefault(model, [])
-                if len([c for c in children if c not in dealt_with]) == 0:
-                    dealt_with[model] = None
-                    found = True
-            if not found:
-                raise CyclicDependency(
-                    "There is a cyclic dependency of items to be processed.")
-
-        return dealt_with.keys()
-
-    def unordered_keys(self):
-        """
-        Fallback for the case where is a cyclic dependency but we don't  care.
-        """
-        return self.data.keys()
-
-
-class QuerySet(object):
-    """
-    Represents a lazy database lookup for a set of objects.
-    """
-    def __init__(self, model=None, query=None):
-        self.model = model
-        self.query = query or sql.Query(self.model, connection)
-        self._result_cache = None
-        self._iter = None
-        self._sticky_filter = False
-
-    ########################
-    # PYTHON MAGIC METHODS #
-    ########################
-
-    def __getstate__(self):
-        """
-        Allows the QuerySet to be pickled.
-        """
-        # Force the cache to be fully populated.
-        len(self)
-
-        obj_dict = self.__dict__.copy()
-        obj_dict['_iter'] = None
-        return obj_dict
-
-    def __repr__(self):
-        return repr(list(self))
-
-    def __len__(self):
-        # Since __len__ is called quite frequently (for example, as part of
-        # list(qs), we make some effort here to be as efficient as possible
-        # whilst not messing up any existing iterators against the QuerySet.
-        if self._result_cache is None:
-            if self._iter:
-                self._result_cache = list(self._iter)
-            else:
-                self._result_cache = list(self.iterator())
-        elif self._iter:
-            self._result_cache.extend(list(self._iter))
-        return len(self._result_cache)
-
-    def __iter__(self):
-        if self._result_cache is None:
-            self._iter = self.iterator()
-            self._result_cache = []
-        if self._iter:
-            return self._result_iter()
-        # Python's list iterator is better than our version when we're just
-        # iterating over the cache.
-        return iter(self._result_cache)
-
-    def _result_iter(self):
-        pos = 0
-        while 1:
-            upper = len(self._result_cache)
-            while pos < upper:
-                yield self._result_cache[pos]
-                pos = pos + 1
-            if not self._iter:
-                raise StopIteration
-            if len(self._result_cache) <= pos:
-                self._fill_cache()
-
-    def __nonzero__(self):
-        if self._result_cache is not None:
-            return bool(self._result_cache)
-        try:
-            iter(self).next()
-        except StopIteration:
-            return False
-        return True
-
-    def __getitem__(self, k):
-        """
-        Retrieves an item or slice from the set of results.
-        """
-        if not isinstance(k, (slice, int, long)):
-            raise TypeError
-        assert ((not isinstance(k, slice) and (k >= 0))
-                or (isinstance(k, slice) and (k.start is None or k.start >= 0)
-                    and (k.stop is None or k.stop >= 0))), \
-                "Negative indexing is not supported."
-
-        if self._result_cache is not None:
-            if self._iter is not None:
-                # The result cache has only been partially populated, so we may
-                # need to fill it out a bit more.
-                if isinstance(k, slice):
-                    if k.stop is not None:
-                        # Some people insist on passing in strings here.
-                        bound = int(k.stop)
-                    else:
-                        bound = None
-                else:
-                    bound = k + 1
-                if len(self._result_cache) < bound:
-                    self._fill_cache(bound - len(self._result_cache))
-            return self._result_cache[k]
-
-        if isinstance(k, slice):
-            qs = self._clone()
-            if k.start is not None:
-                start = int(k.start)
-            else:
-                start = None
-            if k.stop is not None:
-                stop = int(k.stop)
-            else:
-                stop = None
-            qs.query.set_limits(start, stop)
-            return k.step and list(qs)[::k.step] or qs
-        try:
-            qs = self._clone()
-            qs.query.set_limits(k, k + 1)
-            return list(qs)[0]
-        except self.model.DoesNotExist, e:
-            raise IndexError, e.args
-
-    def __and__(self, other):
-        self._merge_sanity_check(other)
-        if isinstance(other, EmptyQuerySet):
-            return other._clone()
-        combined = self._clone()
-        combined.query.combine(other.query, sql.AND)
-        return combined
-
-    def __or__(self, other):
-        self._merge_sanity_check(other)
-        combined = self._clone()
-        if isinstance(other, EmptyQuerySet):
-            return combined
-        combined.query.combine(other.query, sql.OR)
-        return combined
-
-    ####################################
-    # METHODS THAT DO DATABASE QUERIES #
-    ####################################
-
-    def iterator(self):
-        """
-        An iterator over the results from applying this QuerySet to the
-        database.
-        """
-        fill_cache = self.query.select_related
-        if isinstance(fill_cache, dict):
-            requested = fill_cache
-        else:
-            requested = None
-        max_depth = self.query.max_depth
-        extra_select = self.query.extra_select.keys()
-        index_start = len(extra_select)
-        for row in self.query.results_iter():
-            if fill_cache:
-                obj, _ = get_cached_row(self.model, row, index_start,
-                        max_depth, requested=requested)
-            else:
-                obj = self.model(*row[index_start:])
-            for i, k in enumerate(extra_select):
-                setattr(obj, k, row[i])
-            yield obj
-
-    def count(self):
-        """
-        Performs a SELECT COUNT() and returns the number of records as an
-        integer.
-
-        If the QuerySet is already fully cached this simply returns the length
-        of the cached results set to avoid multiple SELECT COUNT(*) calls.
-        """
-        if self._result_cache is not None and not self._iter:
-            return len(self._result_cache)
-
-        return self.query.get_count()
-
-    def get(self, *args, **kwargs):
-        """
-        Performs the query and returns a single object matching the given
-        keyword arguments.
-        """
-        clone = self.filter(*args, **kwargs)
-        num = len(clone)
-        if num == 1:
-            return clone._result_cache[0]
-        if not num:
-            raise self.model.DoesNotExist("%s matching query does not exist."
-                    % self.model._meta.object_name)
-        raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s"
-                % (self.model._meta.object_name, num, kwargs))
-
-    def create(self, **kwargs):
-        """
-        Creates a new object with the given kwargs, saving it to the database
-        and returning the created object.
-        """
-        obj = self.model(**kwargs)
-        obj.save()
-        return obj
-
-    def get_or_create(self, **kwargs):
-        """
-        Looks up an object with the given kwargs, creating one if necessary.
-        Returns a tuple of (object, created), where created is a boolean
-        specifying whether an object was created.
-        """
-        assert kwargs, \
-                'get_or_create() must be passed at least one keyword argument'
-        defaults = kwargs.pop('defaults', {})
-        try:
-            return self.get(**kwargs), False
-        except self.model.DoesNotExist:
-            try:
-                params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
-                params.update(defaults)
-                obj = self.model(**params)
-                sid = transaction.savepoint()
-                obj.save()
-                transaction.savepoint_commit(sid)
-                return obj, True
-            except IntegrityError, e:
-                transaction.savepoint_rollback(sid)
-                try:
-                    return self.get(**kwargs), False
-                except self.model.DoesNotExist:
-                    raise e
-
-    def latest(self, field_name=None):
-        """
-        Returns the latest object, according to the model's 'get_latest_by'
-        option or optional given field_name.
-        """
-        latest_by = field_name or self.model._meta.get_latest_by
-        assert bool(latest_by), "latest() requires either a field_name parameter or 'get_latest_by' in the model"
-        assert self.query.can_filter(), \
-                "Cannot change a query once a slice has been taken."
-        obj = self._clone()
-        obj.query.set_limits(high=1)
-        obj.query.add_ordering('-%s' % latest_by)
-        return obj.get()
-
-    def in_bulk(self, id_list):
-        """
-        Returns a dictionary mapping each of the given IDs to the object with
-        that ID.
-        """
-        assert self.query.can_filter(), \
-                "Cannot use 'limit' or 'offset' with in_bulk"
-        assert isinstance(id_list, (tuple,  list)), \
-                "in_bulk() must be provided with a list of IDs."
-        if not id_list:
-            return {}
-        qs = self._clone()
-        qs.query.add_filter(('pk__in', id_list))
-        return dict([(obj._get_pk_val(), obj) for obj in qs.iterator()])
-
-    def delete(self):
-        """
-        Deletes the records in the current QuerySet.
-        """
-        assert self.query.can_filter(), \
-                "Cannot use 'limit' or 'offset' with delete."
-
-        del_query = self._clone()
-
-        # Disable non-supported fields.
-        del_query.query.select_related = False
-        del_query.query.clear_ordering()
-
-        # Delete objects in chunks to prevent the list of related objects from
-        # becoming too long.
-        while 1:
-            # Collect all the objects to be deleted in this chunk, and all the
-            # objects that are related to the objects that are to be deleted.
-            seen_objs = CollectedObjects()
-            for object in del_query[:CHUNK_SIZE]:
-                object._collect_sub_objects(seen_objs)
-
-            if not seen_objs:
-                break
-            delete_objects(seen_objs)
-
-        # Clear the result cache, in case this QuerySet gets reused.
-        self._result_cache = None
-    delete.alters_data = True
-
-    def update(self, **kwargs):
-        """
-        Updates all elements in the current QuerySet, setting all the given
-        fields to the appropriate values.
-        """
-        assert self.query.can_filter(), \
-                "Cannot update a query once a slice has been taken."
-        query = self.query.clone(sql.UpdateQuery)
-        query.add_update_values(kwargs)
-        rows = query.execute_sql(None)
-        transaction.commit_unless_managed()
-        self._result_cache = None
-        return rows
-    update.alters_data = True
-
-    def _update(self, values):
-        """
-        A version of update that accepts field objects instead of field names.
-        Used primarily for model saving and not intended for use by general
-        code (it requires too much poking around at model internals to be
-        useful at that level).
-        """
-        assert self.query.can_filter(), \
-                "Cannot update a query once a slice has been taken."
-        query = self.query.clone(sql.UpdateQuery)
-        query.add_update_fields(values)
-        self._result_cache = None
-        return query.execute_sql(None)
-    _update.alters_data = True
-
-    ##################################################
-    # PUBLIC METHODS THAT RETURN A QUERYSET SUBCLASS #
-    ##################################################
-
-    def values(self, *fields):
-        return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)
-
-    def values_list(self, *fields, **kwargs):
-        flat = kwargs.pop('flat', False)
-        if kwargs:
-            raise TypeError('Unexpected keyword arguments to values_list: %s'
-                    % (kwargs.keys(),))
-        if flat and len(fields) > 1:
-            raise TypeError("'flat' is not valid when values_list is called with more than one field.")
-        return self._clone(klass=ValuesListQuerySet, setup=True, flat=flat,
-                _fields=fields)
-
-    def dates(self, field_name, kind, order='ASC'):
-        """
-        Returns a list of datetime objects representing all available dates for
-        the given field_name, scoped to 'kind'.
-        """
-        assert kind in ("month", "year", "day"), \
-                "'kind' must be one of 'year', 'month' or 'day'."
-        assert order in ('ASC', 'DESC'), \
-                "'order' must be either 'ASC' or 'DESC'."
-        return self._clone(klass=DateQuerySet, setup=True,
-                _field_name=field_name, _kind=kind, _order=order)
-
-    def none(self):
-        """
-        Returns an empty QuerySet.
-        """
-        return self._clone(klass=EmptyQuerySet)
-
-    ##################################################################
-    # PUBLIC METHODS THAT ALTER ATTRIBUTES AND RETURN A NEW QUERYSET #
-    ##################################################################
-
-    def all(self):
-        """
-        Returns a new QuerySet that is a copy of the current one. This allows a
-        QuerySet to proxy for a model manager in some cases.
-        """
-        return self._clone()
-
-    def filter(self, *args, **kwargs):
-        """
-        Returns a new QuerySet instance with the args ANDed to the existing
-        set.
-        """
-        return self._filter_or_exclude(False, *args, **kwargs)
-
-    def exclude(self, *args, **kwargs):
-        """
-        Returns a new QuerySet instance with NOT (args) ANDed to the existing
-        set.
-        """
-        return self._filter_or_exclude(True, *args, **kwargs)
-
-    def _filter_or_exclude(self, negate, *args, **kwargs):
-        if args or kwargs:
-            assert self.query.can_filter(), \
-                    "Cannot filter a query once a slice has been taken."
-
-        clone = self._clone()
-        if negate:
-            clone.query.add_q(~Q(*args, **kwargs))
-        else:
-            clone.query.add_q(Q(*args, **kwargs))
-        return clone
-
-    def complex_filter(self, filter_obj):
-        """
-        Returns a new QuerySet instance with filter_obj added to the filters.
-
-        filter_obj can be a Q object (or anything with an add_to_query()
-        method) or a dictionary of keyword lookup arguments.
-
-        This exists to support framework features such as 'limit_choices_to',
-        and usually it will be more natural to use other methods.
-        """
-        if isinstance(filter_obj, Q) or hasattr(filter_obj, 'add_to_query'):
-            clone = self._clone()
-            clone.query.add_q(filter_obj)
-            return clone
-        else:
-            return self._filter_or_exclude(None, **filter_obj)
-
-    def select_related(self, *fields, **kwargs):
-        """
-        Returns a new QuerySet instance that will select related objects.
-
-        If fields are specified, they must be ForeignKey fields and only those
-        related objects are included in the selection.
-        """
-        depth = kwargs.pop('depth', 0)
-        if kwargs:
-            raise TypeError('Unexpected keyword arguments to select_related: %s'
-                    % (kwargs.keys(),))
-        obj = self._clone()
-        if fields:
-            if depth:
-                raise TypeError('Cannot pass both "depth" and fields to select_related()')
-            obj.query.add_select_related(fields)
-        else:
-            obj.query.select_related = True
-        if depth:
-            obj.query.max_depth = depth
-        return obj
-
-    def dup_select_related(self, other):
-        """
-        Copies the related selection status from the QuerySet 'other' to the
-        current QuerySet.
-        """
-        self.query.select_related = other.query.select_related
-
-    def order_by(self, *field_names):
-        """
-        Returns a new QuerySet instance with the ordering changed.
-        """
-        assert self.query.can_filter(), \
-                "Cannot reorder a query once a slice has been taken."
-        obj = self._clone()
-        obj.query.clear_ordering()
-        obj.query.add_ordering(*field_names)
-        return obj
-
-    def distinct(self, true_or_false=True):
-        """
-        Returns a new QuerySet instance that will select only distinct results.
-        """
-        obj = self._clone()
-        obj.query.distinct = true_or_false
-        return obj
-
-    def extra(self, select=None, where=None, params=None, tables=None,
-              order_by=None, select_params=None):
-        """
-        Adds extra SQL fragments to the query.
-        """
-        assert self.query.can_filter(), \
-                "Cannot change a query once a slice has been taken"
-        clone = self._clone()
-        clone.query.add_extra(select, select_params, where, params, tables, order_by)
-        return clone
-
-    def reverse(self):
-        """
-        Reverses the ordering of the QuerySet.
-        """
-        clone = self._clone()
-        clone.query.standard_ordering = not clone.query.standard_ordering
-        return clone
-
-    ###################
-    # PRIVATE METHODS #
-    ###################
-
-    def _clone(self, klass=None, setup=False, **kwargs):
-        if klass is None:
-            klass = self.__class__
-        query = self.query.clone()
-        if self._sticky_filter:
-            query.filter_is_sticky = True
-        c = klass(model=self.model, query=query)
-        c.__dict__.update(kwargs)
-        if setup and hasattr(c, '_setup_query'):
-            c._setup_query()
-        return c
-
-    def _fill_cache(self, num=None):
-        """
-        Fills the result cache with 'num' more entries (or until the results
-        iterator is exhausted).
-        """
-        if self._iter:
-            try:
-                for i in range(num or ITER_CHUNK_SIZE):
-                    self._result_cache.append(self._iter.next())
-            except StopIteration:
-                self._iter = None
-
-    def _next_is_sticky(self):
-        """
-        Indicates that the next filter call and the one following that should
-        be treated as a single filter. This is only important when it comes to
-        determining when to reuse tables for many-to-many filters. Required so
-        that we can filter naturally on the results of related managers.
-
-        This doesn't return a clone of the current QuerySet (it returns
-        "self"). The method is only used internally and should be immediately
-        followed by a filter() that does create a clone.
-        """
-        self._sticky_filter = True
-        return self
-
-    def _merge_sanity_check(self, other):
-        """
-        Checks that we are merging two comparable QuerySet classes. By default
-        this does nothing, but see the ValuesQuerySet for an example of where
-        it's useful.
-        """
-        pass
-
-
-class ValuesQuerySet(QuerySet):
-    def __init__(self, *args, **kwargs):
-        super(ValuesQuerySet, self).__init__(*args, **kwargs)
-        # select_related isn't supported in values(). (FIXME -#3358)
-        self.query.select_related = False
-
-        # QuerySet.clone() will also set up the _fields attribute with the
-        # names of the model fields to select.
-
-    def iterator(self):
-        if (not self.extra_names and
-            len(self.field_names) != len(self.model._meta.fields)):
-            self.query.trim_extra_select(self.extra_names)
-        names = self.query.extra_select.keys() + self.field_names
-        for row in self.query.results_iter():
-            yield dict(zip(names, row))
-
-    def _setup_query(self):
-        """
-        Constructs the field_names list that the values query will be
-        retrieving.
-
-        Called by the _clone() method after initializing the rest of the
-        instance.
-        """
-        self.extra_names = []
-        if self._fields:
-            if not self.query.extra_select:
-                field_names = list(self._fields)
-            else:
-                field_names = []
-                for f in self._fields:
-                    if self.query.extra_select.has_key(f):
-                        self.extra_names.append(f)
-                    else:
-                        field_names.append(f)
-        else:
-            # Default to all fields.
-            field_names = [f.attname for f in self.model._meta.fields]
-
-        self.query.add_fields(field_names, False)
-        self.query.default_cols = False
-        self.field_names = field_names
-
-    def _clone(self, klass=None, setup=False, **kwargs):
-        """
-        Cloning a ValuesQuerySet preserves the current fields.
-        """
-        c = super(ValuesQuerySet, self)._clone(klass, **kwargs)
-        c._fields = self._fields[:]
-        c.field_names = self.field_names
-        c.extra_names = self.extra_names
-        if setup and hasattr(c, '_setup_query'):
-            c._setup_query()
-        return c
-
-    def _merge_sanity_check(self, other):
-        super(ValuesQuerySet, self)._merge_sanity_check(other)
-        if (set(self.extra_names) != set(other.extra_names) or
-                set(self.field_names) != set(other.field_names)):
-            raise TypeError("Merging '%s' classes must involve the same values in each case."
-                    % self.__class__.__name__)
-
-
-class ValuesListQuerySet(ValuesQuerySet):
-    def iterator(self):
-        self.query.trim_extra_select(self.extra_names)
-        if self.flat and len(self._fields) == 1:
-            for row in self.query.results_iter():
-                yield row[0]
-        elif not self.query.extra_select:
-            for row in self.query.results_iter():
-                yield tuple(row)
-        else:
-            # When extra(select=...) is involved, the extra cols come are
-            # always at the start of the row, so we need to reorder the fields
-            # to match the order in self._fields.
-            names = self.query.extra_select.keys() + self.field_names
-            for row in self.query.results_iter():
-                data = dict(zip(names, row))
-                yield tuple([data[f] for f in self._fields])
-
-    def _clone(self, *args, **kwargs):
-        clone = super(ValuesListQuerySet, self)._clone(*args, **kwargs)
-        clone.flat = self.flat
-        return clone
-
-
-class DateQuerySet(QuerySet):
-    def iterator(self):
-        return self.query.results_iter()
-
-    def _setup_query(self):
-        """
-        Sets up any special features of the query attribute.
-
-        Called by the _clone() method after initializing the rest of the
-        instance.
-        """
-        self.query = self.query.clone(klass=sql.DateQuery, setup=True)
-        self.query.select = []
-        field = self.model._meta.get_field(self._field_name, many_to_many=False)
-        assert isinstance(field, DateField), "%r isn't a DateField." \
-                % field_name
-        self.query.add_date_select(field, self._kind, self._order)
-        if field.null:
-            self.query.add_filter(('%s__isnull' % field.name, False))
-
-    def _clone(self, klass=None, setup=False, **kwargs):
-        c = super(DateQuerySet, self)._clone(klass, False, **kwargs)
-        c._field_name = self._field_name
-        c._kind = self._kind
-        if setup and hasattr(c, '_setup_query'):
-            c._setup_query()
-        return c
-
-
-class EmptyQuerySet(QuerySet):
-    def __init__(self, model=None, query=None):
-        super(EmptyQuerySet, self).__init__(model, query)
-        self._result_cache = []
-
-    def __and__(self, other):
-        return self._clone()
-
-    def __or__(self, other):
-        return other._clone()
-
-    def count(self):
-        return 0
-
-    def delete(self):
-        pass
-
-    def _clone(self, klass=None, setup=False, **kwargs):
-        c = super(EmptyQuerySet, self)._clone(klass, **kwargs)
-        c._result_cache = []
-        return c
-
-    def iterator(self):
-        # This slightly odd construction is because we need an empty generator
-        # (it raises StopIteration immediately).
-        yield iter([]).next()
-
-
-def get_cached_row(klass, row, index_start, max_depth=0, cur_depth=0,
-                   requested=None):
-    """
-    Helper function that recursively returns an object with the specified
-    related attributes already populated.
-    """
-    if max_depth and requested is None and cur_depth > max_depth:
-        # We've recursed deeply enough; stop now.
-        return None
-
-    restricted = requested is not None
-    index_end = index_start + len(klass._meta.fields)
-    fields = row[index_start:index_end]
-    if not [x for x in fields if x is not None]:
-        # If we only have a list of Nones, there was not related object.
-        return None, index_end
-    obj = klass(*fields)
-    for f in klass._meta.fields:
-        if not select_related_descend(f, restricted, requested):
-            continue
-        if restricted:
-            next = requested[f.name]
-        else:
-            next = None
-        cached_row = get_cached_row(f.rel.to, row, index_end, max_depth,
-                cur_depth+1, next)
-        if cached_row:
-            rel_obj, index_end = cached_row
-            setattr(obj, f.get_cache_name(), rel_obj)
-    return obj, index_end
-
-
-def delete_objects(seen_objs):
-    """
-    Iterate through a list of seen classes, and remove any instances that are
-    referred to.
-    """
-    try:
-        ordered_classes = seen_objs.keys()
-    except CyclicDependency:
-        # If there is a cyclic dependency, we cannot in general delete the
-        # objects.  However, if an appropriate transaction is set up, or if the
-        # database is lax enough, it will succeed. So for now, we go ahead and
-        # try anyway.
-        ordered_classes = seen_objs.unordered_keys()
-
-    obj_pairs = {}
-    for cls in ordered_classes:
-        items = seen_objs[cls].items()
-        items.sort()
-        obj_pairs[cls] = items
-
-        # Pre-notify all instances to be deleted.
-        for pk_val, instance in items:
-            signals.pre_delete.send(sender=cls, instance=instance)
-
-        pk_list = [pk for pk,instance in items]
-        del_query = sql.DeleteQuery(cls, connection)
-        del_query.delete_batch_related(pk_list)
-
-        update_query = sql.UpdateQuery(cls, connection)
-        for field, model in cls._meta.get_fields_with_model():
-            if (field.rel and field.null and field.rel.to in seen_objs and
-                    filter(lambda f: f.column == field.column,
-                    field.rel.to._meta.fields)):
-                if model:
-                    sql.UpdateQuery(model, connection).clear_related(field,
-                            pk_list)
-                else:
-                    update_query.clear_related(field, pk_list)
-
-    # Now delete the actual data.
-    for cls in ordered_classes:
-        items = obj_pairs[cls]
-        items.reverse()
-
-        pk_list = [pk for pk,instance in items]
-        del_query = sql.DeleteQuery(cls, connection)
-        del_query.delete_batch(pk_list)
-
-        # Last cleanup; set NULLs where there once was a reference to the
-        # object, NULL the primary key of the found objects, and perform
-        # post-notification.
-        for pk_val, instance in items:
-            for field in cls._meta.fields:
-                if field.rel and field.null and field.rel.to in seen_objs:
-                    setattr(instance, field.attname, None)
-
-            signals.post_delete.send(sender=cls, instance=instance)
-            setattr(instance, cls._meta.pk.attname, None)
-
-    transaction.commit_unless_managed()
-
-
-def insert_query(model, values, return_id=False, raw_values=False):
-    """
-    Inserts a new record for the given model. This provides an interface to
-    the InsertQuery class and is how Model.save() is implemented. It is not
-    part of the public API.
-    """
-    query = sql.InsertQuery(model, connection)
-    query.insert_values(values, raw_values)
-    return query.execute_sql(return_id)
diff --git a/webapp/django/db/models/query_utils.py b/webapp/django/db/models/query_utils.py
deleted file mode 100644
index 8dbb1ec..0000000
--- a/webapp/django/db/models/query_utils.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""
-Various data structures used in query construction.
-
-Factored out from django.db.models.query so that they can also be used by other
-modules without getting into circular import difficulties.
-"""
-
-from copy import deepcopy
-
-from django.utils import tree
-
-class QueryWrapper(object):
-    """
-    A type that indicates the contents are an SQL fragment and the associate
-    parameters. Can be used to pass opaque data to a where-clause, for example.
-    """
-    def __init__(self, sql, params):
-        self.data = sql, params
-
-class Q(tree.Node):
-    """
-    Encapsulates filters as objects that can then be combined logically (using
-    & and |).
-    """
-    # Connection types
-    AND = 'AND'
-    OR = 'OR'
-    default = AND
-
-    def __init__(self, *args, **kwargs):
-        super(Q, self).__init__(children=list(args) + kwargs.items())
-
-    def _combine(self, other, conn):
-        if not isinstance(other, Q):
-            raise TypeError(other)
-        obj = deepcopy(self)
-        obj.add(other, conn)
-        return obj
-
-    def __or__(self, other):
-        return self._combine(other, self.OR)
-
-    def __and__(self, other):
-        return self._combine(other, self.AND)
-
-    def __invert__(self):
-        obj = deepcopy(self)
-        obj.negate()
-        return obj
-
-def select_related_descend(field, restricted, requested):
-    """
-    Returns True if this field should be used to descend deeper for
-    select_related() purposes. Used by both the query construction code
-    (sql.query.fill_related_selections()) and the model instance creation code
-    (query.get_cached_row()).
-    """
-    if not field.rel:
-        return False
-    if field.rel.parent_link:
-        return False
-    if restricted and field.name not in requested:
-        return False
-    if not restricted and field.null:
-        return False
-    return True
-
diff --git a/webapp/django/db/models/related.py b/webapp/django/db/models/related.py
deleted file mode 100644
index 2c1dc5c..0000000
--- a/webapp/django/db/models/related.py
+++ /dev/null
@@ -1,142 +0,0 @@
-class BoundRelatedObject(object):
-    def __init__(self, related_object, field_mapping, original):
-        self.relation = related_object
-        self.field_mappings = field_mapping[related_object.name]
-
-    def template_name(self):
-        raise NotImplementedError
-
-    def __repr__(self):
-        return repr(self.__dict__)
-
-class RelatedObject(object):
-    def __init__(self, parent_model, model, field):
-        self.parent_model = parent_model
-        self.model = model
-        self.opts = model._meta
-        self.field = field
-        self.edit_inline = field.rel.edit_inline
-        self.name = '%s:%s' % (self.opts.app_label, self.opts.module_name)
-        self.var_name = self.opts.object_name.lower()
-
-    def flatten_data(self, follow, obj=None):
-        new_data = {}
-        rel_instances = self.get_list(obj)
-        for i, rel_instance in enumerate(rel_instances):
-            instance_data = {}
-            for f in self.opts.fields + self.opts.many_to_many:
-                # TODO: Fix for recursive manipulators.
-                fol = follow.get(f.name, None)
-                if fol:
-                    field_data = f.flatten_data(fol, rel_instance)
-                    for name, value in field_data.items():
-                        instance_data['%s.%d.%s' % (self.var_name, i, name)] = value
-            new_data.update(instance_data)
-        return new_data
-
-    def extract_data(self, data):
-        """
-        Pull out the data meant for inline objects of this class,
-        i.e. anything starting with our module name.
-        """
-        return data # TODO
-
-    def get_list(self, parent_instance=None):
-        "Get the list of this type of object from an instance of the parent class."
-        if parent_instance is not None:
-            attr = getattr(parent_instance, self.get_accessor_name())
-            if self.field.rel.multiple:
-                # For many-to-many relationships, return a list of objects
-                # corresponding to the xxx_num_in_admin options of the field
-                objects = list(attr.all())
-
-                count = len(objects) + self.field.rel.num_extra_on_change
-                if self.field.rel.min_num_in_admin:
-                    count = max(count, self.field.rel.min_num_in_admin)
-                if self.field.rel.max_num_in_admin:
-                    count = min(count, self.field.rel.max_num_in_admin)
-
-                change = count - len(objects)
-                if change > 0:
-                    return objects + [None] * change
-                if change < 0:
-                    return objects[:change]
-                else: # Just right
-                    return objects
-            else:
-                # A one-to-one relationship, so just return the single related
-                # object
-                return [attr]
-        else:
-            if self.field.rel.min_num_in_admin:
-                return [None] * max(self.field.rel.num_in_admin, self.field.rel.min_num_in_admin)
-            else:
-                return [None] * self.field.rel.num_in_admin
-
-    def get_db_prep_lookup(self, lookup_type, value):
-        # Defer to the actual field definition for db prep
-        return self.field.get_db_prep_lookup(lookup_type, value)
-        
-    def editable_fields(self):
-        "Get the fields in this class that should be edited inline."
-        return [f for f in self.opts.fields + self.opts.many_to_many if f.editable and f != self.field]
-
-    def get_follow(self, override=None):
-        if isinstance(override, bool):
-            if override:
-                over = {}
-            else:
-                return None
-        else:
-            if override:
-                over = override.copy()
-            elif self.edit_inline:
-                over = {}
-            else:
-                return None
-
-        over[self.field.name] = False
-        return self.opts.get_follow(over)
-
-    def get_manipulator_fields(self, opts, manipulator, change, follow):
-        if self.field.rel.multiple:
-            if change:
-                attr = getattr(manipulator.original_object, self.get_accessor_name())
-                count = attr.count()
-                count += self.field.rel.num_extra_on_change
-            else:
-                count = self.field.rel.num_in_admin
-            if self.field.rel.min_num_in_admin:
-                count = max(count, self.field.rel.min_num_in_admin)
-            if self.field.rel.max_num_in_admin:
-                count = min(count, self.field.rel.max_num_in_admin)
-        else:
-            count = 1
-
-        fields = []
-        for i in range(count):
-            for f in self.opts.fields + self.opts.many_to_many:
-                if follow.get(f.name, False):
-                    prefix = '%s.%d.' % (self.var_name, i)
-                    fields.extend(f.get_manipulator_fields(self.opts, manipulator, change,
-                                                           name_prefix=prefix, rel=True))
-        return fields
-
-    def __repr__(self):
-        return "<RelatedObject: %s related to %s>" % (self.name, self.field.name)
-
-    def bind(self, field_mapping, original, bound_related_object_class=BoundRelatedObject):
-        return bound_related_object_class(self, field_mapping, original)
-
-    def get_accessor_name(self):
-        # This method encapsulates the logic that decides what name to give an
-        # accessor descriptor that retrieves related many-to-one or
-        # many-to-many objects. It uses the lower-cased object_name + "_set",
-        # but this can be overridden with the "related_name" option.
-        if self.field.rel.multiple:
-            # If this is a symmetrical m2m relation on self, there is no reverse accessor.
-            if getattr(self.field.rel, 'symmetrical', False) and self.model == self.parent_model:
-                return None
-            return self.field.rel.related_name or (self.opts.object_name.lower() + '_set')
-        else:
-            return self.field.rel.related_name or (self.opts.object_name.lower())
diff --git a/webapp/django/db/models/signals.py b/webapp/django/db/models/signals.py
deleted file mode 100644
index 0455336..0000000
--- a/webapp/django/db/models/signals.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.dispatch import Signal
-
-class_prepared = Signal(providing_args=["class"])
-
-pre_init = Signal(providing_args=["instance", "args", "kwargs"])
-post_init = Signal(providing_args=["instance"])
-
-pre_save = Signal(providing_args=["instance", "raw"])
-post_save = Signal(providing_args=["instance", "raw", "created"])
-
-pre_delete = Signal(providing_args=["instance"])
-post_delete = Signal(providing_args=["instance"])
-
-post_syncdb = Signal(providing_args=["class", "app", "created_models", "verbosity", "interactive"])
diff --git a/webapp/django/db/models/sql/__init__.py b/webapp/django/db/models/sql/__init__.py
deleted file mode 100644
index 7310982..0000000
--- a/webapp/django/db/models/sql/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from query import *
-from subqueries import *
-from where import AND, OR
-from datastructures import EmptyResultSet
-
-__all__ = ['Query', 'AND', 'OR', 'EmptyResultSet']
-
diff --git a/webapp/django/db/models/sql/constants.py b/webapp/django/db/models/sql/constants.py
deleted file mode 100644
index 129a592..0000000
--- a/webapp/django/db/models/sql/constants.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import re
-
-# Valid query types (a dictionary is used for speedy lookups).
-QUERY_TERMS = dict([(x, None) for x in (
-    'exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'in',
-    'startswith', 'istartswith', 'endswith', 'iendswith', 'range', 'year',
-    'month', 'day', 'isnull', 'search', 'regex', 'iregex',
-    )])
-
-# Size of each "chunk" for get_iterator calls.
-# Larger values are slightly faster at the expense of more storage space.
-GET_ITERATOR_CHUNK_SIZE = 100
-
-# Separator used to split filter strings apart.
-LOOKUP_SEP = '__'
-
-# Constants to make looking up tuple values clearer.
-# Join lists
-TABLE_NAME = 0
-RHS_ALIAS = 1
-JOIN_TYPE = 2
-LHS_ALIAS = 3
-LHS_JOIN_COL = 4
-RHS_JOIN_COL = 5
-NULLABLE = 6
-
-# How many results to expect from a cursor.execute call
-MULTI = 'multi'
-SINGLE = 'single'
-
-ORDER_PATTERN = re.compile(r'\?|[-+]?[.\w]+$')
-ORDER_DIR = {
-    'ASC': ('ASC', 'DESC'),
-    'DESC': ('DESC', 'ASC')}
-
-
diff --git a/webapp/django/db/models/sql/datastructures.py b/webapp/django/db/models/sql/datastructures.py
deleted file mode 100644
index 913d8fd..0000000
--- a/webapp/django/db/models/sql/datastructures.py
+++ /dev/null
@@ -1,103 +0,0 @@
-"""
-Useful auxilliary data structures for query construction. Not useful outside
-the SQL domain.
-"""
-
-class EmptyResultSet(Exception):
-    pass
-
-class FullResultSet(Exception):
-    pass
-
-class MultiJoin(Exception):
-    """
-    Used by join construction code to indicate the point at which a
-    multi-valued join was attempted (if the caller wants to treat that
-    exceptionally).
-    """
-    def __init__(self, level):
-        self.level = level
-
-class Empty(object):
-    pass
-
-class RawValue(object):
-    def __init__(self, value):
-        self.value = value
-
-class Aggregate(object):
-    """
-    Base class for all aggregate-related classes (min, max, avg, count, sum).
-    """
-    def relabel_aliases(self, change_map):
-        """
-        Relabel the column alias, if necessary. Must be implemented by
-        subclasses.
-        """
-        raise NotImplementedError
-
-    def as_sql(self, quote_func=None):
-        """
-        Returns the SQL string fragment for this object.
-
-        The quote_func function is used to quote the column components. If
-        None, it defaults to doing nothing.
-
-        Must be implemented by subclasses.
-        """
-        raise NotImplementedError
-
-class Count(Aggregate):
-    """
-    Perform a count on the given column.
-    """
-    def __init__(self, col='*', distinct=False):
-        """
-        Set the column to count on (defaults to '*') and set whether the count
-        should be distinct or not.
-        """
-        self.col = col
-        self.distinct = distinct
-
-    def relabel_aliases(self, change_map):
-        c = self.col
-        if isinstance(c, (list, tuple)):
-            self.col = (change_map.get(c[0], c[0]), c[1])
-
-    def as_sql(self, quote_func=None):
-        if not quote_func:
-            quote_func = lambda x: x
-        if isinstance(self.col, (list, tuple)):
-            col = ('%s.%s' % tuple([quote_func(c) for c in self.col]))
-        elif hasattr(self.col, 'as_sql'):
-            col = self.col.as_sql(quote_func)
-        else:
-            col = self.col
-        if self.distinct:
-            return 'COUNT(DISTINCT %s)' % col
-        else:
-            return 'COUNT(%s)' % col
-
-class Date(object):
-    """
-    Add a date selection column.
-    """
-    def __init__(self, col, lookup_type, date_sql_func):
-        self.col = col
-        self.lookup_type = lookup_type
-        self.date_sql_func = date_sql_func
-
-    def relabel_aliases(self, change_map):
-        c = self.col
-        if isinstance(c, (list, tuple)):
-            self.col = (change_map.get(c[0], c[0]), c[1])
-
-    def as_sql(self, quote_func=None):
-        if not quote_func:
-            quote_func = lambda x: x
-        if isinstance(self.col, (list, tuple)):
-            col = '%s.%s' % tuple([quote_func(c) for c in self.col])
-        else:
-            col = self.col
-        return self.date_sql_func(self.lookup_type, col)
-
diff --git a/webapp/django/db/models/sql/query.py b/webapp/django/db/models/sql/query.py
deleted file mode 100644
index 287890a..0000000
--- a/webapp/django/db/models/sql/query.py
+++ /dev/null
@@ -1,1705 +0,0 @@
-"""
-Create SQL statements for QuerySets.
-
-The code in here encapsulates all of the SQL construction so that QuerySets
-themselves do not have to (and could be backed by things other than SQL
-databases). The abstraction barrier only works one way: this module has to know
-all about the internals of models in order to get the information it needs.
-"""
-
-from copy import deepcopy
-
-from django.utils.tree import Node
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_unicode
-from django.db import connection
-from django.db.models import signals
-from django.db.models.fields import FieldDoesNotExist
-from django.db.models.query_utils import select_related_descend
-from django.db.models.sql.where import WhereNode, EverythingNode, AND, OR
-from django.db.models.sql.datastructures import Count
-from django.core.exceptions import FieldError
-from datastructures import EmptyResultSet, Empty, MultiJoin
-from constants import *
-
-try:
-    set
-except NameError:
-    from sets import Set as set     # Python 2.3 fallback
-
-__all__ = ['Query']
-
-class Query(object):
-    """
-    A single SQL query.
-    """
-    # SQL join types. These are part of the class because their string forms
-    # vary from database to database and can be customised by a subclass.
-    INNER = 'INNER JOIN'
-    LOUTER = 'LEFT OUTER JOIN'
-
-    alias_prefix = 'T'
-    query_terms = QUERY_TERMS
-
-    def __init__(self, model, connection, where=WhereNode):
-        self.model = model
-        self.connection = connection
-        self.alias_refcount = {}
-        self.alias_map = {}     # Maps alias to join information
-        self.table_map = {}     # Maps table names to list of aliases.
-        self.join_map = {}
-        self.rev_join_map = {}  # Reverse of join_map.
-        self.quote_cache = {}
-        self.default_cols = True
-        self.default_ordering = True
-        self.standard_ordering = True
-        self.ordering_aliases = []
-        self.start_meta = None
-        self.select_fields = []
-        self.related_select_fields = []
-        self.dupe_avoidance = {}
-        self.used_aliases = set()
-        self.filter_is_sticky = False
-
-        # SQL-related attributes
-        self.select = []
-        self.tables = []    # Aliases in the order they are created.
-        self.where = where()
-        self.where_class = where
-        self.group_by = []
-        self.having = []
-        self.order_by = []
-        self.low_mark, self.high_mark = 0, None  # Used for offset/limit
-        self.distinct = False
-        self.select_related = False
-        self.related_select_cols = []
-
-        # Arbitrary maximum limit for select_related. Prevents infinite
-        # recursion. Can be changed by the depth parameter to select_related().
-        self.max_depth = 5
-
-        # These are for extensions. The contents are more or less appended
-        # verbatim to the appropriate clause.
-        self.extra_select = SortedDict()  # Maps col_alias -> (col_sql, params).
-        self.extra_tables = ()
-        self.extra_where = ()
-        self.extra_params = ()
-        self.extra_order_by = ()
-
-    def __str__(self):
-        """
-        Returns the query as a string of SQL with the parameter values
-        substituted in.
-
-        Parameter values won't necessarily be quoted correctly, since that is
-        done by the database interface at execution time.
-        """
-        sql, params = self.as_sql()
-        return sql % params
-
-    def __deepcopy__(self, memo):
-        result= self.clone()
-        memo[id(self)] = result
-        return result
-
-    def __getstate__(self):
-        """
-        Pickling support.
-        """
-        obj_dict = self.__dict__.copy()
-        obj_dict['related_select_fields'] = []
-        obj_dict['related_select_cols'] = []
-        del obj_dict['connection']
-        return obj_dict
-
-    def __setstate__(self, obj_dict):
-        """
-        Unpickling support.
-        """
-        self.__dict__.update(obj_dict)
-        # XXX: Need a better solution for this when multi-db stuff is
-        # supported. It's the only class-reference to the module-level
-        # connection variable.
-        self.connection = connection
-
-    def get_meta(self):
-        """
-        Returns the Options instance (the model._meta) from which to start
-        processing. Normally, this is self.model._meta, but it can change.
-        """
-        if self.start_meta:
-            return self.start_meta
-        return self.model._meta
-
-    def quote_name_unless_alias(self, name):
-        """
-        A wrapper around connection.ops.quote_name that doesn't quote aliases
-        for table names. This avoids problems with some SQL dialects that treat
-        quoted strings specially (e.g. PostgreSQL).
-        """
-        if name in self.quote_cache:
-            return self.quote_cache[name]
-        if ((name in self.alias_map and name not in self.table_map) or
-                name in self.extra_select):
-            self.quote_cache[name] = name
-            return name
-        r = self.connection.ops.quote_name(name)
-        self.quote_cache[name] = r
-        return r
-
-    def clone(self, klass=None, **kwargs):
-        """
-        Creates a copy of the current instance. The 'kwargs' parameter can be
-        used by clients to update attributes after copying has taken place.
-        """
-        obj = Empty()
-        obj.__class__ = klass or self.__class__
-        obj.model = self.model
-        obj.connection = self.connection
-        obj.alias_refcount = self.alias_refcount.copy()
-        obj.alias_map = self.alias_map.copy()
-        obj.table_map = self.table_map.copy()
-        obj.join_map = self.join_map.copy()
-        obj.rev_join_map = self.rev_join_map.copy()
-        obj.quote_cache = {}
-        obj.default_cols = self.default_cols
-        obj.default_ordering = self.default_ordering
-        obj.standard_ordering = self.standard_ordering
-        obj.ordering_aliases = []
-        obj.start_meta = self.start_meta
-        obj.select_fields = self.select_fields[:]
-        obj.related_select_fields = self.related_select_fields[:]
-        obj.dupe_avoidance = self.dupe_avoidance.copy()
-        obj.select = self.select[:]
-        obj.tables = self.tables[:]
-        obj.where = deepcopy(self.where)
-        obj.where_class = self.where_class
-        obj.group_by = self.group_by[:]
-        obj.having = self.having[:]
-        obj.order_by = self.order_by[:]
-        obj.low_mark, obj.high_mark = self.low_mark, self.high_mark
-        obj.distinct = self.distinct
-        obj.select_related = self.select_related
-        obj.related_select_cols = []
-        obj.max_depth = self.max_depth
-        obj.extra_select = self.extra_select.copy()
-        obj.extra_tables = self.extra_tables
-        obj.extra_where = self.extra_where
-        obj.extra_params = self.extra_params
-        obj.extra_order_by = self.extra_order_by
-        if self.filter_is_sticky and self.used_aliases:
-            obj.used_aliases = self.used_aliases.copy()
-        else:
-            obj.used_aliases = set()
-        obj.filter_is_sticky = False
-        obj.__dict__.update(kwargs)
-        if hasattr(obj, '_setup_query'):
-            obj._setup_query()
-        return obj
-
-    def results_iter(self):
-        """
-        Returns an iterator over the results from executing this query.
-        """
-        resolve_columns = hasattr(self, 'resolve_columns')
-        fields = None
-        for rows in self.execute_sql(MULTI):
-            for row in rows:
-                if resolve_columns:
-                    if fields is None:
-                        # We only set this up here because
-                        # related_select_fields isn't populated until
-                        # execute_sql() has been called.
-                        if self.select_fields:
-                            fields = self.select_fields + self.related_select_fields
-                        else:
-                            fields = self.model._meta.fields
-                    row = self.resolve_columns(row, fields)
-                yield row
-
-    def get_count(self):
-        """
-        Performs a COUNT() query using the current filter constraints.
-        """
-        from subqueries import CountQuery
-        obj = self.clone()
-        obj.clear_ordering(True)
-        obj.clear_limits()
-        obj.select_related = False
-        obj.related_select_cols = []
-        obj.related_select_fields = []
-        if len(obj.select) > 1:
-            obj = self.clone(CountQuery, _query=obj, where=self.where_class(),
-                    distinct=False)
-            obj.select = []
-            obj.extra_select = SortedDict()
-        obj.add_count_column()
-        data = obj.execute_sql(SINGLE)
-        if not data:
-            return 0
-        number = data[0]
-
-        # Apply offset and limit constraints manually, since using LIMIT/OFFSET
-        # in SQL (in variants that provide them) doesn't change the COUNT
-        # output.
-        number = max(0, number - self.low_mark)
-        if self.high_mark:
-            number = min(number, self.high_mark - self.low_mark)
-
-        return number
-
-    def as_sql(self, with_limits=True, with_col_aliases=False):
-        """
-        Creates the SQL for this query. Returns the SQL string and list of
-        parameters.
-
-        If 'with_limits' is False, any limit/offset information is not included
-        in the query.
-        """
-        self.pre_sql_setup()
-        out_cols = self.get_columns(with_col_aliases)
-        ordering = self.get_ordering()
-
-        # This must come after 'select' and 'ordering' -- see docstring of
-        # get_from_clause() for details.
-        from_, f_params = self.get_from_clause()
-
-        where, w_params = self.where.as_sql(qn=self.quote_name_unless_alias)
-        params = []
-        for val in self.extra_select.itervalues():
-            params.extend(val[1])
-
-        result = ['SELECT']
-        if self.distinct:
-            result.append('DISTINCT')
-        result.append(', '.join(out_cols + self.ordering_aliases))
-
-        result.append('FROM')
-        result.extend(from_)
-        params.extend(f_params)
-
-        if where:
-            result.append('WHERE %s' % where)
-            params.extend(w_params)
-        if self.extra_where:
-            if not where:
-                result.append('WHERE')
-            else:
-                result.append('AND')
-            result.append(' AND '.join(self.extra_where))
-
-        if self.group_by:
-            grouping = self.get_grouping()
-            result.append('GROUP BY %s' % ', '.join(grouping))
-
-        if ordering:
-            result.append('ORDER BY %s' % ', '.join(ordering))
-
-        if with_limits:
-            if self.high_mark is not None:
-                result.append('LIMIT %d' % (self.high_mark - self.low_mark))
-            if self.low_mark:
-                if self.high_mark is None:
-                    val = self.connection.ops.no_limit_value()
-                    if val:
-                        result.append('LIMIT %d' % val)
-                result.append('OFFSET %d' % self.low_mark)
-
-        params.extend(self.extra_params)
-        return ' '.join(result), tuple(params)
-
-    def combine(self, rhs, connector):
-        """
-        Merge the 'rhs' query into the current one (with any 'rhs' effects
-        being applied *after* (that is, "to the right of") anything in the
-        current query. 'rhs' is not modified during a call to this function.
-
-        The 'connector' parameter describes how to connect filters from the
-        'rhs' query.
-        """
-        assert self.model == rhs.model, \
-                "Cannot combine queries on two different base models."
-        assert self.can_filter(), \
-                "Cannot combine queries once a slice has been taken."
-        assert self.distinct == rhs.distinct, \
-            "Cannot combine a unique query with a non-unique query."
-
-        # Work out how to relabel the rhs aliases, if necessary.
-        change_map = {}
-        used = set()
-        conjunction = (connector == AND)
-        first = True
-        for alias in rhs.tables:
-            if not rhs.alias_refcount[alias]:
-                # An unused alias.
-                continue
-            promote = (rhs.alias_map[alias][JOIN_TYPE] == self.LOUTER)
-            new_alias = self.join(rhs.rev_join_map[alias],
-                    (conjunction and not first), used, promote, not conjunction)
-            used.add(new_alias)
-            change_map[alias] = new_alias
-            first = False
-
-        # So that we don't exclude valid results in an "or" query combination,
-        # the first join that is exclusive to the lhs (self) must be converted
-        # to an outer join.
-        if not conjunction:
-            for alias in self.tables[1:]:
-                if self.alias_refcount[alias] == 1:
-                    self.promote_alias(alias, True)
-                    break
-
-        # Now relabel a copy of the rhs where-clause and add it to the current
-        # one.
-        if rhs.where:
-            w = deepcopy(rhs.where)
-            w.relabel_aliases(change_map)
-            if not self.where:
-                # Since 'self' matches everything, add an explicit "include
-                # everything" where-constraint so that connections between the
-                # where clauses won't exclude valid results.
-                self.where.add(EverythingNode(), AND)
-        elif self.where:
-            # rhs has an empty where clause.
-            w = self.where_class()
-            w.add(EverythingNode(), AND)
-        else:
-            w = self.where_class()
-        self.where.add(w, connector)
-
-        # Selection columns and extra extensions are those provided by 'rhs'.
-        self.select = []
-        for col in rhs.select:
-            if isinstance(col, (list, tuple)):
-                self.select.append((change_map.get(col[0], col[0]), col[1]))
-            else:
-                item = deepcopy(col)
-                item.relabel_aliases(change_map)
-                self.select.append(item)
-        self.select_fields = rhs.select_fields[:]
-
-        if connector == OR:
-            # It would be nice to be able to handle this, but the queries don't
-            # really make sense (or return consistent value sets). Not worth
-            # the extra complexity when you can write a real query instead.
-            if self.extra_select and rhs.extra_select:
-                raise ValueError("When merging querysets using 'or', you "
-                        "cannot have extra(select=...) on both sides.")
-            if self.extra_where and rhs.extra_where:
-                raise ValueError("When merging querysets using 'or', you "
-                        "cannot have extra(where=...) on both sides.")
-        self.extra_select.update(rhs.extra_select)
-        self.extra_tables += rhs.extra_tables
-        self.extra_where += rhs.extra_where
-        self.extra_params += rhs.extra_params
-
-        # Ordering uses the 'rhs' ordering, unless it has none, in which case
-        # the current ordering is used.
-        self.order_by = rhs.order_by and rhs.order_by[:] or self.order_by
-        self.extra_order_by = rhs.extra_order_by or self.extra_order_by
-
-    def pre_sql_setup(self):
-        """
-        Does any necessary class setup immediately prior to producing SQL. This
-        is for things that can't necessarily be done in __init__ because we
-        might not have all the pieces in place at that time.
-        """
-        if not self.tables:
-            self.join((None, self.model._meta.db_table, None, None))
-        if self.select_related and not self.related_select_cols:
-            self.fill_related_selections()
-
-    def get_columns(self, with_aliases=False):
-        """
-        Return the list of columns to use in the select statement. If no
-        columns have been specified, returns all columns relating to fields in
-        the model.
-
-        If 'with_aliases' is true, any column names that are duplicated
-        (without the table names) are given unique aliases. This is needed in
-        some cases to avoid ambiguitity with nested queries.
-        """
-        qn = self.quote_name_unless_alias
-        qn2 = self.connection.ops.quote_name
-        result = ['(%s) AS %s' % (col[0], qn2(alias)) for alias, col in self.extra_select.iteritems()]
-        aliases = set(self.extra_select.keys())
-        if with_aliases:
-            col_aliases = aliases.copy()
-        else:
-            col_aliases = set()
-        if self.select:
-            for col in self.select:
-                if isinstance(col, (list, tuple)):
-                    r = '%s.%s' % (qn(col[0]), qn(col[1]))
-                    if with_aliases and col[1] in col_aliases:
-                        c_alias = 'Col%d' % len(col_aliases)
-                        result.append('%s AS %s' % (r, c_alias))
-                        aliases.add(c_alias)
-                        col_aliases.add(c_alias)
-                    else:
-                        result.append(r)
-                        aliases.add(r)
-                        col_aliases.add(col[1])
-                else:
-                    result.append(col.as_sql(quote_func=qn))
-                    if hasattr(col, 'alias'):
-                        aliases.add(col.alias)
-                        col_aliases.add(col.alias)
-        elif self.default_cols:
-            cols, new_aliases = self.get_default_columns(with_aliases,
-                    col_aliases)
-            result.extend(cols)
-            aliases.update(new_aliases)
-        for table, col in self.related_select_cols:
-            r = '%s.%s' % (qn(table), qn(col))
-            if with_aliases and col in col_aliases:
-                c_alias = 'Col%d' % len(col_aliases)
-                result.append('%s AS %s' % (r, c_alias))
-                aliases.add(c_alias)
-                col_aliases.add(c_alias)
-            else:
-                result.append(r)
-                aliases.add(r)
-                col_aliases.add(col)
-
-        self._select_aliases = aliases
-        return result
-
-    def get_default_columns(self, with_aliases=False, col_aliases=None,
-            start_alias=None, opts=None, as_pairs=False):
-        """
-        Computes the default columns for selecting every field in the base
-        model.
-
-        Returns a list of strings, quoted appropriately for use in SQL
-        directly, as well as a set of aliases used in the select statement (if
-        'as_pairs' is True, returns a list of (alias, col_name) pairs instead
-        of strings as the first component and None as the second component).
-        """
-        result = []
-        if opts is None:
-            opts = self.model._meta
-        if start_alias:
-            table_alias = start_alias
-        else:
-            table_alias = self.tables[0]
-        root_pk = opts.pk.column
-        seen = {None: table_alias}
-        qn = self.quote_name_unless_alias
-        qn2 = self.connection.ops.quote_name
-        aliases = set()
-        for field, model in opts.get_fields_with_model():
-            try:
-                alias = seen[model]
-            except KeyError:
-                alias = self.join((table_alias, model._meta.db_table,
-                        root_pk, model._meta.pk.column))
-                seen[model] = alias
-            if as_pairs:
-                result.append((alias, field.column))
-                continue
-            if with_aliases and field.column in col_aliases:
-                c_alias = 'Col%d' % len(col_aliases)
-                result.append('%s.%s AS %s' % (qn(alias),
-                    qn2(field.column), c_alias))
-                col_aliases.add(c_alias)
-                aliases.add(c_alias)
-            else:
-                r = '%s.%s' % (qn(alias), qn2(field.column))
-                result.append(r)
-                aliases.add(r)
-                if with_aliases:
-                    col_aliases.add(field.column)
-        if as_pairs:
-            return result, None
-        return result, aliases
-
-    def get_from_clause(self):
-        """
-        Returns a list of strings that are joined together to go after the
-        "FROM" part of the query, as well as a list any extra parameters that
-        need to be included. Sub-classes, can override this to create a
-        from-clause via a "select", for example (e.g. CountQuery).
-
-        This should only be called after any SQL construction methods that
-        might change the tables we need. This means the select columns and
-        ordering must be done first.
-        """
-        result = []
-        qn = self.quote_name_unless_alias
-        qn2 = self.connection.ops.quote_name
-        first = True
-        for alias in self.tables:
-            if not self.alias_refcount[alias]:
-                continue
-            try:
-                name, alias, join_type, lhs, lhs_col, col, nullable = self.alias_map[alias]
-            except KeyError:
-                # Extra tables can end up in self.tables, but not in the
-                # alias_map if they aren't in a join. That's OK. We skip them.
-                continue
-            alias_str = (alias != name and ' %s' % alias or '')
-            if join_type and not first:
-                result.append('%s %s%s ON (%s.%s = %s.%s)'
-                        % (join_type, qn(name), alias_str, qn(lhs),
-                           qn2(lhs_col), qn(alias), qn2(col)))
-            else:
-                connector = not first and ', ' or ''
-                result.append('%s%s%s' % (connector, qn(name), alias_str))
-            first = False
-        for t in self.extra_tables:
-            alias, unused = self.table_alias(t)
-            # Only add the alias if it's not already present (the table_alias()
-            # calls increments the refcount, so an alias refcount of one means
-            # this is the only reference.
-            if alias not in self.alias_map or self.alias_refcount[alias] == 1:
-                connector = not first and ', ' or ''
-                result.append('%s%s' % (connector, qn(alias)))
-                first = False
-        return result, []
-
-    def get_grouping(self):
-        """
-        Returns a tuple representing the SQL elements in the "group by" clause.
-        """
-        qn = self.quote_name_unless_alias
-        result = []
-        for col in self.group_by:
-            if isinstance(col, (list, tuple)):
-                result.append('%s.%s' % (qn(col[0]), qn(col[1])))
-            elif hasattr(col, 'as_sql'):
-                result.append(col.as_sql(qn))
-            else:
-                result.append(str(col))
-        return result
-
-    def get_ordering(self):
-        """
-        Returns list representing the SQL elements in the "order by" clause.
-        Also sets the ordering_aliases attribute on this instance to a list of
-        extra aliases needed in the select.
-
-        Determining the ordering SQL can change the tables we need to include,
-        so this should be run *before* get_from_clause().
-        """
-        if self.extra_order_by:
-            ordering = self.extra_order_by
-        elif not self.default_ordering:
-            ordering = []
-        else:
-            ordering = self.order_by or self.model._meta.ordering
-        qn = self.quote_name_unless_alias
-        qn2 = self.connection.ops.quote_name
-        distinct = self.distinct
-        select_aliases = self._select_aliases
-        result = []
-        ordering_aliases = []
-        if self.standard_ordering:
-            asc, desc = ORDER_DIR['ASC']
-        else:
-            asc, desc = ORDER_DIR['DESC']
-        for field in ordering:
-            if field == '?':
-                result.append(self.connection.ops.random_function_sql())
-                continue
-            if isinstance(field, int):
-                if field < 0:
-                    order = desc
-                    field = -field
-                else:
-                    order = asc
-                result.append('%s %s' % (field, order))
-                continue
-            if '.' in field:
-                # This came in through an extra(order_by=...) addition. Pass it
-                # on verbatim.
-                col, order = get_order_dir(field, asc)
-                table, col = col.split('.', 1)
-                elt = '%s.%s' % (qn(table), col)
-                if not distinct or elt in select_aliases:
-                    result.append('%s %s' % (elt, order))
-            elif get_order_dir(field)[0] not in self.extra_select:
-                # 'col' is of the form 'field' or 'field1__field2' or
-                # '-field1__field2__field', etc.
-                for table, col, order in self.find_ordering_name(field,
-                        self.model._meta, default_order=asc):
-                    elt = '%s.%s' % (qn(table), qn2(col))
-                    if distinct and elt not in select_aliases:
-                        ordering_aliases.append(elt)
-                    result.append('%s %s' % (elt, order))
-            else:
-                col, order = get_order_dir(field, asc)
-                elt = qn(col)
-                if distinct and elt not in select_aliases:
-                    ordering_aliases.append(elt)
-                result.append('%s %s' % (elt, order))
-        self.ordering_aliases = ordering_aliases
-        return result
-
-    def find_ordering_name(self, name, opts, alias=None, default_order='ASC',
-            already_seen=None):
-        """
-        Returns the table alias (the name might be ambiguous, the alias will
-        not be) and column name for ordering by the given 'name' parameter.
-        The 'name' is of the form 'field1__field2__...__fieldN'.
-        """
-        name, order = get_order_dir(name, default_order)
-        pieces = name.split(LOOKUP_SEP)
-        if not alias:
-            alias = self.get_initial_alias()
-        field, target, opts, joins, last = self.setup_joins(pieces, opts,
-                alias, False)
-        alias = joins[-1]
-        col = target.column
-        if not field.rel:
-            # To avoid inadvertent trimming of a necessary alias, use the
-            # refcount to show that we are referencing a non-relation field on
-            # the model.
-            self.ref_alias(alias)
-
-        # Must use left outer joins for nullable fields.
-        for join in joins:
-            self.promote_alias(join)
-
-        # If we get to this point and the field is a relation to another model,
-        # append the default ordering for that model.
-        if field.rel and len(joins) > 1 and opts.ordering:
-            # Firstly, avoid infinite loops.
-            if not already_seen:
-                already_seen = set()
-            join_tuple = tuple([self.alias_map[j][TABLE_NAME] for j in joins])
-            if join_tuple in already_seen:
-                raise FieldError('Infinite loop caused by ordering.')
-            already_seen.add(join_tuple)
-
-            results = []
-            for item in opts.ordering:
-                results.extend(self.find_ordering_name(item, opts, alias,
-                        order, already_seen))
-            return results
-
-        if alias:
-            # We have to do the same "final join" optimisation as in
-            # add_filter, since the final column might not otherwise be part of
-            # the select set (so we can't order on it).
-            while 1:
-                join = self.alias_map[alias]
-                if col != join[RHS_JOIN_COL]:
-                    break
-                self.unref_alias(alias)
-                alias = join[LHS_ALIAS]
-                col = join[LHS_JOIN_COL]
-        return [(alias, col, order)]
-
-    def table_alias(self, table_name, create=False):
-        """
-        Returns a table alias for the given table_name and whether this is a
-        new alias or not.
-
-        If 'create' is true, a new alias is always created. Otherwise, the
-        most recently created alias for the table (if one exists) is reused.
-        """
-        current = self.table_map.get(table_name)
-        if not create and current:
-            alias = current[0]
-            self.alias_refcount[alias] += 1
-            return alias, False
-
-        # Create a new alias for this table.
-        if current:
-            alias = '%s%d' % (self.alias_prefix, len(self.alias_map) + 1)
-            current.append(alias)
-        else:
-            # The first occurence of a table uses the table name directly.
-            alias = table_name
-            self.table_map[alias] = [alias]
-        self.alias_refcount[alias] = 1
-        #self.alias_map[alias] = None
-        self.tables.append(alias)
-        return alias, True
-
-    def ref_alias(self, alias):
-        """ Increases the reference count for this alias. """
-        self.alias_refcount[alias] += 1
-
-    def unref_alias(self, alias):
-        """ Decreases the reference count for this alias. """
-        self.alias_refcount[alias] -= 1
-
-    def promote_alias(self, alias, unconditional=False):
-        """
-        Promotes the join type of an alias to an outer join if it's possible
-        for the join to contain NULL values on the left. If 'unconditional' is
-        False, the join is only promoted if it is nullable, otherwise it is
-        always promoted.
-
-        Returns True if the join was promoted.
-        """
-        if ((unconditional or self.alias_map[alias][NULLABLE]) and
-                self.alias_map[alias] != self.LOUTER):
-            data = list(self.alias_map[alias])
-            data[JOIN_TYPE] = self.LOUTER
-            self.alias_map[alias] = tuple(data)
-            return True
-        return False
-
-    def change_aliases(self, change_map):
-        """
-        Changes the aliases in change_map (which maps old-alias -> new-alias),
-        relabelling any references to them in select columns and the where
-        clause.
-        """
-        assert set(change_map.keys()).intersection(set(change_map.values())) == set()
-
-        # 1. Update references in "select" and "where".
-        self.where.relabel_aliases(change_map)
-        for pos, col in enumerate(self.select):
-            if isinstance(col, (list, tuple)):
-                self.select[pos] = (change_map.get(old_alias, old_alias), col[1])
-            else:
-                col.relabel_aliases(change_map)
-
-        # 2. Rename the alias in the internal table/alias datastructures.
-        for old_alias, new_alias in change_map.iteritems():
-            alias_data = list(self.alias_map[old_alias])
-            alias_data[RHS_ALIAS] = new_alias
-
-            t = self.rev_join_map[old_alias]
-            data = list(self.join_map[t])
-            data[data.index(old_alias)] = new_alias
-            self.join_map[t] = tuple(data)
-            self.rev_join_map[new_alias] = t
-            del self.rev_join_map[old_alias]
-            self.alias_refcount[new_alias] = self.alias_refcount[old_alias]
-            del self.alias_refcount[old_alias]
-            self.alias_map[new_alias] = tuple(alias_data)
-            del self.alias_map[old_alias]
-
-            table_aliases = self.table_map[alias_data[TABLE_NAME]]
-            for pos, alias in enumerate(table_aliases):
-                if alias == old_alias:
-                    table_aliases[pos] = new_alias
-                    break
-            for pos, alias in enumerate(self.tables):
-                if alias == old_alias:
-                    self.tables[pos] = new_alias
-                    break
-
-        # 3. Update any joins that refer to the old alias.
-        for alias, data in self.alias_map.iteritems():
-            lhs = data[LHS_ALIAS]
-            if lhs in change_map:
-                data = list(data)
-                data[LHS_ALIAS] = change_map[lhs]
-                self.alias_map[alias] = tuple(data)
-
-    def bump_prefix(self, exceptions=()):
-        """
-        Changes the alias prefix to the next letter in the alphabet and
-        relabels all the aliases. Even tables that previously had no alias will
-        get an alias after this call (it's mostly used for nested queries and
-        the outer query will already be using the non-aliased table name).
-
-        Subclasses who create their own prefix should override this method to
-        produce a similar result (a new prefix and relabelled aliases).
-
-        The 'exceptions' parameter is a container that holds alias names which
-        should not be changed.
-        """
-        assert ord(self.alias_prefix) < ord('Z')
-        self.alias_prefix = chr(ord(self.alias_prefix) + 1)
-        change_map = {}
-        prefix = self.alias_prefix
-        for pos, alias in enumerate(self.tables):
-            if alias in exceptions:
-                continue
-            new_alias = '%s%d' % (prefix, pos)
-            change_map[alias] = new_alias
-            self.tables[pos] = new_alias
-        self.change_aliases(change_map)
-
-    def get_initial_alias(self):
-        """
-        Returns the first alias for this query, after increasing its reference
-        count.
-        """
-        if self.tables:
-            alias = self.tables[0]
-            self.ref_alias(alias)
-        else:
-            alias = self.join((None, self.model._meta.db_table, None, None))
-        return alias
-
-    def count_active_tables(self):
-        """
-        Returns the number of tables in this query with a non-zero reference
-        count.
-        """
-        return len([1 for count in self.alias_refcount.itervalues() if count])
-
-    def join(self, connection, always_create=False, exclusions=(),
-            promote=False, outer_if_first=False, nullable=False, reuse=None):
-        """
-        Returns an alias for the join in 'connection', either reusing an
-        existing alias for that join or creating a new one. 'connection' is a
-        tuple (lhs, table, lhs_col, col) where 'lhs' is either an existing
-        table alias or a table name. The join correspods to the SQL equivalent
-        of::
-
-            lhs.lhs_col = table.col
-
-        If 'always_create' is True and 'reuse' is None, a new alias is always
-        created, regardless of whether one already exists or not. Otherwise
-        'reuse' must be a set and a new join is created unless one of the
-        aliases in `reuse` can be used.
-
-        If 'exclusions' is specified, it is something satisfying the container
-        protocol ("foo in exclusions" must work) and specifies a list of
-        aliases that should not be returned, even if they satisfy the join.
-
-        If 'promote' is True, the join type for the alias will be LOUTER (if
-        the alias previously existed, the join type will be promoted from INNER
-        to LOUTER, if necessary).
-
-        If 'outer_if_first' is True and a new join is created, it will have the
-        LOUTER join type. This is used when joining certain types of querysets
-        and Q-objects together.
-
-        If 'nullable' is True, the join can potentially involve NULL values and
-        is a candidate for promotion (to "left outer") when combining querysets.
-        """
-        lhs, table, lhs_col, col = connection
-        if lhs in self.alias_map:
-            lhs_table = self.alias_map[lhs][TABLE_NAME]
-        else:
-            lhs_table = lhs
-
-        if reuse and always_create and table in self.table_map:
-            # Convert the 'reuse' to case to be "exclude everything but the
-            # reusable set, minus exclusions, for this table".
-            exclusions = set(self.table_map[table]).difference(reuse).union(set(exclusions))
-            always_create = False
-        t_ident = (lhs_table, table, lhs_col, col)
-        if not always_create:
-            for alias in self.join_map.get(t_ident, ()):
-                if alias not in exclusions:
-                    if lhs_table and not self.alias_refcount[self.alias_map[alias][LHS_ALIAS]]:
-                        # The LHS of this join tuple is no longer part of the
-                        # query, so skip this possibility.
-                        continue
-                    self.ref_alias(alias)
-                    if promote:
-                        self.promote_alias(alias)
-                    return alias
-
-        # No reuse is possible, so we need a new alias.
-        alias, _ = self.table_alias(table, True)
-        if not lhs:
-            # Not all tables need to be joined to anything. No join type
-            # means the later columns are ignored.
-            join_type = None
-        elif promote or outer_if_first:
-            join_type = self.LOUTER
-        else:
-            join_type = self.INNER
-        join = (table, alias, join_type, lhs, lhs_col, col, nullable)
-        self.alias_map[alias] = join
-        if t_ident in self.join_map:
-            self.join_map[t_ident] += (alias,)
-        else:
-            self.join_map[t_ident] = (alias,)
-        self.rev_join_map[alias] = t_ident
-        return alias
-
-    def fill_related_selections(self, opts=None, root_alias=None, cur_depth=1,
-            used=None, requested=None, restricted=None, nullable=None,
-            dupe_set=None):
-        """
-        Fill in the information needed for a select_related query. The current
-        depth is measured as the number of connections away from the root model
-        (for example, cur_depth=1 means we are looking at models with direct
-        connections to the root model).
-        """
-        if not restricted and self.max_depth and cur_depth > self.max_depth:
-            # We've recursed far enough; bail out.
-            return
-
-        if not opts:
-            opts = self.get_meta()
-            root_alias = self.get_initial_alias()
-            self.related_select_cols = []
-            self.related_select_fields = []
-        if not used:
-            used = set()
-        if dupe_set is None:
-            dupe_set = set()
-        orig_dupe_set = dupe_set
-        orig_used = used
-
-        # Setup for the case when only particular related fields should be
-        # included in the related selection.
-        if requested is None and restricted is not False:
-            if isinstance(self.select_related, dict):
-                requested = self.select_related
-                restricted = True
-            else:
-                restricted = False
-
-        for f, model in opts.get_fields_with_model():
-            if not select_related_descend(f, restricted, requested):
-                continue
-            dupe_set = orig_dupe_set.copy()
-            used = orig_used.copy()
-            table = f.rel.to._meta.db_table
-            if nullable or f.null:
-                promote = True
-            else:
-                promote = False
-            if model:
-                int_opts = opts
-                alias = root_alias
-                for int_model in opts.get_base_chain(model):
-                    lhs_col = int_opts.parents[int_model].column
-                    dedupe = lhs_col in opts.duplicate_targets
-                    if dedupe:
-                        used.update(self.dupe_avoidance.get(id(opts), lhs_col),
-                                ())
-                        dupe_set.add((opts, lhs_col))
-                    int_opts = int_model._meta
-                    alias = self.join((alias, int_opts.db_table, lhs_col,
-                            int_opts.pk.column), exclusions=used,
-                            promote=promote)
-                    for (dupe_opts, dupe_col) in dupe_set:
-                        self.update_dupe_avoidance(dupe_opts, dupe_col, alias)
-            else:
-                alias = root_alias
-
-            dedupe = f.column in opts.duplicate_targets
-            if dupe_set or dedupe:
-                used.update(self.dupe_avoidance.get((id(opts), f.column), ()))
-                if dedupe:
-                    dupe_set.add((opts, f.column))
-
-            alias = self.join((alias, table, f.column,
-                    f.rel.get_related_field().column), exclusions=used,
-                    promote=promote)
-            used.add(alias)
-            self.related_select_cols.extend(self.get_default_columns(
-                start_alias=alias, opts=f.rel.to._meta, as_pairs=True)[0])
-            self.related_select_fields.extend(f.rel.to._meta.fields)
-            if restricted:
-                next = requested.get(f.name, {})
-            else:
-                next = False
-            if f.null is not None:
-                new_nullable = f.null
-            else:
-                new_nullable = None
-            for dupe_opts, dupe_col in dupe_set:
-                self.update_dupe_avoidance(dupe_opts, dupe_col, alias)
-            self.fill_related_selections(f.rel.to._meta, alias, cur_depth + 1,
-                    used, next, restricted, new_nullable, dupe_set)
-
-    def add_filter(self, filter_expr, connector=AND, negate=False, trim=False,
-            can_reuse=None):
-        """
-        Add a single filter to the query. The 'filter_expr' is a pair:
-        (filter_string, value). E.g. ('name__contains', 'fred')
-
-        If 'negate' is True, this is an exclude() filter. It's important to
-        note that this method does not negate anything in the where-clause
-        object when inserting the filter constraints. This is because negated
-        filters often require multiple calls to add_filter() and the negation
-        should only happen once. So the caller is responsible for this (the
-        caller will normally be add_q(), so that as an example).
-
-        If 'trim' is True, we automatically trim the final join group (used
-        internally when constructing nested queries).
-
-        If 'can_reuse' is a set, we are processing a component of a
-        multi-component filter (e.g. filter(Q1, Q2)). In this case, 'can_reuse'
-        will be a set of table aliases that can be reused in this filter, even
-        if we would otherwise force the creation of new aliases for a join
-        (needed for nested Q-filters). The set is updated by this method.
-        """
-        arg, value = filter_expr
-        parts = arg.split(LOOKUP_SEP)
-        if not parts:
-            raise FieldError("Cannot parse keyword query %r" % arg)
-
-        # Work out the lookup type and remove it from 'parts', if necessary.
-        if len(parts) == 1 or parts[-1] not in self.query_terms:
-            lookup_type = 'exact'
-        else:
-            lookup_type = parts.pop()
-
-        # Interpret '__exact=None' as the sql 'is NULL'; otherwise, reject all
-        # uses of None as a query value.
-        if value is None:
-            if lookup_type != 'exact':
-                raise ValueError("Cannot use None as a query value")
-            lookup_type = 'isnull'
-            value = True
-        elif callable(value):
-            value = value()
-
-        opts = self.get_meta()
-        alias = self.get_initial_alias()
-        allow_many = trim or not negate
-
-        try:
-            field, target, opts, join_list, last = self.setup_joins(parts, opts,
-                    alias, True, allow_many, can_reuse=can_reuse)
-        except MultiJoin, e:
-            self.split_exclude(filter_expr, LOOKUP_SEP.join(parts[:e.level]))
-            return
-        final = len(join_list)
-        penultimate = last.pop()
-        if penultimate == final:
-            penultimate = last.pop()
-        if trim and len(join_list) > 1:
-            extra = join_list[penultimate:]
-            join_list = join_list[:penultimate]
-            final = penultimate
-            penultimate = last.pop()
-            col = self.alias_map[extra[0]][LHS_JOIN_COL]
-            for alias in extra:
-                self.unref_alias(alias)
-        else:
-            col = target.column
-        alias = join_list[-1]
-
-        while final > 1:
-            # An optimization: if the final join is against the same column as
-            # we are comparing against, we can go back one step in the join
-            # chain and compare against the lhs of the join instead (and then
-            # repeat the optimization). The result, potentially, involves less
-            # table joins.
-            join = self.alias_map[alias]
-            if col != join[RHS_JOIN_COL]:
-                break
-            self.unref_alias(alias)
-            alias = join[LHS_ALIAS]
-            col = join[LHS_JOIN_COL]
-            join_list = join_list[:-1]
-            final -= 1
-            if final == penultimate:
-                penultimate = last.pop()
-
-        if (lookup_type == 'isnull' and value is True and not negate and
-                final > 1):
-            # If the comparison is against NULL, we need to use a left outer
-            # join when connecting to the previous model. We make that
-            # adjustment here. We don't do this unless needed as it's less
-            # efficient at the database level.
-            self.promote_alias(join_list[penultimate])
-
-        if connector == OR:
-            # Some joins may need to be promoted when adding a new filter to a
-            # disjunction. We walk the list of new joins and where it diverges
-            # from any previous joins (ref count is 1 in the table list), we
-            # make the new additions (and any existing ones not used in the new
-            # join list) an outer join.
-            join_it = iter(join_list)
-            table_it = iter(self.tables)
-            join_it.next(), table_it.next()
-            table_promote = False
-            for join in join_it:
-                table = table_it.next()
-                if join == table and self.alias_refcount[join] > 1:
-                    continue
-                join_promote = self.promote_alias(join)
-                if table != join:
-                    table_promote = self.promote_alias(table)
-                break
-            for join in join_it:
-                if self.promote_alias(join, join_promote):
-                    join_promote = True
-            for table in table_it:
-                # Some of these will have been promoted from the join_list, but
-                # that's harmless.
-                if self.promote_alias(table, table_promote):
-                    table_promote = True
-
-        self.where.add((alias, col, field, lookup_type, value), connector)
-
-        if negate:
-            for alias in join_list:
-                self.promote_alias(alias)
-            if lookup_type != 'isnull':
-                if final > 1:
-                    for alias in join_list:
-                        if self.alias_map[alias][JOIN_TYPE] == self.LOUTER:
-                            j_col = self.alias_map[alias][RHS_JOIN_COL]
-                            entry = self.where_class()
-                            entry.add((alias, j_col, None, 'isnull', True), AND)
-                            entry.negate()
-                            self.where.add(entry, AND)
-                            break
-                elif not (lookup_type == 'in' and not value) and field.null:
-                    # Leaky abstraction artifact: We have to specifically
-                    # exclude the "foo__in=[]" case from this handling, because
-                    # it's short-circuited in the Where class.
-                    entry = self.where_class()
-                    entry.add((alias, col, None, 'isnull', True), AND)
-                    entry.negate()
-                    self.where.add(entry, AND)
-
-        if can_reuse is not None:
-            can_reuse.update(join_list)
-
-    def add_q(self, q_object, used_aliases=None):
-        """
-        Adds a Q-object to the current filter.
-
-        Can also be used to add anything that has an 'add_to_query()' method.
-        """
-        if used_aliases is None:
-            used_aliases = self.used_aliases
-        if hasattr(q_object, 'add_to_query'):
-            # Complex custom objects are responsible for adding themselves.
-            q_object.add_to_query(self, used_aliases)
-        else:
-            if self.where and q_object.connector != AND and len(q_object) > 1:
-                self.where.start_subtree(AND)
-                subtree = True
-            else:
-                subtree = False
-            connector = AND
-            for child in q_object.children:
-                if isinstance(child, Node):
-                    self.where.start_subtree(connector)
-                    self.add_q(child, used_aliases)
-                    self.where.end_subtree()
-                else:
-                    self.add_filter(child, connector, q_object.negated,
-                            can_reuse=used_aliases)
-                connector = q_object.connector
-            if q_object.negated:
-                self.where.negate()
-            if subtree:
-                self.where.end_subtree()
-        if self.filter_is_sticky:
-            self.used_aliases = used_aliases
-
-    def setup_joins(self, names, opts, alias, dupe_multis, allow_many=True,
-            allow_explicit_fk=False, can_reuse=None):
-        """
-        Compute the necessary table joins for the passage through the fields
-        given in 'names'. 'opts' is the Options class for the current model
-        (which gives the table we are joining to), 'alias' is the alias for the
-        table we are joining to. If dupe_multis is True, any many-to-many or
-        many-to-one joins will always create a new alias (necessary for
-        disjunctive filters). If can_reuse is not None, it's a list of aliases
-        that can be reused in these joins (nothing else can be reused in this
-        case).
-
-        Returns the final field involved in the join, the target database
-        column (used for any 'where' constraint), the final 'opts' value and the
-        list of tables joined.
-        """
-        joins = [alias]
-        last = [0]
-        dupe_set = set()
-        exclusions = set()
-        for pos, name in enumerate(names):
-            try:
-                exclusions.add(int_alias)
-            except NameError:
-                pass
-            exclusions.add(alias)
-            last.append(len(joins))
-            if name == 'pk':
-                name = opts.pk.name
-
-            try:
-                field, model, direct, m2m = opts.get_field_by_name(name)
-            except FieldDoesNotExist:
-                for f in opts.fields:
-                    if allow_explicit_fk and name == f.attname:
-                        # XXX: A hack to allow foo_id to work in values() for
-                        # backwards compatibility purposes. If we dropped that
-                        # feature, this could be removed.
-                        field, model, direct, m2m = opts.get_field_by_name(f.name)
-                        break
-                else:
-                    names = opts.get_all_field_names()
-                    raise FieldError("Cannot resolve keyword %r into field. "
-                            "Choices are: %s" % (name, ", ".join(names)))
-
-            if not allow_many and (m2m or not direct):
-                for alias in joins:
-                    self.unref_alias(alias)
-                raise MultiJoin(pos + 1)
-            if model:
-                # The field lives on a base class of the current model.
-                for int_model in opts.get_base_chain(model):
-                    lhs_col = opts.parents[int_model].column
-                    dedupe = lhs_col in opts.duplicate_targets
-                    if dedupe:
-                        exclusions.update(self.dupe_avoidance.get(
-                                (id(opts), lhs_col), ()))
-                        dupe_set.add((opts, lhs_col))
-                    opts = int_model._meta
-                    alias = self.join((alias, opts.db_table, lhs_col,
-                            opts.pk.column), exclusions=exclusions)
-                    joins.append(alias)
-                    exclusions.add(alias)
-                    for (dupe_opts, dupe_col) in dupe_set:
-                        self.update_dupe_avoidance(dupe_opts, dupe_col, alias)
-            cached_data = opts._join_cache.get(name)
-            orig_opts = opts
-            dupe_col = direct and field.column or field.field.column
-            dedupe = dupe_col in opts.duplicate_targets
-            if dupe_set or dedupe:
-                if dedupe:
-                    dupe_set.add((opts, dupe_col))
-                exclusions.update(self.dupe_avoidance.get((id(opts), dupe_col),
-                        ()))
-
-            if direct:
-                if m2m:
-                    # Many-to-many field defined on the current model.
-                    if cached_data:
-                        (table1, from_col1, to_col1, table2, from_col2,
-                                to_col2, opts, target) = cached_data
-                    else:
-                        table1 = field.m2m_db_table()
-                        from_col1 = opts.pk.column
-                        to_col1 = field.m2m_column_name()
-                        opts = field.rel.to._meta
-                        table2 = opts.db_table
-                        from_col2 = field.m2m_reverse_name()
-                        to_col2 = opts.pk.column
-                        target = opts.pk
-                        orig_opts._join_cache[name] = (table1, from_col1,
-                                to_col1, table2, from_col2, to_col2, opts,
-                                target)
-
-                    int_alias = self.join((alias, table1, from_col1, to_col1),
-                            dupe_multis, exclusions, nullable=True,
-                            reuse=can_reuse)
-                    alias = self.join((int_alias, table2, from_col2, to_col2),
-                            dupe_multis, exclusions, nullable=True,
-                            reuse=can_reuse)
-                    joins.extend([int_alias, alias])
-                elif field.rel:
-                    # One-to-one or many-to-one field
-                    if cached_data:
-                        (table, from_col, to_col, opts, target) = cached_data
-                    else:
-                        opts = field.rel.to._meta
-                        target = field.rel.get_related_field()
-                        table = opts.db_table
-                        from_col = field.column
-                        to_col = target.column
-                        orig_opts._join_cache[name] = (table, from_col, to_col,
-                                opts, target)
-
-                    alias = self.join((alias, table, from_col, to_col),
-                            exclusions=exclusions, nullable=field.null)
-                    joins.append(alias)
-                else:
-                    # Non-relation fields.
-                    target = field
-                    break
-            else:
-                orig_field = field
-                field = field.field
-                if m2m:
-                    # Many-to-many field defined on the target model.
-                    if cached_data:
-                        (table1, from_col1, to_col1, table2, from_col2,
-                                to_col2, opts, target) = cached_data
-                    else:
-                        table1 = field.m2m_db_table()
-                        from_col1 = opts.pk.column
-                        to_col1 = field.m2m_reverse_name()
-                        opts = orig_field.opts
-                        table2 = opts.db_table
-                        from_col2 = field.m2m_column_name()
-                        to_col2 = opts.pk.column
-                        target = opts.pk
-                        orig_opts._join_cache[name] = (table1, from_col1,
-                                to_col1, table2, from_col2, to_col2, opts,
-                                target)
-
-                    int_alias = self.join((alias, table1, from_col1, to_col1),
-                            dupe_multis, exclusions, nullable=True,
-                            reuse=can_reuse)
-                    alias = self.join((int_alias, table2, from_col2, to_col2),
-                            dupe_multis, exclusions, nullable=True,
-                            reuse=can_reuse)
-                    joins.extend([int_alias, alias])
-                else:
-                    # One-to-many field (ForeignKey defined on the target model)
-                    if cached_data:
-                        (table, from_col, to_col, opts, target) = cached_data
-                    else:
-                        local_field = opts.get_field_by_name(
-                                field.rel.field_name)[0]
-                        opts = orig_field.opts
-                        table = opts.db_table
-                        from_col = local_field.column
-                        to_col = field.column
-                        target = opts.pk
-                        orig_opts._join_cache[name] = (table, from_col, to_col,
-                                opts, target)
-
-                    alias = self.join((alias, table, from_col, to_col),
-                            dupe_multis, exclusions, nullable=True,
-                            reuse=can_reuse)
-                    joins.append(alias)
-
-            for (dupe_opts, dupe_col) in dupe_set:
-                try:
-                    self.update_dupe_avoidance(dupe_opts, dupe_col, int_alias)
-                except NameError:
-                    self.update_dupe_avoidance(dupe_opts, dupe_col, alias)
-
-        if pos != len(names) - 1:
-            raise FieldError("Join on field %r not permitted." % name)
-
-        return field, target, opts, joins, last
-
-    def update_dupe_avoidance(self, opts, col, alias):
-        """
-        For a column that is one of multiple pointing to the same table, update
-        the internal data structures to note that this alias shouldn't be used
-        for those other columns.
-        """
-        ident = id(opts)
-        for name in opts.duplicate_targets[col]:
-            try:
-                self.dupe_avoidance[ident, name].add(alias)
-            except KeyError:
-                self.dupe_avoidance[ident, name] = set([alias])
-
-    def split_exclude(self, filter_expr, prefix):
-        """
-        When doing an exclude against any kind of N-to-many relation, we need
-        to use a subquery. This method constructs the nested query, given the
-        original exclude filter (filter_expr) and the portion up to the first
-        N-to-many relation field.
-        """
-        query = Query(self.model, self.connection)
-        query.add_filter(filter_expr)
-        query.set_start(prefix)
-        query.clear_ordering(True)
-        self.add_filter(('%s__in' % prefix, query), negate=True, trim=True)
-
-    def set_limits(self, low=None, high=None):
-        """
-        Adjusts the limits on the rows retrieved. We use low/high to set these,
-        as it makes it more Pythonic to read and write. When the SQL query is
-        created, they are converted to the appropriate offset and limit values.
-
-        Any limits passed in here are applied relative to the existing
-        constraints. So low is added to the current low value and both will be
-        clamped to any existing high value.
-        """
-        if high is not None:
-            if self.high_mark:
-                self.high_mark = min(self.high_mark, self.low_mark + high)
-            else:
-                self.high_mark = self.low_mark + high
-        if low is not None:
-            if self.high_mark:
-                self.low_mark = min(self.high_mark, self.low_mark + low)
-            else:
-                self.low_mark = self.low_mark + low
-
-    def clear_limits(self):
-        """
-        Clears any existing limits.
-        """
-        self.low_mark, self.high_mark = 0, None
-
-    def can_filter(self):
-        """
-        Returns True if adding filters to this instance is still possible.
-
-        Typically, this means no limits or offsets have been put on the results.
-        """
-        return not (self.low_mark or self.high_mark)
-
-    def add_fields(self, field_names, allow_m2m=True):
-        """
-        Adds the given (model) fields to the select set. The field names are
-        added in the order specified.
-        """
-        alias = self.get_initial_alias()
-        opts = self.get_meta()
-        try:
-            for name in field_names:
-                field, target, u2, joins, u3 = self.setup_joins(
-                        name.split(LOOKUP_SEP), opts, alias, False, allow_m2m,
-                        True)
-                final_alias = joins[-1]
-                col = target.column
-                if len(joins) > 1:
-                    join = self.alias_map[final_alias]
-                    if col == join[RHS_JOIN_COL]:
-                        self.unref_alias(final_alias)
-                        final_alias = join[LHS_ALIAS]
-                        col = join[LHS_JOIN_COL]
-                        joins = joins[:-1]
-                promote = False
-                for join in joins[1:]:
-                    # Only nullable aliases are promoted, so we don't end up
-                    # doing unnecessary left outer joins here.
-                    if self.promote_alias(join, promote):
-                        promote = True
-                self.select.append((final_alias, col))
-                self.select_fields.append(field)
-        except MultiJoin:
-            raise FieldError("Invalid field name: '%s'" % name)
-        except FieldError:
-            names = opts.get_all_field_names() + self.extra_select.keys()
-            names.sort()
-            raise FieldError("Cannot resolve keyword %r into field. "
-                    "Choices are: %s" % (name, ", ".join(names)))
-
-    def add_ordering(self, *ordering):
-        """
-        Adds items from the 'ordering' sequence to the query's "order by"
-        clause. These items are either field names (not column names) --
-        possibly with a direction prefix ('-' or '?') -- or ordinals,
-        corresponding to column positions in the 'select' list.
-
-        If 'ordering' is empty, all ordering is cleared from the query.
-        """
-        errors = []
-        for item in ordering:
-            if not ORDER_PATTERN.match(item):
-                errors.append(item)
-        if errors:
-            raise FieldError('Invalid order_by arguments: %s' % errors)
-        if ordering:
-            self.order_by.extend(ordering)
-        else:
-            self.default_ordering = False
-
-    def clear_ordering(self, force_empty=False):
-        """
-        Removes any ordering settings. If 'force_empty' is True, there will be
-        no ordering in the resulting query (not even the model's default).
-        """
-        self.order_by = []
-        self.extra_order_by = ()
-        if force_empty:
-            self.default_ordering = False
-
-    def add_count_column(self):
-        """
-        Converts the query to do count(...) or count(distinct(pk)) in order to
-        get its size.
-        """
-        # TODO: When group_by support is added, this needs to be adjusted so
-        # that it doesn't totally overwrite the select list.
-        if not self.distinct:
-            if not self.select:
-                select = Count()
-            else:
-                assert len(self.select) == 1, \
-                        "Cannot add count col with multiple cols in 'select': %r" % self.select
-                select = Count(self.select[0])
-        else:
-            opts = self.model._meta
-            if not self.select:
-                select = Count((self.join((None, opts.db_table, None, None)),
-                        opts.pk.column), True)
-            else:
-                # Because of SQL portability issues, multi-column, distinct
-                # counts need a sub-query -- see get_count() for details.
-                assert len(self.select) == 1, \
-                        "Cannot add count col with multiple cols in 'select'."
-                select = Count(self.select[0], True)
-
-            # Distinct handling is done in Count(), so don't do it at this
-            # level.
-            self.distinct = False
-        self.select = [select]
-        self.select_fields = [None]
-        self.extra_select = {}
-
-    def add_select_related(self, fields):
-        """
-        Sets up the select_related data structure so that we only select
-        certain related models (as opposed to all models, when
-        self.select_related=True).
-        """
-        field_dict = {}
-        for field in fields:
-            d = field_dict
-            for part in field.split(LOOKUP_SEP):
-                d = d.setdefault(part, {})
-        self.select_related = field_dict
-        self.related_select_cols = []
-        self.related_select_fields = []
-
-    def add_extra(self, select, select_params, where, params, tables, order_by):
-        """
-        Adds data to the various extra_* attributes for user-created additions
-        to the query.
-        """
-        if select:
-            # We need to pair any placeholder markers in the 'select'
-            # dictionary with their parameters in 'select_params' so that
-            # subsequent updates to the select dictionary also adjust the
-            # parameters appropriately.
-            select_pairs = SortedDict()
-            if select_params:
-                param_iter = iter(select_params)
-            else:
-                param_iter = iter([])
-            for name, entry in select.items():
-                entry = force_unicode(entry)
-                entry_params = []
-                pos = entry.find("%s")
-                while pos != -1:
-                    entry_params.append(param_iter.next())
-                    pos = entry.find("%s", pos + 2)
-                select_pairs[name] = (entry, entry_params)
-            # This is order preserving, since self.extra_select is a SortedDict.
-            self.extra_select.update(select_pairs)
-        if where:
-            self.extra_where += tuple(where)
-        if params:
-            self.extra_params += tuple(params)
-        if tables:
-            self.extra_tables += tuple(tables)
-        if order_by:
-            self.extra_order_by = order_by
-
-    def trim_extra_select(self, names):
-        """
-        Removes any aliases in the extra_select dictionary that aren't in
-        'names'.
-
-        This is needed if we are selecting certain values that don't incldue
-        all of the extra_select names.
-        """
-        for key in set(self.extra_select).difference(set(names)):
-            del self.extra_select[key]
-
-    def set_start(self, start):
-        """
-        Sets the table from which to start joining. The start position is
-        specified by the related attribute from the base model. This will
-        automatically set to the select column to be the column linked from the
-        previous table.
-
-        This method is primarily for internal use and the error checking isn't
-        as friendly as add_filter(). Mostly useful for querying directly
-        against the join table of many-to-many relation in a subquery.
-        """
-        opts = self.model._meta
-        alias = self.get_initial_alias()
-        field, col, opts, joins, last = self.setup_joins(
-                start.split(LOOKUP_SEP), opts, alias, False)
-        alias = joins[last[-1]]
-        self.select = [(alias, self.alias_map[alias][RHS_JOIN_COL])]
-        self.select_fields = [field]
-        self.start_meta = opts
-
-        # The call to setup_joins add an extra reference to everything in
-        # joins. So we need to unref everything once, and everything prior to
-        # the final join a second time.
-        for alias in joins:
-            self.unref_alias(alias)
-        for alias in joins[:last[-1]]:
-            self.unref_alias(alias)
-
-    def execute_sql(self, result_type=MULTI):
-        """
-        Run the query against the database and returns the result(s). The
-        return value is a single data item if result_type is SINGLE, or an
-        iterator over the results if the result_type is MULTI.
-
-        result_type is either MULTI (use fetchmany() to retrieve all rows),
-        SINGLE (only retrieve a single row), or None (no results expected, but
-        the cursor is returned, since it's used by subclasses such as
-        InsertQuery).
-        """
-        try:
-            sql, params = self.as_sql()
-            if not sql:
-                raise EmptyResultSet
-        except EmptyResultSet:
-            if result_type == MULTI:
-                return empty_iter()
-            else:
-                return
-
-        cursor = self.connection.cursor()
-        cursor.execute(sql, params)
-
-        if not result_type:
-            return cursor
-        if result_type == SINGLE:
-            if self.ordering_aliases:
-                return cursor.fetchone()[:-len(results.ordering_aliases)]
-            return cursor.fetchone()
-
-        # The MULTI case.
-        if self.ordering_aliases:
-            result = order_modified_iter(cursor, len(self.ordering_aliases),
-                    self.connection.features.empty_fetchmany_value)
-        else:
-            result = iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),
-                    self.connection.features.empty_fetchmany_value)
-        if not self.connection.features.can_use_chunked_reads:
-            # If we are using non-chunked reads, we return the same data
-            # structure as normally, but ensure it is all read into memory
-            # before going any further.
-            return list(result)
-        return result
-
-# Use the backend's custom Query class if it defines one. Otherwise, use the
-# default.
-if connection.features.uses_custom_query_class:
-    Query = connection.ops.query_class(Query)
-
-def get_order_dir(field, default='ASC'):
-    """
-    Returns the field name and direction for an order specification. For
-    example, '-foo' is returned as ('foo', 'DESC').
-
-    The 'default' param is used to indicate which way no prefix (or a '+'
-    prefix) should sort. The '-' prefix always sorts the opposite way.
-    """
-    dirn = ORDER_DIR[default]
-    if field[0] == '-':
-        return field[1:], dirn[1]
-    return field, dirn[0]
-
-def empty_iter():
-    """
-    Returns an iterator containing no results.
-    """
-    yield iter([]).next()
-
-def order_modified_iter(cursor, trim, sentinel):
-    """
-    Yields blocks of rows from a cursor. We use this iterator in the special
-    case when extra output columns have been added to support ordering
-    requirements. We must trim those extra columns before anything else can use
-    the results, since they're only needed to make the SQL valid.
-    """
-    for rows in iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),
-            sentinel):
-        yield [r[:-trim] for r in rows]
-
-def setup_join_cache(sender, **kwargs):
-    """
-    The information needed to join between model fields is something that is
-    invariant over the life of the model, so we cache it in the model's Options
-    class, rather than recomputing it all the time.
-
-    This method initialises the (empty) cache when the model is created.
-    """
-    sender._meta._join_cache = {}
-
-signals.class_prepared.connect(setup_join_cache)
-
diff --git a/webapp/django/db/models/sql/subqueries.py b/webapp/django/db/models/sql/subqueries.py
deleted file mode 100644
index cea2a58..0000000
--- a/webapp/django/db/models/sql/subqueries.py
+++ /dev/null
@@ -1,411 +0,0 @@
-"""
-Query subclasses which provide extra functionality beyond simple data retrieval.
-"""
-
-from django.core.exceptions import FieldError
-from django.db.models.sql.constants import *
-from django.db.models.sql.datastructures import Date
-from django.db.models.sql.query import Query
-from django.db.models.sql.where import AND
-
-__all__ = ['DeleteQuery', 'UpdateQuery', 'InsertQuery', 'DateQuery',
-        'CountQuery']
-
-class DeleteQuery(Query):
-    """
-    Delete queries are done through this class, since they are more constrained
-    than general queries.
-    """
-    def as_sql(self):
-        """
-        Creates the SQL for this query. Returns the SQL string and list of
-        parameters.
-        """
-        assert len(self.tables) == 1, \
-                "Can only delete from one table at a time."
-        result = ['DELETE FROM %s' % self.quote_name_unless_alias(self.tables[0])]
-        where, params = self.where.as_sql()
-        result.append('WHERE %s' % where)
-        return ' '.join(result), tuple(params)
-
-    def do_query(self, table, where):
-        self.tables = [table]
-        self.where = where
-        self.execute_sql(None)
-
-    def delete_batch_related(self, pk_list):
-        """
-        Set up and execute delete queries for all the objects related to the
-        primary key values in pk_list. To delete the objects themselves, use
-        the delete_batch() method.
-
-        More than one physical query may be executed if there are a
-        lot of values in pk_list.
-        """
-        from django.contrib.contenttypes import generic
-        cls = self.model
-        for related in cls._meta.get_all_related_many_to_many_objects():
-            if not isinstance(related.field, generic.GenericRelation):
-                for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):
-                    where = self.where_class()
-                    where.add((None, related.field.m2m_reverse_name(),
-                            related.field, 'in',
-                            pk_list[offset : offset+GET_ITERATOR_CHUNK_SIZE]),
-                            AND)
-                    self.do_query(related.field.m2m_db_table(), where)
-
-        for f in cls._meta.many_to_many:
-            w1 = self.where_class()
-            if isinstance(f, generic.GenericRelation):
-                from django.contrib.contenttypes.models import ContentType
-                field = f.rel.to._meta.get_field(f.content_type_field_name)
-                w1.add((None, field.column, field, 'exact',
-                        ContentType.objects.get_for_model(cls).id), AND)
-            for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):
-                where = self.where_class()
-                where.add((None, f.m2m_column_name(), f, 'in',
-                        pk_list[offset : offset + GET_ITERATOR_CHUNK_SIZE]),
-                        AND)
-                if w1:
-                    where.add(w1, AND)
-                self.do_query(f.m2m_db_table(), where)
-
-    def delete_batch(self, pk_list):
-        """
-        Set up and execute delete queries for all the objects in pk_list. This
-        should be called after delete_batch_related(), if necessary.
-
-        More than one physical query may be executed if there are a
-        lot of values in pk_list.
-        """
-        for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):
-            where = self.where_class()
-            field = self.model._meta.pk
-            where.add((None, field.column, field, 'in',
-                    pk_list[offset : offset + GET_ITERATOR_CHUNK_SIZE]), AND)
-            self.do_query(self.model._meta.db_table, where)
-
-class UpdateQuery(Query):
-    """
-    Represents an "update" SQL query.
-    """
-    def __init__(self, *args, **kwargs):
-        super(UpdateQuery, self).__init__(*args, **kwargs)
-        self._setup_query()
-
-    def _setup_query(self):
-        """
-        Runs on initialization and after cloning. Any attributes that would
-        normally be set in __init__ should go in here, instead, so that they
-        are also set up after a clone() call.
-        """
-        self.values = []
-        self.related_ids = None
-        if not hasattr(self, 'related_updates'):
-            self.related_updates = {}
-
-    def clone(self, klass=None, **kwargs):
-        return super(UpdateQuery, self).clone(klass,
-                related_updates=self.related_updates.copy, **kwargs)
-
-    def execute_sql(self, result_type=None):
-        """
-        Execute the specified update. Returns the number of rows affected by
-        the primary update query (there could be other updates on related
-        tables, but their rowcounts are not returned).
-        """
-        cursor = super(UpdateQuery, self).execute_sql(result_type)
-        rows = cursor.rowcount
-        del cursor
-        for query in self.get_related_updates():
-            query.execute_sql(result_type)
-        return rows
-
-    def as_sql(self):
-        """
-        Creates the SQL for this query. Returns the SQL string and list of
-        parameters.
-        """
-        self.pre_sql_setup()
-        if not self.values:
-            return '', ()
-        table = self.tables[0]
-        qn = self.quote_name_unless_alias
-        result = ['UPDATE %s' % qn(table)]
-        result.append('SET')
-        values, update_params = [], []
-        for name, val, placeholder in self.values:
-            if val is not None:
-                values.append('%s = %s' % (qn(name), placeholder))
-                update_params.append(val)
-            else:
-                values.append('%s = NULL' % qn(name))
-        result.append(', '.join(values))
-        where, params = self.where.as_sql()
-        if where:
-            result.append('WHERE %s' % where)
-        return ' '.join(result), tuple(update_params + params)
-
-    def pre_sql_setup(self):
-        """
-        If the update depends on results from other tables, we need to do some
-        munging of the "where" conditions to match the format required for
-        (portable) SQL updates. That is done here.
-
-        Further, if we are going to be running multiple updates, we pull out
-        the id values to update at this point so that they don't change as a
-        result of the progressive updates.
-        """
-        self.select_related = False
-        self.clear_ordering(True)
-        super(UpdateQuery, self).pre_sql_setup()
-        count = self.count_active_tables()
-        if not self.related_updates and count == 1:
-            return
-
-        # We need to use a sub-select in the where clause to filter on things
-        # from other tables.
-        query = self.clone(klass=Query)
-        query.bump_prefix()
-        query.extra_select = {}
-        first_table = query.tables[0]
-        if query.alias_refcount[first_table] == 1:
-            # We can remove one table from the inner query.
-            query.unref_alias(first_table)
-            for i in xrange(1, len(query.tables)):
-                table = query.tables[i]
-                if query.alias_refcount[table]:
-                    break
-            join_info = query.alias_map[table]
-            query.select = [(join_info[RHS_ALIAS], join_info[RHS_JOIN_COL])]
-            must_pre_select = False
-        else:
-            query.select = []
-            query.add_fields([query.model._meta.pk.name])
-            must_pre_select = not self.connection.features.update_can_self_select
-
-        # Now we adjust the current query: reset the where clause and get rid
-        # of all the tables we don't need (since they're in the sub-select).
-        self.where = self.where_class()
-        if self.related_updates or must_pre_select:
-            # Either we're using the idents in multiple update queries (so
-            # don't want them to change), or the db backend doesn't support
-            # selecting from the updating table (e.g. MySQL).
-            idents = []
-            for rows in query.execute_sql(MULTI):
-                idents.extend([r[0] for r in rows])
-            self.add_filter(('pk__in', idents))
-            self.related_ids = idents
-        else:
-            # The fast path. Filters and updates in one query.
-            self.add_filter(('pk__in', query))
-        for alias in self.tables[1:]:
-            self.alias_refcount[alias] = 0
-
-    def clear_related(self, related_field, pk_list):
-        """
-        Set up and execute an update query that clears related entries for the
-        keys in pk_list.
-
-        This is used by the QuerySet.delete_objects() method.
-        """
-        for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):
-            self.where = self.where_class()
-            f = self.model._meta.pk
-            self.where.add((None, f.column, f, 'in',
-                    pk_list[offset : offset + GET_ITERATOR_CHUNK_SIZE]),
-                    AND)
-            self.values = [(related_field.column, None, '%s')]
-            self.execute_sql(None)
-
-    def add_update_values(self, values):
-        """
-        Convert a dictionary of field name to value mappings into an update
-        query. This is the entry point for the public update() method on
-        querysets.
-        """
-        values_seq = []
-        for name, val in values.iteritems():
-            field, model, direct, m2m = self.model._meta.get_field_by_name(name)
-            if not direct or m2m:
-                raise FieldError('Cannot update model field %r (only non-relations and foreign keys permitted).' % field)
-            values_seq.append((field, model, val))
-        return self.add_update_fields(values_seq)
-
-    def add_update_fields(self, values_seq):
-        """
-        Turn a sequence of (field, model, value) triples into an update query.
-        Used by add_update_values() as well as the "fast" update path when
-        saving models.
-        """
-        from django.db.models.base import Model
-        for field, model, val in values_seq:
-            # FIXME: Some sort of db_prep_* is probably more appropriate here.
-            if field.rel and isinstance(val, Model):
-                val = val.pk
-
-            # Getting the placeholder for the field.
-            if hasattr(field, 'get_placeholder'):
-                placeholder = field.get_placeholder(val)
-            else:
-                placeholder = '%s'
-
-            if model:
-                self.add_related_update(model, field.column, val, placeholder)
-            else:
-                self.values.append((field.column, val, placeholder))
-
-    def add_related_update(self, model, column, value, placeholder):
-        """
-        Adds (name, value) to an update query for an ancestor model.
-
-        Updates are coalesced so that we only run one update query per ancestor.
-        """
-        try:
-            self.related_updates[model].append((column, value, placeholder))
-        except KeyError:
-            self.related_updates[model] = [(column, value, placeholder)]
-
-    def get_related_updates(self):
-        """
-        Returns a list of query objects: one for each update required to an
-        ancestor model. Each query will have the same filtering conditions as
-        the current query but will only update a single table.
-        """
-        if not self.related_updates:
-            return []
-        result = []
-        for model, values in self.related_updates.iteritems():
-            query = UpdateQuery(model, self.connection)
-            query.values = values
-            if self.related_ids:
-                query.add_filter(('pk__in', self.related_ids))
-            result.append(query)
-        return result
-
-class InsertQuery(Query):
-    def __init__(self, *args, **kwargs):
-        super(InsertQuery, self).__init__(*args, **kwargs)
-        self.columns = []
-        self.values = []
-        self.params = ()
-
-    def clone(self, klass=None, **kwargs):
-        extras = {'columns': self.columns[:], 'values': self.values[:],
-                'params': self.params}
-        return super(InsertQuery, self).clone(klass, extras)
-
-    def as_sql(self):
-        # We don't need quote_name_unless_alias() here, since these are all
-        # going to be column names (so we can avoid the extra overhead).
-        qn = self.connection.ops.quote_name
-        result = ['INSERT INTO %s' % qn(self.model._meta.db_table)]
-        result.append('(%s)' % ', '.join([qn(c) for c in self.columns]))
-        result.append('VALUES (%s)' % ', '.join(self.values))
-        return ' '.join(result), self.params
-
-    def execute_sql(self, return_id=False):
-        cursor = super(InsertQuery, self).execute_sql(None)
-        if return_id:
-            return self.connection.ops.last_insert_id(cursor,
-                    self.model._meta.db_table, self.model._meta.pk.column)
-
-    def insert_values(self, insert_values, raw_values=False):
-        """
-        Set up the insert query from the 'insert_values' dictionary. The
-        dictionary gives the model field names and their target values.
-
-        If 'raw_values' is True, the values in the 'insert_values' dictionary
-        are inserted directly into the query, rather than passed as SQL
-        parameters. This provides a way to insert NULL and DEFAULT keywords
-        into the query, for example.
-        """
-        placeholders, values = [], []
-        for field, val in insert_values:
-            if hasattr(field, 'get_placeholder'):
-                # Some fields (e.g. geo fields) need special munging before
-                # they can be inserted.
-                placeholders.append(field.get_placeholder(val))
-            else:
-                placeholders.append('%s')
-
-            self.columns.append(field.column)
-            values.append(val)
-        if raw_values:
-            self.values.extend(values)
-        else:
-            self.params += tuple(values)
-            self.values.extend(placeholders)
-
-class DateQuery(Query):
-    """
-    A DateQuery is a normal query, except that it specifically selects a single
-    date field. This requires some special handling when converting the results
-    back to Python objects, so we put it in a separate class.
-    """
-    def __getstate__(self):
-        """
-        Special DateQuery-specific pickle handling.
-        """
-        for elt in self.select:
-            if isinstance(elt, Date):
-                # Eliminate a method reference that can't be pickled. The
-                # __setstate__ method restores this.
-                elt.date_sql_func = None
-        return super(DateQuery, self).__getstate__()
-
-    def __setstate__(self, obj_dict):
-        super(DateQuery, self).__setstate__(obj_dict)
-        for elt in self.select:
-            if isinstance(elt, Date):
-                self.date_sql_func = self.connection.ops.date_trunc_sql
-
-    def results_iter(self):
-        """
-        Returns an iterator over the results from executing this query.
-        """
-        resolve_columns = hasattr(self, 'resolve_columns')
-        if resolve_columns:
-            from django.db.models.fields import DateTimeField
-            fields = [DateTimeField()]
-        else:
-            from django.db.backends.util import typecast_timestamp
-            needs_string_cast = self.connection.features.needs_datetime_string_cast
-
-        offset = len(self.extra_select)
-        for rows in self.execute_sql(MULTI):
-            for row in rows:
-                date = row[offset]
-                if resolve_columns:
-                    date = self.resolve_columns([date], fields)[0]
-                elif needs_string_cast:
-                    date = typecast_timestamp(str(date))
-                yield date
-
-    def add_date_select(self, field, lookup_type, order='ASC'):
-        """
-        Converts the query into a date extraction query.
-        """
-        result = self.setup_joins([field.name], self.get_meta(),
-                self.get_initial_alias(), False)
-        alias = result[3][-1]
-        select = Date((alias, field.column), lookup_type,
-                self.connection.ops.date_trunc_sql)
-        self.select = [select]
-        self.select_fields = [None]
-        self.select_related = False # See #7097.
-        self.distinct = True
-        self.order_by = order == 'ASC' and [1] or [-1]
-
-class CountQuery(Query):
-    """
-    A CountQuery knows how to take a normal query which would select over
-    multiple distinct columns and turn it into SQL that can be used on a
-    variety of backends (it requires a select in the FROM clause).
-    """
-    def get_from_clause(self):
-        result, params = self._query.as_sql()
-        return ['(%s) A1' % result], params
-
-    def get_ordering(self):
-        return ()
diff --git a/webapp/django/db/models/sql/where.py b/webapp/django/db/models/sql/where.py
deleted file mode 100644
index 662d99a..0000000
--- a/webapp/django/db/models/sql/where.py
+++ /dev/null
@@ -1,213 +0,0 @@
-"""
-Code to manage the creation and SQL rendering of 'where' constraints.
-"""
-import datetime
-
-from django.utils import tree
-from django.db import connection
-from django.db.models.fields import Field
-from django.db.models.query_utils import QueryWrapper
-from datastructures import EmptyResultSet, FullResultSet
-
-# Connection types
-AND = 'AND'
-OR = 'OR'
-
-class WhereNode(tree.Node):
-    """
-    Used to represent the SQL where-clause.
-
-    The class is tied to the Query class that created it (in order to create
-    the correct SQL).
-
-    The children in this tree are usually either Q-like objects or lists of
-    [table_alias, field_name, db_type, lookup_type, value_annotation,
-    params]. However, a child could also be any class with as_sql() and
-    relabel_aliases() methods.
-    """
-    default = AND
-
-    def add(self, data, connector):
-        """
-        Add a node to the where-tree. If the data is a list or tuple, it is
-        expected to be of the form (alias, col_name, field_obj, lookup_type,
-        value), which is then slightly munged before being stored (to avoid
-        storing any reference to field objects). Otherwise, the 'data' is
-        stored unchanged and can be anything with an 'as_sql()' method.
-        """
-        # Because of circular imports, we need to import this here.
-        from django.db.models.base import ObjectDoesNotExist
-
-        if not isinstance(data, (list, tuple)):
-            super(WhereNode, self).add(data, connector)
-            return
-
-        alias, col, field, lookup_type, value = data
-        try:
-            if field:
-                params = field.get_db_prep_lookup(lookup_type, value)
-                db_type = field.db_type()
-            else:
-                # This is possible when we add a comparison to NULL sometimes
-                # (we don't really need to waste time looking up the associated
-                # field object).
-                params = Field().get_db_prep_lookup(lookup_type, value)
-                db_type = None
-        except ObjectDoesNotExist:
-            # This can happen when trying to insert a reference to a null pk.
-            # We break out of the normal path and indicate there's nothing to
-            # match.
-            super(WhereNode, self).add(NothingNode(), connector)
-            return
-        if isinstance(value, datetime.datetime):
-            annotation = datetime.datetime
-        else:
-            annotation = bool(value)
-        super(WhereNode, self).add((alias, col, db_type, lookup_type,
-                annotation, params), connector)
-
-    def as_sql(self, qn=None):
-        """
-        Returns the SQL version of the where clause and the value to be
-        substituted in. Returns None, None if this node is empty.
-
-        If 'node' is provided, that is the root of the SQL generation
-        (generally not needed except by the internal implementation for
-        recursion).
-        """
-        if not qn:
-            qn = connection.ops.quote_name
-        if not self.children:
-            return None, []
-        result = []
-        result_params = []
-        empty = True
-        for child in self.children:
-            try:
-                if hasattr(child, 'as_sql'):
-                    sql, params = child.as_sql(qn=qn)
-                else:
-                    # A leaf node in the tree.
-                    sql, params = self.make_atom(child, qn)
-            except EmptyResultSet:
-                if self.connector == AND and not self.negated:
-                    # We can bail out early in this particular case (only).
-                    raise
-                elif self.negated:
-                    empty = False
-                continue
-            except FullResultSet:
-                if self.connector == OR:
-                    if self.negated:
-                        empty = True
-                        break
-                    # We match everything. No need for any constraints.
-                    return '', []
-                if self.negated:
-                    empty = True
-                continue
-            empty = False
-            if sql:
-                result.append(sql)
-                result_params.extend(params)
-        if empty:
-            raise EmptyResultSet
-
-        conn = ' %s ' % self.connector
-        sql_string = conn.join(result)
-        if sql_string:
-            if self.negated:
-                sql_string = 'NOT (%s)' % sql_string
-            elif len(self.children) != 1:
-                sql_string = '(%s)' % sql_string
-        return sql_string, result_params
-
-    def make_atom(self, child, qn):
-        """
-        Turn a tuple (table_alias, column_name, db_type, lookup_type,
-        value_annot, params) into valid SQL.
-
-        Returns the string for the SQL fragment and the parameters to use for
-        it.
-        """
-        table_alias, name, db_type, lookup_type, value_annot, params = child
-        if table_alias:
-            lhs = '%s.%s' % (qn(table_alias), qn(name))
-        else:
-            lhs = qn(name)
-        field_sql = connection.ops.field_cast_sql(db_type) % lhs
-
-        if value_annot is datetime.datetime:
-            cast_sql = connection.ops.datetime_cast_sql()
-        else:
-            cast_sql = '%s'
-
-        if isinstance(params, QueryWrapper):
-            extra, params = params.data
-        else:
-            extra = ''
-
-        if lookup_type in connection.operators:
-            format = "%s %%s %s" % (connection.ops.lookup_cast(lookup_type),
-                    extra)
-            return (format % (field_sql,
-                    connection.operators[lookup_type] % cast_sql), params)
-
-        if lookup_type == 'in':
-            if not value_annot:
-                raise EmptyResultSet
-            if extra:
-                return ('%s IN %s' % (field_sql, extra), params)
-            return ('%s IN (%s)' % (field_sql, ', '.join(['%s'] * len(params))),
-                    params)
-        elif lookup_type in ('range', 'year'):
-            return ('%s BETWEEN %%s and %%s' % field_sql, params)
-        elif lookup_type in ('month', 'day'):
-            return ('%s = %%s' % connection.ops.date_extract_sql(lookup_type,
-                    field_sql), params)
-        elif lookup_type == 'isnull':
-            return ('%s IS %sNULL' % (field_sql,
-                (not value_annot and 'NOT ' or '')), ())
-        elif lookup_type == 'search':
-            return (connection.ops.fulltext_search_sql(field_sql), params)
-        elif lookup_type in ('regex', 'iregex'):
-            return connection.ops.regex_lookup(lookup_type) % (field_sql, cast_sql), params
-
-        raise TypeError('Invalid lookup_type: %r' % lookup_type)
-
-    def relabel_aliases(self, change_map, node=None):
-        """
-        Relabels the alias values of any children. 'change_map' is a dictionary
-        mapping old (current) alias values to the new values.
-        """
-        if not node:
-            node = self
-        for pos, child in enumerate(node.children):
-            if hasattr(child, 'relabel_aliases'):
-                child.relabel_aliases(change_map)
-            elif isinstance(child, tree.Node):
-                self.relabel_aliases(change_map, child)
-            else:
-                if child[0] in change_map:
-                    node.children[pos] = (change_map[child[0]],) + child[1:]
-
-class EverythingNode(object):
-    """
-    A node that matches everything.
-    """
-    def as_sql(self, qn=None):
-        raise FullResultSet
-
-    def relabel_aliases(self, change_map, node=None):
-        return
-
-class NothingNode(object):
-    """
-    A node that matches nothing.
-    """
-    def as_sql(self, qn=None):
-        raise EmptyResultSet
-
-    def relabel_aliases(self, change_map, node=None):
-        return
-
diff --git a/webapp/django/db/transaction.py b/webapp/django/db/transaction.py
deleted file mode 100644
index 506074f..0000000
--- a/webapp/django/db/transaction.py
+++ /dev/null
@@ -1,267 +0,0 @@
-"""
-This module implements a transaction manager that can be used to define
-transaction handling in a request or view function. It is used by transaction
-control middleware and decorators.
-
-The transaction manager can be in managed or in auto state. Auto state means the
-system is using a commit-on-save strategy (actually it's more like
-commit-on-change). As soon as the .save() or .delete() (or related) methods are
-called, a commit is made.
-
-Managed transactions don't do those commits, but will need some kind of manual
-or implicit commits or rollbacks.
-"""
-
-try:
-    import thread
-except ImportError:
-    import dummy_thread as thread
-try:
-    from functools import wraps
-except ImportError:
-    from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
-from django.db import connection
-from django.conf import settings
-
-class TransactionManagementError(Exception):
-    """
-    This exception is thrown when something bad happens with transaction
-    management.
-    """
-    pass
-
-# The states are dictionaries of lists. The key to the dict is the current
-# thread and the list is handled as a stack of values.
-state = {}
-savepoint_state = {}
-
-# The dirty flag is set by *_unless_managed functions to denote that the
-# code under transaction management has changed things to require a
-# database commit.
-dirty = {}
-
-def enter_transaction_management():
-    """
-    Enters transaction management for a running thread. It must be balanced with
-    the appropriate leave_transaction_management call, since the actual state is
-    managed as a stack.
-
-    The state and dirty flag are carried over from the surrounding block or
-    from the settings, if there is no surrounding block (dirty is always false
-    when no current block is running).
-    """
-    thread_ident = thread.get_ident()
-    if thread_ident in state and state[thread_ident]:
-        state[thread_ident].append(state[thread_ident][-1])
-    else:
-        state[thread_ident] = []
-        state[thread_ident].append(settings.TRANSACTIONS_MANAGED)
-    if thread_ident not in dirty:
-        dirty[thread_ident] = False
-
-def leave_transaction_management():
-    """
-    Leaves transaction management for a running thread. A dirty flag is carried
-    over to the surrounding block, as a commit will commit all changes, even
-    those from outside. (Commits are on connection level.)
-    """
-    thread_ident = thread.get_ident()
-    if thread_ident in state and state[thread_ident]:
-        del state[thread_ident][-1]
-    else:
-        raise TransactionManagementError("This code isn't under transaction management")
-    if dirty.get(thread_ident, False):
-        rollback()
-        raise TransactionManagementError("Transaction managed block ended with pending COMMIT/ROLLBACK")
-    dirty[thread_ident] = False
-
-def is_dirty():
-    """
-    Returns True if the current transaction requires a commit for changes to
-    happen.
-    """
-    return dirty.get(thread.get_ident(), False)
-
-def set_dirty():
-    """
-    Sets a dirty flag for the current thread and code streak. This can be used
-    to decide in a managed block of code to decide whether there are open
-    changes waiting for commit.
-    """
-    thread_ident = thread.get_ident()
-    if thread_ident in dirty:
-        dirty[thread_ident] = True
-    else:
-        raise TransactionManagementError("This code isn't under transaction management")
-
-def set_clean():
-    """
-    Resets a dirty flag for the current thread and code streak. This can be used
-    to decide in a managed block of code to decide whether a commit or rollback
-    should happen.
-    """
-    thread_ident = thread.get_ident()
-    if thread_ident in dirty:
-        dirty[thread_ident] = False
-    else:
-        raise TransactionManagementError("This code isn't under transaction management")
-    clean_savepoints()
-
-def clean_savepoints():
-    thread_ident = thread.get_ident()
-    if thread_ident in savepoint_state:
-        del savepoint_state[thread_ident]
-
-def is_managed():
-    """
-    Checks whether the transaction manager is in manual or in auto state.
-    """
-    thread_ident = thread.get_ident()
-    if thread_ident in state:
-        if state[thread_ident]:
-            return state[thread_ident][-1]
-    return settings.TRANSACTIONS_MANAGED
-
-def managed(flag=True):
-    """
-    Puts the transaction manager into a manual state: managed transactions have
-    to be committed explicitly by the user. If you switch off transaction
-    management and there is a pending commit/rollback, the data will be
-    commited.
-    """
-    thread_ident = thread.get_ident()
-    top = state.get(thread_ident, None)
-    if top:
-        top[-1] = flag
-        if not flag and is_dirty():
-            connection._commit()
-            set_clean()
-    else:
-        raise TransactionManagementError("This code isn't under transaction management")
-
-def commit_unless_managed():
-    """
-    Commits changes if the system is not in managed transaction mode.
-    """
-    if not is_managed():
-        connection._commit()
-        clean_savepoints()
-    else:
-        set_dirty()
-
-def rollback_unless_managed():
-    """
-    Rolls back changes if the system is not in managed transaction mode.
-    """
-    if not is_managed():
-        connection._rollback()
-    else:
-        set_dirty()
-
-def commit():
-    """
-    Does the commit itself and resets the dirty flag.
-    """
-    connection._commit()
-    set_clean()
-
-def rollback():
-    """
-    This function does the rollback itself and resets the dirty flag.
-    """
-    connection._rollback()
-    set_clean()
-
-def savepoint():
-    """
-    Creates a savepoint (if supported and required by the backend) inside the
-    current transaction. Returns an identifier for the savepoint that will be
-    used for the subsequent rollback or commit.
-    """
-    thread_ident = thread.get_ident()
-    if thread_ident in savepoint_state:
-        savepoint_state[thread_ident].append(None)
-    else:
-        savepoint_state[thread_ident] = [None]
-    tid = str(thread_ident).replace('-', '')
-    sid = "s%s_x%d" % (tid, len(savepoint_state[thread_ident]))
-    connection._savepoint(sid)
-    return sid
-
-def savepoint_rollback(sid):
-    """
-    Rolls back the most recent savepoint (if one exists). Does nothing if
-    savepoints are not supported.
-    """
-    if thread.get_ident() in savepoint_state:
-        connection._savepoint_rollback(sid)
-
-def savepoint_commit(sid):
-    """
-    Commits the most recent savepoint (if one exists). Does nothing if
-    savepoints are not supported.
-    """
-    if thread.get_ident() in savepoint_state:
-        connection._savepoint_commit(sid)
-
-##############
-# DECORATORS #
-##############
-
-def autocommit(func):
-    """
-    Decorator that activates commit on save. This is Django's default behavior;
-    this decorator is useful if you globally activated transaction management in
-    your settings file and want the default behavior in some view functions.
-    """
-    def _autocommit(*args, **kw):
-        try:
-            enter_transaction_management()
-            managed(False)
-            return func(*args, **kw)
-        finally:
-            leave_transaction_management()
-    return wraps(func)(_autocommit)
-
-def commit_on_success(func):
-    """
-    This decorator activates commit on response. This way, if the view function
-    runs successfully, a commit is made; if the viewfunc produces an exception,
-    a rollback is made. This is one of the most common ways to do transaction
-    control in web apps.
-    """
-    def _commit_on_success(*args, **kw):
-        try:
-            enter_transaction_management()
-            managed(True)
-            try:
-                res = func(*args, **kw)
-            except:
-                # All exceptions must be handled here (even string ones).
-                if is_dirty():
-                    rollback()
-                raise
-            else:
-                if is_dirty():
-                    commit()
-            return res
-        finally:
-            leave_transaction_management()
-    return wraps(func)(_commit_on_success)
-
-def commit_manually(func):
-    """
-    Decorator that activates manual transaction control. It just disables
-    automatic transaction control and doesn't do any commit/rollback of its
-    own -- it's up to the user to call the commit and rollback functions
-    themselves.
-    """
-    def _commit_manually(*args, **kw):
-        try:
-            enter_transaction_management()
-            managed(True)
-            return func(*args, **kw)
-        finally:
-            leave_transaction_management()
-
-    return wraps(func)(_commit_manually)
diff --git a/webapp/django/dispatch/__init__.py b/webapp/django/dispatch/__init__.py
deleted file mode 100644
index 0798acc..0000000
--- a/webapp/django/dispatch/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-"""Multi-consumer multi-producer dispatching mechanism
-
-Originally based on pydispatch (BSD) http://pypi.python.org/pypi/PyDispatcher/2.0.1
-See license.txt for original license.
-
-Heavily modified for Django's purposes.
-"""
-
-from django.dispatch.dispatcher import Signal
\ No newline at end of file
diff --git a/webapp/django/dispatch/dispatcher.py b/webapp/django/dispatch/dispatcher.py
deleted file mode 100644
index ff659d3..0000000
--- a/webapp/django/dispatch/dispatcher.py
+++ /dev/null
@@ -1,198 +0,0 @@
-import weakref
-try:
-    set
-except NameError:
-    from sets import Set as set # Python 2.3 fallback
-
-from django.dispatch import saferef
-
-WEAKREF_TYPES = (weakref.ReferenceType, saferef.BoundMethodWeakref)
-
-def _make_id(target):
-    if hasattr(target, 'im_func'):
-        return (id(target.im_self), id(target.im_func))
-    return id(target)
-
-class Signal(object):
-    """Base class for all signals
-    
-    Internal attributes:
-        receivers -- { receriverkey (id) : weakref(receiver) }
-    """
-    
-    def __init__(self, providing_args=None):
-        """providing_args -- A list of the arguments this signal can pass along in
-                       a send() call.
-        """
-        self.receivers = []
-        if providing_args is None:
-            providing_args = []
-        self.providing_args = set(providing_args)
-
-    def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):
-        """Connect receiver to sender for signal
-    
-        receiver -- a function or an instance method which is to
-            receive signals.  Receivers must be
-            hashable objects.
-
-            if weak is True, then receiver must be weak-referencable
-            (more precisely saferef.safeRef() must be able to create
-            a reference to the receiver).
-        
-            Receivers must be able to accept keyword arguments.
-
-            If receivers have a dispatch_uid attribute, the receiver will
-              not be added if another receiver already exists with that
-              dispatch_uid.
-
-        sender -- the sender to which the receiver should respond
-            Must either be of type Signal, or None to receive events
-            from any sender.
-
-        weak -- whether to use weak references to the receiver
-            By default, the module will attempt to use weak
-            references to the receiver objects.  If this parameter
-            is false, then strong references will be used.
-        
-        dispatch_uid -- an identifier used to uniquely identify a particular
-            instance of a receiver. This will usually be a string, though it
-            may be anything hashable.
-
-        returns None
-        """
-        from django.conf import settings
-        
-        if settings.DEBUG:
-            import inspect
-            assert inspect.getargspec(receiver)[2] is not None, \
-                "Signal receivers must accept keyword arguments (**kwargs)."
-        
-        if dispatch_uid:
-            lookup_key = (dispatch_uid, _make_id(sender))
-        else:
-            lookup_key = (_make_id(receiver), _make_id(sender))
-
-        if weak:
-            receiver = saferef.safeRef(receiver, onDelete=self._remove_receiver)
-
-        for r_key, _ in self.receivers:
-            if r_key == lookup_key:
-                break
-        else:
-            self.receivers.append((lookup_key, receiver))
-
-    def disconnect(self, receiver=None, sender=None, weak=True, dispatch_uid=None):
-        """Disconnect receiver from sender for signal
-    
-        receiver -- the registered receiver to disconnect. May be none if
-            dispatch_uid is specified.
-        sender -- the registered sender to disconnect
-        weak -- the weakref state to disconnect
-        dispatch_uid -- the unique identifier of the receiver to disconnect
-    
-        disconnect reverses the process of connect.
-
-        If weak references are used, disconnect need not be called.
-          The receiver will be remove from dispatch automatically.
-
-        returns None
-        """
-
-        if dispatch_uid:
-            lookup_key = (dispatch_uid, _make_id(sender))
-        else:
-            lookup_key = (_make_id(receiver), _make_id(sender))
-
-        for idx, (r_key, _) in enumerate(self.receivers):
-            if r_key == lookup_key:
-                del self.receivers[idx]
-
-    def send(self, sender, **named):
-        """Send signal from sender to all connected receivers.
-
-        sender -- the sender of the signal
-            Either a specific object or None.
-    
-        named -- named arguments which will be passed to receivers.
-
-        Returns a list of tuple pairs [(receiver, response), ... ].
-
-        If any receiver raises an error, the error propagates back
-        through send, terminating the dispatch loop, so it is quite
-        possible to not have all receivers called if a raises an
-        error.
-        """
-
-        responses = []
-        if not self.receivers:
-            return responses
-
-        for receiver in self._live_receivers(_make_id(sender)):
-            response = receiver(signal=self, sender=sender, **named)
-            responses.append((receiver, response))
-        return responses
-
-    def send_robust(self, sender, **named):
-        """Send signal from sender to all connected receivers catching errors
-
-        sender -- the sender of the signal
-            Can be any python object (normally one registered with
-            a connect if you actually want something to occur).
-
-        named -- named arguments which will be passed to receivers.
-            These arguments must be a subset of the argument names
-            defined in providing_args.
-
-        Return a list of tuple pairs [(receiver, response), ... ],
-        may raise DispatcherKeyError
-
-        if any receiver raises an error (specifically any subclass of Exception),
-        the error instance is returned as the result for that receiver.
-        """
-
-        responses = []
-        if not self.receivers:
-            return responses
-
-        # Call each receiver with whatever arguments it can accept.
-        # Return a list of tuple pairs [(receiver, response), ... ].
-        for receiver in self._live_receivers(_make_id(sender)):
-            try:
-                response = receiver(signal=self, sender=sender, **named)
-            except Exception, err:
-                responses.append((receiver, err))
-            else:
-                responses.append((receiver, response))
-        return responses
-
-    def _live_receivers(self, senderkey):
-        """Filter sequence of receivers to get resolved, live receivers
-
-        This checks for weak references
-        and resolves them, then returning only live
-        receivers.
-        """
-        none_senderkey = _make_id(None)
-
-        for (receiverkey, r_senderkey), receiver in self.receivers:
-            if r_senderkey == none_senderkey or r_senderkey == senderkey:
-                if isinstance(receiver, WEAKREF_TYPES):
-                    # Dereference the weak reference.
-                    receiver = receiver()
-                    if receiver is not None:
-                        yield receiver
-                else:
-                    yield receiver
-
-    def _remove_receiver(self, receiver):
-        """Remove dead receivers from connections."""
-
-        to_remove = []
-        for key, connected_receiver in self.receivers:
-            if connected_receiver == receiver:
-                to_remove.append(key)
-        for key in to_remove:
-            for idx, (r_key, _) in enumerate(self.receivers):
-                if r_key == key:
-                    del self.receivers[idx]
diff --git a/webapp/django/dispatch/license.txt b/webapp/django/dispatch/license.txt
deleted file mode 100644
index 505090d..0000000
--- a/webapp/django/dispatch/license.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-django.dispatch was originally forked from PyDispatcher.
-
-PyDispatcher License:
-
-    Copyright (c) 2001-2003, Patrick K. O'Brien and Contributors
-    All rights reserved.
-    
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions
-    are met:
-    
-        Redistributions of source code must retain the above copyright
-        notice, this list of conditions and the following disclaimer.
-    
-        Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials
-        provided with the distribution.
-    
-        The name of Patrick K. O'Brien, or the name of any Contributor,
-        may not be used to endorse or promote products derived from this 
-        software without specific prior written permission.
-    
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-    COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-    OF THE POSSIBILITY OF SUCH DAMAGE. 
-
diff --git a/webapp/django/dispatch/saferef.py b/webapp/django/dispatch/saferef.py
deleted file mode 100644
index 8bcfd8a..0000000
--- a/webapp/django/dispatch/saferef.py
+++ /dev/null
@@ -1,250 +0,0 @@
-"""
-"Safe weakrefs", originally from pyDispatcher.
-
-Provides a way to safely weakref any function, including bound methods (which
-aren't handled by the core weakref module).
-"""
-
-import weakref, traceback
-
-def safeRef(target, onDelete = None):
-    """Return a *safe* weak reference to a callable target
-
-    target -- the object to be weakly referenced, if it's a
-        bound method reference, will create a BoundMethodWeakref,
-        otherwise creates a simple weakref.
-    onDelete -- if provided, will have a hard reference stored
-        to the callable to be called after the safe reference
-        goes out of scope with the reference object, (either a
-        weakref or a BoundMethodWeakref) as argument.
-    """
-    if hasattr(target, 'im_self'):
-        if target.im_self is not None:
-            # Turn a bound method into a BoundMethodWeakref instance.
-            # Keep track of these instances for lookup by disconnect().
-            assert hasattr(target, 'im_func'), """safeRef target %r has im_self, but no im_func, don't know how to create reference"""%( target,)
-            reference = get_bound_method_weakref(
-                target=target,
-                onDelete=onDelete
-            )
-            return reference
-    if callable(onDelete):
-        return weakref.ref(target, onDelete)
-    else:
-        return weakref.ref( target )
-
-class BoundMethodWeakref(object):
-    """'Safe' and reusable weak references to instance methods
-
-    BoundMethodWeakref objects provide a mechanism for
-    referencing a bound method without requiring that the
-    method object itself (which is normally a transient
-    object) is kept alive.  Instead, the BoundMethodWeakref
-    object keeps weak references to both the object and the
-    function which together define the instance method.
-
-    Attributes:
-        key -- the identity key for the reference, calculated
-            by the class's calculateKey method applied to the
-            target instance method
-        deletionMethods -- sequence of callable objects taking
-            single argument, a reference to this object which
-            will be called when *either* the target object or
-            target function is garbage collected (i.e. when
-            this object becomes invalid).  These are specified
-            as the onDelete parameters of safeRef calls.
-        weakSelf -- weak reference to the target object
-        weakFunc -- weak reference to the target function
-
-    Class Attributes:
-        _allInstances -- class attribute pointing to all live
-            BoundMethodWeakref objects indexed by the class's
-            calculateKey(target) method applied to the target
-            objects.  This weak value dictionary is used to
-            short-circuit creation so that multiple references
-            to the same (object, function) pair produce the
-            same BoundMethodWeakref instance.
-
-    """
-    
-    _allInstances = weakref.WeakValueDictionary()
-    
-    def __new__( cls, target, onDelete=None, *arguments,**named ):
-        """Create new instance or return current instance
-
-        Basically this method of construction allows us to
-        short-circuit creation of references to already-
-        referenced instance methods.  The key corresponding
-        to the target is calculated, and if there is already
-        an existing reference, that is returned, with its
-        deletionMethods attribute updated.  Otherwise the
-        new instance is created and registered in the table
-        of already-referenced methods.
-        """
-        key = cls.calculateKey(target)
-        current =cls._allInstances.get(key)
-        if current is not None:
-            current.deletionMethods.append( onDelete)
-            return current
-        else:
-            base = super( BoundMethodWeakref, cls).__new__( cls )
-            cls._allInstances[key] = base
-            base.__init__( target, onDelete, *arguments,**named)
-            return base
-    
-    def __init__(self, target, onDelete=None):
-        """Return a weak-reference-like instance for a bound method
-
-        target -- the instance-method target for the weak
-            reference, must have im_self and im_func attributes
-            and be reconstructable via:
-                target.im_func.__get__( target.im_self )
-            which is true of built-in instance methods.
-        onDelete -- optional callback which will be called
-            when this weak reference ceases to be valid
-            (i.e. either the object or the function is garbage
-            collected).  Should take a single argument,
-            which will be passed a pointer to this object.
-        """
-        def remove(weak, self=self):
-            """Set self.isDead to true when method or instance is destroyed"""
-            methods = self.deletionMethods[:]
-            del self.deletionMethods[:]
-            try:
-                del self.__class__._allInstances[ self.key ]
-            except KeyError:
-                pass
-            for function in methods:
-                try:
-                    if callable( function ):
-                        function( self )
-                except Exception, e:
-                    try:
-                        traceback.print_exc()
-                    except AttributeError, err:
-                        print '''Exception during saferef %s cleanup function %s: %s'''%(
-                            self, function, e
-                        )
-        self.deletionMethods = [onDelete]
-        self.key = self.calculateKey( target )
-        self.weakSelf = weakref.ref(target.im_self, remove)
-        self.weakFunc = weakref.ref(target.im_func, remove)
-        self.selfName = str(target.im_self)
-        self.funcName = str(target.im_func.__name__)
-    
-    def calculateKey( cls, target ):
-        """Calculate the reference key for this reference
-
-        Currently this is a two-tuple of the id()'s of the
-        target object and the target function respectively.
-        """
-        return (id(target.im_self),id(target.im_func))
-    calculateKey = classmethod( calculateKey )
-    
-    def __str__(self):
-        """Give a friendly representation of the object"""
-        return """%s( %s.%s )"""%(
-            self.__class__.__name__,
-            self.selfName,
-            self.funcName,
-        )
-    
-    __repr__ = __str__
-    
-    def __nonzero__( self ):
-        """Whether we are still a valid reference"""
-        return self() is not None
-    
-    def __cmp__( self, other ):
-        """Compare with another reference"""
-        if not isinstance (other,self.__class__):
-            return cmp( self.__class__, type(other) )
-        return cmp( self.key, other.key)
-    
-    def __call__(self):
-        """Return a strong reference to the bound method
-
-        If the target cannot be retrieved, then will
-        return None, otherwise returns a bound instance
-        method for our object and function.
-
-        Note:
-            You may call this method any number of times,
-            as it does not invalidate the reference.
-        """
-        target = self.weakSelf()
-        if target is not None:
-            function = self.weakFunc()
-            if function is not None:
-                return function.__get__(target)
-        return None
-
-class BoundNonDescriptorMethodWeakref(BoundMethodWeakref):
-    """A specialized BoundMethodWeakref, for platforms where instance methods
-    are not descriptors.
-
-    It assumes that the function name and the target attribute name are the
-    same, instead of assuming that the function is a descriptor. This approach
-    is equally fast, but not 100% reliable because functions can be stored on an
-    attribute named differenty than the function's name such as in:
-
-    class A: pass
-    def foo(self): return "foo"
-    A.bar = foo
-
-    But this shouldn't be a common use case. So, on platforms where methods
-    aren't descriptors (such as Jython) this implementation has the advantage
-    of working in the most cases.
-    """
-    def __init__(self, target, onDelete=None):
-        """Return a weak-reference-like instance for a bound method
-
-        target -- the instance-method target for the weak
-            reference, must have im_self and im_func attributes
-            and be reconstructable via:
-                target.im_func.__get__( target.im_self )
-            which is true of built-in instance methods.
-        onDelete -- optional callback which will be called
-            when this weak reference ceases to be valid
-            (i.e. either the object or the function is garbage
-            collected).  Should take a single argument,
-            which will be passed a pointer to this object.
-        """
-        assert getattr(target.im_self, target.__name__) == target, \
-               ("method %s isn't available as the attribute %s of %s" %
-                (target, target.__name__, target.im_self))
-        super(BoundNonDescriptorMethodWeakref, self).__init__(target, onDelete)
-
-    def __call__(self):
-        """Return a strong reference to the bound method
-
-        If the target cannot be retrieved, then will
-        return None, otherwise returns a bound instance
-        method for our object and function.
-
-        Note:
-            You may call this method any number of times,
-            as it does not invalidate the reference.
-        """
-        target = self.weakSelf()
-        if target is not None:
-            function = self.weakFunc()
-            if function is not None:
-                # Using curry() would be another option, but it erases the
-                # "signature" of the function. That is, after a function is
-                # curried, the inspect module can't be used to determine how
-                # many arguments the function expects, nor what keyword
-                # arguments it supports, and pydispatcher needs this
-                # information.
-                return getattr(target, function.__name__)
-        return None
-
-def get_bound_method_weakref(target, onDelete):
-    """Instantiates the appropiate BoundMethodWeakRef, depending on the details of
-    the underlying class method implementation"""
-    if hasattr(target, '__get__'):
-        # target method is a descriptor, so the default implementation works:
-        return BoundMethodWeakref(target=target, onDelete=onDelete)
-    else:
-        # no luck, use the alternative implementation:
-        return BoundNonDescriptorMethodWeakref(target=target, onDelete=onDelete)
diff --git a/webapp/django/forms/__init__.py b/webapp/django/forms/__init__.py
deleted file mode 100644
index 0d9c68f..0000000
--- a/webapp/django/forms/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""
-Django validation and HTML form handling.
-
-TODO:
-    Default value for field
-    Field labels
-    Nestable Forms
-    FatalValidationError -- short-circuits all other validators on a form
-    ValidationWarning
-    "This form field requires foo.js" and form.js_includes()
-"""
-
-from util import ValidationError
-from widgets import *
-from fields import *
-from forms import *
-from models import *
diff --git a/webapp/django/forms/extras/__init__.py b/webapp/django/forms/extras/__init__.py
deleted file mode 100644
index a7f6a9b..0000000
--- a/webapp/django/forms/extras/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from widgets import *
diff --git a/webapp/django/forms/extras/widgets.py b/webapp/django/forms/extras/widgets.py
deleted file mode 100644
index ffa7ba2..0000000
--- a/webapp/django/forms/extras/widgets.py
+++ /dev/null
@@ -1,79 +0,0 @@
-"""
-Extra HTML Widget classes
-"""
-
-import datetime
-import re
-
-from django.forms.widgets import Widget, Select
-from django.utils.dates import MONTHS
-from django.utils.safestring import mark_safe
-
-__all__ = ('SelectDateWidget',)
-
-RE_DATE = re.compile(r'(\d{4})-(\d\d?)-(\d\d?)$')
-
-class SelectDateWidget(Widget):
-    """
-    A Widget that splits date input into three <select> boxes.
-
-    This also serves as an example of a Widget that has more than one HTML
-    element and hence implements value_from_datadict.
-    """
-    month_field = '%s_month'
-    day_field = '%s_day'
-    year_field = '%s_year'
-
-    def __init__(self, attrs=None, years=None):
-        # years is an optional list/tuple of years to use in the "year" select box.
-        self.attrs = attrs or {}
-        if years:
-            self.years = years
-        else:
-            this_year = datetime.date.today().year
-            self.years = range(this_year, this_year+10)
-
-    def render(self, name, value, attrs=None):
-        try:
-            year_val, month_val, day_val = value.year, value.month, value.day
-        except AttributeError:
-            year_val = month_val = day_val = None
-            if isinstance(value, basestring):
-                match = RE_DATE.match(value)
-                if match:
-                    year_val, month_val, day_val = [int(v) for v in match.groups()]
-
-        output = []
-
-        if 'id' in self.attrs:
-            id_ = self.attrs['id']
-        else:
-            id_ = 'id_%s' % name
-
-        month_choices = MONTHS.items()
-        month_choices.sort()
-        local_attrs = self.build_attrs(id=self.month_field % id_)
-        select_html = Select(choices=month_choices).render(self.month_field % name, month_val, local_attrs)
-        output.append(select_html)
-
-        day_choices = [(i, i) for i in range(1, 32)]
-        local_attrs['id'] = self.day_field % id_
-        select_html = Select(choices=day_choices).render(self.day_field % name, day_val, local_attrs)
-        output.append(select_html)
-
-        year_choices = [(i, i) for i in self.years]
-        local_attrs['id'] = self.year_field % id_
-        select_html = Select(choices=year_choices).render(self.year_field % name, year_val, local_attrs)
-        output.append(select_html)
-
-        return mark_safe(u'\n'.join(output))
-
-    def id_for_label(self, id_):
-        return '%s_month' % id_
-    id_for_label = classmethod(id_for_label)
-
-    def value_from_datadict(self, data, files, name):
-        y, m, d = data.get(self.year_field % name), data.get(self.month_field % name), data.get(self.day_field % name)
-        if y and m and d:
-            return '%s-%s-%s' % (y, m, d)
-        return data.get(name, None)
diff --git a/webapp/django/forms/fields.py b/webapp/django/forms/fields.py
deleted file mode 100644
index ee9b8c6..0000000
--- a/webapp/django/forms/fields.py
+++ /dev/null
@@ -1,837 +0,0 @@
-"""
-Field classes.
-"""
-
-import copy
-import datetime
-import os
-import re
-import time
-import urlparse
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-# Python 2.3 fallbacks
-try:
-    from decimal import Decimal, DecimalException
-except ImportError:
-    from django.utils._decimal import Decimal, DecimalException
-try:
-    set
-except NameError:
-    from sets import Set as set
-
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode, smart_str
-
-from util import ErrorList, ValidationError
-from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple, DateTimeInput, TimeInput
-from django.core.files.uploadedfile import SimpleUploadedFile as UploadedFile
-
-__all__ = (
-    'Field', 'CharField', 'IntegerField',
-    'DEFAULT_DATE_INPUT_FORMATS', 'DateField',
-    'DEFAULT_TIME_INPUT_FORMATS', 'TimeField',
-    'DEFAULT_DATETIME_INPUT_FORMATS', 'DateTimeField', 'TimeField',
-    'RegexField', 'EmailField', 'FileField', 'ImageField', 'URLField',
-    'BooleanField', 'NullBooleanField', 'ChoiceField', 'MultipleChoiceField',
-    'ComboField', 'MultiValueField', 'FloatField', 'DecimalField',
-    'SplitDateTimeField', 'IPAddressField', 'FilePathField',
-)
-
-# These values, if given to to_python(), will trigger the self.required check.
-EMPTY_VALUES = (None, '')
-
-
-class Field(object):
-    widget = TextInput # Default widget to use when rendering this type of Field.
-    hidden_widget = HiddenInput # Default widget to use when rendering this as "hidden".
-    default_error_messages = {
-        'required': _(u'This field is required.'),
-        'invalid': _(u'Enter a valid value.'),
-    }
-
-    # Tracks each time a Field instance is created. Used to retain order.
-    creation_counter = 0
-
-    def __init__(self, required=True, widget=None, label=None, initial=None,
-                 help_text=None, error_messages=None):
-        # required -- Boolean that specifies whether the field is required.
-        #             True by default.
-        # widget -- A Widget class, or instance of a Widget class, that should
-        #           be used for this Field when displaying it. Each Field has a
-        #           default Widget that it'll use if you don't specify this. In
-        #           most cases, the default widget is TextInput.
-        # label -- A verbose name for this field, for use in displaying this
-        #          field in a form. By default, Django will use a "pretty"
-        #          version of the form field name, if the Field is part of a
-        #          Form.
-        # initial -- A value to use in this Field's initial display. This value
-        #            is *not* used as a fallback if data isn't given.
-        # help_text -- An optional string to use as "help text" for this Field.
-        if label is not None:
-            label = smart_unicode(label)
-        self.required, self.label, self.initial = required, label, initial
-        if help_text is None:
-            self.help_text = u''
-        else:
-            self.help_text = smart_unicode(help_text)
-        widget = widget or self.widget
-        if isinstance(widget, type):
-            widget = widget()
-
-        # Hook into self.widget_attrs() for any Field-specific HTML attributes.
-        extra_attrs = self.widget_attrs(widget)
-        if extra_attrs:
-            widget.attrs.update(extra_attrs)
-
-        self.widget = widget
-
-        # Increase the creation counter, and save our local copy.
-        self.creation_counter = Field.creation_counter
-        Field.creation_counter += 1
-
-        def set_class_error_messages(messages, klass):
-            for base_class in klass.__bases__:
-                set_class_error_messages(messages, base_class)
-            messages.update(getattr(klass, 'default_error_messages', {}))
-
-        messages = {}
-        set_class_error_messages(messages, self.__class__)
-        messages.update(error_messages or {})
-        self.error_messages = messages
-
-    def clean(self, value):
-        """
-        Validates the given value and returns its "cleaned" value as an
-        appropriate Python object.
-
-        Raises ValidationError for any errors.
-        """
-        if self.required and value in EMPTY_VALUES:
-            raise ValidationError(self.error_messages['required'])
-        return value
-
-    def widget_attrs(self, widget):
-        """
-        Given a Widget instance (*not* a Widget class), returns a dictionary of
-        any HTML attributes that should be added to the Widget, based on this
-        Field.
-        """
-        return {}
-
-    def __deepcopy__(self, memo):
-        result = copy.copy(self)
-        memo[id(self)] = result
-        result.widget = copy.deepcopy(self.widget, memo)
-        return result
-
-class CharField(Field):
-    default_error_messages = {
-        'max_length': _(u'Ensure this value has at most %(max)d characters (it has %(length)d).'),
-        'min_length': _(u'Ensure this value has at least %(min)d characters (it has %(length)d).'),
-    }
-
-    def __init__(self, max_length=None, min_length=None, *args, **kwargs):
-        self.max_length, self.min_length = max_length, min_length
-        super(CharField, self).__init__(*args, **kwargs)
-
-    def clean(self, value):
-        "Validates max_length and min_length. Returns a Unicode object."
-        super(CharField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return u''
-        value = smart_unicode(value)
-        value_length = len(value)
-        if self.max_length is not None and value_length > self.max_length:
-            raise ValidationError(self.error_messages['max_length'] % {'max': self.max_length, 'length': value_length})
-        if self.min_length is not None and value_length < self.min_length:
-            raise ValidationError(self.error_messages['min_length'] % {'min': self.min_length, 'length': value_length})
-        return value
-
-    def widget_attrs(self, widget):
-        if self.max_length is not None and isinstance(widget, (TextInput, PasswordInput)):
-            # The HTML attribute is maxlength, not max_length.
-            return {'maxlength': str(self.max_length)}
-
-class IntegerField(Field):
-    default_error_messages = {
-        'invalid': _(u'Enter a whole number.'),
-        'max_value': _(u'Ensure this value is less than or equal to %s.'),
-        'min_value': _(u'Ensure this value is greater than or equal to %s.'),
-    }
-
-    def __init__(self, max_value=None, min_value=None, *args, **kwargs):
-        self.max_value, self.min_value = max_value, min_value
-        super(IntegerField, self).__init__(*args, **kwargs)
-
-    def clean(self, value):
-        """
-        Validates that int() can be called on the input. Returns the result
-        of int(). Returns None for empty values.
-        """
-        super(IntegerField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return None
-        try:
-            value = int(str(value))
-        except (ValueError, TypeError):
-            raise ValidationError(self.error_messages['invalid'])
-        if self.max_value is not None and value > self.max_value:
-            raise ValidationError(self.error_messages['max_value'] % self.max_value)
-        if self.min_value is not None and value < self.min_value:
-            raise ValidationError(self.error_messages['min_value'] % self.min_value)
-        return value
-
-class FloatField(Field):
-    default_error_messages = {
-        'invalid': _(u'Enter a number.'),
-        'max_value': _(u'Ensure this value is less than or equal to %s.'),
-        'min_value': _(u'Ensure this value is greater than or equal to %s.'),
-    }
-
-    def __init__(self, max_value=None, min_value=None, *args, **kwargs):
-        self.max_value, self.min_value = max_value, min_value
-        Field.__init__(self, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Validates that float() can be called on the input. Returns a float.
-        Returns None for empty values.
-        """
-        super(FloatField, self).clean(value)
-        if not self.required and value in EMPTY_VALUES:
-            return None
-        try:
-            value = float(value)
-        except (ValueError, TypeError):
-            raise ValidationError(self.error_messages['invalid'])
-        if self.max_value is not None and value > self.max_value:
-            raise ValidationError(self.error_messages['max_value'] % self.max_value)
-        if self.min_value is not None and value < self.min_value:
-            raise ValidationError(self.error_messages['min_value'] % self.min_value)
-        return value
-
-class DecimalField(Field):
-    default_error_messages = {
-        'invalid': _(u'Enter a number.'),
-        'max_value': _(u'Ensure this value is less than or equal to %s.'),
-        'min_value': _(u'Ensure this value is greater than or equal to %s.'),
-        'max_digits': _('Ensure that there are no more than %s digits in total.'),
-        'max_decimal_places': _('Ensure that there are no more than %s decimal places.'),
-        'max_whole_digits': _('Ensure that there are no more than %s digits before the decimal point.')
-    }
-
-    def __init__(self, max_value=None, min_value=None, max_digits=None, decimal_places=None, *args, **kwargs):
-        self.max_value, self.min_value = max_value, min_value
-        self.max_digits, self.decimal_places = max_digits, decimal_places
-        Field.__init__(self, *args, **kwargs)
-
-    def clean(self, value):
-        """
-        Validates that the input is a decimal number. Returns a Decimal
-        instance. Returns None for empty values. Ensures that there are no more
-        than max_digits in the number, and no more than decimal_places digits
-        after the decimal point.
-        """
-        super(DecimalField, self).clean(value)
-        if not self.required and value in EMPTY_VALUES:
-            return None
-        value = smart_str(value).strip()
-        try:
-            value = Decimal(value)
-        except DecimalException:
-            raise ValidationError(self.error_messages['invalid'])
-
-        sign, digittuple, exponent = value.as_tuple()
-        decimals = abs(exponent)
-        # digittuple doesn't include any leading zeros.
-        digits = len(digittuple)
-        if decimals >= digits:
-            # We have leading zeros up to or past the decimal point.  Count
-            # everything past the decimal point as a digit.  We also add one
-            # for leading zeros before the decimal point (any number of leading
-            # whole zeros collapse to one digit).
-            digits = decimals + 1
-        whole_digits = digits - decimals
-
-        if self.max_value is not None and value > self.max_value:
-            raise ValidationError(self.error_messages['max_value'] % self.max_value)
-        if self.min_value is not None and value < self.min_value:
-            raise ValidationError(self.error_messages['min_value'] % self.min_value)
-        if self.max_digits is not None and digits > self.max_digits:
-            raise ValidationError(self.error_messages['max_digits'] % self.max_digits)
-        if self.decimal_places is not None and decimals > self.decimal_places:
-            raise ValidationError(self.error_messages['max_decimal_places'] % self.decimal_places)
-        if self.max_digits is not None and self.decimal_places is not None and whole_digits > (self.max_digits - self.decimal_places):
-            raise ValidationError(self.error_messages['max_whole_digits'] % (self.max_digits - self.decimal_places))
-        return value
-
-DEFAULT_DATE_INPUT_FORMATS = (
-    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
-    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
-    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
-    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
-    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
-)
-
-class DateField(Field):
-    default_error_messages = {
-        'invalid': _(u'Enter a valid date.'),
-    }
-
-    def __init__(self, input_formats=None, *args, **kwargs):
-        super(DateField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or DEFAULT_DATE_INPUT_FORMATS
-
-    def clean(self, value):
-        """
-        Validates that the input can be converted to a date. Returns a Python
-        datetime.date object.
-        """
-        super(DateField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return None
-        if isinstance(value, datetime.datetime):
-            return value.date()
-        if isinstance(value, datetime.date):
-            return value
-        for format in self.input_formats:
-            try:
-                return datetime.date(*time.strptime(value, format)[:3])
-            except ValueError:
-                continue
-        raise ValidationError(self.error_messages['invalid'])
-
-DEFAULT_TIME_INPUT_FORMATS = (
-    '%H:%M:%S',     # '14:30:59'
-    '%H:%M',        # '14:30'
-)
-
-class TimeField(Field):
-    widget = TimeInput
-    default_error_messages = {
-        'invalid': _(u'Enter a valid time.')
-    }
-
-    def __init__(self, input_formats=None, *args, **kwargs):
-        super(TimeField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or DEFAULT_TIME_INPUT_FORMATS
-
-    def clean(self, value):
-        """
-        Validates that the input can be converted to a time. Returns a Python
-        datetime.time object.
-        """
-        super(TimeField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return None
-        if isinstance(value, datetime.time):
-            return value
-        for format in self.input_formats:
-            try:
-                return datetime.time(*time.strptime(value, format)[3:6])
-            except ValueError:
-                continue
-        raise ValidationError(self.error_messages['invalid'])
-
-DEFAULT_DATETIME_INPUT_FORMATS = (
-    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
-    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
-    '%Y-%m-%d',              # '2006-10-25'
-    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
-    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
-    '%m/%d/%Y',              # '10/25/2006'
-    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
-    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
-    '%m/%d/%y',              # '10/25/06'
-)
-
-class DateTimeField(Field):
-    widget = DateTimeInput
-    default_error_messages = {
-        'invalid': _(u'Enter a valid date/time.'),
-    }
-
-    def __init__(self, input_formats=None, *args, **kwargs):
-        super(DateTimeField, self).__init__(*args, **kwargs)
-        self.input_formats = input_formats or DEFAULT_DATETIME_INPUT_FORMATS
-
-    def clean(self, value):
-        """
-        Validates that the input can be converted to a datetime. Returns a
-        Python datetime.datetime object.
-        """
-        super(DateTimeField, self).clean(value)
-        if value in EMPTY_VALUES:
-            return None
-        if isinstance(value, datetime.datetime):
-            return value
-        if isinstance(value, datetime.date):
-            return datetime.datetime(value.year, value.month, value.day)
-        if isinstance(value, list):
-            # Input comes from a SplitDateTimeWidget, for example. So, it's two
-            # components: date and time.
-            if len(value) != 2:
-                raise ValidationError(self.error_messages['invalid'])
-            value = '%s %s' % tuple(value)
-        for format in self.input_formats:
-            try:
-                return datetime.datetime(*time.strptime(value, format)[:6])
-            except ValueError:
-                continue
-        raise ValidationError(self.error_messages['invalid'])
-
-class RegexField(CharField):
-    def __init__(self, regex, max_length=None, min_length=None, error_message=None, *args, **kwargs):
-        """
-        regex can be either a string or a compiled regular expression object.
-        error_message is an optional error message to use, if
-        'Enter a valid value' is too generic for you.
-        """
-        # error_message is just kept for backwards compatibility:
-        if error_message:
-            error_messages = kwargs.get('error_messages') or {}
-            error_messages['invalid'] = error_message
-            kwargs['error_messages'] = error_messages
-        super(RegexField, self).__init__(max_length, min_length, *args, **kwargs)
-        if isinstance(regex, basestring):
-            regex = re.compile(regex)
-        self.regex = regex
-
-    def clean(self, value):
-        """
-        Validates that the input matches the regular expression. Returns a
-        Unicode object.
-        """
-        value = super(RegexField, self).clean(value)
-        if value == u'':
-            return value
-        if not self.regex.search(value):
-            raise ValidationError(self.error_messages['invalid'])
-        return value
-
-email_re = re.compile(
-    r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"  # dot-atom
-    r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' # quoted-string
-    r')@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$', re.IGNORECASE)  # domain
-
-class EmailField(RegexField):
-    default_error_messages = {
-        'invalid': _(u'Enter a valid e-mail address.'),
-    }
-
-    def __init__(self, max_length=None, min_length=None, *args, **kwargs):
-        RegexField.__init__(self, email_re, max_length, min_length, *args,
-                            **kwargs)
-
-try:
-    from django.conf import settings
-    URL_VALIDATOR_USER_AGENT = settings.URL_VALIDATOR_USER_AGENT
-except ImportError:
-    # It's OK if Django settings aren't configured.
-    URL_VALIDATOR_USER_AGENT = 'Django (http://www.djangoproject.com/)'
-
-
-class FileField(Field):
-    widget = FileInput
-    default_error_messages = {
-        'invalid': _(u"No file was submitted. Check the encoding type on the form."),
-        'missing': _(u"No file was submitted."),
-        'empty': _(u"The submitted file is empty."),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(FileField, self).__init__(*args, **kwargs)
-
-    def clean(self, data, initial=None):
-        super(FileField, self).clean(initial or data)
-        if not self.required and data in EMPTY_VALUES:
-            return None
-        elif not data and initial:
-            return initial
-
-        # UploadedFile objects should have name and size attributes.
-        try:
-            file_name = data.name
-            file_size = data.size
-        except AttributeError:
-            raise ValidationError(self.error_messages['invalid'])
-
-        if not file_name:
-            raise ValidationError(self.error_messages['invalid'])
-        if not file_size:
-            raise ValidationError(self.error_messages['empty'])
-
-        return data
-
-class ImageField(FileField):
-    default_error_messages = {
-        'invalid_image': _(u"Upload a valid image. The file you uploaded was either not an image or a corrupted image."),
-    }
-
-    def clean(self, data, initial=None):
-        """
-        Checks that the file-upload field data contains a valid image (GIF, JPG,
-        PNG, possibly others -- whatever the Python Imaging Library supports).
-        """
-        f = super(ImageField, self).clean(data, initial)
-        if f is None:
-            return None
-        elif not data and initial:
-            return initial
-        from PIL import Image
-
-        # We need to get a file object for PIL. We might have a path or we might
-        # have to read the data into memory.
-        if hasattr(data, 'temporary_file_path'):
-            file = data.temporary_file_path()
-        else:
-            if hasattr(data, 'read'):
-                file = StringIO(data.read())
-            else:
-                file = StringIO(data['content'])
-
-        try:
-            # load() is the only method that can spot a truncated JPEG,
-            #  but it cannot be called sanely after verify()
-            trial_image = Image.open(file)
-            trial_image.load()
-
-            # Since we're about to use the file again we have to reset the
-            # file object if possible.
-            if hasattr(file, 'reset'):
-                file.reset()
-
-            # verify() is the only method that can spot a corrupt PNG,
-            #  but it must be called immediately after the constructor
-            trial_image = Image.open(file)
-            trial_image.verify()
-        except ImportError:
-            # Under PyPy, it is possible to import PIL. However, the underlying
-            # _imaging C module isn't available, so an ImportError will be
-            # raised. Catch and re-raise.
-            raise
-        except Exception: # Python Imaging Library doesn't recognize it as an image
-            raise ValidationError(self.error_messages['invalid_image'])
-        if hasattr(f, 'seek') and callable(f.seek):
-            f.seek(0)
-        return f
-
-url_re = re.compile(
-    r'^https?://' # http:// or https://
-    r'(?:(?:[A-Z0-9-]+\.)+[A-Z]{2,6}|' #domain...
-    r'localhost|' #localhost...
-    r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
-    r'(?::\d+)?' # optional port
-    r'(?:/?|/\S+)$', re.IGNORECASE)
-
-class URLField(RegexField):
-    default_error_messages = {
-        'invalid': _(u'Enter a valid URL.'),
-        'invalid_link': _(u'This URL appears to be a broken link.'),
-    }
-
-    def __init__(self, max_length=None, min_length=None, verify_exists=False,
-            validator_user_agent=URL_VALIDATOR_USER_AGENT, *args, **kwargs):
-        super(URLField, self).__init__(url_re, max_length, min_length, *args,
-                                       **kwargs)
-        self.verify_exists = verify_exists
-        self.user_agent = validator_user_agent
-
-    def clean(self, value):
-        # If no URL scheme given, assume http://
-        if value and '://' not in value:
-            value = u'http://%s' % value
-        # If no URL path given, assume /
-        if value and not urlparse.urlsplit(value)[2]:
-            value += '/'
-        value = super(URLField, self).clean(value)
-        if value == u'':
-            return value
-        if self.verify_exists:
-            import urllib2
-            headers = {
-                "Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
-                "Accept-Language": "en-us,en;q=0.5",
-                "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
-                "Connection": "close",
-                "User-Agent": self.user_agent,
-            }
-            try:
-                req = urllib2.Request(value, None, headers)
-                u = urllib2.urlopen(req)
-            except ValueError:
-                raise ValidationError(self.error_messages['invalid'])
-            except: # urllib2.URLError, httplib.InvalidURL, etc.
-                raise ValidationError(self.error_messages['invalid_link'])
-        return value
-
-class BooleanField(Field):
-    widget = CheckboxInput
-
-    def clean(self, value):
-        """Returns a Python boolean object."""
-        # Explicitly check for the string 'False', which is what a hidden field
-        # will submit for False. Because bool("True") == True, we don't need to
-        # handle that explicitly.
-        if value == 'False':
-            value = False
-        else:
-            value = bool(value)
-        super(BooleanField, self).clean(value)
-        if not value and self.required:
-            raise ValidationError(self.error_messages['required'])
-        return value
-
-class NullBooleanField(BooleanField):
-    """
-    A field whose valid values are None, True and False. Invalid values are
-    cleaned to None.
-    """
-    widget = NullBooleanSelect
-
-    def clean(self, value):
-        return {True: True, False: False}.get(value, None)
-
-class ChoiceField(Field):
-    widget = Select
-    default_error_messages = {
-        'invalid_choice': _(u'Select a valid choice. %(value)s is not one of the available choices.'),
-    }
-
-    def __init__(self, choices=(), required=True, widget=None, label=None,
-                 initial=None, help_text=None, *args, **kwargs):
-        super(ChoiceField, self).__init__(required, widget, label, initial,
-                                          help_text, *args, **kwargs)
-        self.choices = choices
-
-    def _get_choices(self):
-        return self._choices
-
-    def _set_choices(self, value):
-        # Setting choices also sets the choices on the widget.
-        # choices can be any iterable, but we call list() on it because
-        # it will be consumed more than once.
-        self._choices = self.widget.choices = list(value)
-
-    choices = property(_get_choices, _set_choices)
-
-    def clean(self, value):
-        """
-        Validates that the input is in self.choices.
-        """
-        value = super(ChoiceField, self).clean(value)
-        if value in EMPTY_VALUES:
-            value = u''
-        value = smart_unicode(value)
-        if value == u'':
-            return value
-        if not self.valid_value(value):
-            raise ValidationError(self.error_messages['invalid_choice'] % {'value': value})
-        return value
-
-    def valid_value(self, value):
-        "Check to see if the provided value is a valid choice"
-        for k, v in self.choices:
-            if type(v) in (tuple, list):
-                # This is an optgroup, so look inside the group for options
-                for k2, v2 in v:
-                    if value == smart_unicode(k2):
-                        return True
-            else:
-                if value == smart_unicode(k):
-                    return True
-        return False
-
-class MultipleChoiceField(ChoiceField):
-    hidden_widget = MultipleHiddenInput
-    widget = SelectMultiple
-    default_error_messages = {
-        'invalid_choice': _(u'Select a valid choice. %(value)s is not one of the available choices.'),
-        'invalid_list': _(u'Enter a list of values.'),
-    }
-
-    def clean(self, value):
-        """
-        Validates that the input is a list or tuple.
-        """
-        if self.required and not value:
-            raise ValidationError(self.error_messages['required'])
-        elif not self.required and not value:
-            return []
-        if not isinstance(value, (list, tuple)):
-            raise ValidationError(self.error_messages['invalid_list'])
-        new_value = [smart_unicode(val) for val in value]
-        # Validate that each value in the value list is in self.choices.
-        for val in new_value:
-            if not self.valid_value(val):
-                raise ValidationError(self.error_messages['invalid_choice'] % {'value': val})
-        return new_value
-
-class ComboField(Field):
-    """
-    A Field whose clean() method calls multiple Field clean() methods.
-    """
-    def __init__(self, fields=(), *args, **kwargs):
-        super(ComboField, self).__init__(*args, **kwargs)
-        # Set 'required' to False on the individual fields, because the
-        # required validation will be handled by ComboField, not by those
-        # individual fields.
-        for f in fields:
-            f.required = False
-        self.fields = fields
-
-    def clean(self, value):
-        """
-        Validates the given value against all of self.fields, which is a
-        list of Field instances.
-        """
-        super(ComboField, self).clean(value)
-        for field in self.fields:
-            value = field.clean(value)
-        return value
-
-class MultiValueField(Field):
-    """
-    A Field that aggregates the logic of multiple Fields.
-
-    Its clean() method takes a "decompressed" list of values, which are then
-    cleaned into a single value according to self.fields. Each value in
-    this list is cleaned by the corresponding field -- the first value is
-    cleaned by the first field, the second value is cleaned by the second
-    field, etc. Once all fields are cleaned, the list of clean values is
-    "compressed" into a single value.
-
-    Subclasses should not have to implement clean(). Instead, they must
-    implement compress(), which takes a list of valid values and returns a
-    "compressed" version of those values -- a single value.
-
-    You'll probably want to use this with MultiWidget.
-    """
-    default_error_messages = {
-        'invalid': _(u'Enter a list of values.'),
-    }
-
-    def __init__(self, fields=(), *args, **kwargs):
-        super(MultiValueField, self).__init__(*args, **kwargs)
-        # Set 'required' to False on the individual fields, because the
-        # required validation will be handled by MultiValueField, not by those
-        # individual fields.
-        for f in fields:
-            f.required = False
-        self.fields = fields
-
-    def clean(self, value):
-        """
-        Validates every value in the given list. A value is validated against
-        the corresponding Field in self.fields.
-
-        For example, if this MultiValueField was instantiated with
-        fields=(DateField(), TimeField()), clean() would call
-        DateField.clean(value[0]) and TimeField.clean(value[1]).
-        """
-        clean_data = []
-        errors = ErrorList()
-        if not value or isinstance(value, (list, tuple)):
-            if not value or not [v for v in value if v not in EMPTY_VALUES]:
-                if self.required:
-                    raise ValidationError(self.error_messages['required'])
-                else:
-                    return self.compress([])
-        else:
-            raise ValidationError(self.error_messages['invalid'])
-        for i, field in enumerate(self.fields):
-            try:
-                field_value = value[i]
-            except IndexError:
-                field_value = None
-            if self.required and field_value in EMPTY_VALUES:
-                raise ValidationError(self.error_messages['required'])
-            try:
-                clean_data.append(field.clean(field_value))
-            except ValidationError, e:
-                # Collect all validation errors in a single list, which we'll
-                # raise at the end of clean(), rather than raising a single
-                # exception for the first error we encounter.
-                errors.extend(e.messages)
-        if errors:
-            raise ValidationError(errors)
-        return self.compress(clean_data)
-
-    def compress(self, data_list):
-        """
-        Returns a single value for the given list of values. The values can be
-        assumed to be valid.
-
-        For example, if this MultiValueField was instantiated with
-        fields=(DateField(), TimeField()), this might return a datetime
-        object created by combining the date and time in data_list.
-        """
-        raise NotImplementedError('Subclasses must implement this method.')
-
-class FilePathField(ChoiceField):
-    def __init__(self, path, match=None, recursive=False, required=True,
-                 widget=None, label=None, initial=None, help_text=None,
-                 *args, **kwargs):
-        self.path, self.match, self.recursive = path, match, recursive
-        super(FilePathField, self).__init__(choices=(), required=required,
-            widget=widget, label=label, initial=initial, help_text=help_text,
-            *args, **kwargs)
-        self.choices = []
-        if self.match is not None:
-            self.match_re = re.compile(self.match)
-        if recursive:
-            for root, dirs, files in os.walk(self.path):
-                for f in files:
-                    if self.match is None or self.match_re.search(f):
-                        f = os.path.join(root, f)
-                        self.choices.append((f, f.replace(path, "", 1)))
-        else:
-            try:
-                for f in os.listdir(self.path):
-                    full_file = os.path.join(self.path, f)
-                    if os.path.isfile(full_file) and (self.match is None or self.match_re.search(f)):
-                        self.choices.append((full_file, f))
-            except OSError:
-                pass
-        self.widget.choices = self.choices
-
-class SplitDateTimeField(MultiValueField):
-    default_error_messages = {
-        'invalid_date': _(u'Enter a valid date.'),
-        'invalid_time': _(u'Enter a valid time.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        errors = self.default_error_messages.copy()
-        if 'error_messages' in kwargs:
-            errors.update(kwargs['error_messages'])
-        fields = (
-            DateField(error_messages={'invalid': errors['invalid_date']}),
-            TimeField(error_messages={'invalid': errors['invalid_time']}),
-        )
-        super(SplitDateTimeField, self).__init__(fields, *args, **kwargs)
-
-    def compress(self, data_list):
-        if data_list:
-            # Raise a validation error if time or date is empty
-            # (possible if SplitDateTimeField has required=False).
-            if data_list[0] in EMPTY_VALUES:
-                raise ValidationError(self.error_messages['invalid_date'])
-            if data_list[1] in EMPTY_VALUES:
-                raise ValidationError(self.error_messages['invalid_time'])
-            return datetime.datetime.combine(*data_list)
-        return None
-
-ipv4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$')
-
-class IPAddressField(RegexField):
-    default_error_messages = {
-        'invalid': _(u'Enter a valid IPv4 address.'),
-    }
-
-    def __init__(self, *args, **kwargs):
-        super(IPAddressField, self).__init__(ipv4_re, *args, **kwargs)
diff --git a/webapp/django/forms/forms.py b/webapp/django/forms/forms.py
deleted file mode 100644
index 753ee25..0000000
--- a/webapp/django/forms/forms.py
+++ /dev/null
@@ -1,396 +0,0 @@
-"""
-Form classes
-"""
-
-from copy import deepcopy
-
-from django.utils.datastructures import SortedDict
-from django.utils.html import escape
-from django.utils.encoding import StrAndUnicode, smart_unicode, force_unicode
-from django.utils.safestring import mark_safe
-
-from fields import Field, FileField
-from widgets import Media, media_property, TextInput, Textarea
-from util import flatatt, ErrorDict, ErrorList, ValidationError
-
-__all__ = ('BaseForm', 'Form')
-
-NON_FIELD_ERRORS = '__all__'
-
-def pretty_name(name):
-    "Converts 'first_name' to 'First name'"
-    name = name[0].upper() + name[1:]
-    return name.replace('_', ' ')
-
-def get_declared_fields(bases, attrs, with_base_fields=True):
-    """
-    Create a list of form field instances from the passed in 'attrs', plus any
-    similar fields on the base classes (in 'bases'). This is used by both the
-    Form and ModelForm metclasses.
-
-    If 'with_base_fields' is True, all fields from the bases are used.
-    Otherwise, only fields in the 'declared_fields' attribute on the bases are
-    used. The distinction is useful in ModelForm subclassing.
-    Also integrates any additional media definitions
-    """
-    fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)]
-    fields.sort(lambda x, y: cmp(x[1].creation_counter, y[1].creation_counter))
-
-    # If this class is subclassing another Form, add that Form's fields.
-    # Note that we loop over the bases in *reverse*. This is necessary in
-    # order to preserve the correct order of fields.
-    if with_base_fields:
-        for base in bases[::-1]:
-            if hasattr(base, 'base_fields'):
-                fields = base.base_fields.items() + fields
-    else:
-        for base in bases[::-1]:
-            if hasattr(base, 'declared_fields'):
-                fields = base.declared_fields.items() + fields
-
-    return SortedDict(fields)
-
-class DeclarativeFieldsMetaclass(type):
-    """
-    Metaclass that converts Field attributes to a dictionary called
-    'base_fields', taking into account parent class 'base_fields' as well.
-    """
-    def __new__(cls, name, bases, attrs):
-        attrs['base_fields'] = get_declared_fields(bases, attrs)
-        new_class = super(DeclarativeFieldsMetaclass,
-                     cls).__new__(cls, name, bases, attrs)
-        if 'media' not in attrs:
-            new_class.media = media_property(new_class)
-        return new_class
-
-class BaseForm(StrAndUnicode):
-    # This is the main implementation of all the Form logic. Note that this
-    # class is different than Form. See the comments by the Form class for more
-    # information. Any improvements to the form API should be made to *this*
-    # class, not to the Form class.
-    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
-                 initial=None, error_class=ErrorList, label_suffix=':',
-                 empty_permitted=False):
-        self.is_bound = data is not None or files is not None
-        self.data = data or {}
-        self.files = files or {}
-        self.auto_id = auto_id
-        self.prefix = prefix
-        self.initial = initial or {}
-        self.error_class = error_class
-        self.label_suffix = label_suffix
-        self.empty_permitted = empty_permitted
-        self._errors = None # Stores the errors after clean() has been called.
-        self._changed_data = None
-
-        # The base_fields class attribute is the *class-wide* definition of
-        # fields. Because a particular *instance* of the class might want to
-        # alter self.fields, we create self.fields here by copying base_fields.
-        # Instances should always modify self.fields; they should not modify
-        # self.base_fields.
-        self.fields = deepcopy(self.base_fields)
-
-    def __unicode__(self):
-        return self.as_table()
-
-    def __iter__(self):
-        for name, field in self.fields.items():
-            yield BoundField(self, field, name)
-
-    def __getitem__(self, name):
-        "Returns a BoundField with the given name."
-        try:
-            field = self.fields[name]
-        except KeyError:
-            raise KeyError('Key %r not found in Form' % name)
-        return BoundField(self, field, name)
-
-    def _get_errors(self):
-        "Returns an ErrorDict for the data provided for the form"
-        if self._errors is None:
-            self.full_clean()
-        return self._errors
-    errors = property(_get_errors)
-
-    def is_valid(self):
-        """
-        Returns True if the form has no errors. Otherwise, False. If errors are
-        being ignored, returns False.
-        """
-        return self.is_bound and not bool(self.errors)
-
-    def add_prefix(self, field_name):
-        """
-        Returns the field name with a prefix appended, if this Form has a
-        prefix set.
-
-        Subclasses may wish to override.
-        """
-        return self.prefix and ('%s-%s' % (self.prefix, field_name)) or field_name
-
-    def _html_output(self, normal_row, error_row, row_ender, help_text_html, errors_on_separate_row):
-        "Helper function for outputting HTML. Used by as_table(), as_ul(), as_p()."
-        top_errors = self.non_field_errors() # Errors that should be displayed above all fields.
-        output, hidden_fields = [], []
-        for name, field in self.fields.items():
-            bf = BoundField(self, field, name)
-            bf_errors = self.error_class([escape(error) for error in bf.errors]) # Escape and cache in local variable.
-            if bf.is_hidden:
-                if bf_errors:
-                    top_errors.extend([u'(Hidden field %s) %s' % (name, force_unicode(e)) for e in bf_errors])
-                hidden_fields.append(unicode(bf))
-            else:
-                if errors_on_separate_row and bf_errors:
-                    output.append(error_row % force_unicode(bf_errors))
-                if bf.label:
-                    label = escape(force_unicode(bf.label))
-                    # Only add the suffix if the label does not end in
-                    # punctuation.
-                    if self.label_suffix:
-                        if label[-1] not in ':?.!':
-                            label += self.label_suffix
-                    label = bf.label_tag(label) or ''
-                else:
-                    label = ''
-                if field.help_text:
-                    help_text = help_text_html % force_unicode(field.help_text)
-                else:
-                    help_text = u''
-                output.append(normal_row % {'errors': force_unicode(bf_errors), 'label': force_unicode(label), 'field': unicode(bf), 'help_text': help_text})
-        if top_errors:
-            output.insert(0, error_row % force_unicode(top_errors))
-        if hidden_fields: # Insert any hidden fields in the last row.
-            str_hidden = u''.join(hidden_fields)
-            if output:
-                last_row = output[-1]
-                # Chop off the trailing row_ender (e.g. '</td></tr>') and
-                # insert the hidden fields.
-                output[-1] = last_row[:-len(row_ender)] + str_hidden + row_ender
-            else:
-                # If there aren't any rows in the output, just append the
-                # hidden fields.
-                output.append(str_hidden)
-        return mark_safe(u'\n'.join(output))
-
-    def as_table(self):
-        "Returns this form rendered as HTML <tr>s -- excluding the <table></table>."
-        return self._html_output(u'<tr><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>', u'<tr><td colspan="2">%s</td></tr>', '</td></tr>', u'<br />%s', False)
-
-    def as_ul(self):
-        "Returns this form rendered as HTML <li>s -- excluding the <ul></ul>."
-        return self._html_output(u'<li>%(errors)s%(label)s %(field)s%(help_text)s</li>', u'<li>%s</li>', '</li>', u' %s', False)
-
-    def as_p(self):
-        "Returns this form rendered as HTML <p>s."
-        return self._html_output(u'<p>%(label)s %(field)s%(help_text)s</p>', u'%s', '</p>', u' %s', True)
-
-    def non_field_errors(self):
-        """
-        Returns an ErrorList of errors that aren't associated with a particular
-        field -- i.e., from Form.clean(). Returns an empty ErrorList if there
-        are none.
-        """
-        return self.errors.get(NON_FIELD_ERRORS, self.error_class())
-
-    def full_clean(self):
-        """
-        Cleans all of self.data and populates self._errors and
-        self.cleaned_data.
-        """
-        self._errors = ErrorDict()
-        if not self.is_bound: # Stop further processing.
-            return
-        self.cleaned_data = {}
-        # If the form is permitted to be empty, and none of the form data has
-        # changed from the initial data, short circuit any validation.
-        if self.empty_permitted and not self.has_changed():
-            return
-        for name, field in self.fields.items():
-            # value_from_datadict() gets the data from the data dictionaries.
-            # Each widget type knows how to retrieve its own data, because some
-            # widgets split data over several HTML fields.
-            value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
-            try:
-                if isinstance(field, FileField):
-                    initial = self.initial.get(name, field.initial)
-                    value = field.clean(value, initial)
-                else:
-                    value = field.clean(value)
-                self.cleaned_data[name] = value
-                if hasattr(self, 'clean_%s' % name):
-                    value = getattr(self, 'clean_%s' % name)()
-                    self.cleaned_data[name] = value
-            except ValidationError, e:
-                self._errors[name] = e.messages
-                if name in self.cleaned_data:
-                    del self.cleaned_data[name]
-        try:
-            self.cleaned_data = self.clean()
-        except ValidationError, e:
-            self._errors[NON_FIELD_ERRORS] = e.messages
-        if self._errors:
-            delattr(self, 'cleaned_data')
-
-    def clean(self):
-        """
-        Hook for doing any extra form-wide cleaning after Field.clean() been
-        called on every field. Any ValidationError raised by this method will
-        not be associated with a particular field; it will have a special-case
-        association with the field named '__all__'.
-        """
-        return self.cleaned_data
-
-    def has_changed(self):
-        """
-        Returns True if data differs from initial.
-        """
-        return bool(self.changed_data)
-    
-    def _get_changed_data(self):
-        if self._changed_data is None:
-            self._changed_data = []
-            # XXX: For now we're asking the individual widgets whether or not the
-            # data has changed. It would probably be more efficient to hash the
-            # initial data, store it in a hidden field, and compare a hash of the
-            # submitted data, but we'd need a way to easily get the string value
-            # for a given field. Right now, that logic is embedded in the render
-            # method of each widget.
-            for name, field in self.fields.items():
-                prefixed_name = self.add_prefix(name)
-                data_value = field.widget.value_from_datadict(self.data, self.files, prefixed_name)
-                initial_value = self.initial.get(name, field.initial)
-                if field.widget._has_changed(initial_value, data_value):
-                    self._changed_data.append(name)
-        return self._changed_data
-    changed_data = property(_get_changed_data)
-
-    def _get_media(self):
-        """
-        Provide a description of all media required to render the widgets on this form
-        """
-        media = Media()
-        for field in self.fields.values():
-            media = media + field.widget.media
-        return media
-    media = property(_get_media)
-
-    def is_multipart(self):
-        """
-        Returns True if the form needs to be multipart-encrypted, i.e. it has
-        FileInput. Otherwise, False.
-        """
-        for field in self.fields.values():
-            if field.widget.needs_multipart_form:
-                return True
-        return False
-
-class Form(BaseForm):
-    "A collection of Fields, plus their associated data."
-    # This is a separate class from BaseForm in order to abstract the way
-    # self.fields is specified. This class (Form) is the one that does the
-    # fancy metaclass stuff purely for the semantic sugar -- it allows one
-    # to define a form using declarative syntax.
-    # BaseForm itself has no way of designating self.fields.
-    __metaclass__ = DeclarativeFieldsMetaclass
-
-class BoundField(StrAndUnicode):
-    "A Field plus data"
-    def __init__(self, form, field, name):
-        self.form = form
-        self.field = field
-        self.name = name
-        self.html_name = form.add_prefix(name)
-        if self.field.label is None:
-            self.label = pretty_name(name)
-        else:
-            self.label = self.field.label
-        self.help_text = field.help_text or ''
-
-    def __unicode__(self):
-        """Renders this field as an HTML widget."""
-        return self.as_widget()
-
-    def _errors(self):
-        """
-        Returns an ErrorList for this field. Returns an empty ErrorList
-        if there are none.
-        """
-        return self.form.errors.get(self.name, self.form.error_class())
-    errors = property(_errors)
-
-    def as_widget(self, widget=None, attrs=None):
-        """
-        Renders the field by rendering the passed widget, adding any HTML
-        attributes passed as attrs.  If no widget is specified, then the
-        field's default widget will be used.
-        """
-        if not widget:
-            widget = self.field.widget
-        attrs = attrs or {}
-        auto_id = self.auto_id
-        if auto_id and 'id' not in attrs and 'id' not in widget.attrs:
-            attrs['id'] = auto_id
-        if not self.form.is_bound:
-            data = self.form.initial.get(self.name, self.field.initial)
-            if callable(data):
-                data = data()
-        else:
-            data = self.data
-        return widget.render(self.html_name, data, attrs=attrs)
-
-    def as_text(self, attrs=None):
-        """
-        Returns a string of HTML for representing this as an <input type="text">.
-        """
-        return self.as_widget(TextInput(), attrs)
-
-    def as_textarea(self, attrs=None):
-        "Returns a string of HTML for representing this as a <textarea>."
-        return self.as_widget(Textarea(), attrs)
-
-    def as_hidden(self, attrs=None):
-        """
-        Returns a string of HTML for representing this as an <input type="hidden">.
-        """
-        return self.as_widget(self.field.hidden_widget(), attrs)
-
-    def _data(self):
-        """
-        Returns the data for this BoundField, or None if it wasn't given.
-        """
-        return self.field.widget.value_from_datadict(self.form.data, self.form.files, self.html_name)
-    data = property(_data)
-
-    def label_tag(self, contents=None, attrs=None):
-        """
-        Wraps the given contents in a <label>, if the field has an ID attribute.
-        Does not HTML-escape the contents. If contents aren't given, uses the
-        field's HTML-escaped label.
-
-        If attrs are given, they're used as HTML attributes on the <label> tag.
-        """
-        contents = contents or escape(self.label)
-        widget = self.field.widget
-        id_ = widget.attrs.get('id') or self.auto_id
-        if id_:
-            attrs = attrs and flatatt(attrs) or ''
-            contents = '<label for="%s"%s>%s</label>' % (widget.id_for_label(id_), attrs, contents)
-        return mark_safe(contents)
-
-    def _is_hidden(self):
-        "Returns True if this BoundField's widget is hidden."
-        return self.field.widget.is_hidden
-    is_hidden = property(_is_hidden)
-
-    def _auto_id(self):
-        """
-        Calculates and returns the ID attribute for this BoundField, if the
-        associated Form has specified auto_id. Returns an empty string otherwise.
-        """
-        auto_id = self.form.auto_id
-        if auto_id and '%s' in smart_unicode(auto_id):
-            return smart_unicode(auto_id) % self.html_name
-        elif auto_id:
-            return self.html_name
-        return ''
-    auto_id = property(_auto_id)
diff --git a/webapp/django/forms/formsets.py b/webapp/django/forms/formsets.py
deleted file mode 100644
index 2f13bf5..0000000
--- a/webapp/django/forms/formsets.py
+++ /dev/null
@@ -1,288 +0,0 @@
-from forms import Form
-from django.utils.encoding import StrAndUnicode
-from django.utils.safestring import mark_safe
-from fields import IntegerField, BooleanField
-from widgets import Media, HiddenInput
-from util import ErrorList, ValidationError
-
-__all__ = ('BaseFormSet', 'all_valid')
-
-# special field names
-TOTAL_FORM_COUNT = 'TOTAL_FORMS'
-INITIAL_FORM_COUNT = 'INITIAL_FORMS'
-ORDERING_FIELD_NAME = 'ORDER'
-DELETION_FIELD_NAME = 'DELETE'
-
-class ManagementForm(Form):
-    """
-    ``ManagementForm`` is used to keep track of how many form instances
-    are displayed on the page. If adding new forms via javascript, you should
-    increment the count field of this form as well.
-    """
-    def __init__(self, *args, **kwargs):
-        self.base_fields[TOTAL_FORM_COUNT] = IntegerField(widget=HiddenInput)
-        self.base_fields[INITIAL_FORM_COUNT] = IntegerField(widget=HiddenInput)
-        super(ManagementForm, self).__init__(*args, **kwargs)
-
-class BaseFormSet(StrAndUnicode):
-    """
-    A collection of instances of the same Form class.
-    """
-    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
-                 initial=None, error_class=ErrorList):
-        self.is_bound = data is not None or files is not None
-        self.prefix = prefix or 'form'
-        self.auto_id = auto_id
-        self.data = data
-        self.files = files
-        self.initial = initial
-        self.error_class = error_class
-        self._errors = None
-        self._non_form_errors = None
-        # initialization is different depending on whether we recieved data, initial, or nothing
-        if data or files:
-            self.management_form = ManagementForm(data, auto_id=self.auto_id, prefix=self.prefix)
-            if self.management_form.is_valid():
-                self._total_form_count = self.management_form.cleaned_data[TOTAL_FORM_COUNT]
-                self._initial_form_count = self.management_form.cleaned_data[INITIAL_FORM_COUNT]
-            else:
-                raise ValidationError('ManagementForm data is missing or has been tampered with')
-        else:
-            if initial:
-                self._initial_form_count = len(initial)
-                if self._initial_form_count > self.max_num and self.max_num > 0:
-                    self._initial_form_count = self.max_num
-                self._total_form_count = self._initial_form_count + self.extra
-            else:
-                self._initial_form_count = 0
-                self._total_form_count = self.extra
-            if self._total_form_count > self.max_num and self.max_num > 0:
-                self._total_form_count = self.max_num
-            initial = {TOTAL_FORM_COUNT: self._total_form_count,
-                       INITIAL_FORM_COUNT: self._initial_form_count}
-            self.management_form = ManagementForm(initial=initial, auto_id=self.auto_id, prefix=self.prefix)
-        
-        # construct the forms in the formset
-        self._construct_forms()
-
-    def __unicode__(self):
-        return self.as_table()
-
-    def _construct_forms(self):
-        # instantiate all the forms and put them in self.forms
-        self.forms = []
-        for i in xrange(self._total_form_count):
-            self.forms.append(self._construct_form(i))
-    
-    def _construct_form(self, i, **kwargs):
-        """
-        Instantiates and returns the i-th form instance in a formset.
-        """
-        defaults = {'auto_id': self.auto_id, 'prefix': self.add_prefix(i)}
-        if self.data or self.files:
-            defaults['data'] = self.data
-            defaults['files'] = self.files
-        if self.initial:
-            try:
-                defaults['initial'] = self.initial[i]
-            except IndexError:
-                pass
-        # Allow extra forms to be empty.
-        if i >= self._initial_form_count:
-            defaults['empty_permitted'] = True
-        defaults.update(kwargs)
-        form = self.form(**defaults)
-        self.add_fields(form, i)
-        return form
-
-    def _get_initial_forms(self):
-        """Return a list of all the intial forms in this formset."""
-        return self.forms[:self._initial_form_count]
-    initial_forms = property(_get_initial_forms)
-
-    def _get_extra_forms(self):
-        """Return a list of all the extra forms in this formset."""
-        return self.forms[self._initial_form_count:]
-    extra_forms = property(_get_extra_forms)
-
-    # Maybe this should just go away?
-    def _get_cleaned_data(self):
-        """
-        Returns a list of form.cleaned_data dicts for every form in self.forms.
-        """
-        if not self.is_valid():
-            raise AttributeError("'%s' object has no attribute 'cleaned_data'" % self.__class__.__name__)
-        return [form.cleaned_data for form in self.forms]
-    cleaned_data = property(_get_cleaned_data)
-
-    def _get_deleted_forms(self):
-        """
-        Returns a list of forms that have been marked for deletion. Raises an 
-        AttributeError is deletion is not allowed.
-        """
-        if not self.is_valid() or not self.can_delete:
-            raise AttributeError("'%s' object has no attribute 'deleted_forms'" % self.__class__.__name__)
-        # construct _deleted_form_indexes which is just a list of form indexes
-        # that have had their deletion widget set to True
-        if not hasattr(self, '_deleted_form_indexes'):
-            self._deleted_form_indexes = []
-            for i in range(0, self._total_form_count):
-                form = self.forms[i]
-                # if this is an extra form and hasn't changed, don't consider it
-                if i >= self._initial_form_count and not form.has_changed():
-                    continue
-                if form.cleaned_data[DELETION_FIELD_NAME]:
-                    self._deleted_form_indexes.append(i)
-        return [self.forms[i] for i in self._deleted_form_indexes]
-    deleted_forms = property(_get_deleted_forms)
-
-    def _get_ordered_forms(self):
-        """
-        Returns a list of form in the order specified by the incoming data.
-        Raises an AttributeError is deletion is not allowed.
-        """
-        if not self.is_valid() or not self.can_order:
-            raise AttributeError("'%s' object has no attribute 'ordered_forms'" % self.__class__.__name__)
-        # Construct _ordering, which is a list of (form_index, order_field_value)
-        # tuples. After constructing this list, we'll sort it by order_field_value
-        # so we have a way to get to the form indexes in the order specified
-        # by the form data.
-        if not hasattr(self, '_ordering'):
-            self._ordering = []
-            for i in range(0, self._total_form_count):
-                form = self.forms[i]
-                # if this is an extra form and hasn't changed, don't consider it
-                if i >= self._initial_form_count and not form.has_changed():
-                    continue
-                # don't add data marked for deletion to self.ordered_data
-                if self.can_delete and form.cleaned_data[DELETION_FIELD_NAME]:
-                    continue
-                # A sort function to order things numerically ascending, but
-                # None should be sorted below anything else. Allowing None as
-                # a comparison value makes it so we can leave ordering fields
-                # blamk.
-                def compare_ordering_values(x, y):
-                    if x[1] is None:
-                        return 1
-                    if y[1] is None:
-                        return -1
-                    return x[1] - y[1]
-                self._ordering.append((i, form.cleaned_data[ORDERING_FIELD_NAME]))
-            # After we're done populating self._ordering, sort it.
-            self._ordering.sort(compare_ordering_values)
-        # Return a list of form.cleaned_data dicts in the order spcified by
-        # the form data.
-        return [self.forms[i[0]] for i in self._ordering]
-    ordered_forms = property(_get_ordered_forms)
-
-    def non_form_errors(self):
-        """
-        Returns an ErrorList of errors that aren't associated with a particular
-        form -- i.e., from formset.clean(). Returns an empty ErrorList if there
-        are none.
-        """
-        if self._non_form_errors is not None:
-            return self._non_form_errors
-        return self.error_class()
-
-    def _get_errors(self):
-        """
-        Returns a list of form.errors for every form in self.forms.
-        """
-        if self._errors is None:
-            self.full_clean()
-        return self._errors
-    errors = property(_get_errors)
-
-    def is_valid(self):
-        """
-        Returns True if form.errors is empty for every form in self.forms.
-        """
-        if not self.is_bound:
-            return False
-        # We loop over every form.errors here rather than short circuiting on the
-        # first failure to make sure validation gets triggered for every form.
-        forms_valid = True
-        for errors in self.errors:
-            if bool(errors):
-                forms_valid = False
-        return forms_valid and not bool(self.non_form_errors())
-
-    def full_clean(self):
-        """
-        Cleans all of self.data and populates self._errors.
-        """
-        self._errors = []
-        if not self.is_bound: # Stop further processing.
-            return
-        for i in range(0, self._total_form_count):
-            form = self.forms[i]
-            self._errors.append(form.errors)
-        # Give self.clean() a chance to do cross-form validation.
-        try:
-            self.clean()
-        except ValidationError, e:
-            self._non_form_errors = e.messages
-
-    def clean(self):
-        """
-        Hook for doing any extra formset-wide cleaning after Form.clean() has
-        been called on every form. Any ValidationError raised by this method
-        will not be associated with a particular form; it will be accesible
-        via formset.non_form_errors()
-        """
-        pass
-
-    def add_fields(self, form, index):
-        """A hook for adding extra fields on to each form instance."""
-        if self.can_order:
-            # Only pre-fill the ordering field for initial forms.
-            if index < self._initial_form_count:
-                form.fields[ORDERING_FIELD_NAME] = IntegerField(label='Order', initial=index+1, required=False)
-            else:
-                form.fields[ORDERING_FIELD_NAME] = IntegerField(label='Order', required=False)
-        if self.can_delete:
-            form.fields[DELETION_FIELD_NAME] = BooleanField(label='Delete', required=False)
-
-    def add_prefix(self, index):
-        return '%s-%s' % (self.prefix, index)
-
-    def is_multipart(self):
-        """
-        Returns True if the formset needs to be multipart-encrypted, i.e. it
-        has FileInput. Otherwise, False.
-        """
-        return self.forms[0].is_multipart()
-
-    def _get_media(self):
-        # All the forms on a FormSet are the same, so you only need to
-        # interrogate the first form for media.
-        if self.forms:
-            return self.forms[0].media
-        else:
-            return Media()
-    media = property(_get_media)
-
-    def as_table(self):
-        "Returns this formset rendered as HTML <tr>s -- excluding the <table></table>."
-        # XXX: there is no semantic division between forms here, there
-        # probably should be. It might make sense to render each form as a
-        # table row with each field as a td.
-        forms = u' '.join([form.as_table() for form in self.forms])
-        return mark_safe(u'\n'.join([unicode(self.management_form), forms]))
-
-def formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,
-                    can_delete=False, max_num=0):
-    """Return a FormSet for the given form class."""
-    attrs = {'form': form, 'extra': extra,
-             'can_order': can_order, 'can_delete': can_delete,
-             'max_num': max_num}
-    return type(form.__name__ + 'FormSet', (formset,), attrs)
-
-def all_valid(formsets):
-    """Returns true if every formset in formsets is valid."""
-    valid = True
-    for formset in formsets:
-        if not formset.is_valid():
-            valid = False
-    return valid
diff --git a/webapp/django/forms/models.py b/webapp/django/forms/models.py
deleted file mode 100644
index 677556d..0000000
--- a/webapp/django/forms/models.py
+++ /dev/null
@@ -1,558 +0,0 @@
-"""
-Helper functions for creating Form classes from Django models
-and database field objects.
-"""
-
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_unicode
-from django.utils.datastructures import SortedDict
-
-from util import ValidationError, ErrorList
-from forms import BaseForm, get_declared_fields
-from fields import Field, ChoiceField, IntegerField, EMPTY_VALUES
-from widgets import Select, SelectMultiple, HiddenInput, MultipleHiddenInput
-from widgets import media_property
-from formsets import BaseFormSet, formset_factory, DELETION_FIELD_NAME
-
-__all__ = (
-    'ModelForm', 'BaseModelForm', 'model_to_dict', 'fields_for_model',
-    'save_instance', 'form_for_fields', 'ModelChoiceField',
-    'ModelMultipleChoiceField',
-)
-
-def save_instance(form, instance, fields=None, fail_message='saved',
-                  commit=True):
-    """
-    Saves bound Form ``form``'s cleaned_data into model instance ``instance``.
-
-    If commit=True, then the changes to ``instance`` will be saved to the
-    database. Returns ``instance``.
-    """
-    from django.db import models
-    opts = instance._meta
-    if form.errors:
-        raise ValueError("The %s could not be %s because the data didn't"
-                         " validate." % (opts.object_name, fail_message))
-    cleaned_data = form.cleaned_data
-    for f in opts.fields:
-        if not f.editable or isinstance(f, models.AutoField) \
-                or not f.name in cleaned_data:
-            continue
-        if fields and f.name not in fields:
-            continue
-        f.save_form_data(instance, cleaned_data[f.name])
-    # Wrap up the saving of m2m data as a function.
-    def save_m2m():
-        opts = instance._meta
-        cleaned_data = form.cleaned_data
-        for f in opts.many_to_many:
-            if fields and f.name not in fields:
-                continue
-            if f.name in cleaned_data:
-                f.save_form_data(instance, cleaned_data[f.name])
-    if commit:
-        # If we are committing, save the instance and the m2m data immediately.
-        instance.save()
-        save_m2m()
-    else:
-        # We're not committing. Add a method to the form to allow deferred
-        # saving of m2m data.
-        form.save_m2m = save_m2m
-    return instance
-
-def make_model_save(model, fields, fail_message):
-    """Returns the save() method for a Form."""
-    def save(self, commit=True):
-        return save_instance(self, model(), fields, fail_message, commit)
-    return save
-
-def make_instance_save(instance, fields, fail_message):
-    """Returns the save() method for a Form."""
-    def save(self, commit=True):
-        return save_instance(self, instance, fields, fail_message, commit)
-    return save
-
-def form_for_fields(field_list):
-    """
-    Returns a Form class for the given list of Django database field instances.
-    """
-    fields = SortedDict([(f.name, f.formfield())
-                         for f in field_list if f.editable])
-    return type('FormForFields', (BaseForm,), {'base_fields': fields})
-
-
-# ModelForms #################################################################
-
-def model_to_dict(instance, fields=None, exclude=None):
-    """
-    Returns a dict containing the data in ``instance`` suitable for passing as
-    a Form's ``initial`` keyword argument.
-
-    ``fields`` is an optional list of field names. If provided, only the named
-    fields will be included in the returned dict.
-
-    ``exclude`` is an optional list of field names. If provided, the named
-    fields will be excluded from the returned dict, even if they are listed in
-    the ``fields`` argument.
-    """
-    # avoid a circular import
-    from django.db.models.fields.related import ManyToManyField, OneToOneField
-    opts = instance._meta
-    data = {}
-    for f in opts.fields + opts.many_to_many:
-        if not f.editable:
-            continue
-        if fields and not f.name in fields:
-            continue
-        if exclude and f.name in exclude:
-            continue
-        if isinstance(f, ManyToManyField):
-            # If the object doesn't have a primry key yet, just use an empty
-            # list for its m2m fields. Calling f.value_from_object will raise
-            # an exception.
-            if instance.pk is None:
-                data[f.name] = []
-            else:
-                # MultipleChoiceWidget needs a list of pks, not object instances.
-                data[f.name] = [obj.pk for obj in f.value_from_object(instance)]
-        elif isinstance(f, OneToOneField):
-            data[f.attname] = f.value_from_object(instance)
-        else:
-            data[f.name] = f.value_from_object(instance)
-    return data
-
-def fields_for_model(model, fields=None, exclude=None, formfield_callback=lambda f: f.formfield()):
-    """
-    Returns a ``SortedDict`` containing form fields for the given model.
-
-    ``fields`` is an optional list of field names. If provided, only the named
-    fields will be included in the returned fields.
-
-    ``exclude`` is an optional list of field names. If provided, the named
-    fields will be excluded from the returned fields, even if they are listed
-    in the ``fields`` argument.
-    """
-    # TODO: if fields is provided, it would be nice to return fields in that order
-    field_list = []
-    opts = model._meta
-    for f in opts.fields + opts.many_to_many:
-        if not f.editable:
-            continue
-        if fields and not f.name in fields:
-            continue
-        if exclude and f.name in exclude:
-            continue
-        formfield = formfield_callback(f)
-        if formfield:
-            field_list.append((f.name, formfield))
-    return SortedDict(field_list)
-
-class ModelFormOptions(object):
-    def __init__(self, options=None):
-        self.model = getattr(options, 'model', None)
-        self.fields = getattr(options, 'fields', None)
-        self.exclude = getattr(options, 'exclude', None)
-
-
-class ModelFormMetaclass(type):
-    def __new__(cls, name, bases, attrs):
-        formfield_callback = attrs.pop('formfield_callback',
-                lambda f: f.formfield())
-        try:
-            parents = [b for b in bases if issubclass(b, ModelForm)]
-        except NameError:
-            # We are defining ModelForm itself.
-            parents = None
-        new_class = super(ModelFormMetaclass, cls).__new__(cls, name, bases,
-                attrs)
-        if not parents:
-            return new_class
-
-        if 'media' not in attrs:
-            new_class.media = media_property(new_class)
-        declared_fields = get_declared_fields(bases, attrs, False)
-        opts = new_class._meta = ModelFormOptions(getattr(new_class, 'Meta', None))
-        if opts.model:
-            # If a model is defined, extract form fields from it.
-            fields = fields_for_model(opts.model, opts.fields,
-                                      opts.exclude, formfield_callback)
-            # Override default model fields with any custom declared ones
-            # (plus, include all the other declared fields).
-            fields.update(declared_fields)
-        else:
-            fields = declared_fields
-        new_class.declared_fields = declared_fields
-        new_class.base_fields = fields
-        return new_class
-
-class BaseModelForm(BaseForm):
-    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
-                 initial=None, error_class=ErrorList, label_suffix=':',
-                 empty_permitted=False, instance=None):
-        opts = self._meta
-        if instance is None:
-            # if we didn't get an instance, instantiate a new one
-            self.instance = opts.model()
-            object_data = {}
-        else:
-            self.instance = instance
-            object_data = model_to_dict(instance, opts.fields, opts.exclude)
-        # if initial was provided, it should override the values from instance
-        if initial is not None:
-            object_data.update(initial)
-        super(BaseModelForm, self).__init__(data, files, auto_id, prefix, object_data,
-                                            error_class, label_suffix, empty_permitted)
-
-    def save(self, commit=True):
-        """
-        Saves this ``form``'s cleaned_data into model instance
-        ``self.instance``.
-
-        If commit=True, then the changes to ``instance`` will be saved to the
-        database. Returns ``instance``.
-        """
-        if self.instance.pk is None:
-            fail_message = 'created'
-        else:
-            fail_message = 'changed'
-        return save_instance(self, self.instance, self._meta.fields, fail_message, commit)
-
-class ModelForm(BaseModelForm):
-    __metaclass__ = ModelFormMetaclass
-
-def modelform_factory(model, form=ModelForm, fields=None, exclude=None,
-                       formfield_callback=lambda f: f.formfield()):
-    # HACK: we should be able to construct a ModelForm without creating
-    # and passing in a temporary inner class
-    class Meta:
-        pass
-    setattr(Meta, 'model', model)
-    setattr(Meta, 'fields', fields)
-    setattr(Meta, 'exclude', exclude)
-    class_name = model.__name__ + 'Form'
-    return ModelFormMetaclass(class_name, (form,), {'Meta': Meta,
-                              'formfield_callback': formfield_callback})
-
-
-# ModelFormSets ##############################################################
-
-class BaseModelFormSet(BaseFormSet):
-    """
-    A ``FormSet`` for editing a queryset and/or adding new objects to it.
-    """
-    model = None
-
-    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
-                 queryset=None, **kwargs):
-        self.queryset = queryset
-        defaults = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix}
-        if self.max_num > 0:
-            qs = self.get_queryset()[:self.max_num]
-        else:
-            qs = self.get_queryset()
-        defaults['initial'] = [model_to_dict(obj) for obj in qs]
-        defaults.update(kwargs)
-        super(BaseModelFormSet, self).__init__(**defaults)
-
-    def get_queryset(self):
-        if self.queryset is not None:
-            return self.queryset
-        return self.model._default_manager.get_query_set()
-
-    def save_new(self, form, commit=True):
-        """Saves and returns a new model instance for the given form."""
-        return save_instance(form, self.model(), commit=commit)
-
-    def save_existing(self, form, instance, commit=True):
-        """Saves and returns an existing model instance for the given form."""
-        return save_instance(form, instance, commit=commit)
-
-    def save(self, commit=True):
-        """Saves model instances for every form, adding and changing instances
-        as necessary, and returns the list of instances.
-        """
-        if not commit:
-            self.saved_forms = []
-            def save_m2m():
-                for form in self.saved_forms:
-                    form.save_m2m()
-            self.save_m2m = save_m2m
-        return self.save_existing_objects(commit) + self.save_new_objects(commit)
-
-    def save_existing_objects(self, commit=True):
-        self.changed_objects = []
-        self.deleted_objects = []
-        if not self.get_queryset():
-            return []
-
-        # Put the objects from self.get_queryset into a dict so they are easy to lookup by pk
-        existing_objects = {}
-        for obj in self.get_queryset():
-            existing_objects[obj.pk] = obj
-        saved_instances = []
-        for form in self.initial_forms:
-            obj = existing_objects[form.cleaned_data[self.model._meta.pk.attname]]
-            if self.can_delete and form.cleaned_data[DELETION_FIELD_NAME]:
-                self.deleted_objects.append(obj)
-                obj.delete()
-            else:
-                if form.changed_data:
-                    self.changed_objects.append((obj, form.changed_data))
-                    saved_instances.append(self.save_existing(form, obj, commit=commit))
-                    if not commit:
-                        self.saved_forms.append(form)
-        return saved_instances
-
-    def save_new_objects(self, commit=True):
-        self.new_objects = []
-        for form in self.extra_forms:
-            if not form.has_changed():
-                continue
-            # If someone has marked an add form for deletion, don't save the
-            # object.
-            if self.can_delete and form.cleaned_data[DELETION_FIELD_NAME]:
-                continue
-            self.new_objects.append(self.save_new(form, commit=commit))
-            if not commit:
-                self.saved_forms.append(form)
-        return self.new_objects
-
-    def add_fields(self, form, index):
-        """Add a hidden field for the object's primary key."""
-        if self.model._meta.pk.auto_created:
-            self._pk_field_name = self.model._meta.pk.attname
-            form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput)
-        super(BaseModelFormSet, self).add_fields(form, index)
-
-def modelformset_factory(model, form=ModelForm, formfield_callback=lambda f: f.formfield(),
-                         formset=BaseModelFormSet,
-                         extra=1, can_delete=False, can_order=False,
-                         max_num=0, fields=None, exclude=None):
-    """
-    Returns a FormSet class for the given Django model class.
-    """
-    form = modelform_factory(model, form=form, fields=fields, exclude=exclude,
-                             formfield_callback=formfield_callback)
-    FormSet = formset_factory(form, formset, extra=extra, max_num=max_num,
-                              can_order=can_order, can_delete=can_delete)
-    FormSet.model = model
-    return FormSet
-
-
-# InlineFormSets #############################################################
-
-class BaseInlineFormSet(BaseModelFormSet):
-    """A formset for child objects related to a parent."""
-    def __init__(self, data=None, files=None, instance=None,
-                 save_as_new=False, prefix=None):
-        from django.db.models.fields.related import RelatedObject
-        self.instance = instance
-        self.save_as_new = save_as_new
-        # is there a better way to get the object descriptor?
-        self.rel_name = RelatedObject(self.fk.rel.to, self.model, self.fk).get_accessor_name()
-        super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix or self.rel_name)
-
-    def _construct_forms(self):
-        if self.save_as_new:
-            self._total_form_count = self._initial_form_count
-            self._initial_form_count = 0
-        super(BaseInlineFormSet, self)._construct_forms()
-
-    def get_queryset(self):
-        """
-        Returns this FormSet's queryset, but restricted to children of
-        self.instance
-        """
-        kwargs = {self.fk.name: self.instance}
-        return self.model._default_manager.filter(**kwargs)
-
-    def save_new(self, form, commit=True):
-        kwargs = {self.fk.get_attname(): self.instance.pk}
-        new_obj = self.model(**kwargs)
-        return save_instance(form, new_obj, commit=commit)
-
-def _get_foreign_key(parent_model, model, fk_name=None):
-    """
-    Finds and returns the ForeignKey from model to parent if there is one.
-    If fk_name is provided, assume it is the name of the ForeignKey field.
-    """
-    # avoid circular import
-    from django.db.models import ForeignKey
-    opts = model._meta
-    if fk_name:
-        fks_to_parent = [f for f in opts.fields if f.name == fk_name]
-        if len(fks_to_parent) == 1:
-            fk = fks_to_parent[0]
-            if not isinstance(fk, ForeignKey) or \
-                    (fk.rel.to != parent_model and
-                     fk.rel.to not in parent_model._meta.parents.keys()):
-                raise Exception("fk_name '%s' is not a ForeignKey to %s" % (fk_name, parent_model))
-        elif len(fks_to_parent) == 0:
-            raise Exception("%s has no field named '%s'" % (model, fk_name))
-    else:
-        # Try to discover what the ForeignKey from model to parent_model is
-        fks_to_parent = [
-            f for f in opts.fields
-            if isinstance(f, ForeignKey)
-            and (f.rel.to == parent_model
-                or f.rel.to in parent_model._meta.parents.keys())
-        ]
-        if len(fks_to_parent) == 1:
-            fk = fks_to_parent[0]
-        elif len(fks_to_parent) == 0:
-            raise Exception("%s has no ForeignKey to %s" % (model, parent_model))
-        else:
-            raise Exception("%s has more than 1 ForeignKey to %s" % (model, parent_model))
-    return fk
-
-
-def inlineformset_factory(parent_model, model, form=ModelForm,
-                          formset=BaseInlineFormSet, fk_name=None,
-                          fields=None, exclude=None,
-                          extra=3, can_order=False, can_delete=True, max_num=0,
-                          formfield_callback=lambda f: f.formfield()):
-    """
-    Returns an ``InlineFormSet`` for the given kwargs.
-
-    You must provide ``fk_name`` if ``model`` has more than one ``ForeignKey``
-    to ``parent_model``.
-    """
-    fk = _get_foreign_key(parent_model, model, fk_name=fk_name)
-    # let the formset handle object deletion by default
-
-    if exclude is not None:
-        exclude.append(fk.name)
-    else:
-        exclude = [fk.name]
-    FormSet = modelformset_factory(model, form=form,
-                                    formfield_callback=formfield_callback,
-                                    formset=formset,
-                                    extra=extra, can_delete=can_delete, can_order=can_order,
-                                    fields=fields, exclude=exclude, max_num=max_num)
-    FormSet.fk = fk
-    return FormSet
-
-
-# Fields #####################################################################
-
-class ModelChoiceIterator(object):
-    def __init__(self, field):
-        self.field = field
-        self.queryset = field.queryset
-
-    def __iter__(self):
-        if self.field.empty_label is not None:
-            yield (u"", self.field.empty_label)
-        if self.field.cache_choices:
-            if self.field.choice_cache is None:
-                self.field.choice_cache = [
-                    (obj.pk, self.field.label_from_instance(obj))
-                    for obj in self.queryset.all()
-                ]
-            for choice in self.field.choice_cache:
-                yield choice
-        else:
-            for obj in self.queryset.all():
-                yield (obj.pk, self.field.label_from_instance(obj))
-
-class ModelChoiceField(ChoiceField):
-    """A ChoiceField whose choices are a model QuerySet."""
-    # This class is a subclass of ChoiceField for purity, but it doesn't
-    # actually use any of ChoiceField's implementation.
-    default_error_messages = {
-        'invalid_choice': _(u'Select a valid choice. That choice is not one of'
-                            u' the available choices.'),
-    }
-
-    def __init__(self, queryset, empty_label=u"---------", cache_choices=False,
-                 required=True, widget=None, label=None, initial=None,
-                 help_text=None, *args, **kwargs):
-        self.empty_label = empty_label
-        self.cache_choices = cache_choices
-
-        # Call Field instead of ChoiceField __init__() because we don't need
-        # ChoiceField.__init__().
-        Field.__init__(self, required, widget, label, initial, help_text,
-                       *args, **kwargs)
-        self.queryset = queryset
-        self.choice_cache = None
-
-    def _get_queryset(self):
-        return self._queryset
-
-    def _set_queryset(self, queryset):
-        self._queryset = queryset
-        self.widget.choices = self.choices
-
-    queryset = property(_get_queryset, _set_queryset)
-
-    # this method will be used to create object labels by the QuerySetIterator.
-    # Override it to customize the label.
-    def label_from_instance(self, obj):
-        """
-        This method is used to convert objects into strings; it's used to
-        generate the labels for the choices presented by this object. Subclasses
-        can override this method to customize the display of the choices.
-        """
-        return smart_unicode(obj)
-
-    def _get_choices(self):
-        # If self._choices is set, then somebody must have manually set
-        # the property self.choices. In this case, just return self._choices.
-        if hasattr(self, '_choices'):
-            return self._choices
-
-        # Otherwise, execute the QuerySet in self.queryset to determine the
-        # choices dynamically. Return a fresh QuerySetIterator that has not been
-        # consumed. Note that we're instantiating a new QuerySetIterator *each*
-        # time _get_choices() is called (and, thus, each time self.choices is
-        # accessed) so that we can ensure the QuerySet has not been consumed. This
-        # construct might look complicated but it allows for lazy evaluation of
-        # the queryset.
-        return ModelChoiceIterator(self)
-
-    choices = property(_get_choices, ChoiceField._set_choices)
-
-    def clean(self, value):
-        Field.clean(self, value)
-        if value in EMPTY_VALUES:
-            return None
-        try:
-            value = self.queryset.get(pk=value)
-        except self.queryset.model.DoesNotExist:
-            raise ValidationError(self.error_messages['invalid_choice'])
-        return value
-
-class ModelMultipleChoiceField(ModelChoiceField):
-    """A MultipleChoiceField whose choices are a model QuerySet."""
-    widget = SelectMultiple
-    hidden_widget = MultipleHiddenInput
-    default_error_messages = {
-        'list': _(u'Enter a list of values.'),
-        'invalid_choice': _(u'Select a valid choice. %s is not one of the'
-                            u' available choices.'),
-    }
-
-    def __init__(self, queryset, cache_choices=False, required=True,
-                 widget=None, label=None, initial=None,
-                 help_text=None, *args, **kwargs):
-        super(ModelMultipleChoiceField, self).__init__(queryset, None,
-            cache_choices, required, widget, label, initial, help_text,
-            *args, **kwargs)
-
-    def clean(self, value):
-        if self.required and not value:
-            raise ValidationError(self.error_messages['required'])
-        elif not self.required and not value:
-            return []
-        if not isinstance(value, (list, tuple)):
-            raise ValidationError(self.error_messages['list'])
-        final_values = []
-        for val in value:
-            try:
-                obj = self.queryset.get(pk=val)
-            except self.queryset.model.DoesNotExist:
-                raise ValidationError(self.error_messages['invalid_choice'] % val)
-            else:
-                final_values.append(obj)
-        return final_values
diff --git a/webapp/django/forms/util.py b/webapp/django/forms/util.py
deleted file mode 100644
index 3d80ad2..0000000
--- a/webapp/django/forms/util.py
+++ /dev/null
@@ -1,68 +0,0 @@
-from django.utils.html import escape
-from django.utils.encoding import smart_unicode, StrAndUnicode, force_unicode
-from django.utils.safestring import mark_safe
-
-def flatatt(attrs):
-    """
-    Convert a dictionary of attributes to a single string.
-    The returned string will contain a leading space followed by key="value",
-    XML-style pairs.  It is assumed that the keys do not need to be XML-escaped.
-    If the passed dictionary is empty, then return an empty string.
-    """
-    return u''.join([u' %s="%s"' % (k, escape(v)) for k, v in attrs.items()])
-
-class ErrorDict(dict, StrAndUnicode):
-    """
-    A collection of errors that knows how to display itself in various formats.
-
-    The dictionary keys are the field names, and the values are the errors.
-    """
-    def __unicode__(self):
-        return self.as_ul()
-
-    def as_ul(self):
-        if not self: return u''
-        return mark_safe(u'<ul class="errorlist">%s</ul>'
-                % ''.join([u'<li>%s%s</li>' % (k, force_unicode(v))
-                    for k, v in self.items()]))
-
-    def as_text(self):
-        return u'\n'.join([u'* %s\n%s' % (k, u'\n'.join([u'  * %s' % force_unicode(i) for i in v])) for k, v in self.items()])
-
-class ErrorList(list, StrAndUnicode):
-    """
-    A collection of errors that knows how to display itself in various formats.
-    """
-    def __unicode__(self):
-        return self.as_ul()
-
-    def as_ul(self):
-        if not self: return u''
-        return mark_safe(u'<ul class="errorlist">%s</ul>'
-                % ''.join([u'<li>%s</li>' % force_unicode(e) for e in self]))
-
-    def as_text(self):
-        if not self: return u''
-        return u'\n'.join([u'* %s' % force_unicode(e) for e in self])
-
-    def __repr__(self):
-        return repr([force_unicode(e) for e in self])
-
-class ValidationError(Exception):
-    def __init__(self, message):
-        """
-        ValidationError can be passed any object that can be printed (usually
-        a string) or a list of objects.
-        """
-        if isinstance(message, list):
-            self.messages = ErrorList([smart_unicode(msg) for msg in message])
-        else:
-            message = smart_unicode(message)
-            self.messages = ErrorList([message])
-
-    def __str__(self):
-        # This is needed because, without a __str__(), printing an exception
-        # instance would result in this:
-        # AttributeError: ValidationError instance has no attribute 'args'
-        # See http://www.python.org/doc/current/tut/node10.html#handling
-        return repr(self.messages)
diff --git a/webapp/django/forms/widgets.py b/webapp/django/forms/widgets.py
deleted file mode 100644
index 2e01634..0000000
--- a/webapp/django/forms/widgets.py
+++ /dev/null
@@ -1,663 +0,0 @@
-"""
-HTML Widget classes
-"""
-
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-import copy
-from itertools import chain
-from django.conf import settings
-from django.utils.datastructures import MultiValueDict, MergeDict
-from django.utils.html import escape, conditional_escape
-from django.utils.translation import ugettext
-from django.utils.encoding import StrAndUnicode, force_unicode
-from django.utils.safestring import mark_safe
-from django.utils import datetime_safe
-from util import flatatt
-from urlparse import urljoin
-
-__all__ = (
-    'Media', 'MediaDefiningClass', 'Widget', 'TextInput', 'PasswordInput',
-    'HiddenInput', 'MultipleHiddenInput',
-    'FileInput', 'DateTimeInput', 'TimeInput', 'Textarea', 'CheckboxInput',
-    'Select', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect',
-    'CheckboxSelectMultiple', 'MultiWidget', 'SplitDateTimeWidget',
-)
-
-MEDIA_TYPES = ('css','js')
-
-class Media(StrAndUnicode):
-    def __init__(self, media=None, **kwargs):
-        if media:
-            media_attrs = media.__dict__
-        else:
-            media_attrs = kwargs
-
-        self._css = {}
-        self._js = []
-
-        for name in MEDIA_TYPES:
-            getattr(self, 'add_' + name)(media_attrs.get(name, None))
-
-        # Any leftover attributes must be invalid.
-        # if media_attrs != {}:
-        #     raise TypeError, "'class Media' has invalid attribute(s): %s" % ','.join(media_attrs.keys())
-
-    def __unicode__(self):
-        return self.render()
-
-    def render(self):
-        return mark_safe(u'\n'.join(chain(*[getattr(self, 'render_' + name)() for name in MEDIA_TYPES])))
-
-    def render_js(self):
-        return [u'<script type="text/javascript" src="%s"></script>' % self.absolute_path(path) for path in self._js]
-
-    def render_css(self):
-        # To keep rendering order consistent, we can't just iterate over items().
-        # We need to sort the keys, and iterate over the sorted list.
-        media = self._css.keys()
-        media.sort()
-        return chain(*[
-            [u'<link href="%s" type="text/css" media="%s" rel="stylesheet" />' % (self.absolute_path(path), medium)
-                    for path in self._css[medium]]
-                for medium in media])
-
-    def absolute_path(self, path):
-        if path.startswith(u'http://') or path.startswith(u'https://') or path.startswith(u'/'):
-            return path
-        return urljoin(settings.MEDIA_URL,path)
-
-    def __getitem__(self, name):
-        "Returns a Media object that only contains media of the given type"
-        if name in MEDIA_TYPES:
-            return Media(**{name: getattr(self, '_' + name)})
-        raise KeyError('Unknown media type "%s"' % name)
-
-    def add_js(self, data):
-        if data:
-            self._js.extend([path for path in data if path not in self._js])
-
-    def add_css(self, data):
-        if data:
-            for medium, paths in data.items():
-                self._css.setdefault(medium, []).extend([path for path in paths if path not in self._css[medium]])
-
-    def __add__(self, other):
-        combined = Media()
-        for name in MEDIA_TYPES:
-            getattr(combined, 'add_' + name)(getattr(self, '_' + name, None))
-            getattr(combined, 'add_' + name)(getattr(other, '_' + name, None))
-        return combined
-
-def media_property(cls):
-    def _media(self):
-        # Get the media property of the superclass, if it exists
-        if hasattr(super(cls, self), 'media'):
-            base = super(cls, self).media
-        else:
-            base = Media()
-
-        # Get the media definition for this class
-        definition = getattr(cls, 'Media', None)
-        if definition:
-            extend = getattr(definition, 'extend', True)
-            if extend:
-                if extend == True:
-                    m = base
-                else:
-                    m = Media()
-                    for medium in extend:
-                        m = m + base[medium]
-                return m + Media(definition)
-            else:
-                return Media(definition)
-        else:
-            return base
-    return property(_media)
-
-class MediaDefiningClass(type):
-    "Metaclass for classes that can have media definitions"
-    def __new__(cls, name, bases, attrs):
-        new_class = super(MediaDefiningClass, cls).__new__(cls, name, bases,
-                                                           attrs)
-        if 'media' not in attrs:
-            new_class.media = media_property(new_class)
-        return new_class
-
-class Widget(object):
-    __metaclass__ = MediaDefiningClass
-    is_hidden = False          # Determines whether this corresponds to an <input type="hidden">.
-    needs_multipart_form = False # Determines does this widget need multipart-encrypted form
-
-    def __init__(self, attrs=None):
-        if attrs is not None:
-            self.attrs = attrs.copy()
-        else:
-            self.attrs = {}
-
-    def __deepcopy__(self, memo):
-        obj = copy.copy(self)
-        obj.attrs = self.attrs.copy()
-        memo[id(self)] = obj
-        return obj
-
-    def render(self, name, value, attrs=None):
-        """
-        Returns this Widget rendered as HTML, as a Unicode string.
-
-        The 'value' given is not guaranteed to be valid input, so subclass
-        implementations should program defensively.
-        """
-        raise NotImplementedError
-
-    def build_attrs(self, extra_attrs=None, **kwargs):
-        "Helper function for building an attribute dictionary."
-        attrs = dict(self.attrs, **kwargs)
-        if extra_attrs:
-            attrs.update(extra_attrs)
-        return attrs
-
-    def value_from_datadict(self, data, files, name):
-        """
-        Given a dictionary of data and this widget's name, returns the value
-        of this widget. Returns None if it's not provided.
-        """
-        return data.get(name, None)
-
-    def _has_changed(self, initial, data):
-        """
-        Return True if data differs from initial.
-        """
-        # For purposes of seeing whether something has changed, None is
-        # the same as an empty string, if the data or inital value we get
-        # is None, replace it w/ u''.
-        if data is None:
-            data_value = u''
-        else:
-            data_value = data
-        if initial is None:
-            initial_value = u''
-        else:
-            initial_value = initial
-        if force_unicode(initial_value) != force_unicode(data_value):
-            return True
-        return False
-
-    def id_for_label(self, id_):
-        """
-        Returns the HTML ID attribute of this Widget for use by a <label>,
-        given the ID of the field. Returns None if no ID is available.
-
-        This hook is necessary because some widgets have multiple HTML
-        elements and, thus, multiple IDs. In that case, this method should
-        return an ID value that corresponds to the first ID in the widget's
-        tags.
-        """
-        return id_
-    id_for_label = classmethod(id_for_label)
-
-class Input(Widget):
-    """
-    Base class for all <input> widgets (except type='checkbox' and
-    type='radio', which are special).
-    """
-    input_type = None # Subclasses must define this.
-
-    def render(self, name, value, attrs=None):
-        if value is None: value = ''
-        final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
-        if value != '':
-            # Only add the 'value' attribute if a value is non-empty.
-            final_attrs['value'] = force_unicode(value)
-        return mark_safe(u'<input%s />' % flatatt(final_attrs))
-
-class TextInput(Input):
-    input_type = 'text'
-
-class PasswordInput(Input):
-    input_type = 'password'
-
-    def __init__(self, attrs=None, render_value=True):
-        super(PasswordInput, self).__init__(attrs)
-        self.render_value = render_value
-
-    def render(self, name, value, attrs=None):
-        if not self.render_value: value=None
-        return super(PasswordInput, self).render(name, value, attrs)
-
-class HiddenInput(Input):
-    input_type = 'hidden'
-    is_hidden = True
-
-class MultipleHiddenInput(HiddenInput):
-    """
-    A widget that handles <input type="hidden"> for fields that have a list
-    of values.
-    """
-    def __init__(self, attrs=None, choices=()):
-        super(MultipleHiddenInput, self).__init__(attrs)
-        # choices can be any iterable
-        self.choices = choices
-
-    def render(self, name, value, attrs=None, choices=()):
-        if value is None: value = []
-        final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
-        return mark_safe(u'\n'.join([(u'<input%s />' %
-            flatatt(dict(value=force_unicode(v), **final_attrs)))
-            for v in value]))
-
-    def value_from_datadict(self, data, files, name):
-        if isinstance(data, (MultiValueDict, MergeDict)):
-            return data.getlist(name)
-        return data.get(name, None)
-
-class FileInput(Input):
-    input_type = 'file'
-    needs_multipart_form = True
-
-    def render(self, name, value, attrs=None):
-        return super(FileInput, self).render(name, None, attrs=attrs)
-
-    def value_from_datadict(self, data, files, name):
-        "File widgets take data from FILES, not POST"
-        return files.get(name, None)
-
-    def _has_changed(self, initial, data):
-        if data is None:
-            return False
-        return True
-
-class Textarea(Widget):
-    def __init__(self, attrs=None):
-        # The 'rows' and 'cols' attributes are required for HTML correctness.
-        self.attrs = {'cols': '40', 'rows': '10'}
-        if attrs:
-            self.attrs.update(attrs)
-
-    def render(self, name, value, attrs=None):
-        if value is None: value = ''
-        value = force_unicode(value)
-        final_attrs = self.build_attrs(attrs, name=name)
-        return mark_safe(u'<textarea%s>%s</textarea>' % (flatatt(final_attrs),
-                conditional_escape(force_unicode(value))))
-
-class DateTimeInput(Input):
-    input_type = 'text'
-    format = '%Y-%m-%d %H:%M:%S'     # '2006-10-25 14:30:59'
-
-    def __init__(self, attrs=None, format=None):
-        super(DateTimeInput, self).__init__(attrs)
-        if format:
-            self.format = format
-
-    def render(self, name, value, attrs=None):
-        if value is None:
-            value = ''
-        elif hasattr(value, 'strftime'):
-            value = datetime_safe.new_datetime(value)
-            value = value.strftime(self.format)
-        return super(DateTimeInput, self).render(name, value, attrs)
-
-class TimeInput(Input):
-    input_type = 'text'
-
-    def render(self, name, value, attrs=None):
-        if value is None:
-            value = ''
-        elif hasattr(value, 'replace'):
-            value = value.replace(microsecond=0)
-        return super(TimeInput, self).render(name, value, attrs)
-
-class CheckboxInput(Widget):
-    def __init__(self, attrs=None, check_test=bool):
-        super(CheckboxInput, self).__init__(attrs)
-        # check_test is a callable that takes a value and returns True
-        # if the checkbox should be checked for that value.
-        self.check_test = check_test
-
-    def render(self, name, value, attrs=None):
-        final_attrs = self.build_attrs(attrs, type='checkbox', name=name)
-        try:
-            result = self.check_test(value)
-        except: # Silently catch exceptions
-            result = False
-        if result:
-            final_attrs['checked'] = 'checked'
-        if value not in ('', True, False, None):
-            # Only add the 'value' attribute if a value is non-empty.
-            final_attrs['value'] = force_unicode(value)
-        return mark_safe(u'<input%s />' % flatatt(final_attrs))
-
-    def value_from_datadict(self, data, files, name):
-        if name not in data:
-            # A missing value means False because HTML form submission does not
-            # send results for unselected checkboxes.
-            return False
-        return super(CheckboxInput, self).value_from_datadict(data, files, name)
-
-    def _has_changed(self, initial, data):
-        # Sometimes data or initial could be None or u'' which should be the
-        # same thing as False.
-        return bool(initial) != bool(data)
-
-class Select(Widget):
-    def __init__(self, attrs=None, choices=()):
-        super(Select, self).__init__(attrs)
-        # choices can be any iterable, but we may need to render this widget
-        # multiple times. Thus, collapse it into a list so it can be consumed
-        # more than once.
-        self.choices = list(choices)
-
-    def render(self, name, value, attrs=None, choices=()):
-        if value is None: value = ''
-        final_attrs = self.build_attrs(attrs, name=name)
-        output = [u'<select%s>' % flatatt(final_attrs)]
-        options = self.render_options(choices, [value])
-        if options:
-            output.append(options)
-        output.append('</select>')
-        return mark_safe(u'\n'.join(output))
-
-    def render_options(self, choices, selected_choices):
-        def render_option(option_value, option_label):
-            option_value = force_unicode(option_value)
-            selected_html = (option_value in selected_choices) and u' selected="selected"' or ''
-            return u'<option value="%s"%s>%s</option>' % (
-                escape(option_value), selected_html,
-                conditional_escape(force_unicode(option_label)))
-        # Normalize to strings.
-        selected_choices = set([force_unicode(v) for v in selected_choices])
-        output = []
-        for option_value, option_label in chain(self.choices, choices):
-            if isinstance(option_label, (list, tuple)):
-                output.append(u'<optgroup label="%s">' % escape(force_unicode(option_value)))
-                for option in option_label:
-                    output.append(render_option(*option))
-                output.append(u'</optgroup>')
-            else:
-                output.append(render_option(option_value, option_label))
-        return u'\n'.join(output)
-
-class NullBooleanSelect(Select):
-    """
-    A Select Widget intended to be used with NullBooleanField.
-    """
-    def __init__(self, attrs=None):
-        choices = ((u'1', ugettext('Unknown')), (u'2', ugettext('Yes')), (u'3', ugettext('No')))
-        super(NullBooleanSelect, self).__init__(attrs, choices)
-
-    def render(self, name, value, attrs=None, choices=()):
-        try:
-            value = {True: u'2', False: u'3', u'2': u'2', u'3': u'3'}[value]
-        except KeyError:
-            value = u'1'
-        return super(NullBooleanSelect, self).render(name, value, attrs, choices)
-
-    def value_from_datadict(self, data, files, name):
-        value = data.get(name, None)
-        return {u'2': True, u'3': False, True: True, False: False}.get(value, None)
-
-    def _has_changed(self, initial, data):
-        # Sometimes data or initial could be None or u'' which should be the
-        # same thing as False.
-        return bool(initial) != bool(data)
-
-class SelectMultiple(Select):
-    def render(self, name, value, attrs=None, choices=()):
-        if value is None: value = []
-        final_attrs = self.build_attrs(attrs, name=name)
-        output = [u'<select multiple="multiple"%s>' % flatatt(final_attrs)]
-        options = self.render_options(choices, value)
-        if options:
-            output.append(options)
-        output.append('</select>')
-        return mark_safe(u'\n'.join(output))
-
-    def value_from_datadict(self, data, files, name):
-        if isinstance(data, (MultiValueDict, MergeDict)):
-            return data.getlist(name)
-        return data.get(name, None)
-
-    def _has_changed(self, initial, data):
-        if initial is None:
-            initial = []
-        if data is None:
-            data = []
-        if len(initial) != len(data):
-            return True
-        for value1, value2 in zip(initial, data):
-            if force_unicode(value1) != force_unicode(value2):
-                return True
-        return False
-
-class RadioInput(StrAndUnicode):
-    """
-    An object used by RadioFieldRenderer that represents a single
-    <input type='radio'>.
-    """
-
-    def __init__(self, name, value, attrs, choice, index):
-        self.name, self.value = name, value
-        self.attrs = attrs
-        self.choice_value = force_unicode(choice[0])
-        self.choice_label = force_unicode(choice[1])
-        self.index = index
-
-    def __unicode__(self):
-        if 'id' in self.attrs:
-            label_for = ' for="%s_%s"' % (self.attrs['id'], self.index)
-        else:
-            label_for = ''
-        choice_label = conditional_escape(force_unicode(self.choice_label))
-        return mark_safe(u'<label%s>%s %s</label>' % (label_for, self.tag(), choice_label))
-
-    def is_checked(self):
-        return self.value == self.choice_value
-
-    def tag(self):
-        if 'id' in self.attrs:
-            self.attrs['id'] = '%s_%s' % (self.attrs['id'], self.index)
-        final_attrs = dict(self.attrs, type='radio', name=self.name, value=self.choice_value)
-        if self.is_checked():
-            final_attrs['checked'] = 'checked'
-        return mark_safe(u'<input%s />' % flatatt(final_attrs))
-
-class RadioFieldRenderer(StrAndUnicode):
-    """
-    An object used by RadioSelect to enable customization of radio widgets.
-    """
-
-    def __init__(self, name, value, attrs, choices):
-        self.name, self.value, self.attrs = name, value, attrs
-        self.choices = choices
-
-    def __iter__(self):
-        for i, choice in enumerate(self.choices):
-            yield RadioInput(self.name, self.value, self.attrs.copy(), choice, i)
-
-    def __getitem__(self, idx):
-        choice = self.choices[idx] # Let the IndexError propogate
-        return RadioInput(self.name, self.value, self.attrs.copy(), choice, idx)
-
-    def __unicode__(self):
-        return self.render()
-
-    def render(self):
-        """Outputs a <ul> for this set of radio fields."""
-        return mark_safe(u'<ul>\n%s\n</ul>' % u'\n'.join([u'<li>%s</li>'
-                % force_unicode(w) for w in self]))
-
-class RadioSelect(Select):
-    renderer = RadioFieldRenderer
-
-    def __init__(self, *args, **kwargs):
-        # Override the default renderer if we were passed one.
-        renderer = kwargs.pop('renderer', None)
-        if renderer:
-            self.renderer = renderer
-        super(RadioSelect, self).__init__(*args, **kwargs)
-
-    def get_renderer(self, name, value, attrs=None, choices=()):
-        """Returns an instance of the renderer."""
-        if value is None: value = ''
-        str_value = force_unicode(value) # Normalize to string.
-        final_attrs = self.build_attrs(attrs)
-        choices = list(chain(self.choices, choices))
-        return self.renderer(name, str_value, final_attrs, choices)
-
-    def render(self, name, value, attrs=None, choices=()):
-        return self.get_renderer(name, value, attrs, choices).render()
-
-    def id_for_label(self, id_):
-        # RadioSelect is represented by multiple <input type="radio"> fields,
-        # each of which has a distinct ID. The IDs are made distinct by a "_X"
-        # suffix, where X is the zero-based index of the radio field. Thus,
-        # the label for a RadioSelect should reference the first one ('_0').
-        if id_:
-            id_ += '_0'
-        return id_
-    id_for_label = classmethod(id_for_label)
-
-class CheckboxSelectMultiple(SelectMultiple):
-    def render(self, name, value, attrs=None, choices=()):
-        if value is None: value = []
-        has_id = attrs and 'id' in attrs
-        final_attrs = self.build_attrs(attrs, name=name)
-        output = [u'<ul>']
-        # Normalize to strings
-        str_values = set([force_unicode(v) for v in value])
-        for i, (option_value, option_label) in enumerate(chain(self.choices, choices)):
-            # If an ID attribute was given, add a numeric index as a suffix,
-            # so that the checkboxes don't all have the same ID attribute.
-            if has_id:
-                final_attrs = dict(final_attrs, id='%s_%s' % (attrs['id'], i))
-                label_for = u' for="%s"' % final_attrs['id']
-            else:
-                label_for = ''
-
-            cb = CheckboxInput(final_attrs, check_test=lambda value: value in str_values)
-            option_value = force_unicode(option_value)
-            rendered_cb = cb.render(name, option_value)
-            option_label = conditional_escape(force_unicode(option_label))
-            output.append(u'<li><label%s>%s %s</label></li>' % (label_for, rendered_cb, option_label))
-        output.append(u'</ul>')
-        return mark_safe(u'\n'.join(output))
-
-    def id_for_label(self, id_):
-        # See the comment for RadioSelect.id_for_label()
-        if id_:
-            id_ += '_0'
-        return id_
-    id_for_label = classmethod(id_for_label)
-
-class MultiWidget(Widget):
-    """
-    A widget that is composed of multiple widgets.
-
-    Its render() method is different than other widgets', because it has to
-    figure out how to split a single value for display in multiple widgets.
-    The ``value`` argument can be one of two things:
-
-        * A list.
-        * A normal value (e.g., a string) that has been "compressed" from
-          a list of values.
-
-    In the second case -- i.e., if the value is NOT a list -- render() will
-    first "decompress" the value into a list before rendering it. It does so by
-    calling the decompress() method, which MultiWidget subclasses must
-    implement. This method takes a single "compressed" value and returns a
-    list.
-
-    When render() does its HTML rendering, each value in the list is rendered
-    with the corresponding widget -- the first value is rendered in the first
-    widget, the second value is rendered in the second widget, etc.
-
-    Subclasses may implement format_output(), which takes the list of rendered
-    widgets and returns a string of HTML that formats them any way you'd like.
-
-    You'll probably want to use this class with MultiValueField.
-    """
-    def __init__(self, widgets, attrs=None):
-        self.widgets = [isinstance(w, type) and w() or w for w in widgets]
-        super(MultiWidget, self).__init__(attrs)
-
-    def render(self, name, value, attrs=None):
-        # value is a list of values, each corresponding to a widget
-        # in self.widgets.
-        if not isinstance(value, list):
-            value = self.decompress(value)
-        output = []
-        final_attrs = self.build_attrs(attrs)
-        id_ = final_attrs.get('id', None)
-        for i, widget in enumerate(self.widgets):
-            try:
-                widget_value = value[i]
-            except IndexError:
-                widget_value = None
-            if id_:
-                final_attrs = dict(final_attrs, id='%s_%s' % (id_, i))
-            output.append(widget.render(name + '_%s' % i, widget_value, final_attrs))
-        return mark_safe(self.format_output(output))
-
-    def id_for_label(self, id_):
-        # See the comment for RadioSelect.id_for_label()
-        if id_:
-            id_ += '_0'
-        return id_
-    id_for_label = classmethod(id_for_label)
-
-    def value_from_datadict(self, data, files, name):
-        return [widget.value_from_datadict(data, files, name + '_%s' % i) for i, widget in enumerate(self.widgets)]
-
-    def _has_changed(self, initial, data):
-        if initial is None:
-            initial = [u'' for x in range(0, len(data))]
-        else:
-            initial = self.decompress(initial)
-        for widget, initial, data in zip(self.widgets, initial, data):
-            if widget._has_changed(initial, data):
-                return True
-        return False
-
-    def format_output(self, rendered_widgets):
-        """
-        Given a list of rendered widgets (as strings), returns a Unicode string
-        representing the HTML for the whole lot.
-
-        This hook allows you to format the HTML design of the widgets, if
-        needed.
-        """
-        return u''.join(rendered_widgets)
-
-    def decompress(self, value):
-        """
-        Returns a list of decompressed values for the given compressed value.
-        The given value can be assumed to be valid, but not necessarily
-        non-empty.
-        """
-        raise NotImplementedError('Subclasses must implement this method.')
-
-    def _get_media(self):
-        "Media for a multiwidget is the combination of all media of the subwidgets"
-        media = Media()
-        for w in self.widgets:
-            media = media + w.media
-        return media
-    media = property(_get_media)
-
-class SplitDateTimeWidget(MultiWidget):
-    """
-    A Widget that splits datetime input into two <input type="text"> boxes.
-    """
-    def __init__(self, attrs=None):
-        widgets = (TextInput(attrs=attrs), TextInput(attrs=attrs))
-        super(SplitDateTimeWidget, self).__init__(widgets, attrs)
-
-    def decompress(self, value):
-        if value:
-            return [value.date(), value.time().replace(microsecond=0)]
-        return [None, None]
-
diff --git a/webapp/django/http/__init__.py b/webapp/django/http/__init__.py
deleted file mode 100644
index 6d24e0a..0000000
--- a/webapp/django/http/__init__.py
+++ /dev/null
@@ -1,455 +0,0 @@
-import os
-import re
-from Cookie import SimpleCookie, CookieError
-from pprint import pformat
-from urllib import urlencode
-from urlparse import urljoin
-try:
-    # The mod_python version is more efficient, so try importing it first.
-    from mod_python.util import parse_qsl
-except ImportError:
-    from cgi import parse_qsl
-
-from django.utils.datastructures import MultiValueDict, ImmutableList
-from django.utils.encoding import smart_str, iri_to_uri, force_unicode
-from django.http.multipartparser import MultiPartParser
-from django.conf import settings
-from django.core.files import uploadhandler
-from utils import *
-
-RESERVED_CHARS="!*'();:@&=+$,/?%#[]"
-
-absolute_http_url_re = re.compile(r"^https?://", re.I)
-
-class Http404(Exception):
-    pass
-
-class HttpRequest(object):
-    """A basic HTTP request."""
-
-    # The encoding used in GET/POST dicts. None means use default setting.
-    _encoding = None
-    _upload_handlers = []
-
-    def __init__(self):
-        self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}
-        self.path = ''
-        self.path_info = ''
-        self.method = None
-
-    def __repr__(self):
-        return '<HttpRequest\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \
-            (pformat(self.GET), pformat(self.POST), pformat(self.COOKIES),
-            pformat(self.META))
-
-    def get_host(self):
-        """Returns the HTTP host using the environment or request headers."""
-        # We try three options, in order of decreasing preference.
-        if 'HTTP_X_FORWARDED_HOST' in self.META:
-            host = self.META['HTTP_X_FORWARDED_HOST']
-        elif 'HTTP_HOST' in self.META:
-            host = self.META['HTTP_HOST']
-        else:
-            # Reconstruct the host using the algorithm from PEP 333.
-            host = self.META['SERVER_NAME']
-            server_port = self.META['SERVER_PORT']
-            if server_port != (self.is_secure() and 443 or 80):
-                host = '%s:%s' % (host, server_port)
-        return host
-
-    def get_full_path(self):
-        return ''
-
-    def build_absolute_uri(self, location=None):
-        """
-        Builds an absolute URI from the location and the variables available in
-        this request. If no location is specified, the absolute URI is built on
-        ``request.get_full_path()``.
-        """
-        if not location:
-            location = self.get_full_path()
-        if not absolute_http_url_re.match(location):
-            current_uri = '%s://%s%s' % (self.is_secure() and 'https' or 'http',
-                                         self.get_host(), self.path)
-            location = urljoin(current_uri, location)
-        return location
-
-    def is_secure(self):
-        return os.environ.get("HTTPS") == "on"
-
-    def is_ajax(self):
-        return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
-
-    def _set_encoding(self, val):
-        """
-        Sets the encoding used for GET/POST accesses. If the GET or POST
-        dictionary has already been created, it is removed and recreated on the
-        next access (so that it is decoded correctly).
-        """
-        self._encoding = val
-        if hasattr(self, '_get'):
-            del self._get
-        if hasattr(self, '_post'):
-            del self._post
-
-    def _get_encoding(self):
-        return self._encoding
-
-    encoding = property(_get_encoding, _set_encoding)
-
-    def _initialize_handlers(self):
-        self._upload_handlers = [uploadhandler.load_handler(handler, self)
-                                 for handler in settings.FILE_UPLOAD_HANDLERS]
-
-    def _set_upload_handlers(self, upload_handlers):
-        if hasattr(self, '_files'):
-            raise AttributeError("You cannot set the upload handlers after the upload has been processed.")
-        self._upload_handlers = upload_handlers
-
-    def _get_upload_handlers(self):
-        if not self._upload_handlers:
-            # If thre are no upload handlers defined, initialize them from settings.
-            self._initialize_handlers()
-        return self._upload_handlers
-
-    upload_handlers = property(_get_upload_handlers, _set_upload_handlers)
-
-    def parse_file_upload(self, META, post_data):
-        """Returns a tuple of (POST QueryDict, FILES MultiValueDict)."""
-        self.upload_handlers = ImmutableList(
-            self.upload_handlers,
-            warning = "You cannot alter upload handlers after the upload has been processed."
-        )
-        parser = MultiPartParser(META, post_data, self.upload_handlers, self.encoding)
-        return parser.parse()
-
-class QueryDict(MultiValueDict):
-    """
-    A specialized MultiValueDict that takes a query string when initialized.
-    This is immutable unless you create a copy of it.
-
-    Values retrieved from this class are converted from the given encoding
-    (DEFAULT_CHARSET by default) to unicode.
-    """
-    # These are both reset in __init__, but is specified here at the class
-    # level so that unpickling will have valid values
-    _mutable = True
-    _encoding = None
-
-    def __init__(self, query_string, mutable=False, encoding=None):
-        MultiValueDict.__init__(self)
-        if not encoding:
-            # *Important*: do not import settings any earlier because of note
-            # in core.handlers.modpython.
-            from django.conf import settings
-            encoding = settings.DEFAULT_CHARSET
-        self.encoding = encoding
-        for key, value in parse_qsl((query_string or ''), True): # keep_blank_values=True
-            self.appendlist(force_unicode(key, encoding, errors='replace'),
-                            force_unicode(value, encoding, errors='replace'))
-        self._mutable = mutable
-
-    def _get_encoding(self):
-        if self._encoding is None:
-            # *Important*: do not import settings at the module level because
-            # of the note in core.handlers.modpython.
-            from django.conf import settings
-            self._encoding = settings.DEFAULT_CHARSET
-        return self._encoding
-
-    def _set_encoding(self, value):
-        self._encoding = value
-
-    encoding = property(_get_encoding, _set_encoding)
-
-    def _assert_mutable(self):
-        if not self._mutable:
-            raise AttributeError("This QueryDict instance is immutable")
-
-    def __setitem__(self, key, value):
-        self._assert_mutable()
-        key = str_to_unicode(key, self.encoding)
-        value = str_to_unicode(value, self.encoding)
-        MultiValueDict.__setitem__(self, key, value)
-
-    def __delitem__(self, key):
-        self._assert_mutable()
-        super(QueryDict, self).__delitem__(key)
-
-    def __copy__(self):
-        result = self.__class__('', mutable=True)
-        for key, value in dict.items(self):
-            dict.__setitem__(result, key, value)
-        return result
-
-    def __deepcopy__(self, memo):
-        import copy
-        result = self.__class__('', mutable=True)
-        memo[id(self)] = result
-        for key, value in dict.items(self):
-            dict.__setitem__(result, copy.deepcopy(key, memo), copy.deepcopy(value, memo))
-        return result
-
-    def setlist(self, key, list_):
-        self._assert_mutable()
-        key = str_to_unicode(key, self.encoding)
-        list_ = [str_to_unicode(elt, self.encoding) for elt in list_]
-        MultiValueDict.setlist(self, key, list_)
-
-    def setlistdefault(self, key, default_list=()):
-        self._assert_mutable()
-        if key not in self:
-            self.setlist(key, default_list)
-        return MultiValueDict.getlist(self, key)
-
-    def appendlist(self, key, value):
-        self._assert_mutable()
-        key = str_to_unicode(key, self.encoding)
-        value = str_to_unicode(value, self.encoding)
-        MultiValueDict.appendlist(self, key, value)
-
-    def update(self, other_dict):
-        self._assert_mutable()
-        f = lambda s: str_to_unicode(s, self.encoding)
-        d = dict([(f(k), f(v)) for k, v in other_dict.items()])
-        MultiValueDict.update(self, d)
-
-    def pop(self, key, *args):
-        self._assert_mutable()
-        return MultiValueDict.pop(self, key, *args)
-
-    def popitem(self):
-        self._assert_mutable()
-        return MultiValueDict.popitem(self)
-
-    def clear(self):
-        self._assert_mutable()
-        MultiValueDict.clear(self)
-
-    def setdefault(self, key, default=None):
-        self._assert_mutable()
-        key = str_to_unicode(key, self.encoding)
-        default = str_to_unicode(default, self.encoding)
-        return MultiValueDict.setdefault(self, key, default)
-
-    def copy(self):
-        """Returns a mutable copy of this object."""
-        return self.__deepcopy__({})
-
-    def urlencode(self):
-        output = []
-        for k, list_ in self.lists():
-            k = smart_str(k, self.encoding)
-            output.extend([urlencode({k: smart_str(v, self.encoding)}) for v in list_])
-        return '&'.join(output)
-
-def parse_cookie(cookie):
-    if cookie == '':
-        return {}
-    try:
-        c = SimpleCookie()
-        c.load(cookie)
-    except CookieError:
-        # Invalid cookie
-        return {}
-
-    cookiedict = {}
-    for key in c.keys():
-        cookiedict[key] = c.get(key).value
-    return cookiedict
-
-class HttpResponse(object):
-    """A basic HTTP response, with content and dictionary-accessed headers."""
-
-    status_code = 200
-
-    def __init__(self, content='', mimetype=None, status=None,
-            content_type=None):
-        from django.conf import settings
-        self._charset = settings.DEFAULT_CHARSET
-        if mimetype:
-            content_type = mimetype     # For backwards compatibility
-        if not content_type:
-            content_type = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE,
-                    settings.DEFAULT_CHARSET)
-        if not isinstance(content, basestring) and hasattr(content, '__iter__'):
-            self._container = content
-            self._is_string = False
-        else:
-            self._container = [content]
-            self._is_string = True
-        self.cookies = SimpleCookie()
-        if status:
-            self.status_code = status
-
-        # _headers is a mapping of the lower-case name to the original case of
-        # the header (required for working with legacy systems) and the header
-        # value.
-        self._headers = {'content-type': ('Content-Type', content_type)}
-
-    def __str__(self):
-        """Full HTTP message, including headers."""
-        return '\n'.join(['%s: %s' % (key, value)
-            for key, value in self._headers.values()]) \
-            + '\n\n' + self.content
-
-    def _convert_to_ascii(self, *values):
-        """Converts all values to ascii strings."""
-        for value in values:
-            if isinstance(value, unicode):
-                try:
-                    yield value.encode('us-ascii')
-                except UnicodeError, e:
-                    e.reason += ', HTTP response headers must be in US-ASCII format'
-                    raise
-            else:
-                yield str(value)
-
-    def __setitem__(self, header, value):
-        header, value = self._convert_to_ascii(header, value)
-        self._headers[header.lower()] = (header, value)
-
-    def __delitem__(self, header):
-        try:
-            del self._headers[header.lower()]
-        except KeyError:
-            pass
-
-    def __getitem__(self, header):
-        return self._headers[header.lower()][1]
-
-    def has_header(self, header):
-        """Case-insensitive check for a header."""
-        return self._headers.has_key(header.lower())
-
-    __contains__ = has_header
-
-    def items(self):
-        return self._headers.values()
-
-    def get(self, header, alternate):
-        return self._headers.get(header.lower(), (None, alternate))[1]
-
-    def set_cookie(self, key, value='', max_age=None, expires=None, path='/',
-                   domain=None, secure=False):
-        self.cookies[key] = value
-        if max_age is not None:
-            self.cookies[key]['max-age'] = max_age
-        if expires is not None:
-            self.cookies[key]['expires'] = expires
-        if path is not None:
-            self.cookies[key]['path'] = path
-        if domain is not None:
-            self.cookies[key]['domain'] = domain
-        if secure:
-            self.cookies[key]['secure'] = True
-
-    def delete_cookie(self, key, path='/', domain=None):
-        self.set_cookie(key, max_age=0, path=path, domain=domain,
-                        expires='Thu, 01-Jan-1970 00:00:00 GMT')
-
-    def _get_content(self):
-        if self.has_header('Content-Encoding'):
-            return ''.join(self._container)
-        return smart_str(''.join(self._container), self._charset)
-
-    def _set_content(self, value):
-        self._container = [value]
-        self._is_string = True
-
-    content = property(_get_content, _set_content)
-
-    def __iter__(self):
-        self._iterator = iter(self._container)
-        return self
-
-    def next(self):
-        chunk = self._iterator.next()
-        if isinstance(chunk, unicode):
-            chunk = chunk.encode(self._charset)
-        return str(chunk)
-
-    def close(self):
-        if hasattr(self._container, 'close'):
-            self._container.close()
-
-    # The remaining methods partially implement the file-like object interface.
-    # See http://docs.python.org/lib/bltin-file-objects.html
-    def write(self, content):
-        if not self._is_string:
-            raise Exception("This %s instance is not writable" % self.__class__)
-        self._container.append(content)
-
-    def flush(self):
-        pass
-
-    def tell(self):
-        if not self._is_string:
-            raise Exception("This %s instance cannot tell its position" % self.__class__)
-        return sum([len(chunk) for chunk in self._container])
-
-class HttpResponseRedirect(HttpResponse):
-    status_code = 302
-
-    def __init__(self, redirect_to):
-        HttpResponse.__init__(self)
-        self['Location'] = iri_to_uri(redirect_to)
-
-class HttpResponsePermanentRedirect(HttpResponse):
-    status_code = 301
-
-    def __init__(self, redirect_to):
-        HttpResponse.__init__(self)
-        self['Location'] = iri_to_uri(redirect_to)
-
-class HttpResponseNotModified(HttpResponse):
-    status_code = 304
-
-class HttpResponseBadRequest(HttpResponse):
-    status_code = 400
-
-class HttpResponseNotFound(HttpResponse):
-    status_code = 404
-
-class HttpResponseForbidden(HttpResponse):
-    status_code = 403
-
-class HttpResponseNotAllowed(HttpResponse):
-    status_code = 405
-
-    def __init__(self, permitted_methods):
-        HttpResponse.__init__(self)
-        self['Allow'] = ', '.join(permitted_methods)
-
-class HttpResponseGone(HttpResponse):
-    status_code = 410
-
-    def __init__(self, *args, **kwargs):
-        HttpResponse.__init__(self, *args, **kwargs)
-
-class HttpResponseServerError(HttpResponse):
-    status_code = 500
-
-    def __init__(self, *args, **kwargs):
-        HttpResponse.__init__(self, *args, **kwargs)
-
-# A backwards compatible alias for HttpRequest.get_host.
-def get_host(request):
-    return request.get_host()
-
-# It's neither necessary nor appropriate to use
-# django.utils.encoding.smart_unicode for parsing URLs and form inputs. Thus,
-# this slightly more restricted function.
-def str_to_unicode(s, encoding):
-    """
-    Converts basestring objects to unicode, using the given encoding. Illegally
-    encoded input characters are replaced with Unicode "unknown" codepoint
-    (\ufffd).
-
-    Returns any non-basestring objects without change.
-    """
-    if isinstance(s, str):
-        return unicode(s, encoding, 'replace')
-    else:
-        return s
-
diff --git a/webapp/django/http/multipartparser.py b/webapp/django/http/multipartparser.py
deleted file mode 100644
index 2049289..0000000
--- a/webapp/django/http/multipartparser.py
+++ /dev/null
@@ -1,639 +0,0 @@
-"""
-Multi-part parsing for file uploads.
-
-Exposes one class, ``MultiPartParser``, which feeds chunks of uploaded data to
-file upload handlers for processing.
-"""
-
-import cgi
-from django.conf import settings
-from django.core.exceptions import SuspiciousOperation
-from django.utils.datastructures import MultiValueDict
-from django.utils.encoding import force_unicode
-from django.utils.text import unescape_entities
-from django.core.files.uploadhandler import StopUpload, SkipFile, StopFutureHandlers
-
-__all__ = ('MultiPartParser', 'MultiPartParserError', 'InputStreamExhausted')
-
-class MultiPartParserError(Exception):
-    pass
-
-class InputStreamExhausted(Exception):
-    """
-    No more reads are allowed from this device.
-    """
-    pass
-
-RAW = "raw"
-FILE = "file"
-FIELD = "field"
-
-class MultiPartParser(object):
-    """
-    A rfc2388 multipart/form-data parser.
-
-    ``MultiValueDict.parse()`` reads the input stream in ``chunk_size`` chunks
-    and returns a tuple of ``(MultiValueDict(POST), MultiValueDict(FILES))``. If
-    ``file_upload_dir`` is defined files will be streamed to temporary files in
-    that directory.
-    """
-    def __init__(self, META, input_data, upload_handlers, encoding=None):
-        """
-        Initialize the MultiPartParser object.
-
-        :META:
-            The standard ``META`` dictionary in Django request objects.
-        :input_data:
-            The raw post data, as a bytestring.
-        :upload_handler:
-            An UploadHandler instance that performs operations on the uploaded
-            data.
-        :encoding:
-            The encoding with which to treat the incoming data.
-        """
-
-        #
-        # Content-Type should containt multipart and the boundary information.
-        #
-
-        content_type = META.get('HTTP_CONTENT_TYPE', META.get('CONTENT_TYPE', ''))
-        if not content_type.startswith('multipart/'):
-            raise MultiPartParserError('Invalid Content-Type: %s' % content_type)
-
-        # Parse the header to get the boundary to split the parts.
-        ctypes, opts = parse_header(content_type)
-        boundary = opts.get('boundary')
-        if not boundary or not cgi.valid_boundary(boundary):
-            raise MultiPartParserError('Invalid boundary in multipart: %s' % boundary)
-
-
-        #
-        # Content-Length should contain the length of the body we are about
-        # to receive.
-        #
-        try:
-            content_length = int(META.get('HTTP_CONTENT_LENGTH', META.get('CONTENT_LENGTH',0)))
-        except (ValueError, TypeError):
-            # For now set it to 0; we'll try again later on down.
-            content_length = 0
-
-        if content_length <= 0:
-            # This means we shouldn't continue...raise an error.
-            raise MultiPartParserError("Invalid content length: %r" % content_length)
-
-        self._boundary = boundary
-        self._input_data = input_data
-
-        # For compatibility with low-level network APIs (with 32-bit integers),
-        # the chunk size should be < 2^31, but still divisible by 4.
-        self._chunk_size = min(2**31-4, *[x.chunk_size for x in upload_handlers if x.chunk_size])
-
-        self._meta = META
-        self._encoding = encoding or settings.DEFAULT_CHARSET
-        self._content_length = content_length
-        self._upload_handlers = upload_handlers
-
-    def parse(self):
-        """
-        Parse the POST data and break it into a FILES MultiValueDict and a POST
-        MultiValueDict.
-
-        Returns a tuple containing the POST and FILES dictionary, respectively.
-        """
-        # We have to import QueryDict down here to avoid a circular import.
-        from django.http import QueryDict
-
-        encoding = self._encoding
-        handlers = self._upload_handlers
-
-        limited_input_data = LimitBytes(self._input_data, self._content_length)
-
-        # See if the handler will want to take care of the parsing.
-        # This allows overriding everything if somebody wants it.
-        for handler in handlers:
-            result = handler.handle_raw_input(limited_input_data,
-                                              self._meta,
-                                              self._content_length,
-                                              self._boundary,
-                                              encoding)
-            if result is not None:
-                return result[0], result[1]
-
-        # Create the data structures to be used later.
-        self._post = QueryDict('', mutable=True)
-        self._files = MultiValueDict()
-
-        # Instantiate the parser and stream:
-        stream = LazyStream(ChunkIter(limited_input_data, self._chunk_size))
-
-        # Whether or not to signal a file-completion at the beginning of the loop.
-        old_field_name = None
-        counters = [0] * len(handlers)
-
-        try:
-            for item_type, meta_data, field_stream in Parser(stream, self._boundary):
-                if old_field_name:
-                    # We run this at the beginning of the next loop
-                    # since we cannot be sure a file is complete until
-                    # we hit the next boundary/part of the multipart content.
-                    self.handle_file_complete(old_field_name, counters)
-                    old_field_name = None
-
-                try:
-                    disposition = meta_data['content-disposition'][1]
-                    field_name = disposition['name'].strip()
-                except (KeyError, IndexError, AttributeError):
-                    continue
-
-                transfer_encoding = meta_data.get('content-transfer-encoding')
-                field_name = force_unicode(field_name, encoding, errors='replace')
-
-                if item_type == FIELD:
-                    # This is a post field, we can just set it in the post
-                    if transfer_encoding == 'base64':
-                        raw_data = field_stream.read()
-                        try:
-                            data = str(raw_data).decode('base64')
-                        except:
-                            data = raw_data
-                    else:
-                        data = field_stream.read()
-
-                    self._post.appendlist(field_name,
-                                          force_unicode(data, encoding, errors='replace'))
-                elif item_type == FILE:
-                    # This is a file, use the handler...
-                    file_name = disposition.get('filename')
-                    if not file_name:
-                        continue
-                    file_name = force_unicode(file_name, encoding, errors='replace')
-                    file_name = self.IE_sanitize(unescape_entities(file_name))
-
-                    content_type = meta_data.get('content-type', ('',))[0].strip()
-                    try:
-                        charset = meta_data.get('content-type', (0,{}))[1].get('charset', None)
-                    except:
-                        charset = None
-
-                    try:
-                        content_length = int(meta_data.get('content-length')[0])
-                    except (IndexError, TypeError, ValueError):
-                        content_length = None
-
-                    counters = [0] * len(handlers)
-                    try:
-                        for handler in handlers:
-                            try:
-                                handler.new_file(field_name, file_name,
-                                                 content_type, content_length,
-                                                 charset)
-                            except StopFutureHandlers:
-                                break
-
-                        for chunk in field_stream:
-                            if transfer_encoding == 'base64':
-                                # We only special-case base64 transfer encoding
-                                try:
-                                    chunk = str(chunk).decode('base64')
-                                except Exception, e:
-                                    # Since this is only a chunk, any error is an unfixable error.
-                                    raise MultiPartParserError("Could not decode base64 data: %r" % e)
-
-                            for i, handler in enumerate(handlers):
-                                chunk_length = len(chunk)
-                                chunk = handler.receive_data_chunk(chunk,
-                                                                   counters[i])
-                                counters[i] += chunk_length
-                                if chunk is None:
-                                    # If the chunk received by the handler is None, then don't continue.
-                                    break
-
-                    except SkipFile, e:
-                        # Just use up the rest of this file...
-                        exhaust(field_stream)
-                    else:
-                        # Handle file upload completions on next iteration.
-                        old_field_name = field_name
-                else:
-                    # If this is neither a FIELD or a FILE, just exhaust the stream.
-                    exhaust(stream)
-        except StopUpload, e:
-            if not e.connection_reset:
-                exhaust(limited_input_data)
-        else:
-            # Make sure that the request data is all fed
-            exhaust(limited_input_data)
-
-        # Signal that the upload has completed.
-        for handler in handlers:
-            retval = handler.upload_complete()
-            if retval:
-                break
-
-        return self._post, self._files
-
-    def handle_file_complete(self, old_field_name, counters):
-        """
-        Handle all the signalling that takes place when a file is complete.
-        """
-        for i, handler in enumerate(self._upload_handlers):
-            file_obj = handler.file_complete(counters[i])
-            if file_obj:
-                # If it returns a file object, then set the files dict.
-                self._files.appendlist(force_unicode(old_field_name,
-                                                     self._encoding,
-                                                     errors='replace'),
-                                       file_obj)
-                break
-
-    def IE_sanitize(self, filename):
-        """Cleanup filename from Internet Explorer full paths."""
-        return filename and filename[filename.rfind("\\")+1:].strip()
-
-class LazyStream(object):
-    """
-    The LazyStream wrapper allows one to get and "unget" bytes from a stream.
-
-    Given a producer object (an iterator that yields bytestrings), the
-    LazyStream object will support iteration, reading, and keeping a "look-back"
-    variable in case you need to "unget" some bytes.
-    """
-    def __init__(self, producer, length=None):
-        """
-        Every LazyStream must have a producer when instantiated.
-
-        A producer is an iterable that returns a string each time it
-        is called.
-        """
-        self._producer = producer
-        self._empty = False
-        self._leftover = ''
-        self.length = length
-        self.position = 0
-        self._remaining = length
-        self._unget_history = []
-
-    def tell(self):
-        return self.position
-
-    def read(self, size=None):
-        def parts():
-            remaining = (size is not None and [size] or [self._remaining])[0]
-            # do the whole thing in one shot if no limit was provided.
-            if remaining is None:
-                yield ''.join(self)
-                return
-
-            # otherwise do some bookkeeping to return exactly enough
-            # of the stream and stashing any extra content we get from
-            # the producer
-            while remaining != 0:
-                assert remaining > 0, 'remaining bytes to read should never go negative'
-
-                chunk = self.next()
-
-                emitting = chunk[:remaining]
-                self.unget(chunk[remaining:])
-                remaining -= len(emitting)
-                yield emitting
-
-        out = ''.join(parts())
-        return out
-
-    def next(self):
-        """
-        Used when the exact number of bytes to read is unimportant.
-
-        This procedure just returns whatever is chunk is conveniently returned
-        from the iterator instead. Useful to avoid unnecessary bookkeeping if
-        performance is an issue.
-        """
-        if self._leftover:
-            output = self._leftover
-            self._leftover = ''
-        else:
-            output = self._producer.next()
-            self._unget_history = []
-        self.position += len(output)
-        return output
-
-    def close(self):
-        """
-        Used to invalidate/disable this lazy stream.
-
-        Replaces the producer with an empty list. Any leftover bytes that have
-        already been read will still be reported upon read() and/or next().
-        """
-        self._producer = []
-
-    def __iter__(self):
-        return self
-
-    def unget(self, bytes):
-        """
-        Places bytes back onto the front of the lazy stream.
-
-        Future calls to read() will return those bytes first. The
-        stream position and thus tell() will be rewound.
-        """
-        if not bytes:
-            return
-        self._update_unget_history(len(bytes))
-        self.position -= len(bytes)
-        self._leftover = ''.join([bytes, self._leftover])
-
-    def _update_unget_history(self, num_bytes):
-        """
-        Updates the unget history as a sanity check to see if we've pushed
-        back the same number of bytes in one chunk. If we keep ungetting the
-        same number of bytes many times (here, 50), we're mostly likely in an
-        infinite loop of some sort. This is usually caused by a
-        maliciously-malformed MIME request.
-        """
-        self._unget_history = [num_bytes] + self._unget_history[:49]
-        number_equal = len([current_number for current_number in self._unget_history
-                            if current_number == num_bytes])
-
-        if number_equal > 40:
-            raise SuspiciousOperation(
-                "The multipart parser got stuck, which shouldn't happen with"
-                " normal uploaded files. Check for malicious upload activity;"
-                " if there is none, report this to the Django developers."
-            )
-
-class ChunkIter(object):
-    """
-    An iterable that will yield chunks of data. Given a file-like object as the
-    constructor, this object will yield chunks of read operations from that
-    object.
-    """
-    def __init__(self, flo, chunk_size=64 * 1024):
-        self.flo = flo
-        self.chunk_size = chunk_size
-
-    def next(self):
-        try:
-            data = self.flo.read(self.chunk_size)
-        except InputStreamExhausted:
-            raise StopIteration()
-        if data:
-            return data
-        else:
-            raise StopIteration()
-
-    def __iter__(self):
-        return self
-
-class LimitBytes(object):
-    """ Limit bytes for a file object. """
-    def __init__(self, fileobject, length):
-        self._file = fileobject
-        self.remaining = length
-
-    def read(self, num_bytes=None):
-        """
-        Read data from the underlying file.
-        If you ask for too much or there isn't anything left,
-        this will raise an InputStreamExhausted error.
-        """
-        if self.remaining <= 0:
-            raise InputStreamExhausted()
-        if num_bytes is None:
-            num_bytes = self.remaining
-        else:
-            num_bytes = min(num_bytes, self.remaining)
-        self.remaining -= num_bytes
-        return self._file.read(num_bytes)
-
-class InterBoundaryIter(object):
-    """
-    A Producer that will iterate over boundaries.
-    """
-    def __init__(self, stream, boundary):
-        self._stream = stream
-        self._boundary = boundary
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        try:
-            return LazyStream(BoundaryIter(self._stream, self._boundary))
-        except InputStreamExhausted:
-            raise StopIteration()
-
-class BoundaryIter(object):
-    """
-    A Producer that is sensitive to boundaries.
-
-    Will happily yield bytes until a boundary is found. Will yield the bytes
-    before the boundary, throw away the boundary bytes themselves, and push the
-    post-boundary bytes back on the stream.
-
-    The future calls to .next() after locating the boundary will raise a
-    StopIteration exception.
-    """
-
-    def __init__(self, stream, boundary):
-        self._stream = stream
-        self._boundary = boundary
-        self._done = False
-        # rollback an additional six bytes because the format is like
-        # this: CRLF<boundary>[--CRLF]
-        self._rollback = len(boundary) + 6
-
-        # Try to use mx fast string search if available. Otherwise
-        # use Python find. Wrap the latter for consistency.
-        unused_char = self._stream.read(1)
-        if not unused_char:
-            raise InputStreamExhausted()
-        self._stream.unget(unused_char)
-        try:
-            from mx.TextTools import FS
-            self._fs = FS(boundary).find
-        except ImportError:
-            self._fs = lambda data: data.find(boundary)
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        if self._done:
-            raise StopIteration()
-
-        stream = self._stream
-        rollback = self._rollback
-
-        bytes_read = 0
-        chunks = []
-        for bytes in stream:
-            bytes_read += len(bytes)
-            chunks.append(bytes)
-            if bytes_read > rollback:
-                break
-            if not bytes:
-                break
-        else:
-            self._done = True
-
-        if not chunks:
-            raise StopIteration()
-
-        chunk = ''.join(chunks)
-        boundary = self._find_boundary(chunk, len(chunk) < self._rollback)
-
-        if boundary:
-            end, next = boundary
-            stream.unget(chunk[next:])
-            self._done = True
-            return chunk[:end]
-        else:
-            # make sure we dont treat a partial boundary (and
-            # its separators) as data
-            if not chunk[:-rollback]:# and len(chunk) >= (len(self._boundary) + 6):
-                # There's nothing left, we should just return and mark as done.
-                self._done = True
-                return chunk
-            else:
-                stream.unget(chunk[-rollback:])
-                return chunk[:-rollback]
-
-    def _find_boundary(self, data, eof = False):
-        """
-        Finds a multipart boundary in data.
-
-        Should no boundry exist in the data None is returned instead. Otherwise
-        a tuple containing the indices of the following are returned:
-
-         * the end of current encapsulation
-         * the start of the next encapsulation
-        """
-        index = self._fs(data)
-        if index < 0:
-            return None
-        else:
-            end = index
-            next = index + len(self._boundary)
-            # backup over CRLF
-            if data[max(0,end-1)] == '\n':
-                end -= 1
-            if data[max(0,end-1)] == '\r':
-                end -= 1
-            return end, next
-
-def exhaust(stream_or_iterable):
-    """
-    Completely exhausts an iterator or stream.
-
-    Raise a MultiPartParserError if the argument is not a stream or an iterable.
-    """
-    iterator = None
-    try:
-        iterator = iter(stream_or_iterable)
-    except TypeError:
-        iterator = ChunkIter(stream_or_iterable, 16384)
-
-    if iterator is None:
-        raise MultiPartParserError('multipartparser.exhaust() was passed a non-iterable or stream parameter')
-
-    for __ in iterator:
-        pass
-
-def parse_boundary_stream(stream, max_header_size):
-    """
-    Parses one and exactly one stream that encapsulates a boundary.
-    """
-    # Stream at beginning of header, look for end of header
-    # and parse it if found. The header must fit within one
-    # chunk.
-    chunk = stream.read(max_header_size)
-
-    # 'find' returns the top of these four bytes, so we'll
-    # need to munch them later to prevent them from polluting
-    # the payload.
-    header_end = chunk.find('\r\n\r\n')
-
-    def _parse_header(line):
-        main_value_pair, params = parse_header(line)
-        try:
-            name, value = main_value_pair.split(':', 1)
-        except:
-            raise ValueError("Invalid header: %r" % line)
-        return name, (value, params)
-
-    if header_end == -1:
-        # we find no header, so we just mark this fact and pass on
-        # the stream verbatim
-        stream.unget(chunk)
-        return (RAW, {}, stream)
-
-    header = chunk[:header_end]
-
-    # here we place any excess chunk back onto the stream, as
-    # well as throwing away the CRLFCRLF bytes from above.
-    stream.unget(chunk[header_end + 4:])
-
-    TYPE = RAW
-    outdict = {}
-
-    # Eliminate blank lines
-    for line in header.split('\r\n'):
-        # This terminology ("main value" and "dictionary of
-        # parameters") is from the Python docs.
-        try:
-            name, (value, params) = _parse_header(line)
-        except:
-            continue
-
-        if name == 'content-disposition':
-            TYPE = FIELD
-            if params.get('filename'):
-                TYPE = FILE
-
-        outdict[name] = value, params
-
-    if TYPE == RAW:
-        stream.unget(chunk)
-
-    return (TYPE, outdict, stream)
-
-class Parser(object):
-    def __init__(self, stream, boundary):
-        self._stream = stream
-        self._separator = '--' + boundary
-
-    def __iter__(self):
-        boundarystream = InterBoundaryIter(self._stream, self._separator)
-        for sub_stream in boundarystream:
-            # Iterate over each part
-            yield parse_boundary_stream(sub_stream, 1024)
-
-def parse_header(line):
-    """ Parse the header into a key-value. """
-    plist = _parse_header_params(';' + line)
-    key = plist.pop(0).lower()
-    pdict = {}
-    for p in plist:
-        i = p.find('=')
-        if i >= 0:
-            name = p[:i].strip().lower()
-            value = p[i+1:].strip()
-            if len(value) >= 2 and value[0] == value[-1] == '"':
-                value = value[1:-1]
-                value = value.replace('\\\\', '\\').replace('\\"', '"')
-            pdict[name] = value
-    return key, pdict
-
-def _parse_header_params(s):
-    plist = []
-    while s[:1] == ';':
-        s = s[1:]
-        end = s.find(';')
-        while end > 0 and s.count('"', 0, end) % 2:
-            end = s.find(';', end + 1)
-        if end < 0:
-            end = len(s)
-        f = s[:end]
-        plist.append(f.strip())
-        s = s[end:]
-    return plist
diff --git a/webapp/django/http/utils.py b/webapp/django/http/utils.py
deleted file mode 100644
index 4dc05a2..0000000
--- a/webapp/django/http/utils.py
+++ /dev/null
@@ -1,84 +0,0 @@
-"""
-Functions that modify an HTTP request or response in some way.
-"""
-
-# This group of functions are run as part of the response handling, after
-# everything else, including all response middleware. Think of them as
-# "compulsory response middleware". Be careful about what goes here, because
-# it's a little fiddly to override this behavior, so they should be truly
-# universally applicable.
-
-def fix_location_header(request, response):
-    """
-    Ensures that we always use an absolute URI in any location header in the
-    response. This is required by RFC 2616, section 14.30.
-
-    Code constructing response objects is free to insert relative paths, as
-    this function converts them to absolute paths.
-    """
-    if 'Location' in response and request.get_host():
-        response['Location'] = request.build_absolute_uri(response['Location'])
-    return response
-
-def conditional_content_removal(request, response):
-    """
-    Removes the content of responses for HEAD requests, 1xx, 204 and 304
-    responses. Ensures compliance with RFC 2616, section 4.3.
-    """
-    if 100 <= response.status_code < 200 or response.status_code in (204, 304):
-       response.content = ''
-       response['Content-Length'] = 0
-    if request.method == 'HEAD':
-        response.content = ''
-    return response
-
-def fix_IE_for_attach(request, response):
-    """
-    This function will prevent Django from serving a Content-Disposition header
-    while expecting the browser to cache it (only when the browser is IE). This
-    leads to IE not allowing the client to download.
-    """
-    if 'MSIE' not in request.META.get('HTTP_USER_AGENT', '').upper():
-        return response
-
-    offending_headers = ('no-cache', 'no-store')
-    if response.has_header('Content-Disposition'):
-        try:
-            del response['Pragma']
-        except KeyError:
-            pass
-        if response.has_header('Cache-Control'):
-            cache_control_values = [value.strip() for value in
-                    response['Cache-Control'].split(',')
-                    if value.strip().lower() not in offending_headers]
-
-            if not len(cache_control_values):
-                del response['Cache-Control']
-            else:
-                response['Cache-Control'] = ', '.join(cache_control_values)
-
-    return response
-
-def fix_IE_for_vary(request, response):
-    """
-    This function will fix the bug reported at
-    http://support.microsoft.com/kb/824847/en-us?spid=8722&sid=global
-    by clearing the Vary header whenever the mime-type is not safe
-    enough for Internet Explorer to handle.  Poor thing.
-    """
-    if 'MSIE' not in request.META.get('HTTP_USER_AGENT', '').upper():
-        return response
-
-    # These mime-types that are decreed "Vary-safe" for IE:
-    safe_mime_types = ('text/html', 'text/plain', 'text/sgml')
-
-    # The first part of the Content-Type field will be the MIME type,
-    # everything after ';', such as character-set, can be ignored.
-    if response['Content-Type'].split(';')[0] not in safe_mime_types:
-        try:
-            del response['Vary']
-        except KeyError:
-            pass
-
-    return response
-
diff --git a/webapp/django/middleware/__init__.py b/webapp/django/middleware/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/middleware/__init__.py
+++ /dev/null
diff --git a/webapp/django/middleware/cache.py b/webapp/django/middleware/cache.py
deleted file mode 100644
index 28e8784..0000000
--- a/webapp/django/middleware/cache.py
+++ /dev/null
@@ -1,155 +0,0 @@
-"""
-Cache middleware. If enabled, each Django-powered page will be cached based on
-URL. The canonical way to enable cache middleware is to set
-``UpdateCacheMiddleware`` as your first piece of middleware, and
-``FetchFromCacheMiddleware`` as the last::
-
-    MIDDLEWARE_CLASSES = [
-        'django.middleware.cache.UpdateCacheMiddleware',
-        ...
-        'django.middleware.cache.FetchFromCacheMiddleware'
-    ]
-
-This is counter-intuitive, but correct: ``UpdateCacheMiddleware`` needs to run
-last during the response phase, which processes middleware bottom-up;
-``FetchFromCacheMiddleware`` needs to run last during the request phase, which
-processes middleware top-down.
-
-The single-class ``CacheMiddleware`` can be used for some simple sites.
-However, if any other piece of middleware needs to affect the cache key, you'll
-need to use the two-part ``UpdateCacheMiddleware`` and
-``FetchFromCacheMiddleware``. This'll most often happen when you're using
-Django's ``LocaleMiddleware``.
-
-More details about how the caching works:
-
-* Only parameter-less GET or HEAD-requests with status code 200 are cached.
-
-* The number of seconds each page is stored for is set by the "max-age" section
-  of the response's "Cache-Control" header, falling back to the
-  CACHE_MIDDLEWARE_SECONDS setting if the section was not found.
-
-* If CACHE_MIDDLEWARE_ANONYMOUS_ONLY is set to True, only anonymous requests
-  (i.e., those not made by a logged-in user) will be cached. This is a simple
-  and effective way of avoiding the caching of the Django admin (and any other
-  user-specific content).
-
-* This middleware expects that a HEAD request is answered with a response
-  exactly like the corresponding GET request.
-
-* When a hit occurs, a shallow copy of the original response object is returned
-  from process_request.
-
-* Pages will be cached based on the contents of the request headers listed in
-  the response's "Vary" header.
-
-* This middleware also sets ETag, Last-Modified, Expires and Cache-Control
-  headers on the response object.
-
-"""
-
-from django.conf import settings
-from django.core.cache import cache
-from django.utils.cache import get_cache_key, learn_cache_key, patch_response_headers, get_max_age
-
-class UpdateCacheMiddleware(object):
-    """
-    Response-phase cache middleware that updates the cache if the response is
-    cacheable.
-
-    Must be used as part of the two-part update/fetch cache middleware.
-    UpdateCacheMiddleware must be the first piece of middleware in
-    MIDDLEWARE_CLASSES so that it'll get called last during the response phase.
-    """
-    def __init__(self):
-        self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
-        self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
-        self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)
-
-    def process_response(self, request, response):
-        """Sets the cache, if needed."""
-        if not hasattr(request, '_cache_update_cache') or not request._cache_update_cache:
-            # We don't need to update the cache, just return.
-            return response
-        if request.method != 'GET':
-            # This is a stronger requirement than above. It is needed
-            # because of interactions between this middleware and the
-            # HTTPMiddleware, which throws the body of a HEAD-request
-            # away before this middleware gets a chance to cache it.
-            return response
-        if not response.status_code == 200:
-            return response
-        # Try to get the timeout from the "max-age" section of the "Cache-
-        # Control" header before reverting to using the default cache_timeout
-        # length.
-        timeout = get_max_age(response)
-        if timeout == None:
-            timeout = self.cache_timeout
-        elif timeout == 0:
-            # max-age was set to 0, don't bother caching.
-            return response
-        patch_response_headers(response, timeout)
-        cache_key = learn_cache_key(request, response, timeout, self.key_prefix)
-        cache.set(cache_key, response, timeout)
-        return response
-
-class FetchFromCacheMiddleware(object):
-    """
-    Request-phase cache middleware that fetches a page from the cache.
-
-    Must be used as part of the two-part update/fetch cache middleware.
-    FetchFromCacheMiddleware must be the last piece of middleware in
-    MIDDLEWARE_CLASSES so that it'll get called last during the request phase.
-    """
-    def __init__(self):
-        self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
-        self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
-        self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)
-
-    def process_request(self, request):
-        """
-        Checks whether the page is already cached and returns the cached
-        version if available.
-        """
-        if self.cache_anonymous_only:
-            assert hasattr(request, 'user'), "The Django cache middleware with CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True requires authentication middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware' before the CacheMiddleware."
-
-        if not request.method in ('GET', 'HEAD') or request.GET:
-            request._cache_update_cache = False
-            return None # Don't bother checking the cache.
-
-        if self.cache_anonymous_only and request.user.is_authenticated():
-            request._cache_update_cache = False
-            return None # Don't cache requests from authenticated users.
-
-        cache_key = get_cache_key(request, self.key_prefix)
-        if cache_key is None:
-            request._cache_update_cache = True
-            return None # No cache information available, need to rebuild.
-
-        response = cache.get(cache_key, None)
-        if response is None:
-            request._cache_update_cache = True
-            return None # No cache information available, need to rebuild.
-
-        request._cache_update_cache = False
-        return response
-
-class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
-    """
-    Cache middleware that provides basic behavior for many simple sites.
-
-    Also used as the hook point for the cache decorator, which is generated
-    using the decorator-from-middleware utility.
-    """
-    def __init__(self, cache_timeout=None, key_prefix=None, cache_anonymous_only=None):
-        self.cache_timeout = cache_timeout
-        if cache_timeout is None:
-            self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
-        self.key_prefix = key_prefix
-        if key_prefix is None:
-            self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
-        if cache_anonymous_only is None:
-            self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)
-        else:
-            self.cache_anonymous_only = cache_anonymous_only
diff --git a/webapp/django/middleware/common.py b/webapp/django/middleware/common.py
deleted file mode 100644
index 270ab99..0000000
--- a/webapp/django/middleware/common.py
+++ /dev/null
@@ -1,134 +0,0 @@
-import re
-
-from django.conf import settings
-from django import http
-from django.core.mail import mail_managers
-from django.utils.http import urlquote
-from django.core import urlresolvers
-from django.utils.hashcompat import md5_constructor
-
-class CommonMiddleware(object):
-    """
-    "Common" middleware for taking care of some basic operations:
-
-        - Forbids access to User-Agents in settings.DISALLOWED_USER_AGENTS
-
-        - URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings,
-          this middleware appends missing slashes and/or prepends missing
-          "www."s.
-
-            - If APPEND_SLASH is set and the initial URL doesn't end with a
-              slash, and it is not found in urlpatterns, a new URL is formed by
-              appending a slash at the end. If this new URL is found in
-              urlpatterns, then an HTTP-redirect is returned to this new URL;
-              otherwise the initial URL is processed as usual.
-
-        - ETags: If the USE_ETAGS setting is set, ETags will be calculated from
-          the entire page content and Not Modified responses will be returned
-          appropriately.
-    """
-
-    def process_request(self, request):
-        """
-        Check for denied User-Agents and rewrite the URL based on
-        settings.APPEND_SLASH and settings.PREPEND_WWW
-        """
-
-        # Check for denied User-Agents
-        if 'HTTP_USER_AGENT' in request.META:
-            for user_agent_regex in settings.DISALLOWED_USER_AGENTS:
-                if user_agent_regex.search(request.META['HTTP_USER_AGENT']):
-                    return http.HttpResponseForbidden('<h1>Forbidden</h1>')
-
-        # Check for a redirect based on settings.APPEND_SLASH
-        # and settings.PREPEND_WWW
-        host = request.get_host()
-        old_url = [host, request.path]
-        new_url = old_url[:]
-
-        if (settings.PREPEND_WWW and old_url[0] and
-                not old_url[0].startswith('www.')):
-            new_url[0] = 'www.' + old_url[0]
-
-        # Append a slash if APPEND_SLASH is set and the URL doesn't have a
-        # trailing slash and there is no pattern for the current path
-        if settings.APPEND_SLASH and (not old_url[1].endswith('/')):
-            try:
-                urlresolvers.resolve(request.path_info)
-            except urlresolvers.Resolver404:
-                new_url[1] = new_url[1] + '/'
-                if settings.DEBUG and request.method == 'POST':
-                    raise RuntimeError, (""
-                    "You called this URL via POST, but the URL doesn't end "
-                    "in a slash and you have APPEND_SLASH set. Django can't "
-                    "redirect to the slash URL while maintaining POST data. "
-                    "Change your form to point to %s%s (note the trailing "
-                    "slash), or set APPEND_SLASH=False in your Django "
-                    "settings.") % (new_url[0], new_url[1])
-
-        if new_url != old_url:
-            # Redirect if the target url exists
-            try:
-                urlresolvers.resolve("%s/" % request.path_info)
-            except urlresolvers.Resolver404:
-                pass
-            else:
-                if new_url[0]:
-                    newurl = "%s://%s%s" % (
-                        request.is_secure() and 'https' or 'http',
-                        new_url[0], urlquote(new_url[1]))
-                else:
-                    newurl = urlquote(new_url[1])
-                if request.GET:
-                    newurl += '?' + request.GET.urlencode()
-                return http.HttpResponsePermanentRedirect(newurl)
-
-        return None
-
-    def process_response(self, request, response):
-        "Check for a flat page (for 404s) and calculate the Etag, if needed."
-        if response.status_code == 404:
-            if settings.SEND_BROKEN_LINK_EMAILS:
-                # If the referrer was from an internal link or a non-search-engine site,
-                # send a note to the managers.
-                domain = request.get_host()
-                referer = request.META.get('HTTP_REFERER', None)
-                is_internal = _is_internal_request(domain, referer)
-                path = request.get_full_path()
-                if referer and not _is_ignorable_404(path) and (is_internal or '?' not in referer):
-                    ua = request.META.get('HTTP_USER_AGENT', '<none>')
-                    ip = request.META.get('REMOTE_ADDR', '<none>')
-                    mail_managers("Broken %slink on %s" % ((is_internal and 'INTERNAL ' or ''), domain),
-                        "Referrer: %s\nRequested URL: %s\nUser agent: %s\nIP address: %s\n" \
-                                  % (referer, request.get_full_path(), ua, ip))
-                return response
-
-        # Use ETags, if requested.
-        if settings.USE_ETAGS:
-            if response.has_header('ETag'):
-                etag = response['ETag']
-            else:
-                etag = '"%s"' % md5_constructor(response.content).hexdigest()
-            if response.status_code >= 200 and response.status_code < 300 and request.META.get('HTTP_IF_NONE_MATCH') == etag:
-                cookies = response.cookies
-                response = http.HttpResponseNotModified()
-                response.cookies = cookies
-            else:
-                response['ETag'] = etag
-
-        return response
-
-def _is_ignorable_404(uri):
-    "Returns True if a 404 at the given URL *shouldn't* notify the site managers"
-    for start in settings.IGNORABLE_404_STARTS:
-        if uri.startswith(start):
-            return True
-    for end in settings.IGNORABLE_404_ENDS:
-        if uri.endswith(end):
-            return True
-    return False
-
-def _is_internal_request(domain, referer):
-    "Return true if the referring URL is the same domain as the current request"
-    # Different subdomains are treated as different domains.
-    return referer is not None and re.match("^https?://%s/" % re.escape(domain), referer)
diff --git a/webapp/django/middleware/doc.py b/webapp/django/middleware/doc.py
deleted file mode 100644
index 48c155c..0000000
--- a/webapp/django/middleware/doc.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.conf import settings
-from django import http
-
-class XViewMiddleware(object):
-    """
-    Adds an X-View header to internal HEAD requests -- used by the documentation system.
-    """
-    def process_view(self, request, view_func, view_args, view_kwargs):
-        """
-        If the request method is HEAD and either the IP is internal or the
-        user is a logged-in staff member, quickly return with an x-header
-        indicating the view function.  This is used by the documentation module
-        to lookup the view function for an arbitrary page.
-        """
-        if request.method == 'HEAD' and (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS or (request.user.is_authenticated() and request.user.is_staff)):
-            response = http.HttpResponse()
-            response['X-View'] = "%s.%s" % (view_func.__module__, view_func.__name__)
-            return response
diff --git a/webapp/django/middleware/gzip.py b/webapp/django/middleware/gzip.py
deleted file mode 100644
index 3b84980..0000000
--- a/webapp/django/middleware/gzip.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import re
-
-from django.utils.text import compress_string
-from django.utils.cache import patch_vary_headers
-
-re_accepts_gzip = re.compile(r'\bgzip\b')
-
-class GZipMiddleware(object):
-    """
-    This middleware compresses content if the browser allows gzip compression.
-    It sets the Vary header accordingly, so that caches will base their storage
-    on the Accept-Encoding header.
-    """
-    def process_response(self, request, response):
-        # It's not worth compressing non-OK or really short responses.
-        if response.status_code != 200 or len(response.content) < 200:
-            return response
-
-        patch_vary_headers(response, ('Accept-Encoding',))
-
-        # Avoid gzipping if we've already got a content-encoding.
-        if response.has_header('Content-Encoding'):
-            return response
-
-        # Older versions of IE have issues with gzipped pages containing either
-        # Javascript and PDF.
-        if "msie" in request.META.get('HTTP_USER_AGENT', '').lower():
-            ctype = response.get('Content-Type', '').lower()
-            if "javascript" in ctype or ctype == "application/pdf":
-                return response
-
-        ae = request.META.get('HTTP_ACCEPT_ENCODING', '')
-        if not re_accepts_gzip.search(ae):
-            return response
-
-        response.content = compress_string(response.content)
-        response['Content-Encoding'] = 'gzip'
-        response['Content-Length'] = str(len(response.content))
-        return response
diff --git a/webapp/django/middleware/http.py b/webapp/django/middleware/http.py
deleted file mode 100644
index 53b65c1..0000000
--- a/webapp/django/middleware/http.py
+++ /dev/null
@@ -1,55 +0,0 @@
-from django.utils.http import http_date
-
-class ConditionalGetMiddleware(object):
-    """
-    Handles conditional GET operations. If the response has a ETag or
-    Last-Modified header, and the request has If-None-Match or
-    If-Modified-Since, the response is replaced by an HttpNotModified.
-
-    Also sets the Date and Content-Length response-headers.
-    """
-    def process_response(self, request, response):
-        response['Date'] = http_date()
-        if not response.has_header('Content-Length'):
-            response['Content-Length'] = str(len(response.content))
-
-        if response.has_header('ETag'):
-            if_none_match = request.META.get('HTTP_IF_NONE_MATCH', None)
-            if if_none_match == response['ETag']:
-                # Setting the status is enough here. The response handling path
-                # automatically removes content for this status code (in
-                # http.conditional_content_removal()).
-                response.status_code = 304
-
-        if response.has_header('Last-Modified'):
-            if_modified_since = request.META.get('HTTP_IF_MODIFIED_SINCE', None)
-            if if_modified_since == response['Last-Modified']:
-                # Setting the status code is enough here (same reasons as
-                # above).
-                response.status_code = 304
-
-        return response
-
-class SetRemoteAddrFromForwardedFor(object):
-    """
-    Middleware that sets REMOTE_ADDR based on HTTP_X_FORWARDED_FOR, if the
-    latter is set. This is useful if you're sitting behind a reverse proxy that
-    causes each request's REMOTE_ADDR to be set to 127.0.0.1.
-
-    Note that this does NOT validate HTTP_X_FORWARDED_FOR. If you're not behind
-    a reverse proxy that sets HTTP_X_FORWARDED_FOR automatically, do not use
-    this middleware. Anybody can spoof the value of HTTP_X_FORWARDED_FOR, and
-    because this sets REMOTE_ADDR based on HTTP_X_FORWARDED_FOR, that means
-    anybody can "fake" their IP address. Only use this when you can absolutely
-    trust the value of HTTP_X_FORWARDED_FOR.
-    """
-    def process_request(self, request):
-        try:
-            real_ip = request.META['HTTP_X_FORWARDED_FOR']
-        except KeyError:
-            return None
-        else:
-            # HTTP_X_FORWARDED_FOR can be a comma-separated list of IPs. The
-            # client's IP will be the first one.
-            real_ip = real_ip.split(",")[0].strip()
-            request.META['REMOTE_ADDR'] = real_ip
diff --git a/webapp/django/middleware/locale.py b/webapp/django/middleware/locale.py
deleted file mode 100644
index b5e4949..0000000
--- a/webapp/django/middleware/locale.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"this is the locale selecting middleware that will look at accept headers"
-
-from django.utils.cache import patch_vary_headers
-from django.utils import translation
-
-class LocaleMiddleware(object):
-    """
-    This is a very simple middleware that parses a request
-    and decides what translation object to install in the current
-    thread context. This allows pages to be dynamically
-    translated to the language the user desires (if the language
-    is available, of course).
-    """
-
-    def process_request(self, request):
-        language = translation.get_language_from_request(request)
-        translation.activate(language)
-        request.LANGUAGE_CODE = translation.get_language()
-
-    def process_response(self, request, response):
-        patch_vary_headers(response, ('Accept-Language',))
-        if 'Content-Language' not in response:
-            response['Content-Language'] = translation.get_language()
-        translation.deactivate()
-        return response
diff --git a/webapp/django/middleware/transaction.py b/webapp/django/middleware/transaction.py
deleted file mode 100644
index 96b1538..0000000
--- a/webapp/django/middleware/transaction.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from django.db import transaction
-
-class TransactionMiddleware(object):
-    """
-    Transaction middleware. If this is enabled, each view function will be run
-    with commit_on_response activated - that way a save() doesn't do a direct
-    commit, the commit is done when a successful response is created. If an
-    exception happens, the database is rolled back.
-    """
-    def process_request(self, request):
-        """Enters transaction management"""
-        transaction.enter_transaction_management()
-        transaction.managed(True)
-
-    def process_exception(self, request, exception):
-        """Rolls back the database and leaves transaction management"""
-        if transaction.is_dirty():
-            transaction.rollback()
-        transaction.leave_transaction_management()
-
-    def process_response(self, request, response):
-        """Commits and leaves transaction management."""
-        if transaction.is_managed():
-            if transaction.is_dirty():
-                transaction.commit()
-            transaction.leave_transaction_management()
-        return response
diff --git a/webapp/django/oldforms/__init__.py b/webapp/django/oldforms/__init__.py
deleted file mode 100644
index b5698ab..0000000
--- a/webapp/django/oldforms/__init__.py
+++ /dev/null
@@ -1,1056 +0,0 @@
-from django.core import validators
-from django.core.exceptions import PermissionDenied
-from django.utils.html import escape
-from django.utils.safestring import mark_safe
-from django.conf import settings
-from django.utils.translation import ugettext, ungettext
-from django.utils.encoding import smart_unicode, force_unicode
-
-FORM_FIELD_ID_PREFIX = 'id_'
-
-class EmptyValue(Exception):
-    "This is raised when empty data is provided"
-    pass
-
-class Manipulator(object):
-    # List of permission strings. User must have at least one to manipulate.
-    # None means everybody has permission.
-    required_permission = ''
-
-    def __init__(self):
-        # List of FormField objects
-        self.fields = []
-
-    def __getitem__(self, field_name):
-        "Looks up field by field name; raises KeyError on failure"
-        for field in self.fields:
-            if field.field_name == field_name:
-                return field
-        raise KeyError, "Field %s not found\n%s" % (field_name, repr(self.fields))
-
-    def __delitem__(self, field_name):
-        "Deletes the field with the given field name; raises KeyError on failure"
-        for i, field in enumerate(self.fields):
-            if field.field_name == field_name:
-                del self.fields[i]
-                return
-        raise KeyError, "Field %s not found" % field_name
-
-    def check_permissions(self, user):
-        """Confirms user has required permissions to use this manipulator; raises
-        PermissionDenied on failure."""
-        if self.required_permission is None:
-            return
-        if user.has_perm(self.required_permission):
-            return
-        raise PermissionDenied
-
-    def prepare(self, new_data):
-        """
-        Makes any necessary preparations to new_data, in place, before data has
-        been validated.
-        """
-        for field in self.fields:
-            field.prepare(new_data)
-
-    def get_validation_errors(self, new_data):
-        "Returns dictionary mapping field_names to error-message lists"
-        errors = {}
-        self.prepare(new_data)
-        for field in self.fields:
-            errors.update(field.get_validation_errors(new_data))
-            val_name = 'validate_%s' % field.field_name
-            if hasattr(self, val_name):
-                val = getattr(self, val_name)
-                try:
-                    field.run_validator(new_data, val)
-                except (validators.ValidationError, validators.CriticalValidationError), e:
-                    errors.setdefault(field.field_name, []).extend(e.messages)
-
-#            if field.is_required and not new_data.get(field.field_name, False):
-#                errors.setdefault(field.field_name, []).append(ugettext_lazy('This field is required.'))
-#                continue
-#            try:
-#                validator_list = field.validator_list
-#                if hasattr(self, 'validate_%s' % field.field_name):
-#                    validator_list.append(getattr(self, 'validate_%s' % field.field_name))
-#                for validator in validator_list:
-#                    if field.is_required or new_data.get(field.field_name, False) or hasattr(validator, 'always_test'):
-#                        try:
-#                            if hasattr(field, 'requires_data_list'):
-#                                validator(new_data.getlist(field.field_name), new_data)
-#                            else:
-#                                validator(new_data.get(field.field_name, ''), new_data)
-#                        except validators.ValidationError, e:
-#                            errors.setdefault(field.field_name, []).extend(e.messages)
-#            # If a CriticalValidationError is raised, ignore any other ValidationErrors
-#            # for this particular field
-#            except validators.CriticalValidationError, e:
-#                errors.setdefault(field.field_name, []).extend(e.messages)
-        return errors
-
-    def save(self, new_data):
-        "Saves the changes and returns the new object"
-        # changes is a dictionary-like object keyed by field_name
-        raise NotImplementedError
-
-    def do_html2python(self, new_data):
-        """
-        Convert the data from HTML data types to Python datatypes, changing the
-        object in place. This happens after validation but before storage. This
-        must happen after validation because html2python functions aren't
-        expected to deal with invalid input.
-        """
-        for field in self.fields:
-            field.convert_post_data(new_data)
-
-class FormWrapper(object):
-    """
-    A wrapper linking a Manipulator to the template system.
-    This allows dictionary-style lookups of formfields. It also handles feeding
-    prepopulated data and validation error messages to the formfield objects.
-    """
-    def __init__(self, manipulator, data=None, error_dict=None, edit_inline=True):
-        self.manipulator = manipulator
-        if data is None:
-            data = {}
-        if error_dict is None:
-            error_dict = {}
-        self.data = data
-        self.error_dict = error_dict
-        self._inline_collections = None
-        self.edit_inline = edit_inline
-
-    def __repr__(self):
-        return repr(self.__dict__)
-
-    def __getitem__(self, key):
-        for field in self.manipulator.fields:
-            if field.field_name == key:
-                data = field.extract_data(self.data)
-                return FormFieldWrapper(field, data, self.error_dict.get(field.field_name, []))
-        if self.edit_inline:
-            self.fill_inline_collections()
-            for inline_collection in self._inline_collections:
-                # The 'orig_name' comparison is for backwards compatibility
-                # with hand-crafted forms.
-                if inline_collection.name == key or (':' not in key and inline_collection.orig_name == key):
-                    return inline_collection
-        raise KeyError, "Could not find Formfield or InlineObjectCollection named %r" % key
-
-    def fill_inline_collections(self):
-        if not self._inline_collections:
-            ic = []
-            related_objects = self.manipulator.get_related_objects()
-            for rel_obj in related_objects:
-                data = rel_obj.extract_data(self.data)
-                inline_collection = InlineObjectCollection(self.manipulator, rel_obj, data, self.error_dict)
-                ic.append(inline_collection)
-            self._inline_collections = ic
-
-    def has_errors(self):
-        return self.error_dict != {}
-
-    def _get_fields(self):
-        try:
-            return self._fields
-        except AttributeError:
-            self._fields = [self.__getitem__(field.field_name) for field in self.manipulator.fields]
-            return self._fields
-
-    fields = property(_get_fields)
-
-class FormFieldWrapper(object):
-    "A bridge between the template system and an individual form field. Used by FormWrapper."
-    def __init__(self, formfield, data, error_list):
-        self.formfield, self.data, self.error_list = formfield, data, error_list
-        self.field_name = self.formfield.field_name # for convenience in templates
-
-    def __str__(self):
-        "Renders the field"
-        return unicode(self).encode('utf-8')
-
-    def __unicode__(self):
-        "Renders the field"
-        return force_unicode(self.formfield.render(self.data))
-
-    def __repr__(self):
-        return '<FormFieldWrapper for "%s">' % self.formfield.field_name
-
-    def field_list(self):
-        """
-        Like __str__(), but returns a list. Use this when the field's render()
-        method returns a list.
-        """
-        return self.formfield.render(self.data)
-
-    def errors(self):
-        return self.error_list
-
-    def html_error_list(self):
-        if self.errors():
-            return mark_safe('<ul class="errorlist"><li>%s</li></ul>' % '</li><li>'.join([escape(e) for e in self.errors()]))
-        else:
-            return mark_safe('')
-
-    def get_id(self):
-        return self.formfield.get_id()
-
-class FormFieldCollection(FormFieldWrapper):
-    "A utility class that gives the template access to a dict of FormFieldWrappers"
-    def __init__(self, formfield_dict):
-        self.formfield_dict = formfield_dict
-
-    def __str__(self):
-        return unicode(self).encode('utf-8')
-
-    def __unicode__(self):
-        return unicode(self.formfield_dict)
-
-    def __getitem__(self, template_key):
-        "Look up field by template key; raise KeyError on failure"
-        return self.formfield_dict[template_key]
-
-    def __repr__(self):
-        return "<FormFieldCollection: %s>" % self.formfield_dict
-
-    def errors(self):
-        "Returns list of all errors in this collection's formfields"
-        errors = []
-        for field in self.formfield_dict.values():
-            if hasattr(field, 'errors'):
-                errors.extend(field.errors())
-        return errors
-
-    def has_errors(self):
-        return bool(len(self.errors()))
-
-    def html_combined_error_list(self):
-        return mark_safe(''.join([field.html_error_list() for field in self.formfield_dict.values() if hasattr(field, 'errors')]))
-
-class InlineObjectCollection(object):
-    "An object that acts like a sparse list of form field collections."
-    def __init__(self, parent_manipulator, rel_obj, data, errors):
-        self.parent_manipulator = parent_manipulator
-        self.rel_obj = rel_obj
-        self.data = data
-        self.errors = errors
-        self._collections = None
-        self.name = rel_obj.name
-        # This is the name used prior to fixing #1839. Needs for backwards
-        # compatibility.
-        self.orig_name = rel_obj.opts.module_name
-
-    def __len__(self):
-        self.fill()
-        return self._collections.__len__()
-
-    def __getitem__(self, k):
-        self.fill()
-        return self._collections.__getitem__(k)
-
-    def __setitem__(self, k, v):
-        self.fill()
-        return self._collections.__setitem__(k,v)
-
-    def __delitem__(self, k):
-        self.fill()
-        return self._collections.__delitem__(k)
-
-    def __iter__(self):
-        self.fill()
-        return iter(self._collections.values())
-
-    def items(self):
-        self.fill()
-        return self._collections.items()
-
-    def fill(self):
-        if self._collections:
-            return
-        else:
-            var_name = self.rel_obj.opts.object_name.lower()
-            collections = {}
-            orig = None
-            if hasattr(self.parent_manipulator, 'original_object'):
-                orig = self.parent_manipulator.original_object
-            orig_list = self.rel_obj.get_list(orig)
-
-            for i, instance in enumerate(orig_list):
-                collection = {'original': instance}
-                for f in self.rel_obj.editable_fields():
-                    for field_name in f.get_manipulator_field_names(''):
-                        full_field_name = '%s.%d.%s' % (var_name, i, field_name)
-                        field = self.parent_manipulator[full_field_name]
-                        data = field.extract_data(self.data)
-                        errors = self.errors.get(full_field_name, [])
-                        collection[field_name] = FormFieldWrapper(field, data, errors)
-                collections[i] = FormFieldCollection(collection)
-            self._collections = collections
-
-
-class FormField(object):
-    """Abstract class representing a form field.
-
-    Classes that extend FormField should define the following attributes:
-        field_name
-            The field's name for use by programs.
-        validator_list
-            A list of validation tests (callback functions) that the data for
-            this field must pass in order to be added or changed.
-        is_required
-            A Boolean. Is it a required field?
-    Subclasses should also implement a render(data) method, which is responsible
-    for rending the form field in XHTML.
-    """
-
-    def __str__(self):
-        return unicode(self).encode('utf-8')
-
-    def __unicode__(self):
-        return self.render(u'')
-
-    def __repr__(self):
-        return 'FormField "%s"' % self.field_name
-
-    def prepare(self, new_data):
-        "Hook for doing something to new_data (in place) before validation."
-        pass
-
-    def html2python(data):
-        "Hook for converting an HTML datatype (e.g. 'on' for checkboxes) to a Python type"
-        return data
-    html2python = staticmethod(html2python)
-
-    def render(self, data):
-        raise NotImplementedError
-
-    def get_member_name(self):
-        if hasattr(self, 'member_name'):
-            return self.member_name
-        else:
-            return self.field_name
-
-    def extract_data(self, data_dict):
-        if hasattr(self, 'requires_data_list') and hasattr(data_dict, 'getlist'):
-            data = data_dict.getlist(self.get_member_name())
-        else:
-            data = data_dict.get(self.get_member_name(), None)
-        if data is None:
-            data = ''
-        return data
-
-    def convert_post_data(self, new_data):
-        name = self.get_member_name()
-        if self.field_name in new_data:
-            d = new_data.getlist(self.field_name)
-            try:
-                converted_data = [self.__class__.html2python(data) for data in d]
-            except ValueError:
-                converted_data = d
-            new_data.setlist(name, converted_data)
-        else:
-            try:
-                #individual fields deal with None values themselves
-                new_data.setlist(name, [self.__class__.html2python(None)])
-            except EmptyValue:
-                new_data.setlist(name, [])
-
-
-    def run_validator(self, new_data, validator):
-        if self.is_required or new_data.get(self.field_name, False) or hasattr(validator, 'always_test'):
-            if hasattr(self, 'requires_data_list'):
-                validator(new_data.getlist(self.field_name), new_data)
-            else:
-                validator(new_data.get(self.field_name, ''), new_data)
-
-    def get_validation_errors(self, new_data):
-        errors = {}
-        if self.is_required and not new_data.get(self.field_name, False):
-            errors.setdefault(self.field_name, []).append(ugettext('This field is required.'))
-            return errors
-        try:
-            for validator in self.validator_list:
-                try:
-                    self.run_validator(new_data, validator)
-                except validators.ValidationError, e:
-                    errors.setdefault(self.field_name, []).extend(e.messages)
-        # If a CriticalValidationError is raised, ignore any other ValidationErrors
-        # for this particular field
-        except validators.CriticalValidationError, e:
-            errors.setdefault(self.field_name, []).extend(e.messages)
-        return errors
-
-    def get_id(self):
-        "Returns the HTML 'id' attribute for this form field."
-        return FORM_FIELD_ID_PREFIX + self.field_name
-
-####################
-# GENERIC WIDGETS  #
-####################
-
-class TextField(FormField):
-    input_type = "text"
-    def __init__(self, field_name, length=30, max_length=None, is_required=False, validator_list=None, member_name=None):
-        if validator_list is None: validator_list = []
-        self.field_name = field_name
-        self.length, self.max_length = length, max_length
-        self.is_required = is_required
-        self.validator_list = [self.isValidLength, self.hasNoNewlines] + validator_list
-        if member_name != None:
-            self.member_name = member_name
-
-    def isValidLength(self, data, form):
-        if data and self.max_length and len(smart_unicode(data)) > self.max_length:
-            raise validators.ValidationError, ungettext("Ensure your text is less than %s character.",
-                "Ensure your text is less than %s characters.", self.max_length) % self.max_length
-
-    def hasNoNewlines(self, data, form):
-        if data and '\n' in data:
-            raise validators.ValidationError, ugettext("Line breaks are not allowed here.")
-
-    def render(self, data):
-        if data is None:
-            data = u''
-        max_length = u''
-        if self.max_length:
-            max_length = u'maxlength="%s" ' % self.max_length
-        return mark_safe(u'<input type="%s" id="%s" class="v%s%s" name="%s" size="%s" value="%s" %s/>' % \
-            (self.input_type, self.get_id(), self.__class__.__name__, self.is_required and u' required' or '',
-            self.field_name, self.length, escape(data), max_length))
-
-    def html2python(data):
-        return data
-    html2python = staticmethod(html2python)
-
-class PasswordField(TextField):
-    input_type = "password"
-
-class LargeTextField(TextField):
-    def __init__(self, field_name, rows=10, cols=40, is_required=False, validator_list=None, max_length=None):
-        if validator_list is None: validator_list = []
-        self.field_name = field_name
-        self.rows, self.cols, self.is_required = rows, cols, is_required
-        self.validator_list = validator_list[:]
-        if max_length:
-            self.validator_list.append(self.isValidLength)
-            self.max_length = max_length
-
-    def render(self, data):
-        if data is None:
-            data = ''
-        return mark_safe(u'<textarea id="%s" class="v%s%s" name="%s" rows="%s" cols="%s">%s</textarea>' % \
-            (self.get_id(), self.__class__.__name__, self.is_required and u' required' or u'',
-            self.field_name, self.rows, self.cols, escape(data)))
-
-class HiddenField(FormField):
-    def __init__(self, field_name, is_required=False, validator_list=None, max_length=None):
-        if validator_list is None: validator_list = []
-        self.field_name, self.is_required = field_name, is_required
-        self.validator_list = validator_list[:]
-
-    def render(self, data):
-        return mark_safe(u'<input type="hidden" id="%s" name="%s" value="%s" />' % \
-            (self.get_id(), self.field_name, escape(data)))
-
-class CheckboxField(FormField):
-    def __init__(self, field_name, checked_by_default=False, validator_list=None, is_required=False):
-        if validator_list is None: validator_list = []
-        self.field_name = field_name
-        self.checked_by_default = checked_by_default
-        self.is_required = is_required
-        self.validator_list = validator_list[:]
-
-    def render(self, data):
-        checked_html = ''
-        if data or (data is '' and self.checked_by_default):
-            checked_html = ' checked="checked"'
-        return mark_safe(u'<input type="checkbox" id="%s" class="v%s" name="%s"%s />' % \
-            (self.get_id(), self.__class__.__name__,
-            self.field_name, checked_html))
-
-    def html2python(data):
-        "Convert value from browser ('on' or '') to a Python boolean"
-        if data == 'on':
-            return True
-        return False
-    html2python = staticmethod(html2python)
-
-class SelectField(FormField):
-    def __init__(self, field_name, choices=None, size=1, is_required=False, validator_list=None, member_name=None):
-        if validator_list is None: validator_list = []
-        if choices is None: choices = []
-        choices = [(k, smart_unicode(v, strings_only=True)) for k, v in choices]
-        self.field_name = field_name
-        # choices is a list of (value, human-readable key) tuples because order matters
-        self.choices, self.size, self.is_required = choices, size, is_required
-        self.validator_list = [self.isValidChoice] + validator_list
-        if member_name != None:
-            self.member_name = member_name
-
-    def render(self, data):
-        output = [u'<select id="%s" class="v%s%s" name="%s" size="%s">' % \
-            (self.get_id(), self.__class__.__name__,
-             self.is_required and u' required' or u'', self.field_name, self.size)]
-        str_data = smart_unicode(data) # normalize to string
-        for value, display_name in self.choices:
-            selected_html = u''
-            if smart_unicode(value) == str_data:
-                selected_html = u' selected="selected"'
-            output.append(u'    <option value="%s"%s>%s</option>' % (escape(value), selected_html, force_unicode(escape(display_name))))
-        output.append(u'  </select>')
-        return mark_safe(u'\n'.join(output))
-
-    def isValidChoice(self, data, form):
-        str_data = smart_unicode(data)
-        str_choices = [smart_unicode(item[0]) for item in self.choices]
-        if str_data not in str_choices:
-            raise validators.ValidationError, ugettext("Select a valid choice; '%(data)s' is not in %(choices)s.") % {'data': str_data, 'choices': str_choices}
-
-class NullSelectField(SelectField):
-    "This SelectField converts blank fields to None"
-    def html2python(data):
-        if not data:
-            return None
-        return data
-    html2python = staticmethod(html2python)
-
-class RadioSelectField(FormField):
-    def __init__(self, field_name, choices=None, ul_class='', is_required=False, validator_list=None, member_name=None):
-        if validator_list is None: validator_list = []
-        if choices is None: choices = []
-        choices = [(k, smart_unicode(v)) for k, v in choices]
-        self.field_name = field_name
-        # choices is a list of (value, human-readable key) tuples because order matters
-        self.choices, self.is_required = choices, is_required
-        self.validator_list = [self.isValidChoice] + validator_list
-        self.ul_class = ul_class
-        if member_name != None:
-            self.member_name = member_name
-
-    def render(self, data):
-        """
-        Returns a special object, RadioFieldRenderer, that is iterable *and*
-        has a default unicode() rendered output.
-
-        This allows for flexible use in templates. You can just use the default
-        rendering:
-
-            {{ field_name }}
-
-        ...which will output the radio buttons in an unordered list.
-        Or, you can manually traverse each radio option for special layout:
-
-            {% for option in field_name.field_list %}
-                {{ option.field }} {{ option.label }}<br />
-            {% endfor %}
-        """
-        class RadioFieldRenderer:
-            def __init__(self, datalist, ul_class):
-                self.datalist, self.ul_class = datalist, ul_class
-            def __unicode__(self):
-                "Default unicode() output for this radio field -- a <ul>"
-                output = [u'<ul%s>' % (self.ul_class and u' class="%s"' % self.ul_class or u'')]
-                output.extend([u'<li>%s %s</li>' % (d['field'], d['label']) for d in self.datalist])
-                output.append(u'</ul>')
-                return mark_safe(u''.join(output))
-            def __iter__(self):
-                for d in self.datalist:
-                    yield d
-            def __len__(self):
-                return len(self.datalist)
-        datalist = []
-        str_data = smart_unicode(data) # normalize to string
-        for i, (value, display_name) in enumerate(self.choices):
-            selected_html = ''
-            if smart_unicode(value) == str_data:
-                selected_html = u' checked="checked"'
-            datalist.append({
-                'value': value,
-                'name': display_name,
-                'field': mark_safe(u'<input type="radio" id="%s" name="%s" value="%s"%s/>' % \
-                    (self.get_id() + u'_' + unicode(i), self.field_name, value, selected_html)),
-                'label': mark_safe(u'<label for="%s">%s</label>' % \
-                    (self.get_id() + u'_' + unicode(i), display_name),
-            )})
-        return RadioFieldRenderer(datalist, self.ul_class)
-
-    def isValidChoice(self, data, form):
-        str_data = smart_unicode(data)
-        str_choices = [smart_unicode(item[0]) for item in self.choices]
-        if str_data not in str_choices:
-            raise validators.ValidationError, ugettext("Select a valid choice; '%(data)s' is not in %(choices)s.") % {'data':str_data, 'choices':str_choices}
-
-class NullBooleanField(SelectField):
-    "This SelectField provides 'Yes', 'No' and 'Unknown', mapping results to True, False or None"
-    def __init__(self, field_name, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        SelectField.__init__(self, field_name, choices=[('1', ugettext('Unknown')), ('2', ugettext('Yes')), ('3', ugettext('No'))],
-            is_required=is_required, validator_list=validator_list)
-
-    def render(self, data):
-        if data is None: data = '1'
-        elif data == True: data = '2'
-        elif data == False: data = '3'
-        return SelectField.render(self, data)
-
-    def html2python(data):
-        return {None: None, '1': None, '2': True, '3': False}[data]
-    html2python = staticmethod(html2python)
-
-class SelectMultipleField(SelectField):
-    requires_data_list = True
-    def render(self, data):
-        output = [u'<select id="%s" class="v%s%s" name="%s" size="%s" multiple="multiple">' % \
-            (self.get_id(), self.__class__.__name__, self.is_required and u' required' or u'',
-            self.field_name, self.size)]
-        str_data_list = map(smart_unicode, data) # normalize to strings
-        for value, choice in self.choices:
-            selected_html = u''
-            if smart_unicode(value) in str_data_list:
-                selected_html = u' selected="selected"'
-            output.append(u'    <option value="%s"%s>%s</option>' % (escape(value), selected_html, force_unicode(escape(choice))))
-        output.append(u'  </select>')
-        return mark_safe(u'\n'.join(output))
-
-    def isValidChoice(self, field_data, all_data):
-        # data is something like ['1', '2', '3']
-        str_choices = [smart_unicode(item[0]) for item in self.choices]
-        for val in map(smart_unicode, field_data):
-            if val not in str_choices:
-                raise validators.ValidationError, ugettext("Select a valid choice; '%(data)s' is not in %(choices)s.") % {'data':val, 'choices':str_choices}
-
-    def html2python(data):
-        if data is None:
-            raise EmptyValue
-        return data
-    html2python = staticmethod(html2python)
-
-class CheckboxSelectMultipleField(SelectMultipleField):
-    """
-    This has an identical interface to SelectMultipleField, except the rendered
-    widget is different. Instead of a <select multiple>, this widget outputs a
-    <ul> of <input type="checkbox">es.
-
-    Of course, that results in multiple form elements for the same "single"
-    field, so this class's prepare() method flattens the split data elements
-    back into the single list that validators, renderers and save() expect.
-    """
-    requires_data_list = True
-    def __init__(self, field_name, choices=None, ul_class='', validator_list=None):
-        if validator_list is None: validator_list = []
-        if choices is None: choices = []
-        self.ul_class = ul_class
-        SelectMultipleField.__init__(self, field_name, choices, size=1, is_required=False, validator_list=validator_list)
-
-    def prepare(self, new_data):
-        # new_data has "split" this field into several fields, so flatten it
-        # back into a single list.
-        data_list = []
-        for value, readable_value in self.choices:
-            if new_data.get('%s%s' % (self.field_name, value), '') == 'on':
-                data_list.append(value)
-        new_data.setlist(self.field_name, data_list)
-
-    def render(self, data):
-        output = [u'<ul%s>' % (self.ul_class and u' class="%s"' % self.ul_class or u'')]
-        str_data_list = map(smart_unicode, data) # normalize to strings
-        for value, choice in self.choices:
-            checked_html = u''
-            if smart_unicode(value) in str_data_list:
-                checked_html = u' checked="checked"'
-            field_name = u'%s%s' % (self.field_name, value)
-            output.append(u'<li><input type="checkbox" id="%s" class="v%s" name="%s"%s value="on" /> <label for="%s">%s</label></li>' % \
-                (self.get_id() + escape(value), self.__class__.__name__, field_name, checked_html,
-                self.get_id() + escape(value), choice))
-        output.append(u'</ul>')
-        return mark_safe(u'\n'.join(output))
-
-####################
-# FILE UPLOADS     #
-####################
-
-class FileUploadField(FormField):
-    def __init__(self, field_name, is_required=False, validator_list=None, max_length=None):
-        if validator_list is None: validator_list = []
-        self.field_name, self.is_required = field_name, is_required
-        self.validator_list = [self.isNonEmptyFile] + validator_list
-
-    def isNonEmptyFile(self, new_data, all_data):
-        if hasattr(new_data, 'upload_errors'):
-            upload_errors = new_data.upload_errors()
-            if upload_errors:
-                raise validators.CriticalValidationError, upload_errors
-        try:
-            file_size = new_data.size
-        except AttributeError:
-            file_size = len(new_data['content'])
-        if not file_size:
-            raise validators.CriticalValidationError, ugettext("The submitted file is empty.")
-
-    def render(self, data):
-        return mark_safe(u'<input type="file" id="%s" class="v%s" name="%s" />' % \
-            (self.get_id(), self.__class__.__name__, self.field_name))
-
-    def prepare(self, new_data):
-        if hasattr(new_data, 'upload_errors'):
-            upload_errors = new_data.upload_errors()
-            new_data[self.field_name] = { '_file_upload_error': upload_errors }
-
-    def html2python(data):
-        if data is None:
-            raise EmptyValue
-        return data
-    html2python = staticmethod(html2python)
-
-class ImageUploadField(FileUploadField):
-    "A FileUploadField that raises CriticalValidationError if the uploaded file isn't an image."
-    def __init__(self, *args, **kwargs):
-        FileUploadField.__init__(self, *args, **kwargs)
-        self.validator_list.insert(0, self.isValidImage)
-
-    def isValidImage(self, field_data, all_data):
-        try:
-            validators.isValidImage(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-####################
-# INTEGERS/FLOATS  #
-####################
-
-class IntegerField(TextField):
-    def __init__(self, field_name, length=10, max_length=None, is_required=False, validator_list=None, member_name=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isInteger] + validator_list
-        if member_name is not None:
-            self.member_name = member_name
-        TextField.__init__(self, field_name, length, max_length, is_required, validator_list)
-
-    def isInteger(self, field_data, all_data):
-        try:
-            validators.isInteger(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-    def html2python(data):
-        if data == '' or data is None:
-            return None
-        return int(data)
-    html2python = staticmethod(html2python)
-
-class SmallIntegerField(IntegerField):
-    def __init__(self, field_name, length=5, max_length=5, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isSmallInteger] + validator_list
-        IntegerField.__init__(self, field_name, length, max_length, is_required, validator_list)
-
-    def isSmallInteger(self, field_data, all_data):
-        if not -32768 <= int(field_data) <= 32767:
-            raise validators.CriticalValidationError, ugettext("Enter a whole number between -32,768 and 32,767.")
-
-class PositiveIntegerField(IntegerField):
-    def __init__(self, field_name, length=10, max_length=None, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isPositive] + validator_list
-        IntegerField.__init__(self, field_name, length, max_length, is_required, validator_list)
-
-    def isPositive(self, field_data, all_data):
-        if int(field_data) < 0:
-            raise validators.CriticalValidationError, ugettext("Enter a positive number.")
-
-class PositiveSmallIntegerField(IntegerField):
-    def __init__(self, field_name, length=5, max_length=None, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isPositiveSmall] + validator_list
-        IntegerField.__init__(self, field_name, length, max_length, is_required, validator_list)
-
-    def isPositiveSmall(self, field_data, all_data):
-        if not 0 <= int(field_data) <= 32767:
-            raise validators.CriticalValidationError, ugettext("Enter a whole number between 0 and 32,767.")
-
-class FloatField(TextField):
-    def __init__(self, field_name, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [validators.isValidFloat] + validator_list
-        TextField.__init__(self, field_name, is_required=is_required, validator_list=validator_list)
-
-    def html2python(data):
-        if data == '' or data is None:
-            return None
-        return float(data)
-    html2python = staticmethod(html2python)
-
-class DecimalField(TextField):
-    def __init__(self, field_name, max_digits, decimal_places, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        self.max_digits, self.decimal_places = max_digits, decimal_places
-        validator_list = [self.isValidDecimal] + validator_list
-        # Initialise the TextField, making sure it's large enough to fit the number with a - sign and a decimal point.
-        super(DecimalField, self).__init__(field_name, max_digits+2, max_digits+2, is_required, validator_list)
-
-    def isValidDecimal(self, field_data, all_data):
-        v = validators.IsValidDecimal(self.max_digits, self.decimal_places)
-        try:
-            v(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-    def html2python(data):
-        if data == '' or data is None:
-            return None
-        try:
-            import decimal
-        except ImportError:
-            from django.utils import _decimal as decimal
-        try:
-            return decimal.Decimal(data)
-        except decimal.InvalidOperation, e:
-            raise ValueError, e
-    html2python = staticmethod(html2python)
-
-####################
-# DATES AND TIMES  #
-####################
-
-class DatetimeField(TextField):
-    """A FormField that automatically converts its data to a datetime.datetime object.
-    The data should be in the format YYYY-MM-DD HH:MM:SS."""
-    def __init__(self, field_name, length=30, max_length=None, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        self.field_name = field_name
-        self.length, self.max_length = length, max_length
-        self.is_required = is_required
-        self.validator_list = [validators.isValidANSIDatetime] + validator_list
-
-    def html2python(data):
-        "Converts the field into a datetime.datetime object"
-        import datetime
-        try:
-            date, time = data.split()
-            y, m, d = date.split('-')
-            timebits = time.split(':')
-            h, mn = timebits[:2]
-            if len(timebits) > 2:
-                s = int(timebits[2])
-            else:
-                s = 0
-            return datetime.datetime(int(y), int(m), int(d), int(h), int(mn), s)
-        except ValueError:
-            return None
-    html2python = staticmethod(html2python)
-
-class DateField(TextField):
-    """A FormField that automatically converts its data to a datetime.date object.
-    The data should be in the format YYYY-MM-DD."""
-    def __init__(self, field_name, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isValidDate] + validator_list
-        TextField.__init__(self, field_name, length=10, max_length=10,
-            is_required=is_required, validator_list=validator_list)
-
-    def isValidDate(self, field_data, all_data):
-        try:
-            validators.isValidANSIDate(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-    def html2python(data):
-        "Converts the field into a datetime.date object"
-        import time, datetime
-        try:
-            time_tuple = time.strptime(data, '%Y-%m-%d')
-            return datetime.date(*time_tuple[0:3])
-        except (ValueError, TypeError):
-            return None
-    html2python = staticmethod(html2python)
-
-class TimeField(TextField):
-    """A FormField that automatically converts its data to a datetime.time object.
-    The data should be in the format HH:MM:SS or HH:MM:SS.mmmmmm."""
-    def __init__(self, field_name, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isValidTime] + validator_list
-        TextField.__init__(self, field_name, length=8, max_length=8,
-            is_required=is_required, validator_list=validator_list)
-
-    def isValidTime(self, field_data, all_data):
-        try:
-            validators.isValidANSITime(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-    def html2python(data):
-        "Converts the field into a datetime.time object"
-        import time, datetime
-        try:
-            part_list = data.split('.')
-            try:
-                time_tuple = time.strptime(part_list[0], '%H:%M:%S')
-            except ValueError: # seconds weren't provided
-                time_tuple = time.strptime(part_list[0], '%H:%M')
-            t = datetime.time(*time_tuple[3:6])
-            if (len(part_list) == 2):
-                t = t.replace(microsecond=int(part_list[1]))
-            return t
-        except (ValueError, TypeError, AttributeError):
-            return None
-    html2python = staticmethod(html2python)
-
-####################
-# INTERNET-RELATED #
-####################
-
-class EmailField(TextField):
-    "A convenience FormField for validating e-mail addresses"
-    def __init__(self, field_name, length=50, max_length=75, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isValidEmail] + validator_list
-        TextField.__init__(self, field_name, length, max_length=max_length,
-            is_required=is_required, validator_list=validator_list)
-
-    def isValidEmail(self, field_data, all_data):
-        try:
-            validators.isValidEmail(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-class URLField(TextField):
-    "A convenience FormField for validating URLs"
-    def __init__(self, field_name, length=50, max_length=200, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isValidURL] + validator_list
-        TextField.__init__(self, field_name, length=length, max_length=max_length,
-            is_required=is_required, validator_list=validator_list)
-
-    def isValidURL(self, field_data, all_data):
-        try:
-            validators.isValidURL(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-class IPAddressField(TextField):
-    def __init__(self, field_name, length=15, max_length=15, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isValidIPAddress] + validator_list
-        TextField.__init__(self, field_name, length=length, max_length=max_length,
-            is_required=is_required, validator_list=validator_list)
-
-    def isValidIPAddress(self, field_data, all_data):
-        try:
-            validators.isValidIPAddress4(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-    def html2python(data):
-        return data or None
-    html2python = staticmethod(html2python)
-
-####################
-# MISCELLANEOUS    #
-####################
-
-class FilePathField(SelectField):
-    "A SelectField whose choices are the files in a given directory."
-    def __init__(self, field_name, path, match=None, recursive=False, is_required=False, validator_list=None, max_length=None):
-        import os
-        from django.db.models import BLANK_CHOICE_DASH
-        if match is not None:
-            import re
-            match_re = re.compile(match)
-        choices = not is_required and BLANK_CHOICE_DASH[:] or []
-        if recursive:
-            for root, dirs, files in os.walk(path):
-                for f in files:
-                    if match is None or match_re.search(f):
-                        f = os.path.join(root, f)
-                        choices.append((f, f.replace(path, "", 1)))
-        else:
-            try:
-                for f in os.listdir(path):
-                    full_file = os.path.join(path, f)
-                    if os.path.isfile(full_file) and (match is None or match_re.search(f)):
-                        choices.append((full_file, f))
-            except OSError:
-                pass
-        SelectField.__init__(self, field_name, choices, 1, is_required, validator_list)
-
-class PhoneNumberField(TextField):
-    "A convenience FormField for validating phone numbers (e.g. '630-555-1234')"
-    def __init__(self, field_name, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isValidPhone] + validator_list
-        TextField.__init__(self, field_name, length=12, max_length=12,
-            is_required=is_required, validator_list=validator_list)
-
-    def isValidPhone(self, field_data, all_data):
-        try:
-            validators.isValidPhone(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-class USStateField(TextField):
-    "A convenience FormField for validating U.S. states (e.g. 'IL')"
-    def __init__(self, field_name, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isValidUSState] + validator_list
-        TextField.__init__(self, field_name, length=2, max_length=2,
-            is_required=is_required, validator_list=validator_list)
-
-    def isValidUSState(self, field_data, all_data):
-        try:
-            validators.isValidUSState(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-    def html2python(data):
-        if data:
-            return data.upper() # Should always be stored in upper case
-        return data
-    html2python = staticmethod(html2python)
-
-class CommaSeparatedIntegerField(TextField):
-    "A convenience FormField for validating comma-separated integer fields"
-    def __init__(self, field_name, max_length=None, is_required=False, validator_list=None):
-        if validator_list is None: validator_list = []
-        validator_list = [self.isCommaSeparatedIntegerList] + validator_list
-        TextField.__init__(self, field_name, length=20, max_length=max_length,
-            is_required=is_required, validator_list=validator_list)
-
-    def isCommaSeparatedIntegerList(self, field_data, all_data):
-        try:
-            validators.isCommaSeparatedIntegerList(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
-
-    def render(self, data):
-        if data is None:
-            data = u''
-        elif isinstance(data, (list, tuple)):
-            data = u','.join(data)
-        return super(CommaSeparatedIntegerField, self).render(data)
-
-class RawIdAdminField(CommaSeparatedIntegerField):
-    def html2python(data):
-        if data:
-            return data.split(',')
-        else:
-            return []
-    html2python = staticmethod(html2python)
-
-class XMLLargeTextField(LargeTextField):
-    """
-    A LargeTextField with an XML validator. The schema_path argument is the
-    full path to a Relax NG compact schema to validate against.
-    """
-    def __init__(self, field_name, schema_path, **kwargs):
-        self.schema_path = schema_path
-        kwargs.setdefault('validator_list', []).insert(0, self.isValidXML)
-        LargeTextField.__init__(self, field_name, **kwargs)
-
-    def isValidXML(self, field_data, all_data):
-        v = validators.RelaxNGCompact(self.schema_path)
-        try:
-            v(field_data, all_data)
-        except validators.ValidationError, e:
-            raise validators.CriticalValidationError, e.messages
diff --git a/webapp/django/shortcuts/__init__.py b/webapp/django/shortcuts/__init__.py
deleted file mode 100644
index 1cece7c..0000000
--- a/webapp/django/shortcuts/__init__.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
-This module collects helper functions and classes that "span" multiple levels
-of MVC. In other words, these functions/classes introduce controlled coupling
-for convenience's sake.
-"""
-
-from django.template import loader
-from django.http import HttpResponse, Http404
-from django.db.models.manager import Manager
-from django.db.models.query import QuerySet
-
-def render_to_response(*args, **kwargs):
-    """
-    Returns a HttpResponse whose content is filled with the result of calling
-    django.template.loader.render_to_string() with the passed arguments.
-    """
-    httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
-    return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
-
-def _get_queryset(klass):
-    """
-    Returns a QuerySet from a Model, Manager, or QuerySet. Created to make
-    get_object_or_404 and get_list_or_404 more DRY.
-    """
-    if isinstance(klass, QuerySet):
-        return klass
-    elif isinstance(klass, Manager):
-        manager = klass
-    else:
-        manager = klass._default_manager
-    return manager.all()
-
-def get_object_or_404(klass, *args, **kwargs):
-    """
-    Uses get() to return an object, or raises a Http404 exception if the object
-    does not exist.
-
-    klass may be a Model, Manager, or QuerySet object. All other passed
-    arguments and keyword arguments are used in the get() query.
-
-    Note: Like with get(), an MultipleObjectsReturned will be raised if more than one
-    object is found.
-    """
-    queryset = _get_queryset(klass)
-    try:
-        return queryset.get(*args, **kwargs)
-    except queryset.model.DoesNotExist:
-        raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
-
-def get_list_or_404(klass, *args, **kwargs):
-    """
-    Uses filter() to return a list of objects, or raise a Http404 exception if
-    the list is empty.
-
-    klass may be a Model, Manager, or QuerySet object. All other passed
-    arguments and keyword arguments are used in the filter() query.
-    """
-    queryset = _get_queryset(klass)
-    obj_list = list(queryset.filter(*args, **kwargs))
-    if not obj_list:
-        raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
-    return obj_list
diff --git a/webapp/django/template/__init__.py b/webapp/django/template/__init__.py
deleted file mode 100644
index ffdb4e4..0000000
--- a/webapp/django/template/__init__.py
+++ /dev/null
@@ -1,939 +0,0 @@
-"""
-This is the Django template system.
-
-How it works:
-
-The Lexer.tokenize() function converts a template string (i.e., a string containing
-markup with custom template tags) to tokens, which can be either plain text
-(TOKEN_TEXT), variables (TOKEN_VAR) or block statements (TOKEN_BLOCK).
-
-The Parser() class takes a list of tokens in its constructor, and its parse()
-method returns a compiled template -- which is, under the hood, a list of
-Node objects.
-
-Each Node is responsible for creating some sort of output -- e.g. simple text
-(TextNode), variable values in a given context (VariableNode), results of basic
-logic (IfNode), results of looping (ForNode), or anything else. The core Node
-types are TextNode, VariableNode, IfNode and ForNode, but plugin modules can
-define their own custom node types.
-
-Each Node has a render() method, which takes a Context and returns a string of
-the rendered node. For example, the render() method of a Variable Node returns
-the variable's value as a string. The render() method of an IfNode returns the
-rendered output of whatever was inside the loop, recursively.
-
-The Template class is a convenient wrapper that takes care of template
-compilation and rendering.
-
-Usage:
-
-The only thing you should ever use directly in this file is the Template class.
-Create a compiled template object with a template_string, then call render()
-with a context. In the compilation stage, the TemplateSyntaxError exception
-will be raised if the template doesn't have proper syntax.
-
-Sample code:
-
->>> from django import template
->>> s = u'<html>{% if test %}<h1>{{ varvalue }}</h1>{% endif %}</html>'
->>> t = template.Template(s)
-
-(t is now a compiled template, and its render() method can be called multiple
-times with multiple contexts)
-
->>> c = template.Context({'test':True, 'varvalue': 'Hello'})
->>> t.render(c)
-u'<html><h1>Hello</h1></html>'
->>> c = template.Context({'test':False, 'varvalue': 'Hello'})
->>> t.render(c)
-u'<html></html>'
-"""
-import re
-from inspect import getargspec
-from django.conf import settings
-from django.template.context import Context, RequestContext, ContextPopException
-from django.utils.itercompat import is_iterable
-from django.utils.functional import curry, Promise
-from django.utils.text import smart_split
-from django.utils.encoding import smart_unicode, force_unicode
-from django.utils.translation import ugettext as _
-from django.utils.safestring import SafeData, EscapeData, mark_safe, mark_for_escaping
-from django.utils.html import escape
-
-__all__ = ('Template', 'Context', 'RequestContext', 'compile_string')
-
-TOKEN_TEXT = 0
-TOKEN_VAR = 1
-TOKEN_BLOCK = 2
-TOKEN_COMMENT = 3
-
-# template syntax constants
-FILTER_SEPARATOR = '|'
-FILTER_ARGUMENT_SEPARATOR = ':'
-VARIABLE_ATTRIBUTE_SEPARATOR = '.'
-BLOCK_TAG_START = '{%'
-BLOCK_TAG_END = '%}'
-VARIABLE_TAG_START = '{{'
-VARIABLE_TAG_END = '}}'
-COMMENT_TAG_START = '{#'
-COMMENT_TAG_END = '#}'
-SINGLE_BRACE_START = '{'
-SINGLE_BRACE_END = '}'
-
-ALLOWED_VARIABLE_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.'
-
-# what to report as the origin for templates that come from non-loader sources
-# (e.g. strings)
-UNKNOWN_SOURCE="&lt;unknown source&gt;"
-
-# match a variable or block tag and capture the entire tag, including start/end delimiters
-tag_re = re.compile('(%s.*?%s|%s.*?%s|%s.*?%s)' % (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END),
-                                          re.escape(VARIABLE_TAG_START), re.escape(VARIABLE_TAG_END),
-                                          re.escape(COMMENT_TAG_START), re.escape(COMMENT_TAG_END)))
-
-# global dictionary of libraries that have been loaded using get_library
-libraries = {}
-# global list of libraries to load by default for a new parser
-builtins = []
-
-# True if TEMPLATE_STRING_IF_INVALID contains a format string (%s). None means
-# uninitialised.
-invalid_var_format_string = None
-
-class TemplateSyntaxError(Exception):
-    def __str__(self):
-        try:
-            import cStringIO as StringIO
-        except ImportError:
-            import StringIO
-        output = StringIO.StringIO()
-        output.write(Exception.__str__(self))
-        # Check if we wrapped an exception and print that too.
-        if hasattr(self, 'exc_info'):
-            import traceback
-            output.write('\n\nOriginal ')
-            e = self.exc_info
-            traceback.print_exception(e[0], e[1], e[2], 500, output)
-        return output.getvalue()
-
-class TemplateDoesNotExist(Exception):
-    pass
-
-class TemplateEncodingError(Exception):
-    pass
-
-class VariableDoesNotExist(Exception):
-
-    def __init__(self, msg, params=()):
-        self.msg = msg
-        self.params = params
-
-    def __str__(self):
-        return unicode(self).encode('utf-8')
-
-    def __unicode__(self):
-        return self.msg % tuple([force_unicode(p, errors='replace') for p in self.params])
-
-class InvalidTemplateLibrary(Exception):
-    pass
-
-class Origin(object):
-    def __init__(self, name):
-        self.name = name
-
-    def reload(self):
-        raise NotImplementedError
-
-    def __str__(self):
-        return self.name
-
-class StringOrigin(Origin):
-    def __init__(self, source):
-        super(StringOrigin, self).__init__(UNKNOWN_SOURCE)
-        self.source = source
-
-    def reload(self):
-        return self.source
-
-class Template(object):
-    def __init__(self, template_string, origin=None, name='<Unknown Template>'):
-        try:
-            template_string = smart_unicode(template_string)
-        except UnicodeDecodeError:
-            raise TemplateEncodingError("Templates can only be constructed from unicode or UTF-8 strings.")
-        if settings.TEMPLATE_DEBUG and origin is None:
-            origin = StringOrigin(template_string)
-        self.nodelist = compile_string(template_string, origin)
-        self.name = name
-
-    def __iter__(self):
-        for node in self.nodelist:
-            for subnode in node:
-                yield subnode
-
-    def render(self, context):
-        "Display stage -- can be called many times"
-        return self.nodelist.render(context)
-
-def compile_string(template_string, origin):
-    "Compiles template_string into NodeList ready for rendering"
-    if settings.TEMPLATE_DEBUG:
-        from debug import DebugLexer, DebugParser
-        lexer_class, parser_class = DebugLexer, DebugParser
-    else:
-        lexer_class, parser_class = Lexer, Parser
-    lexer = lexer_class(template_string, origin)
-    parser = parser_class(lexer.tokenize())
-    return parser.parse()
-
-class Token(object):
-    def __init__(self, token_type, contents):
-        # token_type must be TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK or TOKEN_COMMENT.
-        self.token_type, self.contents = token_type, contents
-
-    def __str__(self):
-        return '<%s token: "%s...">' % \
-            ({TOKEN_TEXT: 'Text', TOKEN_VAR: 'Var', TOKEN_BLOCK: 'Block', TOKEN_COMMENT: 'Comment'}[self.token_type],
-            self.contents[:20].replace('\n', ''))
-
-    def split_contents(self):
-        return list(smart_split(self.contents))
-
-class Lexer(object):
-    def __init__(self, template_string, origin):
-        self.template_string = template_string
-        self.origin = origin
-
-    def tokenize(self):
-        "Return a list of tokens from a given template_string."
-        in_tag = False
-        result = []
-        for bit in tag_re.split(self.template_string):
-            if bit:
-                result.append(self.create_token(bit, in_tag))
-            in_tag = not in_tag
-        return result
-
-    def create_token(self, token_string, in_tag):
-        """
-        Convert the given token string into a new Token object and return it.
-        If in_tag is True, we are processing something that matched a tag,
-        otherwise it should be treated as a literal string.
-        """
-        if in_tag:
-            if token_string.startswith(VARIABLE_TAG_START):
-                token = Token(TOKEN_VAR, token_string[len(VARIABLE_TAG_START):-len(VARIABLE_TAG_END)].strip())
-            elif token_string.startswith(BLOCK_TAG_START):
-                token = Token(TOKEN_BLOCK, token_string[len(BLOCK_TAG_START):-len(BLOCK_TAG_END)].strip())
-            elif token_string.startswith(COMMENT_TAG_START):
-                token = Token(TOKEN_COMMENT, '')
-        else:
-            token = Token(TOKEN_TEXT, token_string)
-        return token
-
-class Parser(object):
-    def __init__(self, tokens):
-        self.tokens = tokens
-        self.tags = {}
-        self.filters = {}
-        for lib in builtins:
-            self.add_library(lib)
-
-    def parse(self, parse_until=None):
-        if parse_until is None: parse_until = []
-        nodelist = self.create_nodelist()
-        while self.tokens:
-            token = self.next_token()
-            if token.token_type == TOKEN_TEXT:
-                self.extend_nodelist(nodelist, TextNode(token.contents), token)
-            elif token.token_type == TOKEN_VAR:
-                if not token.contents:
-                    self.empty_variable(token)
-                filter_expression = self.compile_filter(token.contents)
-                var_node = self.create_variable_node(filter_expression)
-                self.extend_nodelist(nodelist, var_node,token)
-            elif token.token_type == TOKEN_BLOCK:
-                if token.contents in parse_until:
-                    # put token back on token list so calling code knows why it terminated
-                    self.prepend_token(token)
-                    return nodelist
-                try:
-                    command = token.contents.split()[0]
-                except IndexError:
-                    self.empty_block_tag(token)
-                # execute callback function for this tag and append resulting node
-                self.enter_command(command, token)
-                try:
-                    compile_func = self.tags[command]
-                except KeyError:
-                    self.invalid_block_tag(token, command)
-                try:
-                    compiled_result = compile_func(self, token)
-                except TemplateSyntaxError, e:
-                    if not self.compile_function_error(token, e):
-                        raise
-                self.extend_nodelist(nodelist, compiled_result, token)
-                self.exit_command()
-        if parse_until:
-            self.unclosed_block_tag(parse_until)
-        return nodelist
-
-    def skip_past(self, endtag):
-        while self.tokens:
-            token = self.next_token()
-            if token.token_type == TOKEN_BLOCK and token.contents == endtag:
-                return
-        self.unclosed_block_tag([endtag])
-
-    def create_variable_node(self, filter_expression):
-        return VariableNode(filter_expression)
-
-    def create_nodelist(self):
-        return NodeList()
-
-    def extend_nodelist(self, nodelist, node, token):
-        if node.must_be_first and nodelist:
-            try:
-                if nodelist.contains_nontext:
-                    raise AttributeError
-            except AttributeError:
-                raise TemplateSyntaxError("%r must be the first tag in the template." % node)
-        if isinstance(nodelist, NodeList) and not isinstance(node, TextNode):
-            nodelist.contains_nontext = True
-        nodelist.append(node)
-
-    def enter_command(self, command, token):
-        pass
-
-    def exit_command(self):
-        pass
-
-    def error(self, token, msg):
-        return TemplateSyntaxError(msg)
-
-    def empty_variable(self, token):
-        raise self.error(token, "Empty variable tag")
-
-    def empty_block_tag(self, token):
-        raise self.error(token, "Empty block tag")
-
-    def invalid_block_tag(self, token, command):
-        raise self.error(token, "Invalid block tag: '%s'" % command)
-
-    def unclosed_block_tag(self, parse_until):
-        raise self.error(None, "Unclosed tags: %s " %  ', '.join(parse_until))
-
-    def compile_function_error(self, token, e):
-        pass
-
-    def next_token(self):
-        return self.tokens.pop(0)
-
-    def prepend_token(self, token):
-        self.tokens.insert(0, token)
-
-    def delete_first_token(self):
-        del self.tokens[0]
-
-    def add_library(self, lib):
-        self.tags.update(lib.tags)
-        self.filters.update(lib.filters)
-
-    def compile_filter(self, token):
-        "Convenient wrapper for FilterExpression"
-        return FilterExpression(token, self)
-
-    def find_filter(self, filter_name):
-        if filter_name in self.filters:
-            return self.filters[filter_name]
-        else:
-            raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name)
-
-class TokenParser(object):
-    """
-    Subclass this and implement the top() method to parse a template line. When
-    instantiating the parser, pass in the line from the Django template parser.
-
-    The parser's "tagname" instance-variable stores the name of the tag that
-    the filter was called with.
-    """
-    def __init__(self, subject):
-        self.subject = subject
-        self.pointer = 0
-        self.backout = []
-        self.tagname = self.tag()
-
-    def top(self):
-        "Overload this method to do the actual parsing and return the result."
-        raise NotImplementedError()
-
-    def more(self):
-        "Returns True if there is more stuff in the tag."
-        return self.pointer < len(self.subject)
-
-    def back(self):
-        "Undoes the last microparser. Use this for lookahead and backtracking."
-        if not len(self.backout):
-            raise TemplateSyntaxError("back called without some previous parsing")
-        self.pointer = self.backout.pop()
-
-    def tag(self):
-        "A microparser that just returns the next tag from the line."
-        subject = self.subject
-        i = self.pointer
-        if i >= len(subject):
-            raise TemplateSyntaxError("expected another tag, found end of string: %s" % subject)
-        p = i
-        while i < len(subject) and subject[i] not in (' ', '\t'):
-            i += 1
-        s = subject[p:i]
-        while i < len(subject) and subject[i] in (' ', '\t'):
-            i += 1
-        self.backout.append(self.pointer)
-        self.pointer = i
-        return s
-
-    def value(self):
-        "A microparser that parses for a value: some string constant or variable name."
-        subject = self.subject
-        i = self.pointer
-        if i >= len(subject):
-            raise TemplateSyntaxError("Searching for value. Expected another value but found end of string: %s" % subject)
-        if subject[i] in ('"', "'"):
-            p = i
-            i += 1
-            while i < len(subject) and subject[i] != subject[p]:
-                i += 1
-            if i >= len(subject):
-                raise TemplateSyntaxError("Searching for value. Unexpected end of string in column %d: %s" % (i, subject))
-            i += 1
-            res = subject[p:i]
-            while i < len(subject) and subject[i] in (' ', '\t'):
-                i += 1
-            self.backout.append(self.pointer)
-            self.pointer = i
-            return res
-        else:
-            p = i
-            while i < len(subject) and subject[i] not in (' ', '\t'):
-                if subject[i] in ('"', "'"):
-                    c = subject[i]
-                    i += 1
-                    while i < len(subject) and subject[i] != c:
-                        i += 1
-                    if i >= len(subject):
-                        raise TemplateSyntaxError("Searching for value. Unexpected end of string in column %d: %s" % (i, subject))
-                i += 1
-            s = subject[p:i]
-            while i < len(subject) and subject[i] in (' ', '\t'):
-                i += 1
-            self.backout.append(self.pointer)
-            self.pointer = i
-            return s
-
-filter_raw_string = r"""
-^%(i18n_open)s"(?P<i18n_constant>%(str)s)"%(i18n_close)s|
-^"(?P<constant>%(str)s)"|
-^(?P<var>[%(var_chars)s]+)|
- (?:%(filter_sep)s
-     (?P<filter_name>\w+)
-         (?:%(arg_sep)s
-             (?:
-              %(i18n_open)s"(?P<i18n_arg>%(str)s)"%(i18n_close)s|
-              "(?P<constant_arg>%(str)s)"|
-              (?P<var_arg>[%(var_chars)s]+)
-             )
-         )?
- )""" % {
-    'str': r"""[^"\\]*(?:\\.[^"\\]*)*""",
-    'var_chars': "\w\." ,
-    'filter_sep': re.escape(FILTER_SEPARATOR),
-    'arg_sep': re.escape(FILTER_ARGUMENT_SEPARATOR),
-    'i18n_open' : re.escape("_("),
-    'i18n_close' : re.escape(")"),
-  }
-
-filter_raw_string = filter_raw_string.replace("\n", "").replace(" ", "")
-filter_re = re.compile(filter_raw_string, re.UNICODE)
-
-class FilterExpression(object):
-    """
-    Parses a variable token and its optional filters (all as a single string),
-    and return a list of tuples of the filter name and arguments.
-    Sample:
-        >>> token = 'variable|default:"Default value"|date:"Y-m-d"'
-        >>> p = Parser('')
-        >>> fe = FilterExpression(token, p)
-        >>> len(fe.filters)
-        2
-        >>> fe.var
-        <Variable: 'variable'>
-
-    This class should never be instantiated outside of the
-    get_filters_from_token helper function.
-    """
-    def __init__(self, token, parser):
-        self.token = token
-        matches = filter_re.finditer(token)
-        var = None
-        filters = []
-        upto = 0
-        for match in matches:
-            start = match.start()
-            if upto != start:
-                raise TemplateSyntaxError("Could not parse some characters: %s|%s|%s"  % \
-                                           (token[:upto], token[upto:start], token[start:]))
-            if var == None:
-                var, constant, i18n_constant = match.group("var", "constant", "i18n_constant")
-                if i18n_constant is not None:
-                    # Don't pass the empty string to gettext, because the empty
-                    # string translates to meta information.
-                    if i18n_constant == "":
-                        var = '""'
-                    else:
-                        var = '"%s"' %  _(i18n_constant.replace(r'\"', '"'))
-                elif constant is not None:
-                    var = '"%s"' % constant.replace(r'\"', '"')
-                upto = match.end()
-                if var == None:
-                    raise TemplateSyntaxError("Could not find variable at start of %s" % token)
-                elif var.find(VARIABLE_ATTRIBUTE_SEPARATOR + '_') > -1 or var[0] == '_':
-                    raise TemplateSyntaxError("Variables and attributes may not begin with underscores: '%s'" % var)
-            else:
-                filter_name = match.group("filter_name")
-                args = []
-                constant_arg, i18n_arg, var_arg = match.group("constant_arg", "i18n_arg", "var_arg")
-                if i18n_arg:
-                    args.append((False, _(i18n_arg.replace(r'\"', '"'))))
-                elif constant_arg is not None:
-                    args.append((False, constant_arg.replace(r'\"', '"')))
-                elif var_arg:
-                    args.append((True, Variable(var_arg)))
-                filter_func = parser.find_filter(filter_name)
-                self.args_check(filter_name,filter_func, args)
-                filters.append( (filter_func,args))
-                upto = match.end()
-        if upto != len(token):
-            raise TemplateSyntaxError("Could not parse the remainder: '%s' from '%s'" % (token[upto:], token))
-        self.filters = filters
-        self.var = Variable(var)
-
-    def resolve(self, context, ignore_failures=False):
-        try:
-            obj = self.var.resolve(context)
-        except VariableDoesNotExist:
-            if ignore_failures:
-                obj = None
-            else:
-                if settings.TEMPLATE_STRING_IF_INVALID:
-                    global invalid_var_format_string
-                    if invalid_var_format_string is None:
-                        invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID
-                    if invalid_var_format_string:
-                        return settings.TEMPLATE_STRING_IF_INVALID % self.var
-                    return settings.TEMPLATE_STRING_IF_INVALID
-                else:
-                    obj = settings.TEMPLATE_STRING_IF_INVALID
-        for func, args in self.filters:
-            arg_vals = []
-            for lookup, arg in args:
-                if not lookup:
-                    arg_vals.append(mark_safe(arg))
-                else:
-                    arg_vals.append(arg.resolve(context))
-            if getattr(func, 'needs_autoescape', False):
-                new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
-            else:
-                new_obj = func(obj, *arg_vals)
-            if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
-                obj = mark_safe(new_obj)
-            elif isinstance(obj, EscapeData):
-                obj = mark_for_escaping(new_obj)
-            else:
-                obj = new_obj
-        return obj
-
-    def args_check(name, func, provided):
-        provided = list(provided)
-        plen = len(provided)
-        # Check to see if a decorator is providing the real function.
-        func = getattr(func, '_decorated_function', func)
-        args, varargs, varkw, defaults = getargspec(func)
-        # First argument is filter input.
-        args.pop(0)
-        if defaults:
-            nondefs = args[:-len(defaults)]
-        else:
-            nondefs = args
-        # Args without defaults must be provided.
-        try:
-            for arg in nondefs:
-                provided.pop(0)
-        except IndexError:
-            # Not enough
-            raise TemplateSyntaxError("%s requires %d arguments, %d provided" % (name, len(nondefs), plen))
-
-        # Defaults can be overridden.
-        defaults = defaults and list(defaults) or []
-        try:
-            for parg in provided:
-                defaults.pop(0)
-        except IndexError:
-            # Too many.
-            raise TemplateSyntaxError("%s requires %d arguments, %d provided" % (name, len(nondefs), plen))
-
-        return True
-    args_check = staticmethod(args_check)
-
-    def __str__(self):
-        return self.token
-
-def resolve_variable(path, context):
-    """
-    Returns the resolved variable, which may contain attribute syntax, within
-    the given context.
-
-    Deprecated; use the Variable class instead.
-    """
-    return Variable(path).resolve(context)
-
-class Variable(object):
-    """
-    A template variable, resolvable against a given context. The variable may be
-    a hard-coded string (if it begins and ends with single or double quote
-    marks)::
-
-        >>> c = {'article': {'section':u'News'}}
-        >>> Variable('article.section').resolve(c)
-        u'News'
-        >>> Variable('article').resolve(c)
-        {'section': u'News'}
-        >>> class AClass: pass
-        >>> c = AClass()
-        >>> c.article = AClass()
-        >>> c.article.section = u'News'
-        >>> Variable('article.section').resolve(c)
-        u'News'
-
-    (The example assumes VARIABLE_ATTRIBUTE_SEPARATOR is '.')
-    """
-
-    def __init__(self, var):
-        self.var = var
-        self.literal = None
-        self.lookups = None
-        self.translate = False
-
-        try:
-            # First try to treat this variable as a number.
-            #
-            # Note that this could cause an OverflowError here that we're not
-            # catching. Since this should only happen at compile time, that's
-            # probably OK.
-            self.literal = float(var)
-
-            # So it's a float... is it an int? If the original value contained a
-            # dot or an "e" then it was a float, not an int.
-            if '.' not in var and 'e' not in var.lower():
-                self.literal = int(self.literal)
-
-            # "2." is invalid
-            if var.endswith('.'):
-                raise ValueError
-
-        except ValueError:
-            # A ValueError means that the variable isn't a number.
-            if var.startswith('_(') and var.endswith(')'):
-                # The result of the lookup should be translated at rendering
-                # time.
-                self.translate = True
-                var = var[2:-1]
-            # If it's wrapped with quotes (single or double), then
-            # we're also dealing with a literal.
-            if var[0] in "\"'" and var[0] == var[-1]:
-                self.literal = mark_safe(var[1:-1])
-            else:
-                # Otherwise we'll set self.lookups so that resolve() knows we're
-                # dealing with a bonafide variable
-                self.lookups = tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))
-
-    def resolve(self, context):
-        """Resolve this variable against a given context."""
-        if self.lookups is not None:
-            # We're dealing with a variable that needs to be resolved
-            value = self._resolve_lookup(context)
-        else:
-            # We're dealing with a literal, so it's already been "resolved"
-            value = self.literal
-        if self.translate:
-            return _(value)
-        return value
-
-    def __repr__(self):
-        return "<%s: %r>" % (self.__class__.__name__, self.var)
-
-    def __str__(self):
-        return self.var
-
-    def _resolve_lookup(self, context):
-        """
-        Performs resolution of a real variable (i.e. not a literal) against the
-        given context.
-
-        As indicated by the method's name, this method is an implementation
-        detail and shouldn't be called by external code. Use Variable.resolve()
-        instead.
-        """
-        current = context
-        for bit in self.lookups:
-            try: # dictionary lookup
-                current = current[bit]
-            except (TypeError, AttributeError, KeyError):
-                try: # attribute lookup
-                    current = getattr(current, bit)
-                    if callable(current):
-                        if getattr(current, 'alters_data', False):
-                            current = settings.TEMPLATE_STRING_IF_INVALID
-                        else:
-                            try: # method call (assuming no args required)
-                                current = current()
-                            except TypeError: # arguments *were* required
-                                # GOTCHA: This will also catch any TypeError
-                                # raised in the function itself.
-                                current = settings.TEMPLATE_STRING_IF_INVALID # invalid method call
-                            except Exception, e:
-                                if getattr(e, 'silent_variable_failure', False):
-                                    current = settings.TEMPLATE_STRING_IF_INVALID
-                                else:
-                                    raise
-                except (TypeError, AttributeError):
-                    try: # list-index lookup
-                        current = current[int(bit)]
-                    except (IndexError, # list index out of range
-                            ValueError, # invalid literal for int()
-                            KeyError,   # current is a dict without `int(bit)` key
-                            TypeError,  # unsubscriptable object
-                            ):
-                        raise VariableDoesNotExist("Failed lookup for key [%s] in %r", (bit, current)) # missing attribute
-                except Exception, e:
-                    if getattr(e, 'silent_variable_failure', False):
-                        current = settings.TEMPLATE_STRING_IF_INVALID
-                    else:
-                        raise
-
-        return current
-
-class Node(object):
-    # Set this to True for nodes that must be first in the template (although
-    # they can be preceded by text nodes.
-    must_be_first = False
-
-    def render(self, context):
-        "Return the node rendered as a string"
-        pass
-
-    def __iter__(self):
-        yield self
-
-    def get_nodes_by_type(self, nodetype):
-        "Return a list of all nodes (within this node and its nodelist) of the given type"
-        nodes = []
-        if isinstance(self, nodetype):
-            nodes.append(self)
-        if hasattr(self, 'nodelist'):
-            nodes.extend(self.nodelist.get_nodes_by_type(nodetype))
-        return nodes
-
-class NodeList(list):
-    # Set to True the first time a non-TextNode is inserted by
-    # extend_nodelist().
-    contains_nontext = False
-
-    def render(self, context):
-        bits = []
-        for node in self:
-            if isinstance(node, Node):
-                bits.append(self.render_node(node, context))
-            else:
-                bits.append(node)
-        return mark_safe(''.join([force_unicode(b) for b in bits]))
-
-    def get_nodes_by_type(self, nodetype):
-        "Return a list of all nodes of the given type"
-        nodes = []
-        for node in self:
-            nodes.extend(node.get_nodes_by_type(nodetype))
-        return nodes
-
-    def render_node(self, node, context):
-        return node.render(context)
-
-class TextNode(Node):
-    def __init__(self, s):
-        self.s = s
-
-    def __repr__(self):
-        return "<Text Node: '%s'>" % self.s[:25]
-
-    def render(self, context):
-        return self.s
-
-class VariableNode(Node):
-    def __init__(self, filter_expression):
-        self.filter_expression = filter_expression
-
-    def __repr__(self):
-        return "<Variable Node: %s>" % self.filter_expression
-
-    def render(self, context):
-        try:
-            output = force_unicode(self.filter_expression.resolve(context))
-        except UnicodeDecodeError:
-            # Unicode conversion can fail sometimes for reasons out of our
-            # control (e.g. exception rendering). In that case, we fail quietly.
-            return ''
-        if (context.autoescape and not isinstance(output, SafeData)) or isinstance(output, EscapeData):
-            return force_unicode(escape(output))
-        else:
-            return force_unicode(output)
-
-def generic_tag_compiler(params, defaults, name, node_class, parser, token):
-    "Returns a template.Node subclass."
-    bits = token.split_contents()[1:]
-    bmax = len(params)
-    def_len = defaults and len(defaults) or 0
-    bmin = bmax - def_len
-    if(len(bits) < bmin or len(bits) > bmax):
-        if bmin == bmax:
-            message = "%s takes %s arguments" % (name, bmin)
-        else:
-            message = "%s takes between %s and %s arguments" % (name, bmin, bmax)
-        raise TemplateSyntaxError(message)
-    return node_class(bits)
-
-class Library(object):
-    def __init__(self):
-        self.filters = {}
-        self.tags = {}
-
-    def tag(self, name=None, compile_function=None):
-        if name == None and compile_function == None:
-            # @register.tag()
-            return self.tag_function
-        elif name != None and compile_function == None:
-            if(callable(name)):
-                # @register.tag
-                return self.tag_function(name)
-            else:
-                # @register.tag('somename') or @register.tag(name='somename')
-                def dec(func):
-                    return self.tag(name, func)
-                return dec
-        elif name != None and compile_function != None:
-            # register.tag('somename', somefunc)
-            self.tags[name] = compile_function
-            return compile_function
-        else:
-            raise InvalidTemplateLibrary("Unsupported arguments to Library.tag: (%r, %r)", (name, compile_function))
-
-    def tag_function(self,func):
-        self.tags[getattr(func, "_decorated_function", func).__name__] = func
-        return func
-
-    def filter(self, name=None, filter_func=None):
-        if name == None and filter_func == None:
-            # @register.filter()
-            return self.filter_function
-        elif filter_func == None:
-            if(callable(name)):
-                # @register.filter
-                return self.filter_function(name)
-            else:
-                # @register.filter('somename') or @register.filter(name='somename')
-                def dec(func):
-                    return self.filter(name, func)
-                return dec
-        elif name != None and filter_func != None:
-            # register.filter('somename', somefunc)
-            self.filters[name] = filter_func
-            return filter_func
-        else:
-            raise InvalidTemplateLibrary("Unsupported arguments to Library.filter: (%r, %r)", (name, filter_func))
-
-    def filter_function(self, func):
-        self.filters[getattr(func, "_decorated_function", func).__name__] = func
-        return func
-
-    def simple_tag(self,func):
-        params, xx, xxx, defaults = getargspec(func)
-
-        class SimpleNode(Node):
-            def __init__(self, vars_to_resolve):
-                self.vars_to_resolve = map(Variable, vars_to_resolve)
-
-            def render(self, context):
-                resolved_vars = [var.resolve(context) for var in self.vars_to_resolve]
-                return func(*resolved_vars)
-
-        compile_func = curry(generic_tag_compiler, params, defaults, getattr(func, "_decorated_function", func).__name__, SimpleNode)
-        compile_func.__doc__ = func.__doc__
-        self.tag(getattr(func, "_decorated_function", func).__name__, compile_func)
-        return func
-
-    def inclusion_tag(self, file_name, context_class=Context, takes_context=False):
-        def dec(func):
-            params, xx, xxx, defaults = getargspec(func)
-            if takes_context:
-                if params[0] == 'context':
-                    params = params[1:]
-                else:
-                    raise TemplateSyntaxError("Any tag function decorated with takes_context=True must have a first argument of 'context'")
-
-            class InclusionNode(Node):
-                def __init__(self, vars_to_resolve):
-                    self.vars_to_resolve = map(Variable, vars_to_resolve)
-
-                def render(self, context):
-                    resolved_vars = [var.resolve(context) for var in self.vars_to_resolve]
-                    if takes_context:
-                        args = [context] + resolved_vars
-                    else:
-                        args = resolved_vars
-
-                    dict = func(*args)
-
-                    if not getattr(self, 'nodelist', False):
-                        from django.template.loader import get_template, select_template
-                        if not isinstance(file_name, basestring) and is_iterable(file_name):
-                            t = select_template(file_name)
-                        else:
-                            t = get_template(file_name)
-                        self.nodelist = t.nodelist
-                    return self.nodelist.render(context_class(dict,
-                            autoescape=context.autoescape))
-
-            compile_func = curry(generic_tag_compiler, params, defaults, getattr(func, "_decorated_function", func).__name__, InclusionNode)
-            compile_func.__doc__ = func.__doc__
-            self.tag(getattr(func, "_decorated_function", func).__name__, compile_func)
-            return func
-        return dec
-
-def get_library(module_name):
-    lib = libraries.get(module_name, None)
-    if not lib:
-        try:
-            mod = __import__(module_name, {}, {}, [''])
-        except ImportError, e:
-            raise InvalidTemplateLibrary("Could not load template library from %s, %s" % (module_name, e))
-        try:
-            lib = mod.register
-            libraries[module_name] = lib
-        except AttributeError:
-            raise InvalidTemplateLibrary("Template library %s does not have a variable named 'register'" % module_name)
-    return lib
-
-def add_to_builtins(module_name):
-    builtins.append(get_library(module_name))
-
-add_to_builtins('django.template.defaulttags')
-add_to_builtins('django.template.defaultfilters')
diff --git a/webapp/django/template/context.py b/webapp/django/template/context.py
deleted file mode 100644
index 8f16a95..0000000
--- a/webapp/django/template/context.py
+++ /dev/null
@@ -1,105 +0,0 @@
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-
-_standard_context_processors = None
-
-class ContextPopException(Exception):
-    "pop() has been called more times than push()"
-    pass
-
-class Context(object):
-    "A stack container for variable context"
-    def __init__(self, dict_=None, autoescape=True):
-        dict_ = dict_ or {}
-        self.dicts = [dict_]
-        self.autoescape = autoescape
-
-    def __repr__(self):
-        return repr(self.dicts)
-
-    def __iter__(self):
-        for d in self.dicts:
-            yield d
-
-    def push(self):
-        d = {}
-        self.dicts = [d] + self.dicts
-        return d
-
-    def pop(self):
-        if len(self.dicts) == 1:
-            raise ContextPopException
-        return self.dicts.pop(0)
-
-    def __setitem__(self, key, value):
-        "Set a variable in the current context"
-        self.dicts[0][key] = value
-
-    def __getitem__(self, key):
-        "Get a variable's value, starting at the current context and going upward"
-        for d in self.dicts:
-            if key in d:
-                return d[key]
-        raise KeyError(key)
-
-    def __delitem__(self, key):
-        "Delete a variable from the current context"
-        del self.dicts[0][key]
-
-    def has_key(self, key):
-        for d in self.dicts:
-            if key in d:
-                return True
-        return False
-
-    __contains__ = has_key
-
-    def get(self, key, otherwise=None):
-        for d in self.dicts:
-            if key in d:
-                return d[key]
-        return otherwise
-
-    def update(self, other_dict):
-        "Like dict.update(). Pushes an entire dictionary's keys and values onto the context."
-        if not hasattr(other_dict, '__getitem__'): 
-            raise TypeError('other_dict must be a mapping (dictionary-like) object.')
-        self.dicts = [other_dict] + self.dicts
-        return other_dict
-
-# This is a function rather than module-level procedural code because we only
-# want it to execute if somebody uses RequestContext.
-def get_standard_processors():
-    global _standard_context_processors
-    if _standard_context_processors is None:
-        processors = []
-        for path in settings.TEMPLATE_CONTEXT_PROCESSORS:
-            i = path.rfind('.')
-            module, attr = path[:i], path[i+1:]
-            try:
-                mod = __import__(module, {}, {}, [attr])
-            except ImportError, e:
-                raise ImproperlyConfigured('Error importing request processor module %s: "%s"' % (module, e))
-            try:
-                func = getattr(mod, attr)
-            except AttributeError:
-                raise ImproperlyConfigured('Module "%s" does not define a "%s" callable request processor' % (module, attr))
-            processors.append(func)
-        _standard_context_processors = tuple(processors)
-    return _standard_context_processors
-
-class RequestContext(Context):
-    """
-    This subclass of template.Context automatically populates itself using
-    the processors defined in TEMPLATE_CONTEXT_PROCESSORS.
-    Additional processors can be specified as a list of callables
-    using the "processors" keyword argument.
-    """
-    def __init__(self, request, dict=None, processors=None):
-        Context.__init__(self, dict)
-        if processors is None:
-            processors = ()
-        else:
-            processors = tuple(processors)
-        for processor in get_standard_processors() + processors:
-            self.update(processor(request))
diff --git a/webapp/django/template/debug.py b/webapp/django/template/debug.py
deleted file mode 100644
index c58c854..0000000
--- a/webapp/django/template/debug.py
+++ /dev/null
@@ -1,97 +0,0 @@
-from django.template import Lexer, Parser, tag_re, NodeList, VariableNode, TemplateSyntaxError
-from django.utils.encoding import force_unicode
-from django.utils.html import escape
-from django.utils.safestring import SafeData, EscapeData
-
-class DebugLexer(Lexer):
-    def __init__(self, template_string, origin):
-        super(DebugLexer, self).__init__(template_string, origin)
-
-    def tokenize(self):
-        "Return a list of tokens from a given template_string"
-        result, upto = [], 0
-        for match in tag_re.finditer(self.template_string):
-            start, end = match.span()
-            if start > upto:
-                result.append(self.create_token(self.template_string[upto:start], (upto, start), False))
-                upto = start
-            result.append(self.create_token(self.template_string[start:end], (start, end), True))
-            upto = end
-        last_bit = self.template_string[upto:]
-        if last_bit:
-            result.append(self.create_token(last_bit, (upto, upto + len(last_bit)), False))
-        return result
-
-    def create_token(self, token_string, source, in_tag):
-        token = super(DebugLexer, self).create_token(token_string, in_tag)
-        token.source = self.origin, source
-        return token
-
-class DebugParser(Parser):
-    def __init__(self, lexer):
-        super(DebugParser, self).__init__(lexer)
-        self.command_stack = []
-
-    def enter_command(self, command, token):
-        self.command_stack.append( (command, token.source) )
-
-    def exit_command(self):
-        self.command_stack.pop()
-
-    def error(self, token, msg):
-        return self.source_error(token.source, msg)
-
-    def source_error(self, source,msg):
-        e = TemplateSyntaxError(msg)
-        e.source = source
-        return e
-
-    def create_nodelist(self):
-        return DebugNodeList()
-
-    def create_variable_node(self, contents):
-        return DebugVariableNode(contents)
-
-    def extend_nodelist(self, nodelist, node, token):
-        node.source = token.source
-        super(DebugParser, self).extend_nodelist(nodelist, node, token)
-
-    def unclosed_block_tag(self, parse_until):
-        command, source = self.command_stack.pop()
-        msg = "Unclosed tag '%s'. Looking for one of: %s " % (command, ', '.join(parse_until))
-        raise self.source_error(source, msg)
-
-    def compile_function_error(self, token, e):
-        if not hasattr(e, 'source'):
-            e.source = token.source
-
-class DebugNodeList(NodeList):
-    def render_node(self, node, context):
-        try:
-            result = node.render(context)
-        except TemplateSyntaxError, e:
-            if not hasattr(e, 'source'):
-                e.source = node.source
-            raise
-        except Exception, e:
-            from sys import exc_info
-            wrapped = TemplateSyntaxError(u'Caught an exception while rendering: %s' % force_unicode(e, errors='replace'))
-            wrapped.source = node.source
-            wrapped.exc_info = exc_info()
-            raise wrapped
-        return result
-
-class DebugVariableNode(VariableNode):
-    def render(self, context):
-        try:
-            output = force_unicode(self.filter_expression.resolve(context))
-        except TemplateSyntaxError, e:
-            if not hasattr(e, 'source'):
-                e.source = self.source
-            raise
-        except UnicodeDecodeError:
-            return ''
-        if (context.autoescape and not isinstance(output, SafeData)) or isinstance(output, EscapeData):
-            return escape(output)
-        else:
-            return output
diff --git a/webapp/django/template/defaultfilters.py b/webapp/django/template/defaultfilters.py
deleted file mode 100644
index 1140f7e..0000000
--- a/webapp/django/template/defaultfilters.py
+++ /dev/null
@@ -1,851 +0,0 @@
-"""Default variable filters."""
-
-import re
-import random as random_module
-try:
-    from functools import wraps
-except ImportError:
-    from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
-
-from django.template import Variable, Library
-from django.conf import settings
-from django.utils.translation import ugettext, ungettext
-from django.utils.encoding import force_unicode, iri_to_uri
-from django.utils.safestring import mark_safe, SafeData
-
-register = Library()
-
-#######################
-# STRING DECORATOR    #
-#######################
-
-def stringfilter(func):
-    """
-    Decorator for filters which should only receive unicode objects. The object
-    passed as the first positional argument will be converted to a unicode
-    object.
-    """
-    def _dec(*args, **kwargs):
-        if args:
-            args = list(args)
-            args[0] = force_unicode(args[0])
-            if isinstance(args[0], SafeData) and getattr(func, 'is_safe', False):
-                return mark_safe(func(*args, **kwargs))
-        return func(*args, **kwargs)
-
-    # Include a reference to the real function (used to check original
-    # arguments by the template parser).
-    _dec._decorated_function = getattr(func, '_decorated_function', func)
-    for attr in ('is_safe', 'needs_autoescape'):
-        if hasattr(func, attr):
-            setattr(_dec, attr, getattr(func, attr))
-    return wraps(func)(_dec)
-
-###################
-# STRINGS         #
-###################
-
-
-def addslashes(value):
-    """
-    Adds slashes before quotes. Useful for escaping strings in CSV, for
-    example. Less useful for escaping JavaScript; use the ``escapejs``
-    filter instead.
-    """
-    return value.replace('\\', '\\\\').replace('"', '\\"').replace("'", "\\'")
-addslashes.is_safe = True
-addslashes = stringfilter(addslashes)
-
-def capfirst(value):
-    """Capitalizes the first character of the value."""
-    return value and value[0].upper() + value[1:]
-capfirst.is_safe=True
-capfirst = stringfilter(capfirst)
-
-_js_escapes = (
-    ('\\', '\\\\'),
-    ('"', '\\"'),
-    ("'", "\\'"),
-    ('\n', '\\n'),
-    ('\r', '\\r'),
-    ('\b', '\\b'),
-    ('\f', '\\f'),
-    ('\t', '\\t'),
-    ('\v', '\\v'),
-    ('</', '<\\/'),
-)
-def escapejs(value):
-    """Backslash-escapes characters for use in JavaScript strings."""
-    for bad, good in _js_escapes:
-        value = value.replace(bad, good)
-    return value
-escapejs = stringfilter(escapejs)
-
-def fix_ampersands(value):
-    """Replaces ampersands with ``&amp;`` entities."""
-    from django.utils.html import fix_ampersands
-    return fix_ampersands(value)
-fix_ampersands.is_safe=True
-fix_ampersands = stringfilter(fix_ampersands)
-
-def floatformat(text, arg=-1):
-    """
-    Displays a float to a specified number of decimal places.
-
-    If called without an argument, it displays the floating point number with
-    one decimal place -- but only if there's a decimal place to be displayed:
-
-    * num1 = 34.23234
-    * num2 = 34.00000
-    * num3 = 34.26000
-    * {{ num1|floatformat }} displays "34.2"
-    * {{ num2|floatformat }} displays "34"
-    * {{ num3|floatformat }} displays "34.3"
-
-    If arg is positive, it will always display exactly arg number of decimal
-    places:
-
-    * {{ num1|floatformat:3 }} displays "34.232"
-    * {{ num2|floatformat:3 }} displays "34.000"
-    * {{ num3|floatformat:3 }} displays "34.260"
-
-    If arg is negative, it will display arg number of decimal places -- but
-    only if there are places to be displayed:
-
-    * {{ num1|floatformat:"-3" }} displays "34.232"
-    * {{ num2|floatformat:"-3" }} displays "34"
-    * {{ num3|floatformat:"-3" }} displays "34.260"
-    """
-    try:
-        f = float(text)
-    except (ValueError, TypeError):
-        return u''
-    try:
-        d = int(arg)
-    except ValueError:
-        return force_unicode(f)
-    try:
-        m = f - int(f)
-    except OverflowError:
-        return force_unicode(f)
-    if not m and d < 0:
-        return mark_safe(u'%d' % int(f))
-    else:
-        formatstr = u'%%.%df' % abs(d)
-        return mark_safe(formatstr % f)
-floatformat.is_safe = True
-
-def iriencode(value):
-    """Escapes an IRI value for use in a URL."""
-    return force_unicode(iri_to_uri(value))
-iriencode.is_safe = True
-iriencode = stringfilter(iriencode)
-
-def linenumbers(value, autoescape=None):
-    """Displays text with line numbers."""
-    from django.utils.html import escape
-    lines = value.split(u'\n')
-    # Find the maximum width of the line count, for use with zero padding
-    # string format command
-    width = unicode(len(unicode(len(lines))))
-    if not autoescape or isinstance(value, SafeData):
-        for i, line in enumerate(lines):
-            lines[i] = (u"%0" + width  + u"d. %s") % (i + 1, line)
-    else:
-        for i, line in enumerate(lines):
-            lines[i] = (u"%0" + width  + u"d. %s") % (i + 1, escape(line))
-    return mark_safe(u'\n'.join(lines))
-linenumbers.is_safe = True
-linenumbers.needs_autoescape = True
-linenumbers = stringfilter(linenumbers)
-
-def lower(value):
-    """Converts a string into all lowercase."""
-    return value.lower()
-lower.is_safe = True
-lower = stringfilter(lower)
-
-def make_list(value):
-    """
-    Returns the value turned into a list.
-
-    For an integer, it's a list of digits.
-    For a string, it's a list of characters.
-    """
-    return list(value)
-make_list.is_safe = False
-make_list = stringfilter(make_list)
-
-def slugify(value):
-    """
-    Normalizes string, converts to lowercase, removes non-alpha characters,
-    and converts spaces to hyphens.
-    """
-    import unicodedata
-    value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
-    value = unicode(re.sub('[^\w\s-]', '', value).strip().lower())
-    return mark_safe(re.sub('[-\s]+', '-', value))
-slugify.is_safe = True
-slugify = stringfilter(slugify)
-
-def stringformat(value, arg):
-    """
-    Formats the variable according to the arg, a string formatting specifier.
-
-    This specifier uses Python string formating syntax, with the exception that
-    the leading "%" is dropped.
-
-    See http://docs.python.org/lib/typesseq-strings.html for documentation
-    of Python string formatting
-    """
-    try:
-        return (u"%" + unicode(arg)) % value
-    except (ValueError, TypeError):
-        return u""
-stringformat.is_safe = True
-
-def title(value):
-    """Converts a string into titlecase."""
-    return re.sub("([a-z])'([A-Z])", lambda m: m.group(0).lower(), value.title())
-title.is_safe = True
-title = stringfilter(title)
-
-def truncatewords(value, arg):
-    """
-    Truncates a string after a certain number of words.
-
-    Argument: Number of words to truncate after.
-    """
-    from django.utils.text import truncate_words
-    try:
-        length = int(arg)
-    except ValueError: # Invalid literal for int().
-        return value # Fail silently.
-    return truncate_words(value, length)
-truncatewords.is_safe = True
-truncatewords = stringfilter(truncatewords)
-
-def truncatewords_html(value, arg):
-    """
-    Truncates HTML after a certain number of words.
-
-    Argument: Number of words to truncate after.
-    """
-    from django.utils.text import truncate_html_words
-    try:
-        length = int(arg)
-    except ValueError: # invalid literal for int()
-        return value # Fail silently.
-    return truncate_html_words(value, length)
-truncatewords_html.is_safe = True
-truncatewords_html = stringfilter(truncatewords_html)
-
-def upper(value):
-    """Converts a string into all uppercase."""
-    return value.upper()
-upper.is_safe = False
-upper = stringfilter(upper)
-
-def urlencode(value):
-    """Escapes a value for use in a URL."""
-    from django.utils.http import urlquote
-    return urlquote(value)
-urlencode.is_safe = False
-urlencode = stringfilter(urlencode)
-
-def urlize(value, autoescape=None):
-    """Converts URLs in plain text into clickable links."""
-    from django.utils.html import urlize
-    return mark_safe(urlize(value, nofollow=True, autoescape=autoescape))
-urlize.is_safe=True
-urlize.needs_autoescape = True
-urlize = stringfilter(urlize)
-
-def urlizetrunc(value, limit, autoescape=None):
-    """
-    Converts URLs into clickable links, truncating URLs to the given character
-    limit, and adding 'rel=nofollow' attribute to discourage spamming.
-
-    Argument: Length to truncate URLs to.
-    """
-    from django.utils.html import urlize
-    return mark_safe(urlize(value, trim_url_limit=int(limit), nofollow=True,
-                            autoescape=autoescape))
-urlizetrunc.is_safe = True
-urlizetrunc.needs_autoescape = True
-urlizetrunc = stringfilter(urlizetrunc)
-
-def wordcount(value):
-    """Returns the number of words."""
-    return len(value.split())
-wordcount.is_safe = False
-wordcount = stringfilter(wordcount)
-
-def wordwrap(value, arg):
-    """
-    Wraps words at specified line length.
-
-    Argument: number of characters to wrap the text at.
-    """
-    from django.utils.text import wrap
-    return wrap(value, int(arg))
-wordwrap.is_safe = True
-wordwrap = stringfilter(wordwrap)
-
-def ljust(value, arg):
-    """
-    Left-aligns the value in a field of a given width.
-
-    Argument: field size.
-    """
-    return value.ljust(int(arg))
-ljust.is_safe = True
-ljust = stringfilter(ljust)
-
-def rjust(value, arg):
-    """
-    Right-aligns the value in a field of a given width.
-
-    Argument: field size.
-    """
-    return value.rjust(int(arg))
-rjust.is_safe = True
-rjust = stringfilter(rjust)
-
-def center(value, arg):
-    """Centers the value in a field of a given width."""
-    return value.center(int(arg))
-center.is_safe = True
-center = stringfilter(center)
-
-def cut(value, arg):
-    """
-    Removes all values of arg from the given string.
-    """
-    safe = isinstance(value, SafeData)
-    value = value.replace(arg, u'')
-    if safe and arg != ';':
-        return mark_safe(value)
-    return value
-cut = stringfilter(cut)
-
-###################
-# HTML STRINGS    #
-###################
-
-def escape(value):
-    """
-    Marks the value as a string that should not be auto-escaped.
-    """
-    from django.utils.safestring import mark_for_escaping
-    return mark_for_escaping(value)
-escape.is_safe = True
-escape = stringfilter(escape)
-
-def force_escape(value):
-    """
-    Escapes a string's HTML. This returns a new string containing the escaped
-    characters (as opposed to "escape", which marks the content for later
-    possible escaping).
-    """
-    from django.utils.html import escape
-    return mark_safe(escape(value))
-force_escape = stringfilter(force_escape)
-force_escape.is_safe = True
-
-def linebreaks(value, autoescape=None):
-    """
-    Replaces line breaks in plain text with appropriate HTML; a single
-    newline becomes an HTML line break (``<br />``) and a new line
-    followed by a blank line becomes a paragraph break (``</p>``).
-    """
-    from django.utils.html import linebreaks
-    autoescape = autoescape and not isinstance(value, SafeData)
-    return mark_safe(linebreaks(value, autoescape))
-linebreaks.is_safe = True
-linebreaks.needs_autoescape = True
-linebreaks = stringfilter(linebreaks)
-
-def linebreaksbr(value, autoescape=None):
-    """
-    Converts all newlines in a piece of plain text to HTML line breaks
-    (``<br />``).
-    """
-    if autoescape and not isinstance(value, SafeData):
-        from django.utils.html import escape
-        value = escape(value)
-    return mark_safe(value.replace('\n', '<br />'))
-linebreaksbr.is_safe = True
-linebreaksbr.needs_autoescape = True
-linebreaksbr = stringfilter(linebreaksbr)
-
-def safe(value):
-    """
-    Marks the value as a string that should not be auto-escaped.
-    """
-    from django.utils.safestring import mark_safe
-    return mark_safe(value)
-safe.is_safe = True
-safe = stringfilter(safe)
-
-def removetags(value, tags):
-    """Removes a space separated list of [X]HTML tags from the output."""
-    tags = [re.escape(tag) for tag in tags.split()]
-    tags_re = u'(%s)' % u'|'.join(tags)
-    starttag_re = re.compile(ur'<%s(/?>|(\s+[^>]*>))' % tags_re, re.U)
-    endtag_re = re.compile(u'</%s>' % tags_re)
-    value = starttag_re.sub(u'', value)
-    value = endtag_re.sub(u'', value)
-    return value
-removetags.is_safe = True
-removetags = stringfilter(removetags)
-
-def striptags(value):
-    """Strips all [X]HTML tags."""
-    from django.utils.html import strip_tags
-    return strip_tags(value)
-striptags.is_safe = True
-striptags = stringfilter(striptags)
-
-###################
-# LISTS           #
-###################
-
-def dictsort(value, arg):
-    """
-    Takes a list of dicts, returns that list sorted by the property given in
-    the argument.
-    """
-    var_resolve = Variable(arg).resolve
-    decorated = [(var_resolve(item), item) for item in value]
-    decorated.sort()
-    return [item[1] for item in decorated]
-dictsort.is_safe = False
-
-def dictsortreversed(value, arg):
-    """
-    Takes a list of dicts, returns that list sorted in reverse order by the
-    property given in the argument.
-    """
-    var_resolve = Variable(arg).resolve
-    decorated = [(var_resolve(item), item) for item in value]
-    decorated.sort()
-    decorated.reverse()
-    return [item[1] for item in decorated]
-dictsortreversed.is_safe = False
-
-def first(value):
-    """Returns the first item in a list."""
-    try:
-        return value[0]
-    except IndexError:
-        return u''
-first.is_safe = False
-
-def join(value, arg):
-    """Joins a list with a string, like Python's ``str.join(list)``."""
-    try:
-        data = arg.join(map(force_unicode, value))
-    except AttributeError: # fail silently but nicely
-        return value
-    safe_args = reduce(lambda lhs, rhs: lhs and isinstance(rhs, SafeData),
-            value, True)
-    if safe_args:
-        return mark_safe(data)
-    else:
-        return data
-join.is_safe = True
-
-def last(value):
-    "Returns the last item in a list"
-    try:
-        return value[-1]
-    except IndexError:
-        return u''
-last.is_safe = True
-
-def length(value):
-    """Returns the length of the value - useful for lists."""
-    return len(value)
-length.is_safe = True
-
-def length_is(value, arg):
-    """Returns a boolean of whether the value's length is the argument."""
-    return len(value) == int(arg)
-length_is.is_safe = True
-
-def random(value):
-    """Returns a random item from the list."""
-    return random_module.choice(value)
-random.is_safe = True
-
-def slice_(value, arg):
-    """
-    Returns a slice of the list.
-
-    Uses the same syntax as Python's list slicing; see
-    http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice
-    for an introduction.
-    """
-    try:
-        bits = []
-        for x in arg.split(u':'):
-            if len(x) == 0:
-                bits.append(None)
-            else:
-                bits.append(int(x))
-        return value[slice(*bits)]
-
-    except (ValueError, TypeError):
-        return value # Fail silently.
-slice_.is_safe = True
-
-def unordered_list(value, autoescape=None):
-    """
-    Recursively takes a self-nested list and returns an HTML unordered list --
-    WITHOUT opening and closing <ul> tags.
-
-    The list is assumed to be in the proper format. For example, if ``var``
-    contains: ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``,
-    then ``{{ var|unordered_list }}`` would return::
-
-        <li>States
-        <ul>
-                <li>Kansas
-                <ul>
-                        <li>Lawrence</li>
-                        <li>Topeka</li>
-                </ul>
-                </li>
-                <li>Illinois</li>
-        </ul>
-        </li>
-    """
-    if autoescape:
-        from django.utils.html import conditional_escape
-        escaper = conditional_escape
-    else:
-        escaper = lambda x: x
-    def convert_old_style_list(list_):
-        """
-        Converts old style lists to the new easier to understand format.
-
-        The old list format looked like:
-            ['Item 1', [['Item 1.1', []], ['Item 1.2', []]]
-
-        And it is converted to:
-            ['Item 1', ['Item 1.1', 'Item 1.2]]
-        """
-        if not isinstance(list_, (tuple, list)) or len(list_) != 2:
-            return list_, False
-        first_item, second_item = list_
-        if second_item == []:
-            return [first_item], True
-        old_style_list = True
-        new_second_item = []
-        for sublist in second_item:
-            item, old_style_list = convert_old_style_list(sublist)
-            if not old_style_list:
-                break
-            new_second_item.extend(item)
-        if old_style_list:
-            second_item = new_second_item
-        return [first_item, second_item], old_style_list
-    def _helper(list_, tabs=1):
-        indent = u'\t' * tabs
-        output = []
-
-        list_length = len(list_)
-        i = 0
-        while i < list_length:
-            title = list_[i]
-            sublist = ''
-            sublist_item = None
-            if isinstance(title, (list, tuple)):
-                sublist_item = title
-                title = ''
-            elif i < list_length - 1:
-                next_item = list_[i+1]
-                if next_item and isinstance(next_item, (list, tuple)):
-                    # The next item is a sub-list.
-                    sublist_item = next_item
-                    # We've processed the next item now too.
-                    i += 1
-            if sublist_item:
-                sublist = _helper(sublist_item, tabs+1)
-                sublist = '\n%s<ul>\n%s\n%s</ul>\n%s' % (indent, sublist,
-                                                         indent, indent)
-            output.append('%s<li>%s%s</li>' % (indent,
-                    escaper(force_unicode(title)), sublist))
-            i += 1
-        return '\n'.join(output)
-    value, converted = convert_old_style_list(value)
-    return mark_safe(_helper(value))
-unordered_list.is_safe = True
-unordered_list.needs_autoescape = True
-
-###################
-# INTEGERS        #
-###################
-
-def add(value, arg):
-    """Adds the arg to the value."""
-    return int(value) + int(arg)
-add.is_safe = False
-
-def get_digit(value, arg):
-    """
-    Given a whole number, returns the requested digit of it, where 1 is the
-    right-most digit, 2 is the second-right-most digit, etc. Returns the
-    original value for invalid input (if input or argument is not an integer,
-    or if argument is less than 1). Otherwise, output is always an integer.
-    """
-    try:
-        arg = int(arg)
-        value = int(value)
-    except ValueError:
-        return value # Fail silently for an invalid argument
-    if arg < 1:
-        return value
-    try:
-        return int(str(value)[-arg])
-    except IndexError:
-        return 0
-get_digit.is_safe = False
-
-###################
-# DATES           #
-###################
-
-def date(value, arg=None):
-    """Formats a date according to the given format."""
-    from django.utils.dateformat import format
-    if not value:
-        return u''
-    if arg is None:
-        arg = settings.DATE_FORMAT
-    return format(value, arg)
-date.is_safe = False
-
-def time(value, arg=None):
-    """Formats a time according to the given format."""
-    from django.utils.dateformat import time_format
-    if value in (None, u''):
-        return u''
-    if arg is None:
-        arg = settings.TIME_FORMAT
-    return time_format(value, arg)
-time.is_safe = False
-
-def timesince(value, arg=None):
-    """Formats a date as the time since that date (i.e. "4 days, 6 hours")."""
-    from django.utils.timesince import timesince
-    if not value:
-        return u''
-    if arg:
-        return timesince(value, arg)
-    return timesince(value)
-timesince.is_safe = False
-
-def timeuntil(value, arg=None):
-    """Formats a date as the time until that date (i.e. "4 days, 6 hours")."""
-    from django.utils.timesince import timesince
-    from datetime import datetime
-    if not value:
-        return u''
-    if arg:
-        return timesince(arg, value)
-    return timesince(datetime.now(), value)
-timeuntil.is_safe = False
-
-###################
-# LOGIC           #
-###################
-
-def default(value, arg):
-    """If value is unavailable, use given default."""
-    return value or arg
-default.is_safe = False
-
-def default_if_none(value, arg):
-    """If value is None, use given default."""
-    if value is None:
-        return arg
-    return value
-default_if_none.is_safe = False
-
-def divisibleby(value, arg):
-    """Returns True if the value is devisible by the argument."""
-    return int(value) % int(arg) == 0
-divisibleby.is_safe = False
-
-def yesno(value, arg=None):
-    """
-    Given a string mapping values for true, false and (optionally) None,
-    returns one of those strings accoding to the value:
-
-    ==========  ======================  ==================================
-    Value       Argument                Outputs
-    ==========  ======================  ==================================
-    ``True``    ``"yeah,no,maybe"``     ``yeah``
-    ``False``   ``"yeah,no,maybe"``     ``no``
-    ``None``    ``"yeah,no,maybe"``     ``maybe``
-    ``None``    ``"yeah,no"``           ``"no"`` (converts None to False
-                                        if no mapping for None is given.
-    ==========  ======================  ==================================
-    """
-    if arg is None:
-        arg = ugettext('yes,no,maybe')
-    bits = arg.split(u',')
-    if len(bits) < 2:
-        return value # Invalid arg.
-    try:
-        yes, no, maybe = bits
-    except ValueError:
-        # Unpack list of wrong size (no "maybe" value provided).
-        yes, no, maybe = bits[0], bits[1], bits[1]
-    if value is None:
-        return maybe
-    if value:
-        return yes
-    return no
-yesno.is_safe = False
-
-###################
-# MISC            #
-###################
-
-def filesizeformat(bytes):
-    """
-    Formats the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB,
-    102 bytes, etc).
-    """
-    try:
-        bytes = float(bytes)
-    except TypeError:
-        return u"0 bytes"
-
-    if bytes < 1024:
-        return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes}
-    if bytes < 1024 * 1024:
-        return ugettext("%.1f KB") % (bytes / 1024)
-    if bytes < 1024 * 1024 * 1024:
-        return ugettext("%.1f MB") % (bytes / (1024 * 1024))
-    return ugettext("%.1f GB") % (bytes / (1024 * 1024 * 1024))
-filesizeformat.is_safe = True
-
-def pluralize(value, arg=u's'):
-    """
-    Returns a plural suffix if the value is not 1. By default, 's' is used as
-    the suffix:
-
-    * If value is 0, vote{{ value|pluralize }} displays "0 votes".
-    * If value is 1, vote{{ value|pluralize }} displays "1 vote".
-    * If value is 2, vote{{ value|pluralize }} displays "2 votes".
-
-    If an argument is provided, that string is used instead:
-
-    * If value is 0, class{{ value|pluralize:"es" }} displays "0 classes".
-    * If value is 1, class{{ value|pluralize:"es" }} displays "1 class".
-    * If value is 2, class{{ value|pluralize:"es" }} displays "2 classes".
-
-    If the provided argument contains a comma, the text before the comma is
-    used for the singular case and the text after the comma is used for the
-    plural case:
-
-    * If value is 0, cand{{ value|pluralize:"y,ies" }} displays "0 candies".
-    * If value is 1, cand{{ value|pluralize:"y,ies" }} displays "1 candy".
-    * If value is 2, cand{{ value|pluralize:"y,ies" }} displays "2 candies".
-    """
-    if not u',' in arg:
-        arg = u',' + arg
-    bits = arg.split(u',')
-    if len(bits) > 2:
-        return u''
-    singular_suffix, plural_suffix = bits[:2]
-
-    try:
-        if int(value) != 1:
-            return plural_suffix
-    except ValueError: # Invalid string that's not a number.
-        pass
-    except TypeError: # Value isn't a string or a number; maybe it's a list?
-        try:
-            if len(value) != 1:
-                return plural_suffix
-        except TypeError: # len() of unsized object.
-            pass
-    return singular_suffix
-pluralize.is_safe = False
-
-def phone2numeric(value):
-    """Takes a phone number and converts it in to its numerical equivalent."""
-    from django.utils.text import phone2numeric
-    return phone2numeric(value)
-phone2numeric.is_safe = True
-
-def pprint(value):
-    """A wrapper around pprint.pprint -- for debugging, really."""
-    from pprint import pformat
-    try:
-        return pformat(value)
-    except Exception, e:
-        return u"Error in formatting: %s" % force_unicode(e, errors="replace")
-pprint.is_safe = True
-
-# Syntax: register.filter(name of filter, callback)
-register.filter(add)
-register.filter(addslashes)
-register.filter(capfirst)
-register.filter(center)
-register.filter(cut)
-register.filter(date)
-register.filter(default)
-register.filter(default_if_none)
-register.filter(dictsort)
-register.filter(dictsortreversed)
-register.filter(divisibleby)
-register.filter(escape)
-register.filter(escapejs)
-register.filter(filesizeformat)
-register.filter(first)
-register.filter(fix_ampersands)
-register.filter(floatformat)
-register.filter(force_escape)
-register.filter(get_digit)
-register.filter(iriencode)
-register.filter(join)
-register.filter(last)
-register.filter(length)
-register.filter(length_is)
-register.filter(linebreaks)
-register.filter(linebreaksbr)
-register.filter(linenumbers)
-register.filter(ljust)
-register.filter(lower)
-register.filter(make_list)
-register.filter(phone2numeric)
-register.filter(pluralize)
-register.filter(pprint)
-register.filter(removetags)
-register.filter(random)
-register.filter(rjust)
-register.filter(safe)
-register.filter('slice', slice_)
-register.filter(slugify)
-register.filter(stringformat)
-register.filter(striptags)
-register.filter(time)
-register.filter(timesince)
-register.filter(timeuntil)
-register.filter(title)
-register.filter(truncatewords)
-register.filter(truncatewords_html)
-register.filter(unordered_list)
-register.filter(upper)
-register.filter(urlencode)
-register.filter(urlize)
-register.filter(urlizetrunc)
-register.filter(wordcount)
-register.filter(wordwrap)
-register.filter(yesno)
diff --git a/webapp/django/template/defaulttags.py b/webapp/django/template/defaulttags.py
deleted file mode 100644
index 489faa2..0000000
--- a/webapp/django/template/defaulttags.py
+++ /dev/null
@@ -1,1108 +0,0 @@
-"""Default tags used by the template system, available to all templates."""
-
-import sys
-import re
-from itertools import cycle as itertools_cycle
-try:
-    reversed
-except NameError:
-    from django.utils.itercompat import reversed     # Python 2.3 fallback
-
-from django.template import Node, NodeList, Template, Context, Variable
-from django.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END
-from django.template import get_library, Library, InvalidTemplateLibrary
-from django.conf import settings
-from django.utils.encoding import smart_str, smart_unicode
-from django.utils.itercompat import groupby
-from django.utils.safestring import mark_safe
-
-register = Library()
-
-class AutoEscapeControlNode(Node):
-    """Implements the actions of the autoescape tag."""
-    def __init__(self, setting, nodelist):
-        self.setting, self.nodelist = setting, nodelist
-
-    def render(self, context):
-        old_setting = context.autoescape
-        context.autoescape = self.setting
-        output = self.nodelist.render(context)
-        context.autoescape = old_setting
-        if self.setting:
-            return mark_safe(output)
-        else:
-            return output
-
-class CommentNode(Node):
-    def render(self, context):
-        return ''
-
-class CycleNode(Node):
-    def __init__(self, cyclevars, variable_name=None):
-        self.cycle_iter = itertools_cycle([Variable(v) for v in cyclevars])
-        self.variable_name = variable_name
-
-    def render(self, context):
-        value = self.cycle_iter.next().resolve(context)
-        if self.variable_name:
-            context[self.variable_name] = value
-        return value
-
-class DebugNode(Node):
-    def render(self, context):
-        from pprint import pformat
-        output = [pformat(val) for val in context]
-        output.append('\n\n')
-        output.append(pformat(sys.modules))
-        return ''.join(output)
-
-class FilterNode(Node):
-    def __init__(self, filter_expr, nodelist):
-        self.filter_expr, self.nodelist = filter_expr, nodelist
-
-    def render(self, context):
-        output = self.nodelist.render(context)
-        # Apply filters.
-        context.update({'var': output})
-        filtered = self.filter_expr.resolve(context)
-        context.pop()
-        return filtered
-
-class FirstOfNode(Node):
-    def __init__(self, vars):
-        self.vars = map(Variable, vars)
-
-    def render(self, context):
-        for var in self.vars:
-            try:
-                value = var.resolve(context)
-            except VariableDoesNotExist:
-                continue
-            if value:
-                return smart_unicode(value)
-        return u''
-
-class ForNode(Node):
-    def __init__(self, loopvars, sequence, is_reversed, nodelist_loop):
-        self.loopvars, self.sequence = loopvars, sequence
-        self.is_reversed = is_reversed
-        self.nodelist_loop = nodelist_loop
-
-    def __repr__(self):
-        reversed_text = self.is_reversed and ' reversed' or ''
-        return "<For Node: for %s in %s, tail_len: %d%s>" % \
-            (', '.join(self.loopvars), self.sequence, len(self.nodelist_loop),
-             reversed_text)
-
-    def __iter__(self):
-        for node in self.nodelist_loop:
-            yield node
-
-    def get_nodes_by_type(self, nodetype):
-        nodes = []
-        if isinstance(self, nodetype):
-            nodes.append(self)
-        nodes.extend(self.nodelist_loop.get_nodes_by_type(nodetype))
-        return nodes
-
-    def render(self, context):
-        nodelist = NodeList()
-        if 'forloop' in context:
-            parentloop = context['forloop']
-        else:
-            parentloop = {}
-        context.push()
-        try:
-            values = self.sequence.resolve(context, True)
-        except VariableDoesNotExist:
-            values = []
-        if values is None:
-            values = []
-        if not hasattr(values, '__len__'):
-            values = list(values)
-        len_values = len(values)
-        if self.is_reversed:
-            values = reversed(values)
-        unpack = len(self.loopvars) > 1
-        # Create a forloop value in the context.  We'll update counters on each
-        # iteration just below.
-        loop_dict = context['forloop'] = {'parentloop': parentloop}
-        for i, item in enumerate(values):
-            # Shortcuts for current loop iteration number.
-            loop_dict['counter0'] = i
-            loop_dict['counter'] = i+1
-            # Reverse counter iteration numbers.
-            loop_dict['revcounter'] = len_values - i
-            loop_dict['revcounter0'] = len_values - i - 1
-            # Boolean values designating first and last times through loop.
-            loop_dict['first'] = (i == 0)
-            loop_dict['last'] = (i == len_values - 1)
-
-            if unpack:
-                # If there are multiple loop variables, unpack the item into
-                # them.
-                context.update(dict(zip(self.loopvars, item)))
-            else:
-                context[self.loopvars[0]] = item
-            for node in self.nodelist_loop:
-                nodelist.append(node.render(context))
-            if unpack:
-                # The loop variables were pushed on to the context so pop them
-                # off again. This is necessary because the tag lets the length
-                # of loopvars differ to the length of each set of items and we
-                # don't want to leave any vars from the previous loop on the
-                # context.
-                context.pop()
-        context.pop()
-        return nodelist.render(context)
-
-class IfChangedNode(Node):
-    def __init__(self, nodelist_true, nodelist_false, *varlist):
-        self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false
-        self._last_seen = None
-        self._varlist = map(Variable, varlist)
-        self._id = str(id(self))
-
-    def render(self, context):
-        if 'forloop' in context and self._id not in context['forloop']:
-            self._last_seen = None
-            context['forloop'][self._id] = 1
-        try:
-            if self._varlist:
-                # Consider multiple parameters.  This automatically behaves
-                # like an OR evaluation of the multiple variables.
-                compare_to = [var.resolve(context) for var in self._varlist]
-            else:
-                compare_to = self.nodelist_true.render(context)
-        except VariableDoesNotExist:
-            compare_to = None
-
-        if compare_to != self._last_seen:
-            firstloop = (self._last_seen == None)
-            self._last_seen = compare_to
-            context.push()
-            context['ifchanged'] = {'firstloop': firstloop}
-            content = self.nodelist_true.render(context)
-            context.pop()
-            return content
-        elif self.nodelist_false:
-            return self.nodelist_false.render(context)
-        return ''
-
-class IfEqualNode(Node):
-    def __init__(self, var1, var2, nodelist_true, nodelist_false, negate):
-        self.var1, self.var2 = Variable(var1), Variable(var2)
-        self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false
-        self.negate = negate
-
-    def __repr__(self):
-        return "<IfEqualNode>"
-
-    def render(self, context):
-        try:
-            val1 = self.var1.resolve(context)
-        except VariableDoesNotExist:
-            val1 = None
-        try:
-            val2 = self.var2.resolve(context)
-        except VariableDoesNotExist:
-            val2 = None
-        if (self.negate and val1 != val2) or (not self.negate and val1 == val2):
-            return self.nodelist_true.render(context)
-        return self.nodelist_false.render(context)
-
-class IfNode(Node):
-    def __init__(self, bool_exprs, nodelist_true, nodelist_false, link_type):
-        self.bool_exprs = bool_exprs
-        self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false
-        self.link_type = link_type
-
-    def __repr__(self):
-        return "<If node>"
-
-    def __iter__(self):
-        for node in self.nodelist_true:
-            yield node
-        for node in self.nodelist_false:
-            yield node
-
-    def get_nodes_by_type(self, nodetype):
-        nodes = []
-        if isinstance(self, nodetype):
-            nodes.append(self)
-        nodes.extend(self.nodelist_true.get_nodes_by_type(nodetype))
-        nodes.extend(self.nodelist_false.get_nodes_by_type(nodetype))
-        return nodes
-
-    def render(self, context):
-        if self.link_type == IfNode.LinkTypes.or_:
-            for ifnot, bool_expr in self.bool_exprs:
-                try:
-                    value = bool_expr.resolve(context, True)
-                except VariableDoesNotExist:
-                    value = None
-                if (value and not ifnot) or (ifnot and not value):
-                    return self.nodelist_true.render(context)
-            return self.nodelist_false.render(context)
-        else:
-            for ifnot, bool_expr in self.bool_exprs:
-                try:
-                    value = bool_expr.resolve(context, True)
-                except VariableDoesNotExist:
-                    value = None
-                if not ((value and not ifnot) or (ifnot and not value)):
-                    return self.nodelist_false.render(context)
-            return self.nodelist_true.render(context)
-
-    class LinkTypes:
-        and_ = 0,
-        or_ = 1
-
-class RegroupNode(Node):
-    def __init__(self, target, expression, var_name):
-        self.target, self.expression = target, expression
-        self.var_name = var_name
-
-    def render(self, context):
-        obj_list = self.target.resolve(context, True)
-        if obj_list == None:
-            # target variable wasn't found in context; fail silently.
-            context[self.var_name] = []
-            return ''
-        # List of dictionaries in the format:
-        # {'grouper': 'key', 'list': [list of contents]}.
-        context[self.var_name] = [
-            {'grouper': key, 'list': list(val)}
-            for key, val in
-            groupby(obj_list, lambda v, f=self.expression.resolve: f(v, True))
-        ]
-        return ''
-
-def include_is_allowed(filepath):
-    for root in settings.ALLOWED_INCLUDE_ROOTS:
-        if filepath.startswith(root):
-            return True
-    return False
-
-class SsiNode(Node):
-    def __init__(self, filepath, parsed):
-        self.filepath, self.parsed = filepath, parsed
-
-    def render(self, context):
-        if not include_is_allowed(self.filepath):
-            if settings.DEBUG:
-                return "[Didn't have permission to include file]"
-            else:
-                return '' # Fail silently for invalid includes.
-        try:
-            fp = open(self.filepath, 'r')
-            output = fp.read()
-            fp.close()
-        except IOError:
-            output = ''
-        if self.parsed:
-            try:
-                t = Template(output, name=self.filepath)
-                return t.render(context)
-            except TemplateSyntaxError, e:
-                if settings.DEBUG:
-                    return "[Included template had syntax error: %s]" % e
-                else:
-                    return '' # Fail silently for invalid included templates.
-        return output
-
-class LoadNode(Node):
-    def render(self, context):
-        return ''
-
-class NowNode(Node):
-    def __init__(self, format_string):
-        self.format_string = format_string
-
-    def render(self, context):
-        from datetime import datetime
-        from django.utils.dateformat import DateFormat
-        df = DateFormat(datetime.now())
-        return df.format(self.format_string)
-
-class SpacelessNode(Node):
-    def __init__(self, nodelist):
-        self.nodelist = nodelist
-
-    def render(self, context):
-        from django.utils.html import strip_spaces_between_tags
-        return strip_spaces_between_tags(self.nodelist.render(context).strip())
-
-class TemplateTagNode(Node):
-    mapping = {'openblock': BLOCK_TAG_START,
-               'closeblock': BLOCK_TAG_END,
-               'openvariable': VARIABLE_TAG_START,
-               'closevariable': VARIABLE_TAG_END,
-               'openbrace': SINGLE_BRACE_START,
-               'closebrace': SINGLE_BRACE_END,
-               'opencomment': COMMENT_TAG_START,
-               'closecomment': COMMENT_TAG_END,
-               }
-
-    def __init__(self, tagtype):
-        self.tagtype = tagtype
-
-    def render(self, context):
-        return self.mapping.get(self.tagtype, '')
-
-class URLNode(Node):
-    def __init__(self, view_name, args, kwargs):
-        self.view_name = view_name
-        self.args = args
-        self.kwargs = kwargs
-
-    def render(self, context):
-        from django.core.urlresolvers import reverse, NoReverseMatch
-        args = [arg.resolve(context) for arg in self.args]
-        kwargs = dict([(smart_str(k,'ascii'), v.resolve(context))
-                       for k, v in self.kwargs.items()])
-        try:
-            return reverse(self.view_name, args=args, kwargs=kwargs)
-        except NoReverseMatch:
-            project_name = settings.SETTINGS_MODULE.split('.')[0]
-            return reverse(project_name + '.' + self.view_name,
-                           args=args, kwargs=kwargs)
-
-class WidthRatioNode(Node):
-    def __init__(self, val_expr, max_expr, max_width):
-        self.val_expr = val_expr
-        self.max_expr = max_expr
-        self.max_width = max_width
-
-    def render(self, context):
-        try:
-            value = self.val_expr.resolve(context)
-            maxvalue = self.max_expr.resolve(context)
-        except VariableDoesNotExist:
-            return ''
-        try:
-            value = float(value)
-            maxvalue = float(maxvalue)
-            ratio = (value / maxvalue) * int(self.max_width)
-        except (ValueError, ZeroDivisionError):
-            return ''
-        return str(int(round(ratio)))
-
-class WithNode(Node):
-    def __init__(self, var, name, nodelist):
-        self.var = var
-        self.name = name
-        self.nodelist = nodelist
-
-    def __repr__(self):
-        return "<WithNode>"
-
-    def render(self, context):
-        val = self.var.resolve(context)
-        context.push()
-        context[self.name] = val
-        output = self.nodelist.render(context)
-        context.pop()
-        return output
-
-#@register.tag
-def autoescape(parser, token):
-    """
-    Force autoescape behaviour for this block.
-    """
-    args = token.contents.split()
-    if len(args) != 2:
-        raise TemplateSyntaxError("'Autoescape' tag requires exactly one argument.")
-    arg = args[1]
-    if arg not in (u'on', u'off'):
-        raise TemplateSyntaxError("'Autoescape' argument should be 'on' or 'off'")
-    nodelist = parser.parse(('endautoescape',))
-    parser.delete_first_token()
-    return AutoEscapeControlNode((arg == 'on'), nodelist)
-autoescape = register.tag(autoescape)
-
-#@register.tag
-def comment(parser, token):
-    """
-    Ignores everything between ``{% comment %}`` and ``{% endcomment %}``.
-    """
-    parser.skip_past('endcomment')
-    return CommentNode()
-comment = register.tag(comment)
-
-#@register.tag
-def cycle(parser, token):
-    """
-    Cycles among the given strings each time this tag is encountered.
-
-    Within a loop, cycles among the given strings each time through
-    the loop::
-
-        {% for o in some_list %}
-            <tr class="{% cycle 'row1' 'row2' %}">
-                ...
-            </tr>
-        {% endfor %}
-
-    Outside of a loop, give the values a unique name the first time you call
-    it, then use that name each sucessive time through::
-
-            <tr class="{% cycle 'row1' 'row2' 'row3' as rowcolors %}">...</tr>
-            <tr class="{% cycle rowcolors %}">...</tr>
-            <tr class="{% cycle rowcolors %}">...</tr>
-
-    You can use any number of values, separated by spaces. Commas can also
-    be used to separate values; if a comma is used, the cycle values are
-    interpreted as literal strings.
-    """
-
-    # Note: This returns the exact same node on each {% cycle name %} call;
-    # that is, the node object returned from {% cycle a b c as name %} and the
-    # one returned from {% cycle name %} are the exact same object. This
-    # shouldn't cause problems (heh), but if it does, now you know.
-    #
-    # Ugly hack warning: This stuffs the named template dict into parser so
-    # that names are only unique within each template (as opposed to using
-    # a global variable, which would make cycle names have to be unique across
-    # *all* templates.
-
-    args = token.split_contents()
-
-    if len(args) < 2:
-        raise TemplateSyntaxError("'cycle' tag requires at least two arguments")
-
-    if ',' in args[1]:
-        # Backwards compatibility: {% cycle a,b %} or {% cycle a,b as foo %}
-        # case.
-        args[1:2] = ['"%s"' % arg for arg in args[1].split(",")]
-
-    if len(args) == 2:
-        # {% cycle foo %} case.
-        name = args[1]
-        if not hasattr(parser, '_namedCycleNodes'):
-            raise TemplateSyntaxError("No named cycles in template. '%s' is not defined" % name)
-        if not name in parser._namedCycleNodes:
-            raise TemplateSyntaxError("Named cycle '%s' does not exist" % name)
-        return parser._namedCycleNodes[name]
-
-    if len(args) > 4 and args[-2] == 'as':
-        name = args[-1]
-        node = CycleNode(args[1:-2], name)
-        if not hasattr(parser, '_namedCycleNodes'):
-            parser._namedCycleNodes = {}
-        parser._namedCycleNodes[name] = node
-    else:
-        node = CycleNode(args[1:])
-    return node
-cycle = register.tag(cycle)
-
-def debug(parser, token):
-    """
-    Outputs a whole load of debugging information, including the current
-    context and imported modules.
-
-    Sample usage::
-
-        <pre>
-            {% debug %}
-        </pre>
-    """
-    return DebugNode()
-debug = register.tag(debug)
-
-#@register.tag(name="filter")
-def do_filter(parser, token):
-    """
-    Filters the contents of the block through variable filters.
-
-    Filters can also be piped through each other, and they can have
-    arguments -- just like in variable syntax.
-
-    Sample usage::
-
-        {% filter force_escape|lower %}
-            This text will be HTML-escaped, and will appear in lowercase.
-        {% endfilter %}
-    """
-    _, rest = token.contents.split(None, 1)
-    filter_expr = parser.compile_filter("var|%s" % (rest))
-    for func, unused in filter_expr.filters:
-        if getattr(func, '_decorated_function', func).__name__ in ('escape', 'safe'):
-            raise TemplateSyntaxError('"filter %s" is not permitted.  Use the "autoescape" tag instead.' % func.__name__)
-    nodelist = parser.parse(('endfilter',))
-    parser.delete_first_token()
-    return FilterNode(filter_expr, nodelist)
-do_filter = register.tag("filter", do_filter)
-
-#@register.tag
-def firstof(parser, token):
-    """
-    Outputs the first variable passed that is not False.
-
-    Outputs nothing if all the passed variables are False.
-
-    Sample usage::
-
-        {% firstof var1 var2 var3 %}
-
-    This is equivalent to::
-
-        {% if var1 %}
-            {{ var1 }}
-        {% else %}{% if var2 %}
-            {{ var2 }}
-        {% else %}{% if var3 %}
-            {{ var3 }}
-        {% endif %}{% endif %}{% endif %}
-
-    but obviously much cleaner!
-
-    You can also use a literal string as a fallback value in case all
-    passed variables are False::
-
-        {% firstof var1 var2 var3 "fallback value" %}
-
-    """
-    bits = token.split_contents()[1:]
-    if len(bits) < 1:
-        raise TemplateSyntaxError("'firstof' statement requires at least one"
-                                  " argument")
-    return FirstOfNode(bits)
-firstof = register.tag(firstof)
-
-#@register.tag(name="for")
-def do_for(parser, token):
-    """
-    Loops over each item in an array.
-
-    For example, to display a list of athletes given ``athlete_list``::
-
-        <ul>
-        {% for athlete in athlete_list %}
-            <li>{{ athlete.name }}</li>
-        {% endfor %}
-        </ul>
-
-    You can loop over a list in reverse by using
-    ``{% for obj in list reversed %}``.
-
-    You can also unpack multiple values from a two-dimensional array::
-
-        {% for key,value in dict.items %}
-            {{ key }}: {{ value }}
-        {% endfor %}
-
-    The for loop sets a number of variables available within the loop:
-
-        ==========================  ================================================
-        Variable                    Description
-        ==========================  ================================================
-        ``forloop.counter``         The current iteration of the loop (1-indexed)
-        ``forloop.counter0``        The current iteration of the loop (0-indexed)
-        ``forloop.revcounter``      The number of iterations from the end of the
-                                    loop (1-indexed)
-        ``forloop.revcounter0``     The number of iterations from the end of the
-                                    loop (0-indexed)
-        ``forloop.first``           True if this is the first time through the loop
-        ``forloop.last``            True if this is the last time through the loop
-        ``forloop.parentloop``      For nested loops, this is the loop "above" the
-                                    current one
-        ==========================  ================================================
-
-    """
-    bits = token.contents.split()
-    if len(bits) < 4:
-        raise TemplateSyntaxError("'for' statements should have at least four"
-                                  " words: %s" % token.contents)
-
-    is_reversed = bits[-1] == 'reversed'
-    in_index = is_reversed and -3 or -2
-    if bits[in_index] != 'in':
-        raise TemplateSyntaxError("'for' statements should use the format"
-                                  " 'for x in y': %s" % token.contents)
-
-    loopvars = re.sub(r' *, *', ',', ' '.join(bits[1:in_index])).split(',')
-    for var in loopvars:
-        if not var or ' ' in var:
-            raise TemplateSyntaxError("'for' tag received an invalid argument:"
-                                      " %s" % token.contents)
-
-    sequence = parser.compile_filter(bits[in_index+1])
-    nodelist_loop = parser.parse(('endfor',))
-    parser.delete_first_token()
-    return ForNode(loopvars, sequence, is_reversed, nodelist_loop)
-do_for = register.tag("for", do_for)
-
-def do_ifequal(parser, token, negate):
-    bits = list(token.split_contents())
-    if len(bits) != 3:
-        raise TemplateSyntaxError, "%r takes two arguments" % bits[0]
-    end_tag = 'end' + bits[0]
-    nodelist_true = parser.parse(('else', end_tag))
-    token = parser.next_token()
-    if token.contents == 'else':
-        nodelist_false = parser.parse((end_tag,))
-        parser.delete_first_token()
-    else:
-        nodelist_false = NodeList()
-    return IfEqualNode(bits[1], bits[2], nodelist_true, nodelist_false, negate)
-
-#@register.tag
-def ifequal(parser, token):
-    """
-    Outputs the contents of the block if the two arguments equal each other.
-
-    Examples::
-
-        {% ifequal user.id comment.user_id %}
-            ...
-        {% endifequal %}
-
-        {% ifnotequal user.id comment.user_id %}
-            ...
-        {% else %}
-            ...
-        {% endifnotequal %}
-    """
-    return do_ifequal(parser, token, False)
-ifequal = register.tag(ifequal)
-
-#@register.tag
-def ifnotequal(parser, token):
-    """
-    Outputs the contents of the block if the two arguments are not equal.
-    See ifequal.
-    """
-    return do_ifequal(parser, token, True)
-ifnotequal = register.tag(ifnotequal)
-
-#@register.tag(name="if")
-def do_if(parser, token):
-    """
-    The ``{% if %}`` tag evaluates a variable, and if that variable is "true"
-    (i.e., exists, is not empty, and is not a false boolean value), the
-    contents of the block are output:
-
-    ::
-
-        {% if athlete_list %}
-            Number of athletes: {{ athlete_list|count }}
-        {% else %}
-            No athletes.
-        {% endif %}
-
-    In the above, if ``athlete_list`` is not empty, the number of athletes will
-    be displayed by the ``{{ athlete_list|count }}`` variable.
-
-    As you can see, the ``if`` tag can take an option ``{% else %}`` clause
-    that will be displayed if the test fails.
-
-    ``if`` tags may use ``or``, ``and`` or ``not`` to test a number of
-    variables or to negate a given variable::
-
-        {% if not athlete_list %}
-            There are no athletes.
-        {% endif %}
-
-        {% if athlete_list or coach_list %}
-            There are some athletes or some coaches.
-        {% endif %}
-
-        {% if athlete_list and coach_list %}
-            Both atheletes and coaches are available.
-        {% endif %}
-
-        {% if not athlete_list or coach_list %}
-            There are no athletes, or there are some coaches.
-        {% endif %}
-
-        {% if athlete_list and not coach_list %}
-            There are some athletes and absolutely no coaches.
-        {% endif %}
-
-    ``if`` tags do not allow ``and`` and ``or`` clauses with the same tag,
-    because the order of logic would be ambigous. For example, this is
-    invalid::
-
-        {% if athlete_list and coach_list or cheerleader_list %}
-
-    If you need to combine ``and`` and ``or`` to do advanced logic, just use
-    nested if tags. For example::
-
-        {% if athlete_list %}
-            {% if coach_list or cheerleader_list %}
-                We have athletes, and either coaches or cheerleaders!
-            {% endif %}
-        {% endif %}
-    """
-    bits = token.contents.split()
-    del bits[0]
-    if not bits:
-        raise TemplateSyntaxError("'if' statement requires at least one argument")
-    # Bits now looks something like this: ['a', 'or', 'not', 'b', 'or', 'c.d']
-    bitstr = ' '.join(bits)
-    boolpairs = bitstr.split(' and ')
-    boolvars = []
-    if len(boolpairs) == 1:
-        link_type = IfNode.LinkTypes.or_
-        boolpairs = bitstr.split(' or ')
-    else:
-        link_type = IfNode.LinkTypes.and_
-        if ' or ' in bitstr:
-            raise TemplateSyntaxError, "'if' tags can't mix 'and' and 'or'"
-    for boolpair in boolpairs:
-        if ' ' in boolpair:
-            try:
-                not_, boolvar = boolpair.split()
-            except ValueError:
-                raise TemplateSyntaxError, "'if' statement improperly formatted"
-            if not_ != 'not':
-                raise TemplateSyntaxError, "Expected 'not' in if statement"
-            boolvars.append((True, parser.compile_filter(boolvar)))
-        else:
-            boolvars.append((False, parser.compile_filter(boolpair)))
-    nodelist_true = parser.parse(('else', 'endif'))
-    token = parser.next_token()
-    if token.contents == 'else':
-        nodelist_false = parser.parse(('endif',))
-        parser.delete_first_token()
-    else:
-        nodelist_false = NodeList()
-    return IfNode(boolvars, nodelist_true, nodelist_false, link_type)
-do_if = register.tag("if", do_if)
-
-#@register.tag
-def ifchanged(parser, token):
-    """
-    Checks if a value has changed from the last iteration of a loop.
-
-    The 'ifchanged' block tag is used within a loop. It has two possible uses.
-
-    1. Checks its own rendered contents against its previous state and only
-       displays the content if it has changed. For example, this displays a
-       list of days, only displaying the month if it changes::
-
-            <h1>Archive for {{ year }}</h1>
-
-            {% for date in days %}
-                {% ifchanged %}<h3>{{ date|date:"F" }}</h3>{% endifchanged %}
-                <a href="{{ date|date:"M/d"|lower }}/">{{ date|date:"j" }}</a>
-            {% endfor %}
-
-    2. If given a variable, check whether that variable has changed.
-       For example, the following shows the date every time it changes, but
-       only shows the hour if both the hour and the date have changed::
-
-            {% for date in days %}
-                {% ifchanged date.date %} {{ date.date }} {% endifchanged %}
-                {% ifchanged date.hour date.date %}
-                    {{ date.hour }}
-                {% endifchanged %}
-            {% endfor %}
-    """
-    bits = token.contents.split()
-    nodelist_true = parser.parse(('else', 'endifchanged'))
-    token = parser.next_token()
-    if token.contents == 'else':
-        nodelist_false = parser.parse(('endifchanged',))
-        parser.delete_first_token()
-    else:
-        nodelist_false = NodeList()
-    return IfChangedNode(nodelist_true, nodelist_false, *bits[1:])
-ifchanged = register.tag(ifchanged)
-
-#@register.tag
-def ssi(parser, token):
-    """
-    Outputs the contents of a given file into the page.
-
-    Like a simple "include" tag, the ``ssi`` tag includes the contents
-    of another file -- which must be specified using an absolute path --
-    in the current page::
-
-        {% ssi /home/html/ljworld.com/includes/right_generic.html %}
-
-    If the optional "parsed" parameter is given, the contents of the included
-    file are evaluated as template code, with the current context::
-
-        {% ssi /home/html/ljworld.com/includes/right_generic.html parsed %}
-    """
-    bits = token.contents.split()
-    parsed = False
-    if len(bits) not in (2, 3):
-        raise TemplateSyntaxError("'ssi' tag takes one argument: the path to"
-                                  " the file to be included")
-    if len(bits) == 3:
-        if bits[2] == 'parsed':
-            parsed = True
-        else:
-            raise TemplateSyntaxError("Second (optional) argument to %s tag"
-                                      " must be 'parsed'" % bits[0])
-    return SsiNode(bits[1], parsed)
-ssi = register.tag(ssi)
-
-#@register.tag
-def load(parser, token):
-    """
-    Loads a custom template tag set.
-
-    For example, to load the template tags in
-    ``django/templatetags/news/photos.py``::
-
-        {% load news.photos %}
-    """
-    bits = token.contents.split()
-    for taglib in bits[1:]:
-        # add the library to the parser
-        try:
-            lib = get_library("django.templatetags.%s" % taglib)
-            parser.add_library(lib)
-        except InvalidTemplateLibrary, e:
-            raise TemplateSyntaxError("'%s' is not a valid tag library: %s" %
-                                      (taglib, e))
-    return LoadNode()
-load = register.tag(load)
-
-#@register.tag
-def now(parser, token):
-    """
-    Displays the date, formatted according to the given string.
-
-    Uses the same format as PHP's ``date()`` function; see http://php.net/date
-    for all the possible values.
-
-    Sample usage::
-
-        It is {% now "jS F Y H:i" %}
-    """
-    bits = token.contents.split('"')
-    if len(bits) != 3:
-        raise TemplateSyntaxError, "'now' statement takes one argument"
-    format_string = bits[1]
-    return NowNode(format_string)
-now = register.tag(now)
-
-#@register.tag
-def regroup(parser, token):
-    """
-    Regroups a list of alike objects by a common attribute.
-
-    This complex tag is best illustrated by use of an example:  say that
-    ``people`` is a list of ``Person`` objects that have ``first_name``,
-    ``last_name``, and ``gender`` attributes, and you'd like to display a list
-    that looks like:
-
-        * Male:
-            * George Bush
-            * Bill Clinton
-        * Female:
-            * Margaret Thatcher
-            * Colendeeza Rice
-        * Unknown:
-            * Pat Smith
-
-    The following snippet of template code would accomplish this dubious task::
-
-        {% regroup people by gender as grouped %}
-        <ul>
-        {% for group in grouped %}
-            <li>{{ group.grouper }}
-            <ul>
-                {% for item in group.list %}
-                <li>{{ item }}</li>
-                {% endfor %}
-            </ul>
-        {% endfor %}
-        </ul>
-
-    As you can see, ``{% regroup %}`` populates a variable with a list of
-    objects with ``grouper`` and ``list`` attributes.  ``grouper`` contains the
-    item that was grouped by; ``list`` contains the list of objects that share
-    that ``grouper``.  In this case, ``grouper`` would be ``Male``, ``Female``
-    and ``Unknown``, and ``list`` is the list of people with those genders.
-
-    Note that `{% regroup %}`` does not work when the list to be grouped is not
-    sorted by the key you are grouping by!  This means that if your list of
-    people was not sorted by gender, you'd need to make sure it is sorted
-    before using it, i.e.::
-
-        {% regroup people|dictsort:"gender" by gender as grouped %}
-
-    """
-    firstbits = token.contents.split(None, 3)
-    if len(firstbits) != 4:
-        raise TemplateSyntaxError, "'regroup' tag takes five arguments"
-    target = parser.compile_filter(firstbits[1])
-    if firstbits[2] != 'by':
-        raise TemplateSyntaxError("second argument to 'regroup' tag must be 'by'")
-    lastbits_reversed = firstbits[3][::-1].split(None, 2)
-    if lastbits_reversed[1][::-1] != 'as':
-        raise TemplateSyntaxError("next-to-last argument to 'regroup' tag must"
-                                  " be 'as'")
-
-    expression = parser.compile_filter(lastbits_reversed[2][::-1])
-
-    var_name = lastbits_reversed[0][::-1]
-    return RegroupNode(target, expression, var_name)
-regroup = register.tag(regroup)
-
-def spaceless(parser, token):
-    """
-    Removes whitespace between HTML tags, including tab and newline characters.
-
-    Example usage::
-
-        {% spaceless %}
-            <p>
-                <a href="foo/">Foo</a>
-            </p>
-        {% endspaceless %}
-
-    This example would return this HTML::
-
-        <p><a href="foo/">Foo</a></p>
-
-    Only space between *tags* is normalized -- not space between tags and text.
-    In this example, the space around ``Hello`` won't be stripped::
-
-        {% spaceless %}
-            <strong>
-                Hello
-            </strong>
-        {% endspaceless %}
-    """
-    nodelist = parser.parse(('endspaceless',))
-    parser.delete_first_token()
-    return SpacelessNode(nodelist)
-spaceless = register.tag(spaceless)
-
-#@register.tag
-def templatetag(parser, token):
-    """
-    Outputs one of the bits used to compose template tags.
-
-    Since the template system has no concept of "escaping", to display one of
-    the bits used in template tags, you must use the ``{% templatetag %}`` tag.
-
-    The argument tells which template bit to output:
-
-        ==================  =======
-        Argument            Outputs
-        ==================  =======
-        ``openblock``       ``{%``
-        ``closeblock``      ``%}``
-        ``openvariable``    ``{{``
-        ``closevariable``   ``}}``
-        ``openbrace``       ``{``
-        ``closebrace``      ``}``
-        ``opencomment``     ``{#``
-        ``closecomment``    ``#}``
-        ==================  =======
-    """
-    bits = token.contents.split()
-    if len(bits) != 2:
-        raise TemplateSyntaxError, "'templatetag' statement takes one argument"
-    tag = bits[1]
-    if tag not in TemplateTagNode.mapping:
-        raise TemplateSyntaxError("Invalid templatetag argument: '%s'."
-                                  " Must be one of: %s" %
-                                  (tag, TemplateTagNode.mapping.keys()))
-    return TemplateTagNode(tag)
-templatetag = register.tag(templatetag)
-
-def url(parser, token):
-    """
-    Returns an absolute URL matching given view with its parameters.
-
-    This is a way to define links that aren't tied to a particular URL
-    configuration::
-
-        {% url path.to.some_view arg1,arg2,name1=value1 %}
-
-    The first argument is a path to a view. It can be an absolute python path
-    or just ``app_name.view_name`` without the project name if the view is
-    located inside the project.  Other arguments are comma-separated values
-    that will be filled in place of positional and keyword arguments in the
-    URL. All arguments for the URL should be present.
-
-    For example if you have a view ``app_name.client`` taking client's id and
-    the corresponding line in a URLconf looks like this::
-
-        ('^client/(\d+)/$', 'app_name.client')
-
-    and this app's URLconf is included into the project's URLconf under some
-    path::
-
-        ('^clients/', include('project_name.app_name.urls'))
-
-    then in a template you can create a link for a certain client like this::
-
-        {% url app_name.client client.id %}
-
-    The URL will look like ``/clients/client/123/``.
-    """
-    bits = token.contents.split(' ', 2)
-    if len(bits) < 2:
-        raise TemplateSyntaxError("'%s' takes at least one argument"
-                                  " (path to a view)" % bits[0])
-    args = []
-    kwargs = {}
-    if len(bits) > 2:
-        for arg in bits[2].split(','):
-            if '=' in arg:
-                k, v = arg.split('=', 1)
-                k = k.strip()
-                kwargs[k] = parser.compile_filter(v)
-            else:
-                args.append(parser.compile_filter(arg))
-    return URLNode(bits[1], args, kwargs)
-url = register.tag(url)
-
-#@register.tag
-def widthratio(parser, token):
-    """
-    For creating bar charts and such, this tag calculates the ratio of a given
-    value to a maximum value, and then applies that ratio to a constant.
-
-    For example::
-
-        <img src='bar.gif' height='10' width='{% widthratio this_value max_value 100 %}' />
-
-    Above, if ``this_value`` is 175 and ``max_value`` is 200, the the image in
-    the above example will be 88 pixels wide (because 175/200 = .875;
-    .875 * 100 = 87.5 which is rounded up to 88).
-    """
-    bits = token.contents.split()
-    if len(bits) != 4:
-        raise TemplateSyntaxError("widthratio takes three arguments")
-    tag, this_value_expr, max_value_expr, max_width = bits
-    try:
-        max_width = int(max_width)
-    except ValueError:
-        raise TemplateSyntaxError("widthratio final argument must be an integer")
-    return WidthRatioNode(parser.compile_filter(this_value_expr),
-                          parser.compile_filter(max_value_expr), max_width)
-widthratio = register.tag(widthratio)
-
-#@register.tag
-def do_with(parser, token):
-    """
-    Adds a value to the context (inside of this block) for caching and easy
-    access.
-
-    For example::
-
-        {% with person.some_sql_method as total %}
-            {{ total }} object{{ total|pluralize }}
-        {% endwith %}
-    """
-    bits = list(token.split_contents())
-    if len(bits) != 4 or bits[2] != "as":
-        raise TemplateSyntaxError("%r expected format is 'value as name'" %
-                                  bits[0])
-    var = parser.compile_filter(bits[1])
-    name = bits[3]
-    nodelist = parser.parse(('endwith',))
-    parser.delete_first_token()
-    return WithNode(var, name, nodelist)
-do_with = register.tag('with', do_with)
diff --git a/webapp/django/template/loader.py b/webapp/django/template/loader.py
deleted file mode 100644
index 1d7d945..0000000
--- a/webapp/django/template/loader.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Wrapper for loading templates from storage of some sort (e.g. filesystem, database).
-#
-# This uses the TEMPLATE_LOADERS setting, which is a list of loaders to use.
-# Each loader is expected to have this interface:
-#
-#    callable(name, dirs=[])
-#
-# name is the template name.
-# dirs is an optional list of directories to search instead of TEMPLATE_DIRS.
-#
-# The loader should return a tuple of (template_source, path). The path returned
-# might be shown to the user for debugging purposes, so it should identify where
-# the template was loaded from.
-#
-# Each loader should have an "is_usable" attribute set. This is a boolean that
-# specifies whether the loader can be used in this Python installation. Each
-# loader is responsible for setting this when it's initialized.
-#
-# For example, the eggs loader (which is capable of loading templates from
-# Python eggs) sets is_usable to False if the "pkg_resources" module isn't
-# installed, because pkg_resources is necessary to read eggs.
-
-from django.core.exceptions import ImproperlyConfigured
-from django.template import Origin, Template, Context, TemplateDoesNotExist, add_to_builtins
-from django.conf import settings
-
-template_source_loaders = None
-
-class LoaderOrigin(Origin):
-    def __init__(self, display_name, loader, name, dirs):
-        super(LoaderOrigin, self).__init__(display_name)
-        self.loader, self.loadname, self.dirs = loader, name, dirs
-
-    def reload(self):
-        return self.loader(self.loadname, self.dirs)[0]
-
-def make_origin(display_name, loader, name, dirs):
-    if settings.TEMPLATE_DEBUG:
-        return LoaderOrigin(display_name, loader, name, dirs)
-    else:
-        return None
-
-def find_template_source(name, dirs=None):
-    # Calculate template_source_loaders the first time the function is executed
-    # because putting this logic in the module-level namespace may cause
-    # circular import errors. See Django ticket #1292.
-    global template_source_loaders
-    if template_source_loaders is None:
-        loaders = []
-        for path in settings.TEMPLATE_LOADERS:
-            i = path.rfind('.')
-            module, attr = path[:i], path[i+1:]
-            try:
-                mod = __import__(module, globals(), locals(), [attr])
-            except ImportError, e:
-                raise ImproperlyConfigured, 'Error importing template source loader %s: "%s"' % (module, e)
-            try:
-                func = getattr(mod, attr)
-            except AttributeError:
-                raise ImproperlyConfigured, 'Module "%s" does not define a "%s" callable template source loader' % (module, attr)
-            if not func.is_usable:
-                import warnings
-                warnings.warn("Your TEMPLATE_LOADERS setting includes %r, but your Python installation doesn't support that type of template loading. Consider removing that line from TEMPLATE_LOADERS." % path)
-            else:
-                loaders.append(func)
-        template_source_loaders = tuple(loaders)
-    for loader in template_source_loaders:
-        try:
-            source, display_name = loader(name, dirs)
-            return (source, make_origin(display_name, loader, name, dirs))
-        except TemplateDoesNotExist:
-            pass
-    raise TemplateDoesNotExist, name
-
-def get_template(template_name):
-    """
-    Returns a compiled Template object for the given template name,
-    handling template inheritance recursively.
-    """
-    source, origin = find_template_source(template_name)
-    template = get_template_from_string(source, origin, template_name)
-    return template
-
-def get_template_from_string(source, origin=None, name=None):
-    """
-    Returns a compiled Template object for the given template code,
-    handling template inheritance recursively.
-    """
-    return Template(source, origin, name)
-
-def render_to_string(template_name, dictionary=None, context_instance=None):
-    """
-    Loads the given template_name and renders it with the given dictionary as
-    context. The template_name may be a string to load a single template using
-    get_template, or it may be a tuple to use select_template to find one of
-    the templates in the list. Returns a string.
-    """
-    dictionary = dictionary or {}
-    if isinstance(template_name, (list, tuple)):
-        t = select_template(template_name)
-    else:
-        t = get_template(template_name)
-    if context_instance:
-        context_instance.update(dictionary)
-    else:
-        context_instance = Context(dictionary)
-    return t.render(context_instance)
-
-def select_template(template_name_list):
-    "Given a list of template names, returns the first that can be loaded."
-    for template_name in template_name_list:
-        try:
-            return get_template(template_name)
-        except TemplateDoesNotExist:
-            continue
-    # If we get here, none of the templates could be loaded
-    raise TemplateDoesNotExist, ', '.join(template_name_list)
-
-add_to_builtins('django.template.loader_tags')
diff --git a/webapp/django/template/loader_tags.py b/webapp/django/template/loader_tags.py
deleted file mode 100644
index 38b2fff..0000000
--- a/webapp/django/template/loader_tags.py
+++ /dev/null
@@ -1,192 +0,0 @@
-from django.template import TemplateSyntaxError, TemplateDoesNotExist, Variable
-from django.template import Library, Node, TextNode
-from django.template.loader import get_template, get_template_from_string, find_template_source
-from django.conf import settings
-from django.utils.safestring import mark_safe
-
-register = Library()
-
-class ExtendsError(Exception):
-    pass
-
-class BlockNode(Node):
-    def __init__(self, name, nodelist, parent=None):
-        self.name, self.nodelist, self.parent = name, nodelist, parent
-
-    def __repr__(self):
-        return "<Block Node: %s. Contents: %r>" % (self.name, self.nodelist)
-
-    def render(self, context):
-        context.push()
-        # Save context in case of block.super().
-        self.context = context
-        context['block'] = self
-        result = self.nodelist.render(context)
-        context.pop()
-        return result
-
-    def super(self):
-        if self.parent:
-            return mark_safe(self.parent.render(self.context))
-        return ''
-
-    def add_parent(self, nodelist):
-        if self.parent:
-            self.parent.add_parent(nodelist)
-        else:
-            self.parent = BlockNode(self.name, nodelist)
-
-class ExtendsNode(Node):
-    must_be_first = True
-
-    def __init__(self, nodelist, parent_name, parent_name_expr, template_dirs=None):
-        self.nodelist = nodelist
-        self.parent_name, self.parent_name_expr = parent_name, parent_name_expr
-        self.template_dirs = template_dirs
-
-    def __repr__(self):
-        if self.parent_name_expr:
-            return "<ExtendsNode: extends %s>" % self.parent_name_expr.token
-        return '<ExtendsNode: extends "%s">' % self.parent_name
-
-    def get_parent(self, context):
-        if self.parent_name_expr:
-            self.parent_name = self.parent_name_expr.resolve(context)
-        parent = self.parent_name
-        if not parent:
-            error_msg = "Invalid template name in 'extends' tag: %r." % parent
-            if self.parent_name_expr:
-                error_msg += " Got this from the '%s' variable." % self.parent_name_expr.token
-            raise TemplateSyntaxError, error_msg
-        if hasattr(parent, 'render'):
-            return parent # parent is a Template object
-        try:
-            source, origin = find_template_source(parent, self.template_dirs)
-        except TemplateDoesNotExist:
-            raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
-        else:
-            return get_template_from_string(source, origin, parent)
-
-    def render(self, context):
-        compiled_parent = self.get_parent(context)
-        parent_blocks = dict([(n.name, n) for n in compiled_parent.nodelist.get_nodes_by_type(BlockNode)])
-        for block_node in self.nodelist.get_nodes_by_type(BlockNode):
-            # Check for a BlockNode with this node's name, and replace it if found.
-            try:
-                parent_block = parent_blocks[block_node.name]
-            except KeyError:
-                # This BlockNode wasn't found in the parent template, but the
-                # parent block might be defined in the parent's *parent*, so we
-                # add this BlockNode to the parent's ExtendsNode nodelist, so
-                # it'll be checked when the parent node's render() is called.
-
-                # Find out if the parent template has a parent itself
-                for node in compiled_parent.nodelist:
-                    if not isinstance(node, TextNode):
-                        # If the first non-text node is an extends, handle it.
-                        if isinstance(node, ExtendsNode):
-                            node.nodelist.append(block_node)
-                        # Extends must be the first non-text node, so once you find
-                        # the first non-text node you can stop looking. 
-                        break
-            else:
-                # Keep any existing parents and add a new one. Used by BlockNode.
-                parent_block.parent = block_node.parent
-                parent_block.add_parent(parent_block.nodelist)
-                parent_block.nodelist = block_node.nodelist
-        return compiled_parent.render(context)
-
-class ConstantIncludeNode(Node):
-    def __init__(self, template_path):
-        try:
-            t = get_template(template_path)
-            self.template = t
-        except:
-            if settings.TEMPLATE_DEBUG:
-                raise
-            self.template = None
-
-    def render(self, context):
-        if self.template:
-            return self.template.render(context)
-        else:
-            return ''
-
-class IncludeNode(Node):
-    def __init__(self, template_name):
-        self.template_name = Variable(template_name)
-
-    def render(self, context):
-        try:
-            template_name = self.template_name.resolve(context)
-            t = get_template(template_name)
-            return t.render(context)
-        except TemplateSyntaxError, e:
-            if settings.TEMPLATE_DEBUG:
-                raise
-            return ''
-        except:
-            return '' # Fail silently for invalid included templates.
-
-def do_block(parser, token):
-    """
-    Define a block that can be overridden by child templates.
-    """
-    bits = token.contents.split()
-    if len(bits) != 2:
-        raise TemplateSyntaxError, "'%s' tag takes only one argument" % bits[0]
-    block_name = bits[1]
-    # Keep track of the names of BlockNodes found in this template, so we can
-    # check for duplication.
-    try:
-        if block_name in parser.__loaded_blocks:
-            raise TemplateSyntaxError, "'%s' tag with name '%s' appears more than once" % (bits[0], block_name)
-        parser.__loaded_blocks.append(block_name)
-    except AttributeError: # parser.__loaded_blocks isn't a list yet
-        parser.__loaded_blocks = [block_name]
-    nodelist = parser.parse(('endblock', 'endblock %s' % block_name))
-    parser.delete_first_token()
-    return BlockNode(block_name, nodelist)
-
-def do_extends(parser, token):
-    """
-    Signal that this template extends a parent template.
-
-    This tag may be used in two ways: ``{% extends "base" %}`` (with quotes)
-    uses the literal value "base" as the name of the parent template to extend,
-    or ``{% extends variable %}`` uses the value of ``variable`` as either the
-    name of the parent template to extend (if it evaluates to a string) or as
-    the parent tempate itelf (if it evaluates to a Template object).
-    """
-    bits = token.contents.split()
-    if len(bits) != 2:
-        raise TemplateSyntaxError, "'%s' takes one argument" % bits[0]
-    parent_name, parent_name_expr = None, None
-    if bits[1][0] in ('"', "'") and bits[1][-1] == bits[1][0]:
-        parent_name = bits[1][1:-1]
-    else:
-        parent_name_expr = parser.compile_filter(bits[1])
-    nodelist = parser.parse()
-    if nodelist.get_nodes_by_type(ExtendsNode):
-        raise TemplateSyntaxError, "'%s' cannot appear more than once in the same template" % bits[0]
-    return ExtendsNode(nodelist, parent_name, parent_name_expr)
-
-def do_include(parser, token):
-    """
-    Loads a template and renders it with the current context.
-
-    Example::
-
-        {% include "foo/some_include" %}
-    """
-    bits = token.contents.split()
-    if len(bits) != 2:
-        raise TemplateSyntaxError, "%r tag takes one argument: the name of the template to be included" % bits[0]
-    path = bits[1]
-    if path[0] in ('"', "'") and path[-1] == path[0]:
-        return ConstantIncludeNode(path[1:-1])
-    return IncludeNode(bits[1])
-
-register.tag('block', do_block)
-register.tag('extends', do_extends)
-register.tag('include', do_include)
diff --git a/webapp/django/template/loaders/__init__.py b/webapp/django/template/loaders/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/template/loaders/__init__.py
+++ /dev/null
diff --git a/webapp/django/template/loaders/app_directories.py b/webapp/django/template/loaders/app_directories.py
deleted file mode 100644
index f0f4b1a..0000000
--- a/webapp/django/template/loaders/app_directories.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""
-Wrapper for loading templates from "template" directories in INSTALLED_APPS
-packages.
-"""
-
-import os
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.template import TemplateDoesNotExist
-from django.utils._os import safe_join
-
-# At compile time, cache the directories to search.
-app_template_dirs = []
-for app in settings.INSTALLED_APPS:
-    i = app.rfind('.')
-    if i == -1:
-        m, a = app, None
-    else:
-        m, a = app[:i], app[i+1:]
-    try:
-        if a is None:
-            mod = __import__(m, {}, {}, [])
-        else:
-            mod = getattr(__import__(m, {}, {}, [a]), a)
-    except ImportError, e:
-        raise ImproperlyConfigured, 'ImportError %s: %s' % (app, e.args[0])
-    template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates')
-    if os.path.isdir(template_dir):
-        app_template_dirs.append(template_dir)
-
-# It won't change, so convert it to a tuple to save memory.
-app_template_dirs = tuple(app_template_dirs)
-
-def get_template_sources(template_name, template_dirs=None):
-    if not template_dirs:
-        template_dirs = app_template_dirs
-    for template_dir in template_dirs:
-        try:
-            yield safe_join(template_dir, template_name)
-        except ValueError:
-            # The joined path was located outside of template_dir.
-            pass
-
-def load_template_source(template_name, template_dirs=None):
-    for filepath in get_template_sources(template_name, template_dirs):
-        try:
-            return (open(filepath).read().decode(settings.FILE_CHARSET), filepath)
-        except IOError:
-            pass
-    raise TemplateDoesNotExist, template_name
-load_template_source.is_usable = True
diff --git a/webapp/django/template/loaders/eggs.py b/webapp/django/template/loaders/eggs.py
deleted file mode 100644
index 946c2b4..0000000
--- a/webapp/django/template/loaders/eggs.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Wrapper for loading templates from eggs via pkg_resources.resource_string.
-
-try:
-    from pkg_resources import resource_string
-except ImportError:
-    resource_string = None
-
-from django.template import TemplateDoesNotExist
-from django.conf import settings
-
-def load_template_source(template_name, template_dirs=None):
-    """
-    Loads templates from Python eggs via pkg_resource.resource_string.
-
-    For every installed app, it tries to get the resource (app, template_name).
-    """
-    if resource_string is not None:
-        pkg_name = 'templates/' + template_name
-        for app in settings.INSTALLED_APPS:
-            try:
-                return (resource_string(app, pkg_name).decode(settings.FILE_CHARSET), 'egg:%s:%s' % (app, pkg_name))
-            except:
-                pass
-    raise TemplateDoesNotExist, template_name
-load_template_source.is_usable = resource_string is not None
diff --git a/webapp/django/template/loaders/filesystem.py b/webapp/django/template/loaders/filesystem.py
deleted file mode 100644
index 9997eb9..0000000
--- a/webapp/django/template/loaders/filesystem.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""
-Wrapper for loading templates from the filesystem.
-"""
-
-from django.conf import settings
-from django.template import TemplateDoesNotExist
-from django.utils._os import safe_join
-
-def get_template_sources(template_name, template_dirs=None):
-    if not template_dirs:
-        template_dirs = settings.TEMPLATE_DIRS
-    for template_dir in template_dirs:
-        try:
-            yield safe_join(template_dir, template_name)
-        except ValueError:
-            # The joined path was located outside of template_dir.
-            pass
-
-def load_template_source(template_name, template_dirs=None):
-    tried = []
-    for filepath in get_template_sources(template_name, template_dirs):
-        try:
-            return (open(filepath).read().decode(settings.FILE_CHARSET), filepath)
-        except IOError:
-            tried.append(filepath)
-    if tried:
-        error_msg = "Tried %s" % tried
-    else:
-        error_msg = "Your TEMPLATE_DIRS setting is empty. Change it to point to at least one template directory."
-    raise TemplateDoesNotExist, error_msg
-load_template_source.is_usable = True
diff --git a/webapp/django/templatetags/__init__.py b/webapp/django/templatetags/__init__.py
deleted file mode 100644
index 9204535..0000000
--- a/webapp/django/templatetags/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from django.conf import settings
-
-for a in settings.INSTALLED_APPS:
-    try:
-        __path__.extend(__import__(a + '.templatetags', {}, {}, ['']).__path__)
-    except ImportError:
-        pass
diff --git a/webapp/django/templatetags/cache.py b/webapp/django/templatetags/cache.py
deleted file mode 100644
index 9c6ca76..0000000
--- a/webapp/django/templatetags/cache.py
+++ /dev/null
@@ -1,61 +0,0 @@
-from django.template import Library, Node, TemplateSyntaxError, Variable, VariableDoesNotExist
-from django.template import resolve_variable
-from django.core.cache import cache
-from django.utils.encoding import force_unicode
-from django.utils.http import urlquote
-
-register = Library()
-
-class CacheNode(Node):
-    def __init__(self, nodelist, expire_time_var, fragment_name, vary_on):
-        self.nodelist = nodelist
-        self.expire_time_var = Variable(expire_time_var)
-        self.fragment_name = fragment_name
-        self.vary_on = vary_on
-
-    def render(self, context):
-        try:
-            expire_time = self.expire_time_var.resolve(context)
-        except VariableDoesNotExist:
-            raise TemplateSyntaxError('"cache" tag got an unknkown variable: %r' % self.expire_time_var.var)
-        try:
-            expire_time = int(expire_time)
-        except (ValueError, TypeError):
-            raise TemplateSyntaxError('"cache" tag got a non-integer timeout value: %r' % expire_time)
-        # Build a unicode key for this fragment and all vary-on's.
-        cache_key = u':'.join([self.fragment_name] + [urlquote(resolve_variable(var, context)) for var in self.vary_on])
-        value = cache.get(cache_key)
-        if value is None:
-            value = self.nodelist.render(context)
-            cache.set(cache_key, value, expire_time)
-        return value
-
-def do_cache(parser, token):
-    """
-    This will cache the contents of a template fragment for a given amount
-    of time.
-
-    Usage::
-
-        {% load cache %}
-        {% cache [expire_time] [fragment_name] %}
-            .. some expensive processing ..
-        {% endcache %}
-
-    This tag also supports varying by a list of arguments::
-
-        {% load cache %}
-        {% cache [expire_time] [fragment_name] [var1] [var2] .. %}
-            .. some expensive processing ..
-        {% endcache %}
-
-    Each unique set of arguments will result in a unique cache entry.
-    """
-    nodelist = parser.parse(('endcache',))
-    parser.delete_first_token()
-    tokens = token.contents.split()
-    if len(tokens) < 3:
-        raise TemplateSyntaxError(u"'%r' tag requires at least 2 arguments." % tokens[0])
-    return CacheNode(nodelist, tokens[1], tokens[2], tokens[3:])
-
-register.tag('cache', do_cache)
diff --git a/webapp/django/templatetags/i18n.py b/webapp/django/templatetags/i18n.py
deleted file mode 100644
index 190cb70..0000000
--- a/webapp/django/templatetags/i18n.py
+++ /dev/null
@@ -1,259 +0,0 @@
-import re
-
-from django.template import Node, Variable, VariableNode
-from django.template import TemplateSyntaxError, TokenParser, Library
-from django.template import TOKEN_TEXT, TOKEN_VAR
-from django.utils import translation
-from django.utils.encoding import force_unicode
-
-register = Library()
-
-class GetAvailableLanguagesNode(Node):
-    def __init__(self, variable):
-        self.variable = variable
-
-    def render(self, context):
-        from django.conf import settings
-        context[self.variable] = [(k, translation.ugettext(v)) for k, v in settings.LANGUAGES]
-        return ''
-
-class GetCurrentLanguageNode(Node):
-    def __init__(self, variable):
-        self.variable = variable
-
-    def render(self, context):
-        context[self.variable] = translation.get_language()
-        return ''
-
-class GetCurrentLanguageBidiNode(Node):
-    def __init__(self, variable):
-        self.variable = variable
-
-    def render(self, context):
-        context[self.variable] = translation.get_language_bidi()
-        return ''
-
-class TranslateNode(Node):
-    def __init__(self, value, noop):
-        self.value = Variable(value)
-        self.noop = noop
-
-    def render(self, context):
-        value = self.value.resolve(context)
-        if self.noop:
-            return value
-        else:
-            return translation.ugettext(value)
-
-class BlockTranslateNode(Node):
-    def __init__(self, extra_context, singular, plural=None, countervar=None,
-            counter=None):
-        self.extra_context = extra_context
-        self.singular = singular
-        self.plural = plural
-        self.countervar = countervar
-        self.counter = counter
-
-    def render_token_list(self, tokens):
-        result = []
-        vars = []
-        for token in tokens:
-            if token.token_type == TOKEN_TEXT:
-                result.append(token.contents)
-            elif token.token_type == TOKEN_VAR:
-                result.append(u'%%(%s)s' % token.contents)
-                vars.append(token.contents)
-        return ''.join(result), vars
-
-    def render(self, context):
-        tmp_context = {}
-        for var, val in self.extra_context.items():
-            tmp_context[var] = val.render(context)
-        # Update() works like a push(), so corresponding context.pop() is at
-        # the end of function
-        context.update(tmp_context)
-        singular, vars = self.render_token_list(self.singular)
-        if self.plural and self.countervar and self.counter:
-            count = self.counter.resolve(context)
-            context[self.countervar] = count
-            plural, vars = self.render_token_list(self.plural)
-            result = translation.ungettext(singular, plural, count)
-        else:
-            result = translation.ugettext(singular)
-        # Escape all isolated '%' before substituting in the context.
-        result = re.sub(u'%(?!\()', u'%%', result)
-        data = dict([(v, force_unicode(context[v])) for v in vars])
-        context.pop()
-        return result % data
-
-def do_get_available_languages(parser, token):
-    """
-    This will store a list of available languages
-    in the context.
-
-    Usage::
-
-        {% get_available_languages as languages %}
-        {% for language in languages %}
-        ...
-        {% endfor %}
-
-    This will just pull the LANGUAGES setting from
-    your setting file (or the default settings) and
-    put it into the named variable.
-    """
-    args = token.contents.split()
-    if len(args) != 3 or args[1] != 'as':
-        raise TemplateSyntaxError, "'get_available_languages' requires 'as variable' (got %r)" % args
-    return GetAvailableLanguagesNode(args[2])
-
-def do_get_current_language(parser, token):
-    """
-    This will store the current language in the context.
-
-    Usage::
-
-        {% get_current_language as language %}
-
-    This will fetch the currently active language and
-    put it's value into the ``language`` context
-    variable.
-    """
-    args = token.contents.split()
-    if len(args) != 3 or args[1] != 'as':
-        raise TemplateSyntaxError, "'get_current_language' requires 'as variable' (got %r)" % args
-    return GetCurrentLanguageNode(args[2])
-
-def do_get_current_language_bidi(parser, token):
-    """
-    This will store the current language layout in the context.
-
-    Usage::
-
-        {% get_current_language_bidi as bidi %}
-
-    This will fetch the currently active language's layout and
-    put it's value into the ``bidi`` context variable.
-    True indicates right-to-left layout, otherwise left-to-right
-    """
-    args = token.contents.split()
-    if len(args) != 3 or args[1] != 'as':
-        raise TemplateSyntaxError, "'get_current_language_bidi' requires 'as variable' (got %r)" % args
-    return GetCurrentLanguageBidiNode(args[2])
-
-def do_translate(parser, token):
-    """
-    This will mark a string for translation and will
-    translate the string for the current language.
-
-    Usage::
-
-        {% trans "this is a test" %}
-
-    This will mark the string for translation so it will
-    be pulled out by mark-messages.py into the .po files
-    and will run the string through the translation engine.
-
-    There is a second form::
-
-        {% trans "this is a test" noop %}
-
-    This will only mark for translation, but will return
-    the string unchanged. Use it when you need to store
-    values into forms that should be translated later on.
-
-    You can use variables instead of constant strings
-    to translate stuff you marked somewhere else::
-
-        {% trans variable %}
-
-    This will just try to translate the contents of
-    the variable ``variable``. Make sure that the string
-    in there is something that is in the .po file.
-    """
-    class TranslateParser(TokenParser):
-        def top(self):
-            value = self.value()
-            if self.more():
-                if self.tag() == 'noop':
-                    noop = True
-                else:
-                    raise TemplateSyntaxError, "only option for 'trans' is 'noop'"
-            else:
-                noop = False
-            return (value, noop)
-    value, noop = TranslateParser(token.contents).top()
-    return TranslateNode(value, noop)
-
-def do_block_translate(parser, token):
-    """
-    This will translate a block of text with parameters.
-
-    Usage::
-
-        {% blocktrans with foo|filter as bar and baz|filter as boo %}
-        This is {{ bar }} and {{ boo }}.
-        {% endblocktrans %}
-
-    Additionally, this supports pluralization::
-
-        {% blocktrans count var|length as count %}
-        There is {{ count }} object.
-        {% plural %}
-        There are {{ count }} objects.
-        {% endblocktrans %}
-
-    This is much like ngettext, only in template syntax.
-    """
-    class BlockTranslateParser(TokenParser):
-        def top(self):
-            countervar = None
-            counter = None
-            extra_context = {}
-            while self.more():
-                tag = self.tag()
-                if tag == 'with' or tag == 'and':
-                    value = self.value()
-                    if self.tag() != 'as':
-                        raise TemplateSyntaxError, "variable bindings in 'blocktrans' must be 'with value as variable'"
-                    extra_context[self.tag()] = VariableNode(
-                            parser.compile_filter(value))
-                elif tag == 'count':
-                    counter = parser.compile_filter(self.value())
-                    if self.tag() != 'as':
-                        raise TemplateSyntaxError, "counter specification in 'blocktrans' must be 'count value as variable'"
-                    countervar = self.tag()
-                else:
-                    raise TemplateSyntaxError, "unknown subtag %s for 'blocktrans' found" % tag
-            return (countervar, counter, extra_context)
-
-    countervar, counter, extra_context = BlockTranslateParser(token.contents).top()
-
-    singular = []
-    plural = []
-    while parser.tokens:
-        token = parser.next_token()
-        if token.token_type in (TOKEN_VAR, TOKEN_TEXT):
-            singular.append(token)
-        else:
-            break
-    if countervar and counter:
-        if token.contents.strip() != 'plural':
-            raise TemplateSyntaxError, "'blocktrans' doesn't allow other block tags inside it"
-        while parser.tokens:
-            token = parser.next_token()
-            if token.token_type in (TOKEN_VAR, TOKEN_TEXT):
-                plural.append(token)
-            else:
-                break
-    if token.contents.strip() != 'endblocktrans':
-        raise TemplateSyntaxError, "'blocktrans' doesn't allow other block tags (seen %r) inside it" % token.contents
-
-    return BlockTranslateNode(extra_context, singular, plural, countervar,
-            counter)
-
-register.tag('get_available_languages', do_get_available_languages)
-register.tag('get_current_language', do_get_current_language)
-register.tag('get_current_language_bidi', do_get_current_language_bidi)
-register.tag('trans', do_translate)
-register.tag('blocktrans', do_block_translate)
diff --git a/webapp/django/test/__init__.py b/webapp/django/test/__init__.py
deleted file mode 100644
index 554e72b..0000000
--- a/webapp/django/test/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-"""
-Django Unit Test and Doctest framework.
-"""
-
-from django.test.client import Client
-from django.test.testcases import TestCase
diff --git a/webapp/django/test/_doctest.py b/webapp/django/test/_doctest.py
deleted file mode 100644
index a56483c..0000000
--- a/webapp/django/test/_doctest.py
+++ /dev/null
@@ -1,2693 +0,0 @@
-# This is a slightly modified version of the doctest.py that shipped with Python 2.4
-# It incorporates changes that have been submitted the the Python ticket tracker
-# as ticket #1521051. These changes allow for a DoctestRunner and Doctest base
-# class to be specified when constructing a DoctestSuite.
-
-# Module doctest.
-# Released to the public domain 16-Jan-2001, by Tim Peters (tim@python.org).
-# Major enhancements and refactoring by:
-#     Jim Fulton
-#     Edward Loper
-
-# Provided as-is; use at your own risk; no warranty; no promises; enjoy!
-
-r"""Module doctest -- a framework for running examples in docstrings.
-
-In simplest use, end each module M to be tested with:
-
-def _test():
-    import doctest
-    doctest.testmod()
-
-if __name__ == "__main__":
-    _test()
-
-Then running the module as a script will cause the examples in the
-docstrings to get executed and verified:
-
-python M.py
-
-This won't display anything unless an example fails, in which case the
-failing example(s) and the cause(s) of the failure(s) are printed to stdout
-(why not stderr? because stderr is a lame hack <0.2 wink>), and the final
-line of output is "Test failed.".
-
-Run it with the -v switch instead:
-
-python M.py -v
-
-and a detailed report of all examples tried is printed to stdout, along
-with assorted summaries at the end.
-
-You can force verbose mode by passing "verbose=True" to testmod, or prohibit
-it by passing "verbose=False".  In either of those cases, sys.argv is not
-examined by testmod.
-
-There are a variety of other ways to run doctests, including integration
-with the unittest framework, and support for running non-Python text
-files containing doctests.  There are also many ways to override parts
-of doctest's default behaviors.  See the Library Reference Manual for
-details.
-"""
-
-__docformat__ = 'reStructuredText en'
-
-__all__ = [
-    # 0, Option Flags
-    'register_optionflag',
-    'DONT_ACCEPT_TRUE_FOR_1',
-    'DONT_ACCEPT_BLANKLINE',
-    'NORMALIZE_WHITESPACE',
-    'ELLIPSIS',
-    'IGNORE_EXCEPTION_DETAIL',
-    'COMPARISON_FLAGS',
-    'REPORT_UDIFF',
-    'REPORT_CDIFF',
-    'REPORT_NDIFF',
-    'REPORT_ONLY_FIRST_FAILURE',
-    'REPORTING_FLAGS',
-    # 1. Utility Functions
-    'is_private',
-    # 2. Example & DocTest
-    'Example',
-    'DocTest',
-    # 3. Doctest Parser
-    'DocTestParser',
-    # 4. Doctest Finder
-    'DocTestFinder',
-    # 5. Doctest Runner
-    'DocTestRunner',
-    'OutputChecker',
-    'DocTestFailure',
-    'UnexpectedException',
-    'DebugRunner',
-    # 6. Test Functions
-    'testmod',
-    'testfile',
-    'run_docstring_examples',
-    # 7. Tester
-    'Tester',
-    # 8. Unittest Support
-    'DocTestSuite',
-    'DocFileSuite',
-    'set_unittest_reportflags',
-    # 9. Debugging Support
-    'script_from_examples',
-    'testsource',
-    'debug_src',
-    'debug',
-]
-
-import __future__
-
-import sys, traceback, inspect, linecache, os, re
-import unittest, difflib, pdb, tempfile
-import warnings
-from StringIO import StringIO
-
-if sys.platform.startswith('java'):
-    # On Jython, isclass() reports some modules as classes. Patch it.
-    def patch_isclass(isclass):
-        def patched_isclass(obj):
-            return isclass(obj) and hasattr(obj, '__module__')
-        return patched_isclass
-    inspect.isclass = patch_isclass(inspect.isclass)
-
-# Don't whine about the deprecated is_private function in this
-# module's tests.
-warnings.filterwarnings("ignore", "is_private", DeprecationWarning,
-                        __name__, 0)
-
-# There are 4 basic classes:
-#  - Example: a <source, want> pair, plus an intra-docstring line number.
-#  - DocTest: a collection of examples, parsed from a docstring, plus
-#    info about where the docstring came from (name, filename, lineno).
-#  - DocTestFinder: extracts DocTests from a given object's docstring and
-#    its contained objects' docstrings.
-#  - DocTestRunner: runs DocTest cases, and accumulates statistics.
-#
-# So the basic picture is:
-#
-#                             list of:
-# +------+                   +---------+                   +-------+
-# |object| --DocTestFinder-> | DocTest | --DocTestRunner-> |results|
-# +------+                   +---------+                   +-------+
-#                            | Example |
-#                            |   ...   |
-#                            | Example |
-#                            +---------+
-
-# Option constants.
-
-OPTIONFLAGS_BY_NAME = {}
-def register_optionflag(name):
-    flag = 1 << len(OPTIONFLAGS_BY_NAME)
-    OPTIONFLAGS_BY_NAME[name] = flag
-    return flag
-
-DONT_ACCEPT_TRUE_FOR_1 = register_optionflag('DONT_ACCEPT_TRUE_FOR_1')
-DONT_ACCEPT_BLANKLINE = register_optionflag('DONT_ACCEPT_BLANKLINE')
-NORMALIZE_WHITESPACE = register_optionflag('NORMALIZE_WHITESPACE')
-ELLIPSIS = register_optionflag('ELLIPSIS')
-IGNORE_EXCEPTION_DETAIL = register_optionflag('IGNORE_EXCEPTION_DETAIL')
-
-COMPARISON_FLAGS = (DONT_ACCEPT_TRUE_FOR_1 |
-                    DONT_ACCEPT_BLANKLINE |
-                    NORMALIZE_WHITESPACE |
-                    ELLIPSIS |
-                    IGNORE_EXCEPTION_DETAIL)
-
-REPORT_UDIFF = register_optionflag('REPORT_UDIFF')
-REPORT_CDIFF = register_optionflag('REPORT_CDIFF')
-REPORT_NDIFF = register_optionflag('REPORT_NDIFF')
-REPORT_ONLY_FIRST_FAILURE = register_optionflag('REPORT_ONLY_FIRST_FAILURE')
-
-REPORTING_FLAGS = (REPORT_UDIFF |
-                   REPORT_CDIFF |
-                   REPORT_NDIFF |
-                   REPORT_ONLY_FIRST_FAILURE)
-
-# Special string markers for use in `want` strings:
-BLANKLINE_MARKER = '<BLANKLINE>'
-ELLIPSIS_MARKER = '...'
-
-######################################################################
-## Table of Contents
-######################################################################
-#  1. Utility Functions
-#  2. Example & DocTest -- store test cases
-#  3. DocTest Parser -- extracts examples from strings
-#  4. DocTest Finder -- extracts test cases from objects
-#  5. DocTest Runner -- runs test cases
-#  6. Test Functions -- convenient wrappers for testing
-#  7. Tester Class -- for backwards compatibility
-#  8. Unittest Support
-#  9. Debugging Support
-# 10. Example Usage
-
-######################################################################
-## 1. Utility Functions
-######################################################################
-
-def is_private(prefix, base):
-    """prefix, base -> true iff name prefix + "." + base is "private".
-
-    Prefix may be an empty string, and base does not contain a period.
-    Prefix is ignored (although functions you write conforming to this
-    protocol may make use of it).
-    Return true iff base begins with an (at least one) underscore, but
-    does not both begin and end with (at least) two underscores.
-
-    >>> is_private("a.b", "my_func")
-    False
-    >>> is_private("____", "_my_func")
-    True
-    >>> is_private("someclass", "__init__")
-    False
-    >>> is_private("sometypo", "__init_")
-    True
-    >>> is_private("x.y.z", "_")
-    True
-    >>> is_private("_x.y.z", "__")
-    False
-    >>> is_private("", "")  # senseless but consistent
-    False
-    """
-    warnings.warn("is_private is deprecated; it wasn't useful; "
-                  "examine DocTestFinder.find() lists instead",
-                  DeprecationWarning, stacklevel=2)
-    return base[:1] == "_" and not base[:2] == "__" == base[-2:]
-
-def _extract_future_flags(globs):
-    """
-    Return the compiler-flags associated with the future features that
-    have been imported into the given namespace (globs).
-    """
-    flags = 0
-    for fname in __future__.all_feature_names:
-        feature = globs.get(fname, None)
-        if feature is getattr(__future__, fname):
-            flags |= feature.compiler_flag
-    return flags
-
-def _normalize_module(module, depth=2):
-    """
-    Return the module specified by `module`.  In particular:
-      - If `module` is a module, then return module.
-      - If `module` is a string, then import and return the
-        module with that name.
-      - If `module` is None, then return the calling module.
-        The calling module is assumed to be the module of
-        the stack frame at the given depth in the call stack.
-    """
-    if inspect.ismodule(module):
-        return module
-    elif isinstance(module, (str, unicode)):
-        return __import__(module, globals(), locals(), ["*"])
-    elif module is None:
-        return sys.modules[sys._getframe(depth).f_globals['__name__']]
-    else:
-        raise TypeError("Expected a module, string, or None")
-
-def _indent(s, indent=4):
-    """
-    Add the given number of space characters to the beginning every
-    non-blank line in `s`, and return the result.
-    """
-    # This regexp matches the start of non-blank lines:
-    return re.sub('(?m)^(?!$)', indent*' ', s)
-
-def _exception_traceback(exc_info):
-    """
-    Return a string containing a traceback message for the given
-    exc_info tuple (as returned by sys.exc_info()).
-    """
-    # Get a traceback message.
-    excout = StringIO()
-    exc_type, exc_val, exc_tb = exc_info
-    traceback.print_exception(exc_type, exc_val, exc_tb, file=excout)
-    return excout.getvalue()
-
-# Override some StringIO methods.
-class _SpoofOut(StringIO):
-    def getvalue(self):
-        result = StringIO.getvalue(self)
-        # If anything at all was written, make sure there's a trailing
-        # newline.  There's no way for the expected output to indicate
-        # that a trailing newline is missing.
-        if result and not result.endswith("\n"):
-            result += "\n"
-        # Prevent softspace from screwing up the next test case, in
-        # case they used print with a trailing comma in an example.
-        if hasattr(self, "softspace"):
-            del self.softspace
-        return result
-
-    def truncate(self,   size=None):
-        StringIO.truncate(self, size)
-        if hasattr(self, "softspace"):
-            del self.softspace
-
-# Worst-case linear-time ellipsis matching.
-def _ellipsis_match(want, got):
-    """
-    Essentially the only subtle case:
-    >>> _ellipsis_match('aa...aa', 'aaa')
-    False
-    """
-    if ELLIPSIS_MARKER not in want:
-        return want == got
-
-    # Find "the real" strings.
-    ws = want.split(ELLIPSIS_MARKER)
-    assert len(ws) >= 2
-
-    # Deal with exact matches possibly needed at one or both ends.
-    startpos, endpos = 0, len(got)
-    w = ws[0]
-    if w:   # starts with exact match
-        if got.startswith(w):
-            startpos = len(w)
-            del ws[0]
-        else:
-            return False
-    w = ws[-1]
-    if w:   # ends with exact match
-        if got.endswith(w):
-            endpos -= len(w)
-            del ws[-1]
-        else:
-            return False
-
-    if startpos > endpos:
-        # Exact end matches required more characters than we have, as in
-        # _ellipsis_match('aa...aa', 'aaa')
-        return False
-
-    # For the rest, we only need to find the leftmost non-overlapping
-    # match for each piece.  If there's no overall match that way alone,
-    # there's no overall match period.
-    for w in ws:
-        # w may be '' at times, if there are consecutive ellipses, or
-        # due to an ellipsis at the start or end of `want`.  That's OK.
-        # Search for an empty string succeeds, and doesn't change startpos.
-        startpos = got.find(w, startpos, endpos)
-        if startpos < 0:
-            return False
-        startpos += len(w)
-
-    return True
-
-def _comment_line(line):
-    "Return a commented form of the given line"
-    line = line.rstrip()
-    if line:
-        return '# '+line
-    else:
-        return '#'
-
-class _OutputRedirectingPdb(pdb.Pdb):
-    """
-    A specialized version of the python debugger that redirects stdout
-    to a given stream when interacting with the user.  Stdout is *not*
-    redirected when traced code is executed.
-    """
-    def __init__(self, out):
-        self.__out = out
-        self.__debugger_used = False
-        pdb.Pdb.__init__(self)
-
-    def set_trace(self):
-        self.__debugger_used = True
-        pdb.Pdb.set_trace(self)
-
-    def set_continue(self):
-        # Calling set_continue unconditionally would break unit test coverage
-        # reporting, as Bdb.set_continue calls sys.settrace(None).
-        if self.__debugger_used:
-            pdb.Pdb.set_continue(self)
-
-    def trace_dispatch(self, *args):
-        # Redirect stdout to the given stream.
-        save_stdout = sys.stdout
-        sys.stdout = self.__out
-        # Call Pdb's trace dispatch method.
-        try:
-            return pdb.Pdb.trace_dispatch(self, *args)
-        finally:
-            sys.stdout = save_stdout
-
-# [XX] Normalize with respect to os.path.pardir?
-def _module_relative_path(module, path):
-    if not inspect.ismodule(module):
-        raise TypeError, 'Expected a module: %r' % module
-    if path.startswith('/'):
-        raise ValueError, 'Module-relative files may not have absolute paths'
-
-    # Find the base directory for the path.
-    if hasattr(module, '__file__'):
-        # A normal module/package
-        basedir = os.path.split(module.__file__)[0]
-    elif module.__name__ == '__main__':
-        # An interactive session.
-        if len(sys.argv)>0 and sys.argv[0] != '':
-            basedir = os.path.split(sys.argv[0])[0]
-        else:
-            basedir = os.curdir
-    else:
-        # A module w/o __file__ (this includes builtins)
-        raise ValueError("Can't resolve paths relative to the module " +
-                         module + " (it has no __file__)")
-
-    # Combine the base directory and the path.
-    return os.path.join(basedir, *(path.split('/')))
-
-######################################################################
-## 2. Example & DocTest
-######################################################################
-## - An "example" is a <source, want> pair, where "source" is a
-##   fragment of source code, and "want" is the expected output for
-##   "source."  The Example class also includes information about
-##   where the example was extracted from.
-##
-## - A "doctest" is a collection of examples, typically extracted from
-##   a string (such as an object's docstring).  The DocTest class also
-##   includes information about where the string was extracted from.
-
-class Example:
-    """
-    A single doctest example, consisting of source code and expected
-    output.  `Example` defines the following attributes:
-
-      - source: A single Python statement, always ending with a newline.
-        The constructor adds a newline if needed.
-
-      - want: The expected output from running the source code (either
-        from stdout, or a traceback in case of exception).  `want` ends
-        with a newline unless it's empty, in which case it's an empty
-        string.  The constructor adds a newline if needed.
-
-      - exc_msg: The exception message generated by the example, if
-        the example is expected to generate an exception; or `None` if
-        it is not expected to generate an exception.  This exception
-        message is compared against the return value of
-        `traceback.format_exception_only()`.  `exc_msg` ends with a
-        newline unless it's `None`.  The constructor adds a newline
-        if needed.
-
-      - lineno: The line number within the DocTest string containing
-        this Example where the Example begins.  This line number is
-        zero-based, with respect to the beginning of the DocTest.
-
-      - indent: The example's indentation in the DocTest string.
-        I.e., the number of space characters that preceed the
-        example's first prompt.
-
-      - options: A dictionary mapping from option flags to True or
-        False, which is used to override default options for this
-        example.  Any option flags not contained in this dictionary
-        are left at their default value (as specified by the
-        DocTestRunner's optionflags).  By default, no options are set.
-    """
-    def __init__(self, source, want, exc_msg=None, lineno=0, indent=0,
-                 options=None):
-        # Normalize inputs.
-        if not source.endswith('\n'):
-            source += '\n'
-        if want and not want.endswith('\n'):
-            want += '\n'
-        if exc_msg is not None and not exc_msg.endswith('\n'):
-            exc_msg += '\n'
-        # Store properties.
-        self.source = source
-        self.want = want
-        self.lineno = lineno
-        self.indent = indent
-        if options is None: options = {}
-        self.options = options
-        self.exc_msg = exc_msg
-
-class DocTest:
-    """
-    A collection of doctest examples that should be run in a single
-    namespace.  Each `DocTest` defines the following attributes:
-
-      - examples: the list of examples.
-
-      - globs: The namespace (aka globals) that the examples should
-        be run in.
-
-      - name: A name identifying the DocTest (typically, the name of
-        the object whose docstring this DocTest was extracted from).
-
-      - filename: The name of the file that this DocTest was extracted
-        from, or `None` if the filename is unknown.
-
-      - lineno: The line number within filename where this DocTest
-        begins, or `None` if the line number is unavailable.  This
-        line number is zero-based, with respect to the beginning of
-        the file.
-
-      - docstring: The string that the examples were extracted from,
-        or `None` if the string is unavailable.
-    """
-    def __init__(self, examples, globs, name, filename, lineno, docstring):
-        """
-        Create a new DocTest containing the given examples.  The
-        DocTest's globals are initialized with a copy of `globs`.
-        """
-        assert not isinstance(examples, basestring), \
-               "DocTest no longer accepts str; use DocTestParser instead"
-        self.examples = examples
-        self.docstring = docstring
-        self.globs = globs.copy()
-        self.name = name
-        self.filename = filename
-        self.lineno = lineno
-
-    def __repr__(self):
-        if len(self.examples) == 0:
-            examples = 'no examples'
-        elif len(self.examples) == 1:
-            examples = '1 example'
-        else:
-            examples = '%d examples' % len(self.examples)
-        return ('<DocTest %s from %s:%s (%s)>' %
-                (self.name, self.filename, self.lineno, examples))
-
-
-    # This lets us sort tests by name:
-    def __cmp__(self, other):
-        if not isinstance(other, DocTest):
-            return -1
-        return cmp((self.name, self.filename, self.lineno, id(self)),
-                   (other.name, other.filename, other.lineno, id(other)))
-
-######################################################################
-## 3. DocTestParser
-######################################################################
-
-class DocTestParser:
-    """
-    A class used to parse strings containing doctest examples.
-    """
-    # This regular expression is used to find doctest examples in a
-    # string.  It defines three groups: `source` is the source code
-    # (including leading indentation and prompts); `indent` is the
-    # indentation of the first (PS1) line of the source code; and
-    # `want` is the expected output (including leading indentation).
-    _EXAMPLE_RE = re.compile(r'''
-        # Source consists of a PS1 line followed by zero or more PS2 lines.
-        (?P<source>
-            (?:^(?P<indent> [ ]*) >>>    .*)    # PS1 line
-            (?:\n           [ ]*  \.\.\. .*)*)  # PS2 lines
-        \n?
-        # Want consists of any non-blank lines that do not start with PS1.
-        (?P<want> (?:(?![ ]*$)    # Not a blank line
-                     (?![ ]*>>>)  # Not a line starting with PS1
-                     .*$\n?       # But any other line
-                  )*)
-        ''', re.MULTILINE | re.VERBOSE)
-
-    # A regular expression for handling `want` strings that contain
-    # expected exceptions.  It divides `want` into three pieces:
-    #    - the traceback header line (`hdr`)
-    #    - the traceback stack (`stack`)
-    #    - the exception message (`msg`), as generated by
-    #      traceback.format_exception_only()
-    # `msg` may have multiple lines.  We assume/require that the
-    # exception message is the first non-indented line starting with a word
-    # character following the traceback header line.
-    _EXCEPTION_RE = re.compile(r"""
-        # Grab the traceback header.  Different versions of Python have
-        # said different things on the first traceback line.
-        ^(?P<hdr> Traceback\ \(
-            (?: most\ recent\ call\ last
-            |   innermost\ last
-            ) \) :
-        )
-        \s* $                # toss trailing whitespace on the header.
-        (?P<stack> .*?)      # don't blink: absorb stuff until...
-        ^ (?P<msg> \w+ .*)   #     a line *starts* with alphanum.
-        """, re.VERBOSE | re.MULTILINE | re.DOTALL)
-
-    # A callable returning a true value iff its argument is a blank line
-    # or contains a single comment.
-    _IS_BLANK_OR_COMMENT = re.compile(r'^[ ]*(#.*)?$').match
-
-    def parse(self, string, name='<string>'):
-        """
-        Divide the given string into examples and intervening text,
-        and return them as a list of alternating Examples and strings.
-        Line numbers for the Examples are 0-based.  The optional
-        argument `name` is a name identifying this string, and is only
-        used for error messages.
-        """
-        string = string.expandtabs()
-        # If all lines begin with the same indentation, then strip it.
-        min_indent = self._min_indent(string)
-        if min_indent > 0:
-            string = '\n'.join([l[min_indent:] for l in string.split('\n')])
-
-        output = []
-        charno, lineno = 0, 0
-        # Find all doctest examples in the string:
-        for m in self._EXAMPLE_RE.finditer(string):
-            # Add the pre-example text to `output`.
-            output.append(string[charno:m.start()])
-            # Update lineno (lines before this example)
-            lineno += string.count('\n', charno, m.start())
-            # Extract info from the regexp match.
-            (source, options, want, exc_msg) = \
-                     self._parse_example(m, name, lineno)
-            # Create an Example, and add it to the list.
-            if not self._IS_BLANK_OR_COMMENT(source):
-                output.append( Example(source, want, exc_msg,
-                                    lineno=lineno,
-                                    indent=min_indent+len(m.group('indent')),
-                                    options=options) )
-            # Update lineno (lines inside this example)
-            lineno += string.count('\n', m.start(), m.end())
-            # Update charno.
-            charno = m.end()
-        # Add any remaining post-example text to `output`.
-        output.append(string[charno:])
-        return output
-
-    def get_doctest(self, string, globs, name, filename, lineno):
-        """
-        Extract all doctest examples from the given string, and
-        collect them into a `DocTest` object.
-
-        `globs`, `name`, `filename`, and `lineno` are attributes for
-        the new `DocTest` object.  See the documentation for `DocTest`
-        for more information.
-        """
-        return DocTest(self.get_examples(string, name), globs,
-                       name, filename, lineno, string)
-
-    def get_examples(self, string, name='<string>'):
-        """
-        Extract all doctest examples from the given string, and return
-        them as a list of `Example` objects.  Line numbers are
-        0-based, because it's most common in doctests that nothing
-        interesting appears on the same line as opening triple-quote,
-        and so the first interesting line is called \"line 1\" then.
-
-        The optional argument `name` is a name identifying this
-        string, and is only used for error messages.
-        """
-        return [x for x in self.parse(string, name)
-                if isinstance(x, Example)]
-
-    def _parse_example(self, m, name, lineno):
-        """
-        Given a regular expression match from `_EXAMPLE_RE` (`m`),
-        return a pair `(source, want)`, where `source` is the matched
-        example's source code (with prompts and indentation stripped);
-        and `want` is the example's expected output (with indentation
-        stripped).
-
-        `name` is the string's name, and `lineno` is the line number
-        where the example starts; both are used for error messages.
-        """
-        # Get the example's indentation level.
-        indent = len(m.group('indent'))
-
-        # Divide source into lines; check that they're properly
-        # indented; and then strip their indentation & prompts.
-        source_lines = m.group('source').split('\n')
-        self._check_prompt_blank(source_lines, indent, name, lineno)
-        self._check_prefix(source_lines[1:], ' '*indent + '.', name, lineno)
-        source = '\n'.join([sl[indent+4:] for sl in source_lines])
-
-        # Divide want into lines; check that it's properly indented; and
-        # then strip the indentation.  Spaces before the last newline should
-        # be preserved, so plain rstrip() isn't good enough.
-        want = m.group('want')
-        want_lines = want.split('\n')
-        if len(want_lines) > 1 and re.match(r' *$', want_lines[-1]):
-            del want_lines[-1]  # forget final newline & spaces after it
-        self._check_prefix(want_lines, ' '*indent, name,
-                           lineno + len(source_lines))
-        want = '\n'.join([wl[indent:] for wl in want_lines])
-
-        # If `want` contains a traceback message, then extract it.
-        m = self._EXCEPTION_RE.match(want)
-        if m:
-            exc_msg = m.group('msg')
-        else:
-            exc_msg = None
-
-        # Extract options from the source.
-        options = self._find_options(source, name, lineno)
-
-        return source, options, want, exc_msg
-
-    # This regular expression looks for option directives in the
-    # source code of an example.  Option directives are comments
-    # starting with "doctest:".  Warning: this may give false
-    # positives for string-literals that contain the string
-    # "#doctest:".  Eliminating these false positives would require
-    # actually parsing the string; but we limit them by ignoring any
-    # line containing "#doctest:" that is *followed* by a quote mark.
-    _OPTION_DIRECTIVE_RE = re.compile(r'#\s*doctest:\s*([^\n\'"]*)$',
-                                      re.MULTILINE)
-
-    def _find_options(self, source, name, lineno):
-        """
-        Return a dictionary containing option overrides extracted from
-        option directives in the given source string.
-
-        `name` is the string's name, and `lineno` is the line number
-        where the example starts; both are used for error messages.
-        """
-        options = {}
-        # (note: with the current regexp, this will match at most once:)
-        for m in self._OPTION_DIRECTIVE_RE.finditer(source):
-            option_strings = m.group(1).replace(',', ' ').split()
-            for option in option_strings:
-                if (option[0] not in '+-' or
-                    option[1:] not in OPTIONFLAGS_BY_NAME):
-                    raise ValueError('line %r of the doctest for %s '
-                                     'has an invalid option: %r' %
-                                     (lineno+1, name, option))
-                flag = OPTIONFLAGS_BY_NAME[option[1:]]
-                options[flag] = (option[0] == '+')
-        if options and self._IS_BLANK_OR_COMMENT(source):
-            raise ValueError('line %r of the doctest for %s has an option '
-                             'directive on a line with no example: %r' %
-                             (lineno, name, source))
-        return options
-
-    # This regular expression finds the indentation of every non-blank
-    # line in a string.
-    _INDENT_RE = re.compile('^([ ]*)(?=\S)', re.MULTILINE)
-
-    def _min_indent(self, s):
-        "Return the minimum indentation of any non-blank line in `s`"
-        indents = [len(indent) for indent in self._INDENT_RE.findall(s)]
-        if len(indents) > 0:
-            return min(indents)
-        else:
-            return 0
-
-    def _check_prompt_blank(self, lines, indent, name, lineno):
-        """
-        Given the lines of a source string (including prompts and
-        leading indentation), check to make sure that every prompt is
-        followed by a space character.  If any line is not followed by
-        a space character, then raise ValueError.
-        """
-        for i, line in enumerate(lines):
-            if len(line) >= indent+4 and line[indent+3] != ' ':
-                raise ValueError('line %r of the docstring for %s '
-                                 'lacks blank after %s: %r' %
-                                 (lineno+i+1, name,
-                                  line[indent:indent+3], line))
-
-    def _check_prefix(self, lines, prefix, name, lineno):
-        """
-        Check that every line in the given list starts with the given
-        prefix; if any line does not, then raise a ValueError.
-        """
-        for i, line in enumerate(lines):
-            if line and not line.startswith(prefix):
-                raise ValueError('line %r of the docstring for %s has '
-                                 'inconsistent leading whitespace: %r' %
-                                 (lineno+i+1, name, line))
-
-
-######################################################################
-## 4. DocTest Finder
-######################################################################
-
-class DocTestFinder:
-    """
-    A class used to extract the DocTests that are relevant to a given
-    object, from its docstring and the docstrings of its contained
-    objects.  Doctests can currently be extracted from the following
-    object types: modules, functions, classes, methods, staticmethods,
-    classmethods, and properties.
-    """
-
-    def __init__(self, verbose=False, parser=DocTestParser(),
-                 recurse=True, _namefilter=None, exclude_empty=True):
-        """
-        Create a new doctest finder.
-
-        The optional argument `parser` specifies a class or
-        function that should be used to create new DocTest objects (or
-        objects that implement the same interface as DocTest).  The
-        signature for this factory function should match the signature
-        of the DocTest constructor.
-
-        If the optional argument `recurse` is false, then `find` will
-        only examine the given object, and not any contained objects.
-
-        If the optional argument `exclude_empty` is false, then `find`
-        will include tests for objects with empty docstrings.
-        """
-        self._parser = parser
-        self._verbose = verbose
-        self._recurse = recurse
-        self._exclude_empty = exclude_empty
-        # _namefilter is undocumented, and exists only for temporary backward-
-        # compatibility support of testmod's deprecated isprivate mess.
-        self._namefilter = _namefilter
-
-    def find(self, obj, name=None, module=None, globs=None,
-             extraglobs=None):
-        """
-        Return a list of the DocTests that are defined by the given
-        object's docstring, or by any of its contained objects'
-        docstrings.
-
-        The optional parameter `module` is the module that contains
-        the given object.  If the module is not specified or is None, then
-        the test finder will attempt to automatically determine the
-        correct module.  The object's module is used:
-
-            - As a default namespace, if `globs` is not specified.
-            - To prevent the DocTestFinder from extracting DocTests
-              from objects that are imported from other modules.
-            - To find the name of the file containing the object.
-            - To help find the line number of the object within its
-              file.
-
-        Contained objects whose module does not match `module` are ignored.
-
-        If `module` is False, no attempt to find the module will be made.
-        This is obscure, of use mostly in tests:  if `module` is False, or
-        is None but cannot be found automatically, then all objects are
-        considered to belong to the (non-existent) module, so all contained
-        objects will (recursively) be searched for doctests.
-
-        The globals for each DocTest is formed by combining `globs`
-        and `extraglobs` (bindings in `extraglobs` override bindings
-        in `globs`).  A new copy of the globals dictionary is created
-        for each DocTest.  If `globs` is not specified, then it
-        defaults to the module's `__dict__`, if specified, or {}
-        otherwise.  If `extraglobs` is not specified, then it defaults
-        to {}.
-
-        """
-        # If name was not specified, then extract it from the object.
-        if name is None:
-            name = getattr(obj, '__name__', None)
-            if name is None:
-                raise ValueError("DocTestFinder.find: name must be given "
-                        "when obj.__name__ doesn't exist: %r" %
-                                 (type(obj),))
-
-        # Find the module that contains the given object (if obj is
-        # a module, then module=obj.).  Note: this may fail, in which
-        # case module will be None.
-        if module is False:
-            module = None
-        elif module is None:
-            module = inspect.getmodule(obj)
-
-        # Read the module's source code.  This is used by
-        # DocTestFinder._find_lineno to find the line number for a
-        # given object's docstring.
-        try:
-            file = inspect.getsourcefile(obj) or inspect.getfile(obj)
-            source_lines = linecache.getlines(file)
-            if not source_lines:
-                source_lines = None
-        except TypeError:
-            source_lines = None
-
-        # Initialize globals, and merge in extraglobs.
-        if globs is None:
-            if module is None:
-                globs = {}
-            else:
-                globs = module.__dict__.copy()
-        else:
-            globs = globs.copy()
-        if extraglobs is not None:
-            globs.update(extraglobs)
-
-        # Recursively explore `obj`, extracting DocTests.
-        tests = []
-        self._find(tests, obj, name, module, source_lines, globs, {})
-        return tests
-
-    def _filter(self, obj, prefix, base):
-        """
-        Return true if the given object should not be examined.
-        """
-        return (self._namefilter is not None and
-                self._namefilter(prefix, base))
-
-    def _from_module(self, module, object):
-        """
-        Return true if the given object is defined in the given
-        module.
-        """
-        if module is None:
-            return True
-        elif inspect.isfunction(object):
-            return module.__dict__ is object.func_globals
-        elif inspect.isclass(object):
-            return module.__name__ == object.__module__
-        elif inspect.getmodule(object) is not None:
-            return module is inspect.getmodule(object)
-        elif hasattr(object, '__module__'):
-            return module.__name__ == object.__module__
-        elif isinstance(object, property):
-            return True # [XX] no way not be sure.
-        else:
-            raise ValueError("object must be a class or function")
-
-    def _find(self, tests, obj, name, module, source_lines, globs, seen):
-        """
-        Find tests for the given object and any contained objects, and
-        add them to `tests`.
-        """
-        if self._verbose:
-            print 'Finding tests in %s' % name
-
-        # If we've already processed this object, then ignore it.
-        if id(obj) in seen:
-            return
-        seen[id(obj)] = 1
-
-        # Find a test for this object, and add it to the list of tests.
-        test = self._get_test(obj, name, module, globs, source_lines)
-        if test is not None:
-            tests.append(test)
-
-        # Look for tests in a module's contained objects.
-        if inspect.ismodule(obj) and self._recurse:
-            for valname, val in obj.__dict__.items():
-                # Check if this contained object should be ignored.
-                if self._filter(val, name, valname):
-                    continue
-                valname = '%s.%s' % (name, valname)
-                # Recurse to functions & classes.
-                if ((inspect.isfunction(val) or inspect.isclass(val)) and
-                    self._from_module(module, val)):
-                    self._find(tests, val, valname, module, source_lines,
-                               globs, seen)
-
-        # Look for tests in a module's __test__ dictionary.
-        if inspect.ismodule(obj) and self._recurse:
-            for valname, val in getattr(obj, '__test__', {}).items():
-                if not isinstance(valname, basestring):
-                    raise ValueError("DocTestFinder.find: __test__ keys "
-                                     "must be strings: %r" %
-                                     (type(valname),))
-                if not (inspect.isfunction(val) or inspect.isclass(val) or
-                        inspect.ismethod(val) or inspect.ismodule(val) or
-                        isinstance(val, basestring)):
-                    raise ValueError("DocTestFinder.find: __test__ values "
-                                     "must be strings, functions, methods, "
-                                     "classes, or modules: %r" %
-                                     (type(val),))
-                valname = '%s.__test__.%s' % (name, valname)
-                self._find(tests, val, valname, module, source_lines,
-                           globs, seen)
-
-        # Look for tests in a class's contained objects.
-        if inspect.isclass(obj) and self._recurse:
-            for valname, val in obj.__dict__.items():
-                # Check if this contained object should be ignored.
-                if self._filter(val, name, valname):
-                    continue
-                # Special handling for staticmethod/classmethod.
-                if isinstance(val, staticmethod):
-                    val = getattr(obj, valname)
-                if isinstance(val, classmethod):
-                    val = getattr(obj, valname).im_func
-
-                # Recurse to methods, properties, and nested classes.
-                if ((inspect.isfunction(val) or inspect.isclass(val) or
-                      isinstance(val, property)) and
-                      self._from_module(module, val)):
-                    valname = '%s.%s' % (name, valname)
-                    self._find(tests, val, valname, module, source_lines,
-                               globs, seen)
-
-    def _get_test(self, obj, name, module, globs, source_lines):
-        """
-        Return a DocTest for the given object, if it defines a docstring;
-        otherwise, return None.
-        """
-        # Extract the object's docstring.  If it doesn't have one,
-        # then return None (no test for this object).
-        if isinstance(obj, basestring):
-            docstring = obj
-        else:
-            try:
-                if obj.__doc__ is None:
-                    docstring = ''
-                else:
-                    docstring = obj.__doc__
-                    if not isinstance(docstring, basestring):
-                        docstring = str(docstring)
-            except (TypeError, AttributeError):
-                docstring = ''
-
-        # Find the docstring's location in the file.
-        lineno = self._find_lineno(obj, source_lines)
-
-        # Don't bother if the docstring is empty.
-        if self._exclude_empty and not docstring:
-            return None
-
-        # Return a DocTest for this object.
-        if module is None:
-            filename = None
-        else:
-            filename = getattr(module, '__file__', module.__name__)
-            if filename[-4:] in (".pyc", ".pyo"):
-                filename = filename[:-1]
-        return self._parser.get_doctest(docstring, globs, name,
-                                        filename, lineno)
-
-    def _find_lineno(self, obj, source_lines):
-        """
-        Return a line number of the given object's docstring.  Note:
-        this method assumes that the object has a docstring.
-        """
-        lineno = None
-
-        # Find the line number for modules.
-        if inspect.ismodule(obj):
-            lineno = 0
-
-        # Find the line number for classes.
-        # Note: this could be fooled if a class is defined multiple
-        # times in a single file.
-        if inspect.isclass(obj):
-            if source_lines is None:
-                return None
-            pat = re.compile(r'^\s*class\s*%s\b' %
-                             getattr(obj, '__name__', '-'))
-            for i, line in enumerate(source_lines):
-                if pat.match(line):
-                    lineno = i
-                    break
-
-        # Find the line number for functions & methods.
-        if inspect.ismethod(obj): obj = obj.im_func
-        if inspect.isfunction(obj): obj = obj.func_code
-        if inspect.istraceback(obj): obj = obj.tb_frame
-        if inspect.isframe(obj): obj = obj.f_code
-        if inspect.iscode(obj):
-            lineno = getattr(obj, 'co_firstlineno', None)-1
-
-        # Find the line number where the docstring starts.  Assume
-        # that it's the first line that begins with a quote mark.
-        # Note: this could be fooled by a multiline function
-        # signature, where a continuation line begins with a quote
-        # mark.
-        if lineno is not None:
-            if source_lines is None:
-                return lineno+1
-            pat = re.compile('(^|.*:)\s*\w*("|\')')
-            for lineno in range(lineno, len(source_lines)):
-                if pat.match(source_lines[lineno]):
-                    return lineno
-
-        # We couldn't find the line number.
-        return None
-
-######################################################################
-## 5. DocTest Runner
-######################################################################
-
-class DocTestRunner:
-    """
-    A class used to run DocTest test cases, and accumulate statistics.
-    The `run` method is used to process a single DocTest case.  It
-    returns a tuple `(f, t)`, where `t` is the number of test cases
-    tried, and `f` is the number of test cases that failed.
-
-        >>> tests = DocTestFinder().find(_TestClass)
-        >>> runner = DocTestRunner(verbose=False)
-        >>> for test in tests:
-        ...     print runner.run(test)
-        (0, 2)
-        (0, 1)
-        (0, 2)
-        (0, 2)
-
-    The `summarize` method prints a summary of all the test cases that
-    have been run by the runner, and returns an aggregated `(f, t)`
-    tuple:
-
-        >>> runner.summarize(verbose=1)
-        4 items passed all tests:
-           2 tests in _TestClass
-           2 tests in _TestClass.__init__
-           2 tests in _TestClass.get
-           1 tests in _TestClass.square
-        7 tests in 4 items.
-        7 passed and 0 failed.
-        Test passed.
-        (0, 7)
-
-    The aggregated number of tried examples and failed examples is
-    also available via the `tries` and `failures` attributes:
-
-        >>> runner.tries
-        7
-        >>> runner.failures
-        0
-
-    The comparison between expected outputs and actual outputs is done
-    by an `OutputChecker`.  This comparison may be customized with a
-    number of option flags; see the documentation for `testmod` for
-    more information.  If the option flags are insufficient, then the
-    comparison may also be customized by passing a subclass of
-    `OutputChecker` to the constructor.
-
-    The test runner's display output can be controlled in two ways.
-    First, an output function (`out) can be passed to
-    `TestRunner.run`; this function will be called with strings that
-    should be displayed.  It defaults to `sys.stdout.write`.  If
-    capturing the output is not sufficient, then the display output
-    can be also customized by subclassing DocTestRunner, and
-    overriding the methods `report_start`, `report_success`,
-    `report_unexpected_exception`, and `report_failure`.
-    """
-    # This divider string is used to separate failure messages, and to
-    # separate sections of the summary.
-    DIVIDER = "*" * 70
-
-    def __init__(self, checker=None, verbose=None, optionflags=0):
-        """
-        Create a new test runner.
-
-        Optional keyword arg `checker` is the `OutputChecker` that
-        should be used to compare the expected outputs and actual
-        outputs of doctest examples.
-
-        Optional keyword arg 'verbose' prints lots of stuff if true,
-        only failures if false; by default, it's true iff '-v' is in
-        sys.argv.
-
-        Optional argument `optionflags` can be used to control how the
-        test runner compares expected output to actual output, and how
-        it displays failures.  See the documentation for `testmod` for
-        more information.
-        """
-        self._checker = checker or OutputChecker()
-        if verbose is None:
-            verbose = '-v' in sys.argv
-        self._verbose = verbose
-        self.optionflags = optionflags
-        self.original_optionflags = optionflags
-
-        # Keep track of the examples we've run.
-        self.tries = 0
-        self.failures = 0
-        self._name2ft = {}
-
-        # Create a fake output target for capturing doctest output.
-        self._fakeout = _SpoofOut()
-
-    #/////////////////////////////////////////////////////////////////
-    # Reporting methods
-    #/////////////////////////////////////////////////////////////////
-
-    def report_start(self, out, test, example):
-        """
-        Report that the test runner is about to process the given
-        example.  (Only displays a message if verbose=True)
-        """
-        if self._verbose:
-            if example.want:
-                out('Trying:\n' + _indent(example.source) +
-                    'Expecting:\n' + _indent(example.want))
-            else:
-                out('Trying:\n' + _indent(example.source) +
-                    'Expecting nothing\n')
-
-    def report_success(self, out, test, example, got):
-        """
-        Report that the given example ran successfully.  (Only
-        displays a message if verbose=True)
-        """
-        if self._verbose:
-            out("ok\n")
-
-    def report_failure(self, out, test, example, got):
-        """
-        Report that the given example failed.
-        """
-        out(self._failure_header(test, example) +
-            self._checker.output_difference(example, got, self.optionflags))
-
-    def report_unexpected_exception(self, out, test, example, exc_info):
-        """
-        Report that the given example raised an unexpected exception.
-        """
-        out(self._failure_header(test, example) +
-            'Exception raised:\n' + _indent(_exception_traceback(exc_info)))
-
-    def _failure_header(self, test, example):
-        out = [self.DIVIDER]
-        if test.filename:
-            if test.lineno is not None and example.lineno is not None:
-                lineno = test.lineno + example.lineno + 1
-            else:
-                lineno = '?'
-            out.append('File "%s", line %s, in %s' %
-                       (test.filename, lineno, test.name))
-        else:
-            out.append('Line %s, in %s' % (example.lineno+1, test.name))
-        out.append('Failed example:')
-        source = example.source
-        out.append(_indent(source))
-        return '\n'.join(out)
-
-    #/////////////////////////////////////////////////////////////////
-    # DocTest Running
-    #/////////////////////////////////////////////////////////////////
-
-    def __run(self, test, compileflags, out):
-        """
-        Run the examples in `test`.  Write the outcome of each example
-        with one of the `DocTestRunner.report_*` methods, using the
-        writer function `out`.  `compileflags` is the set of compiler
-        flags that should be used to execute examples.  Return a tuple
-        `(f, t)`, where `t` is the number of examples tried, and `f`
-        is the number of examples that failed.  The examples are run
-        in the namespace `test.globs`.
-        """
-        # Keep track of the number of failures and tries.
-        failures = tries = 0
-
-        # Save the option flags (since option directives can be used
-        # to modify them).
-        original_optionflags = self.optionflags
-
-        SUCCESS, FAILURE, BOOM = range(3) # `outcome` state
-
-        check = self._checker.check_output
-
-        # Process each example.
-        for examplenum, example in enumerate(test.examples):
-
-            # If REPORT_ONLY_FIRST_FAILURE is set, then suppress
-            # reporting after the first failure.
-            quiet = (self.optionflags & REPORT_ONLY_FIRST_FAILURE and
-                     failures > 0)
-
-            # Merge in the example's options.
-            self.optionflags = original_optionflags
-            if example.options:
-                for (optionflag, val) in example.options.items():
-                    if val:
-                        self.optionflags |= optionflag
-                    else:
-                        self.optionflags &= ~optionflag
-
-            # Record that we started this example.
-            tries += 1
-            if not quiet:
-                self.report_start(out, test, example)
-
-            # Use a special filename for compile(), so we can retrieve
-            # the source code during interactive debugging (see
-            # __patched_linecache_getlines).
-            filename = '<doctest %s[%d]>' % (test.name, examplenum)
-
-            # Run the example in the given context (globs), and record
-            # any exception that gets raised.  (But don't intercept
-            # keyboard interrupts.)
-            try:
-                # Don't blink!  This is where the user's code gets run.
-                exec compile(example.source, filename, "single",
-                             compileflags, 1) in test.globs
-                self.debugger.set_continue() # ==== Example Finished ====
-                exception = None
-            except KeyboardInterrupt:
-                raise
-            except:
-                exception = sys.exc_info()
-                self.debugger.set_continue() # ==== Example Finished ====
-
-            got = self._fakeout.getvalue()  # the actual output
-            self._fakeout.truncate(0)
-            outcome = FAILURE   # guilty until proved innocent or insane
-
-            # If the example executed without raising any exceptions,
-            # verify its output.
-            if exception is None:
-                if check(example.want, got, self.optionflags):
-                    outcome = SUCCESS
-
-            # The example raised an exception:  check if it was expected.
-            else:
-                exc_info = sys.exc_info()
-                exc_msg = traceback.format_exception_only(*exc_info[:2])[-1]
-                if not quiet:
-                    got += _exception_traceback(exc_info)
-
-                # If `example.exc_msg` is None, then we weren't expecting
-                # an exception.
-                if example.exc_msg is None:
-                    outcome = BOOM
-
-                # We expected an exception:  see whether it matches.
-                elif check(example.exc_msg, exc_msg, self.optionflags):
-                    outcome = SUCCESS
-
-                # Another chance if they didn't care about the detail.
-                elif self.optionflags & IGNORE_EXCEPTION_DETAIL:
-                    m1 = re.match(r'[^:]*:', example.exc_msg)
-                    m2 = re.match(r'[^:]*:', exc_msg)
-                    if m1 and m2 and check(m1.group(0), m2.group(0),
-                                           self.optionflags):
-                        outcome = SUCCESS
-
-            # Report the outcome.
-            if outcome is SUCCESS:
-                if not quiet:
-                    self.report_success(out, test, example, got)
-            elif outcome is FAILURE:
-                if not quiet:
-                    self.report_failure(out, test, example, got)
-                failures += 1
-            elif outcome is BOOM:
-                if not quiet:
-                    self.report_unexpected_exception(out, test, example,
-                                                     exc_info)
-                failures += 1
-            else:
-                assert False, ("unknown outcome", outcome)
-
-        # Restore the option flags (in case they were modified)
-        self.optionflags = original_optionflags
-
-        # Record and return the number of failures and tries.
-        self.__record_outcome(test, failures, tries)
-        return failures, tries
-
-    def __record_outcome(self, test, f, t):
-        """
-        Record the fact that the given DocTest (`test`) generated `f`
-        failures out of `t` tried examples.
-        """
-        f2, t2 = self._name2ft.get(test.name, (0,0))
-        self._name2ft[test.name] = (f+f2, t+t2)
-        self.failures += f
-        self.tries += t
-
-    __LINECACHE_FILENAME_RE = re.compile(r'<doctest '
-                                         r'(?P<name>[\w\.]+)'
-                                         r'\[(?P<examplenum>\d+)\]>$')
-    def __patched_linecache_getlines(self, filename, module_globals=None):
-        m = self.__LINECACHE_FILENAME_RE.match(filename)
-        if m and m.group('name') == self.test.name:
-            example = self.test.examples[int(m.group('examplenum'))]
-            return example.source.splitlines(True)
-        else:
-            if sys.version_info < (2, 5, 0):
-                return self.save_linecache_getlines(filename)
-            else:
-                return self.save_linecache_getlines(filename, module_globals)
-
-    def run(self, test, compileflags=None, out=None, clear_globs=True):
-        """
-        Run the examples in `test`, and display the results using the
-        writer function `out`.
-
-        The examples are run in the namespace `test.globs`.  If
-        `clear_globs` is true (the default), then this namespace will
-        be cleared after the test runs, to help with garbage
-        collection.  If you would like to examine the namespace after
-        the test completes, then use `clear_globs=False`.
-
-        `compileflags` gives the set of flags that should be used by
-        the Python compiler when running the examples.  If not
-        specified, then it will default to the set of future-import
-        flags that apply to `globs`.
-
-        The output of each example is checked using
-        `DocTestRunner.check_output`, and the results are formatted by
-        the `DocTestRunner.report_*` methods.
-        """
-        self.test = test
-
-        if compileflags is None:
-            compileflags = _extract_future_flags(test.globs)
-
-        save_stdout = sys.stdout
-        if out is None:
-            out = save_stdout.write
-        sys.stdout = self._fakeout
-
-        # Patch pdb.set_trace to restore sys.stdout during interactive
-        # debugging (so it's not still redirected to self._fakeout).
-        # Note that the interactive output will go to *our*
-        # save_stdout, even if that's not the real sys.stdout; this
-        # allows us to write test cases for the set_trace behavior.
-        save_set_trace = pdb.set_trace
-        self.debugger = _OutputRedirectingPdb(save_stdout)
-        self.debugger.reset()
-        pdb.set_trace = self.debugger.set_trace
-
-        # Patch linecache.getlines, so we can see the example's source
-        # when we're inside the debugger.
-        self.save_linecache_getlines = linecache.getlines
-        linecache.getlines = self.__patched_linecache_getlines
-
-        try:
-            return self.__run(test, compileflags, out)
-        finally:
-            sys.stdout = save_stdout
-            pdb.set_trace = save_set_trace
-            linecache.getlines = self.save_linecache_getlines
-            if clear_globs:
-                test.globs.clear()
-
-    #/////////////////////////////////////////////////////////////////
-    # Summarization
-    #/////////////////////////////////////////////////////////////////
-    def summarize(self, verbose=None):
-        """
-        Print a summary of all the test cases that have been run by
-        this DocTestRunner, and return a tuple `(f, t)`, where `f` is
-        the total number of failed examples, and `t` is the total
-        number of tried examples.
-
-        The optional `verbose` argument controls how detailed the
-        summary is.  If the verbosity is not specified, then the
-        DocTestRunner's verbosity is used.
-        """
-        if verbose is None:
-            verbose = self._verbose
-        notests = []
-        passed = []
-        failed = []
-        totalt = totalf = 0
-        for x in self._name2ft.items():
-            name, (f, t) = x
-            assert f <= t
-            totalt += t
-            totalf += f
-            if t == 0:
-                notests.append(name)
-            elif f == 0:
-                passed.append( (name, t) )
-            else:
-                failed.append(x)
-        if verbose:
-            if notests:
-                print len(notests), "items had no tests:"
-                notests.sort()
-                for thing in notests:
-                    print "   ", thing
-            if passed:
-                print len(passed), "items passed all tests:"
-                passed.sort()
-                for thing, count in passed:
-                    print " %3d tests in %s" % (count, thing)
-        if failed:
-            print self.DIVIDER
-            print len(failed), "items had failures:"
-            failed.sort()
-            for thing, (f, t) in failed:
-                print " %3d of %3d in %s" % (f, t, thing)
-        if verbose:
-            print totalt, "tests in", len(self._name2ft), "items."
-            print totalt - totalf, "passed and", totalf, "failed."
-        if totalf:
-            print "***Test Failed***", totalf, "failures."
-        elif verbose:
-            print "Test passed."
-        return totalf, totalt
-
-    #/////////////////////////////////////////////////////////////////
-    # Backward compatibility cruft to maintain doctest.master.
-    #/////////////////////////////////////////////////////////////////
-    def merge(self, other):
-        d = self._name2ft
-        for name, (f, t) in other._name2ft.items():
-            if name in d:
-                print "*** DocTestRunner.merge: '" + name + "' in both" \
-                    " testers; summing outcomes."
-                f2, t2 = d[name]
-                f = f + f2
-                t = t + t2
-            d[name] = f, t
-
-class OutputChecker:
-    """
-    A class used to check the whether the actual output from a doctest
-    example matches the expected output.  `OutputChecker` defines two
-    methods: `check_output`, which compares a given pair of outputs,
-    and returns true if they match; and `output_difference`, which
-    returns a string describing the differences between two outputs.
-    """
-    def check_output(self, want, got, optionflags):
-        """
-        Return True iff the actual output from an example (`got`)
-        matches the expected output (`want`).  These strings are
-        always considered to match if they are identical; but
-        depending on what option flags the test runner is using,
-        several non-exact match types are also possible.  See the
-        documentation for `TestRunner` for more information about
-        option flags.
-        """
-        # Handle the common case first, for efficiency:
-        # if they're string-identical, always return true.
-        if got == want:
-            return True
-
-        # The values True and False replaced 1 and 0 as the return
-        # value for boolean comparisons in Python 2.3.
-        if not (optionflags & DONT_ACCEPT_TRUE_FOR_1):
-            if (got,want) == ("True\n", "1\n"):
-                return True
-            if (got,want) == ("False\n", "0\n"):
-                return True
-
-        # <BLANKLINE> can be used as a special sequence to signify a
-        # blank line, unless the DONT_ACCEPT_BLANKLINE flag is used.
-        if not (optionflags & DONT_ACCEPT_BLANKLINE):
-            # Replace <BLANKLINE> in want with a blank line.
-            want = re.sub('(?m)^%s\s*?$' % re.escape(BLANKLINE_MARKER),
-                          '', want)
-            # If a line in got contains only spaces, then remove the
-            # spaces.
-            got = re.sub('(?m)^\s*?$', '', got)
-            if got == want:
-                return True
-
-        # This flag causes doctest to ignore any differences in the
-        # contents of whitespace strings.  Note that this can be used
-        # in conjunction with the ELLIPSIS flag.
-        if optionflags & NORMALIZE_WHITESPACE:
-            got = ' '.join(got.split())
-            want = ' '.join(want.split())
-            if got == want:
-                return True
-
-        # The ELLIPSIS flag says to let the sequence "..." in `want`
-        # match any substring in `got`.
-        if optionflags & ELLIPSIS:
-            if _ellipsis_match(want, got):
-                return True
-
-        # We didn't find any match; return false.
-        return False
-
-    # Should we do a fancy diff?
-    def _do_a_fancy_diff(self, want, got, optionflags):
-        # Not unless they asked for a fancy diff.
-        if not optionflags & (REPORT_UDIFF |
-                              REPORT_CDIFF |
-                              REPORT_NDIFF):
-            return False
-
-        # If expected output uses ellipsis, a meaningful fancy diff is
-        # too hard ... or maybe not.  In two real-life failures Tim saw,
-        # a diff was a major help anyway, so this is commented out.
-        # [todo] _ellipsis_match() knows which pieces do and don't match,
-        # and could be the basis for a kick-ass diff in this case.
-        ##if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:
-        ##    return False
-
-        # ndiff does intraline difference marking, so can be useful even
-        # for 1-line differences.
-        if optionflags & REPORT_NDIFF:
-            return True
-
-        # The other diff types need at least a few lines to be helpful.
-        return want.count('\n') > 2 and got.count('\n') > 2
-
-    def output_difference(self, example, got, optionflags):
-        """
-        Return a string describing the differences between the
-        expected output for a given example (`example`) and the actual
-        output (`got`).  `optionflags` is the set of option flags used
-        to compare `want` and `got`.
-        """
-        want = example.want
-        # If <BLANKLINE>s are being used, then replace blank lines
-        # with <BLANKLINE> in the actual output string.
-        if not (optionflags & DONT_ACCEPT_BLANKLINE):
-            got = re.sub('(?m)^[ ]*(?=\n)', BLANKLINE_MARKER, got)
-
-        # Check if we should use diff.
-        if self._do_a_fancy_diff(want, got, optionflags):
-            # Split want & got into lines.
-            want_lines = want.splitlines(True)  # True == keep line ends
-            got_lines = got.splitlines(True)
-            # Use difflib to find their differences.
-            if optionflags & REPORT_UDIFF:
-                diff = difflib.unified_diff(want_lines, got_lines, n=2)
-                diff = list(diff)[2:] # strip the diff header
-                kind = 'unified diff with -expected +actual'
-            elif optionflags & REPORT_CDIFF:
-                diff = difflib.context_diff(want_lines, got_lines, n=2)
-                diff = list(diff)[2:] # strip the diff header
-                kind = 'context diff with expected followed by actual'
-            elif optionflags & REPORT_NDIFF:
-                engine = difflib.Differ(charjunk=difflib.IS_CHARACTER_JUNK)
-                diff = list(engine.compare(want_lines, got_lines))
-                kind = 'ndiff with -expected +actual'
-            else:
-                assert 0, 'Bad diff option'
-            # Remove trailing whitespace on diff output.
-            diff = [line.rstrip() + '\n' for line in diff]
-            return 'Differences (%s):\n' % kind + _indent(''.join(diff))
-
-        # If we're not using diff, then simply list the expected
-        # output followed by the actual output.
-        if want and got:
-            return 'Expected:\n%sGot:\n%s' % (_indent(want), _indent(got))
-        elif want:
-            return 'Expected:\n%sGot nothing\n' % _indent(want)
-        elif got:
-            return 'Expected nothing\nGot:\n%s' % _indent(got)
-        else:
-            return 'Expected nothing\nGot nothing\n'
-
-class DocTestFailure(Exception):
-    """A DocTest example has failed in debugging mode.
-
-    The exception instance has variables:
-
-    - test: the DocTest object being run
-
-    - excample: the Example object that failed
-
-    - got: the actual output
-    """
-    def __init__(self, test, example, got):
-        self.test = test
-        self.example = example
-        self.got = got
-
-    def __str__(self):
-        return str(self.test)
-
-class UnexpectedException(Exception):
-    """A DocTest example has encountered an unexpected exception
-
-    The exception instance has variables:
-
-    - test: the DocTest object being run
-
-    - excample: the Example object that failed
-
-    - exc_info: the exception info
-    """
-    def __init__(self, test, example, exc_info):
-        self.test = test
-        self.example = example
-        self.exc_info = exc_info
-
-    def __str__(self):
-        return str(self.test)
-
-class DebugRunner(DocTestRunner):
-    r"""Run doc tests but raise an exception as soon as there is a failure.
-
-       If an unexpected exception occurs, an UnexpectedException is raised.
-       It contains the test, the example, and the original exception:
-
-         >>> runner = DebugRunner(verbose=False)
-         >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
-         ...                                    {}, 'foo', 'foo.py', 0)
-         >>> try:
-         ...     runner.run(test)
-         ... except UnexpectedException, failure:
-         ...     pass
-
-         >>> failure.test is test
-         True
-
-         >>> failure.example.want
-         '42\n'
-
-         >>> exc_info = failure.exc_info
-         >>> raise exc_info[0], exc_info[1], exc_info[2]
-         Traceback (most recent call last):
-         ...
-         KeyError
-
-       We wrap the original exception to give the calling application
-       access to the test and example information.
-
-       If the output doesn't match, then a DocTestFailure is raised:
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 1
-         ...      >>> x
-         ...      2
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> try:
-         ...    runner.run(test)
-         ... except DocTestFailure, failure:
-         ...    pass
-
-       DocTestFailure objects provide access to the test:
-
-         >>> failure.test is test
-         True
-
-       As well as to the example:
-
-         >>> failure.example.want
-         '2\n'
-
-       and the actual output:
-
-         >>> failure.got
-         '1\n'
-
-       If a failure or error occurs, the globals are left intact:
-
-         >>> del test.globs['__builtins__']
-         >>> test.globs
-         {'x': 1}
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 2
-         ...      >>> raise KeyError
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> runner.run(test)
-         Traceback (most recent call last):
-         ...
-         UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>
-
-         >>> del test.globs['__builtins__']
-         >>> test.globs
-         {'x': 2}
-
-       But the globals are cleared if there is no error:
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 2
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> runner.run(test)
-         (0, 1)
-
-         >>> test.globs
-         {}
-
-       """
-
-    def run(self, test, compileflags=None, out=None, clear_globs=True):
-        r = DocTestRunner.run(self, test, compileflags, out, False)
-        if clear_globs:
-            test.globs.clear()
-        return r
-
-    def report_unexpected_exception(self, out, test, example, exc_info):
-        raise UnexpectedException(test, example, exc_info)
-
-    def report_failure(self, out, test, example, got):
-        raise DocTestFailure(test, example, got)
-
-######################################################################
-## 6. Test Functions
-######################################################################
-# These should be backwards compatible.
-
-# For backward compatibility, a global instance of a DocTestRunner
-# class, updated by testmod.
-master = None
-
-def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
-            report=True, optionflags=0, extraglobs=None,
-            raise_on_error=False, exclude_empty=False):
-    """m=None, name=None, globs=None, verbose=None, isprivate=None,
-       report=True, optionflags=0, extraglobs=None, raise_on_error=False,
-       exclude_empty=False
-
-    Test examples in docstrings in functions and classes reachable
-    from module m (or the current module if m is not supplied), starting
-    with m.__doc__.  Unless isprivate is specified, private names
-    are not skipped.
-
-    Also test examples reachable from dict m.__test__ if it exists and is
-    not None.  m.__test__ maps names to functions, classes and strings;
-    function and class docstrings are tested even if the name is private;
-    strings are tested directly, as if they were docstrings.
-
-    Return (#failures, #tests).
-
-    See doctest.__doc__ for an overview.
-
-    Optional keyword arg "name" gives the name of the module; by default
-    use m.__name__.
-
-    Optional keyword arg "globs" gives a dict to be used as the globals
-    when executing examples; by default, use m.__dict__.  A copy of this
-    dict is actually used for each docstring, so that each docstring's
-    examples start with a clean slate.
-
-    Optional keyword arg "extraglobs" gives a dictionary that should be
-    merged into the globals that are used to execute examples.  By
-    default, no extra globals are used.  This is new in 2.4.
-
-    Optional keyword arg "verbose" prints lots of stuff if true, prints
-    only failures if false; by default, it's true iff "-v" is in sys.argv.
-
-    Optional keyword arg "report" prints a summary at the end when true,
-    else prints nothing at the end.  In verbose mode, the summary is
-    detailed, else very brief (in fact, empty if all tests passed).
-
-    Optional keyword arg "optionflags" or's together module constants,
-    and defaults to 0.  This is new in 2.3.  Possible values (see the
-    docs for details):
-
-        DONT_ACCEPT_TRUE_FOR_1
-        DONT_ACCEPT_BLANKLINE
-        NORMALIZE_WHITESPACE
-        ELLIPSIS
-        IGNORE_EXCEPTION_DETAIL
-        REPORT_UDIFF
-        REPORT_CDIFF
-        REPORT_NDIFF
-        REPORT_ONLY_FIRST_FAILURE
-
-    Optional keyword arg "raise_on_error" raises an exception on the
-    first unexpected exception or failure. This allows failures to be
-    post-mortem debugged.
-
-    Deprecated in Python 2.4:
-    Optional keyword arg "isprivate" specifies a function used to
-    determine whether a name is private.  The default function is
-    treat all functions as public.  Optionally, "isprivate" can be
-    set to doctest.is_private to skip over functions marked as private
-    using the underscore naming convention; see its docs for details.
-
-    Advanced tomfoolery:  testmod runs methods of a local instance of
-    class doctest.Tester, then merges the results into (or creates)
-    global Tester instance doctest.master.  Methods of doctest.master
-    can be called directly too, if you want to do something unusual.
-    Passing report=0 to testmod is especially useful then, to delay
-    displaying a summary.  Invoke doctest.master.summarize(verbose)
-    when you're done fiddling.
-    """
-    global master
-
-    if isprivate is not None:
-        warnings.warn("the isprivate argument is deprecated; "
-                      "examine DocTestFinder.find() lists instead",
-                      DeprecationWarning)
-
-    # If no module was given, then use __main__.
-    if m is None:
-        # DWA - m will still be None if this wasn't invoked from the command
-        # line, in which case the following TypeError is about as good an error
-        # as we should expect
-        m = sys.modules.get('__main__')
-
-    # Check that we were actually given a module.
-    if not inspect.ismodule(m):
-        raise TypeError("testmod: module required; %r" % (m,))
-
-    # If no name was given, then use the module's name.
-    if name is None:
-        name = m.__name__
-
-    # Find, parse, and run all tests in the given module.
-    finder = DocTestFinder(_namefilter=isprivate, exclude_empty=exclude_empty)
-
-    if raise_on_error:
-        runner = DebugRunner(verbose=verbose, optionflags=optionflags)
-    else:
-        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
-    for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):
-        runner.run(test)
-
-    if report:
-        runner.summarize()
-
-    if master is None:
-        master = runner
-    else:
-        master.merge(runner)
-
-    return runner.failures, runner.tries
-
-def testfile(filename, module_relative=True, name=None, package=None,
-             globs=None, verbose=None, report=True, optionflags=0,
-             extraglobs=None, raise_on_error=False, parser=DocTestParser()):
-    """
-    Test examples in the given file.  Return (#failures, #tests).
-
-    Optional keyword arg "module_relative" specifies how filenames
-    should be interpreted:
-
-      - If "module_relative" is True (the default), then "filename"
-         specifies a module-relative path.  By default, this path is
-         relative to the calling module's directory; but if the
-         "package" argument is specified, then it is relative to that
-         package.  To ensure os-independence, "filename" should use
-         "/" characters to separate path segments, and should not
-         be an absolute path (i.e., it may not begin with "/").
-
-      - If "module_relative" is False, then "filename" specifies an
-        os-specific path.  The path may be absolute or relative (to
-        the current working directory).
-
-    Optional keyword arg "name" gives the name of the test; by default
-    use the file's basename.
-
-    Optional keyword argument "package" is a Python package or the
-    name of a Python package whose directory should be used as the
-    base directory for a module relative filename.  If no package is
-    specified, then the calling module's directory is used as the base
-    directory for module relative filenames.  It is an error to
-    specify "package" if "module_relative" is False.
-
-    Optional keyword arg "globs" gives a dict to be used as the globals
-    when executing examples; by default, use {}.  A copy of this dict
-    is actually used for each docstring, so that each docstring's
-    examples start with a clean slate.
-
-    Optional keyword arg "extraglobs" gives a dictionary that should be
-    merged into the globals that are used to execute examples.  By
-    default, no extra globals are used.
-
-    Optional keyword arg "verbose" prints lots of stuff if true, prints
-    only failures if false; by default, it's true iff "-v" is in sys.argv.
-
-    Optional keyword arg "report" prints a summary at the end when true,
-    else prints nothing at the end.  In verbose mode, the summary is
-    detailed, else very brief (in fact, empty if all tests passed).
-
-    Optional keyword arg "optionflags" or's together module constants,
-    and defaults to 0.  Possible values (see the docs for details):
-
-        DONT_ACCEPT_TRUE_FOR_1
-        DONT_ACCEPT_BLANKLINE
-        NORMALIZE_WHITESPACE
-        ELLIPSIS
-        IGNORE_EXCEPTION_DETAIL
-        REPORT_UDIFF
-        REPORT_CDIFF
-        REPORT_NDIFF
-        REPORT_ONLY_FIRST_FAILURE
-
-    Optional keyword arg "raise_on_error" raises an exception on the
-    first unexpected exception or failure. This allows failures to be
-    post-mortem debugged.
-
-    Optional keyword arg "parser" specifies a DocTestParser (or
-    subclass) that should be used to extract tests from the files.
-
-    Advanced tomfoolery:  testmod runs methods of a local instance of
-    class doctest.Tester, then merges the results into (or creates)
-    global Tester instance doctest.master.  Methods of doctest.master
-    can be called directly too, if you want to do something unusual.
-    Passing report=0 to testmod is especially useful then, to delay
-    displaying a summary.  Invoke doctest.master.summarize(verbose)
-    when you're done fiddling.
-    """
-    global master
-
-    if package and not module_relative:
-        raise ValueError("Package may only be specified for module-"
-                         "relative paths.")
-
-    # Relativize the path
-    if module_relative:
-        package = _normalize_module(package)
-        filename = _module_relative_path(package, filename)
-
-    # If no name was given, then use the file's name.
-    if name is None:
-        name = os.path.basename(filename)
-
-    # Assemble the globals.
-    if globs is None:
-        globs = {}
-    else:
-        globs = globs.copy()
-    if extraglobs is not None:
-        globs.update(extraglobs)
-
-    if raise_on_error:
-        runner = DebugRunner(verbose=verbose, optionflags=optionflags)
-    else:
-        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
-    # Read the file, convert it to a test, and run it.
-    s = open(filename).read()
-    test = parser.get_doctest(s, globs, name, filename, 0)
-    runner.run(test)
-
-    if report:
-        runner.summarize()
-
-    if master is None:
-        master = runner
-    else:
-        master.merge(runner)
-
-    return runner.failures, runner.tries
-
-def run_docstring_examples(f, globs, verbose=False, name="NoName",
-                           compileflags=None, optionflags=0):
-    """
-    Test examples in the given object's docstring (`f`), using `globs`
-    as globals.  Optional argument `name` is used in failure messages.
-    If the optional argument `verbose` is true, then generate output
-    even if there are no failures.
-
-    `compileflags` gives the set of flags that should be used by the
-    Python compiler when running the examples.  If not specified, then
-    it will default to the set of future-import flags that apply to
-    `globs`.
-
-    Optional keyword arg `optionflags` specifies options for the
-    testing and output.  See the documentation for `testmod` for more
-    information.
-    """
-    # Find, parse, and run all tests in the given module.
-    finder = DocTestFinder(verbose=verbose, recurse=False)
-    runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-    for test in finder.find(f, name, globs=globs):
-        runner.run(test, compileflags=compileflags)
-
-######################################################################
-## 7. Tester
-######################################################################
-# This is provided only for backwards compatibility.  It's not
-# actually used in any way.
-
-class Tester:
-    def __init__(self, mod=None, globs=None, verbose=None,
-                 isprivate=None, optionflags=0):
-
-        warnings.warn("class Tester is deprecated; "
-                      "use class doctest.DocTestRunner instead",
-                      DeprecationWarning, stacklevel=2)
-        if mod is None and globs is None:
-            raise TypeError("Tester.__init__: must specify mod or globs")
-        if mod is not None and not inspect.ismodule(mod):
-            raise TypeError("Tester.__init__: mod must be a module; %r" %
-                            (mod,))
-        if globs is None:
-            globs = mod.__dict__
-        self.globs = globs
-
-        self.verbose = verbose
-        self.isprivate = isprivate
-        self.optionflags = optionflags
-        self.testfinder = DocTestFinder(_namefilter=isprivate)
-        self.testrunner = DocTestRunner(verbose=verbose,
-                                        optionflags=optionflags)
-
-    def runstring(self, s, name):
-        test = DocTestParser().get_doctest(s, self.globs, name, None, None)
-        if self.verbose:
-            print "Running string", name
-        (f,t) = self.testrunner.run(test)
-        if self.verbose:
-            print f, "of", t, "examples failed in string", name
-        return (f,t)
-
-    def rundoc(self, object, name=None, module=None):
-        f = t = 0
-        tests = self.testfinder.find(object, name, module=module,
-                                     globs=self.globs)
-        for test in tests:
-            (f2, t2) = self.testrunner.run(test)
-            (f,t) = (f+f2, t+t2)
-        return (f,t)
-
-    def rundict(self, d, name, module=None):
-        import new
-        m = new.module(name)
-        m.__dict__.update(d)
-        if module is None:
-            module = False
-        return self.rundoc(m, name, module)
-
-    def run__test__(self, d, name):
-        import new
-        m = new.module(name)
-        m.__test__ = d
-        return self.rundoc(m, name)
-
-    def summarize(self, verbose=None):
-        return self.testrunner.summarize(verbose)
-
-    def merge(self, other):
-        self.testrunner.merge(other.testrunner)
-
-######################################################################
-## 8. Unittest Support
-######################################################################
-
-_unittest_reportflags = 0
-
-def set_unittest_reportflags(flags):
-    """Sets the unittest option flags.
-
-    The old flag is returned so that a runner could restore the old
-    value if it wished to:
-
-      >>> old = _unittest_reportflags
-      >>> set_unittest_reportflags(REPORT_NDIFF |
-      ...                          REPORT_ONLY_FIRST_FAILURE) == old
-      True
-
-      >>> import doctest
-      >>> doctest._unittest_reportflags == (REPORT_NDIFF |
-      ...                                   REPORT_ONLY_FIRST_FAILURE)
-      True
-
-    Only reporting flags can be set:
-
-      >>> set_unittest_reportflags(ELLIPSIS)
-      Traceback (most recent call last):
-      ...
-      ValueError: ('Only reporting flags allowed', 8)
-
-      >>> set_unittest_reportflags(old) == (REPORT_NDIFF |
-      ...                                   REPORT_ONLY_FIRST_FAILURE)
-      True
-    """
-    global _unittest_reportflags
-
-    if (flags & REPORTING_FLAGS) != flags:
-        raise ValueError("Only reporting flags allowed", flags)
-    old = _unittest_reportflags
-    _unittest_reportflags = flags
-    return old
-
-
-class DocTestCase(unittest.TestCase):
-
-    def __init__(self, test, optionflags=0, setUp=None, tearDown=None,
-                 checker=None, runner=DocTestRunner):
-
-        unittest.TestCase.__init__(self)
-        self._dt_optionflags = optionflags
-        self._dt_checker = checker
-        self._dt_test = test
-        self._dt_setUp = setUp
-        self._dt_tearDown = tearDown
-        self._dt_runner = runner
-
-    def setUp(self):
-        test = self._dt_test
-
-        if self._dt_setUp is not None:
-            self._dt_setUp(test)
-
-    def tearDown(self):
-        test = self._dt_test
-
-        if self._dt_tearDown is not None:
-            self._dt_tearDown(test)
-
-        test.globs.clear()
-
-    def runTest(self):
-        test = self._dt_test
-        old = sys.stdout
-        new = StringIO()
-        optionflags = self._dt_optionflags
-
-        if not (optionflags & REPORTING_FLAGS):
-            # The option flags don't include any reporting flags,
-            # so add the default reporting flags
-            optionflags |= _unittest_reportflags
-
-        runner = self._dt_runner(optionflags=optionflags,
-                                 checker=self._dt_checker, verbose=False)
-
-        try:
-            runner.DIVIDER = "-"*70
-            failures, tries = runner.run(
-                test, out=new.write, clear_globs=False)
-        finally:
-            sys.stdout = old
-
-        if failures:
-            raise self.failureException(self.format_failure(new.getvalue()))
-
-    def format_failure(self, err):
-        test = self._dt_test
-        if test.lineno is None:
-            lineno = 'unknown line number'
-        else:
-            lineno = '%s' % test.lineno
-        lname = '.'.join(test.name.split('.')[-1:])
-        return ('Failed doctest test for %s\n'
-                '  File "%s", line %s, in %s\n\n%s'
-                % (test.name, test.filename, lineno, lname, err)
-                )
-
-    def debug(self):
-        r"""Run the test case without results and without catching exceptions
-
-           The unit test framework includes a debug method on test cases
-           and test suites to support post-mortem debugging.  The test code
-           is run in such a way that errors are not caught.  This way a
-           caller can catch the errors and initiate post-mortem debugging.
-
-           The DocTestCase provides a debug method that raises
-           UnexpectedException errors if there is an unexepcted
-           exception:
-
-             >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
-             ...                {}, 'foo', 'foo.py', 0)
-             >>> case = DocTestCase(test)
-             >>> try:
-             ...     case.debug()
-             ... except UnexpectedException, failure:
-             ...     pass
-
-           The UnexpectedException contains the test, the example, and
-           the original exception:
-
-             >>> failure.test is test
-             True
-
-             >>> failure.example.want
-             '42\n'
-
-             >>> exc_info = failure.exc_info
-             >>> raise exc_info[0], exc_info[1], exc_info[2]
-             Traceback (most recent call last):
-             ...
-             KeyError
-
-           If the output doesn't match, then a DocTestFailure is raised:
-
-             >>> test = DocTestParser().get_doctest('''
-             ...      >>> x = 1
-             ...      >>> x
-             ...      2
-             ...      ''', {}, 'foo', 'foo.py', 0)
-             >>> case = DocTestCase(test)
-
-             >>> try:
-             ...    case.debug()
-             ... except DocTestFailure, failure:
-             ...    pass
-
-           DocTestFailure objects provide access to the test:
-
-             >>> failure.test is test
-             True
-
-           As well as to the example:
-
-             >>> failure.example.want
-             '2\n'
-
-           and the actual output:
-
-             >>> failure.got
-             '1\n'
-
-           """
-
-        self.setUp()
-        runner = DebugRunner(optionflags=self._dt_optionflags,
-                             checker=self._dt_checker, verbose=False)
-        runner.run(self._dt_test)
-        self.tearDown()
-
-    def id(self):
-        return self._dt_test.name
-
-    def __repr__(self):
-        name = self._dt_test.name.split('.')
-        return "%s (%s)" % (name[-1], '.'.join(name[:-1]))
-
-    __str__ = __repr__
-
-    def shortDescription(self):
-        return "Doctest: " + self._dt_test.name
-
-def DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,
-                 test_class=DocTestCase, **options):
-    """
-    Convert doctest tests for a module to a unittest test suite.
-
-    This converts each documentation string in a module that
-    contains doctest tests to a unittest test case.  If any of the
-    tests in a doc string fail, then the test case fails.  An exception
-    is raised showing the name of the file containing the test and a
-    (sometimes approximate) line number.
-
-    The `module` argument provides the module to be tested.  The argument
-    can be either a module or a module name.
-
-    If no argument is given, the calling module is used.
-
-    A number of options may be provided as keyword arguments:
-
-    setUp
-      A set-up function.  This is called before running the
-      tests in each file. The setUp function will be passed a DocTest
-      object.  The setUp function can access the test globals as the
-      globs attribute of the test passed.
-
-    tearDown
-      A tear-down function.  This is called after running the
-      tests in each file.  The tearDown function will be passed a DocTest
-      object.  The tearDown function can access the test globals as the
-      globs attribute of the test passed.
-
-    globs
-      A dictionary containing initial global variables for the tests.
-
-    optionflags
-       A set of doctest option flags expressed as an integer.
-    """
-
-    if test_finder is None:
-        test_finder = DocTestFinder()
-
-    module = _normalize_module(module)
-    tests = test_finder.find(module, globs=globs, extraglobs=extraglobs)
-    if globs is None:
-        globs = module.__dict__
-    if not tests:
-        # Why do we want to do this? Because it reveals a bug that might
-        # otherwise be hidden.
-        raise ValueError(module, "has no tests")
-
-    tests.sort()
-    suite = unittest.TestSuite()
-    for test in tests:
-        if len(test.examples) == 0:
-            continue
-        if not test.filename:
-            filename = module.__file__
-            if filename[-4:] in (".pyc", ".pyo"):
-                filename = filename[:-1]
-            test.filename = filename
-        suite.addTest(test_class(test, **options))
-
-    return suite
-
-class DocFileCase(DocTestCase):
-
-    def id(self):
-        return '_'.join(self._dt_test.name.split('.'))
-
-    def __repr__(self):
-        return self._dt_test.filename
-    __str__ = __repr__
-
-    def format_failure(self, err):
-        return ('Failed doctest test for %s\n  File "%s", line 0\n\n%s'
-                % (self._dt_test.name, self._dt_test.filename, err)
-                )
-
-def DocFileTest(path, module_relative=True, package=None,
-                globs=None, parser=DocTestParser(), **options):
-    if globs is None:
-        globs = {}
-
-    if package and not module_relative:
-        raise ValueError("Package may only be specified for module-"
-                         "relative paths.")
-
-    # Relativize the path.
-    if module_relative:
-        package = _normalize_module(package)
-        path = _module_relative_path(package, path)
-
-    # Find the file and read it.
-    name = os.path.basename(path)
-    doc = open(path).read()
-
-    # Convert it to a test, and wrap it in a DocFileCase.
-    test = parser.get_doctest(doc, globs, name, path, 0)
-    return DocFileCase(test, **options)
-
-def DocFileSuite(*paths, **kw):
-    """A unittest suite for one or more doctest files.
-
-    The path to each doctest file is given as a string; the
-    interpretation of that string depends on the keyword argument
-    "module_relative".
-
-    A number of options may be provided as keyword arguments:
-
-    module_relative
-      If "module_relative" is True, then the given file paths are
-      interpreted as os-independent module-relative paths.  By
-      default, these paths are relative to the calling module's
-      directory; but if the "package" argument is specified, then
-      they are relative to that package.  To ensure os-independence,
-      "filename" should use "/" characters to separate path
-      segments, and may not be an absolute path (i.e., it may not
-      begin with "/").
-
-      If "module_relative" is False, then the given file paths are
-      interpreted as os-specific paths.  These paths may be absolute
-      or relative (to the current working directory).
-
-    package
-      A Python package or the name of a Python package whose directory
-      should be used as the base directory for module relative paths.
-      If "package" is not specified, then the calling module's
-      directory is used as the base directory for module relative
-      filenames.  It is an error to specify "package" if
-      "module_relative" is False.
-
-    setUp
-      A set-up function.  This is called before running the
-      tests in each file. The setUp function will be passed a DocTest
-      object.  The setUp function can access the test globals as the
-      globs attribute of the test passed.
-
-    tearDown
-      A tear-down function.  This is called after running the
-      tests in each file.  The tearDown function will be passed a DocTest
-      object.  The tearDown function can access the test globals as the
-      globs attribute of the test passed.
-
-    globs
-      A dictionary containing initial global variables for the tests.
-
-    optionflags
-      A set of doctest option flags expressed as an integer.
-
-    parser
-      A DocTestParser (or subclass) that should be used to extract
-      tests from the files.
-    """
-    suite = unittest.TestSuite()
-
-    # We do this here so that _normalize_module is called at the right
-    # level.  If it were called in DocFileTest, then this function
-    # would be the caller and we might guess the package incorrectly.
-    if kw.get('module_relative', True):
-        kw['package'] = _normalize_module(kw.get('package'))
-
-    for path in paths:
-        suite.addTest(DocFileTest(path, **kw))
-
-    return suite
-
-######################################################################
-## 9. Debugging Support
-######################################################################
-
-def script_from_examples(s):
-    r"""Extract script from text with examples.
-
-       Converts text with examples to a Python script.  Example input is
-       converted to regular code.  Example output and all other words
-       are converted to comments:
-
-       >>> text = '''
-       ...       Here are examples of simple math.
-       ...
-       ...           Python has super accurate integer addition
-       ...
-       ...           >>> 2 + 2
-       ...           5
-       ...
-       ...           And very friendly error messages:
-       ...
-       ...           >>> 1/0
-       ...           To Infinity
-       ...           And
-       ...           Beyond
-       ...
-       ...           You can use logic if you want:
-       ...
-       ...           >>> if 0:
-       ...           ...    blah
-       ...           ...    blah
-       ...           ...
-       ...
-       ...           Ho hum
-       ...           '''
-
-       >>> print script_from_examples(text)
-       # Here are examples of simple math.
-       #
-       #     Python has super accurate integer addition
-       #
-       2 + 2
-       # Expected:
-       ## 5
-       #
-       #     And very friendly error messages:
-       #
-       1/0
-       # Expected:
-       ## To Infinity
-       ## And
-       ## Beyond
-       #
-       #     You can use logic if you want:
-       #
-       if 0:
-          blah
-          blah
-       #
-       #     Ho hum
-       """
-    output = []
-    for piece in DocTestParser().parse(s):
-        if isinstance(piece, Example):
-            # Add the example's source code (strip trailing NL)
-            output.append(piece.source[:-1])
-            # Add the expected output:
-            want = piece.want
-            if want:
-                output.append('# Expected:')
-                output += ['## '+l for l in want.split('\n')[:-1]]
-        else:
-            # Add non-example text.
-            output += [_comment_line(l)
-                       for l in piece.split('\n')[:-1]]
-
-    # Trim junk on both ends.
-    while output and output[-1] == '#':
-        output.pop()
-    while output and output[0] == '#':
-        output.pop(0)
-    # Combine the output, and return it.
-    return '\n'.join(output)
-
-def testsource(module, name):
-    """Extract the test sources from a doctest docstring as a script.
-
-    Provide the module (or dotted name of the module) containing the
-    test to be debugged and the name (within the module) of the object
-    with the doc string with tests to be debugged.
-    """
-    module = _normalize_module(module)
-    tests = DocTestFinder().find(module)
-    test = [t for t in tests if t.name == name]
-    if not test:
-        raise ValueError(name, "not found in tests")
-    test = test[0]
-    testsrc = script_from_examples(test.docstring)
-    return testsrc
-
-def debug_src(src, pm=False, globs=None):
-    """Debug a single doctest docstring, in argument `src`'"""
-    testsrc = script_from_examples(src)
-    debug_script(testsrc, pm, globs)
-
-def debug_script(src, pm=False, globs=None):
-    "Debug a test script.  `src` is the script, as a string."
-    import pdb
-
-    # Note that tempfile.NameTemporaryFile() cannot be used.  As the
-    # docs say, a file so created cannot be opened by name a second time
-    # on modern Windows boxes, and execfile() needs to open it.
-    srcfilename = tempfile.mktemp(".py", "doctestdebug")
-    f = open(srcfilename, 'w')
-    f.write(src)
-    f.close()
-
-    try:
-        if globs:
-            globs = globs.copy()
-        else:
-            globs = {}
-
-        if pm:
-            try:
-                execfile(srcfilename, globs, globs)
-            except:
-                print sys.exc_info()[1]
-                pdb.post_mortem(sys.exc_info()[2])
-        else:
-            # Note that %r is vital here.  '%s' instead can, e.g., cause
-            # backslashes to get treated as metacharacters on Windows.
-            pdb.run("execfile(%r)" % srcfilename, globs, globs)
-
-    finally:
-        os.remove(srcfilename)
-
-def debug(module, name, pm=False):
-    """Debug a single doctest docstring.
-
-    Provide the module (or dotted name of the module) containing the
-    test to be debugged and the name (within the module) of the object
-    with the docstring with tests to be debugged.
-    """
-    module = _normalize_module(module)
-    testsrc = testsource(module, name)
-    debug_script(testsrc, pm, module.__dict__)
-
-######################################################################
-## 10. Example Usage
-######################################################################
-class _TestClass:
-    """
-    A pointless class, for sanity-checking of docstring testing.
-
-    Methods:
-        square()
-        get()
-
-    >>> _TestClass(13).get() + _TestClass(-12).get()
-    1
-    >>> hex(_TestClass(13).square().get())
-    '0xa9'
-    """
-
-    def __init__(self, val):
-        """val -> _TestClass object with associated value val.
-
-        >>> t = _TestClass(123)
-        >>> print t.get()
-        123
-        """
-
-        self.val = val
-
-    def square(self):
-        """square() -> square TestClass's associated value
-
-        >>> _TestClass(13).square().get()
-        169
-        """
-
-        self.val = self.val ** 2
-        return self
-
-    def get(self):
-        """get() -> return TestClass's associated value.
-
-        >>> x = _TestClass(-42)
-        >>> print x.get()
-        -42
-        """
-
-        return self.val
-
-__test__ = {"_TestClass": _TestClass,
-            "string": r"""
-                      Example of a string object, searched as-is.
-                      >>> x = 1; y = 2
-                      >>> x + y, x * y
-                      (3, 2)
-                      """,
-
-            "bool-int equivalence": r"""
-                                    In 2.2, boolean expressions displayed
-                                    0 or 1.  By default, we still accept
-                                    them.  This can be disabled by passing
-                                    DONT_ACCEPT_TRUE_FOR_1 to the new
-                                    optionflags argument.
-                                    >>> 4 == 4
-                                    1
-                                    >>> 4 == 4
-                                    True
-                                    >>> 4 > 4
-                                    0
-                                    >>> 4 > 4
-                                    False
-                                    """,
-
-            "blank lines": r"""
-                Blank lines can be marked with <BLANKLINE>:
-                    >>> print 'foo\n\nbar\n'
-                    foo
-                    <BLANKLINE>
-                    bar
-                    <BLANKLINE>
-            """,
-
-            "ellipsis": r"""
-                If the ellipsis flag is used, then '...' can be used to
-                elide substrings in the desired output:
-                    >>> print range(1000) #doctest: +ELLIPSIS
-                    [0, 1, 2, ..., 999]
-            """,
-
-            "whitespace normalization": r"""
-                If the whitespace normalization flag is used, then
-                differences in whitespace are ignored.
-                    >>> print range(30) #doctest: +NORMALIZE_WHITESPACE
-                    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
-                     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-                     27, 28, 29]
-            """,
-           }
-
-def _test():
-    r = unittest.TextTestRunner()
-    r.run(DocTestSuite())
-
-if __name__ == "__main__":
-    _test()
diff --git a/webapp/django/test/client.py b/webapp/django/test/client.py
deleted file mode 100644
index 4d57f2d..0000000
--- a/webapp/django/test/client.py
+++ /dev/null
@@ -1,335 +0,0 @@
-import urllib
-import sys
-import os
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-from django.conf import settings
-from django.contrib.auth import authenticate, login
-from django.core.handlers.base import BaseHandler
-from django.core.handlers.wsgi import WSGIRequest
-from django.core.signals import got_request_exception
-from django.http import SimpleCookie, HttpRequest
-from django.template import TemplateDoesNotExist
-from django.test import signals
-from django.utils.functional import curry
-from django.utils.encoding import smart_str
-from django.utils.http import urlencode
-from django.utils.itercompat import is_iterable
-
-BOUNDARY = 'BoUnDaRyStRiNg'
-MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY
-
-
-class FakePayload(object):
-    """
-    A wrapper around StringIO that restricts what can be read since data from
-    the network can't be seeked and cannot be read outside of its content
-    length. This makes sure that views can't do anything under the test client
-    that wouldn't work in Real Life.
-    """
-    def __init__(self, content):
-        self.__content = StringIO(content)
-        self.__len = len(content)
-
-    def read(self, num_bytes=None):
-        if num_bytes is None:
-            num_bytes = self.__len or 1
-        assert self.__len >= num_bytes, "Cannot read more than the available bytes from the HTTP incoming data."
-        content = self.__content.read(num_bytes)
-        self.__len -= num_bytes
-        return content
-
-
-class ClientHandler(BaseHandler):
-    """
-    A HTTP Handler that can be used for testing purposes.
-    Uses the WSGI interface to compose requests, but returns
-    the raw HttpResponse object
-    """
-    def __call__(self, environ):
-        from django.conf import settings
-        from django.core import signals
-
-        # Set up middleware if needed. We couldn't do this earlier, because
-        # settings weren't available.
-        if self._request_middleware is None:
-            self.load_middleware()
-
-        signals.request_started.send(sender=self.__class__)
-        try:
-            request = WSGIRequest(environ)
-            response = self.get_response(request)
-
-            # Apply response middleware.
-            for middleware_method in self._response_middleware:
-                response = middleware_method(request, response)
-            response = self.apply_response_fixes(request, response)
-        finally:
-            signals.request_finished.send(sender=self.__class__)
-
-        return response
-
-def store_rendered_templates(store, signal, sender, template, context, **kwargs):
-    """
-    Stores templates and contexts that are rendered.
-    """
-    store.setdefault('template',[]).append(template)
-    store.setdefault('context',[]).append(context)
-
-def encode_multipart(boundary, data):
-    """
-    Encodes multipart POST data from a dictionary of form values.
-
-    The key will be used as the form data name; the value will be transmitted
-    as content. If the value is a file, the contents of the file will be sent
-    as an application/octet-stream; otherwise, str(value) will be sent.
-    """
-    lines = []
-    to_str = lambda s: smart_str(s, settings.DEFAULT_CHARSET)
-
-    # Not by any means perfect, but good enough for our purposes.
-    is_file = lambda thing: hasattr(thing, "read") and callable(thing.read)
-
-    # Each bit of the multipart form data could be either a form value or a
-    # file, or a *list* of form values and/or files. Remember that HTTP field
-    # names can be duplicated!
-    for (key, value) in data.items():
-        if is_file(value):
-            lines.extend(encode_file(boundary, key, value))
-        elif not isinstance(value, basestring) and is_iterable(value):
-            for item in value:
-                if is_file(item):
-                    lines.extend(encode_file(boundary, key, item))
-                else:
-                    lines.extend([
-                        '--' + boundary,
-                        'Content-Disposition: form-data; name="%s"' % to_str(key),
-                        '',
-                        to_str(item)
-                    ])
-        else:
-            lines.extend([
-                '--' + boundary,
-                'Content-Disposition: form-data; name="%s"' % to_str(key),
-                '',
-                to_str(value)
-            ])
-
-    lines.extend([
-        '--' + boundary + '--',
-        '',
-    ])
-    return '\r\n'.join(lines)
-
-def encode_file(boundary, key, file):
-    to_str = lambda s: smart_str(s, settings.DEFAULT_CHARSET)
-    return [
-        '--' + boundary,
-        'Content-Disposition: form-data; name="%s"; filename="%s"' \
-            % (to_str(key), to_str(os.path.basename(file.name))),
-        'Content-Type: application/octet-stream',
-        '',
-        file.read()
-    ]
-    
-class Client:
-    """
-    A class that can act as a client for testing purposes.
-
-    It allows the user to compose GET and POST requests, and
-    obtain the response that the server gave to those requests.
-    The server Response objects are annotated with the details
-    of the contexts and templates that were rendered during the
-    process of serving the request.
-
-    Client objects are stateful - they will retain cookie (and
-    thus session) details for the lifetime of the Client instance.
-
-    This is not intended as a replacement for Twill/Selenium or
-    the like - it is here to allow testing against the
-    contexts and templates produced by a view, rather than the
-    HTML rendered to the end-user.
-    """
-    def __init__(self, **defaults):
-        self.handler = ClientHandler()
-        self.defaults = defaults
-        self.cookies = SimpleCookie()
-        self.exc_info = None
-
-    def store_exc_info(self, **kwargs):
-        """
-        Stores exceptions when they are generated by a view.
-        """
-        self.exc_info = sys.exc_info()
-
-    def _session(self):
-        """
-        Obtains the current session variables.
-        """
-        if 'django.contrib.sessions' in settings.INSTALLED_APPS:
-            engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
-            cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
-            if cookie:
-                return engine.SessionStore(cookie.value)
-        return {}
-    session = property(_session)
-
-    def request(self, **request):
-        """
-        The master request method. Composes the environment dictionary
-        and passes to the handler, returning the result of the handler.
-        Assumes defaults for the query environment, which can be overridden
-        using the arguments to the request.
-        """
-        environ = {
-            'HTTP_COOKIE':      self.cookies,
-            'PATH_INFO':         '/',
-            'QUERY_STRING':      '',
-            'REQUEST_METHOD':    'GET',
-            'SCRIPT_NAME':       '',
-            'SERVER_NAME':       'testserver',
-            'SERVER_PORT':       80,
-            'SERVER_PROTOCOL':   'HTTP/1.1',
-        }
-        environ.update(self.defaults)
-        environ.update(request)
-
-        # Curry a data dictionary into an instance of the template renderer
-        # callback function.
-        data = {}
-        on_template_render = curry(store_rendered_templates, data)
-        signals.template_rendered.connect(on_template_render)
-
-        # Capture exceptions created by the handler.
-        got_request_exception.connect(self.store_exc_info)
-
-        try:
-            response = self.handler(environ)
-        except TemplateDoesNotExist, e:
-            # If the view raises an exception, Django will attempt to show
-            # the 500.html template. If that template is not available,
-            # we should ignore the error in favor of re-raising the
-            # underlying exception that caused the 500 error. Any other
-            # template found to be missing during view error handling
-            # should be reported as-is.
-            if e.args != ('500.html',):
-                raise
-
-        # Look for a signalled exception, clear the current context
-        # exception data, then re-raise the signalled exception.
-        # Also make sure that the signalled exception is cleared from
-        # the local cache!
-        if self.exc_info:
-            exc_info = self.exc_info
-            self.exc_info = None
-            raise exc_info[1], None, exc_info[2]
-
-        # Save the client and request that stimulated the response.
-        response.client = self
-        response.request = request
-
-        # Add any rendered template detail to the response.
-        # If there was only one template rendered (the most likely case),
-        # flatten the list to a single element.
-        for detail in ('template', 'context'):
-            if data.get(detail):
-                if len(data[detail]) == 1:
-                    setattr(response, detail, data[detail][0]);
-                else:
-                    setattr(response, detail, data[detail])
-            else:
-                setattr(response, detail, None)
-
-        # Update persistent cookie data.
-        if response.cookies:
-            self.cookies.update(response.cookies)
-
-        return response
-
-    def get(self, path, data={}, **extra):
-        """
-        Requests a response from the server using GET.
-        """
-        r = {
-            'CONTENT_LENGTH':  None,
-            'CONTENT_TYPE':    'text/html; charset=utf-8',
-            'PATH_INFO':       urllib.unquote(path),
-            'QUERY_STRING':    urlencode(data, doseq=True),
-            'REQUEST_METHOD': 'GET',
-        }
-        r.update(extra)
-
-        return self.request(**r)
-
-    def post(self, path, data={}, content_type=MULTIPART_CONTENT, **extra):
-        """
-        Requests a response from the server using POST.
-        """
-        if content_type is MULTIPART_CONTENT:
-            post_data = encode_multipart(BOUNDARY, data)
-        else:
-            post_data = data
-
-        r = {
-            'CONTENT_LENGTH': len(post_data),
-            'CONTENT_TYPE':   content_type,
-            'PATH_INFO':      urllib.unquote(path),
-            'REQUEST_METHOD': 'POST',
-            'wsgi.input':     FakePayload(post_data),
-        }
-        r.update(extra)
-
-        return self.request(**r)
-
-    def login(self, **credentials):
-        """
-        Sets the Client to appear as if it has successfully logged into a site.
-
-        Returns True if login is possible; False if the provided credentials
-        are incorrect, or the user is inactive, or if the sessions framework is
-        not available.
-        """
-        user = authenticate(**credentials)
-        if user and user.is_active \
-                and 'django.contrib.sessions' in settings.INSTALLED_APPS:
-            engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
-
-            # Create a fake request to store login details.
-            request = HttpRequest()
-            if self.session:
-                request.session = self.session
-            else:
-                request.session = engine.SessionStore()
-            login(request, user)
-
-            # Set the cookie to represent the session.
-            session_cookie = settings.SESSION_COOKIE_NAME
-            self.cookies[session_cookie] = request.session.session_key
-            cookie_data = {
-                'max-age': None,
-                'path': '/',
-                'domain': settings.SESSION_COOKIE_DOMAIN,
-                'secure': settings.SESSION_COOKIE_SECURE or None,
-                'expires': None,
-            }
-            self.cookies[session_cookie].update(cookie_data)
-
-            # Save the session values.
-            request.session.save()
-
-            return True
-        else:
-            return False
-
-    def logout(self):
-        """
-        Removes the authenticated user's cookies.
-
-        Causes the authenticated user to be logged out.
-        """
-        session = __import__(settings.SESSION_ENGINE, {}, {}, ['']).SessionStore()
-        session.delete(session_key=self.cookies[settings.SESSION_COOKIE_NAME].value)
-        self.cookies = SimpleCookie()
diff --git a/webapp/django/test/signals.py b/webapp/django/test/signals.py
deleted file mode 100644
index a328a77..0000000
--- a/webapp/django/test/signals.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.dispatch import Signal
-
-template_rendered = Signal(providing_args=["template", "context"])
diff --git a/webapp/django/test/simple.py b/webapp/django/test/simple.py
deleted file mode 100644
index ce9f59e..0000000
--- a/webapp/django/test/simple.py
+++ /dev/null
@@ -1,148 +0,0 @@
-import unittest
-from django.conf import settings
-from django.db.models import get_app, get_apps
-from django.test import _doctest as doctest
-from django.test.utils import setup_test_environment, teardown_test_environment
-from django.test.testcases import OutputChecker, DocTestRunner
-
-# The module name for tests outside models.py
-TEST_MODULE = 'tests'
-    
-doctestOutputChecker = OutputChecker()
-
-def get_tests(app_module):
-    try:
-        app_path = app_module.__name__.split('.')[:-1]
-        test_module = __import__('.'.join(app_path + [TEST_MODULE]), {}, {}, TEST_MODULE)
-    except ImportError, e:
-        # Couldn't import tests.py. Was it due to a missing file, or
-        # due to an import error in a tests.py that actually exists?
-        import os.path
-        from imp import find_module
-        try:
-            mod = find_module(TEST_MODULE, [os.path.dirname(app_module.__file__)])
-        except ImportError:
-            # 'tests' module doesn't exist. Move on.
-            test_module = None
-        else:
-            # The module exists, so there must be an import error in the 
-            # test module itself. We don't need the module; so if the
-            # module was a single file module (i.e., tests.py), close the file
-            # handle returned by find_module. Otherwise, the test module
-            # is a directory, and there is nothing to close.
-            if mod[0]:
-                mod[0].close()
-            raise
-    return test_module
-    
-def build_suite(app_module):
-    "Create a complete Django test suite for the provided application module"
-    suite = unittest.TestSuite()
-    
-    # Load unit and doctests in the models.py module. If module has
-    # a suite() method, use it. Otherwise build the test suite ourselves.
-    if hasattr(app_module, 'suite'):
-        suite.addTest(app_module.suite())
-    else:
-        suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(app_module))
-        try:
-            suite.addTest(doctest.DocTestSuite(app_module,
-                                               checker=doctestOutputChecker,
-                                               runner=DocTestRunner))
-        except ValueError:
-            # No doc tests in models.py
-            pass
-    
-    # Check to see if a separate 'tests' module exists parallel to the 
-    # models module
-    test_module = get_tests(app_module)
-    if test_module:
-        # Load unit and doctests in the tests.py module. If module has
-        # a suite() method, use it. Otherwise build the test suite ourselves.
-        if hasattr(test_module, 'suite'):
-            suite.addTest(test_module.suite())
-        else:
-            suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(test_module))
-            try:            
-                suite.addTest(doctest.DocTestSuite(test_module, 
-                                                   checker=doctestOutputChecker,
-                                                   runner=DocTestRunner))
-            except ValueError:
-                # No doc tests in tests.py
-                pass
-    return suite
-
-def build_test(label):
-    """Construct a test case a test with the specified label. Label should 
-    be of the form model.TestClass or model.TestClass.test_method. Returns
-    an instantiated test or test suite corresponding to the label provided.
-        
-    """
-    parts = label.split('.')
-    if len(parts) < 2 or len(parts) > 3:
-        raise ValueError("Test label '%s' should be of the form app.TestCase or app.TestCase.test_method" % label)
-    
-    app_module = get_app(parts[0])
-    TestClass = getattr(app_module, parts[1], None)
-
-    # Couldn't find the test class in models.py; look in tests.py
-    if TestClass is None:
-        test_module = get_tests(app_module)
-        if test_module:
-            TestClass = getattr(test_module, parts[1], None)
-
-    if len(parts) == 2: # label is app.TestClass
-        try:
-            return unittest.TestLoader().loadTestsFromTestCase(TestClass)
-        except TypeError:
-            raise ValueError("Test label '%s' does not refer to a test class" % label)            
-    else: # label is app.TestClass.test_method
-        return TestClass(parts[2])
-
-def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[]):
-    """
-    Run the unit tests for all the test labels in the provided list.
-    Labels must be of the form:
-     - app.TestClass.test_method
-        Run a single specific test method
-     - app.TestClass
-        Run all the test methods in a given class
-     - app
-        Search for doctests and unittests in the named application.
-
-    When looking for tests, the test runner will look in the models and
-    tests modules for the application.
-    
-    A list of 'extra' tests may also be provided; these tests
-    will be added to the test suite.
-    
-    Returns the number of tests that failed.
-    """
-    setup_test_environment()
-    
-    settings.DEBUG = False    
-    suite = unittest.TestSuite()
-    
-    if test_labels:
-        for label in test_labels:
-            if '.' in label:
-                suite.addTest(build_test(label))
-            else:
-                app = get_app(label)
-                suite.addTest(build_suite(app))
-    else:
-        for app in get_apps():
-            suite.addTest(build_suite(app))
-    
-    for test in extra_tests:
-        suite.addTest(test)
-
-    old_name = settings.DATABASE_NAME
-    from django.db import connection
-    connection.creation.create_test_db(verbosity, autoclobber=not interactive)
-    result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
-    connection.creation.destroy_test_db(old_name, verbosity)
-    
-    teardown_test_environment()
-    
-    return len(result.failures) + len(result.errors)
diff --git a/webapp/django/test/testcases.py b/webapp/django/test/testcases.py
deleted file mode 100644
index dcab078..0000000
--- a/webapp/django/test/testcases.py
+++ /dev/null
@@ -1,356 +0,0 @@
-import re
-import unittest
-from urlparse import urlsplit, urlunsplit
-from xml.dom.minidom import parseString, Node
-
-from django.conf import settings
-from django.core import mail
-from django.core.management import call_command
-from django.core.urlresolvers import clear_url_caches
-from django.db import transaction
-from django.http import QueryDict
-from django.test import _doctest as doctest
-from django.test.client import Client
-from django.utils import simplejson
-
-normalize_long_ints = lambda s: re.sub(r'(?<![\w])(\d+)L(?![\w])', '\\1', s)
-
-def to_list(value):
-    """
-    Puts value into a list if it's not already one.
-    Returns an empty list if value is None.
-    """
-    if value is None:
-        value = []
-    elif not isinstance(value, list):
-        value = [value]
-    return value
-
-
-class OutputChecker(doctest.OutputChecker):
-    def check_output(self, want, got, optionflags):
-        "The entry method for doctest output checking. Defers to a sequence of child checkers"
-        checks = (self.check_output_default,
-                  self.check_output_long,
-                  self.check_output_xml,
-                  self.check_output_json)
-        for check in checks:
-            if check(want, got, optionflags):
-                return True
-        return False
-
-    def check_output_default(self, want, got, optionflags):
-        "The default comparator provided by doctest - not perfect, but good for most purposes"
-        return doctest.OutputChecker.check_output(self, want, got, optionflags)
-
-    def check_output_long(self, want, got, optionflags):
-        """Doctest does an exact string comparison of output, which means long
-        integers aren't equal to normal integers ("22L" vs. "22"). The
-        following code normalizes long integers so that they equal normal
-        integers.
-        """
-        return normalize_long_ints(want) == normalize_long_ints(got)
-
-    def check_output_xml(self, want, got, optionsflags):
-        """Tries to do a 'xml-comparision' of want and got.  Plain string
-        comparision doesn't always work because, for example, attribute
-        ordering should not be important.
-        
-        Based on http://codespeak.net/svn/lxml/trunk/src/lxml/doctestcompare.py
-        """
-        _norm_whitespace_re = re.compile(r'[ \t\n][ \t\n]+')
-        def norm_whitespace(v):
-            return _norm_whitespace_re.sub(' ', v)
-
-        def child_text(element):
-            return ''.join([c.data for c in element.childNodes
-                            if c.nodeType == Node.TEXT_NODE])
-
-        def children(element):
-            return [c for c in element.childNodes
-                    if c.nodeType == Node.ELEMENT_NODE]
-
-        def norm_child_text(element):
-            return norm_whitespace(child_text(element))
-
-        def attrs_dict(element):
-            return dict(element.attributes.items())
-
-        def check_element(want_element, got_element):
-            if want_element.tagName != got_element.tagName:
-                return False
-            if norm_child_text(want_element) != norm_child_text(got_element):
-                return False
-            if attrs_dict(want_element) != attrs_dict(got_element):
-                return False
-            want_children = children(want_element)
-            got_children = children(got_element)
-            if len(want_children) != len(got_children):
-                return False
-            for want, got in zip(want_children, got_children):
-                if not check_element(want, got):
-                    return False
-            return True
-
-        want, got = self._strip_quotes(want, got)
-        want = want.replace('\\n','\n')
-        got = got.replace('\\n','\n')
-
-        # If the string is not a complete xml document, we may need to add a
-        # root element. This allow us to compare fragments, like "<foo/><bar/>"
-        if not want.startswith('<?xml'):
-            wrapper = '<root>%s</root>'
-            want = wrapper % want
-            got = wrapper % got
-            
-        # Parse the want and got strings, and compare the parsings.
-        try:
-            want_root = parseString(want).firstChild
-            got_root = parseString(got).firstChild
-        except:
-            return False
-        return check_element(want_root, got_root)
-
-    def check_output_json(self, want, got, optionsflags):
-        "Tries to compare want and got as if they were JSON-encoded data"
-        want, got = self._strip_quotes(want, got)
-        try:
-            want_json = simplejson.loads(want)
-            got_json = simplejson.loads(got)
-        except:
-            return False
-        return want_json == got_json
-
-    def _strip_quotes(self, want, got):
-        """
-        Strip quotes of doctests output values:
-
-        >>> o = OutputChecker()
-        >>> o._strip_quotes("'foo'")
-        "foo"
-        >>> o._strip_quotes('"foo"')
-        "foo"
-        >>> o._strip_quotes("u'foo'")
-        "foo"
-        >>> o._strip_quotes('u"foo"')
-        "foo"
-        """
-        def is_quoted_string(s):
-            s = s.strip()
-            return (len(s) >= 2
-                    and s[0] == s[-1]
-                    and s[0] in ('"', "'"))
-
-        def is_quoted_unicode(s):
-            s = s.strip()
-            return (len(s) >= 3
-                    and s[0] == 'u'
-                    and s[1] == s[-1]
-                    and s[1] in ('"', "'"))
-
-        if is_quoted_string(want) and is_quoted_string(got):
-            want = want.strip()[1:-1]
-            got = got.strip()[1:-1]
-        elif is_quoted_unicode(want) and is_quoted_unicode(got):
-            want = want.strip()[2:-1]
-            got = got.strip()[2:-1]
-        return want, got
-
-
-class DocTestRunner(doctest.DocTestRunner):
-    def __init__(self, *args, **kwargs):
-        doctest.DocTestRunner.__init__(self, *args, **kwargs)
-        self.optionflags = doctest.ELLIPSIS
-
-    def report_unexpected_exception(self, out, test, example, exc_info):
-        doctest.DocTestRunner.report_unexpected_exception(self, out, test,
-                                                          example, exc_info)
-        # Rollback, in case of database errors. Otherwise they'd have
-        # side effects on other tests.
-        transaction.rollback_unless_managed()
-
-class TestCase(unittest.TestCase):
-    def _pre_setup(self):
-        """Performs any pre-test setup. This includes:
-
-            * Flushing the database.
-            * If the Test Case class has a 'fixtures' member, installing the 
-              named fixtures.
-            * If the Test Case class has a 'urls' member, replace the
-              ROOT_URLCONF with it.
-            * Clearing the mail test outbox.
-        """
-        call_command('flush', verbosity=0, interactive=False)
-        if hasattr(self, 'fixtures'):
-            # We have to use this slightly awkward syntax due to the fact
-            # that we're using *args and **kwargs together.
-            call_command('loaddata', *self.fixtures, **{'verbosity': 0})
-        if hasattr(self, 'urls'):
-            self._old_root_urlconf = settings.ROOT_URLCONF
-            settings.ROOT_URLCONF = self.urls
-            clear_url_caches()
-        mail.outbox = []
-
-    def __call__(self, result=None):
-        """
-        Wrapper around default __call__ method to perform common Django test
-        set up. This means that user-defined Test Cases aren't required to
-        include a call to super().setUp().
-        """
-        self.client = Client()
-        try:
-            self._pre_setup()
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except Exception:
-            import sys
-            result.addError(self, sys.exc_info())
-            return
-        super(TestCase, self).__call__(result)
-        try:
-            self._post_teardown()
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except Exception:
-            import sys
-            result.addError(self, sys.exc_info())
-            return
-
-    def _post_teardown(self):
-        """ Performs any post-test things. This includes:
-
-            * Putting back the original ROOT_URLCONF if it was changed.
-        """
-        if hasattr(self, '_old_root_urlconf'):
-            settings.ROOT_URLCONF = self._old_root_urlconf
-            clear_url_caches()
-
-    def assertRedirects(self, response, expected_url, status_code=302,
-                        target_status_code=200, host=None):
-        """Asserts that a response redirected to a specific URL, and that the
-        redirect URL can be loaded.
-
-        Note that assertRedirects won't work for external links since it uses
-        TestClient to do a request.
-        """
-        self.assertEqual(response.status_code, status_code,
-            ("Response didn't redirect as expected: Response code was %d"
-             " (expected %d)" % (response.status_code, status_code)))
-        url = response['Location']
-        scheme, netloc, path, query, fragment = urlsplit(url)
-        e_scheme, e_netloc, e_path, e_query, e_fragment = urlsplit(expected_url)
-        if not (e_scheme or e_netloc):
-            expected_url = urlunsplit(('http', host or 'testserver', e_path,
-                    e_query, e_fragment))
-        self.assertEqual(url, expected_url,
-            "Response redirected to '%s', expected '%s'" % (url, expected_url))
-
-        # Get the redirection page, using the same client that was used
-        # to obtain the original response.
-        redirect_response = response.client.get(path, QueryDict(query))
-        self.assertEqual(redirect_response.status_code, target_status_code,
-            ("Couldn't retrieve redirection page '%s': response code was %d"
-             " (expected %d)") %
-                 (path, redirect_response.status_code, target_status_code))
-
-    def assertContains(self, response, text, count=None, status_code=200):
-        """
-        Asserts that a response indicates that a page was retrieved
-        successfully, (i.e., the HTTP status code was as expected), and that
-        ``text`` occurs ``count`` times in the content of the response.
-        If ``count`` is None, the count doesn't matter - the assertion is true
-        if the text occurs at least once in the response.
-        """
-        self.assertEqual(response.status_code, status_code,
-            "Couldn't retrieve page: Response code was %d (expected %d)'" %
-                (response.status_code, status_code))
-        real_count = response.content.count(text)
-        if count is not None:
-            self.assertEqual(real_count, count,
-                "Found %d instances of '%s' in response (expected %d)" %
-                    (real_count, text, count))
-        else:
-            self.failUnless(real_count != 0,
-                            "Couldn't find '%s' in response" % text)
-
-    def assertNotContains(self, response, text, status_code=200):
-        """
-        Asserts that a response indicates that a page was retrieved
-        successfully, (i.e., the HTTP status code was as expected), and that
-        ``text`` doesn't occurs in the content of the response.
-        """
-        self.assertEqual(response.status_code, status_code,
-            "Couldn't retrieve page: Response code was %d (expected %d)'" %
-                (response.status_code, status_code))
-        self.assertEqual(response.content.count(text), 0,
-                         "Response should not contain '%s'" % text)
-
-    def assertFormError(self, response, form, field, errors):
-        """
-        Asserts that a form used to render the response has a specific field
-        error.
-        """
-        # Put context(s) into a list to simplify processing.
-        contexts = to_list(response.context)
-        if not contexts:
-            self.fail('Response did not use any contexts to render the'
-                      ' response')
-
-        # Put error(s) into a list to simplify processing.
-        errors = to_list(errors)
-
-        # Search all contexts for the error.
-        found_form = False
-        for i,context in enumerate(contexts):
-            if form not in context:
-                continue
-            found_form = True
-            for err in errors:
-                if field:
-                    if field in context[form].errors:
-                        field_errors = context[form].errors[field]
-                        self.failUnless(err in field_errors,
-                                        "The field '%s' on form '%s' in"
-                                        " context %d does not contain the"
-                                        " error '%s' (actual errors: %s)" %
-                                            (field, form, i, err,
-                                             repr(field_errors)))
-                    elif field in context[form].fields:
-                        self.fail("The field '%s' on form '%s' in context %d"
-                                  " contains no errors" % (field, form, i))
-                    else:
-                        self.fail("The form '%s' in context %d does not"
-                                  " contain the field '%s'" %
-                                      (form, i, field))
-                else:
-                    non_field_errors = context[form].non_field_errors()
-                    self.failUnless(err in non_field_errors,
-                        "The form '%s' in context %d does not contain the"
-                        " non-field error '%s' (actual errors: %s)" %
-                            (form, i, err, non_field_errors))
-        if not found_form:
-            self.fail("The form '%s' was not used to render the response" %
-                          form)
-
-    def assertTemplateUsed(self, response, template_name):
-        """
-        Asserts that the template with the provided name was used in rendering
-        the response.
-        """
-        template_names = [t.name for t in to_list(response.template)]
-        if not template_names:
-            self.fail('No templates used to render the response')
-        self.failUnless(template_name in template_names,
-            (u"Template '%s' was not a template used to render the response."
-             u" Actual template(s) used: %s") % (template_name,
-                                                 u', '.join(template_names)))
-
-    def assertTemplateNotUsed(self, response, template_name):
-        """
-        Asserts that the template with the provided name was NOT used in
-        rendering the response.
-        """
-        template_names = [t.name for t in to_list(response.template)]
-        self.failIf(template_name in template_names,
-            (u"Template '%s' was used unexpectedly in rendering the"
-             u" response") % template_name)
diff --git a/webapp/django/test/utils.py b/webapp/django/test/utils.py
deleted file mode 100644
index 69bd25b..0000000
--- a/webapp/django/test/utils.py
+++ /dev/null
@@ -1,67 +0,0 @@
-import sys, time, os
-from django.conf import settings
-from django.db import connection
-from django.core import mail
-from django.test import signals
-from django.template import Template
-from django.utils.translation import deactivate
-
-def instrumented_test_render(self, context):
-    """
-    An instrumented Template render method, providing a signal
-    that can be intercepted by the test system Client
-    """
-    signals.template_rendered.send(sender=self, template=self, context=context)
-    return self.nodelist.render(context)
-
-class TestSMTPConnection(object):
-    """A substitute SMTP connection for use during test sessions.
-    The test connection stores email messages in a dummy outbox,
-    rather than sending them out on the wire.
-
-    """
-    def __init__(*args, **kwargs):
-        pass
-    def open(self):
-        "Mock the SMTPConnection open() interface"
-        pass
-    def close(self):
-        "Mock the SMTPConnection close() interface"
-        pass
-    def send_messages(self, messages):
-        "Redirect messages to the dummy outbox"
-        mail.outbox.extend(messages)
-        return len(messages)
-
-def setup_test_environment():
-    """Perform any global pre-test setup. This involves:
-
-        - Installing the instrumented test renderer
-        - Diverting the email sending functions to a test buffer
-        - Setting the active locale to match the LANGUAGE_CODE setting.
-    """
-    Template.original_render = Template.render
-    Template.render = instrumented_test_render
-
-    mail.original_SMTPConnection = mail.SMTPConnection
-    mail.SMTPConnection = TestSMTPConnection
-
-    mail.outbox = []
-
-    deactivate()
-
-def teardown_test_environment():
-    """Perform any global post-test teardown. This involves:
-
-        - Restoring the original test renderer
-        - Restoring the email sending functions
-
-    """
-    Template.render = Template.original_render
-    del Template.original_render
-
-    mail.SMTPConnection = mail.original_SMTPConnection
-    del mail.original_SMTPConnection
-
-    del mail.outbox
-
diff --git a/webapp/django/utils/__init__.py b/webapp/django/utils/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/utils/__init__.py
+++ /dev/null
diff --git a/webapp/django/utils/_decimal.py b/webapp/django/utils/_decimal.py
deleted file mode 100644
index 677d26b..0000000
--- a/webapp/django/utils/_decimal.py
+++ /dev/null
@@ -1,3079 +0,0 @@
-# Copyright (c) 2004 Python Software Foundation.
-# All rights reserved.
-
-# Written by Eric Price <eprice at tjhsst.edu>
-#    and Facundo Batista <facundo at taniquetil.com.ar>
-#    and Raymond Hettinger <python at rcn.com>
-#    and Aahz <aahz at pobox.com>
-#    and Tim Peters
-
-# This module is currently Py2.3 compatible and should be kept that way
-# unless a major compelling advantage arises.  IOW, 2.3 compatibility is
-# strongly preferred, but not guaranteed.
-
-# Also, this module should be kept in sync with the latest updates of
-# the IBM specification as it evolves.  Those updates will be treated
-# as bug fixes (deviation from the spec is a compatibility, usability
-# bug) and will be backported.  At this point the spec is stabilizing
-# and the updates are becoming fewer, smaller, and less significant.
-
-"""
-This is a Py2.3 implementation of decimal floating point arithmetic based on
-the General Decimal Arithmetic Specification:
-
-    www2.hursley.ibm.com/decimal/decarith.html
-
-and IEEE standard 854-1987:
-
-    www.cs.berkeley.edu/~ejr/projects/754/private/drafts/854-1987/dir.html
-
-Decimal floating point has finite precision with arbitrarily large bounds.
-
-The purpose of the module is to support arithmetic using familiar
-"schoolhouse" rules and to avoid the some of tricky representation
-issues associated with binary floating point.  The package is especially
-useful for financial applications or for contexts where users have
-expectations that are at odds with binary floating point (for instance,
-in binary floating point, 1.00 % 0.1 gives 0.09999999999999995 instead
-of the expected Decimal("0.00") returned by decimal floating point).
-
-Here are some examples of using the decimal module:
-
->>> from decimal import *
->>> setcontext(ExtendedContext)
->>> Decimal(0)
-Decimal("0")
->>> Decimal("1")
-Decimal("1")
->>> Decimal("-.0123")
-Decimal("-0.0123")
->>> Decimal(123456)
-Decimal("123456")
->>> Decimal("123.45e12345678901234567890")
-Decimal("1.2345E+12345678901234567892")
->>> Decimal("1.33") + Decimal("1.27")
-Decimal("2.60")
->>> Decimal("12.34") + Decimal("3.87") - Decimal("18.41")
-Decimal("-2.20")
->>> dig = Decimal(1)
->>> print dig / Decimal(3)
-0.333333333
->>> getcontext().prec = 18
->>> print dig / Decimal(3)
-0.333333333333333333
->>> print dig.sqrt()
-1
->>> print Decimal(3).sqrt()
-1.73205080756887729
->>> print Decimal(3) ** 123
-4.85192780976896427E+58
->>> inf = Decimal(1) / Decimal(0)
->>> print inf
-Infinity
->>> neginf = Decimal(-1) / Decimal(0)
->>> print neginf
--Infinity
->>> print neginf + inf
-NaN
->>> print neginf * inf
--Infinity
->>> print dig / 0
-Infinity
->>> getcontext().traps[DivisionByZero] = 1
->>> print dig / 0
-Traceback (most recent call last):
-  ...
-  ...
-  ...
-DivisionByZero: x / 0
->>> c = Context()
->>> c.traps[InvalidOperation] = 0
->>> print c.flags[InvalidOperation]
-0
->>> c.divide(Decimal(0), Decimal(0))
-Decimal("NaN")
->>> c.traps[InvalidOperation] = 1
->>> print c.flags[InvalidOperation]
-1
->>> c.flags[InvalidOperation] = 0
->>> print c.flags[InvalidOperation]
-0
->>> print c.divide(Decimal(0), Decimal(0))
-Traceback (most recent call last):
-  ...
-  ...
-  ...
-InvalidOperation: 0 / 0
->>> print c.flags[InvalidOperation]
-1
->>> c.flags[InvalidOperation] = 0
->>> c.traps[InvalidOperation] = 0
->>> print c.divide(Decimal(0), Decimal(0))
-NaN
->>> print c.flags[InvalidOperation]
-1
->>>
-"""
-
-__all__ = [
-    # Two major classes
-    'Decimal', 'Context',
-
-    # Contexts
-    'DefaultContext', 'BasicContext', 'ExtendedContext',
-
-    # Exceptions
-    'DecimalException', 'Clamped', 'InvalidOperation', 'DivisionByZero',
-    'Inexact', 'Rounded', 'Subnormal', 'Overflow', 'Underflow',
-
-    # Constants for use in setting up contexts
-    'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING',
-    'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN',
-
-    # Functions for manipulating contexts
-    'setcontext', 'getcontext'
-]
-
-import copy as _copy
-
-#Rounding
-ROUND_DOWN = 'ROUND_DOWN'
-ROUND_HALF_UP = 'ROUND_HALF_UP'
-ROUND_HALF_EVEN = 'ROUND_HALF_EVEN'
-ROUND_CEILING = 'ROUND_CEILING'
-ROUND_FLOOR = 'ROUND_FLOOR'
-ROUND_UP = 'ROUND_UP'
-ROUND_HALF_DOWN = 'ROUND_HALF_DOWN'
-
-#Rounding decision (not part of the public API)
-NEVER_ROUND = 'NEVER_ROUND'    # Round in division (non-divmod), sqrt ONLY
-ALWAYS_ROUND = 'ALWAYS_ROUND'  # Every operation rounds at end.
-
-#Errors
-
-class DecimalException(ArithmeticError):
-    """Base exception class.
-
-    Used exceptions derive from this.
-    If an exception derives from another exception besides this (such as
-    Underflow (Inexact, Rounded, Subnormal) that indicates that it is only
-    called if the others are present.  This isn't actually used for
-    anything, though.
-
-    handle  -- Called when context._raise_error is called and the
-               trap_enabler is set.  First argument is self, second is the
-               context.  More arguments can be given, those being after
-               the explanation in _raise_error (For example,
-               context._raise_error(NewError, '(-x)!', self._sign) would
-               call NewError().handle(context, self._sign).)
-
-    To define a new exception, it should be sufficient to have it derive
-    from DecimalException.
-    """
-    def handle(self, context, *args):
-        pass
-
-
-class Clamped(DecimalException):
-    """Exponent of a 0 changed to fit bounds.
-
-    This occurs and signals clamped if the exponent of a result has been
-    altered in order to fit the constraints of a specific concrete
-    representation. This may occur when the exponent of a zero result would
-    be outside the bounds of a representation, or  when a large normal
-    number would have an encoded exponent that cannot be represented. In
-    this latter case, the exponent is reduced to fit and the corresponding
-    number of zero digits are appended to the coefficient ("fold-down").
-    """
-
-
-class InvalidOperation(DecimalException):
-    """An invalid operation was performed.
-
-    Various bad things cause this:
-
-    Something creates a signaling NaN
-    -INF + INF
-     0 * (+-)INF
-     (+-)INF / (+-)INF
-    x % 0
-    (+-)INF % x
-    x._rescale( non-integer )
-    sqrt(-x) , x > 0
-    0 ** 0
-    x ** (non-integer)
-    x ** (+-)INF
-    An operand is invalid
-    """
-    def handle(self, context, *args):
-        if args:
-            if args[0] == 1: #sNaN, must drop 's' but keep diagnostics
-                return Decimal( (args[1]._sign, args[1]._int, 'n') )
-        return NaN
-
-class ConversionSyntax(InvalidOperation):
-    """Trying to convert badly formed string.
-
-    This occurs and signals invalid-operation if an string is being
-    converted to a number and it does not conform to the numeric string
-    syntax. The result is [0,qNaN].
-    """
-
-    def handle(self, context, *args):
-        return (0, (0,), 'n') #Passed to something which uses a tuple.
-
-class DivisionByZero(DecimalException, ZeroDivisionError):
-    """Division by 0.
-
-    This occurs and signals division-by-zero if division of a finite number
-    by zero was attempted (during a divide-integer or divide operation, or a
-    power operation with negative right-hand operand), and the dividend was
-    not zero.
-
-    The result of the operation is [sign,inf], where sign is the exclusive
-    or of the signs of the operands for divide, or is 1 for an odd power of
-    -0, for power.
-    """
-
-    def handle(self, context, sign, double = None, *args):
-        if double is not None:
-            return (Infsign[sign],)*2
-        return Infsign[sign]
-
-class DivisionImpossible(InvalidOperation):
-    """Cannot perform the division adequately.
-
-    This occurs and signals invalid-operation if the integer result of a
-    divide-integer or remainder operation had too many digits (would be
-    longer than precision). The result is [0,qNaN].
-    """
-
-    def handle(self, context, *args):
-        return (NaN, NaN)
-
-class DivisionUndefined(InvalidOperation, ZeroDivisionError):
-    """Undefined result of division.
-
-    This occurs and signals invalid-operation if division by zero was
-    attempted (during a divide-integer, divide, or remainder operation), and
-    the dividend is also zero. The result is [0,qNaN].
-    """
-
-    def handle(self, context, tup=None, *args):
-        if tup is not None:
-            return (NaN, NaN) #for 0 %0, 0 // 0
-        return NaN
-
-class Inexact(DecimalException):
-    """Had to round, losing information.
-
-    This occurs and signals inexact whenever the result of an operation is
-    not exact (that is, it needed to be rounded and any discarded digits
-    were non-zero), or if an overflow or underflow condition occurs. The
-    result in all cases is unchanged.
-
-    The inexact signal may be tested (or trapped) to determine if a given
-    operation (or sequence of operations) was inexact.
-    """
-    pass
-
-class InvalidContext(InvalidOperation):
-    """Invalid context.  Unknown rounding, for example.
-
-    This occurs and signals invalid-operation if an invalid context was
-    detected during an operation. This can occur if contexts are not checked
-    on creation and either the precision exceeds the capability of the
-    underlying concrete representation or an unknown or unsupported rounding
-    was specified. These aspects of the context need only be checked when
-    the values are required to be used. The result is [0,qNaN].
-    """
-
-    def handle(self, context, *args):
-        return NaN
-
-class Rounded(DecimalException):
-    """Number got rounded (not  necessarily changed during rounding).
-
-    This occurs and signals rounded whenever the result of an operation is
-    rounded (that is, some zero or non-zero digits were discarded from the
-    coefficient), or if an overflow or underflow condition occurs. The
-    result in all cases is unchanged.
-
-    The rounded signal may be tested (or trapped) to determine if a given
-    operation (or sequence of operations) caused a loss of precision.
-    """
-    pass
-
-class Subnormal(DecimalException):
-    """Exponent < Emin before rounding.
-
-    This occurs and signals subnormal whenever the result of a conversion or
-    operation is subnormal (that is, its adjusted exponent is less than
-    Emin, before any rounding). The result in all cases is unchanged.
-
-    The subnormal signal may be tested (or trapped) to determine if a given
-    or operation (or sequence of operations) yielded a subnormal result.
-    """
-    pass
-
-class Overflow(Inexact, Rounded):
-    """Numerical overflow.
-
-    This occurs and signals overflow if the adjusted exponent of a result
-    (from a conversion or from an operation that is not an attempt to divide
-    by zero), after rounding, would be greater than the largest value that
-    can be handled by the implementation (the value Emax).
-
-    The result depends on the rounding mode:
-
-    For round-half-up and round-half-even (and for round-half-down and
-    round-up, if implemented), the result of the operation is [sign,inf],
-    where sign is the sign of the intermediate result. For round-down, the
-    result is the largest finite number that can be represented in the
-    current precision, with the sign of the intermediate result. For
-    round-ceiling, the result is the same as for round-down if the sign of
-    the intermediate result is 1, or is [0,inf] otherwise. For round-floor,
-    the result is the same as for round-down if the sign of the intermediate
-    result is 0, or is [1,inf] otherwise. In all cases, Inexact and Rounded
-    will also be raised.
-   """
-
-    def handle(self, context, sign, *args):
-        if context.rounding in (ROUND_HALF_UP, ROUND_HALF_EVEN,
-                                     ROUND_HALF_DOWN, ROUND_UP):
-            return Infsign[sign]
-        if sign == 0:
-            if context.rounding == ROUND_CEILING:
-                return Infsign[sign]
-            return Decimal((sign, (9,)*context.prec,
-                            context.Emax-context.prec+1))
-        if sign == 1:
-            if context.rounding == ROUND_FLOOR:
-                return Infsign[sign]
-            return Decimal( (sign, (9,)*context.prec,
-                             context.Emax-context.prec+1))
-
-
-class Underflow(Inexact, Rounded, Subnormal):
-    """Numerical underflow with result rounded to 0.
-
-    This occurs and signals underflow if a result is inexact and the
-    adjusted exponent of the result would be smaller (more negative) than
-    the smallest value that can be handled by the implementation (the value
-    Emin). That is, the result is both inexact and subnormal.
-
-    The result after an underflow will be a subnormal number rounded, if
-    necessary, so that its exponent is not less than Etiny. This may result
-    in 0 with the sign of the intermediate result and an exponent of Etiny.
-
-    In all cases, Inexact, Rounded, and Subnormal will also be raised.
-    """
-
-# List of public traps and flags
-_signals = [Clamped, DivisionByZero, Inexact, Overflow, Rounded,
-           Underflow, InvalidOperation, Subnormal]
-
-# Map conditions (per the spec) to signals
-_condition_map = {ConversionSyntax:InvalidOperation,
-                  DivisionImpossible:InvalidOperation,
-                  DivisionUndefined:InvalidOperation,
-                  InvalidContext:InvalidOperation}
-
-##### Context Functions #######################################
-
-# The getcontext() and setcontext() function manage access to a thread-local
-# current context.  Py2.4 offers direct support for thread locals.  If that
-# is not available, use threading.currentThread() which is slower but will
-# work for older Pythons.  If threads are not part of the build, create a
-# mock threading object with threading.local() returning the module namespace.
-
-try:
-    import threading
-except ImportError:
-    # Python was compiled without threads; create a mock object instead
-    import sys
-    class MockThreading:
-        def local(self, sys=sys):
-            return sys.modules[__name__]
-    threading = MockThreading()
-    del sys, MockThreading
-
-try:
-    threading.local
-
-except AttributeError:
-
-    #To fix reloading, force it to create a new context
-    #Old contexts have different exceptions in their dicts, making problems.
-    if hasattr(threading.currentThread(), '__decimal_context__'):
-        del threading.currentThread().__decimal_context__
-
-    def setcontext(context):
-        """Set this thread's context to context."""
-        if context in (DefaultContext, BasicContext, ExtendedContext):
-            context = context.copy()
-            context.clear_flags()
-        threading.currentThread().__decimal_context__ = context
-
-    def getcontext():
-        """Returns this thread's context.
-
-        If this thread does not yet have a context, returns
-        a new context and sets this thread's context.
-        New contexts are copies of DefaultContext.
-        """
-        try:
-            return threading.currentThread().__decimal_context__
-        except AttributeError:
-            context = Context()
-            threading.currentThread().__decimal_context__ = context
-            return context
-
-else:
-
-    local = threading.local()
-    if hasattr(local, '__decimal_context__'):
-        del local.__decimal_context__
-
-    def getcontext(_local=local):
-        """Returns this thread's context.
-
-        If this thread does not yet have a context, returns
-        a new context and sets this thread's context.
-        New contexts are copies of DefaultContext.
-        """
-        try:
-            return _local.__decimal_context__
-        except AttributeError:
-            context = Context()
-            _local.__decimal_context__ = context
-            return context
-
-    def setcontext(context, _local=local):
-        """Set this thread's context to context."""
-        if context in (DefaultContext, BasicContext, ExtendedContext):
-            context = context.copy()
-            context.clear_flags()
-        _local.__decimal_context__ = context
-
-    del threading, local        # Don't contaminate the namespace
-
-
-##### Decimal class ###########################################
-
-class Decimal(object):
-    """Floating point class for decimal arithmetic."""
-
-    __slots__ = ('_exp','_int','_sign', '_is_special')
-    # Generally, the value of the Decimal instance is given by
-    #  (-1)**_sign * _int * 10**_exp
-    # Special values are signified by _is_special == True
-
-    # We're immutable, so use __new__ not __init__
-    def __new__(cls, value="0", context=None):
-        """Create a decimal point instance.
-
-        >>> Decimal('3.14')              # string input
-        Decimal("3.14")
-        >>> Decimal((0, (3, 1, 4), -2))  # tuple input (sign, digit_tuple, exponent)
-        Decimal("3.14")
-        >>> Decimal(314)                 # int or long
-        Decimal("314")
-        >>> Decimal(Decimal(314))        # another decimal instance
-        Decimal("314")
-        """
-
-        self = object.__new__(cls)
-        self._is_special = False
-
-        # From an internal working value
-        if isinstance(value, _WorkRep):
-            self._sign = value.sign
-            self._int = tuple(map(int, str(value.int)))
-            self._exp = int(value.exp)
-            return self
-
-        # From another decimal
-        if isinstance(value, Decimal):
-            self._exp  = value._exp
-            self._sign = value._sign
-            self._int  = value._int
-            self._is_special  = value._is_special
-            return self
-
-        # From an integer
-        if isinstance(value, (int,long)):
-            if value >= 0:
-                self._sign = 0
-            else:
-                self._sign = 1
-            self._exp = 0
-            self._int = tuple(map(int, str(abs(value))))
-            return self
-
-        # tuple/list conversion (possibly from as_tuple())
-        if isinstance(value, (list,tuple)):
-            if len(value) != 3:
-                raise ValueError, 'Invalid arguments'
-            if value[0] not in (0,1):
-                raise ValueError, 'Invalid sign'
-            for digit in value[1]:
-                if not isinstance(digit, (int,long)) or digit < 0:
-                    raise ValueError, "The second value in the tuple must be composed of non negative integer elements."
-
-            self._sign = value[0]
-            self._int  = tuple(value[1])
-            if value[2] in ('F','n','N'):
-                self._exp = value[2]
-                self._is_special = True
-            else:
-                self._exp  = int(value[2])
-            return self
-
-        if isinstance(value, float):
-            raise TypeError("Cannot convert float to Decimal.  " +
-                            "First convert the float to a string")
-
-        # Other argument types may require the context during interpretation
-        if context is None:
-            context = getcontext()
-
-        # From a string
-        # REs insist on real strings, so we can too.
-        if isinstance(value, basestring):
-            if _isinfinity(value):
-                self._exp = 'F'
-                self._int = (0,)
-                self._is_special = True
-                if _isinfinity(value) == 1:
-                    self._sign = 0
-                else:
-                    self._sign = 1
-                return self
-            if _isnan(value):
-                sig, sign, diag = _isnan(value)
-                self._is_special = True
-                if len(diag) > context.prec: #Diagnostic info too long
-                    self._sign, self._int, self._exp = \
-                                context._raise_error(ConversionSyntax)
-                    return self
-                if sig == 1:
-                    self._exp = 'n' #qNaN
-                else: #sig == 2
-                    self._exp = 'N' #sNaN
-                self._sign = sign
-                self._int = tuple(map(int, diag)) #Diagnostic info
-                return self
-            try:
-                self._sign, self._int, self._exp = _string2exact(value)
-            except ValueError:
-                self._is_special = True
-                self._sign, self._int, self._exp = context._raise_error(ConversionSyntax)
-            return self
-
-        raise TypeError("Cannot convert %r to Decimal" % value)
-
-    def _isnan(self):
-        """Returns whether the number is not actually one.
-
-        0 if a number
-        1 if NaN
-        2 if sNaN
-        """
-        if self._is_special:
-            exp = self._exp
-            if exp == 'n':
-                return 1
-            elif exp == 'N':
-                return 2
-        return 0
-
-    def _isinfinity(self):
-        """Returns whether the number is infinite
-
-        0 if finite or not a number
-        1 if +INF
-        -1 if -INF
-        """
-        if self._exp == 'F':
-            if self._sign:
-                return -1
-            return 1
-        return 0
-
-    def _check_nans(self, other = None, context=None):
-        """Returns whether the number is not actually one.
-
-        if self, other are sNaN, signal
-        if self, other are NaN return nan
-        return 0
-
-        Done before operations.
-        """
-
-        self_is_nan = self._isnan()
-        if other is None:
-            other_is_nan = False
-        else:
-            other_is_nan = other._isnan()
-
-        if self_is_nan or other_is_nan:
-            if context is None:
-                context = getcontext()
-
-            if self_is_nan == 2:
-                return context._raise_error(InvalidOperation, 'sNaN',
-                                        1, self)
-            if other_is_nan == 2:
-                return context._raise_error(InvalidOperation, 'sNaN',
-                                        1, other)
-            if self_is_nan:
-                return self
-
-            return other
-        return 0
-
-    def __nonzero__(self):
-        """Is the number non-zero?
-
-        0 if self == 0
-        1 if self != 0
-        """
-        if self._is_special:
-            return 1
-        return sum(self._int) != 0
-
-    def __cmp__(self, other, context=None):
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return 1 # Comparison involving NaN's always reports self > other
-
-            # INF = INF
-            return cmp(self._isinfinity(), other._isinfinity())
-
-        if not self and not other:
-            return 0 #If both 0, sign comparison isn't certain.
-
-        #If different signs, neg one is less
-        if other._sign < self._sign:
-            return -1
-        if self._sign < other._sign:
-            return 1
-
-        self_adjusted = self.adjusted()
-        other_adjusted = other.adjusted()
-        if self_adjusted == other_adjusted and \
-           self._int + (0,)*(self._exp - other._exp) == \
-           other._int + (0,)*(other._exp - self._exp):
-            return 0 #equal, except in precision. ([0]*(-x) = [])
-        elif self_adjusted > other_adjusted and self._int[0] != 0:
-            return (-1)**self._sign
-        elif self_adjusted < other_adjusted and other._int[0] != 0:
-            return -((-1)**self._sign)
-
-        # Need to round, so make sure we have a valid context
-        if context is None:
-            context = getcontext()
-
-        context = context._shallow_copy()
-        rounding = context._set_rounding(ROUND_UP) #round away from 0
-
-        flags = context._ignore_all_flags()
-        res = self.__sub__(other, context=context)
-
-        context._regard_flags(*flags)
-
-        context.rounding = rounding
-
-        if not res:
-            return 0
-        elif res._sign:
-            return -1
-        return 1
-
-    def __eq__(self, other):
-        if not isinstance(other, (Decimal, int, long)):
-            return NotImplemented
-        return self.__cmp__(other) == 0
-
-    def __ne__(self, other):
-        if not isinstance(other, (Decimal, int, long)):
-            return NotImplemented
-        return self.__cmp__(other) != 0
-
-    def compare(self, other, context=None):
-        """Compares one to another.
-
-        -1 => a < b
-        0  => a = b
-        1  => a > b
-        NaN => one is NaN
-        Like __cmp__, but returns Decimal instances.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        #compare(NaN, NaN) = NaN
-        if (self._is_special or other and other._is_special):
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-        return Decimal(self.__cmp__(other, context))
-
-    def __hash__(self):
-        """x.__hash__() <==> hash(x)"""
-        # Decimal integers must hash the same as the ints
-        # Non-integer decimals are normalized and hashed as strings
-        # Normalization assures that hast(100E-1) == hash(10)
-        if self._is_special:
-            if self._isnan():
-                raise TypeError('Cannot hash a NaN value.')
-            return hash(str(self))
-        i = int(self)
-        if self == Decimal(i):
-            return hash(i)
-        assert self.__nonzero__()   # '-0' handled by integer case
-        return hash(str(self.normalize()))
-
-    def as_tuple(self):
-        """Represents the number as a triple tuple.
-
-        To show the internals exactly as they are.
-        """
-        return (self._sign, self._int, self._exp)
-
-    def __repr__(self):
-        """Represents the number as an instance of Decimal."""
-        # Invariant:  eval(repr(d)) == d
-        return 'Decimal("%s")' % str(self)
-
-    def __str__(self, eng = 0, context=None):
-        """Return string representation of the number in scientific notation.
-
-        Captures all of the information in the underlying representation.
-        """
-
-        if self._is_special:
-            if self._isnan():
-                minus = '-'*self._sign
-                if self._int == (0,):
-                    info = ''
-                else:
-                    info = ''.join(map(str, self._int))
-                if self._isnan() == 2:
-                    return minus + 'sNaN' + info
-                return minus + 'NaN' + info
-            if self._isinfinity():
-                minus = '-'*self._sign
-                return minus + 'Infinity'
-
-        if context is None:
-            context = getcontext()
-
-        tmp = map(str, self._int)
-        numdigits = len(self._int)
-        leftdigits = self._exp + numdigits
-        if eng and not self: #self = 0eX wants 0[.0[0]]eY, not [[0]0]0eY
-            if self._exp < 0 and self._exp >= -6: #short, no need for e/E
-                s = '-'*self._sign + '0.' + '0'*(abs(self._exp))
-                return s
-            #exp is closest mult. of 3 >= self._exp
-            exp = ((self._exp - 1)// 3 + 1) * 3
-            if exp != self._exp:
-                s = '0.'+'0'*(exp - self._exp)
-            else:
-                s = '0'
-            if exp != 0:
-                if context.capitals:
-                    s += 'E'
-                else:
-                    s += 'e'
-                if exp > 0:
-                    s += '+' #0.0e+3, not 0.0e3
-                s += str(exp)
-            s = '-'*self._sign + s
-            return s
-        if eng:
-            dotplace = (leftdigits-1)%3+1
-            adjexp = leftdigits -1 - (leftdigits-1)%3
-        else:
-            adjexp = leftdigits-1
-            dotplace = 1
-        if self._exp == 0:
-            pass
-        elif self._exp < 0 and adjexp >= 0:
-            tmp.insert(leftdigits, '.')
-        elif self._exp < 0 and adjexp >= -6:
-            tmp[0:0] = ['0'] * int(-leftdigits)
-            tmp.insert(0, '0.')
-        else:
-            if numdigits > dotplace:
-                tmp.insert(dotplace, '.')
-            elif numdigits < dotplace:
-                tmp.extend(['0']*(dotplace-numdigits))
-            if adjexp:
-                if not context.capitals:
-                    tmp.append('e')
-                else:
-                    tmp.append('E')
-                    if adjexp > 0:
-                        tmp.append('+')
-                tmp.append(str(adjexp))
-        if eng:
-            while tmp[0:1] == ['0']:
-                tmp[0:1] = []
-            if len(tmp) == 0 or tmp[0] == '.' or tmp[0].lower() == 'e':
-                tmp[0:0] = ['0']
-        if self._sign:
-            tmp.insert(0, '-')
-
-        return ''.join(tmp)
-
-    def to_eng_string(self, context=None):
-        """Convert to engineering-type string.
-
-        Engineering notation has an exponent which is a multiple of 3, so there
-        are up to 3 digits left of the decimal place.
-
-        Same rules for when in exponential and when as a value as in __str__.
-        """
-        return self.__str__(eng=1, context=context)
-
-    def __neg__(self, context=None):
-        """Returns a copy with the sign switched.
-
-        Rounds, if it has reason.
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        if not self:
-            # -Decimal('0') is Decimal('0'), not Decimal('-0')
-            sign = 0
-        elif self._sign:
-            sign = 0
-        else:
-            sign = 1
-
-        if context is None:
-            context = getcontext()
-        if context._rounding_decision == ALWAYS_ROUND:
-            return Decimal((sign, self._int, self._exp))._fix(context)
-        return Decimal( (sign, self._int, self._exp))
-
-    def __pos__(self, context=None):
-        """Returns a copy, unless it is a sNaN.
-
-        Rounds the number (if more then precision digits)
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        sign = self._sign
-        if not self:
-            # + (-0) = 0
-            sign = 0
-
-        if context is None:
-            context = getcontext()
-
-        if context._rounding_decision == ALWAYS_ROUND:
-            ans = self._fix(context)
-        else:
-            ans = Decimal(self)
-        ans._sign = sign
-        return ans
-
-    def __abs__(self, round=1, context=None):
-        """Returns the absolute value of self.
-
-        If the second argument is 0, do not round.
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        if not round:
-            if context is None:
-                context = getcontext()
-            context = context._shallow_copy()
-            context._set_rounding_decision(NEVER_ROUND)
-
-        if self._sign:
-            ans = self.__neg__(context=context)
-        else:
-            ans = self.__pos__(context=context)
-
-        return ans
-
-    def __add__(self, other, context=None):
-        """Returns self + other.
-
-        -INF + INF (or the reverse) cause InvalidOperation errors.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-            if self._isinfinity():
-                #If both INF, same sign => same as both, opposite => error.
-                if self._sign != other._sign and other._isinfinity():
-                    return context._raise_error(InvalidOperation, '-INF + INF')
-                return Decimal(self)
-            if other._isinfinity():
-                return Decimal(other)  #Can't both be infinity here
-
-        shouldround = context._rounding_decision == ALWAYS_ROUND
-
-        exp = min(self._exp, other._exp)
-        negativezero = 0
-        if context.rounding == ROUND_FLOOR and self._sign != other._sign:
-            #If the answer is 0, the sign should be negative, in this case.
-            negativezero = 1
-
-        if not self and not other:
-            sign = min(self._sign, other._sign)
-            if negativezero:
-                sign = 1
-            return Decimal( (sign, (0,), exp))
-        if not self:
-            exp = max(exp, other._exp - context.prec-1)
-            ans = other._rescale(exp, watchexp=0, context=context)
-            if shouldround:
-                ans = ans._fix(context)
-            return ans
-        if not other:
-            exp = max(exp, self._exp - context.prec-1)
-            ans = self._rescale(exp, watchexp=0, context=context)
-            if shouldround:
-                ans = ans._fix(context)
-            return ans
-
-        op1 = _WorkRep(self)
-        op2 = _WorkRep(other)
-        op1, op2 = _normalize(op1, op2, shouldround, context.prec)
-
-        result = _WorkRep()
-        if op1.sign != op2.sign:
-            # Equal and opposite
-            if op1.int == op2.int:
-                if exp < context.Etiny():
-                    exp = context.Etiny()
-                    context._raise_error(Clamped)
-                return Decimal((negativezero, (0,), exp))
-            if op1.int < op2.int:
-                op1, op2 = op2, op1
-                #OK, now abs(op1) > abs(op2)
-            if op1.sign == 1:
-                result.sign = 1
-                op1.sign, op2.sign = op2.sign, op1.sign
-            else:
-                result.sign = 0
-                #So we know the sign, and op1 > 0.
-        elif op1.sign == 1:
-            result.sign = 1
-            op1.sign, op2.sign = (0, 0)
-        else:
-            result.sign = 0
-        #Now, op1 > abs(op2) > 0
-
-        if op2.sign == 0:
-            result.int = op1.int + op2.int
-        else:
-            result.int = op1.int - op2.int
-
-        result.exp = op1.exp
-        ans = Decimal(result)
-        if shouldround:
-            ans = ans._fix(context)
-        return ans
-
-    __radd__ = __add__
-
-    def __sub__(self, other, context=None):
-        """Return self + (-other)"""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context=context)
-            if ans:
-                return ans
-
-        # -Decimal(0) = Decimal(0), which we don't want since
-        # (-0 - 0 = -0 + (-0) = -0, but -0 + 0 = 0.)
-        # so we change the sign directly to a copy
-        tmp = Decimal(other)
-        tmp._sign = 1-tmp._sign
-
-        return self.__add__(tmp, context=context)
-
-    def __rsub__(self, other, context=None):
-        """Return other + (-self)"""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        tmp = Decimal(self)
-        tmp._sign = 1 - tmp._sign
-        return other.__add__(tmp, context=context)
-
-    def _increment(self, round=1, context=None):
-        """Special case of add, adding 1eExponent
-
-        Since it is common, (rounding, for example) this adds
-        (sign)*one E self._exp to the number more efficiently than add.
-
-        For example:
-        Decimal('5.624e10')._increment() == Decimal('5.625e10')
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-            return Decimal(self) # Must be infinite, and incrementing makes no difference
-
-        L = list(self._int)
-        L[-1] += 1
-        spot = len(L)-1
-        while L[spot] == 10:
-            L[spot] = 0
-            if spot == 0:
-                L[0:0] = [1]
-                break
-            L[spot-1] += 1
-            spot -= 1
-        ans = Decimal((self._sign, L, self._exp))
-
-        if context is None:
-            context = getcontext()
-        if round and context._rounding_decision == ALWAYS_ROUND:
-            ans = ans._fix(context)
-        return ans
-
-    def __mul__(self, other, context=None):
-        """Return self * other.
-
-        (+-) INF * 0 (or its reverse) raise InvalidOperation.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        resultsign = self._sign ^ other._sign
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-            if self._isinfinity():
-                if not other:
-                    return context._raise_error(InvalidOperation, '(+-)INF * 0')
-                return Infsign[resultsign]
-
-            if other._isinfinity():
-                if not self:
-                    return context._raise_error(InvalidOperation, '0 * (+-)INF')
-                return Infsign[resultsign]
-
-        resultexp = self._exp + other._exp
-        shouldround = context._rounding_decision == ALWAYS_ROUND
-
-        # Special case for multiplying by zero
-        if not self or not other:
-            ans = Decimal((resultsign, (0,), resultexp))
-            if shouldround:
-                #Fixing in case the exponent is out of bounds
-                ans = ans._fix(context)
-            return ans
-
-        # Special case for multiplying by power of 10
-        if self._int == (1,):
-            ans = Decimal((resultsign, other._int, resultexp))
-            if shouldround:
-                ans = ans._fix(context)
-            return ans
-        if other._int == (1,):
-            ans = Decimal((resultsign, self._int, resultexp))
-            if shouldround:
-                ans = ans._fix(context)
-            return ans
-
-        op1 = _WorkRep(self)
-        op2 = _WorkRep(other)
-
-        ans = Decimal( (resultsign, map(int, str(op1.int * op2.int)), resultexp))
-        if shouldround:
-            ans = ans._fix(context)
-
-        return ans
-    __rmul__ = __mul__
-
-    def __div__(self, other, context=None):
-        """Return self / other."""
-        return self._divide(other, context=context)
-    __truediv__ = __div__
-
-    def _divide(self, other, divmod = 0, context=None):
-        """Return a / b, to context.prec precision.
-
-        divmod:
-        0 => true division
-        1 => (a //b, a%b)
-        2 => a //b
-        3 => a%b
-
-        Actually, if divmod is 2 or 3 a tuple is returned, but errors for
-        computing the other value are not raised.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            if divmod in (0, 1):
-                return NotImplemented
-            return (NotImplemented, NotImplemented)
-
-        if context is None:
-            context = getcontext()
-
-        sign = self._sign ^ other._sign
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                if divmod:
-                    return (ans, ans)
-                return ans
-
-            if self._isinfinity() and other._isinfinity():
-                if divmod:
-                    return (context._raise_error(InvalidOperation,
-                                            '(+-)INF // (+-)INF'),
-                            context._raise_error(InvalidOperation,
-                                            '(+-)INF % (+-)INF'))
-                return context._raise_error(InvalidOperation, '(+-)INF/(+-)INF')
-
-            if self._isinfinity():
-                if divmod == 1:
-                    return (Infsign[sign],
-                            context._raise_error(InvalidOperation, 'INF % x'))
-                elif divmod == 2:
-                    return (Infsign[sign], NaN)
-                elif divmod == 3:
-                    return (Infsign[sign],
-                            context._raise_error(InvalidOperation, 'INF % x'))
-                return Infsign[sign]
-
-            if other._isinfinity():
-                if divmod:
-                    return (Decimal((sign, (0,), 0)), Decimal(self))
-                context._raise_error(Clamped, 'Division by infinity')
-                return Decimal((sign, (0,), context.Etiny()))
-
-        # Special cases for zeroes
-        if not self and not other:
-            if divmod:
-                return context._raise_error(DivisionUndefined, '0 / 0', 1)
-            return context._raise_error(DivisionUndefined, '0 / 0')
-
-        if not self:
-            if divmod:
-                otherside = Decimal(self)
-                otherside._exp = min(self._exp, other._exp)
-                return (Decimal((sign, (0,), 0)),  otherside)
-            exp = self._exp - other._exp
-            if exp < context.Etiny():
-                exp = context.Etiny()
-                context._raise_error(Clamped, '0e-x / y')
-            if exp > context.Emax:
-                exp = context.Emax
-                context._raise_error(Clamped, '0e+x / y')
-            return Decimal( (sign, (0,), exp) )
-
-        if not other:
-            if divmod:
-                return context._raise_error(DivisionByZero, 'divmod(x,0)',
-                                           sign, 1)
-            return context._raise_error(DivisionByZero, 'x / 0', sign)
-
-        #OK, so neither = 0, INF or NaN
-
-        shouldround = context._rounding_decision == ALWAYS_ROUND
-
-        #If we're dividing into ints, and self < other, stop.
-        #self.__abs__(0) does not round.
-        if divmod and (self.__abs__(0, context) < other.__abs__(0, context)):
-
-            if divmod == 1 or divmod == 3:
-                exp = min(self._exp, other._exp)
-                ans2 = self._rescale(exp, context=context, watchexp=0)
-                if shouldround:
-                    ans2 = ans2._fix(context)
-                return (Decimal( (sign, (0,), 0) ),
-                        ans2)
-
-            elif divmod == 2:
-                #Don't round the mod part, if we don't need it.
-                return (Decimal( (sign, (0,), 0) ), Decimal(self))
-
-        op1 = _WorkRep(self)
-        op2 = _WorkRep(other)
-        op1, op2, adjust = _adjust_coefficients(op1, op2)
-        res = _WorkRep( (sign, 0, (op1.exp - op2.exp)) )
-        if divmod and res.exp > context.prec + 1:
-            return context._raise_error(DivisionImpossible)
-
-        prec_limit = 10 ** context.prec
-        while 1:
-            while op2.int <= op1.int:
-                res.int += 1
-                op1.int -= op2.int
-            if res.exp == 0 and divmod:
-                if res.int >= prec_limit and shouldround:
-                    return context._raise_error(DivisionImpossible)
-                otherside = Decimal(op1)
-                frozen = context._ignore_all_flags()
-
-                exp = min(self._exp, other._exp)
-                otherside = otherside._rescale(exp, context=context, watchexp=0)
-                context._regard_flags(*frozen)
-                if shouldround:
-                    otherside = otherside._fix(context)
-                return (Decimal(res), otherside)
-
-            if op1.int == 0 and adjust >= 0 and not divmod:
-                break
-            if res.int >= prec_limit and shouldround:
-                if divmod:
-                    return context._raise_error(DivisionImpossible)
-                shouldround=1
-                # Really, the answer is a bit higher, so adding a one to
-                # the end will make sure the rounding is right.
-                if op1.int != 0:
-                    res.int *= 10
-                    res.int += 1
-                    res.exp -= 1
-
-                break
-            res.int *= 10
-            res.exp -= 1
-            adjust += 1
-            op1.int *= 10
-            op1.exp -= 1
-
-            if res.exp == 0 and divmod and op2.int > op1.int:
-                #Solves an error in precision.  Same as a previous block.
-
-                if res.int >= prec_limit and shouldround:
-                    return context._raise_error(DivisionImpossible)
-                otherside = Decimal(op1)
-                frozen = context._ignore_all_flags()
-
-                exp = min(self._exp, other._exp)
-                otherside = otherside._rescale(exp, context=context)
-
-                context._regard_flags(*frozen)
-
-                return (Decimal(res), otherside)
-
-        ans = Decimal(res)
-        if shouldround:
-            ans = ans._fix(context)
-        return ans
-
-    def __rdiv__(self, other, context=None):
-        """Swaps self/other and returns __div__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__div__(self, context=context)
-    __rtruediv__ = __rdiv__
-
-    def __divmod__(self, other, context=None):
-        """
-        (self // other, self % other)
-        """
-        return self._divide(other, 1, context)
-
-    def __rdivmod__(self, other, context=None):
-        """Swaps self/other and returns __divmod__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__divmod__(self, context=context)
-
-    def __mod__(self, other, context=None):
-        """
-        self % other
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-        if self and not other:
-            return context._raise_error(InvalidOperation, 'x % 0')
-
-        return self._divide(other, 3, context)[1]
-
-    def __rmod__(self, other, context=None):
-        """Swaps self/other and returns __mod__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__mod__(self, context=context)
-
-    def remainder_near(self, other, context=None):
-        """
-        Remainder nearest to 0-  abs(remainder-near) <= other/2
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-        if self and not other:
-            return context._raise_error(InvalidOperation, 'x % 0')
-
-        if context is None:
-            context = getcontext()
-        # If DivisionImpossible causes an error, do not leave Rounded/Inexact
-        # ignored in the calling function.
-        context = context._shallow_copy()
-        flags = context._ignore_flags(Rounded, Inexact)
-        #keep DivisionImpossible flags
-        (side, r) = self.__divmod__(other, context=context)
-
-        if r._isnan():
-            context._regard_flags(*flags)
-            return r
-
-        context = context._shallow_copy()
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-
-        if other._sign:
-            comparison = other.__div__(Decimal(-2), context=context)
-        else:
-            comparison = other.__div__(Decimal(2), context=context)
-
-        context._set_rounding_decision(rounding)
-        context._regard_flags(*flags)
-
-        s1, s2 = r._sign, comparison._sign
-        r._sign, comparison._sign = 0, 0
-
-        if r < comparison:
-            r._sign, comparison._sign = s1, s2
-            #Get flags now
-            self.__divmod__(other, context=context)
-            return r._fix(context)
-        r._sign, comparison._sign = s1, s2
-
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-
-        (side, r) = self.__divmod__(other, context=context)
-        context._set_rounding_decision(rounding)
-        if r._isnan():
-            return r
-
-        decrease = not side._iseven()
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-        side = side.__abs__(context=context)
-        context._set_rounding_decision(rounding)
-
-        s1, s2 = r._sign, comparison._sign
-        r._sign, comparison._sign = 0, 0
-        if r > comparison or decrease and r == comparison:
-            r._sign, comparison._sign = s1, s2
-            context.prec += 1
-            if len(side.__add__(Decimal(1), context=context)._int) >= context.prec:
-                context.prec -= 1
-                return context._raise_error(DivisionImpossible)[1]
-            context.prec -= 1
-            if self._sign == other._sign:
-                r = r.__sub__(other, context=context)
-            else:
-                r = r.__add__(other, context=context)
-        else:
-            r._sign, comparison._sign = s1, s2
-
-        return r._fix(context)
-
-    def __floordiv__(self, other, context=None):
-        """self // other"""
-        return self._divide(other, 2, context)[0]
-
-    def __rfloordiv__(self, other, context=None):
-        """Swaps self/other and returns __floordiv__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__floordiv__(self, context=context)
-
-    def __float__(self):
-        """Float representation."""
-        return float(str(self))
-
-    def __int__(self):
-        """Converts self to an int, truncating if necessary."""
-        if self._is_special:
-            if self._isnan():
-                context = getcontext()
-                return context._raise_error(InvalidContext)
-            elif self._isinfinity():
-                raise OverflowError, "Cannot convert infinity to long"
-        if self._exp >= 0:
-            s = ''.join(map(str, self._int)) + '0'*self._exp
-        else:
-            s = ''.join(map(str, self._int))[:self._exp]
-        if s == '':
-            s = '0'
-        sign = '-'*self._sign
-        return int(sign + s)
-
-    def __long__(self):
-        """Converts to a long.
-
-        Equivalent to long(int(self))
-        """
-        return long(self.__int__())
-
-    def _fix(self, context):
-        """Round if it is necessary to keep self within prec precision.
-
-        Rounds and fixes the exponent.  Does not raise on a sNaN.
-
-        Arguments:
-        self - Decimal instance
-        context - context used.
-        """
-        if self._is_special:
-            return self
-        if context is None:
-            context = getcontext()
-        prec = context.prec
-        ans = self._fixexponents(context)
-        if len(ans._int) > prec:
-            ans = ans._round(prec, context=context)
-            ans = ans._fixexponents(context)
-        return ans
-
-    def _fixexponents(self, context):
-        """Fix the exponents and return a copy with the exponent in bounds.
-        Only call if known to not be a special value.
-        """
-        folddown = context._clamp
-        Emin = context.Emin
-        ans = self
-        ans_adjusted = ans.adjusted()
-        if ans_adjusted < Emin:
-            Etiny = context.Etiny()
-            if ans._exp < Etiny:
-                if not ans:
-                    ans = Decimal(self)
-                    ans._exp = Etiny
-                    context._raise_error(Clamped)
-                    return ans
-                ans = ans._rescale(Etiny, context=context)
-                #It isn't zero, and exp < Emin => subnormal
-                context._raise_error(Subnormal)
-                if context.flags[Inexact]:
-                    context._raise_error(Underflow)
-            else:
-                if ans:
-                    #Only raise subnormal if non-zero.
-                    context._raise_error(Subnormal)
-        else:
-            Etop = context.Etop()
-            if folddown and ans._exp > Etop:
-                context._raise_error(Clamped)
-                ans = ans._rescale(Etop, context=context)
-            else:
-                Emax = context.Emax
-                if ans_adjusted > Emax:
-                    if not ans:
-                        ans = Decimal(self)
-                        ans._exp = Emax
-                        context._raise_error(Clamped)
-                        return ans
-                    context._raise_error(Inexact)
-                    context._raise_error(Rounded)
-                    return context._raise_error(Overflow, 'above Emax', ans._sign)
-        return ans
-
-    def _round(self, prec=None, rounding=None, context=None):
-        """Returns a rounded version of self.
-
-        You can specify the precision or rounding method.  Otherwise, the
-        context determines it.
-        """
-
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-            if self._isinfinity():
-                return Decimal(self)
-
-        if context is None:
-            context = getcontext()
-
-        if rounding is None:
-            rounding = context.rounding
-        if prec is None:
-            prec = context.prec
-
-        if not self:
-            if prec <= 0:
-                dig = (0,)
-                exp = len(self._int) - prec + self._exp
-            else:
-                dig = (0,) * prec
-                exp = len(self._int) + self._exp - prec
-            ans = Decimal((self._sign, dig, exp))
-            context._raise_error(Rounded)
-            return ans
-
-        if prec == 0:
-            temp = Decimal(self)
-            temp._int = (0,)+temp._int
-            prec = 1
-        elif prec < 0:
-            exp = self._exp + len(self._int) - prec - 1
-            temp = Decimal( (self._sign, (0, 1), exp))
-            prec = 1
-        else:
-            temp = Decimal(self)
-
-        numdigits = len(temp._int)
-        if prec == numdigits:
-            return temp
-
-        # See if we need to extend precision
-        expdiff = prec - numdigits
-        if expdiff > 0:
-            tmp = list(temp._int)
-            tmp.extend([0] * expdiff)
-            ans =  Decimal( (temp._sign, tmp, temp._exp - expdiff))
-            return ans
-
-        #OK, but maybe all the lost digits are 0.
-        lostdigits = self._int[expdiff:]
-        if lostdigits == (0,) * len(lostdigits):
-            ans = Decimal( (temp._sign, temp._int[:prec], temp._exp - expdiff))
-            #Rounded, but not Inexact
-            context._raise_error(Rounded)
-            return ans
-
-        # Okay, let's round and lose data
-
-        this_function = getattr(temp, self._pick_rounding_function[rounding])
-        #Now we've got the rounding function
-
-        if prec != context.prec:
-            context = context._shallow_copy()
-            context.prec = prec
-        ans = this_function(prec, expdiff, context)
-        context._raise_error(Rounded)
-        context._raise_error(Inexact, 'Changed in rounding')
-
-        return ans
-
-    _pick_rounding_function = {}
-
-    def _round_down(self, prec, expdiff, context):
-        """Also known as round-towards-0, truncate."""
-        return Decimal( (self._sign, self._int[:prec], self._exp - expdiff) )
-
-    def _round_half_up(self, prec, expdiff, context, tmp = None):
-        """Rounds 5 up (away from 0)"""
-
-        if tmp is None:
-            tmp = Decimal( (self._sign,self._int[:prec], self._exp - expdiff))
-        if self._int[prec] >= 5:
-            tmp = tmp._increment(round=0, context=context)
-            if len(tmp._int) > prec:
-                return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1))
-        return tmp
-
-    def _round_half_even(self, prec, expdiff, context):
-        """Round 5 to even, rest to nearest."""
-
-        tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff))
-        half = (self._int[prec] == 5)
-        if half:
-            for digit in self._int[prec+1:]:
-                if digit != 0:
-                    half = 0
-                    break
-        if half:
-            if self._int[prec-1] & 1 == 0:
-                return tmp
-        return self._round_half_up(prec, expdiff, context, tmp)
-
-    def _round_half_down(self, prec, expdiff, context):
-        """Round 5 down"""
-
-        tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff))
-        half = (self._int[prec] == 5)
-        if half:
-            for digit in self._int[prec+1:]:
-                if digit != 0:
-                    half = 0
-                    break
-        if half:
-            return tmp
-        return self._round_half_up(prec, expdiff, context, tmp)
-
-    def _round_up(self, prec, expdiff, context):
-        """Rounds away from 0."""
-        tmp = Decimal( (self._sign, self._int[:prec], self._exp - expdiff) )
-        for digit in self._int[prec:]:
-            if digit != 0:
-                tmp = tmp._increment(round=1, context=context)
-                if len(tmp._int) > prec:
-                    return Decimal( (tmp._sign, tmp._int[:-1], tmp._exp + 1))
-                else:
-                    return tmp
-        return tmp
-
-    def _round_ceiling(self, prec, expdiff, context):
-        """Rounds up (not away from 0 if negative.)"""
-        if self._sign:
-            return self._round_down(prec, expdiff, context)
-        else:
-            return self._round_up(prec, expdiff, context)
-
-    def _round_floor(self, prec, expdiff, context):
-        """Rounds down (not towards 0 if negative)"""
-        if not self._sign:
-            return self._round_down(prec, expdiff, context)
-        else:
-            return self._round_up(prec, expdiff, context)
-
-    def __pow__(self, n, modulo = None, context=None):
-        """Return self ** n (mod modulo)
-
-        If modulo is None (default), don't take it mod modulo.
-        """
-        n = _convert_other(n)
-        if n is NotImplemented:
-            return n
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or n._is_special or n.adjusted() > 8:
-            #Because the spot << doesn't work with really big exponents
-            if n._isinfinity() or n.adjusted() > 8:
-                return context._raise_error(InvalidOperation, 'x ** INF')
-
-            ans = self._check_nans(n, context)
-            if ans:
-                return ans
-
-        if not n._isinteger():
-            return context._raise_error(InvalidOperation, 'x ** (non-integer)')
-
-        if not self and not n:
-            return context._raise_error(InvalidOperation, '0 ** 0')
-
-        if not n:
-            return Decimal(1)
-
-        if self == Decimal(1):
-            return Decimal(1)
-
-        sign = self._sign and not n._iseven()
-        n = int(n)
-
-        if self._isinfinity():
-            if modulo:
-                return context._raise_error(InvalidOperation, 'INF % x')
-            if n > 0:
-                return Infsign[sign]
-            return Decimal( (sign, (0,), 0) )
-
-        #with ludicrously large exponent, just raise an overflow and return inf.
-        if not modulo and n > 0 and (self._exp + len(self._int) - 1) * n > context.Emax \
-           and self:
-
-            tmp = Decimal('inf')
-            tmp._sign = sign
-            context._raise_error(Rounded)
-            context._raise_error(Inexact)
-            context._raise_error(Overflow, 'Big power', sign)
-            return tmp
-
-        elength = len(str(abs(n)))
-        firstprec = context.prec
-
-        if not modulo and firstprec + elength + 1 > DefaultContext.Emax:
-            return context._raise_error(Overflow, 'Too much precision.', sign)
-
-        mul = Decimal(self)
-        val = Decimal(1)
-        context = context._shallow_copy()
-        context.prec = firstprec + elength + 1
-        if n < 0:
-            #n is a long now, not Decimal instance
-            n = -n
-            mul = Decimal(1).__div__(mul, context=context)
-
-        spot = 1
-        while spot <= n:
-            spot <<= 1
-
-        spot >>= 1
-        #Spot is the highest power of 2 less than n
-        while spot:
-            val = val.__mul__(val, context=context)
-            if val._isinfinity():
-                val = Infsign[sign]
-                break
-            if spot & n:
-                val = val.__mul__(mul, context=context)
-            if modulo is not None:
-                val = val.__mod__(modulo, context=context)
-            spot >>= 1
-        context.prec = firstprec
-
-        if context._rounding_decision == ALWAYS_ROUND:
-            return val._fix(context)
-        return val
-
-    def __rpow__(self, other, context=None):
-        """Swaps self/other and returns __pow__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__pow__(self, context=context)
-
-    def normalize(self, context=None):
-        """Normalize- strip trailing 0s, change anything equal to 0 to 0e0"""
-
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        dup = self._fix(context)
-        if dup._isinfinity():
-            return dup
-
-        if not dup:
-            return Decimal( (dup._sign, (0,), 0) )
-        end = len(dup._int)
-        exp = dup._exp
-        while dup._int[end-1] == 0:
-            exp += 1
-            end -= 1
-        return Decimal( (dup._sign, dup._int[:end], exp) )
-
-
-    def quantize(self, exp, rounding=None, context=None, watchexp=1):
-        """Quantize self so its exponent is the same as that of exp.
-
-        Similar to self._rescale(exp._exp) but with error checking.
-        """
-        if self._is_special or exp._is_special:
-            ans = self._check_nans(exp, context)
-            if ans:
-                return ans
-
-            if exp._isinfinity() or self._isinfinity():
-                if exp._isinfinity() and self._isinfinity():
-                    return self  #if both are inf, it is OK
-                if context is None:
-                    context = getcontext()
-                return context._raise_error(InvalidOperation,
-                                        'quantize with one INF')
-        return self._rescale(exp._exp, rounding, context, watchexp)
-
-    def same_quantum(self, other):
-        """Test whether self and other have the same exponent.
-
-        same as self._exp == other._exp, except NaN == sNaN
-        """
-        if self._is_special or other._is_special:
-            if self._isnan() or other._isnan():
-                return self._isnan() and other._isnan() and True
-            if self._isinfinity() or other._isinfinity():
-                return self._isinfinity() and other._isinfinity() and True
-        return self._exp == other._exp
-
-    def _rescale(self, exp, rounding=None, context=None, watchexp=1):
-        """Rescales so that the exponent is exp.
-
-        exp = exp to scale to (an integer)
-        rounding = rounding version
-        watchexp: if set (default) an error is returned if exp is greater
-        than Emax or less than Etiny.
-        """
-        if context is None:
-            context = getcontext()
-
-        if self._is_special:
-            if self._isinfinity():
-                return context._raise_error(InvalidOperation, 'rescale with an INF')
-
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        if watchexp and (context.Emax  < exp or context.Etiny() > exp):
-            return context._raise_error(InvalidOperation, 'rescale(a, INF)')
-
-        if not self:
-            ans = Decimal(self)
-            ans._int = (0,)
-            ans._exp = exp
-            return ans
-
-        diff = self._exp - exp
-        digits = len(self._int) + diff
-
-        if watchexp and digits > context.prec:
-            return context._raise_error(InvalidOperation, 'Rescale > prec')
-
-        tmp = Decimal(self)
-        tmp._int = (0,) + tmp._int
-        digits += 1
-
-        if digits < 0:
-            tmp._exp = -digits + tmp._exp
-            tmp._int = (0,1)
-            digits = 1
-        tmp = tmp._round(digits, rounding, context=context)
-
-        if tmp._int[0] == 0 and len(tmp._int) > 1:
-            tmp._int = tmp._int[1:]
-        tmp._exp = exp
-
-        tmp_adjusted = tmp.adjusted()
-        if tmp and tmp_adjusted < context.Emin:
-            context._raise_error(Subnormal)
-        elif tmp and tmp_adjusted > context.Emax:
-            return context._raise_error(InvalidOperation, 'rescale(a, INF)')
-        return tmp
-
-    def to_integral(self, rounding=None, context=None):
-        """Rounds to the nearest integer, without raising inexact, rounded."""
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-        if self._exp >= 0:
-            return self
-        if context is None:
-            context = getcontext()
-        flags = context._ignore_flags(Rounded, Inexact)
-        ans = self._rescale(0, rounding, context=context)
-        context._regard_flags(flags)
-        return ans
-
-    def sqrt(self, context=None):
-        """Return the square root of self.
-
-        Uses a converging algorithm (Xn+1 = 0.5*(Xn + self / Xn))
-        Should quadratically approach the right answer.
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-            if self._isinfinity() and self._sign == 0:
-                return Decimal(self)
-
-        if not self:
-            #exponent = self._exp / 2, using round_down.
-            #if self._exp < 0:
-            #    exp = (self._exp+1) // 2
-            #else:
-            exp = (self._exp) // 2
-            if self._sign == 1:
-                #sqrt(-0) = -0
-                return Decimal( (1, (0,), exp))
-            else:
-                return Decimal( (0, (0,), exp))
-
-        if context is None:
-            context = getcontext()
-
-        if self._sign == 1:
-            return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0')
-
-        tmp = Decimal(self)
-
-        expadd = tmp._exp // 2
-        if tmp._exp & 1:
-            tmp._int += (0,)
-            tmp._exp = 0
-        else:
-            tmp._exp = 0
-
-        context = context._shallow_copy()
-        flags = context._ignore_all_flags()
-        firstprec = context.prec
-        context.prec = 3
-        if tmp.adjusted() & 1 == 0:
-            ans = Decimal( (0, (8,1,9), tmp.adjusted()  - 2) )
-            ans = ans.__add__(tmp.__mul__(Decimal((0, (2,5,9), -2)),
-                                          context=context), context=context)
-            ans._exp -= 1 + tmp.adjusted() // 2
-        else:
-            ans = Decimal( (0, (2,5,9), tmp._exp + len(tmp._int)- 3) )
-            ans = ans.__add__(tmp.__mul__(Decimal((0, (8,1,9), -3)),
-                                          context=context), context=context)
-            ans._exp -= 1 + tmp.adjusted()  // 2
-
-        #ans is now a linear approximation.
-
-        Emax, Emin = context.Emax, context.Emin
-        context.Emax, context.Emin = DefaultContext.Emax, DefaultContext.Emin
-
-        half = Decimal('0.5')
-
-        maxp = firstprec + 2
-        rounding = context._set_rounding(ROUND_HALF_EVEN)
-        while 1:
-            context.prec = min(2*context.prec - 2, maxp)
-            ans = half.__mul__(ans.__add__(tmp.__div__(ans, context=context),
-                                           context=context), context=context)
-            if context.prec == maxp:
-                break
-
-        #round to the answer's precision-- the only error can be 1 ulp.
-        context.prec = firstprec
-        prevexp = ans.adjusted()
-        ans = ans._round(context=context)
-
-        #Now, check if the other last digits are better.
-        context.prec = firstprec + 1
-        # In case we rounded up another digit and we should actually go lower.
-        if prevexp != ans.adjusted():
-            ans._int += (0,)
-            ans._exp -= 1
-
-
-        lower = ans.__sub__(Decimal((0, (5,), ans._exp-1)), context=context)
-        context._set_rounding(ROUND_UP)
-        if lower.__mul__(lower, context=context) > (tmp):
-            ans = ans.__sub__(Decimal((0, (1,), ans._exp)), context=context)
-
-        else:
-            upper = ans.__add__(Decimal((0, (5,), ans._exp-1)),context=context)
-            context._set_rounding(ROUND_DOWN)
-            if upper.__mul__(upper, context=context) < tmp:
-                ans = ans.__add__(Decimal((0, (1,), ans._exp)),context=context)
-
-        ans._exp += expadd
-
-        context.prec = firstprec
-        context.rounding = rounding
-        ans = ans._fix(context)
-
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-        if not ans.__mul__(ans, context=context) == self:
-            # Only rounded/inexact if here.
-            context._regard_flags(flags)
-            context._raise_error(Rounded)
-            context._raise_error(Inexact)
-        else:
-            #Exact answer, so let's set the exponent right.
-            #if self._exp < 0:
-            #    exp = (self._exp +1)// 2
-            #else:
-            exp = self._exp // 2
-            context.prec += ans._exp - exp
-            ans = ans._rescale(exp, context=context)
-            context.prec = firstprec
-            context._regard_flags(flags)
-        context.Emax, context.Emin = Emax, Emin
-
-        return ans._fix(context)
-
-    def max(self, other, context=None):
-        """Returns the larger value.
-
-        like max(self, other) except if one is not a number, returns
-        NaN (and signals if one is sNaN).  Also rounds.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if self._is_special or other._is_special:
-            # if one operand is a quiet NaN and the other is number, then the
-            # number is always returned
-            sn = self._isnan()
-            on = other._isnan()
-            if sn or on:
-                if on == 1 and sn != 2:
-                    return self
-                if sn == 1 and on != 2:
-                    return other
-                return self._check_nans(other, context)
-
-        ans = self
-        c = self.__cmp__(other)
-        if c == 0:
-            # if both operands are finite and equal in numerical value
-            # then an ordering is applied:
-            #
-            # if the signs differ then max returns the operand with the
-            # positive sign and min returns the operand with the negative sign
-            #
-            # if the signs are the same then the exponent is used to select
-            # the result.
-            if self._sign != other._sign:
-                if self._sign:
-                    ans = other
-            elif self._exp < other._exp and not self._sign:
-                ans = other
-            elif self._exp > other._exp and self._sign:
-                ans = other
-        elif c == -1:
-            ans = other
-
-        if context is None:
-            context = getcontext()
-        if context._rounding_decision == ALWAYS_ROUND:
-            return ans._fix(context)
-        return ans
-
-    def min(self, other, context=None):
-        """Returns the smaller value.
-
-        like min(self, other) except if one is not a number, returns
-        NaN (and signals if one is sNaN).  Also rounds.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if self._is_special or other._is_special:
-            # if one operand is a quiet NaN and the other is number, then the
-            # number is always returned
-            sn = self._isnan()
-            on = other._isnan()
-            if sn or on:
-                if on == 1 and sn != 2:
-                    return self
-                if sn == 1 and on != 2:
-                    return other
-                return self._check_nans(other, context)
-
-        ans = self
-        c = self.__cmp__(other)
-        if c == 0:
-            # if both operands are finite and equal in numerical value
-            # then an ordering is applied:
-            #
-            # if the signs differ then max returns the operand with the
-            # positive sign and min returns the operand with the negative sign
-            #
-            # if the signs are the same then the exponent is used to select
-            # the result.
-            if self._sign != other._sign:
-                if other._sign:
-                    ans = other
-            elif self._exp > other._exp and not self._sign:
-                ans = other
-            elif self._exp < other._exp and self._sign:
-                ans = other
-        elif c == 1:
-            ans = other
-
-        if context is None:
-            context = getcontext()
-        if context._rounding_decision == ALWAYS_ROUND:
-            return ans._fix(context)
-        return ans
-
-    def _isinteger(self):
-        """Returns whether self is an integer"""
-        if self._exp >= 0:
-            return True
-        rest = self._int[self._exp:]
-        return rest == (0,)*len(rest)
-
-    def _iseven(self):
-        """Returns 1 if self is even.  Assumes self is an integer."""
-        if self._exp > 0:
-            return 1
-        return self._int[-1+self._exp] & 1 == 0
-
-    def adjusted(self):
-        """Return the adjusted exponent of self"""
-        try:
-            return self._exp + len(self._int) - 1
-        #If NaN or Infinity, self._exp is string
-        except TypeError:
-            return 0
-
-    # support for pickling, copy, and deepcopy
-    def __reduce__(self):
-        return (self.__class__, (str(self),))
-
-    def __copy__(self):
-        if type(self) == Decimal:
-            return self     # I'm immutable; therefore I am my own clone
-        return self.__class__(str(self))
-
-    def __deepcopy__(self, memo):
-        if type(self) == Decimal:
-            return self     # My components are also immutable
-        return self.__class__(str(self))
-
-##### Context class ###########################################
-
-
-# get rounding method function:
-rounding_functions = [name for name in Decimal.__dict__.keys() if name.startswith('_round_')]
-for name in rounding_functions:
-    #name is like _round_half_even, goes to the global ROUND_HALF_EVEN value.
-    globalname = name[1:].upper()
-    val = globals()[globalname]
-    Decimal._pick_rounding_function[val] = name
-
-del name, val, globalname, rounding_functions
-
-class Context(object):
-    """Contains the context for a Decimal instance.
-
-    Contains:
-    prec - precision (for use in rounding, division, square roots..)
-    rounding - rounding type. (how you round)
-    _rounding_decision - ALWAYS_ROUND, NEVER_ROUND -- do you round?
-    traps - If traps[exception] = 1, then the exception is
-                    raised when it is caused.  Otherwise, a value is
-                    substituted in.
-    flags  - When an exception is caused, flags[exception] is incremented.
-             (Whether or not the trap_enabler is set)
-             Should be reset by user of Decimal instance.
-    Emin -   Minimum exponent
-    Emax -   Maximum exponent
-    capitals -      If 1, 1*10^1 is printed as 1E+1.
-                    If 0, printed as 1e1
-    _clamp - If 1, change exponents if too high (Default 0)
-    """
-
-    def __init__(self, prec=None, rounding=None,
-                 traps=None, flags=None,
-                 _rounding_decision=None,
-                 Emin=None, Emax=None,
-                 capitals=None, _clamp=0,
-                 _ignored_flags=None):
-        if flags is None:
-            flags = []
-        if _ignored_flags is None:
-            _ignored_flags = []
-        if not isinstance(flags, dict):
-            flags = dict([(s,s in flags) for s in _signals])
-            del s
-        if traps is not None and not isinstance(traps, dict):
-            traps = dict([(s,s in traps) for s in _signals])
-            del s
-        for name, val in locals().items():
-            if val is None:
-                setattr(self, name, _copy.copy(getattr(DefaultContext, name)))
-            else:
-                setattr(self, name, val)
-        del self.self
-
-    def __repr__(self):
-        """Show the current context."""
-        s = []
-        s.append('Context(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d' % vars(self))
-        s.append('flags=[' + ', '.join([f.__name__ for f, v in self.flags.items() if v]) + ']')
-        s.append('traps=[' + ', '.join([t.__name__ for t, v in self.traps.items() if v]) + ']')
-        return ', '.join(s) + ')'
-
-    def clear_flags(self):
-        """Reset all flags to zero"""
-        for flag in self.flags:
-            self.flags[flag] = 0
-
-    def _shallow_copy(self):
-        """Returns a shallow copy from self."""
-        nc = Context(self.prec, self.rounding, self.traps, self.flags,
-                         self._rounding_decision, self.Emin, self.Emax,
-                         self.capitals, self._clamp, self._ignored_flags)
-        return nc
-
-    def copy(self):
-        """Returns a deep copy from self."""
-        nc = Context(self.prec, self.rounding, self.traps.copy(), self.flags.copy(),
-                         self._rounding_decision, self.Emin, self.Emax,
-                         self.capitals, self._clamp, self._ignored_flags)
-        return nc
-    __copy__ = copy
-
-    def _raise_error(self, condition, explanation = None, *args):
-        """Handles an error
-
-        If the flag is in _ignored_flags, returns the default response.
-        Otherwise, it increments the flag, then, if the corresponding
-        trap_enabler is set, it reaises the exception.  Otherwise, it returns
-        the default value after incrementing the flag.
-        """
-        error = _condition_map.get(condition, condition)
-        if error in self._ignored_flags:
-            #Don't touch the flag
-            return error().handle(self, *args)
-
-        self.flags[error] += 1
-        if not self.traps[error]:
-            #The errors define how to handle themselves.
-            return condition().handle(self, *args)
-
-        # Errors should only be risked on copies of the context
-        #self._ignored_flags = []
-        raise error, explanation
-
-    def _ignore_all_flags(self):
-        """Ignore all flags, if they are raised"""
-        return self._ignore_flags(*_signals)
-
-    def _ignore_flags(self, *flags):
-        """Ignore the flags, if they are raised"""
-        # Do not mutate-- This way, copies of a context leave the original
-        # alone.
-        self._ignored_flags = (self._ignored_flags + list(flags))
-        return list(flags)
-
-    def _regard_flags(self, *flags):
-        """Stop ignoring the flags, if they are raised"""
-        if flags and isinstance(flags[0], (tuple,list)):
-            flags = flags[0]
-        for flag in flags:
-            self._ignored_flags.remove(flag)
-
-    def __hash__(self):
-        """A Context cannot be hashed."""
-        # We inherit object.__hash__, so we must deny this explicitly
-        raise TypeError, "Cannot hash a Context."
-
-    def Etiny(self):
-        """Returns Etiny (= Emin - prec + 1)"""
-        return int(self.Emin - self.prec + 1)
-
-    def Etop(self):
-        """Returns maximum exponent (= Emax - prec + 1)"""
-        return int(self.Emax - self.prec + 1)
-
-    def _set_rounding_decision(self, type):
-        """Sets the rounding decision.
-
-        Sets the rounding decision, and returns the current (previous)
-        rounding decision.  Often used like:
-
-        context = context._shallow_copy()
-        # That so you don't change the calling context
-        # if an error occurs in the middle (say DivisionImpossible is raised).
-
-        rounding = context._set_rounding_decision(NEVER_ROUND)
-        instance = instance / Decimal(2)
-        context._set_rounding_decision(rounding)
-
-        This will make it not round for that operation.
-        """
-
-        rounding = self._rounding_decision
-        self._rounding_decision = type
-        return rounding
-
-    def _set_rounding(self, type):
-        """Sets the rounding type.
-
-        Sets the rounding type, and returns the current (previous)
-        rounding type.  Often used like:
-
-        context = context.copy()
-        # so you don't change the calling context
-        # if an error occurs in the middle.
-        rounding = context._set_rounding(ROUND_UP)
-        val = self.__sub__(other, context=context)
-        context._set_rounding(rounding)
-
-        This will make it round up for that operation.
-        """
-        rounding = self.rounding
-        self.rounding= type
-        return rounding
-
-    def create_decimal(self, num='0'):
-        """Creates a new Decimal instance but using self as context."""
-        d = Decimal(num, context=self)
-        return d._fix(self)
-
-    #Methods
-    def abs(self, a):
-        """Returns the absolute value of the operand.
-
-        If the operand is negative, the result is the same as using the minus
-        operation on the operand. Otherwise, the result is the same as using
-        the plus operation on the operand.
-
-        >>> ExtendedContext.abs(Decimal('2.1'))
-        Decimal("2.1")
-        >>> ExtendedContext.abs(Decimal('-100'))
-        Decimal("100")
-        >>> ExtendedContext.abs(Decimal('101.5'))
-        Decimal("101.5")
-        >>> ExtendedContext.abs(Decimal('-101.5'))
-        Decimal("101.5")
-        """
-        return a.__abs__(context=self)
-
-    def add(self, a, b):
-        """Return the sum of the two operands.
-
-        >>> ExtendedContext.add(Decimal('12'), Decimal('7.00'))
-        Decimal("19.00")
-        >>> ExtendedContext.add(Decimal('1E+2'), Decimal('1.01E+4'))
-        Decimal("1.02E+4")
-        """
-        return a.__add__(b, context=self)
-
-    def _apply(self, a):
-        return str(a._fix(self))
-
-    def compare(self, a, b):
-        """Compares values numerically.
-
-        If the signs of the operands differ, a value representing each operand
-        ('-1' if the operand is less than zero, '0' if the operand is zero or
-        negative zero, or '1' if the operand is greater than zero) is used in
-        place of that operand for the comparison instead of the actual
-        operand.
-
-        The comparison is then effected by subtracting the second operand from
-        the first and then returning a value according to the result of the
-        subtraction: '-1' if the result is less than zero, '0' if the result is
-        zero or negative zero, or '1' if the result is greater than zero.
-
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('3'))
-        Decimal("-1")
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('2.1'))
-        Decimal("0")
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('2.10'))
-        Decimal("0")
-        >>> ExtendedContext.compare(Decimal('3'), Decimal('2.1'))
-        Decimal("1")
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('-3'))
-        Decimal("1")
-        >>> ExtendedContext.compare(Decimal('-3'), Decimal('2.1'))
-        Decimal("-1")
-        """
-        return a.compare(b, context=self)
-
-    def divide(self, a, b):
-        """Decimal division in a specified context.
-
-        >>> ExtendedContext.divide(Decimal('1'), Decimal('3'))
-        Decimal("0.333333333")
-        >>> ExtendedContext.divide(Decimal('2'), Decimal('3'))
-        Decimal("0.666666667")
-        >>> ExtendedContext.divide(Decimal('5'), Decimal('2'))
-        Decimal("2.5")
-        >>> ExtendedContext.divide(Decimal('1'), Decimal('10'))
-        Decimal("0.1")
-        >>> ExtendedContext.divide(Decimal('12'), Decimal('12'))
-        Decimal("1")
-        >>> ExtendedContext.divide(Decimal('8.00'), Decimal('2'))
-        Decimal("4.00")
-        >>> ExtendedContext.divide(Decimal('2.400'), Decimal('2.0'))
-        Decimal("1.20")
-        >>> ExtendedContext.divide(Decimal('1000'), Decimal('100'))
-        Decimal("10")
-        >>> ExtendedContext.divide(Decimal('1000'), Decimal('1'))
-        Decimal("1000")
-        >>> ExtendedContext.divide(Decimal('2.40E+6'), Decimal('2'))
-        Decimal("1.20E+6")
-        """
-        return a.__div__(b, context=self)
-
-    def divide_int(self, a, b):
-        """Divides two numbers and returns the integer part of the result.
-
-        >>> ExtendedContext.divide_int(Decimal('2'), Decimal('3'))
-        Decimal("0")
-        >>> ExtendedContext.divide_int(Decimal('10'), Decimal('3'))
-        Decimal("3")
-        >>> ExtendedContext.divide_int(Decimal('1'), Decimal('0.3'))
-        Decimal("3")
-        """
-        return a.__floordiv__(b, context=self)
-
-    def divmod(self, a, b):
-        return a.__divmod__(b, context=self)
-
-    def max(self, a,b):
-        """max compares two values numerically and returns the maximum.
-
-        If either operand is a NaN then the general rules apply.
-        Otherwise, the operands are compared as as though by the compare
-        operation. If they are numerically equal then the left-hand operand
-        is chosen as the result. Otherwise the maximum (closer to positive
-        infinity) of the two operands is chosen as the result.
-
-        >>> ExtendedContext.max(Decimal('3'), Decimal('2'))
-        Decimal("3")
-        >>> ExtendedContext.max(Decimal('-10'), Decimal('3'))
-        Decimal("3")
-        >>> ExtendedContext.max(Decimal('1.0'), Decimal('1'))
-        Decimal("1")
-        >>> ExtendedContext.max(Decimal('7'), Decimal('NaN'))
-        Decimal("7")
-        """
-        return a.max(b, context=self)
-
-    def min(self, a,b):
-        """min compares two values numerically and returns the minimum.
-
-        If either operand is a NaN then the general rules apply.
-        Otherwise, the operands are compared as as though by the compare
-        operation. If they are numerically equal then the left-hand operand
-        is chosen as the result. Otherwise the minimum (closer to negative
-        infinity) of the two operands is chosen as the result.
-
-        >>> ExtendedContext.min(Decimal('3'), Decimal('2'))
-        Decimal("2")
-        >>> ExtendedContext.min(Decimal('-10'), Decimal('3'))
-        Decimal("-10")
-        >>> ExtendedContext.min(Decimal('1.0'), Decimal('1'))
-        Decimal("1.0")
-        >>> ExtendedContext.min(Decimal('7'), Decimal('NaN'))
-        Decimal("7")
-        """
-        return a.min(b, context=self)
-
-    def minus(self, a):
-        """Minus corresponds to unary prefix minus in Python.
-
-        The operation is evaluated using the same rules as subtract; the
-        operation minus(a) is calculated as subtract('0', a) where the '0'
-        has the same exponent as the operand.
-
-        >>> ExtendedContext.minus(Decimal('1.3'))
-        Decimal("-1.3")
-        >>> ExtendedContext.minus(Decimal('-1.3'))
-        Decimal("1.3")
-        """
-        return a.__neg__(context=self)
-
-    def multiply(self, a, b):
-        """multiply multiplies two operands.
-
-        If either operand is a special value then the general rules apply.
-        Otherwise, the operands are multiplied together ('long multiplication'),
-        resulting in a number which may be as long as the sum of the lengths
-        of the two operands.
-
-        >>> ExtendedContext.multiply(Decimal('1.20'), Decimal('3'))
-        Decimal("3.60")
-        >>> ExtendedContext.multiply(Decimal('7'), Decimal('3'))
-        Decimal("21")
-        >>> ExtendedContext.multiply(Decimal('0.9'), Decimal('0.8'))
-        Decimal("0.72")
-        >>> ExtendedContext.multiply(Decimal('0.9'), Decimal('-0'))
-        Decimal("-0.0")
-        >>> ExtendedContext.multiply(Decimal('654321'), Decimal('654321'))
-        Decimal("4.28135971E+11")
-        """
-        return a.__mul__(b, context=self)
-
-    def normalize(self, a):
-        """normalize reduces an operand to its simplest form.
-
-        Essentially a plus operation with all trailing zeros removed from the
-        result.
-
-        >>> ExtendedContext.normalize(Decimal('2.1'))
-        Decimal("2.1")
-        >>> ExtendedContext.normalize(Decimal('-2.0'))
-        Decimal("-2")
-        >>> ExtendedContext.normalize(Decimal('1.200'))
-        Decimal("1.2")
-        >>> ExtendedContext.normalize(Decimal('-120'))
-        Decimal("-1.2E+2")
-        >>> ExtendedContext.normalize(Decimal('120.00'))
-        Decimal("1.2E+2")
-        >>> ExtendedContext.normalize(Decimal('0.00'))
-        Decimal("0")
-        """
-        return a.normalize(context=self)
-
-    def plus(self, a):
-        """Plus corresponds to unary prefix plus in Python.
-
-        The operation is evaluated using the same rules as add; the
-        operation plus(a) is calculated as add('0', a) where the '0'
-        has the same exponent as the operand.
-
-        >>> ExtendedContext.plus(Decimal('1.3'))
-        Decimal("1.3")
-        >>> ExtendedContext.plus(Decimal('-1.3'))
-        Decimal("-1.3")
-        """
-        return a.__pos__(context=self)
-
-    def power(self, a, b, modulo=None):
-        """Raises a to the power of b, to modulo if given.
-
-        The right-hand operand must be a whole number whose integer part (after
-        any exponent has been applied) has no more than 9 digits and whose
-        fractional part (if any) is all zeros before any rounding. The operand
-        may be positive, negative, or zero; if negative, the absolute value of
-        the power is used, and the left-hand operand is inverted (divided into
-        1) before use.
-
-        If the increased precision needed for the intermediate calculations
-        exceeds the capabilities of the implementation then an Invalid operation
-        condition is raised.
-
-        If, when raising to a negative power, an underflow occurs during the
-        division into 1, the operation is not halted at that point but
-        continues.
-
-        >>> ExtendedContext.power(Decimal('2'), Decimal('3'))
-        Decimal("8")
-        >>> ExtendedContext.power(Decimal('2'), Decimal('-3'))
-        Decimal("0.125")
-        >>> ExtendedContext.power(Decimal('1.7'), Decimal('8'))
-        Decimal("69.7575744")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('-2'))
-        Decimal("0")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('-1'))
-        Decimal("0")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('0'))
-        Decimal("1")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('1'))
-        Decimal("Infinity")
-        >>> ExtendedContext.power(Decimal('Infinity'), Decimal('2'))
-        Decimal("Infinity")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('-2'))
-        Decimal("0")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('-1'))
-        Decimal("-0")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('0'))
-        Decimal("1")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('1'))
-        Decimal("-Infinity")
-        >>> ExtendedContext.power(Decimal('-Infinity'), Decimal('2'))
-        Decimal("Infinity")
-        >>> ExtendedContext.power(Decimal('0'), Decimal('0'))
-        Decimal("NaN")
-        """
-        return a.__pow__(b, modulo, context=self)
-
-    def quantize(self, a, b):
-        """Returns a value equal to 'a' (rounded) and having the exponent of 'b'.
-
-        The coefficient of the result is derived from that of the left-hand
-        operand. It may be rounded using the current rounding setting (if the
-        exponent is being increased), multiplied by a positive power of ten (if
-        the exponent is being decreased), or is unchanged (if the exponent is
-        already equal to that of the right-hand operand).
-
-        Unlike other operations, if the length of the coefficient after the
-        quantize operation would be greater than precision then an Invalid
-        operation condition is raised. This guarantees that, unless there is an
-        error condition, the exponent of the result of a quantize is always
-        equal to that of the right-hand operand.
-
-        Also unlike other operations, quantize will never raise Underflow, even
-        if the result is subnormal and inexact.
-
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.001'))
-        Decimal("2.170")
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.01'))
-        Decimal("2.17")
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.1'))
-        Decimal("2.2")
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('1e+0'))
-        Decimal("2")
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('1e+1'))
-        Decimal("0E+1")
-        >>> ExtendedContext.quantize(Decimal('-Inf'), Decimal('Infinity'))
-        Decimal("-Infinity")
-        >>> ExtendedContext.quantize(Decimal('2'), Decimal('Infinity'))
-        Decimal("NaN")
-        >>> ExtendedContext.quantize(Decimal('-0.1'), Decimal('1'))
-        Decimal("-0")
-        >>> ExtendedContext.quantize(Decimal('-0'), Decimal('1e+5'))
-        Decimal("-0E+5")
-        >>> ExtendedContext.quantize(Decimal('+35236450.6'), Decimal('1e-2'))
-        Decimal("NaN")
-        >>> ExtendedContext.quantize(Decimal('-35236450.6'), Decimal('1e-2'))
-        Decimal("NaN")
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e-1'))
-        Decimal("217.0")
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e-0'))
-        Decimal("217")
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e+1'))
-        Decimal("2.2E+2")
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e+2'))
-        Decimal("2E+2")
-        """
-        return a.quantize(b, context=self)
-
-    def remainder(self, a, b):
-        """Returns the remainder from integer division.
-
-        The result is the residue of the dividend after the operation of
-        calculating integer division as described for divide-integer, rounded to
-        precision digits if necessary. The sign of the result, if non-zero, is
-        the same as that of the original dividend.
-
-        This operation will fail under the same conditions as integer division
-        (that is, if integer division on the same two operands would fail, the
-        remainder cannot be calculated).
-
-        >>> ExtendedContext.remainder(Decimal('2.1'), Decimal('3'))
-        Decimal("2.1")
-        >>> ExtendedContext.remainder(Decimal('10'), Decimal('3'))
-        Decimal("1")
-        >>> ExtendedContext.remainder(Decimal('-10'), Decimal('3'))
-        Decimal("-1")
-        >>> ExtendedContext.remainder(Decimal('10.2'), Decimal('1'))
-        Decimal("0.2")
-        >>> ExtendedContext.remainder(Decimal('10'), Decimal('0.3'))
-        Decimal("0.1")
-        >>> ExtendedContext.remainder(Decimal('3.6'), Decimal('1.3'))
-        Decimal("1.0")
-        """
-        return a.__mod__(b, context=self)
-
-    def remainder_near(self, a, b):
-        """Returns to be "a - b * n", where n is the integer nearest the exact
-        value of "x / b" (if two integers are equally near then the even one
-        is chosen). If the result is equal to 0 then its sign will be the
-        sign of a.
-
-        This operation will fail under the same conditions as integer division
-        (that is, if integer division on the same two operands would fail, the
-        remainder cannot be calculated).
-
-        >>> ExtendedContext.remainder_near(Decimal('2.1'), Decimal('3'))
-        Decimal("-0.9")
-        >>> ExtendedContext.remainder_near(Decimal('10'), Decimal('6'))
-        Decimal("-2")
-        >>> ExtendedContext.remainder_near(Decimal('10'), Decimal('3'))
-        Decimal("1")
-        >>> ExtendedContext.remainder_near(Decimal('-10'), Decimal('3'))
-        Decimal("-1")
-        >>> ExtendedContext.remainder_near(Decimal('10.2'), Decimal('1'))
-        Decimal("0.2")
-        >>> ExtendedContext.remainder_near(Decimal('10'), Decimal('0.3'))
-        Decimal("0.1")
-        >>> ExtendedContext.remainder_near(Decimal('3.6'), Decimal('1.3'))
-        Decimal("-0.3")
-        """
-        return a.remainder_near(b, context=self)
-
-    def same_quantum(self, a, b):
-        """Returns True if the two operands have the same exponent.
-
-        The result is never affected by either the sign or the coefficient of
-        either operand.
-
-        >>> ExtendedContext.same_quantum(Decimal('2.17'), Decimal('0.001'))
-        False
-        >>> ExtendedContext.same_quantum(Decimal('2.17'), Decimal('0.01'))
-        True
-        >>> ExtendedContext.same_quantum(Decimal('2.17'), Decimal('1'))
-        False
-        >>> ExtendedContext.same_quantum(Decimal('Inf'), Decimal('-Inf'))
-        True
-        """
-        return a.same_quantum(b)
-
-    def sqrt(self, a):
-        """Returns the square root of a non-negative number to context precision.
-
-        If the result must be inexact, it is rounded using the round-half-even
-        algorithm.
-
-        >>> ExtendedContext.sqrt(Decimal('0'))
-        Decimal("0")
-        >>> ExtendedContext.sqrt(Decimal('-0'))
-        Decimal("-0")
-        >>> ExtendedContext.sqrt(Decimal('0.39'))
-        Decimal("0.624499800")
-        >>> ExtendedContext.sqrt(Decimal('100'))
-        Decimal("10")
-        >>> ExtendedContext.sqrt(Decimal('1'))
-        Decimal("1")
-        >>> ExtendedContext.sqrt(Decimal('1.0'))
-        Decimal("1.0")
-        >>> ExtendedContext.sqrt(Decimal('1.00'))
-        Decimal("1.0")
-        >>> ExtendedContext.sqrt(Decimal('7'))
-        Decimal("2.64575131")
-        >>> ExtendedContext.sqrt(Decimal('10'))
-        Decimal("3.16227766")
-        >>> ExtendedContext.prec
-        9
-        """
-        return a.sqrt(context=self)
-
-    def subtract(self, a, b):
-        """Return the difference between the two operands.
-
-        >>> ExtendedContext.subtract(Decimal('1.3'), Decimal('1.07'))
-        Decimal("0.23")
-        >>> ExtendedContext.subtract(Decimal('1.3'), Decimal('1.30'))
-        Decimal("0.00")
-        >>> ExtendedContext.subtract(Decimal('1.3'), Decimal('2.07'))
-        Decimal("-0.77")
-        """
-        return a.__sub__(b, context=self)
-
-    def to_eng_string(self, a):
-        """Converts a number to a string, using scientific notation.
-
-        The operation is not affected by the context.
-        """
-        return a.to_eng_string(context=self)
-
-    def to_sci_string(self, a):
-        """Converts a number to a string, using scientific notation.
-
-        The operation is not affected by the context.
-        """
-        return a.__str__(context=self)
-
-    def to_integral(self, a):
-        """Rounds to an integer.
-
-        When the operand has a negative exponent, the result is the same
-        as using the quantize() operation using the given operand as the
-        left-hand-operand, 1E+0 as the right-hand-operand, and the precision
-        of the operand as the precision setting, except that no flags will
-        be set. The rounding mode is taken from the context.
-
-        >>> ExtendedContext.to_integral(Decimal('2.1'))
-        Decimal("2")
-        >>> ExtendedContext.to_integral(Decimal('100'))
-        Decimal("100")
-        >>> ExtendedContext.to_integral(Decimal('100.0'))
-        Decimal("100")
-        >>> ExtendedContext.to_integral(Decimal('101.5'))
-        Decimal("102")
-        >>> ExtendedContext.to_integral(Decimal('-101.5'))
-        Decimal("-102")
-        >>> ExtendedContext.to_integral(Decimal('10E+5'))
-        Decimal("1.0E+6")
-        >>> ExtendedContext.to_integral(Decimal('7.89E+77'))
-        Decimal("7.89E+77")
-        >>> ExtendedContext.to_integral(Decimal('-Inf'))
-        Decimal("-Infinity")
-        """
-        return a.to_integral(context=self)
-
-class _WorkRep(object):
-    __slots__ = ('sign','int','exp')
-    # sign: 0 or 1
-    # int:  int or long
-    # exp:  None, int, or string
-
-    def __init__(self, value=None):
-        if value is None:
-            self.sign = None
-            self.int = 0
-            self.exp = None
-        elif isinstance(value, Decimal):
-            self.sign = value._sign
-            cum = 0
-            for digit  in value._int:
-                cum = cum * 10 + digit
-            self.int = cum
-            self.exp = value._exp
-        else:
-            # assert isinstance(value, tuple)
-            self.sign = value[0]
-            self.int = value[1]
-            self.exp = value[2]
-
-    def __repr__(self):
-        return "(%r, %r, %r)" % (self.sign, self.int, self.exp)
-
-    __str__ = __repr__
-
-
-
-def _normalize(op1, op2, shouldround = 0, prec = 0):
-    """Normalizes op1, op2 to have the same exp and length of coefficient.
-
-    Done during addition.
-    """
-    # Yes, the exponent is a long, but the difference between exponents
-    # must be an int-- otherwise you'd get a big memory problem.
-    numdigits = int(op1.exp - op2.exp)
-    if numdigits < 0:
-        numdigits = -numdigits
-        tmp = op2
-        other = op1
-    else:
-        tmp = op1
-        other = op2
-
-
-    if shouldround and numdigits > prec + 1:
-        # Big difference in exponents - check the adjusted exponents
-        tmp_len = len(str(tmp.int))
-        other_len = len(str(other.int))
-        if numdigits > (other_len + prec + 1 - tmp_len):
-            # If the difference in adjusted exps is > prec+1, we know
-            # other is insignificant, so might as well put a 1 after the precision.
-            # (since this is only for addition.)  Also stops use of massive longs.
-
-            extend = prec + 2 - tmp_len
-            if extend <= 0:
-                extend = 1
-            tmp.int *= 10 ** extend
-            tmp.exp -= extend
-            other.int = 1
-            other.exp = tmp.exp
-            return op1, op2
-
-    tmp.int *= 10 ** numdigits
-    tmp.exp -= numdigits
-    return op1, op2
-
-def _adjust_coefficients(op1, op2):
-    """Adjust op1, op2 so that op2.int * 10 > op1.int >= op2.int.
-
-    Returns the adjusted op1, op2 as well as the change in op1.exp-op2.exp.
-
-    Used on _WorkRep instances during division.
-    """
-    adjust = 0
-    #If op1 is smaller, make it larger
-    while op2.int > op1.int:
-        op1.int *= 10
-        op1.exp -= 1
-        adjust += 1
-
-    #If op2 is too small, make it larger
-    while op1.int >= (10 * op2.int):
-        op2.int *= 10
-        op2.exp -= 1
-        adjust -= 1
-
-    return op1, op2, adjust
-
-##### Helper Functions ########################################
-
-def _convert_other(other):
-    """Convert other to Decimal.
-
-    Verifies that it's ok to use in an implicit construction.
-    """
-    if isinstance(other, Decimal):
-        return other
-    if isinstance(other, (int, long)):
-        return Decimal(other)
-    return NotImplemented
-
-_infinity_map = {
-    'inf' : 1,
-    'infinity' : 1,
-    '+inf' : 1,
-    '+infinity' : 1,
-    '-inf' : -1,
-    '-infinity' : -1
-}
-
-def _isinfinity(num):
-    """Determines whether a string or float is infinity.
-
-    +1 for negative infinity; 0 for finite ; +1 for positive infinity
-    """
-    num = str(num).lower()
-    return _infinity_map.get(num, 0)
-
-def _isnan(num):
-    """Determines whether a string or float is NaN
-
-    (1, sign, diagnostic info as string) => NaN
-    (2, sign, diagnostic info as string) => sNaN
-    0 => not a NaN
-    """
-    num = str(num).lower()
-    if not num:
-        return 0
-
-    #get the sign, get rid of trailing [+-]
-    sign = 0
-    if num[0] == '+':
-        num = num[1:]
-    elif num[0] == '-':  #elif avoids '+-nan'
-        num = num[1:]
-        sign = 1
-
-    if num.startswith('nan'):
-        if len(num) > 3 and not num[3:].isdigit(): #diagnostic info
-            return 0
-        return (1, sign, num[3:].lstrip('0'))
-    if num.startswith('snan'):
-        if len(num) > 4 and not num[4:].isdigit():
-            return 0
-        return (2, sign, num[4:].lstrip('0'))
-    return 0
-
-
-##### Setup Specific Contexts ################################
-
-# The default context prototype used by Context()
-# Is mutable, so that new contexts can have different default values
-
-DefaultContext = Context(
-        prec=28, rounding=ROUND_HALF_EVEN,
-        traps=[DivisionByZero, Overflow, InvalidOperation],
-        flags=[],
-        _rounding_decision=ALWAYS_ROUND,
-        Emax=999999999,
-        Emin=-999999999,
-        capitals=1
-)
-
-# Pre-made alternate contexts offered by the specification
-# Don't change these; the user should be able to select these
-# contexts and be able to reproduce results from other implementations
-# of the spec.
-
-BasicContext = Context(
-        prec=9, rounding=ROUND_HALF_UP,
-        traps=[DivisionByZero, Overflow, InvalidOperation, Clamped, Underflow],
-        flags=[],
-)
-
-ExtendedContext = Context(
-        prec=9, rounding=ROUND_HALF_EVEN,
-        traps=[],
-        flags=[],
-)
-
-
-##### Useful Constants (internal use only) ####################
-
-#Reusable defaults
-Inf = Decimal('Inf')
-negInf = Decimal('-Inf')
-
-#Infsign[sign] is infinity w/ that sign
-Infsign = (Inf, negInf)
-
-NaN = Decimal('NaN')
-
-
-##### crud for parsing strings #################################
-import re
-
-# There's an optional sign at the start, and an optional exponent
-# at the end.  The exponent has an optional sign and at least one
-# digit.  In between, must have either at least one digit followed
-# by an optional fraction, or a decimal point followed by at least
-# one digit.  Yuck.
-
-_parser = re.compile(r"""
-#    \s*
-    (?P<sign>[-+])?
-    (
-        (?P<int>\d+) (\. (?P<frac>\d*))?
-    |
-        \. (?P<onlyfrac>\d+)
-    )
-    ([eE](?P<exp>[-+]? \d+))?
-#    \s*
-    $
-""", re.VERBOSE).match #Uncomment the \s* to allow leading or trailing spaces.
-
-del re
-
-# return sign, n, p s.t. float string value == -1**sign * n * 10**p exactly
-
-def _string2exact(s):
-    m = _parser(s)
-    if m is None:
-        raise ValueError("invalid literal for Decimal: %r" % s)
-
-    if m.group('sign') == "-":
-        sign = 1
-    else:
-        sign = 0
-
-    exp = m.group('exp')
-    if exp is None:
-        exp = 0
-    else:
-        exp = int(exp)
-
-    intpart = m.group('int')
-    if intpart is None:
-        intpart = ""
-        fracpart = m.group('onlyfrac')
-    else:
-        fracpart = m.group('frac')
-        if fracpart is None:
-            fracpart = ""
-
-    exp -= len(fracpart)
-
-    mantissa = intpart + fracpart
-    tmp = map(int, mantissa)
-    backup = tmp
-    while tmp and tmp[0] == 0:
-        del tmp[0]
-
-    # It's a zero
-    if not tmp:
-        if backup:
-            return (sign, tuple(backup), exp)
-        return (sign, (0,), exp)
-    mantissa = tuple(tmp)
-
-    return (sign, mantissa, exp)
-
-
-if __name__ == '__main__':
-    import doctest, sys
-    doctest.testmod(sys.modules[__name__])
diff --git a/webapp/django/utils/_os.py b/webapp/django/utils/_os.py
deleted file mode 100644
index 30d7cbd..0000000
--- a/webapp/django/utils/_os.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from os.path import join, normcase, abspath, sep
-
-def safe_join(base, *paths):
-    """
-    Joins one or more path components to the base path component intelligently.
-    Returns a normalized, absolute version of the final path.
-
-    The final path must be located inside of the base path component (otherwise
-    a ValueError is raised).
-    """
-    # We need to use normcase to ensure we don't false-negative on case
-    # insensitive operating systems (like Windows).
-    final_path = normcase(abspath(join(base, *paths)))
-    base_path = normcase(abspath(base))
-    base_path_len = len(base_path)
-    # Ensure final_path starts with base_path and that the next character after
-    # the final path is os.sep (or nothing, in which case final_path must be
-    # equal to base_path).
-    if not final_path.startswith(base_path) \
-       or final_path[base_path_len:base_path_len+1] not in ('', sep):
-        raise ValueError('the joined path is located outside of the base path'
-                         ' component')
-    return final_path
diff --git a/webapp/django/utils/_threading_local.py b/webapp/django/utils/_threading_local.py
deleted file mode 100644
index bf9a257..0000000
--- a/webapp/django/utils/_threading_local.py
+++ /dev/null
@@ -1,240 +0,0 @@
-"""Thread-local objects
-
-(Note that this module provides a Python version of thread
- threading.local class.  Depending on the version of Python you're
- using, there may be a faster one available.  You should always import
- the local class from threading.)
-
-Thread-local objects support the management of thread-local data.
-If you have data that you want to be local to a thread, simply create
-a thread-local object and use its attributes:
-
-  >>> mydata = local()
-  >>> mydata.number = 42
-  >>> mydata.number
-  42
-
-You can also access the local-object's dictionary:
-
-  >>> mydata.__dict__
-  {'number': 42}
-  >>> mydata.__dict__.setdefault('widgets', [])
-  []
-  >>> mydata.widgets
-  []
-
-What's important about thread-local objects is that their data are
-local to a thread. If we access the data in a different thread:
-
-  >>> log = []
-  >>> def f():
-  ...     items = mydata.__dict__.items()
-  ...     items.sort()
-  ...     log.append(items)
-  ...     mydata.number = 11
-  ...     log.append(mydata.number)
-
-  >>> import threading
-  >>> thread = threading.Thread(target=f)
-  >>> thread.start()
-  >>> thread.join()
-  >>> log
-  [[], 11]
-
-we get different data.  Furthermore, changes made in the other thread
-don't affect data seen in this thread:
-
-  >>> mydata.number
-  42
-
-Of course, values you get from a local object, including a __dict__
-attribute, are for whatever thread was current at the time the
-attribute was read.  For that reason, you generally don't want to save
-these values across threads, as they apply only to the thread they
-came from.
-
-You can create custom local objects by subclassing the local class:
-
-  >>> class MyLocal(local):
-  ...     number = 2
-  ...     initialized = False
-  ...     def __init__(self, **kw):
-  ...         if self.initialized:
-  ...             raise SystemError('__init__ called too many times')
-  ...         self.initialized = True
-  ...         self.__dict__.update(kw)
-  ...     def squared(self):
-  ...         return self.number ** 2
-
-This can be useful to support default values, methods and
-initialization.  Note that if you define an __init__ method, it will be
-called each time the local object is used in a separate thread.  This
-is necessary to initialize each thread's dictionary.
-
-Now if we create a local object:
-
-  >>> mydata = MyLocal(color='red')
-
-Now we have a default number:
-
-  >>> mydata.number
-  2
-
-an initial color:
-
-  >>> mydata.color
-  'red'
-  >>> del mydata.color
-
-And a method that operates on the data:
-
-  >>> mydata.squared()
-  4
-
-As before, we can access the data in a separate thread:
-
-  >>> log = []
-  >>> thread = threading.Thread(target=f)
-  >>> thread.start()
-  >>> thread.join()
-  >>> log
-  [[('color', 'red'), ('initialized', True)], 11]
-
-without affecting this thread's data:
-
-  >>> mydata.number
-  2
-  >>> mydata.color
-  Traceback (most recent call last):
-  ...
-  AttributeError: 'MyLocal' object has no attribute 'color'
-
-Note that subclasses can define slots, but they are not thread
-local. They are shared across threads:
-
-  >>> class MyLocal(local):
-  ...     __slots__ = 'number'
-
-  >>> mydata = MyLocal()
-  >>> mydata.number = 42
-  >>> mydata.color = 'red'
-
-So, the separate thread:
-
-  >>> thread = threading.Thread(target=f)
-  >>> thread.start()
-  >>> thread.join()
-
-affects what we see:
-
-  >>> mydata.number
-  11
-
->>> del mydata
-"""
-
-# Threading import is at end
-
-class _localbase(object):
-    __slots__ = '_local__key', '_local__args', '_local__lock'
-
-    def __new__(cls, *args, **kw):
-        self = object.__new__(cls)
-        key = '_local__key', 'thread.local.' + str(id(self))
-        object.__setattr__(self, '_local__key', key)
-        object.__setattr__(self, '_local__args', (args, kw))
-        object.__setattr__(self, '_local__lock', RLock())
-
-        if args or kw and (cls.__init__ is object.__init__):
-            raise TypeError("Initialization arguments are not supported")
-
-        # We need to create the thread dict in anticipation of
-        # __init__ being called, to make sure we don't call it
-        # again ourselves.
-        dict = object.__getattribute__(self, '__dict__')
-        currentThread().__dict__[key] = dict
-
-        return self
-
-def _patch(self):
-    key = object.__getattribute__(self, '_local__key')
-    d = currentThread().__dict__.get(key)
-    if d is None:
-        d = {}
-        currentThread().__dict__[key] = d
-        object.__setattr__(self, '__dict__', d)
-
-        # we have a new instance dict, so call out __init__ if we have
-        # one
-        cls = type(self)
-        if cls.__init__ is not object.__init__:
-            args, kw = object.__getattribute__(self, '_local__args')
-            cls.__init__(self, *args, **kw)
-    else:
-        object.__setattr__(self, '__dict__', d)
-
-class local(_localbase):
-
-    def __getattribute__(self, name):
-        lock = object.__getattribute__(self, '_local__lock')
-        lock.acquire()
-        try:
-            _patch(self)
-            return object.__getattribute__(self, name)
-        finally:
-            lock.release()
-
-    def __setattr__(self, name, value):
-        lock = object.__getattribute__(self, '_local__lock')
-        lock.acquire()
-        try:
-            _patch(self)
-            return object.__setattr__(self, name, value)
-        finally:
-            lock.release()
-
-    def __delattr__(self, name):
-        lock = object.__getattribute__(self, '_local__lock')
-        lock.acquire()
-        try:
-            _patch(self)
-            return object.__delattr__(self, name)
-        finally:
-            lock.release()
-
-
-    def __del__():
-        threading_enumerate = enumerate
-        __getattribute__ = object.__getattribute__
-
-        def __del__(self):
-            key = __getattribute__(self, '_local__key')
-
-            try:
-                threads = list(threading_enumerate())
-            except:
-                # if enumerate fails, as it seems to do during
-                # shutdown, we'll skip cleanup under the assumption
-                # that there is nothing to clean up
-                return
-
-            for thread in threads:
-                try:
-                    __dict__ = thread.__dict__
-                except AttributeError:
-                    # Thread is dying, rest in peace
-                    continue
-
-                if key in __dict__:
-                    try:
-                        del __dict__[key]
-                    except KeyError:
-                        pass # didn't have anything in this thread
-
-        return __del__
-    __del__ = __del__()
-
-try:
-    from threading import currentThread, enumerate, RLock
-except ImportError:
-    from dummy_threading import currentThread, enumerate, RLock
diff --git a/webapp/django/utils/autoreload.py b/webapp/django/utils/autoreload.py
deleted file mode 100644
index 8d9d6f2..0000000
--- a/webapp/django/utils/autoreload.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Autoreloading launcher.
-# Borrowed from Peter Hunt and the CherryPy project (http://www.cherrypy.org).
-# Some taken from Ian Bicking's Paste (http://pythonpaste.org/).
-#
-# Portions copyright (c) 2004, CherryPy Team (team@cherrypy.org)
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-#     * Redistributions of source code must retain the above copyright notice,
-#       this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above copyright notice,
-#       this list of conditions and the following disclaimer in the documentation
-#       and/or other materials provided with the distribution.
-#     * Neither the name of the CherryPy Team nor the names of its contributors
-#       may be used to endorse or promote products derived from this software
-#       without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os, sys, time
-
-try:
-    import thread
-except ImportError:
-    import dummy_thread as thread
-
-# This import does nothing, but it's necessary to avoid some race conditions
-# in the threading module. See http://code.djangoproject.com/ticket/2330 .
-try:
-    import threading
-except ImportError:
-    pass
-
-
-RUN_RELOADER = True
-
-_mtimes = {}
-_win = (sys.platform == "win32")
-
-def code_changed():
-    global _mtimes, _win
-    for filename in filter(lambda v: v, map(lambda m: getattr(m, "__file__", None), sys.modules.values())):
-        if filename.endswith(".pyc") or filename.endswith(".pyo"):
-            filename = filename[:-1]
-        if not os.path.exists(filename):
-            continue # File might be in an egg, so it can't be reloaded.
-        stat = os.stat(filename)
-        mtime = stat.st_mtime
-        if _win:
-            mtime -= stat.st_ctime
-        if filename not in _mtimes:
-            _mtimes[filename] = mtime
-            continue
-        if mtime != _mtimes[filename]:
-            _mtimes = {}
-            return True
-    return False
-
-def reloader_thread():
-    while RUN_RELOADER:
-        if code_changed():
-            sys.exit(3) # force reload
-        time.sleep(1)
-
-def restart_with_reloader():
-    while True:
-        args = [sys.executable] + sys.argv
-        if sys.platform == "win32":
-            args = ['"%s"' % arg for arg in args]
-        new_environ = os.environ.copy()
-        new_environ["RUN_MAIN"] = 'true'
-        exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
-        if exit_code != 3:
-            return exit_code
-
-def python_reloader(main_func, args, kwargs):
-    if os.environ.get("RUN_MAIN") == "true":
-        thread.start_new_thread(main_func, args, kwargs)
-        try:
-            reloader_thread()
-        except KeyboardInterrupt:
-            pass
-    else:
-        try:
-            sys.exit(restart_with_reloader())
-        except KeyboardInterrupt:
-            pass
-
-def jython_reloader(main_func, args, kwargs):
-    from _systemrestart import SystemRestart
-    thread.start_new_thread(main_func, args)
-    while True:
-        if code_changed():
-            raise SystemRestart
-        time.sleep(1)
-
-
-def main(main_func, args=None, kwargs=None):
-    if args is None:
-        args = ()
-    if kwargs is None:
-        kwargs = {}
-    if sys.platform.startswith('java'):
-        reloader = jython_reloader
-    else:
-        reloader = python_reloader
-    reloader(main_func, args, kwargs)
-
diff --git a/webapp/django/utils/cache.py b/webapp/django/utils/cache.py
deleted file mode 100644
index 9c566ae..0000000
--- a/webapp/django/utils/cache.py
+++ /dev/null
@@ -1,204 +0,0 @@
-"""
-This module contains helper functions for controlling caching. It does so by
-managing the "Vary" header of responses. It includes functions to patch the
-header of response objects directly and decorators that change functions to do
-that header-patching themselves.
-
-For information on the Vary header, see:
-
-    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44
-
-Essentially, the "Vary" HTTP header defines which headers a cache should take
-into account when building its cache key. Requests with the same path but
-different header content for headers named in "Vary" need to get different
-cache keys to prevent delivery of wrong content.
-
-An example: i18n middleware would need to distinguish caches by the
-"Accept-language" header.
-"""
-
-import re
-import time
-try:
-    set
-except NameError:
-    from sets import Set as set   # Python 2.3 fallback
-
-from django.conf import settings
-from django.core.cache import cache
-from django.utils.encoding import smart_str, iri_to_uri
-from django.utils.http import http_date
-from django.utils.hashcompat import md5_constructor
-
-cc_delim_re = re.compile(r'\s*,\s*')
-
-def patch_cache_control(response, **kwargs):
-    """
-    This function patches the Cache-Control header by adding all
-    keyword arguments to it. The transformation is as follows:
-
-    * All keyword parameter names are turned to lowercase, and underscores
-      are converted to hyphens.
-    * If the value of a parameter is True (exactly True, not just a
-      true value), only the parameter name is added to the header.
-    * All other parameters are added with their value, after applying
-      str() to it.
-    """
-    def dictitem(s):
-        t = s.split('=', 1)
-        if len(t) > 1:
-            return (t[0].lower(), t[1])
-        else:
-            return (t[0].lower(), True)
-
-    def dictvalue(t):
-        if t[1] is True:
-            return t[0]
-        else:
-            return t[0] + '=' + smart_str(t[1])
-
-    if response.has_header('Cache-Control'):
-        cc = cc_delim_re.split(response['Cache-Control'])
-        cc = dict([dictitem(el) for el in cc])
-    else:
-        cc = {}
-
-    # If there's already a max-age header but we're being asked to set a new
-    # max-age, use the minimum of the two ages. In practice this happens when
-    # a decorator and a piece of middleware both operate on a given view.
-    if 'max-age' in cc and 'max_age' in kwargs:
-        kwargs['max_age'] = min(cc['max-age'], kwargs['max_age'])
-
-    for (k, v) in kwargs.items():
-        cc[k.replace('_', '-')] = v
-    cc = ', '.join([dictvalue(el) for el in cc.items()])
-    response['Cache-Control'] = cc
-
-def get_max_age(response):
-    """
-    Returns the max-age from the response Cache-Control header as an integer
-    (or ``None`` if it wasn't found or wasn't an integer.
-    """
-    if not response.has_header('Cache-Control'):
-        return
-    cc = dict([_to_tuple(el) for el in
-        cc_delim_re.split(response['Cache-Control'])])
-    if 'max-age' in cc:
-        try:
-            return int(cc['max-age'])
-        except (ValueError, TypeError):
-            pass
-
-def patch_response_headers(response, cache_timeout=None):
-    """
-    Adds some useful headers to the given HttpResponse object:
-        ETag, Last-Modified, Expires and Cache-Control
-
-    Each header is only added if it isn't already set.
-
-    cache_timeout is in seconds. The CACHE_MIDDLEWARE_SECONDS setting is used
-    by default.
-    """
-    if cache_timeout is None:
-        cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
-    if cache_timeout < 0:
-        cache_timeout = 0 # Can't have max-age negative
-    if not response.has_header('ETag'):
-        response['ETag'] = '"%s"' % md5_constructor(response.content).hexdigest()
-    if not response.has_header('Last-Modified'):
-        response['Last-Modified'] = http_date()
-    if not response.has_header('Expires'):
-        response['Expires'] = http_date(time.time() + cache_timeout)
-    patch_cache_control(response, max_age=cache_timeout)
-
-def add_never_cache_headers(response):
-    """
-    Adds headers to a response to indicate that a page should never be cached.
-    """
-    patch_response_headers(response, cache_timeout=-1)
-
-def patch_vary_headers(response, newheaders):
-    """
-    Adds (or updates) the "Vary" header in the given HttpResponse object.
-    newheaders is a list of header names that should be in "Vary". Existing
-    headers in "Vary" aren't removed.
-    """
-    # Note that we need to keep the original order intact, because cache
-    # implementations may rely on the order of the Vary contents in, say,
-    # computing an MD5 hash.
-    if response.has_header('Vary'):
-        vary_headers = cc_delim_re.split(response['Vary'])
-    else:
-        vary_headers = []
-    # Use .lower() here so we treat headers as case-insensitive.
-    existing_headers = set([header.lower() for header in vary_headers])
-    additional_headers = [newheader for newheader in newheaders
-                          if newheader.lower() not in existing_headers]
-    response['Vary'] = ', '.join(vary_headers + additional_headers)
-
-def _generate_cache_key(request, headerlist, key_prefix):
-    """Returns a cache key from the headers given in the header list."""
-    ctx = md5_constructor()
-    for header in headerlist:
-        value = request.META.get(header, None)
-        if value is not None:
-            ctx.update(value)
-    return 'views.decorators.cache.cache_page.%s.%s.%s' % (
-               key_prefix, iri_to_uri(request.path), ctx.hexdigest())
-
-def get_cache_key(request, key_prefix=None):
-    """
-    Returns a cache key based on the request path. It can be used in the
-    request phase because it pulls the list of headers to take into account
-    from the global path registry and uses those to build a cache key to check
-    against.
-
-    If there is no headerlist stored, the page needs to be rebuilt, so this
-    function returns None.
-    """
-    if key_prefix is None:
-        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
-    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
-                    key_prefix, iri_to_uri(request.path))
-    headerlist = cache.get(cache_key, None)
-    if headerlist is not None:
-        return _generate_cache_key(request, headerlist, key_prefix)
-    else:
-        return None
-
-def learn_cache_key(request, response, cache_timeout=None, key_prefix=None):
-    """
-    Learns what headers to take into account for some request path from the
-    response object. It stores those headers in a global path registry so that
-    later access to that path will know what headers to take into account
-    without building the response object itself. The headers are named in the
-    Vary header of the response, but we want to prevent response generation.
-
-    The list of headers to use for cache key generation is stored in the same
-    cache as the pages themselves. If the cache ages some data out of the
-    cache, this just means that we have to build the response once to get at
-    the Vary header and so at the list of headers to use for the cache key.
-    """
-    if key_prefix is None:
-        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
-    if cache_timeout is None:
-        cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
-    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
-                    key_prefix, iri_to_uri(request.path))
-    if response.has_header('Vary'):
-        headerlist = ['HTTP_'+header.upper().replace('-', '_')
-                      for header in cc_delim_re.split(response['Vary'])]
-        cache.set(cache_key, headerlist, cache_timeout)
-        return _generate_cache_key(request, headerlist, key_prefix)
-    else:
-        # if there is no Vary header, we still need a cache key
-        # for the request.path
-        cache.set(cache_key, [], cache_timeout)
-        return _generate_cache_key(request, [], key_prefix)
-
-
-def _to_tuple(s):
-    t = s.split('=',1)
-    if len(t) == 2:
-        return t[0].lower(), t[1]
-    return t[0].lower(), True
diff --git a/webapp/django/utils/checksums.py b/webapp/django/utils/checksums.py
deleted file mode 100644
index 970f563..0000000
--- a/webapp/django/utils/checksums.py
+++ /dev/null
@@ -1,22 +0,0 @@
-"""
-Common checksum routines (used in multiple localflavor/ cases, for example).
-"""
-
-__all__ = ['luhn',]
-
-LUHN_ODD_LOOKUP = (0, 2, 4, 6, 8, 1, 3, 5, 7, 9) # sum_of_digits(index * 2)
-
-def luhn(candidate):
-    """
-    Checks a candidate number for validity according to the Luhn
-    algorithm (used in validation of, for example, credit cards).
-    Both numeric and string candidates are accepted.
-    """
-    if not isinstance(candidate, basestring):
-        candidate = str(candidate)
-    try:
-        evens = sum([int(c) for c in candidate[-1::-2]])
-        odds = sum([LUHN_ODD_LOOKUP[int(c)] for c in candidate[-2::-2]])
-        return ((evens + odds) % 10 == 0)
-    except ValueError:  # Raised if an int conversion fails
-        return False
diff --git a/webapp/django/utils/daemonize.py b/webapp/django/utils/daemonize.py
deleted file mode 100644
index 68e5392..0000000
--- a/webapp/django/utils/daemonize.py
+++ /dev/null
@@ -1,58 +0,0 @@
-import os
-import sys
-
-if os.name == 'posix':
-    def become_daemon(our_home_dir='.', out_log='/dev/null',
-                      err_log='/dev/null', umask=022):
-        "Robustly turn into a UNIX daemon, running in our_home_dir."
-        # First fork
-        try:
-            if os.fork() > 0:
-                sys.exit(0)     # kill off parent
-        except OSError, e:
-            sys.stderr.write("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror))
-            sys.exit(1)
-        os.setsid()
-        os.chdir(our_home_dir)
-        os.umask(umask)
-
-        # Second fork
-        try:
-            if os.fork() > 0:
-                os._exit(0)
-        except OSError, e:
-            sys.stderr.write("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror))
-            os._exit(1)
-
-        si = open('/dev/null', 'r')
-        so = open(out_log, 'a+', 0)
-        se = open(err_log, 'a+', 0)
-        os.dup2(si.fileno(), sys.stdin.fileno())
-        os.dup2(so.fileno(), sys.stdout.fileno())
-        os.dup2(se.fileno(), sys.stderr.fileno())
-        # Set custom file descriptors so that they get proper buffering.
-        sys.stdout, sys.stderr = so, se
-else:
-    def become_daemon(our_home_dir='.', out_log=None, err_log=None, umask=022):
-        """
-        If we're not running under a POSIX system, just simulate the daemon
-        mode by doing redirections and directory changing.
-        """
-        os.chdir(our_home_dir)
-        os.umask(umask)
-        sys.stdin.close()
-        sys.stdout.close()
-        sys.stderr.close()
-        if err_log:
-            sys.stderr = open(err_log, 'a', 0)
-        else:
-            sys.stderr = NullDevice()
-        if out_log:
-            sys.stdout = open(out_log, 'a', 0)
-        else:
-            sys.stdout = NullDevice()
-
-    class NullDevice:
-        "A writeable object that writes to nowhere -- like /dev/null."
-        def write(self, s):
-            pass
diff --git a/webapp/django/utils/datastructures.py b/webapp/django/utils/datastructures.py
deleted file mode 100644
index 5837c3d..0000000
--- a/webapp/django/utils/datastructures.py
+++ /dev/null
@@ -1,421 +0,0 @@
-class MergeDict(object):
-    """
-    A simple class for creating new "virtual" dictionaries that actually look
-    up values in more than one dictionary, passed in the constructor.
-
-    If a key appears in more than one of the given dictionaries, only the
-    first occurrence will be used.
-    """
-    def __init__(self, *dicts):
-        self.dicts = dicts
-
-    def __getitem__(self, key):
-        for dict_ in self.dicts:
-            try:
-                return dict_[key]
-            except KeyError:
-                pass
-        raise KeyError
-
-    def __copy__(self):
-        return self.__class__(*self.dicts)
-
-    def get(self, key, default=None):
-        try:
-            return self[key]
-        except KeyError:
-            return default
-
-    def getlist(self, key):
-        for dict_ in self.dicts:
-            if key in dict_.keys():
-                return dict_.getlist(key)
-        return []
-
-    def items(self):
-        item_list = []
-        for dict_ in self.dicts:
-            item_list.extend(dict_.items())
-        return item_list
-
-    def has_key(self, key):
-        for dict_ in self.dicts:
-            if key in dict_:
-                return True
-        return False
-
-    __contains__ = has_key
-
-    def copy(self):
-        """Returns a copy of this object."""
-        return self.__copy__()
-
-class SortedDict(dict):
-    """
-    A dictionary that keeps its keys in the order in which they're inserted.
-    """
-    def __new__(cls, *args, **kwargs):
-        instance = super(SortedDict, cls).__new__(cls, *args, **kwargs)
-        instance.keyOrder = []
-        return instance
-
-    def __init__(self, data=None):
-        if data is None:
-            data = {}
-        super(SortedDict, self).__init__(data)
-        if isinstance(data, dict):
-            self.keyOrder = data.keys()
-        else:
-            self.keyOrder = []
-            for key, value in data:
-                if key not in self.keyOrder:
-                    self.keyOrder.append(key)
-
-    def __deepcopy__(self, memo):
-        from copy import deepcopy
-        return self.__class__([(key, deepcopy(value, memo))
-                               for key, value in self.iteritems()])
-
-    def __setitem__(self, key, value):
-        super(SortedDict, self).__setitem__(key, value)
-        if key not in self.keyOrder:
-            self.keyOrder.append(key)
-
-    def __delitem__(self, key):
-        super(SortedDict, self).__delitem__(key)
-        self.keyOrder.remove(key)
-
-    def __iter__(self):
-        for k in self.keyOrder:
-            yield k
-
-    def pop(self, k, *args):
-        result = super(SortedDict, self).pop(k, *args)
-        try:
-            self.keyOrder.remove(k)
-        except ValueError:
-            # Key wasn't in the dictionary in the first place. No problem.
-            pass
-        return result
-
-    def popitem(self):
-        result = super(SortedDict, self).popitem()
-        self.keyOrder.remove(result[0])
-        return result
-
-    def items(self):
-        return zip(self.keyOrder, self.values())
-
-    def iteritems(self):
-        for key in self.keyOrder:
-            yield key, super(SortedDict, self).__getitem__(key)
-
-    def keys(self):
-        return self.keyOrder[:]
-
-    def iterkeys(self):
-        return iter(self.keyOrder)
-
-    def values(self):
-        return [super(SortedDict, self).__getitem__(k) for k in self.keyOrder]
-
-    def itervalues(self):
-        for key in self.keyOrder:
-            yield super(SortedDict, self).__getitem__(key)
-
-    def update(self, dict_):
-        for k, v in dict_.items():
-            self.__setitem__(k, v)
-
-    def setdefault(self, key, default):
-        if key not in self.keyOrder:
-            self.keyOrder.append(key)
-        return super(SortedDict, self).setdefault(key, default)
-
-    def value_for_index(self, index):
-        """Returns the value of the item at the given zero-based index."""
-        return self[self.keyOrder[index]]
-
-    def insert(self, index, key, value):
-        """Inserts the key, value pair before the item with the given index."""
-        if key in self.keyOrder:
-            n = self.keyOrder.index(key)
-            del self.keyOrder[n]
-            if n < index:
-                index -= 1
-        self.keyOrder.insert(index, key)
-        super(SortedDict, self).__setitem__(key, value)
-
-    def copy(self):
-        """Returns a copy of this object."""
-        # This way of initializing the copy means it works for subclasses, too.
-        obj = self.__class__(self)
-        obj.keyOrder = self.keyOrder[:]
-        return obj
-
-    def __repr__(self):
-        """
-        Replaces the normal dict.__repr__ with a version that returns the keys
-        in their sorted order.
-        """
-        return '{%s}' % ', '.join(['%r: %r' % (k, v) for k, v in self.items()])
-
-    def clear(self):
-        super(SortedDict, self).clear()
-        self.keyOrder = []
-
-class MultiValueDictKeyError(KeyError):
-    pass
-
-class MultiValueDict(dict):
-    """
-    A subclass of dictionary customized to handle multiple values for the
-    same key.
-
-    >>> d = MultiValueDict({'name': ['Adrian', 'Simon'], 'position': ['Developer']})
-    >>> d['name']
-    'Simon'
-    >>> d.getlist('name')
-    ['Adrian', 'Simon']
-    >>> d.get('lastname', 'nonexistent')
-    'nonexistent'
-    >>> d.setlist('lastname', ['Holovaty', 'Willison'])
-
-    This class exists to solve the irritating problem raised by cgi.parse_qs,
-    which returns a list for every key, even though most Web forms submit
-    single name-value pairs.
-    """
-    def __init__(self, key_to_list_mapping=()):
-        super(MultiValueDict, self).__init__(key_to_list_mapping)
-
-    def __repr__(self):
-        return "<%s: %s>" % (self.__class__.__name__,
-                             super(MultiValueDict, self).__repr__())
-
-    def __getitem__(self, key):
-        """
-        Returns the last data value for this key, or [] if it's an empty list;
-        raises KeyError if not found.
-        """
-        try:
-            list_ = super(MultiValueDict, self).__getitem__(key)
-        except KeyError:
-            raise MultiValueDictKeyError, "Key %r not found in %r" % (key, self)
-        try:
-            return list_[-1]
-        except IndexError:
-            return []
-
-    def __setitem__(self, key, value):
-        super(MultiValueDict, self).__setitem__(key, [value])
-
-    def __copy__(self):
-        return self.__class__(super(MultiValueDict, self).items())
-
-    def __deepcopy__(self, memo=None):
-        import copy
-        if memo is None:
-            memo = {}
-        result = self.__class__()
-        memo[id(self)] = result
-        for key, value in dict.items(self):
-            dict.__setitem__(result, copy.deepcopy(key, memo),
-                             copy.deepcopy(value, memo))
-        return result
-
-    def get(self, key, default=None):
-        """
-        Returns the last data value for the passed key. If key doesn't exist
-        or value is an empty list, then default is returned.
-        """
-        try:
-            val = self[key]
-        except KeyError:
-            return default
-        if val == []:
-            return default
-        return val
-
-    def getlist(self, key):
-        """
-        Returns the list of values for the passed key. If key doesn't exist,
-        then an empty list is returned.
-        """
-        try:
-            return super(MultiValueDict, self).__getitem__(key)
-        except KeyError:
-            return []
-
-    def setlist(self, key, list_):
-        super(MultiValueDict, self).__setitem__(key, list_)
-
-    def setdefault(self, key, default=None):
-        if key not in self:
-            self[key] = default
-        return self[key]
-
-    def setlistdefault(self, key, default_list=()):
-        if key not in self:
-            self.setlist(key, default_list)
-        return self.getlist(key)
-
-    def appendlist(self, key, value):
-        """Appends an item to the internal list associated with key."""
-        self.setlistdefault(key, [])
-        super(MultiValueDict, self).__setitem__(key, self.getlist(key) + [value])
-
-    def items(self):
-        """
-        Returns a list of (key, value) pairs, where value is the last item in
-        the list associated with the key.
-        """
-        return [(key, self[key]) for key in self.keys()]
-
-    def iteritems(self):
-        """
-        Yields (key, value) pairs, where value is the last item in the list
-        associated with the key.
-        """
-        for key in self.keys():
-            yield (key, self[key])
-
-    def lists(self):
-        """Returns a list of (key, list) pairs."""
-        return super(MultiValueDict, self).items()
-
-    def values(self):
-        """Returns a list of the last value on every key list."""
-        return [self[key] for key in self.keys()]
-
-    def copy(self):
-        """Returns a copy of this object."""
-        return self.__deepcopy__()
-
-    def update(self, *args, **kwargs):
-        """
-        update() extends rather than replaces existing key lists.
-        Also accepts keyword args.
-        """
-        if len(args) > 1:
-            raise TypeError, "update expected at most 1 arguments, got %d" % len(args)
-        if args:
-            other_dict = args[0]
-            if isinstance(other_dict, MultiValueDict):
-                for key, value_list in other_dict.lists():
-                    self.setlistdefault(key, []).extend(value_list)
-            else:
-                try:
-                    for key, value in other_dict.items():
-                        self.setlistdefault(key, []).append(value)
-                except TypeError:
-                    raise ValueError, "MultiValueDict.update() takes either a MultiValueDict or dictionary"
-        for key, value in kwargs.iteritems():
-            self.setlistdefault(key, []).append(value)
-
-class DotExpandedDict(dict):
-    """
-    A special dictionary constructor that takes a dictionary in which the keys
-    may contain dots to specify inner dictionaries. It's confusing, but this
-    example should make sense.
-
-    >>> d = DotExpandedDict({'person.1.firstname': ['Simon'], \
-            'person.1.lastname': ['Willison'], \
-            'person.2.firstname': ['Adrian'], \
-            'person.2.lastname': ['Holovaty']})
-    >>> d
-    {'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}}
-    >>> d['person']
-    {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}
-    >>> d['person']['1']
-    {'lastname': ['Willison'], 'firstname': ['Simon']}
-
-    # Gotcha: Results are unpredictable if the dots are "uneven":
-    >>> DotExpandedDict({'c.1': 2, 'c.2': 3, 'c': 1})
-    {'c': 1}
-    """
-    def __init__(self, key_to_list_mapping):
-        for k, v in key_to_list_mapping.items():
-            current = self
-            bits = k.split('.')
-            for bit in bits[:-1]:
-                current = current.setdefault(bit, {})
-            # Now assign value to current position
-            try:
-                current[bits[-1]] = v
-            except TypeError: # Special-case if current isn't a dict.
-                current = {bits[-1]: v}
-
-class ImmutableList(tuple):
-    """
-    A tuple-like object that raises useful errors when it is asked to mutate.
-
-    Example::
-
-        >>> a = ImmutableList(range(5), warning="You cannot mutate this.")
-        >>> a[3] = '4'
-        Traceback (most recent call last):
-            ...
-        AttributeError: You cannot mutate this.
-    """
-
-    def __new__(cls, *args, **kwargs):
-        if 'warning' in kwargs:
-            warning = kwargs['warning']
-            del kwargs['warning']
-        else:
-            warning = 'ImmutableList object is immutable.'
-        self = tuple.__new__(cls, *args, **kwargs)
-        self.warning = warning
-        return self
-
-    def complain(self, *wargs, **kwargs):
-        if isinstance(self.warning, Exception):
-            raise self.warning
-        else:
-            raise AttributeError, self.warning
-
-    # All list mutation functions complain.
-    __delitem__  = complain
-    __delslice__ = complain
-    __iadd__     = complain
-    __imul__     = complain
-    __setitem__  = complain
-    __setslice__ = complain
-    append       = complain
-    extend       = complain
-    insert       = complain
-    pop          = complain
-    remove       = complain
-    sort         = complain
-    reverse      = complain
-
-class DictWrapper(dict):
-    """
-    Wraps accesses to a dictionary so that certain values (those starting with
-    the specified prefix) are passed through a function before being returned.
-    The prefix is removed before looking up the real value.
-
-    Used by the SQL construction code to ensure that values are correctly
-    quoted before being used.
-    """
-    def __init__(self, data, func, prefix):
-        super(DictWrapper, self).__init__(data)
-        self.func = func
-        self.prefix = prefix
-
-    def __getitem__(self, key):
-        """
-        Retrieves the real value after stripping the prefix string (if
-        present). If the prefix is present, pass the value through self.func
-        before returning, otherwise return the raw value.
-        """
-        if key.startswith(self.prefix):
-            use_func = True
-            key = key[len(self.prefix):]
-        else:
-            use_func = False
-        value = super(DictWrapper, self).__getitem__(key)
-        if use_func:
-            return self.func(value)
-        return value
-
diff --git a/webapp/django/utils/dateformat.py b/webapp/django/utils/dateformat.py
deleted file mode 100644
index 8da9385..0000000
--- a/webapp/django/utils/dateformat.py
+++ /dev/null
@@ -1,269 +0,0 @@
-"""
-PHP date() style date formatting
-See http://www.php.net/date for format strings
-
-Usage:
->>> import datetime
->>> d = datetime.datetime.now()
->>> df = DateFormat(d)
->>> print df.format('jS F Y H:i')
-7th October 2003 11:39
->>>
-"""
-
-from django.utils.dates import MONTHS, MONTHS_3, MONTHS_AP, WEEKDAYS, WEEKDAYS_ABBR
-from django.utils.tzinfo import LocalTimezone
-from django.utils.translation import ugettext as _
-from django.utils.encoding import force_unicode
-from calendar import isleap, monthrange
-import re, time
-
-re_formatchars = re.compile(r'(?<!\\)([aAbBdDfFgGhHiIjlLmMnNOPrsStTUwWyYzZ])')
-re_escaped = re.compile(r'\\(.)')
-
-class Formatter(object):
-    def format(self, formatstr):
-        pieces = []
-        for i, piece in enumerate(re_formatchars.split(force_unicode(formatstr))):
-            if i % 2:
-                pieces.append(force_unicode(getattr(self, piece)()))
-            elif piece:
-                pieces.append(re_escaped.sub(r'\1', piece))
-        return u''.join(pieces)
-
-class TimeFormat(Formatter):
-    def __init__(self, t):
-        self.data = t
-
-    def a(self):
-        "'a.m.' or 'p.m.'"
-        if self.data.hour > 11:
-            return _('p.m.')
-        return _('a.m.')
-
-    def A(self):
-        "'AM' or 'PM'"
-        if self.data.hour > 11:
-            return _('PM')
-        return _('AM')
-
-    def B(self):
-        "Swatch Internet time"
-        raise NotImplementedError
-
-    def f(self):
-        """
-        Time, in 12-hour hours and minutes, with minutes left off if they're
-        zero.
-        Examples: '1', '1:30', '2:05', '2'
-        Proprietary extension.
-        """
-        if self.data.minute == 0:
-            return self.g()
-        return u'%s:%s' % (self.g(), self.i())
-
-    def g(self):
-        "Hour, 12-hour format without leading zeros; i.e. '1' to '12'"
-        if self.data.hour == 0:
-            return 12
-        if self.data.hour > 12:
-            return self.data.hour - 12
-        return self.data.hour
-
-    def G(self):
-        "Hour, 24-hour format without leading zeros; i.e. '0' to '23'"
-        return self.data.hour
-
-    def h(self):
-        "Hour, 12-hour format; i.e. '01' to '12'"
-        return u'%02d' % self.g()
-
-    def H(self):
-        "Hour, 24-hour format; i.e. '00' to '23'"
-        return u'%02d' % self.G()
-
-    def i(self):
-        "Minutes; i.e. '00' to '59'"
-        return u'%02d' % self.data.minute
-
-    def P(self):
-        """
-        Time, in 12-hour hours, minutes and 'a.m.'/'p.m.', with minutes left off
-        if they're zero and the strings 'midnight' and 'noon' if appropriate.
-        Examples: '1 a.m.', '1:30 p.m.', 'midnight', 'noon', '12:30 p.m.'
-        Proprietary extension.
-        """
-        if self.data.minute == 0 and self.data.hour == 0:
-            return _('midnight')
-        if self.data.minute == 0 and self.data.hour == 12:
-            return _('noon')
-        return u'%s %s' % (self.f(), self.a())
-
-    def s(self):
-        "Seconds; i.e. '00' to '59'"
-        return u'%02d' % self.data.second
-
-class DateFormat(TimeFormat):
-    year_days = [None, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
-
-    def __init__(self, dt):
-        # Accepts either a datetime or date object.
-        self.data = dt
-        self.timezone = getattr(dt, 'tzinfo', None)
-        if hasattr(self.data, 'hour') and not self.timezone:
-            self.timezone = LocalTimezone(dt)
-
-    def b(self):
-        "Month, textual, 3 letters, lowercase; e.g. 'jan'"
-        return MONTHS_3[self.data.month]
-
-    def d(self):
-        "Day of the month, 2 digits with leading zeros; i.e. '01' to '31'"
-        return u'%02d' % self.data.day
-
-    def D(self):
-        "Day of the week, textual, 3 letters; e.g. 'Fri'"
-        return WEEKDAYS_ABBR[self.data.weekday()]
-
-    def F(self):
-        "Month, textual, long; e.g. 'January'"
-        return MONTHS[self.data.month]
-
-    def I(self):
-        "'1' if Daylight Savings Time, '0' otherwise."
-        if self.timezone.dst(self.data):
-            return u'1'
-        else:
-            return u'0'
-
-    def j(self):
-        "Day of the month without leading zeros; i.e. '1' to '31'"
-        return self.data.day
-
-    def l(self):
-        "Day of the week, textual, long; e.g. 'Friday'"
-        return WEEKDAYS[self.data.weekday()]
-
-    def L(self):
-        "Boolean for whether it is a leap year; i.e. True or False"
-        return isleap(self.data.year)
-
-    def m(self):
-        "Month; i.e. '01' to '12'"
-        return u'%02d' % self.data.month
-
-    def M(self):
-        "Month, textual, 3 letters; e.g. 'Jan'"
-        return MONTHS_3[self.data.month].title()
-
-    def n(self):
-        "Month without leading zeros; i.e. '1' to '12'"
-        return self.data.month
-
-    def N(self):
-        "Month abbreviation in Associated Press style. Proprietary extension."
-        return MONTHS_AP[self.data.month]
-
-    def O(self):
-        "Difference to Greenwich time in hours; e.g. '+0200'"
-        seconds = self.Z()
-        return u"%+03d%02d" % (seconds // 3600, (seconds // 60) % 60)
-
-    def r(self):
-        "RFC 2822 formatted date; e.g. 'Thu, 21 Dec 2000 16:01:07 +0200'"
-        return self.format('D, j M Y H:i:s O')
-
-    def S(self):
-        "English ordinal suffix for the day of the month, 2 characters; i.e. 'st', 'nd', 'rd' or 'th'"
-        if self.data.day in (11, 12, 13): # Special case
-            return u'th'
-        last = self.data.day % 10
-        if last == 1:
-            return u'st'
-        if last == 2:
-            return u'nd'
-        if last == 3:
-            return u'rd'
-        return u'th'
-
-    def t(self):
-        "Number of days in the given month; i.e. '28' to '31'"
-        return u'%02d' % monthrange(self.data.year, self.data.month)[1]
-
-    def T(self):
-        "Time zone of this machine; e.g. 'EST' or 'MDT'"
-        name = self.timezone.tzname(self.data)
-        if name is None:
-            name = self.format('O')
-        return unicode(name)
-
-    def U(self):
-        "Seconds since the Unix epoch (January 1 1970 00:00:00 GMT)"
-        off = self.timezone.utcoffset(self.data)
-        return int(time.mktime(self.data.timetuple())) + off.seconds * 60
-
-    def w(self):
-        "Day of the week, numeric, i.e. '0' (Sunday) to '6' (Saturday)"
-        return (self.data.weekday() + 1) % 7
-
-    def W(self):
-        "ISO-8601 week number of year, weeks starting on Monday"
-        # Algorithm from http://www.personal.ecu.edu/mccartyr/ISOwdALG.txt
-        week_number = None
-        jan1_weekday = self.data.replace(month=1, day=1).weekday() + 1
-        weekday = self.data.weekday() + 1
-        day_of_year = self.z()
-        if day_of_year <= (8 - jan1_weekday) and jan1_weekday > 4:
-            if jan1_weekday == 5 or (jan1_weekday == 6 and isleap(self.data.year-1)):
-                week_number = 53
-            else:
-                week_number = 52
-        else:
-            if isleap(self.data.year):
-                i = 366
-            else:
-                i = 365
-            if (i - day_of_year) < (4 - weekday):
-                week_number = 1
-            else:
-                j = day_of_year + (7 - weekday) + (jan1_weekday - 1)
-                week_number = j // 7
-                if jan1_weekday > 4:
-                    week_number -= 1
-        return week_number
-
-    def y(self):
-        "Year, 2 digits; e.g. '99'"
-        return unicode(self.data.year)[2:]
-
-    def Y(self):
-        "Year, 4 digits; e.g. '1999'"
-        return self.data.year
-
-    def z(self):
-        "Day of the year; i.e. '0' to '365'"
-        doy = self.year_days[self.data.month] + self.data.day
-        if self.L() and self.data.month > 2:
-            doy += 1
-        return doy
-
-    def Z(self):
-        """
-        Time zone offset in seconds (i.e. '-43200' to '43200'). The offset for
-        timezones west of UTC is always negative, and for those east of UTC is
-        always positive.
-        """
-        offset = self.timezone.utcoffset(self.data)
-        # Only days can be negative, so negative offsets have days=-1 and
-        # seconds positive. Positive offsets have days=0
-        return offset.days * 86400 + offset.seconds
-
-def format(value, format_string):
-    "Convenience function"
-    df = DateFormat(value)
-    return df.format(format_string)
-
-def time_format(value, format_string):
-    "Convenience function"
-    tf = TimeFormat(value)
-    return tf.format(format_string)
diff --git a/webapp/django/utils/dates.py b/webapp/django/utils/dates.py
deleted file mode 100644
index 4427af8..0000000
--- a/webapp/django/utils/dates.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"Commonly-used date structures"
-
-from django.utils.translation import ugettext_lazy as _
-
-WEEKDAYS = {
-    0:_('Monday'), 1:_('Tuesday'), 2:_('Wednesday'), 3:_('Thursday'), 4:_('Friday'),
-    5:_('Saturday'), 6:_('Sunday')
-}
-WEEKDAYS_ABBR = {
-    0:_('Mon'), 1:_('Tue'), 2:_('Wed'), 3:_('Thu'), 4:_('Fri'),
-    5:_('Sat'), 6:_('Sun')
-}
-WEEKDAYS_REV = {
-    'monday':0, 'tuesday':1, 'wednesday':2, 'thursday':3, 'friday':4,
-    'saturday':5, 'sunday':6
-}
-MONTHS = {
-    1:_('January'), 2:_('February'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'),
-    7:_('July'), 8:_('August'), 9:_('September'), 10:_('October'), 11:_('November'),
-    12:_('December')
-}
-MONTHS_3 = {
-    1:_('jan'), 2:_('feb'), 3:_('mar'), 4:_('apr'), 5:_('may'), 6:_('jun'),
-    7:_('jul'), 8:_('aug'), 9:_('sep'), 10:_('oct'), 11:_('nov'), 12:_('dec')
-}
-MONTHS_3_REV = {
-    'jan':1, 'feb':2, 'mar':3, 'apr':4, 'may':5, 'jun':6, 'jul':7, 'aug':8,
-    'sep':9, 'oct':10, 'nov':11, 'dec':12
-}
-MONTHS_AP = { # month names in Associated Press style
-    1:_('Jan.'), 2:_('Feb.'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'), 7:_('July'),
-    8:_('Aug.'), 9:_('Sept.'), 10:_('Oct.'), 11:_('Nov.'), 12:_('Dec.')
-}
diff --git a/webapp/django/utils/datetime_safe.py b/webapp/django/utils/datetime_safe.py
deleted file mode 100644
index a048ecd..0000000
--- a/webapp/django/utils/datetime_safe.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Python's datetime strftime doesn't handle dates before 1900.
-# These classes override date and datetime to support the formatting of a date
-# through its full "proleptic Gregorian" date range.
-#
-# Based on code submitted to comp.lang.python by Andrew Dalke
-#
-# >>> datetime_safe.date(1850, 8, 2).strftime("%Y/%M/%d was a %A")
-# '1850/08/02 was a Friday'
-
-from datetime import date as real_date, datetime as real_datetime
-import re
-import time
-
-class date(real_date):
-    def strftime(self, fmt):
-        return strftime(self, fmt)
-
-class datetime(real_datetime):
-    def strftime(self, fmt):
-        return strftime(self, fmt)
-
-    def combine(self, date, time):
-        return datetime(date.year, date.month, date.day, time.hour, time.minute, time.microsecond, time.tzinfo)
-
-    def date(self):
-        return date(self.year, self.month, self.day)
-
-def new_date(d):
-    "Generate a safe date from a datetime.date object."
-    return date(d.year, d.month, d.day)
-
-def new_datetime(d):
-    """
-    Generate a safe datetime from a datetime.date or datetime.datetime object.
-    """
-    kw = [d.year, d.month, d.day]
-    if isinstance(d, real_datetime):
-        kw.extend([d.hour, d.minute, d.second, d.microsecond, d.tzinfo])
-    return datetime(*kw)
-
-# This library does not support strftime's "%s" or "%y" format strings.
-# Allowed if there's an even number of "%"s because they are escaped.
-_illegal_formatting = re.compile(r"((^|[^%])(%%)*%[sy])")
-
-def _findall(text, substr):
-    # Also finds overlaps
-    sites = []
-    i = 0
-    while 1:
-        j = text.find(substr, i)
-        if j == -1:
-            break
-        sites.append(j)
-        i=j+1
-    return sites
-
-def strftime(dt, fmt):
-    if dt.year >= 1900:
-        return super(type(dt), dt).strftime(fmt)
-    illegal_formatting = _illegal_formatting.search(fmt)
-    if illegal_formatting:
-        raise TypeError("strftime of dates before 1900 does not handle" + illegal_formatting.group(0))
-
-    year = dt.year
-    # For every non-leap year century, advance by
-    # 6 years to get into the 28-year repeat cycle
-    delta = 2000 - year
-    off = 6 * (delta // 100 + delta // 400)
-    year = year + off
-
-    # Move to around the year 2000
-    year = year + ((2000 - year) // 28) * 28
-    timetuple = dt.timetuple()
-    s1 = time.strftime(fmt, (year,) + timetuple[1:])
-    sites1 = _findall(s1, str(year))
-
-    s2 = time.strftime(fmt, (year+28,) + timetuple[1:])
-    sites2 = _findall(s2, str(year+28))
-
-    sites = []
-    for site in sites1:
-        if site in sites2:
-            sites.append(site)
-
-    s = s1
-    syear = "%4d" % (dt.year,)
-    for site in sites:
-        s = s[:site] + syear + s[site+4:]
-    return s
diff --git a/webapp/django/utils/decorators.py b/webapp/django/utils/decorators.py
deleted file mode 100644
index 8fc4c1d..0000000
--- a/webapp/django/utils/decorators.py
+++ /dev/null
@@ -1,61 +0,0 @@
-"Functions that help with dynamically creating decorators for views."
-
-import types
-try:
-    from functools import wraps
-except ImportError:
-    from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
-
-def decorator_from_middleware(middleware_class):
-    """
-    Given a middleware class (not an instance), returns a view decorator. This
-    lets you use middleware functionality on a per-view basis.
-    """
-    def _decorator_from_middleware(*args, **kwargs):
-        # For historical reasons, these "decorators" are also called as
-        # dec(func, *args) instead of dec(*args)(func). We handle both forms
-        # for backwards compatibility.
-        has_func = True
-        try:
-            view_func = kwargs.pop('view_func')
-        except KeyError:
-            if len(args):
-                view_func, args = args[0], args[1:]
-            else:
-                has_func = False
-        if not (has_func and isinstance(view_func, types.FunctionType)):
-            # We are being called as a decorator.
-            if has_func:
-                args = (view_func,) + args
-            middleware = middleware_class(*args, **kwargs)
-
-            def decorator_func(fn):
-                return _decorator_from_middleware(fn, *args, **kwargs)
-            return decorator_func
-
-        middleware = middleware_class(*args, **kwargs)
-
-        def _wrapped_view(request, *args, **kwargs):
-            if hasattr(middleware, 'process_request'):
-                result = middleware.process_request(request)
-                if result is not None:
-                    return result
-            if hasattr(middleware, 'process_view'):
-                result = middleware.process_view(request, view_func, args, kwargs)
-                if result is not None:
-                    return result
-            try:
-                response = view_func(request, *args, **kwargs)
-            except Exception, e:
-                if hasattr(middleware, 'process_exception'):
-                    result = middleware.process_exception(request, e)
-                    if result is not None:
-                        return result
-                raise
-            if hasattr(middleware, 'process_response'):
-                result = middleware.process_response(request, response)
-                if result is not None:
-                    return result
-            return response
-        return wraps(view_func)(_wrapped_view)
-    return _decorator_from_middleware
diff --git a/webapp/django/utils/encoding.py b/webapp/django/utils/encoding.py
deleted file mode 100644
index c54e676..0000000
--- a/webapp/django/utils/encoding.py
+++ /dev/null
@@ -1,100 +0,0 @@
-import types
-import urllib
-import datetime
-from django.utils.functional import Promise
-
-class DjangoUnicodeDecodeError(UnicodeDecodeError):
-    def __init__(self, obj, *args):
-        self.obj = obj
-        UnicodeDecodeError.__init__(self, *args)
-
-    def __str__(self):
-        original = UnicodeDecodeError.__str__(self)
-        return '%s. You passed in %r (%s)' % (original, self.obj,
-                type(self.obj))
-
-class StrAndUnicode(object):
-    """
-    A class whose __str__ returns its __unicode__ as a UTF-8 bytestring.
-
-    Useful as a mix-in.
-    """
-    def __str__(self):
-        return self.__unicode__().encode('utf-8')
-
-def smart_unicode(s, encoding='utf-8', strings_only=False, errors='strict'):
-    """
-    Returns a unicode object representing 's'. Treats bytestrings using the
-    'encoding' codec.
-
-    If strings_only is True, don't convert (some) non-string-like objects.
-    """
-    if isinstance(s, Promise):
-        # The input is the result of a gettext_lazy() call.
-        return s
-    return force_unicode(s, encoding, strings_only, errors)
-
-def force_unicode(s, encoding='utf-8', strings_only=False, errors='strict'):
-    """
-    Similar to smart_unicode, except that lazy instances are resolved to
-    strings, rather than kept as lazy objects.
-
-    If strings_only is True, don't convert (some) non-string-like objects.
-    """
-    if strings_only and isinstance(s, (types.NoneType, int, long, datetime.datetime, datetime.date, datetime.time, float)):
-        return s
-    try:
-        if not isinstance(s, basestring,):
-            if hasattr(s, '__unicode__'):
-                s = unicode(s)
-            else:
-                s = unicode(str(s), encoding, errors)
-        elif not isinstance(s, unicode):
-            # Note: We use .decode() here, instead of unicode(s, encoding,
-            # errors), so that if s is a SafeString, it ends up being a
-            # SafeUnicode at the end.
-            s = s.decode(encoding, errors)
-    except UnicodeDecodeError, e:
-        raise DjangoUnicodeDecodeError(s, *e.args)
-    return s
-
-def smart_str(s, encoding='utf-8', strings_only=False, errors='strict'):
-    """
-    Returns a bytestring version of 's', encoded as specified in 'encoding'.
-
-    If strings_only is True, don't convert (some) non-string-like objects.
-    """
-    if strings_only and isinstance(s, (types.NoneType, int)):
-        return s
-    if isinstance(s, Promise):
-        return unicode(s).encode(encoding, errors)
-    elif not isinstance(s, basestring):
-        try:
-            return str(s)
-        except UnicodeEncodeError:
-            return unicode(s).encode(encoding, errors)
-    elif isinstance(s, unicode):
-        return s.encode(encoding, errors)
-    elif s and encoding != 'utf-8':
-        return s.decode('utf-8', errors).encode(encoding, errors)
-    else:
-        return s
-
-def iri_to_uri(iri):
-    """
-    Convert an Internationalized Resource Identifier (IRI) portion to a URI
-    portion that is suitable for inclusion in a URL.
-
-    This is the algorithm from section 3.1 of RFC 3987.  However, since we are
-    assuming input is either UTF-8 or unicode already, we can simplify things a
-    little from the full method.
-
-    Returns an ASCII string containing the encoded result.
-    """
-    # The list of safe characters here is constructed from the printable ASCII
-    # characters that are not explicitly excluded by the list at the end of
-    # section 3.1 of RFC 3987.
-    if iri is None:
-        return iri
-    return urllib.quote(smart_str(iri), safe='/#%[]=:;$&()+,!?*')
-
diff --git a/webapp/django/utils/feedgenerator.py b/webapp/django/utils/feedgenerator.py
deleted file mode 100644
index de924a3..0000000
--- a/webapp/django/utils/feedgenerator.py
+++ /dev/null
@@ -1,351 +0,0 @@
-"""
-Syndication feed generation library -- used for generating RSS, etc.
-
-Sample usage:
-
->>> from django.utils import feedgenerator
->>> feed = feedgenerator.Rss201rev2Feed(
-...     title=u"Poynter E-Media Tidbits",
-...     link=u"http://www.poynter.org/column.asp?id=31",
-...     description=u"A group weblog by the sharpest minds in online media/journalism/publishing.",
-...     language=u"en",
-... )
->>> feed.add_item(title="Hello", link=u"http://www.holovaty.com/test/", description="Testing.")
->>> fp = open('test.rss', 'w')
->>> feed.write(fp, 'utf-8')
->>> fp.close()
-
-For definitions of the different versions of RSS, see:
-http://diveintomark.org/archives/2004/02/04/incompatible-rss
-"""
-
-import re
-import datetime
-from django.utils.xmlutils import SimplerXMLGenerator
-from django.utils.encoding import force_unicode, iri_to_uri
-
-def rfc2822_date(date):
-    # We do this ourselves to be timezone aware, email.Utils is not tz aware.
-    if date.tzinfo:
-        time_str = date.strftime('%a, %d %b %Y %H:%M:%S ')
-        offset = date.tzinfo.utcoffset(date)
-        timezone = (offset.days * 24 * 60) + (offset.seconds / 60)
-        hour, minute = divmod(timezone, 60)
-        return time_str + "%+03d%02d" % (hour, minute)
-    else:
-        return date.strftime('%a, %d %b %Y %H:%M:%S -0000')
-
-def rfc3339_date(date):
-    if date.tzinfo:
-        time_str = date.strftime('%Y-%m-%dT%H:%M:%S')
-        offset = date.tzinfo.utcoffset(date)
-        timezone = (offset.days * 24 * 60) + (offset.seconds / 60)
-        hour, minute = divmod(timezone, 60)
-        return time_str + "%+03d:%02d" % (hour, minute)
-    else:
-        return date.strftime('%Y-%m-%dT%H:%M:%SZ')
-
-def get_tag_uri(url, date):
-    "Creates a TagURI. See http://diveintomark.org/archives/2004/05/28/howto-atom-id"
-    tag = re.sub('^http://', '', url)
-    if date is not None:
-        tag = re.sub('/', ',%s:/' % date.strftime('%Y-%m-%d'), tag, 1)
-    tag = re.sub('#', '/', tag)
-    return u'tag:' + tag
-
-class SyndicationFeed(object):
-    "Base class for all syndication feeds. Subclasses should provide write()"
-    def __init__(self, title, link, description, language=None, author_email=None,
-            author_name=None, author_link=None, subtitle=None, categories=None,
-            feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs):
-        to_unicode = lambda s: force_unicode(s, strings_only=True)
-        if categories:
-            categories = [force_unicode(c) for c in categories]
-        self.feed = {
-            'title': to_unicode(title),
-            'link': iri_to_uri(link),
-            'description': to_unicode(description),
-            'language': to_unicode(language),
-            'author_email': to_unicode(author_email),
-            'author_name': to_unicode(author_name),
-            'author_link': iri_to_uri(author_link),
-            'subtitle': to_unicode(subtitle),
-            'categories': categories or (),
-            'feed_url': iri_to_uri(feed_url),
-            'feed_copyright': to_unicode(feed_copyright),
-            'id': feed_guid or link,
-            'ttl': ttl,
-        }
-        self.feed.update(kwargs)
-        self.items = []
-
-    def add_item(self, title, link, description, author_email=None,
-        author_name=None, author_link=None, pubdate=None, comments=None,
-        unique_id=None, enclosure=None, categories=(), item_copyright=None,
-        ttl=None, **kwargs):
-        """
-        Adds an item to the feed. All args are expected to be Python Unicode
-        objects except pubdate, which is a datetime.datetime object, and
-        enclosure, which is an instance of the Enclosure class.
-        """
-        to_unicode = lambda s: force_unicode(s, strings_only=True)
-        if categories:
-            categories = [to_unicode(c) for c in categories]
-        item = {
-            'title': to_unicode(title),
-            'link': iri_to_uri(link),
-            'description': to_unicode(description),
-            'author_email': to_unicode(author_email),
-            'author_name': to_unicode(author_name),
-            'author_link': iri_to_uri(author_link),
-            'pubdate': pubdate,
-            'comments': to_unicode(comments),
-            'unique_id': to_unicode(unique_id),
-            'enclosure': enclosure,
-            'categories': categories or (),
-            'item_copyright': to_unicode(item_copyright),
-            'ttl': ttl,
-        }
-        item.update(kwargs)
-        self.items.append(item)
-
-    def num_items(self):
-        return len(self.items)
-
-    def root_attributes(self):
-        """
-        Return extra attributes to place on the root (i.e. feed/channel) element.
-        Called from write().
-        """
-        return {}
-
-    def add_root_elements(self, handler):
-        """
-        Add elements in the the root (i.e. feed/channel) element. Called
-        from write().
-        """
-        pass
-
-    def item_attributes(self, item):
-        """
-        Return extra attributes to place on each item (i.e. item/entry) element.
-        """
-        return {}
-
-    def add_item_elements(self, handler, item):
-        """
-        Add elements on each item (i.e. item/entry) element.
-        """
-        pass
-
-    def write(self, outfile, encoding):
-        """
-        Outputs the feed in the given encoding to outfile, which is a file-like
-        object. Subclasses should override this.
-        """
-        raise NotImplementedError
-
-    def writeString(self, encoding):
-        """
-        Returns the feed in the given encoding as a string.
-        """
-        from StringIO import StringIO
-        s = StringIO()
-        self.write(s, encoding)
-        return s.getvalue()
-
-    def latest_post_date(self):
-        """
-        Returns the latest item's pubdate. If none of them have a pubdate,
-        this returns the current date/time.
-        """
-        updates = [i['pubdate'] for i in self.items if i['pubdate'] is not None]
-        if len(updates) > 0:
-            updates.sort()
-            return updates[-1]
-        else:
-            return datetime.datetime.now()
-
-class Enclosure(object):
-    "Represents an RSS enclosure"
-    def __init__(self, url, length, mime_type):
-        "All args are expected to be Python Unicode objects"
-        self.length, self.mime_type = length, mime_type
-        self.url = iri_to_uri(url)
-
-class RssFeed(SyndicationFeed):
-    mime_type = 'application/rss+xml'
-    def write(self, outfile, encoding):
-        handler = SimplerXMLGenerator(outfile, encoding)
-        handler.startDocument()
-        handler.startElement(u"rss", self.rss_attributes())
-        handler.startElement(u"channel", self.root_attributes())
-        self.add_root_elements(handler)
-        self.write_items(handler)
-        self.endChannelElement(handler)
-        handler.endElement(u"rss")
-
-    def rss_attributes(self):
-        return {u"version": self._version}
-
-    def write_items(self, handler):
-        for item in self.items:
-            handler.startElement(u'item', self.item_attributes(item))
-            self.add_item_elements(handler, item)
-            handler.endElement(u"item")
-
-    def add_root_elements(self, handler):
-        handler.addQuickElement(u"title", self.feed['title'])
-        handler.addQuickElement(u"link", self.feed['link'])
-        handler.addQuickElement(u"description", self.feed['description'])
-        if self.feed['language'] is not None:
-            handler.addQuickElement(u"language", self.feed['language'])
-        for cat in self.feed['categories']:
-            handler.addQuickElement(u"category", cat)
-        if self.feed['feed_copyright'] is not None:
-            handler.addQuickElement(u"copyright", self.feed['feed_copyright'])
-        handler.addQuickElement(u"lastBuildDate", rfc2822_date(self.latest_post_date()).decode('utf-8'))
-        if self.feed['ttl'] is not None:
-            handler.addQuickElement(u"ttl", self.feed['ttl'])
-
-    def endChannelElement(self, handler):
-        handler.endElement(u"channel")
-
-class RssUserland091Feed(RssFeed):
-    _version = u"0.91"
-    def add_item_elements(self, handler, item):
-        handler.addQuickElement(u"title", item['title'])
-        handler.addQuickElement(u"link", item['link'])
-        if item['description'] is not None:
-            handler.addQuickElement(u"description", item['description'])
-
-class Rss201rev2Feed(RssFeed):
-    # Spec: http://blogs.law.harvard.edu/tech/rss
-    _version = u"2.0"
-    def add_item_elements(self, handler, item):
-        handler.addQuickElement(u"title", item['title'])
-        handler.addQuickElement(u"link", item['link'])
-        if item['description'] is not None:
-            handler.addQuickElement(u"description", item['description'])
-
-        # Author information.
-        if item["author_name"] and item["author_email"]:
-            handler.addQuickElement(u"author", "%s (%s)" % \
-                (item['author_email'], item['author_name']))
-        elif item["author_email"]:
-            handler.addQuickElement(u"author", item["author_email"])
-        elif item["author_name"]:
-            handler.addQuickElement(u"dc:creator", item["author_name"], {"xmlns:dc": u"http://purl.org/dc/elements/1.1/"})
-
-        if item['pubdate'] is not None:
-            handler.addQuickElement(u"pubDate", rfc2822_date(item['pubdate']).decode('utf-8'))
-        if item['comments'] is not None:
-            handler.addQuickElement(u"comments", item['comments'])
-        if item['unique_id'] is not None:
-            handler.addQuickElement(u"guid", item['unique_id'])
-        if item['ttl'] is not None:
-            handler.addQuickElement(u"ttl", item['ttl'])
-
-        # Enclosure.
-        if item['enclosure'] is not None:
-            handler.addQuickElement(u"enclosure", '',
-                {u"url": item['enclosure'].url, u"length": item['enclosure'].length,
-                    u"type": item['enclosure'].mime_type})
-
-        # Categories.
-        for cat in item['categories']:
-            handler.addQuickElement(u"category", cat)
-
-class Atom1Feed(SyndicationFeed):
-    # Spec: http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html
-    mime_type = 'application/atom+xml'
-    ns = u"http://www.w3.org/2005/Atom"
-
-    def write(self, outfile, encoding):
-        handler = SimplerXMLGenerator(outfile, encoding)
-        handler.startDocument()
-        handler.startElement(u'feed', self.root_attributes())
-        self.add_root_elements(handler)
-        self.write_items(handler)
-        handler.endElement(u"feed")
-
-    def root_attributes(self):
-        if self.feed['language'] is not None:
-            return {u"xmlns": self.ns, u"xml:lang": self.feed['language']}
-        else:
-            return {u"xmlns": self.ns}
-
-    def add_root_elements(self, handler):
-        handler.addQuickElement(u"title", self.feed['title'])
-        handler.addQuickElement(u"link", "", {u"rel": u"alternate", u"href": self.feed['link']})
-        if self.feed['feed_url'] is not None:
-            handler.addQuickElement(u"link", "", {u"rel": u"self", u"href": self.feed['feed_url']})
-        handler.addQuickElement(u"id", self.feed['id'])
-        handler.addQuickElement(u"updated", rfc3339_date(self.latest_post_date()).decode('utf-8'))
-        if self.feed['author_name'] is not None:
-            handler.startElement(u"author", {})
-            handler.addQuickElement(u"name", self.feed['author_name'])
-            if self.feed['author_email'] is not None:
-                handler.addQuickElement(u"email", self.feed['author_email'])
-            if self.feed['author_link'] is not None:
-                handler.addQuickElement(u"uri", self.feed['author_link'])
-            handler.endElement(u"author")
-        if self.feed['subtitle'] is not None:
-            handler.addQuickElement(u"subtitle", self.feed['subtitle'])
-        for cat in self.feed['categories']:
-            handler.addQuickElement(u"category", "", {u"term": cat})
-        if self.feed['feed_copyright'] is not None:
-            handler.addQuickElement(u"rights", self.feed['feed_copyright'])
-
-    def write_items(self, handler):
-        for item in self.items:
-            handler.startElement(u"entry", self.item_attributes(item))
-            self.add_item_elements(handler, item)
-            handler.endElement(u"entry")
-
-    def add_item_elements(self, handler, item):
-        handler.addQuickElement(u"title", item['title'])
-        handler.addQuickElement(u"link", u"", {u"href": item['link'], u"rel": u"alternate"})
-        if item['pubdate'] is not None:
-            handler.addQuickElement(u"updated", rfc3339_date(item['pubdate']).decode('utf-8'))
-
-        # Author information.
-        if item['author_name'] is not None:
-            handler.startElement(u"author", {})
-            handler.addQuickElement(u"name", item['author_name'])
-            if item['author_email'] is not None:
-                handler.addQuickElement(u"email", item['author_email'])
-            if item['author_link'] is not None:
-                handler.addQuickElement(u"uri", item['author_link'])
-            handler.endElement(u"author")
-
-        # Unique ID.
-        if item['unique_id'] is not None:
-            unique_id = item['unique_id']
-        else:
-            unique_id = get_tag_uri(item['link'], item['pubdate'])
-        handler.addQuickElement(u"id", unique_id)
-
-        # Summary.
-        if item['description'] is not None:
-            handler.addQuickElement(u"summary", item['description'], {u"type": u"html"})
-
-        # Enclosure.
-        if item['enclosure'] is not None:
-            handler.addQuickElement(u"link", '',
-                {u"rel": u"enclosure",
-                 u"href": item['enclosure'].url,
-                 u"length": item['enclosure'].length,
-                 u"type": item['enclosure'].mime_type})
-
-        # Categories.
-        for cat in item['categories']:
-            handler.addQuickElement(u"category", u"", {u"term": cat})
-
-        # Rights.
-        if item['item_copyright'] is not None:
-            handler.addQuickElement(u"rights", item['item_copyright'])
-
-# This isolates the decision of what the system default is, so calling code can
-# do "feedgenerator.DefaultFeed" instead of "feedgenerator.Rss201rev2Feed".
-DefaultFeed = Rss201rev2Feed
diff --git a/webapp/django/utils/functional.py b/webapp/django/utils/functional.py
deleted file mode 100644
index 9a12eda..0000000
--- a/webapp/django/utils/functional.py
+++ /dev/null
@@ -1,253 +0,0 @@
-# License for code in this file that was taken from Python 2.5.
-
-# PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
-# --------------------------------------------
-#
-# 1. This LICENSE AGREEMENT is between the Python Software Foundation
-# ("PSF"), and the Individual or Organization ("Licensee") accessing and
-# otherwise using this software ("Python") in source or binary form and
-# its associated documentation.
-#
-# 2. Subject to the terms and conditions of this License Agreement, PSF
-# hereby grants Licensee a nonexclusive, royalty-free, world-wide
-# license to reproduce, analyze, test, perform and/or display publicly,
-# prepare derivative works, distribute, and otherwise use Python
-# alone or in any derivative version, provided, however, that PSF's
-# License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
-# 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation;
-# All Rights Reserved" are retained in Python alone or in any derivative
-# version prepared by Licensee.
-#
-# 3. In the event Licensee prepares a derivative work that is based on
-# or incorporates Python or any part thereof, and wants to make
-# the derivative work available to others as provided herein, then
-# Licensee hereby agrees to include in any such work a brief summary of
-# the changes made to Python.
-#
-# 4. PSF is making Python available to Licensee on an "AS IS"
-# basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-# IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
-# DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-# FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
-# INFRINGE ANY THIRD PARTY RIGHTS.
-#
-# 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-# FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-# A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
-# OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-#
-# 6. This License Agreement will automatically terminate upon a material
-# breach of its terms and conditions.
-#
-# 7. Nothing in this License Agreement shall be deemed to create any
-# relationship of agency, partnership, or joint venture between PSF and
-# Licensee.  This License Agreement does not grant permission to use PSF
-# trademarks or trade name in a trademark sense to endorse or promote
-# products or services of Licensee, or any third party.
-#
-# 8. By copying, installing or otherwise using Python, Licensee
-# agrees to be bound by the terms and conditions of this License
-# Agreement.
-
-
-def curry(_curried_func, *args, **kwargs):
-    def _curried(*moreargs, **morekwargs):
-        return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
-    return _curried
-
-### Begin from Python 2.5 functools.py ########################################
-
-# Summary of changes made to the Python 2.5 code below:
-#   * swapped ``partial`` for ``curry`` to maintain backwards-compatibility
-#     in Django.
-#   * Wrapped the ``setattr`` call in ``update_wrapper`` with a try-except
-#     block to make it compatible with Python 2.3, which doesn't allow
-#     assigning to ``__name__``.
-
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation.
-# All Rights Reserved.
-
-###############################################################################
-
-# update_wrapper() and wraps() are tools to help write
-# wrapper functions that can handle naive introspection
-
-WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__')
-WRAPPER_UPDATES = ('__dict__',)
-def update_wrapper(wrapper,
-                   wrapped,
-                   assigned = WRAPPER_ASSIGNMENTS,
-                   updated = WRAPPER_UPDATES):
-    """Update a wrapper function to look like the wrapped function
-
-       wrapper is the function to be updated
-       wrapped is the original function
-       assigned is a tuple naming the attributes assigned directly
-       from the wrapped function to the wrapper function (defaults to
-       functools.WRAPPER_ASSIGNMENTS)
-       updated is a tuple naming the attributes off the wrapper that
-       are updated with the corresponding attribute from the wrapped
-       function (defaults to functools.WRAPPER_UPDATES)
-    """
-    for attr in assigned:
-        try:
-            setattr(wrapper, attr, getattr(wrapped, attr))
-        except TypeError: # Python 2.3 doesn't allow assigning to __name__.
-            pass
-    for attr in updated:
-        getattr(wrapper, attr).update(getattr(wrapped, attr))
-    # Return the wrapper so this can be used as a decorator via curry()
-    return wrapper
-
-def wraps(wrapped,
-          assigned = WRAPPER_ASSIGNMENTS,
-          updated = WRAPPER_UPDATES):
-    """Decorator factory to apply update_wrapper() to a wrapper function
-
-       Returns a decorator that invokes update_wrapper() with the decorated
-       function as the wrapper argument and the arguments to wraps() as the
-       remaining arguments. Default arguments are as for update_wrapper().
-       This is a convenience function to simplify applying curry() to
-       update_wrapper().
-    """
-    return curry(update_wrapper, wrapped=wrapped,
-                 assigned=assigned, updated=updated)
-
-### End from Python 2.5 functools.py ##########################################
-
-def memoize(func, cache, num_args):
-    """
-    Wrap a function so that results for any argument tuple are stored in
-    'cache'. Note that the args to the function must be usable as dictionary
-    keys.
-
-    Only the first num_args are considered when creating the key.
-    """
-    def wrapper(*args):
-        mem_args = args[:num_args]
-        if mem_args in cache:
-            return cache[mem_args]
-        result = func(*args)
-        cache[mem_args] = result
-        return result
-    return wraps(func)(wrapper)
-
-class Promise(object):
-    """
-    This is just a base class for the proxy class created in
-    the closure of the lazy function. It can be used to recognize
-    promises in code.
-    """
-    pass
-
-def lazy(func, *resultclasses):
-    """
-    Turns any callable into a lazy evaluated callable. You need to give result
-    classes or types -- at least one is needed so that the automatic forcing of
-    the lazy evaluation code is triggered. Results are not memoized; the
-    function is evaluated on every access.
-    """
-    class __proxy__(Promise):
-        """
-        Encapsulate a function call and act as a proxy for methods that are
-        called on the result of that function. The function is not evaluated
-        until one of the methods on the result is called.
-        """
-        __dispatch = None
-
-        def __init__(self, args, kw):
-            self.__func = func
-            self.__args = args
-            self.__kw = kw
-            if self.__dispatch is None:
-                self.__prepare_class__()
-
-        def __prepare_class__(cls):
-            cls.__dispatch = {}
-            for resultclass in resultclasses:
-                cls.__dispatch[resultclass] = {}
-                for (k, v) in resultclass.__dict__.items():
-                    if hasattr(cls, k):
-                        continue
-                    setattr(cls, k, cls.__promise__(resultclass, k, v))
-            cls._delegate_str = str in resultclasses
-            cls._delegate_unicode = unicode in resultclasses
-            assert not (cls._delegate_str and cls._delegate_unicode), "Cannot call lazy() with both str and unicode return types."
-            if cls._delegate_unicode:
-                cls.__unicode__ = cls.__unicode_cast
-            elif cls._delegate_str:
-                cls.__str__ = cls.__str_cast
-        __prepare_class__ = classmethod(__prepare_class__)
-
-        def __promise__(cls, klass, funcname, func):
-            # Builds a wrapper around some magic method and registers that magic
-            # method for the given type and method name.
-            def __wrapper__(self, *args, **kw):
-                # Automatically triggers the evaluation of a lazy value and
-                # applies the given magic method of the result type.
-                res = self.__func(*self.__args, **self.__kw)
-                for t in type(res).mro():
-                    if t in self.__dispatch:
-                        return self.__dispatch[t][funcname](res, *args, **kw)
-                raise TypeError("Lazy object returned unexpected type.")
-
-            if klass not in cls.__dispatch:
-                cls.__dispatch[klass] = {}
-            cls.__dispatch[klass][funcname] = func
-            return __wrapper__
-        __promise__ = classmethod(__promise__)
-
-        def __unicode_cast(self):
-            return self.__func(*self.__args, **self.__kw)
-
-        def __str_cast(self):
-            return str(self.__func(*self.__args, **self.__kw))
-
-        def __cmp__(self, rhs):
-            if self._delegate_str:
-                s = str(self.__func(*self.__args, **self.__kw))
-            elif self._delegate_unicode:
-                s = unicode(self.__func(*self.__args, **self.__kw))
-            else:
-                s = self.__func(*self.__args, **self.__kw)
-            if isinstance(rhs, Promise):
-                return -cmp(rhs, s)
-            else:
-                return cmp(s, rhs)
-
-        def __mod__(self, rhs):
-            if self._delegate_str:
-                return str(self) % rhs
-            elif self._delegate_unicode:
-                return unicode(self) % rhs
-            else:
-                raise AssertionError('__mod__ not supported for non-string types')
-
-        def __deepcopy__(self, memo):
-            # Instances of this class are effectively immutable. It's just a
-            # collection of functions. So we don't need to do anything
-            # complicated for copying.
-            memo[id(self)] = self
-            return self
-
-    def __wrapper__(*args, **kw):
-        # Creates the proxy object, instead of the actual value.
-        return __proxy__(args, kw)
-
-    return wraps(func)(__wrapper__)
-
-def allow_lazy(func, *resultclasses):
-    """
-    A decorator that allows a function to be called with one or more lazy
-    arguments. If none of the args are lazy, the function is evaluated
-    immediately, otherwise a __proxy__ is returned that will evaluate the
-    function when needed.
-    """
-    def wrapper(*args, **kwargs):
-        for arg in list(args) + kwargs.values():
-            if isinstance(arg, Promise):
-                break
-        else:
-            return func(*args, **kwargs)
-        return lazy(func, *resultclasses)(*args, **kwargs)
-    return wraps(func)(wrapper)
diff --git a/webapp/django/utils/hashcompat.py b/webapp/django/utils/hashcompat.py
deleted file mode 100644
index 8880d92..0000000
--- a/webapp/django/utils/hashcompat.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""
-The md5 and sha modules are deprecated since Python 2.5, replaced by the
-hashlib module containing both hash algorithms. Here, we provide a common
-interface to the md5 and sha constructors, preferring the hashlib module when
-available.
-"""
-
-try:
-    import hashlib
-    md5_constructor = hashlib.md5
-    sha_constructor = hashlib.sha1
-except ImportError:
-    import md5
-    md5_constructor = md5.new
-    import sha
-    sha_constructor = sha.new
diff --git a/webapp/django/utils/html.py b/webapp/django/utils/html.py
deleted file mode 100644
index 9b3fad8..0000000
--- a/webapp/django/utils/html.py
+++ /dev/null
@@ -1,165 +0,0 @@
-"""HTML utilities suitable for global use."""
-
-import re
-import string
-
-from django.utils.safestring import SafeData, mark_safe
-from django.utils.encoding import force_unicode
-from django.utils.functional import allow_lazy
-from django.utils.http import urlquote
-
-# Configuration for urlize() function.
-LEADING_PUNCTUATION  = ['(', '<', '&lt;']
-TRAILING_PUNCTUATION = ['.', ',', ')', '>', '\n', '&gt;']
-
-# List of possible strings used for bullets in bulleted lists.
-DOTS = ['&middot;', '*', '\xe2\x80\xa2', '&#149;', '&bull;', '&#8226;']
-
-unencoded_ampersands_re = re.compile(r'&(?!(\w+|#\d+);)')
-word_split_re = re.compile(r'(\s+)')
-punctuation_re = re.compile('^(?P<lead>(?:%s)*)(?P<middle>.*?)(?P<trail>(?:%s)*)$' % \
-    ('|'.join([re.escape(x) for x in LEADING_PUNCTUATION]),
-    '|'.join([re.escape(x) for x in TRAILING_PUNCTUATION])))
-simple_email_re = re.compile(r'^\S+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$')
-link_target_attribute_re = re.compile(r'(<a [^>]*?)target=[^\s>]+')
-html_gunk_re = re.compile(r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<strong><\/strong>|<\/?smallcaps>|<\/?uppercase>)', re.IGNORECASE)
-hard_coded_bullets_re = re.compile(r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join([re.escape(x) for x in DOTS]), re.DOTALL)
-trailing_empty_content_re = re.compile(r'(?:<p>(?:&nbsp;|\s|<br \/>)*?</p>\s*)+\Z')
-del x # Temporary variable
-
-def escape(html):
-    """Returns the given HTML with ampersands, quotes and carets encoded."""
-    return mark_safe(force_unicode(html).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;').replace("'", '&#39;'))
-escape = allow_lazy(escape, unicode)
-
-def conditional_escape(html):
-    """
-    Similar to escape(), except that it doesn't operate on pre-escaped strings.
-    """
-    if isinstance(html, SafeData):
-        return html
-    else:
-        return escape(html)
-
-def linebreaks(value, autoescape=False):
-    """Converts newlines into <p> and <br />s."""
-    value = re.sub(r'\r\n|\r|\n', '\n', force_unicode(value)) # normalize newlines
-    paras = re.split('\n{2,}', value)
-    if autoescape:
-        paras = [u'<p>%s</p>' % escape(p.strip()).replace('\n', '<br />') for p in paras]
-    else:
-        paras = [u'<p>%s</p>' % p.strip().replace('\n', '<br />') for p in paras]
-    return u'\n\n'.join(paras)
-linebreaks = allow_lazy(linebreaks, unicode)
-
-def strip_tags(value):
-    """Returns the given HTML with all tags stripped."""
-    return re.sub(r'<[^>]*?>', '', force_unicode(value))
-strip_tags = allow_lazy(strip_tags)
-
-def strip_spaces_between_tags(value):
-    """Returns the given HTML with spaces between tags removed."""
-    return re.sub(r'>\s+<', '><', force_unicode(value))
-strip_spaces_between_tags = allow_lazy(strip_spaces_between_tags, unicode)
-
-def strip_entities(value):
-    """Returns the given HTML with all entities (&something;) stripped."""
-    return re.sub(r'&(?:\w+|#\d+);', '', force_unicode(value))
-strip_entities = allow_lazy(strip_entities, unicode)
-
-def fix_ampersands(value):
-    """Returns the given HTML with all unencoded ampersands encoded correctly."""
-    return unencoded_ampersands_re.sub('&amp;', force_unicode(value))
-fix_ampersands = allow_lazy(fix_ampersands, unicode)
-
-def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):
-    """
-    Converts any URLs in text into clickable links.
-
-    Works on http://, https://, www. links and links ending in .org, .net or
-    .com. Links can have trailing punctuation (periods, commas, close-parens)
-    and leading punctuation (opening parens) and it'll still do the right
-    thing.
-
-    If trim_url_limit is not None, the URLs in link text longer than this limit
-    will truncated to trim_url_limit-3 characters and appended with an elipsis.
-
-    If nofollow is True, the URLs in link text will get a rel="nofollow"
-    attribute.
-
-    If autoescape is True, the link text and URLs will get autoescaped.
-    """
-    trim_url = lambda x, limit=trim_url_limit: limit is not None and (len(x) > limit and ('%s...' % x[:max(0, limit - 3)])) or x
-    safe_input = isinstance(text, SafeData)
-    words = word_split_re.split(force_unicode(text))
-    nofollow_attr = nofollow and ' rel="nofollow"' or ''
-    for i, word in enumerate(words):
-        match = None
-        if '.' in word or '@' in word or ':' in word:
-            match = punctuation_re.match(word)
-        if match:
-            lead, middle, trail = match.groups()
-            # Make URL we want to point to.
-            url = None
-            if middle.startswith('http://') or middle.startswith('https://'):
-                url = urlquote(middle, safe='/&=:;#?+*')
-            elif middle.startswith('www.') or ('@' not in middle and \
-                    middle and middle[0] in string.ascii_letters + string.digits and \
-                    (middle.endswith('.org') or middle.endswith('.net') or middle.endswith('.com'))):
-                url = urlquote('http://%s' % middle, safe='/&=:;#?+*')
-            elif '@' in middle and not ':' in middle and simple_email_re.match(middle):
-                url = 'mailto:%s' % middle
-                nofollow_attr = ''
-            # Make link.
-            if url:
-                trimmed = trim_url(middle)
-                if autoescape and not safe_input:
-                    lead, trail = escape(lead), escape(trail)
-                    url, trimmed = escape(url), escape(trimmed)
-                middle = '<a href="%s"%s>%s</a>' % (url, nofollow_attr, trimmed)
-                words[i] = mark_safe('%s%s%s' % (lead, middle, trail))
-            else:
-                if safe_input:
-                    words[i] = mark_safe(word)
-                elif autoescape:
-                    words[i] = escape(word)
-        elif safe_input:
-            words[i] = mark_safe(word)
-        elif autoescape:
-            words[i] = escape(word)
-    return u''.join(words)
-urlize = allow_lazy(urlize, unicode)
-
-def clean_html(text):
-    """
-    Clean the given HTML.  Specifically, do the following:
-        * Convert <b> and <i> to <strong> and <em>.
-        * Encode all ampersands correctly.
-        * Remove all "target" attributes from <a> tags.
-        * Remove extraneous HTML, such as presentational tags that open and
-          immediately close and <br clear="all">.
-        * Convert hard-coded bullets into HTML unordered lists.
-        * Remove stuff like "<p>&nbsp;&nbsp;</p>", but only if it's at the
-          bottom of the text.
-    """
-    from django.utils.text import normalize_newlines
-    text = normalize_newlines(force_unicode(text))
-    text = re.sub(r'<(/?)\s*b\s*>', '<\\1strong>', text)
-    text = re.sub(r'<(/?)\s*i\s*>', '<\\1em>', text)
-    text = fix_ampersands(text)
-    # Remove all target="" attributes from <a> tags.
-    text = link_target_attribute_re.sub('\\1', text)
-    # Trim stupid HTML such as <br clear="all">.
-    text = html_gunk_re.sub('', text)
-    # Convert hard-coded bullets into HTML unordered lists.
-    def replace_p_tags(match):
-        s = match.group().replace('</p>', '</li>')
-        for d in DOTS:
-            s = s.replace('<p>%s' % d, '<li>')
-        return u'<ul>\n%s\n</ul>' % s
-    text = hard_coded_bullets_re.sub(replace_p_tags, text)
-    # Remove stuff like "<p>&nbsp;&nbsp;</p>", but only if it's at the bottom
-    # of the text.
-    text = trailing_empty_content_re.sub('', text)
-    return text
-clean_html = allow_lazy(clean_html, unicode)
diff --git a/webapp/django/utils/http.py b/webapp/django/utils/http.py
deleted file mode 100644
index 7d2af95..0000000
--- a/webapp/django/utils/http.py
+++ /dev/null
@@ -1,96 +0,0 @@
-import urllib
-from email.Utils import formatdate
-
-from django.utils.encoding import smart_str, force_unicode
-from django.utils.functional import allow_lazy
-
-def urlquote(url, safe='/'):
-    """
-    A version of Python's urllib.quote() function that can operate on unicode
-    strings. The url is first UTF-8 encoded before quoting. The returned string
-    can safely be used as part of an argument to a subsequent iri_to_uri() call
-    without double-quoting occurring.
-    """
-    return force_unicode(urllib.quote(smart_str(url), safe))
-
-urlquote = allow_lazy(urlquote, unicode)
-
-def urlquote_plus(url, safe=''):
-    """
-    A version of Python's urllib.quote_plus() function that can operate on
-    unicode strings. The url is first UTF-8 encoded before quoting. The
-    returned string can safely be used as part of an argument to a subsequent
-    iri_to_uri() call without double-quoting occurring.
-    """
-    return force_unicode(urllib.quote_plus(smart_str(url), safe))
-urlquote_plus = allow_lazy(urlquote_plus, unicode)
-
-def urlencode(query, doseq=0):
-    """
-    A version of Python's urllib.urlencode() function that can operate on
-    unicode strings. The parameters are first case to UTF-8 encoded strings and
-    then encoded as per normal.
-    """
-    if hasattr(query, 'items'):
-        query = query.items()
-    return urllib.urlencode(
-        [(smart_str(k),
-         isinstance(v, (list,tuple)) and [smart_str(i) for i in v] or smart_str(v))
-            for k, v in query],
-        doseq)
-
-def cookie_date(epoch_seconds=None):
-    """
-    Formats the time to ensure compatibility with Netscape's cookie standard.
-
-    Accepts a floating point number expressed in seconds since the epoch, in
-    UTC - such as that outputted by time.time(). If set to None, defaults to
-    the current time.
-
-    Outputs a string in the format 'Wdy, DD-Mon-YYYY HH:MM:SS GMT'.
-    """
-    rfcdate = formatdate(epoch_seconds)
-    return '%s-%s-%s GMT' % (rfcdate[:7], rfcdate[8:11], rfcdate[12:25])
-
-def http_date(epoch_seconds=None):
-    """
-    Formats the time to match the RFC1123 date format as specified by HTTP
-    RFC2616 section 3.3.1.
-
-    Accepts a floating point number expressed in seconds since the epoch, in
-    UTC - such as that outputted by time.time(). If set to None, defaults to
-    the current time.
-
-    Outputs a string in the format 'Wdy, DD Mon YYYY HH:MM:SS GMT'.
-    """
-    rfcdate = formatdate(epoch_seconds)
-    return '%s GMT' % rfcdate[:25]
-
-# Base 36 functions: useful for generating compact URLs
-
-def base36_to_int(s):
-    """
-    Convertd a base 36 string to an integer
-    """
-    return int(s, 36)
-
-def int_to_base36(i):
-    """
-    Converts an integer to a base36 string
-    """
-    digits = "0123456789abcdefghijklmnopqrstuvwxyz"
-    factor = 0
-    # Find starting factor
-    while True:
-        factor += 1
-        if i < 36 ** factor:
-            factor -= 1
-            break
-    base36 = []
-    # Construct base36 representation
-    while factor >= 0:
-        j = 36 ** factor
-        base36.append(digits[i / j])
-        i = i % j
-        factor -= 1
-    return ''.join(base36)
diff --git a/webapp/django/utils/itercompat.py b/webapp/django/utils/itercompat.py
deleted file mode 100644
index c166da3..0000000
--- a/webapp/django/utils/itercompat.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""
-Providing iterator functions that are not in all version of Python we support.
-Where possible, we try to use the system-native version and only fall back to
-these implementations if necessary.
-"""
-
-import itertools
-
-def compat_tee(iterable):
-    """
-    Return two independent iterators from a single iterable.
-
-    Based on http://www.python.org/doc/2.3.5/lib/itertools-example.html
-    """
-    # Note: Using a dictionary and a list as the default arguments here is
-    # deliberate and safe in this instance.
-    def gen(next, data={}, cnt=[0]):
-        dpop = data.pop
-        for i in itertools.count():
-            if i == cnt[0]:
-                item = data[i] = next()
-                cnt[0] += 1
-            else:
-                item = dpop(i)
-            yield item
-    next = iter(iterable).next
-    return gen(next), gen(next)
-
-def groupby(iterable, keyfunc=None):
-    """
-    Taken from http://docs.python.org/lib/itertools-functions.html
-    """
-    if keyfunc is None:
-        keyfunc = lambda x:x
-    iterable = iter(iterable)
-    l = [iterable.next()]
-    lastkey = keyfunc(l[0])
-    for item in iterable:
-        key = keyfunc(item)
-        if key != lastkey:
-            yield lastkey, l
-            lastkey = key
-            l = [item]
-        else:
-            l.append(item)
-    yield lastkey, l
-
-# Not really in itertools, since it's a builtin in Python 2.4 and later, but it
-# does operate as an iterator.
-def reversed(data):
-    for index in xrange(len(data)-1, -1, -1):
-        yield data[index]
-
-if hasattr(itertools, 'tee'):
-    tee = itertools.tee
-else:
-    tee = compat_tee
-if hasattr(itertools, 'groupby'):
-    groupby = itertools.groupby
-
-def is_iterable(x):
-    "A implementation independent way of checking for iterables"
-    try:
-        iter(x)
-    except TypeError:
-        return False
-    else:
-        return True
-
-def sorted(in_value):
-    "A naive implementation of sorted"
-    out_value = in_value[:]
-    out_value.sort()
-    return out_value
diff --git a/webapp/django/utils/safestring.py b/webapp/django/utils/safestring.py
deleted file mode 100644
index 2e31c23..0000000
--- a/webapp/django/utils/safestring.py
+++ /dev/null
@@ -1,119 +0,0 @@
-"""
-Functions for working with "safe strings": strings that can be displayed safely
-without further escaping in HTML. Marking something as a "safe string" means
-that the producer of the string has already turned characters that should not
-be interpreted by the HTML engine (e.g. '<') into the appropriate entities.
-"""
-from django.utils.functional import curry, Promise
-
-class EscapeData(object):
-    pass
-
-class EscapeString(str, EscapeData):
-    """
-    A string that should be HTML-escaped when output.
-    """
-    pass
-
-class EscapeUnicode(unicode, EscapeData):
-    """
-    A unicode object that should be HTML-escaped when output.
-    """
-    pass
-
-class SafeData(object):
-    pass
-
-class SafeString(str, SafeData):
-    """
-    A string subclass that has been specifically marked as "safe" (requires no
-    further escaping) for HTML output purposes.
-    """
-    def __add__(self, rhs):
-        """
-        Concatenating a safe string with another safe string or safe unicode
-        object is safe. Otherwise, the result is no longer safe.
-        """
-        t = super(SafeString, self).__add__(rhs)
-        if isinstance(rhs, SafeUnicode):
-            return SafeUnicode(t)
-        elif isinstance(rhs, SafeString):
-            return SafeString(t)
-        return t
-        
-    def _proxy_method(self, *args, **kwargs):
-        """
-        Wrap a call to a normal unicode method up so that we return safe
-        results. The method that is being wrapped is passed in the 'method'
-        argument.
-        """
-        method = kwargs.pop('method')
-        data = method(self, *args, **kwargs)
-        if isinstance(data, str):
-            return SafeString(data)
-        else:
-            return SafeUnicode(data)
-
-    decode = curry(_proxy_method, method = str.decode)
-
-class SafeUnicode(unicode, SafeData):
-    """
-    A unicode subclass that has been specifically marked as "safe" for HTML
-    output purposes.
-    """
-    def __add__(self, rhs):
-        """
-        Concatenating a safe unicode object with another safe string or safe
-        unicode object is safe. Otherwise, the result is no longer safe.
-        """
-        t = super(SafeUnicode, self).__add__(rhs)
-        if isinstance(rhs, SafeData):
-            return SafeUnicode(t)
-        return t
-    
-    def _proxy_method(self, *args, **kwargs):
-        """
-        Wrap a call to a normal unicode method up so that we return safe
-        results. The method that is being wrapped is passed in the 'method'
-        argument.
-        """
-        method = kwargs.pop('method')
-        data = method(self, *args, **kwargs)
-        if isinstance(data, str):
-            return SafeString(data)
-        else:
-            return SafeUnicode(data)
-
-    encode = curry(_proxy_method, method = unicode.encode)
-
-def mark_safe(s):
-    """
-    Explicitly mark a string as safe for (HTML) output purposes. The returned
-    object can be used everywhere a string or unicode object is appropriate.
-
-    Can be called multiple times on a single string.
-    """
-    if isinstance(s, SafeData):
-        return s
-    if isinstance(s, str) or (isinstance(s, Promise) and s._delegate_str):
-        return SafeString(s)
-    if isinstance(s, (unicode, Promise)):
-        return SafeUnicode(s)
-    return SafeString(str(s))
-
-def mark_for_escaping(s):
-    """
-    Explicitly mark a string as requiring HTML escaping upon output. Has no
-    effect on SafeData subclasses.
-
-    Can be called multiple times on a single string (the resulting escaping is
-    only applied once).
-    """
-    if isinstance(s, (SafeData, EscapeData)):
-        return s
-    if isinstance(s, str) or (isinstance(s, Promise) and s._delegate_str):
-        return EscapeString(s)
-    if isinstance(s, (unicode, Promise)):
-        return EscapeUnicode(s)
-    return EscapeString(str(s))
-
diff --git a/webapp/django/utils/simplejson/LICENSE.txt b/webapp/django/utils/simplejson/LICENSE.txt
deleted file mode 100644
index ad95f29..0000000
--- a/webapp/django/utils/simplejson/LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006 Bob Ippolito
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/webapp/django/utils/simplejson/__init__.py b/webapp/django/utils/simplejson/__init__.py
deleted file mode 100644
index 130940f..0000000
--- a/webapp/django/utils/simplejson/__init__.py
+++ /dev/null
@@ -1,376 +0,0 @@
-r"""
-A simple, fast, extensible JSON encoder and decoder
-
-JSON (JavaScript Object Notation) <http://json.org> is a subset of
-JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data
-interchange format.
-
-simplejson exposes an API familiar to uses of the standard library
-marshal and pickle modules.
-
-Encoding basic Python object hierarchies::
-    
-    >>> import simplejson
-    >>> simplejson.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
-    '["foo", {"bar": ["baz", null, 1.0, 2]}]'
-    >>> print simplejson.dumps("\"foo\bar")
-    "\"foo\bar"
-    >>> print simplejson.dumps(u'\u1234')
-    "\u1234"
-    >>> print simplejson.dumps('\\')
-    "\\"
-    >>> print simplejson.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
-    {"a": 0, "b": 0, "c": 0}
-    >>> from StringIO import StringIO
-    >>> io = StringIO()
-    >>> simplejson.dump(['streaming API'], io)
-    >>> io.getvalue()
-    '["streaming API"]'
-
-Compact encoding::
-
-    >>> import simplejson
-    >>> simplejson.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
-    '[1,2,3,{"4":5,"6":7}]'
-
-Pretty printing::
-
-    >>> import simplejson
-    >>> print simplejson.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
-    {
-        "4": 5, 
-        "6": 7
-    }
-
-Decoding JSON::
-    
-    >>> import simplejson
-    >>> simplejson.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
-    [u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
-    >>> simplejson.loads('"\\"foo\\bar"')
-    u'"foo\x08ar'
-    >>> from StringIO import StringIO
-    >>> io = StringIO('["streaming API"]')
-    >>> simplejson.load(io)
-    [u'streaming API']
-
-Specializing JSON object decoding::
-
-    >>> import simplejson
-    >>> def as_complex(dct):
-    ...     if '__complex__' in dct:
-    ...         return complex(dct['real'], dct['imag'])
-    ...     return dct
-    ... 
-    >>> simplejson.loads('{"__complex__": true, "real": 1, "imag": 2}',
-    ...     object_hook=as_complex)
-    (1+2j)
-    >>> import decimal
-    >>> simplejson.loads('1.1', parse_float=decimal.Decimal)
-    Decimal("1.1")
-
-Extending JSONEncoder::
-    
-    >>> import simplejson
-    >>> class ComplexEncoder(simplejson.JSONEncoder):
-    ...     def default(self, obj):
-    ...         if isinstance(obj, complex):
-    ...             return [obj.real, obj.imag]
-    ...         return simplejson.JSONEncoder.default(self, obj)
-    ... 
-    >>> dumps(2 + 1j, cls=ComplexEncoder)
-    '[2.0, 1.0]'
-    >>> ComplexEncoder().encode(2 + 1j)
-    '[2.0, 1.0]'
-    >>> list(ComplexEncoder().iterencode(2 + 1j))
-    ['[', '2.0', ', ', '1.0', ']']
-    
-
-Using simplejson from the shell to validate and
-pretty-print::
-    
-    $ echo '{"json":"obj"}' | python -msimplejson.tool
-    {
-        "json": "obj"
-    }
-    $ echo '{ 1.2:3.4}' | python -msimplejson.tool
-    Expecting property name: line 1 column 2 (char 2)
-
-Note that the JSON produced by this module's default settings
-is a subset of YAML, so it may be used as a serializer for that as well.
-"""
-__version__ = '1.9.2'
-__all__ = [
-    'dump', 'dumps', 'load', 'loads',
-    'JSONDecoder', 'JSONEncoder',
-]
-
-if __name__ == '__main__':
-    import warnings
-    warnings.warn('python -msimplejson is deprecated, use python -msiplejson.tool', DeprecationWarning)
-    from django.utils.simplejson.decoder import JSONDecoder
-    from django.utils.simplejson.encoder import JSONEncoder
-else:
-    from decoder import JSONDecoder
-    from encoder import JSONEncoder
-
-_default_encoder = JSONEncoder(
-    skipkeys=False,
-    ensure_ascii=True,
-    check_circular=True,
-    allow_nan=True,
-    indent=None,
-    separators=None,
-    encoding='utf-8',
-    default=None,
-)
-
-def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
-        allow_nan=True, cls=None, indent=None, separators=None,
-        encoding='utf-8', default=None, **kw):
-    """
-    Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
-    ``.write()``-supporting file-like object).
-
-    If ``skipkeys`` is ``True`` then ``dict`` keys that are not basic types
-    (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``) 
-    will be skipped instead of raising a ``TypeError``.
-
-    If ``ensure_ascii`` is ``False``, then the some chunks written to ``fp``
-    may be ``unicode`` instances, subject to normal Python ``str`` to
-    ``unicode`` coercion rules. Unless ``fp.write()`` explicitly
-    understands ``unicode`` (as in ``codecs.getwriter()``) this is likely
-    to cause an error.
-
-    If ``check_circular`` is ``False``, then the circular reference check
-    for container types will be skipped and a circular reference will
-    result in an ``OverflowError`` (or worse).
-
-    If ``allow_nan`` is ``False``, then it will be a ``ValueError`` to
-    serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``)
-    in strict compliance of the JSON specification, instead of using the
-    JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
-    If ``indent`` is a non-negative integer, then JSON array elements and object
-    members will be pretty-printed with that indent level. An indent level
-    of 0 will only insert newlines. ``None`` is the most compact representation.
-
-    If ``separators`` is an ``(item_separator, dict_separator)`` tuple
-    then it will be used instead of the default ``(', ', ': ')`` separators.
-    ``(',', ':')`` is the most compact JSON representation.
-
-    ``encoding`` is the character encoding for str instances, default is UTF-8.
-
-    ``default(obj)`` is a function that should return a serializable version
-    of obj or raise TypeError. The default simply raises TypeError.
-
-    To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
-    ``.default()`` method to serialize additional types), specify it with
-    the ``cls`` kwarg.
-    """
-    # cached encoder
-    if (skipkeys is False and ensure_ascii is True and
-        check_circular is True and allow_nan is True and
-        cls is None and indent is None and separators is None and
-        encoding == 'utf-8' and default is None and not kw):
-        iterable = _default_encoder.iterencode(obj)
-    else:
-        if cls is None:
-            cls = JSONEncoder
-        iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii,
-            check_circular=check_circular, allow_nan=allow_nan, indent=indent,
-            separators=separators, encoding=encoding,
-            default=default, **kw).iterencode(obj)
-    # could accelerate with writelines in some versions of Python, at
-    # a debuggability cost
-    for chunk in iterable:
-        fp.write(chunk)
-
-
-def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
-        allow_nan=True, cls=None, indent=None, separators=None,
-        encoding='utf-8', default=None, **kw):
-    """
-    Serialize ``obj`` to a JSON formatted ``str``.
-
-    If ``skipkeys`` is ``True`` then ``dict`` keys that are not basic types
-    (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``) 
-    will be skipped instead of raising a ``TypeError``.
-
-    If ``ensure_ascii`` is ``False``, then the return value will be a
-    ``unicode`` instance subject to normal Python ``str`` to ``unicode``
-    coercion rules instead of being escaped to an ASCII ``str``.
-
-    If ``check_circular`` is ``False``, then the circular reference check
-    for container types will be skipped and a circular reference will
-    result in an ``OverflowError`` (or worse).
-
-    If ``allow_nan`` is ``False``, then it will be a ``ValueError`` to
-    serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
-    strict compliance of the JSON specification, instead of using the
-    JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
-    If ``indent`` is a non-negative integer, then JSON array elements and
-    object members will be pretty-printed with that indent level. An indent
-    level of 0 will only insert newlines. ``None`` is the most compact
-    representation.
-
-    If ``separators`` is an ``(item_separator, dict_separator)`` tuple
-    then it will be used instead of the default ``(', ', ': ')`` separators.
-    ``(',', ':')`` is the most compact JSON representation.
-
-    ``encoding`` is the character encoding for str instances, default is UTF-8.
-
-    ``default(obj)`` is a function that should return a serializable version
-    of obj or raise TypeError. The default simply raises TypeError.
-
-    To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
-    ``.default()`` method to serialize additional types), specify it with
-    the ``cls`` kwarg.
-    """
-    # cached encoder
-    if (skipkeys is False and ensure_ascii is True and
-        check_circular is True and allow_nan is True and
-        cls is None and indent is None and separators is None and
-        encoding == 'utf-8' and default is None and not kw):
-        return _default_encoder.encode(obj)
-    if cls is None:
-        cls = JSONEncoder
-    return cls(
-        skipkeys=skipkeys, ensure_ascii=ensure_ascii,
-        check_circular=check_circular, allow_nan=allow_nan, indent=indent,
-        separators=separators, encoding=encoding, default=default,
-        **kw).encode(obj)
-
-
-_default_decoder = JSONDecoder(encoding=None, object_hook=None)
-
-
-def load(fp, encoding=None, cls=None, object_hook=None, parse_float=None,
-        parse_int=None, parse_constant=None, **kw):
-    """
-    Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
-    a JSON document) to a Python object.
-
-    If the contents of ``fp`` is encoded with an ASCII based encoding other
-    than utf-8 (e.g. latin-1), then an appropriate ``encoding`` name must
-    be specified. Encodings that are not ASCII based (such as UCS-2) are
-    not allowed, and should be wrapped with
-    ``codecs.getreader(fp)(encoding)``, or simply decoded to a ``unicode``
-    object and passed to ``loads()``
-
-    ``object_hook`` is an optional function that will be called with the
-    result of any object literal decode (a ``dict``). The return value of
-    ``object_hook`` will be used instead of the ``dict``. This feature
-    can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-    
-    To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
-    kwarg.
-    """
-    return loads(fp.read(),
-        encoding=encoding, cls=cls, object_hook=object_hook,
-        parse_float=parse_float, parse_int=parse_int,
-        parse_constant=parse_constant, **kw)
-
-
-def loads(s, encoding=None, cls=None, object_hook=None, parse_float=None,
-        parse_int=None, parse_constant=None, **kw):
-    """
-    Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON
-    document) to a Python object.
-
-    If ``s`` is a ``str`` instance and is encoded with an ASCII based encoding
-    other than utf-8 (e.g. latin-1) then an appropriate ``encoding`` name
-    must be specified. Encodings that are not ASCII based (such as UCS-2)
-    are not allowed and should be decoded to ``unicode`` first.
-
-    ``object_hook`` is an optional function that will be called with the
-    result of any object literal decode (a ``dict``). The return value of
-    ``object_hook`` will be used instead of the ``dict``. This feature
-    can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-
-    ``parse_float``, if specified, will be called with the string
-    of every JSON float to be decoded. By default this is equivalent to
-    float(num_str). This can be used to use another datatype or parser
-    for JSON floats (e.g. decimal.Decimal).
-
-    ``parse_int``, if specified, will be called with the string
-    of every JSON int to be decoded. By default this is equivalent to
-    int(num_str). This can be used to use another datatype or parser
-    for JSON integers (e.g. float).
-
-    ``parse_constant``, if specified, will be called with one of the
-    following strings: -Infinity, Infinity, NaN, null, true, false.
-    This can be used to raise an exception if invalid JSON numbers
-    are encountered.
-
-    To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
-    kwarg.
-    """
-    if (cls is None and encoding is None and object_hook is None and
-            parse_int is None and parse_float is None and
-            parse_constant is None and not kw):
-        return _default_decoder.decode(s)
-    if cls is None:
-        cls = JSONDecoder
-    if object_hook is not None:
-        kw['object_hook'] = object_hook
-    if parse_float is not None:
-        kw['parse_float'] = parse_float
-    if parse_int is not None:
-        kw['parse_int'] = parse_int
-    if parse_constant is not None:
-        kw['parse_constant'] = parse_constant
-    return cls(encoding=encoding, **kw).decode(s)
-
-
-#
-# Compatibility cruft from other libraries
-#
-
-
-def decode(s):
-    """
-    demjson, python-cjson API compatibility hook. Use loads(s) instead.
-    """
-    import warnings
-    warnings.warn("simplejson.loads(s) should be used instead of decode(s)",
-        DeprecationWarning)
-    return loads(s)
-
-
-def encode(obj):
-    """
-    demjson, python-cjson compatibility hook. Use dumps(s) instead.
-    """
-    import warnings
-    warnings.warn("simplejson.dumps(s) should be used instead of encode(s)",
-        DeprecationWarning)
-    return dumps(obj)
-
-
-def read(s):
-    """
-    jsonlib, JsonUtils, python-json, json-py API compatibility hook.
-    Use loads(s) instead.
-    """
-    import warnings
-    warnings.warn("simplejson.loads(s) should be used instead of read(s)",
-        DeprecationWarning)
-    return loads(s)
-
-
-def write(obj):
-    """
-    jsonlib, JsonUtils, python-json, json-py API compatibility hook.
-    Use dumps(s) instead.
-    """
-    import warnings
-    warnings.warn("simplejson.dumps(s) should be used instead of write(s)",
-        DeprecationWarning)
-    return dumps(obj)
-
-
-if __name__ == '__main__':
-    import simplejson.tool
-    simplejson.tool.main()
diff --git a/webapp/django/utils/simplejson/decoder.py b/webapp/django/utils/simplejson/decoder.py
deleted file mode 100644
index cef9fc0..0000000
--- a/webapp/django/utils/simplejson/decoder.py
+++ /dev/null
@@ -1,343 +0,0 @@
-"""
-Implementation of JSONDecoder
-"""
-import re
-import sys
-
-from django.utils.simplejson.scanner import Scanner, pattern
-try:
-    from django.utils.simplejson._speedups import scanstring as c_scanstring
-except ImportError:
-    pass
-
-FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL
-
-def _floatconstants():
-    import struct
-    import sys
-    _BYTES = '7FF80000000000007FF0000000000000'.decode('hex')
-    if sys.byteorder != 'big':
-        _BYTES = _BYTES[:8][::-1] + _BYTES[8:][::-1]
-    nan, inf = struct.unpack('dd', _BYTES)
-    return nan, inf, -inf
-
-NaN, PosInf, NegInf = _floatconstants()
-
-
-def linecol(doc, pos):
-    lineno = doc.count('\n', 0, pos) + 1
-    if lineno == 1:
-        colno = pos
-    else:
-        colno = pos - doc.rindex('\n', 0, pos)
-    return lineno, colno
-
-
-def errmsg(msg, doc, pos, end=None):
-    lineno, colno = linecol(doc, pos)
-    if end is None:
-        return '%s: line %d column %d (char %d)' % (msg, lineno, colno, pos)
-    endlineno, endcolno = linecol(doc, end)
-    return '%s: line %d column %d - line %d column %d (char %d - %d)' % (
-        msg, lineno, colno, endlineno, endcolno, pos, end)
-
-
-_CONSTANTS = {
-    '-Infinity': NegInf,
-    'Infinity': PosInf,
-    'NaN': NaN,
-    'true': True,
-    'false': False,
-    'null': None,
-}
-
-def JSONConstant(match, context, c=_CONSTANTS):
-    s = match.group(0)
-    fn = getattr(context, 'parse_constant', None)
-    if fn is None:
-        rval = c[s]
-    else:
-        rval = fn(s)
-    return rval, None
-pattern('(-?Infinity|NaN|true|false|null)')(JSONConstant)
-
-
-def JSONNumber(match, context):
-    match = JSONNumber.regex.match(match.string, *match.span())
-    integer, frac, exp = match.groups()
-    if frac or exp:
-        fn = getattr(context, 'parse_float', None) or float
-        res = fn(integer + (frac or '') + (exp or ''))
-    else:
-        fn = getattr(context, 'parse_int', None) or int
-        res = fn(integer)
-    return res, None
-pattern(r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?')(JSONNumber)
-
-
-STRINGCHUNK = re.compile(r'(.*?)(["\\\x00-\x1f])', FLAGS)
-BACKSLASH = {
-    '"': u'"', '\\': u'\\', '/': u'/',
-    'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t',
-}
-
-DEFAULT_ENCODING = "utf-8"
-
-def py_scanstring(s, end, encoding=None, strict=True, _b=BACKSLASH, _m=STRINGCHUNK.match):
-    if encoding is None:
-        encoding = DEFAULT_ENCODING
-    chunks = []
-    _append = chunks.append
-    begin = end - 1
-    while 1:
-        chunk = _m(s, end)
-        if chunk is None:
-            raise ValueError(
-                errmsg("Unterminated string starting at", s, begin))
-        end = chunk.end()
-        content, terminator = chunk.groups()
-        if content:
-            if not isinstance(content, unicode):
-                content = unicode(content, encoding)
-            _append(content)
-        if terminator == '"':
-            break
-        elif terminator != '\\':
-            if strict:
-                raise ValueError(errmsg("Invalid control character %r at", s, end))
-            else:
-                _append(terminator)
-                continue
-        try:
-            esc = s[end]
-        except IndexError:
-            raise ValueError(
-                errmsg("Unterminated string starting at", s, begin))
-        if esc != 'u':
-            try:
-                m = _b[esc]
-            except KeyError:
-                raise ValueError(
-                    errmsg("Invalid \\escape: %r" % (esc,), s, end))
-            end += 1
-        else:
-            esc = s[end + 1:end + 5]
-            next_end = end + 5
-            msg = "Invalid \\uXXXX escape"
-            try:
-                if len(esc) != 4:
-                    raise ValueError
-                uni = int(esc, 16)
-                if 0xd800 <= uni <= 0xdbff and sys.maxunicode > 65535:
-                    msg = "Invalid \\uXXXX\\uXXXX surrogate pair"
-                    if not s[end + 5:end + 7] == '\\u':
-                        raise ValueError
-                    esc2 = s[end + 7:end + 11]
-                    if len(esc2) != 4:
-                        raise ValueError
-                    uni2 = int(esc2, 16)
-                    uni = 0x10000 + (((uni - 0xd800) << 10) | (uni2 - 0xdc00))
-                    next_end += 6
-                m = unichr(uni)
-            except ValueError:
-                raise ValueError(errmsg(msg, s, end))
-            end = next_end
-        _append(m)
-    return u''.join(chunks), end
-
-
-# Use speedup
-try:
-    scanstring = c_scanstring
-except NameError:
-    scanstring = py_scanstring
-
-def JSONString(match, context):
-    encoding = getattr(context, 'encoding', None)
-    strict = getattr(context, 'strict', True)
-    return scanstring(match.string, match.end(), encoding, strict)
-pattern(r'"')(JSONString)
-
-
-WHITESPACE = re.compile(r'\s*', FLAGS)
-
-def JSONObject(match, context, _w=WHITESPACE.match):
-    pairs = {}
-    s = match.string
-    end = _w(s, match.end()).end()
-    nextchar = s[end:end + 1]
-    # Trivial empty object
-    if nextchar == '}':
-        return pairs, end + 1
-    if nextchar != '"':
-        raise ValueError(errmsg("Expecting property name", s, end))
-    end += 1
-    encoding = getattr(context, 'encoding', None)
-    strict = getattr(context, 'strict', True)
-    iterscan = JSONScanner.iterscan
-    while True:
-        key, end = scanstring(s, end, encoding, strict)
-        end = _w(s, end).end()
-        if s[end:end + 1] != ':':
-            raise ValueError(errmsg("Expecting : delimiter", s, end))
-        end = _w(s, end + 1).end()
-        try:
-            value, end = iterscan(s, idx=end, context=context).next()
-        except StopIteration:
-            raise ValueError(errmsg("Expecting object", s, end))
-        pairs[key] = value
-        end = _w(s, end).end()
-        nextchar = s[end:end + 1]
-        end += 1
-        if nextchar == '}':
-            break
-        if nextchar != ',':
-            raise ValueError(errmsg("Expecting , delimiter", s, end - 1))
-        end = _w(s, end).end()
-        nextchar = s[end:end + 1]
-        end += 1
-        if nextchar != '"':
-            raise ValueError(errmsg("Expecting property name", s, end - 1))
-    object_hook = getattr(context, 'object_hook', None)
-    if object_hook is not None:
-        pairs = object_hook(pairs)
-    return pairs, end
-pattern(r'{')(JSONObject)
-
-
-def JSONArray(match, context, _w=WHITESPACE.match):
-    values = []
-    s = match.string
-    end = _w(s, match.end()).end()
-    # Look-ahead for trivial empty array
-    nextchar = s[end:end + 1]
-    if nextchar == ']':
-        return values, end + 1
-    iterscan = JSONScanner.iterscan
-    while True:
-        try:
-            value, end = iterscan(s, idx=end, context=context).next()
-        except StopIteration:
-            raise ValueError(errmsg("Expecting object", s, end))
-        values.append(value)
-        end = _w(s, end).end()
-        nextchar = s[end:end + 1]
-        end += 1
-        if nextchar == ']':
-            break
-        if nextchar != ',':
-            raise ValueError(errmsg("Expecting , delimiter", s, end))
-        end = _w(s, end).end()
-    return values, end
-pattern(r'\[')(JSONArray)
-
-
-ANYTHING = [
-    JSONObject,
-    JSONArray,
-    JSONString,
-    JSONConstant,
-    JSONNumber,
-]
-
-JSONScanner = Scanner(ANYTHING)
-
-
-class JSONDecoder(object):
-    """
-    Simple JSON <http://json.org> decoder
-
-    Performs the following translations in decoding by default:
-    
-    +---------------+-------------------+
-    | JSON          | Python            |
-    +===============+===================+
-    | object        | dict              |
-    +---------------+-------------------+
-    | array         | list              |
-    +---------------+-------------------+
-    | string        | unicode           |
-    +---------------+-------------------+
-    | number (int)  | int, long         |
-    +---------------+-------------------+
-    | number (real) | float             |
-    +---------------+-------------------+
-    | true          | True              |
-    +---------------+-------------------+
-    | false         | False             |
-    +---------------+-------------------+
-    | null          | None              |
-    +---------------+-------------------+
-
-    It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as
-    their corresponding ``float`` values, which is outside the JSON spec.
-    """
-
-    _scanner = Scanner(ANYTHING)
-    __all__ = ['__init__', 'decode', 'raw_decode']
-
-    def __init__(self, encoding=None, object_hook=None, parse_float=None,
-            parse_int=None, parse_constant=None, strict=True):
-        """
-        ``encoding`` determines the encoding used to interpret any ``str``
-        objects decoded by this instance (utf-8 by default).  It has no
-        effect when decoding ``unicode`` objects.
-        
-        Note that currently only encodings that are a superset of ASCII work,
-        strings of other encodings should be passed in as ``unicode``.
-
-        ``object_hook``, if specified, will be called with the result
-        of every JSON object decoded and its return value will be used in
-        place of the given ``dict``.  This can be used to provide custom
-        deserializations (e.g. to support JSON-RPC class hinting).
-
-        ``parse_float``, if specified, will be called with the string
-        of every JSON float to be decoded. By default this is equivalent to
-        float(num_str). This can be used to use another datatype or parser
-        for JSON floats (e.g. decimal.Decimal).
-
-        ``parse_int``, if specified, will be called with the string
-        of every JSON int to be decoded. By default this is equivalent to
-        int(num_str). This can be used to use another datatype or parser
-        for JSON integers (e.g. float).
-
-        ``parse_constant``, if specified, will be called with one of the
-        following strings: -Infinity, Infinity, NaN, null, true, false.
-        This can be used to raise an exception if invalid JSON numbers
-        are encountered.
-        """
-        self.encoding = encoding
-        self.object_hook = object_hook
-        self.parse_float = parse_float
-        self.parse_int = parse_int
-        self.parse_constant = parse_constant
-        self.strict = strict
-
-    def decode(self, s, _w=WHITESPACE.match):
-        """
-        Return the Python representation of ``s`` (a ``str`` or ``unicode``
-        instance containing a JSON document)
-        """
-        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-        end = _w(s, end).end()
-        if end != len(s):
-            raise ValueError(errmsg("Extra data", s, end, len(s)))
-        return obj
-
-    def raw_decode(self, s, **kw):
-        """
-        Decode a JSON document from ``s`` (a ``str`` or ``unicode`` beginning
-        with a JSON document) and return a 2-tuple of the Python
-        representation and the index in ``s`` where the document ended.
-
-        This can be used to decode a JSON document from a string that may
-        have extraneous data at the end.
-        """
-        kw.setdefault('context', self)
-        try:
-            obj, end = self._scanner.iterscan(s, **kw).next()
-        except StopIteration:
-            raise ValueError("No JSON object could be decoded")
-        return obj, end
-
-__all__ = ['JSONDecoder']
diff --git a/webapp/django/utils/simplejson/encoder.py b/webapp/django/utils/simplejson/encoder.py
deleted file mode 100644
index e6c01f6..0000000
--- a/webapp/django/utils/simplejson/encoder.py
+++ /dev/null
@@ -1,385 +0,0 @@
-"""
-Implementation of JSONEncoder
-"""
-import re
-
-try:
-    from django.utils.simplejson._speedups import encode_basestring_ascii as c_encode_basestring_ascii
-except ImportError:
-    pass
-
-ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]')
-ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])')
-HAS_UTF8 = re.compile(r'[\x80-\xff]')
-ESCAPE_DCT = {
-    '\\': '\\\\',
-    '"': '\\"',
-    '\b': '\\b',
-    '\f': '\\f',
-    '\n': '\\n',
-    '\r': '\\r',
-    '\t': '\\t',
-}
-for i in range(0x20):
-    ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,))
-
-# Assume this produces an infinity on all machines (probably not guaranteed)
-INFINITY = float('1e66666')
-FLOAT_REPR = repr
-
-def floatstr(o, allow_nan=True):
-    # Check for specials.  Note that this type of test is processor- and/or
-    # platform-specific, so do tests which don't depend on the internals.
-
-    if o != o:
-        text = 'NaN'
-    elif o == INFINITY:
-        text = 'Infinity'
-    elif o == -INFINITY:
-        text = '-Infinity'
-    else:
-        return FLOAT_REPR(o)
-
-    if not allow_nan:
-        raise ValueError("Out of range float values are not JSON compliant: %r"
-            % (o,))
-
-    return text
-
-
-def encode_basestring(s):
-    """
-    Return a JSON representation of a Python string
-    """
-    def replace(match):
-        return ESCAPE_DCT[match.group(0)]
-    return '"' + ESCAPE.sub(replace, s) + '"'
-
-
-def py_encode_basestring_ascii(s):
-    if isinstance(s, str) and HAS_UTF8.search(s) is not None:
-        s = s.decode('utf-8')
-    def replace(match):
-        s = match.group(0)
-        try:
-            return ESCAPE_DCT[s]
-        except KeyError:
-            n = ord(s)
-            if n < 0x10000:
-                return '\\u%04x' % (n,)
-            else:
-                # surrogate pair
-                n -= 0x10000
-                s1 = 0xd800 | ((n >> 10) & 0x3ff)
-                s2 = 0xdc00 | (n & 0x3ff)
-                return '\\u%04x\\u%04x' % (s1, s2)
-    return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"'
-
-
-try:
-    encode_basestring_ascii = c_encode_basestring_ascii
-except NameError:
-    encode_basestring_ascii = py_encode_basestring_ascii
-
-
-class JSONEncoder(object):
-    """
-    Extensible JSON <http://json.org> encoder for Python data structures.
-
-    Supports the following objects and types by default:
-    
-    +-------------------+---------------+
-    | Python            | JSON          |
-    +===================+===============+
-    | dict              | object        |
-    +-------------------+---------------+
-    | list, tuple       | array         |
-    +-------------------+---------------+
-    | str, unicode      | string        |
-    +-------------------+---------------+
-    | int, long, float  | number        |
-    +-------------------+---------------+
-    | True              | true          |
-    +-------------------+---------------+
-    | False             | false         |
-    +-------------------+---------------+
-    | None              | null          |
-    +-------------------+---------------+
-
-    To extend this to recognize other objects, subclass and implement a
-    ``.default()`` method with another method that returns a serializable
-    object for ``o`` if possible, otherwise it should call the superclass
-    implementation (to raise ``TypeError``).
-    """
-    __all__ = ['__init__', 'default', 'encode', 'iterencode']
-    item_separator = ', '
-    key_separator = ': '
-    def __init__(self, skipkeys=False, ensure_ascii=True,
-            check_circular=True, allow_nan=True, sort_keys=False,
-            indent=None, separators=None, encoding='utf-8', default=None):
-        """
-        Constructor for JSONEncoder, with sensible defaults.
-
-        If skipkeys is False, then it is a TypeError to attempt
-        encoding of keys that are not str, int, long, float or None.  If
-        skipkeys is True, such items are simply skipped.
-
-        If ensure_ascii is True, the output is guaranteed to be str
-        objects with all incoming unicode characters escaped.  If
-        ensure_ascii is false, the output will be unicode object.
-
-        If check_circular is True, then lists, dicts, and custom encoded
-        objects will be checked for circular references during encoding to
-        prevent an infinite recursion (which would cause an OverflowError).
-        Otherwise, no such check takes place.
-
-        If allow_nan is True, then NaN, Infinity, and -Infinity will be
-        encoded as such.  This behavior is not JSON specification compliant,
-        but is consistent with most JavaScript based encoders and decoders.
-        Otherwise, it will be a ValueError to encode such floats.
-
-        If sort_keys is True, then the output of dictionaries will be
-        sorted by key; this is useful for regression tests to ensure
-        that JSON serializations can be compared on a day-to-day basis.
-
-        If indent is a non-negative integer, then JSON array
-        elements and object members will be pretty-printed with that
-        indent level.  An indent level of 0 will only insert newlines.
-        None is the most compact representation.
-
-        If specified, separators should be a (item_separator, key_separator)
-        tuple.  The default is (', ', ': ').  To get the most compact JSON
-        representation you should specify (',', ':') to eliminate whitespace.
-
-        If specified, default is a function that gets called for objects
-        that can't otherwise be serialized.  It should return a JSON encodable
-        version of the object or raise a ``TypeError``.
-
-        If encoding is not None, then all input strings will be
-        transformed into unicode using that encoding prior to JSON-encoding.
-        The default is UTF-8.
-        """
-
-        self.skipkeys = skipkeys
-        self.ensure_ascii = ensure_ascii
-        self.check_circular = check_circular
-        self.allow_nan = allow_nan
-        self.sort_keys = sort_keys
-        self.indent = indent
-        self.current_indent_level = 0
-        if separators is not None:
-            self.item_separator, self.key_separator = separators
-        if default is not None:
-            self.default = default
-        self.encoding = encoding
-
-    def _newline_indent(self):
-        return '\n' + (' ' * (self.indent * self.current_indent_level))
-
-    def _iterencode_list(self, lst, markers=None):
-        if not lst:
-            yield '[]'
-            return
-        if markers is not None:
-            markerid = id(lst)
-            if markerid in markers:
-                raise ValueError("Circular reference detected")
-            markers[markerid] = lst
-        yield '['
-        if self.indent is not None:
-            self.current_indent_level += 1
-            newline_indent = self._newline_indent()
-            separator = self.item_separator + newline_indent
-            yield newline_indent
-        else:
-            newline_indent = None
-            separator = self.item_separator
-        first = True
-        for value in lst:
-            if first:
-                first = False
-            else:
-                yield separator
-            for chunk in self._iterencode(value, markers):
-                yield chunk
-        if newline_indent is not None:
-            self.current_indent_level -= 1
-            yield self._newline_indent()
-        yield ']'
-        if markers is not None:
-            del markers[markerid]
-
-    def _iterencode_dict(self, dct, markers=None):
-        if not dct:
-            yield '{}'
-            return
-        if markers is not None:
-            markerid = id(dct)
-            if markerid in markers:
-                raise ValueError("Circular reference detected")
-            markers[markerid] = dct
-        yield '{'
-        key_separator = self.key_separator
-        if self.indent is not None:
-            self.current_indent_level += 1
-            newline_indent = self._newline_indent()
-            item_separator = self.item_separator + newline_indent
-            yield newline_indent
-        else:
-            newline_indent = None
-            item_separator = self.item_separator
-        first = True
-        if self.ensure_ascii:
-            encoder = encode_basestring_ascii
-        else:
-            encoder = encode_basestring
-        allow_nan = self.allow_nan
-        if self.sort_keys:
-            keys = dct.keys()
-            keys.sort()
-            items = [(k, dct[k]) for k in keys]
-        else:
-            items = dct.iteritems()
-        _encoding = self.encoding
-        _do_decode = (_encoding is not None
-            and not (_encoding == 'utf-8'))
-        for key, value in items:
-            if isinstance(key, str):
-                if _do_decode:
-                    key = key.decode(_encoding)
-            elif isinstance(key, basestring):
-                pass
-            # JavaScript is weakly typed for these, so it makes sense to
-            # also allow them.  Many encoders seem to do something like this.
-            elif isinstance(key, float):
-                key = floatstr(key, allow_nan)
-            elif isinstance(key, (int, long)):
-                key = str(key)
-            elif key is True:
-                key = 'true'
-            elif key is False:
-                key = 'false'
-            elif key is None:
-                key = 'null'
-            elif self.skipkeys:
-                continue
-            else:
-                raise TypeError("key %r is not a string" % (key,))
-            if first:
-                first = False
-            else:
-                yield item_separator
-            yield encoder(key)
-            yield key_separator
-            for chunk in self._iterencode(value, markers):
-                yield chunk
-        if newline_indent is not None:
-            self.current_indent_level -= 1
-            yield self._newline_indent()
-        yield '}'
-        if markers is not None:
-            del markers[markerid]
-
-    def _iterencode(self, o, markers=None):
-        if isinstance(o, basestring):
-            if self.ensure_ascii:
-                encoder = encode_basestring_ascii
-            else:
-                encoder = encode_basestring
-            _encoding = self.encoding
-            if (_encoding is not None and isinstance(o, str)
-                    and not (_encoding == 'utf-8')):
-                o = o.decode(_encoding)
-            yield encoder(o)
-        elif o is None:
-            yield 'null'
-        elif o is True:
-            yield 'true'
-        elif o is False:
-            yield 'false'
-        elif isinstance(o, (int, long)):
-            yield str(o)
-        elif isinstance(o, float):
-            yield floatstr(o, self.allow_nan)
-        elif isinstance(o, (list, tuple)):
-            for chunk in self._iterencode_list(o, markers):
-                yield chunk
-        elif isinstance(o, dict):
-            for chunk in self._iterencode_dict(o, markers):
-                yield chunk
-        else:
-            if markers is not None:
-                markerid = id(o)
-                if markerid in markers:
-                    raise ValueError("Circular reference detected")
-                markers[markerid] = o
-            for chunk in self._iterencode_default(o, markers):
-                yield chunk
-            if markers is not None:
-                del markers[markerid]
-
-    def _iterencode_default(self, o, markers=None):
-        newobj = self.default(o)
-        return self._iterencode(newobj, markers)
-
-    def default(self, o):
-        """
-        Implement this method in a subclass such that it returns
-        a serializable object for ``o``, or calls the base implementation
-        (to raise a ``TypeError``).
-
-        For example, to support arbitrary iterators, you could
-        implement default like this::
-            
-            def default(self, o):
-                try:
-                    iterable = iter(o)
-                except TypeError:
-                    pass
-                else:
-                    return list(iterable)
-                return JSONEncoder.default(self, o)
-        """
-        raise TypeError("%r is not JSON serializable" % (o,))
-
-    def encode(self, o):
-        """
-        Return a JSON string representation of a Python data structure.
-
-        >>> JSONEncoder().encode({"foo": ["bar", "baz"]})
-        '{"foo": ["bar", "baz"]}'
-        """
-        # This is for extremely simple cases and benchmarks.
-        if isinstance(o, basestring):
-            if isinstance(o, str):
-                _encoding = self.encoding
-                if (_encoding is not None 
-                        and not (_encoding == 'utf-8')):
-                    o = o.decode(_encoding)
-            if self.ensure_ascii:
-                return encode_basestring_ascii(o)
-            else:
-                return encode_basestring(o)
-        # This doesn't pass the iterator directly to ''.join() because the
-        # exceptions aren't as detailed.  The list call should be roughly
-        # equivalent to the PySequence_Fast that ''.join() would do.
-        chunks = list(self.iterencode(o))
-        return ''.join(chunks)
-
-    def iterencode(self, o):
-        """
-        Encode the given object and yield each string
-        representation as available.
-        
-        For example::
-            
-            for chunk in JSONEncoder().iterencode(bigobject):
-                mysocket.write(chunk)
-        """
-        if self.check_circular:
-            markers = {}
-        else:
-            markers = None
-        return self._iterencode(o, markers)
-
-__all__ = ['JSONEncoder']
diff --git a/webapp/django/utils/simplejson/scanner.py b/webapp/django/utils/simplejson/scanner.py
deleted file mode 100644
index 2a18390..0000000
--- a/webapp/django/utils/simplejson/scanner.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""
-Iterator based sre token scanner
-"""
-import re
-from re import VERBOSE, MULTILINE, DOTALL
-import sre_parse
-import sre_compile
-import sre_constants
-from sre_constants import BRANCH, SUBPATTERN
-
-__all__ = ['Scanner', 'pattern']
-
-FLAGS = (VERBOSE | MULTILINE | DOTALL)
-
-class Scanner(object):
-    def __init__(self, lexicon, flags=FLAGS):
-        self.actions = [None]
-        # Combine phrases into a compound pattern
-        s = sre_parse.Pattern()
-        s.flags = flags
-        p = []
-        for idx, token in enumerate(lexicon):
-            phrase = token.pattern
-            try:
-                subpattern = sre_parse.SubPattern(s,
-                    [(SUBPATTERN, (idx + 1, sre_parse.parse(phrase, flags)))])
-            except sre_constants.error:
-                raise
-            p.append(subpattern)
-            self.actions.append(token)
-
-        s.groups = len(p) + 1 # NOTE(guido): Added to make SRE validation work
-        p = sre_parse.SubPattern(s, [(BRANCH, (None, p))])
-        self.scanner = sre_compile.compile(p)
-
-    def iterscan(self, string, idx=0, context=None):
-        """
-        Yield match, end_idx for each match
-        """
-        match = self.scanner.scanner(string, idx).match
-        actions = self.actions
-        lastend = idx
-        end = len(string)
-        while True:
-            m = match()
-            if m is None:
-                break
-            matchbegin, matchend = m.span()
-            if lastend == matchend:
-                break
-            action = actions[m.lastindex]
-            if action is not None:
-                rval, next_pos = action(m, context)
-                if next_pos is not None and next_pos != matchend:
-                    # "fast forward" the scanner
-                    matchend = next_pos
-                    match = self.scanner.scanner(string, matchend).match
-                yield rval, matchend
-            lastend = matchend
-
-
-def pattern(pattern, flags=FLAGS):
-    def decorator(fn):
-        fn.pattern = pattern
-        fn.regex = re.compile(pattern, flags)
-        return fn
-    return decorator
\ No newline at end of file
diff --git a/webapp/django/utils/simplejson/tool.py b/webapp/django/utils/simplejson/tool.py
deleted file mode 100644
index d0eb8ad..0000000
--- a/webapp/django/utils/simplejson/tool.py
+++ /dev/null
@@ -1,44 +0,0 @@
-r"""
-Using simplejson from the shell to validate and
-pretty-print::
-    
-    $ echo '{"json":"obj"}' | python -msimplejson
-    {
-        "json": "obj"
-    }
-    $ echo '{ 1.2:3.4}' | python -msimplejson
-    Expecting property name: line 1 column 2 (char 2)
-
-Note that the JSON produced by this module's default settings
-is a subset of YAML, so it may be used as a serializer for that as well.
-"""
-import django.utils.simplejson
-
-#
-# Pretty printer:
-#     curl http://mochikit.com/examples/ajax_tables/domains.json | python -msimplejson.tool
-#
-
-def main():
-    import sys
-    if len(sys.argv) == 1:
-        infile = sys.stdin
-        outfile = sys.stdout
-    elif len(sys.argv) == 2:
-        infile = open(sys.argv[1], 'rb')
-        outfile = sys.stdout
-    elif len(sys.argv) == 3:
-        infile = open(sys.argv[1], 'rb')
-        outfile = open(sys.argv[2], 'wb')
-    else:
-        raise SystemExit("%s [infile [outfile]]" % (sys.argv[0],))
-    try:
-        obj = simplejson.load(infile)
-    except ValueError, e:
-        raise SystemExit(e)
-    simplejson.dump(obj, outfile, sort_keys=True, indent=4)
-    outfile.write('\n')
-
-
-if __name__ == '__main__':
-    main()
diff --git a/webapp/django/utils/stopwords.py b/webapp/django/utils/stopwords.py
deleted file mode 100644
index 18aeb7f..0000000
--- a/webapp/django/utils/stopwords.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Performance note: I benchmarked this code using a set instead of
-# a list for the stopwords and was surprised to find that the list
-# performed /better/ than the set - maybe because it's only a small
-# list.
-
-stopwords = '''
-i
-a
-an
-are
-as
-at
-be
-by
-for
-from
-how
-in
-is
-it
-of
-on
-or
-that
-the
-this
-to
-was
-what
-when
-where
-'''.split()
-
-def strip_stopwords(sentence):
-    "Removes stopwords - also normalizes whitespace"
-    words = sentence.split()
-    sentence = []
-    for word in words:
-        if word.lower() not in stopwords:
-            sentence.append(word)
-    return u' '.join(sentence)
-
diff --git a/webapp/django/utils/synch.py b/webapp/django/utils/synch.py
deleted file mode 100644
index 2e808c1..0000000
--- a/webapp/django/utils/synch.py
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
-Synchronization primitives:
-
-    - reader-writer lock (preference to writers)
-
-(Contributed to Django by eugene@lazutkin.com)
-"""
-
-try:
-    import threading
-except ImportError:
-    import dummy_threading as threading
-
-class RWLock:
-    """
-    Classic implementation of reader-writer lock with preference to writers.
-
-    Readers can access a resource simultaneously.
-    Writers get an exclusive access.
-
-    API is self-descriptive:
-        reader_enters()
-        reader_leaves()
-        writer_enters()
-        writer_leaves()
-    """
-    def __init__(self):
-        self.mutex     = threading.RLock()
-        self.can_read  = threading.Semaphore(0)
-        self.can_write = threading.Semaphore(0)
-        self.active_readers  = 0
-        self.active_writers  = 0
-        self.waiting_readers = 0
-        self.waiting_writers = 0
-
-    def reader_enters(self):
-        self.mutex.acquire()
-        try:
-            if self.active_writers == 0 and self.waiting_writers == 0:
-                self.active_readers += 1
-                self.can_read.release()
-            else:
-                self.waiting_readers += 1
-        finally:
-            self.mutex.release()
-        self.can_read.acquire()
-
-    def reader_leaves(self):
-        self.mutex.acquire()
-        try:
-            self.active_readers -= 1
-            if self.active_readers == 0 and self.waiting_writers != 0:
-                self.active_writers  += 1
-                self.waiting_writers -= 1
-                self.can_write.release()
-        finally:
-            self.mutex.release()
-
-    def writer_enters(self):
-        self.mutex.acquire()
-        try:
-            if self.active_writers == 0 and self.waiting_writers == 0 and self.active_readers == 0:
-                self.active_writers += 1
-                self.can_write.release()
-            else:
-                self.waiting_writers += 1
-        finally:
-            self.mutex.release()
-        self.can_write.acquire()
-
-    def writer_leaves(self):
-        self.mutex.acquire()
-        try:
-            self.active_writers -= 1
-            if self.waiting_writers != 0:
-                self.active_writers  += 1
-                self.waiting_writers -= 1
-                self.can_write.release()
-            elif self.waiting_readers != 0:
-                t = self.waiting_readers
-                self.waiting_readers = 0
-                self.active_readers += t
-                while t > 0:
-                    self.can_read.release()
-                    t -= 1
-        finally:
-            self.mutex.release()
diff --git a/webapp/django/utils/termcolors.py b/webapp/django/utils/termcolors.py
deleted file mode 100644
index 17a600f..0000000
--- a/webapp/django/utils/termcolors.py
+++ /dev/null
@@ -1,68 +0,0 @@
-"""
-termcolors.py
-"""
-
-color_names = ('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white')
-foreground = dict([(color_names[x], '3%s' % x) for x in range(8)])
-background = dict([(color_names[x], '4%s' % x) for x in range(8)])
-del color_names
-
-RESET = '0'
-opt_dict = {'bold': '1', 'underscore': '4', 'blink': '5', 'reverse': '7', 'conceal': '8'}
-
-def colorize(text='', opts=(), **kwargs):
-    """
-    Returns your text, enclosed in ANSI graphics codes.
-
-    Depends on the keyword arguments 'fg' and 'bg', and the contents of
-    the opts tuple/list.
-
-    Returns the RESET code if no parameters are given.
-
-    Valid colors:
-        'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'
-
-    Valid options:
-        'bold'
-        'underscore'
-        'blink'
-        'reverse'
-        'conceal'
-        'noreset' - string will not be auto-terminated with the RESET code
-
-    Examples:
-        colorize('hello', fg='red', bg='blue', opts=('blink',))
-        colorize()
-        colorize('goodbye', opts=('underscore',))
-        print colorize('first line', fg='red', opts=('noreset',))
-        print 'this should be red too'
-        print colorize('and so should this')
-        print 'this should not be red'
-    """
-    text = str(text)
-    code_list = []
-    if text == '' and len(opts) == 1 and opts[0] == 'reset':
-        return '\x1b[%sm' % RESET
-    for k, v in kwargs.iteritems():
-        if k == 'fg':
-            code_list.append(foreground[v])
-        elif k == 'bg':
-            code_list.append(background[v])
-    for o in opts:
-        if o in opt_dict:
-            code_list.append(opt_dict[o])
-    if 'noreset' not in opts:
-        text = text + '\x1b[%sm' % RESET
-    return ('\x1b[%sm' % ';'.join(code_list)) + text
-
-def make_style(opts=(), **kwargs):
-    """
-    Returns a function with default parameters for colorize()
-
-    Example:
-        bold_red = make_style(opts=('bold',), fg='red')
-        print bold_red('hello')
-        KEYWORD = make_style(fg='yellow')
-        COMMENT = make_style(fg='blue', opts=('bold',))
-    """
-    return lambda text: colorize(text, opts, **kwargs)
diff --git a/webapp/django/utils/text.py b/webapp/django/utils/text.py
deleted file mode 100644
index 3686a45..0000000
--- a/webapp/django/utils/text.py
+++ /dev/null
@@ -1,248 +0,0 @@
-import re
-from django.conf import settings
-from django.utils.encoding import force_unicode
-from django.utils.functional import allow_lazy
-from django.utils.translation import ugettext_lazy
-from htmlentitydefs import name2codepoint
-
-# Capitalizes the first letter of a string.
-capfirst = lambda x: x and force_unicode(x)[0].upper() + force_unicode(x)[1:]
-capfirst = allow_lazy(capfirst, unicode)
-
-def wrap(text, width):
-    """
-    A word-wrap function that preserves existing line breaks and most spaces in
-    the text. Expects that existing line breaks are posix newlines.
-    """
-    text = force_unicode(text)
-    def _generator():
-        it = iter(text.split(' '))
-        word = it.next()
-        yield word
-        pos = len(word) - word.rfind('\n') - 1
-        for word in it:
-            if "\n" in word:
-                lines = word.split('\n')
-            else:
-                lines = (word,)
-            pos += len(lines[0]) + 1
-            if pos > width:
-                yield '\n'
-                pos = len(lines[-1])
-            else:
-                yield ' '
-                if len(lines) > 1:
-                    pos = len(lines[-1])
-            yield word
-    return u''.join(_generator())
-wrap = allow_lazy(wrap, unicode)
-
-def truncate_words(s, num):
-    "Truncates a string after a certain number of words."
-    s = force_unicode(s)
-    length = int(num)
-    words = s.split()
-    if len(words) > length:
-        words = words[:length]
-        if not words[-1].endswith('...'):
-            words.append('...')
-    return u' '.join(words)
-truncate_words = allow_lazy(truncate_words, unicode)
-
-def truncate_html_words(s, num):
-    """
-    Truncates html to a certain number of words (not counting tags and
-    comments). Closes opened tags if they were correctly closed in the given
-    html.
-    """
-    s = force_unicode(s)
-    length = int(num)
-    if length <= 0:
-        return u''
-    html4_singlets = ('br', 'col', 'link', 'base', 'img', 'param', 'area', 'hr', 'input')
-    # Set up regular expressions
-    re_words = re.compile(r'&.*?;|<.*?>|(\w[\w-]*)', re.U)
-    re_tag = re.compile(r'<(/)?([^ ]+?)(?: (/)| .*?)?>')
-    # Count non-HTML words and keep note of open tags
-    pos = 0
-    ellipsis_pos = 0
-    words = 0
-    open_tags = []
-    while words <= length:
-        m = re_words.search(s, pos)
-        if not m:
-            # Checked through whole string
-            break
-        pos = m.end(0)
-        if m.group(1):
-            # It's an actual non-HTML word
-            words += 1
-            if words == length:
-                ellipsis_pos = pos
-            continue
-        # Check for tag
-        tag = re_tag.match(m.group(0))
-        if not tag or ellipsis_pos:
-            # Don't worry about non tags or tags after our truncate point
-            continue
-        closing_tag, tagname, self_closing = tag.groups()
-        tagname = tagname.lower()  # Element names are always case-insensitive
-        if self_closing or tagname in html4_singlets:
-            pass
-        elif closing_tag:
-            # Check for match in open tags list
-            try:
-                i = open_tags.index(tagname)
-            except ValueError:
-                pass
-            else:
-                # SGML: An end tag closes, back to the matching start tag, all unclosed intervening start tags with omitted end tags
-                open_tags = open_tags[i+1:]
-        else:
-            # Add it to the start of the open tags list
-            open_tags.insert(0, tagname)
-    if words <= length:
-        # Don't try to close tags if we don't need to truncate
-        return s
-    out = s[:ellipsis_pos] + ' ...'
-    # Close any tags still open
-    for tag in open_tags:
-        out += '</%s>' % tag
-    # Return string
-    return out
-truncate_html_words = allow_lazy(truncate_html_words, unicode)
-
-def get_valid_filename(s):
-    """
-    Returns the given string converted to a string that can be used for a clean
-    filename. Specifically, leading and trailing spaces are removed; other
-    spaces are converted to underscores; and all non-filename-safe characters
-    are removed.
-    >>> get_valid_filename("john's portrait in 2004.jpg")
-    u'johns_portrait_in_2004.jpg'
-    """
-    s = force_unicode(s).strip().replace(' ', '_')
-    return re.sub(r'[^-A-Za-z0-9_.]', '', s)
-get_valid_filename = allow_lazy(get_valid_filename, unicode)
-
-def get_text_list(list_, last_word=ugettext_lazy(u'or')):
-    """
-    >>> get_text_list(['a', 'b', 'c', 'd'])
-    u'a, b, c or d'
-    >>> get_text_list(['a', 'b', 'c'], 'and')
-    u'a, b and c'
-    >>> get_text_list(['a', 'b'], 'and')
-    u'a and b'
-    >>> get_text_list(['a'])
-    u'a'
-    >>> get_text_list([])
-    u''
-    """
-    if len(list_) == 0: return u''
-    if len(list_) == 1: return force_unicode(list_[0])
-    return u'%s %s %s' % (', '.join([force_unicode(i) for i in list_][:-1]), force_unicode(last_word), force_unicode(list_[-1]))
-get_text_list = allow_lazy(get_text_list, unicode)
-
-def normalize_newlines(text):
-    return force_unicode(re.sub(r'\r\n|\r|\n', '\n', text))
-normalize_newlines = allow_lazy(normalize_newlines, unicode)
-
-def recapitalize(text):
-    "Recapitalizes text, placing caps after end-of-sentence punctuation."
-    text = force_unicode(text).lower()
-    capsRE = re.compile(r'(?:^|(?<=[\.\?\!] ))([a-z])')
-    text = capsRE.sub(lambda x: x.group(1).upper(), text)
-    return text
-recapitalize = allow_lazy(recapitalize)
-
-def phone2numeric(phone):
-    "Converts a phone number with letters into its numeric equivalent."
-    letters = re.compile(r'[A-PR-Y]', re.I)
-    char2number = lambda m: {'a': '2', 'c': '2', 'b': '2', 'e': '3',
-         'd': '3', 'g': '4', 'f': '3', 'i': '4', 'h': '4', 'k': '5',
-         'j': '5', 'm': '6', 'l': '5', 'o': '6', 'n': '6', 'p': '7',
-         's': '7', 'r': '7', 'u': '8', 't': '8', 'w': '9', 'v': '8',
-         'y': '9', 'x': '9'}.get(m.group(0).lower())
-    return letters.sub(char2number, phone)
-phone2numeric = allow_lazy(phone2numeric)
-
-# From http://www.xhaus.com/alan/python/httpcomp.html#gzip
-# Used with permission.
-def compress_string(s):
-    import cStringIO, gzip
-    zbuf = cStringIO.StringIO()
-    zfile = gzip.GzipFile(mode='wb', compresslevel=6, fileobj=zbuf)
-    zfile.write(s)
-    zfile.close()
-    return zbuf.getvalue()
-
-ustring_re = re.compile(u"([\u0080-\uffff])")
-
-def javascript_quote(s, quote_double_quotes=False):
-
-    def fix(match):
-        return r"\u%04x" % ord(match.group(1))
-
-    if type(s) == str:
-        s = s.decode('utf-8')
-    elif type(s) != unicode:
-        raise TypeError, s
-    s = s.replace('\\', '\\\\')
-    s = s.replace('\r', '\\r')
-    s = s.replace('\n', '\\n')
-    s = s.replace('\t', '\\t')
-    s = s.replace("'", "\\'")
-    if quote_double_quotes:
-        s = s.replace('"', '&quot;')
-    return str(ustring_re.sub(fix, s))
-javascript_quote = allow_lazy(javascript_quote, unicode)
-
-smart_split_re = re.compile('("(?:[^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'(?:[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'|[^\\s]+)')
-def smart_split(text):
-    r"""
-    Generator that splits a string by spaces, leaving quoted phrases together.
-    Supports both single and double quotes, and supports escaping quotes with
-    backslashes. In the output, strings will keep their initial and trailing
-    quote marks.
-
-    >>> list(smart_split(r'This is "a person\'s" test.'))
-    [u'This', u'is', u'"a person\\\'s"', u'test.']
-   	>>> list(smart_split(r"Another 'person\'s' test.")) 
-   	[u'Another', u"'person's'", u'test.']
-   	>>> list(smart_split(r'A "\"funky\" style" test.')) 
-   	[u'A', u'""funky" style"', u'test.']
-    """
-    text = force_unicode(text)
-    for bit in smart_split_re.finditer(text):
-        bit = bit.group(0)
-        if bit[0] == '"' and bit[-1] == '"':
-            yield '"' + bit[1:-1].replace('\\"', '"').replace('\\\\', '\\') + '"'
-        elif bit[0] == "'" and bit[-1] == "'":
-            yield "'" + bit[1:-1].replace("\\'", "'").replace("\\\\", "\\") + "'"
-        else:
-            yield bit
-smart_split = allow_lazy(smart_split, unicode)
-
-def _replace_entity(match):
-     text = match.group(1)
-     if text[0] == u'#':
-         text = text[1:]
-         try:
-             if text[0] in u'xX':
-                 c = int(text[1:], 16)
-             else:
-                 c = int(text)
-             return unichr(c)
-         except ValueError:
-             return match.group(0)
-     else:
-         try:
-             return unichr(name2codepoint[text])
-         except (ValueError, KeyError):
-             return match.group(0)
-
-_entity_re = re.compile(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));")
-
-def unescape_entities(text):
-     return _entity_re.sub(_replace_entity, text)
-unescape_entities = allow_lazy(unescape_entities, unicode)
diff --git a/webapp/django/utils/thread_support.py b/webapp/django/utils/thread_support.py
deleted file mode 100644
index 2b97d16..0000000
--- a/webapp/django/utils/thread_support.py
+++ /dev/null
@@ -1,12 +0,0 @@
-"""
-Code used in a couple of places to work with the current thread's environment.
-Current users include i18n and request prefix handling.
-"""
-
-try:
-    import threading
-    currentThread = threading.currentThread
-except ImportError:
-    def currentThread():
-        return "no threading"
-
diff --git a/webapp/django/utils/timesince.py b/webapp/django/utils/timesince.py
deleted file mode 100644
index e1132c3..0000000
--- a/webapp/django/utils/timesince.py
+++ /dev/null
@@ -1,67 +0,0 @@
-import datetime
-import time
-
-from django.utils.tzinfo import LocalTimezone
-from django.utils.translation import ungettext, ugettext
-
-def timesince(d, now=None):
-    """
-    Takes two datetime objects and returns the time between d and now
-    as a nicely formatted string, e.g. "10 minutes".  If d occurs after now,
-    then "0 minutes" is returned.
-
-    Units used are years, months, weeks, days, hours, and minutes.
-    Seconds and microseconds are ignored.  Up to two adjacent units will be
-    displayed.  For example, "2 weeks, 3 days" and "1 year, 3 months" are
-    possible outputs, but "2 weeks, 3 hours" and "1 year, 5 days" are not.
-
-    Adapted from http://blog.natbat.co.uk/archive/2003/Jun/14/time_since
-    """
-    chunks = (
-      (60 * 60 * 24 * 365, lambda n: ungettext('year', 'years', n)),
-      (60 * 60 * 24 * 30, lambda n: ungettext('month', 'months', n)),
-      (60 * 60 * 24 * 7, lambda n : ungettext('week', 'weeks', n)),
-      (60 * 60 * 24, lambda n : ungettext('day', 'days', n)),
-      (60 * 60, lambda n: ungettext('hour', 'hours', n)),
-      (60, lambda n: ungettext('minute', 'minutes', n))
-    )
-    # Convert datetime.date to datetime.datetime for comparison
-    if d.__class__ is not datetime.datetime:
-        d = datetime.datetime(d.year, d.month, d.day)
-    if now:
-        t = now.timetuple()
-    else:
-        t = time.localtime()
-    if d.tzinfo:
-        tz = LocalTimezone(d)
-    else:
-        tz = None
-    now = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], tzinfo=tz)
-
-    # ignore microsecond part of 'd' since we removed it from 'now'
-    delta = now - (d - datetime.timedelta(0, 0, d.microsecond))
-    since = delta.days * 24 * 60 * 60 + delta.seconds
-    if since <= 0:
-        # d is in the future compared to now, stop processing.
-        return u'0 ' + ugettext('minutes')
-    for i, (seconds, name) in enumerate(chunks):
-        count = since // seconds
-        if count != 0:
-            break
-    s = ugettext('%(number)d %(type)s') % {'number': count, 'type': name(count)}
-    if i + 1 < len(chunks):
-        # Now get the second item
-        seconds2, name2 = chunks[i + 1]
-        count2 = (since - (seconds * count)) // seconds2
-        if count2 != 0:
-            s += ugettext(', %(number)d %(type)s') % {'number': count2, 'type': name2(count2)}
-    return s
-
-def timeuntil(d, now=None):
-    """
-    Like timesince, but returns a string measuring the time until
-    the given time.
-    """
-    if now == None:
-        now = datetime.datetime.now()
-    return timesince(now, d)
diff --git a/webapp/django/utils/translation/__init__.py b/webapp/django/utils/translation/__init__.py
deleted file mode 100644
index 43ce3e5..0000000
--- a/webapp/django/utils/translation/__init__.py
+++ /dev/null
@@ -1,111 +0,0 @@
-"""
-Internationalization support.
-"""
-from django.utils.functional import lazy
-from django.utils.encoding import force_unicode
-
-__all__ = ['gettext', 'gettext_noop', 'gettext_lazy', 'ngettext',
-        'ngettext_lazy', 'string_concat', 'activate', 'deactivate',
-        'get_language', 'get_language_bidi', 'get_date_formats',
-        'get_partial_date_formats', 'check_for_language', 'to_locale',
-        'get_language_from_request', 'templatize', 'ugettext',
-        'ungettext', 'deactivate_all']
-
-# Here be dragons, so a short explanation of the logic won't hurt:
-# We are trying to solve two problems: (1) access settings, in particular
-# settings.USE_I18N, as late as possible, so that modules can be imported
-# without having to first configure Django, and (2) if some other code creates
-# a reference to one of these functions, don't break that reference when we
-# replace the functions with their real counterparts (once we do access the
-# settings).
-
-def delayed_loader(*args, **kwargs):
-    """
-    Replace each real_* function with the corresponding function from either
-    trans_real or trans_null (e.g. real_gettext is replaced with
-    trans_real.gettext or trans_null.gettext). This function is run once, the
-    first time any i18n method is called. It replaces all the i18n methods at
-    once at that time.
-    """
-    import traceback
-    from django.conf import settings
-    if settings.USE_I18N:
-        import trans_real as trans
-    else:
-        import trans_null as trans
-    caller = traceback.extract_stack(limit=2)[0][2]
-    g = globals()
-    for name in __all__:
-        if hasattr(trans, name):
-            g['real_%s' % name] = getattr(trans, name)
-
-    # Make the originally requested function call on the way out the door.
-    return g['real_%s' % caller](*args, **kwargs)
-
-g = globals()
-for name in __all__:
-    g['real_%s' % name] = delayed_loader
-del g, delayed_loader
-
-def gettext_noop(message):
-    return real_gettext_noop(message)
-
-ugettext_noop = gettext_noop
-
-def gettext(message):
-    return real_gettext(message)
-
-def ngettext(singular, plural, number):
-    return real_ngettext(singular, plural, number)
-
-def ugettext(message):
-    return real_ugettext(message)
-
-def ungettext(singular, plural, number):
-    return real_ungettext(singular, plural, number)
-
-ngettext_lazy = lazy(ngettext, str)
-gettext_lazy = lazy(gettext, str)
-ungettext_lazy = lazy(ungettext, unicode)
-ugettext_lazy = lazy(ugettext, unicode)
-
-def activate(language):
-    return real_activate(language)
-
-def deactivate():
-    return real_deactivate()
-
-def get_language():
-    return real_get_language()
-
-def get_language_bidi():
-    return real_get_language_bidi()
-
-def get_date_formats():
-    return real_get_date_formats()
-
-def get_partial_date_formats():
-    return real_get_partial_date_formats()
-
-def check_for_language(lang_code):
-    return real_check_for_language(lang_code)
-
-def to_locale(language):
-    return real_to_locale(language)
-
-def get_language_from_request(request):
-    return real_get_language_from_request(request)
-
-def templatize(src):
-    return real_templatize(src)
-
-def deactivate_all():
-    return real_deactivate_all()
-
-def string_concat(*strings):
-    """
-    Lazy variant of string concatenation, needed for translations that are
-    constructed from multiple parts.
-    """
-    return u''.join([force_unicode(s) for s in strings])
-string_concat = lazy(string_concat, unicode)
diff --git a/webapp/django/utils/translation/trans_null.py b/webapp/django/utils/translation/trans_null.py
deleted file mode 100644
index 98c6de6..0000000
--- a/webapp/django/utils/translation/trans_null.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# These are versions of the functions in django.utils.translation.trans_real
-# that don't actually do anything. This is purely for performance, so that
-# settings.USE_I18N = False can use this module rather than trans_real.py.
-
-from django.conf import settings
-from django.utils.encoding import force_unicode
-from django.utils.safestring import mark_safe, SafeData
-
-def ngettext(singular, plural, number):
-    if number == 1: return singular
-    return plural
-ngettext_lazy = ngettext
-
-def ungettext(singular, plural, number):
-    return force_unicode(ngettext(singular, plural, number))
-
-activate = lambda x: None
-deactivate = deactivate_all = lambda: None
-get_language = lambda: settings.LANGUAGE_CODE
-get_language_bidi = lambda: settings.LANGUAGE_CODE in settings.LANGUAGES_BIDI
-get_date_formats = lambda: (settings.DATE_FORMAT, settings.DATETIME_FORMAT, settings.TIME_FORMAT)
-get_partial_date_formats = lambda: (settings.YEAR_MONTH_FORMAT, settings.MONTH_DAY_FORMAT)
-check_for_language = lambda x: True
-
-TECHNICAL_ID_MAP = {
-    "DATE_WITH_TIME_FULL": settings.DATETIME_FORMAT,
-    "DATE_FORMAT": settings.DATE_FORMAT,
-    "DATETIME_FORMAT": settings.DATETIME_FORMAT,
-    "TIME_FORMAT": settings.TIME_FORMAT,
-    "YEAR_MONTH_FORMAT": settings.YEAR_MONTH_FORMAT,
-    "MONTH_DAY_FORMAT": settings.MONTH_DAY_FORMAT,
-}
-
-def gettext(message):
-    result = TECHNICAL_ID_MAP.get(message, message)
-    if isinstance(message, SafeData):
-        return mark_safe(result)
-    return result
-
-def ugettext(message):
-    return force_unicode(gettext(message))
-
-gettext_noop = gettext_lazy = _ = gettext
-
-def to_locale(language):
-    p = language.find('-')
-    if p >= 0:
-        return language[:p].lower()+'_'+language[p+1:].upper()
-    else:
-        return language.lower()
-
-def get_language_from_request(request):
-    return settings.LANGUAGE_CODE
diff --git a/webapp/django/utils/translation/trans_real.py b/webapp/django/utils/translation/trans_real.py
deleted file mode 100644
index 93bb3c9..0000000
--- a/webapp/django/utils/translation/trans_real.py
+++ /dev/null
@@ -1,541 +0,0 @@
-"""Translation helper functions."""
-
-import locale
-import os
-import re
-import sys
-import gettext as gettext_module
-from cStringIO import StringIO
-
-from django.utils.safestring import mark_safe, SafeData
-from django.utils.thread_support import currentThread
-
-# Translations are cached in a dictionary for every language+app tuple.
-# The active translations are stored by threadid to make them thread local.
-_translations = {}
-_active = {}
-
-# The default translation is based on the settings file.
-_default = None
-
-# This is a cache for normalized accept-header languages to prevent multiple
-# file lookups when checking the same locale on repeated requests.
-_accepted = {}
-
-# Format of Accept-Language header values. From RFC 2616, section 14.4 and 3.9.
-accept_language_re = re.compile(r'''
-        ([A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*|\*)   # "en", "en-au", "x-y-z", "*"
-        (?:;q=(0(?:\.\d{,3})?|1(?:.0{,3})?))?   # Optional "q=1.00", "q=0.8"
-        (?:\s*,\s*|$)                            # Multiple accepts per header.
-        ''', re.VERBOSE)
-
-def to_locale(language, to_lower=False):
-    """
-    Turns a language name (en-us) into a locale name (en_US). If 'to_lower' is
-    True, the last component is lower-cased (en_us).
-    """
-    p = language.find('-')
-    if p >= 0:
-        if to_lower:
-            return language[:p].lower()+'_'+language[p+1:].lower()
-        else:
-            return language[:p].lower()+'_'+language[p+1:].upper()
-    else:
-        return language.lower()
-
-def to_language(locale):
-    """Turns a locale name (en_US) into a language name (en-us)."""
-    p = locale.find('_')
-    if p >= 0:
-        return locale[:p].lower()+'-'+locale[p+1:].lower()
-    else:
-        return locale.lower()
-
-class DjangoTranslation(gettext_module.GNUTranslations):
-    """
-    This class sets up the GNUTranslations context with regard to output
-    charset. Django uses a defined DEFAULT_CHARSET as the output charset on
-    Python 2.4. With Python 2.3, use DjangoTranslation23.
-    """
-    def __init__(self, *args, **kw):
-        from django.conf import settings
-        gettext_module.GNUTranslations.__init__(self, *args, **kw)
-        # Starting with Python 2.4, there's a function to define
-        # the output charset. Before 2.4, the output charset is
-        # identical with the translation file charset.
-        try:
-            self.set_output_charset('utf-8')
-        except AttributeError:
-            pass
-        self.django_output_charset = 'utf-8'
-        self.__language = '??'
-
-    def merge(self, other):
-        self._catalog.update(other._catalog)
-
-    def set_language(self, language):
-        self.__language = language
-
-    def language(self):
-        return self.__language
-
-    def __repr__(self):
-        return "<DjangoTranslation lang:%s>" % self.__language
-
-class DjangoTranslation23(DjangoTranslation):
-    """
-    Compatibility class that is only used with Python 2.3.
-    Python 2.3 doesn't support set_output_charset on translation objects and
-    needs this wrapper class to make sure input charsets from translation files
-    are correctly translated to output charsets.
-
-    With a full switch to Python 2.4, this can be removed from the source.
-    """
-    def gettext(self, msgid):
-        res = self.ugettext(msgid)
-        return res.encode(self.django_output_charset)
-
-    def ngettext(self, msgid1, msgid2, n):
-        res = self.ungettext(msgid1, msgid2, n)
-        return res.encode(self.django_output_charset)
-
-def translation(language):
-    """
-    Returns a translation object.
-
-    This translation object will be constructed out of multiple GNUTranslations
-    objects by merging their catalogs. It will construct a object for the
-    requested language and add a fallback to the default language, if it's
-    different from the requested language.
-    """
-    global _translations
-
-    t = _translations.get(language, None)
-    if t is not None:
-        return t
-
-    from django.conf import settings
-
-    # set up the right translation class
-    klass = DjangoTranslation
-    if sys.version_info < (2, 4):
-        klass = DjangoTranslation23
-
-    globalpath = os.path.join(os.path.dirname(sys.modules[settings.__module__].__file__), 'locale')
-
-    if settings.SETTINGS_MODULE is not None:
-        parts = settings.SETTINGS_MODULE.split('.')
-        project = __import__(parts[0], {}, {}, [])
-        projectpath = os.path.join(os.path.dirname(project.__file__), 'locale')
-    else:
-        projectpath = None
-
-    def _fetch(lang, fallback=None):
-
-        global _translations
-
-        loc = to_locale(lang)
-
-        res = _translations.get(lang, None)
-        if res is not None:
-            return res
-
-        def _translation(path):
-            try:
-                t = gettext_module.translation('django', path, [loc], klass)
-                t.set_language(lang)
-                return t
-            except IOError, e:
-                return None
-
-        res = _translation(globalpath)
-
-        # We want to ensure that, for example,  "en-gb" and "en-us" don't share
-        # the same translation object (thus, merging en-us with a local update
-        # doesn't affect en-gb), even though they will both use the core "en"
-        # translation. So we have to subvert Python's internal gettext caching.
-        base_lang = lambda x: x.split('-', 1)[0]
-        if base_lang(lang) in [base_lang(trans) for trans in _translations]:
-            res._info = res._info.copy()
-            res._catalog = res._catalog.copy()
-
-        def _merge(path):
-            t = _translation(path)
-            if t is not None:
-                if res is None:
-                    return t
-                else:
-                    res.merge(t)
-            return res
-
-        for localepath in settings.LOCALE_PATHS:
-            if os.path.isdir(localepath):
-                res = _merge(localepath)
-
-        if projectpath and os.path.isdir(projectpath):
-            res = _merge(projectpath)
-
-        for appname in settings.INSTALLED_APPS:
-            p = appname.rfind('.')
-            if p >= 0:
-                app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:])
-            else:
-                app = __import__(appname, {}, {}, [])
-
-            apppath = os.path.join(os.path.dirname(app.__file__), 'locale')
-
-            if os.path.isdir(apppath):
-                res = _merge(apppath)
-
-        if res is None:
-            if fallback is not None:
-                res = fallback
-            else:
-                return gettext_module.NullTranslations()
-        _translations[lang] = res
-        return res
-
-    default_translation = _fetch(settings.LANGUAGE_CODE)
-    current_translation = _fetch(language, fallback=default_translation)
-
-    return current_translation
-
-def activate(language):
-    """
-    Fetches the translation object for a given tuple of application name and
-    language and installs it as the current translation object for the current
-    thread.
-    """
-    _active[currentThread()] = translation(language)
-
-def deactivate():
-    """
-    Deinstalls the currently active translation object so that further _ calls
-    will resolve against the default translation object, again.
-    """
-    global _active
-    if currentThread() in _active:
-        del _active[currentThread()]
-
-def deactivate_all():
-    """
-    Makes the active translation object a NullTranslations() instance. This is
-    useful when we want delayed translations to appear as the original string
-    for some reason.
-    """
-    _active[currentThread()] = gettext_module.NullTranslations()
-
-def get_language():
-    """Returns the currently selected language."""
-    t = _active.get(currentThread(), None)
-    if t is not None:
-        try:
-            return to_language(t.language())
-        except AttributeError:
-            pass
-    # If we don't have a real translation object, assume it's the default language.
-    from django.conf import settings
-    return settings.LANGUAGE_CODE
-
-def get_language_bidi():
-    """
-    Returns selected language's BiDi layout.
-    False = left-to-right layout
-    True = right-to-left layout
-    """
-    from django.conf import settings
-    return get_language() in settings.LANGUAGES_BIDI
-
-def catalog():
-    """
-    Returns the current active catalog for further processing.
-    This can be used if you need to modify the catalog or want to access the
-    whole message catalog instead of just translating one string.
-    """
-    global _default, _active
-    t = _active.get(currentThread(), None)
-    if t is not None:
-        return t
-    if _default is None:
-        from django.conf import settings
-        _default = translation(settings.LANGUAGE_CODE)
-    return _default
-
-def do_translate(message, translation_function):
-    """
-    Translates 'message' using the given 'translation_function' name -- which
-    will be either gettext or ugettext. It uses the current thread to find the
-    translation object to use. If no current translation is activated, the
-    message will be run through the default translation object.
-    """
-    global _default, _active
-    t = _active.get(currentThread(), None)
-    if t is not None:
-        result = getattr(t, translation_function)(message)
-    else:
-        if _default is None:
-            from django.conf import settings
-            _default = translation(settings.LANGUAGE_CODE)
-        result = getattr(_default, translation_function)(message)
-    if isinstance(message, SafeData):
-        return mark_safe(result)
-    return result
-
-def gettext(message):
-    return do_translate(message, 'gettext')
-
-def ugettext(message):
-    return do_translate(message, 'ugettext')
-
-def gettext_noop(message):
-    """
-    Marks strings for translation but doesn't translate them now. This can be
-    used to store strings in global variables that should stay in the base
-    language (because they might be used externally) and will be translated
-    later.
-    """
-    return message
-
-def do_ntranslate(singular, plural, number, translation_function):
-    global _default, _active
-
-    t = _active.get(currentThread(), None)
-    if t is not None:
-        return getattr(t, translation_function)(singular, plural, number)
-    if _default is None:
-        from django.conf import settings
-        _default = translation(settings.LANGUAGE_CODE)
-    return getattr(_default, translation_function)(singular, plural, number)
-
-def ngettext(singular, plural, number):
-    """
-    Returns a UTF-8 bytestring of the translation of either the singular or
-    plural, based on the number.
-    """
-    return do_ntranslate(singular, plural, number, 'ngettext')
-
-def ungettext(singular, plural, number):
-    """
-    Returns a unicode strings of the translation of either the singular or
-    plural, based on the number.
-    """
-    return do_ntranslate(singular, plural, number, 'ungettext')
-
-def check_for_language(lang_code):
-    """
-    Checks whether there is a global language file for the given language
-    code. This is used to decide whether a user-provided language is
-    available. This is only used for language codes from either the cookies or
-    session.
-    """
-    from django.conf import settings
-    globalpath = os.path.join(os.path.dirname(sys.modules[settings.__module__].__file__), 'locale')
-    if gettext_module.find('django', globalpath, [to_locale(lang_code)]) is not None:
-        return True
-    else:
-        return False
-
-def get_language_from_request(request):
-    """
-    Analyzes the request to find what language the user wants the system to
-    show. Only languages listed in settings.LANGUAGES are taken into account.
-    If the user requests a sublanguage where we have a main language, we send
-    out the main language.
-    """
-    global _accepted
-    from django.conf import settings
-    globalpath = os.path.join(os.path.dirname(sys.modules[settings.__module__].__file__), 'locale')
-    supported = dict(settings.LANGUAGES)
-
-    if hasattr(request, 'session'):
-        lang_code = request.session.get('django_language', None)
-        if lang_code in supported and lang_code is not None and check_for_language(lang_code):
-            return lang_code
-
-    lang_code = request.COOKIES.get(settings.LANGUAGE_COOKIE_NAME)
-    if lang_code and lang_code in supported and check_for_language(lang_code):
-        return lang_code
-
-    accept = request.META.get('HTTP_ACCEPT_LANGUAGE', '')
-    for accept_lang, unused in parse_accept_lang_header(accept):
-        if accept_lang == '*':
-            break
-
-        # We have a very restricted form for our language files (no encoding
-        # specifier, since they all must be UTF-8 and only one possible
-        # language each time. So we avoid the overhead of gettext.find() and
-        # work out the MO file manually.
-
-        # 'normalized' is the root name of the locale in POSIX format (which is
-        # the format used for the directories holding the MO files).
-        normalized = locale.locale_alias.get(to_locale(accept_lang, True))
-        if not normalized:
-            continue
-        # Remove the default encoding from locale_alias.
-        normalized = normalized.split('.')[0]
-
-        if normalized in _accepted:
-            # We've seen this locale before and have an MO file for it, so no
-            # need to check again.
-            return _accepted[normalized]
-
-        for lang, dirname in ((accept_lang, normalized),
-                (accept_lang.split('-')[0], normalized.split('_')[0])):
-            if lang not in supported:
-                continue
-            langfile = os.path.join(globalpath, dirname, 'LC_MESSAGES',
-                    'django.mo')
-            if os.path.exists(langfile):
-                _accepted[normalized] = lang
-            return lang
-
-    return settings.LANGUAGE_CODE
-
-def get_date_formats():
-    """
-    Checks whether translation files provide a translation for some technical
-    message ID to store date and time formats. If it doesn't contain one, the
-    formats provided in the settings will be used.
-    """
-    from django.conf import settings
-    date_format = ugettext('DATE_FORMAT')
-    datetime_format = ugettext('DATETIME_FORMAT')
-    time_format = ugettext('TIME_FORMAT')
-    if date_format == 'DATE_FORMAT':
-        date_format = settings.DATE_FORMAT
-    if datetime_format == 'DATETIME_FORMAT':
-        datetime_format = settings.DATETIME_FORMAT
-    if time_format == 'TIME_FORMAT':
-        time_format = settings.TIME_FORMAT
-    return date_format, datetime_format, time_format
-
-def get_partial_date_formats():
-    """
-    Checks whether translation files provide a translation for some technical
-    message ID to store partial date formats. If it doesn't contain one, the
-    formats provided in the settings will be used.
-    """
-    from django.conf import settings
-    year_month_format = ugettext('YEAR_MONTH_FORMAT')
-    month_day_format = ugettext('MONTH_DAY_FORMAT')
-    if year_month_format == 'YEAR_MONTH_FORMAT':
-        year_month_format = settings.YEAR_MONTH_FORMAT
-    if month_day_format == 'MONTH_DAY_FORMAT':
-        month_day_format = settings.MONTH_DAY_FORMAT
-    return year_month_format, month_day_format
-
-dot_re = re.compile(r'\S')
-def blankout(src, char):
-    """
-    Changes every non-whitespace character to the given char.
-    Used in the templatize function.
-    """
-    return dot_re.sub(char, src)
-
-inline_re = re.compile(r"""^\s*trans\s+((?:".*?")|(?:'.*?'))\s*""")
-block_re = re.compile(r"""^\s*blocktrans(?:\s+|$)""")
-endblock_re = re.compile(r"""^\s*endblocktrans$""")
-plural_re = re.compile(r"""^\s*plural$""")
-constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
-
-def templatize(src):
-    """
-    Turns a Django template into something that is understood by xgettext. It
-    does so by translating the Django translation tags into standard gettext
-    function invocations.
-    """
-    from django.template import Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK
-    out = StringIO()
-    intrans = False
-    inplural = False
-    singular = []
-    plural = []
-    for t in Lexer(src, None).tokenize():
-        if intrans:
-            if t.token_type == TOKEN_BLOCK:
-                endbmatch = endblock_re.match(t.contents)
-                pluralmatch = plural_re.match(t.contents)
-                if endbmatch:
-                    if inplural:
-                        out.write(' ngettext(%r,%r,count) ' % (''.join(singular), ''.join(plural)))
-                        for part in singular:
-                            out.write(blankout(part, 'S'))
-                        for part in plural:
-                            out.write(blankout(part, 'P'))
-                    else:
-                        out.write(' gettext(%r) ' % ''.join(singular))
-                        for part in singular:
-                            out.write(blankout(part, 'S'))
-                    intrans = False
-                    inplural = False
-                    singular = []
-                    plural = []
-                elif pluralmatch:
-                    inplural = True
-                else:
-                    raise SyntaxError("Translation blocks must not include other block tags: %s" % t.contents)
-            elif t.token_type == TOKEN_VAR:
-                if inplural:
-                    plural.append('%%(%s)s' % t.contents)
-                else:
-                    singular.append('%%(%s)s' % t.contents)
-            elif t.token_type == TOKEN_TEXT:
-                if inplural:
-                    plural.append(t.contents)
-                else:
-                    singular.append(t.contents)
-        else:
-            if t.token_type == TOKEN_BLOCK:
-                imatch = inline_re.match(t.contents)
-                bmatch = block_re.match(t.contents)
-                cmatches = constant_re.findall(t.contents)
-                if imatch:
-                    g = imatch.group(1)
-                    if g[0] == '"': g = g.strip('"')
-                    elif g[0] == "'": g = g.strip("'")
-                    out.write(' gettext(%r) ' % g)
-                elif bmatch:
-                    for fmatch in constant_re.findall(t.contents):
-                        out.write(' _(%s) ' % fmatch)
-                    intrans = True
-                    inplural = False
-                    singular = []
-                    plural = []
-                elif cmatches:
-                    for cmatch in cmatches:
-                        out.write(' _(%s) ' % cmatch)
-                else:
-                    out.write(blankout(t.contents, 'B'))
-            elif t.token_type == TOKEN_VAR:
-                parts = t.contents.split('|')
-                cmatch = constant_re.match(parts[0])
-                if cmatch:
-                    out.write(' _(%s) ' % cmatch.group(1))
-                for p in parts[1:]:
-                    if p.find(':_(') >= 0:
-                        out.write(' %s ' % p.split(':',1)[1])
-                    else:
-                        out.write(blankout(p, 'F'))
-            else:
-                out.write(blankout(t.contents, 'X'))
-    return out.getvalue()
-
-def parse_accept_lang_header(lang_string):
-    """
-    Parses the lang_string, which is the body of an HTTP Accept-Language
-    header, and returns a list of (lang, q-value), ordered by 'q' values.
-
-    Any format errors in lang_string results in an empty list being returned.
-    """
-    result = []
-    pieces = accept_language_re.split(lang_string)
-    if pieces[-1]:
-        return []
-    for i in range(0, len(pieces) - 1, 3):
-        first, lang, priority = pieces[i : i + 3]
-        if first:
-            return []
-        priority = priority and float(priority) or 1.0
-        result.append((lang, priority))
-    result.sort(lambda x, y: -cmp(x[1], y[1]))
-    return result
diff --git a/webapp/django/utils/tree.py b/webapp/django/utils/tree.py
deleted file mode 100644
index a9028b8..0000000
--- a/webapp/django/utils/tree.py
+++ /dev/null
@@ -1,153 +0,0 @@
-"""
-A class for storing a tree graph. Primarily used for filter constructs in the
-ORM.
-"""
-
-from copy import deepcopy
-
-class Node(object):
-    """
-    A single internal node in the tree graph. A Node should be viewed as a
-    connection (the root) with the children being either leaf nodes or other
-    Node instances.
-    """
-    # Standard connector type. Clients usually won't use this at all and
-    # subclasses will usually override the value.
-    default = 'DEFAULT'
-
-    def __init__(self, children=None, connector=None, negated=False):
-        """
-        Constructs a new Node. If no connector is given, the default will be
-        used.
-
-        Warning: You probably don't want to pass in the 'negated' parameter. It
-        is NOT the same as constructing a node and calling negate() on the
-        result.
-        """
-        self.children = children and children[:] or []
-        self.connector = connector or self.default
-        self.subtree_parents = []
-        self.negated = negated
-
-    # We need this because of django.db.models.query_utils.Q. Q. __init__() is
-    # problematic, but it is a natural Node subclass in all other respects.
-    def _new_instance(cls, children=None, connector=None, negated=False):
-        """
-        This is called to create a new instance of this class when we need new
-        Nodes (or subclasses) in the internal code in this class. Normally, it
-        just shadows __init__(). However, subclasses with an __init__ signature
-        that is not an extension of Node.__init__ might need to implement this
-        method to allow a Node to create a new instance of them (if they have
-        any extra setting up to do).
-        """
-        obj = Node(children, connector, negated)
-        obj.__class__ = cls
-        return obj
-    _new_instance = classmethod(_new_instance)
-
-    def __str__(self):
-        if self.negated:
-            return '(NOT (%s: %s))' % (self.connector, ', '.join([str(c) for c
-                    in self.children]))
-        return '(%s: %s)' % (self.connector, ', '.join([str(c) for c in
-                self.children]))
-
-    def __deepcopy__(self, memodict):
-        """
-        Utility method used by copy.deepcopy().
-        """
-        obj = Node(connector=self.connector, negated=self.negated)
-        obj.__class__ = self.__class__
-        obj.children = deepcopy(self.children, memodict)
-        obj.subtree_parents = deepcopy(self.subtree_parents, memodict)
-        return obj
-
-    def __len__(self):
-        """
-        The size of a node if the number of children it has.
-        """
-        return len(self.children)
-
-    def __nonzero__(self):
-        """
-        For truth value testing.
-        """
-        return bool(self.children)
-
-    def __contains__(self, other):
-        """
-        Returns True is 'other' is a direct child of this instance.
-        """
-        return other in self.children
-
-    def add(self, node, conn_type):
-        """
-        Adds a new node to the tree. If the conn_type is the same as the root's
-        current connector type, the node is added to the first level.
-        Otherwise, the whole tree is pushed down one level and a new root
-        connector is created, connecting the existing tree and the new node.
-        """
-        if node in self.children and conn_type == self.connector:
-            return
-        if len(self.children) < 2:
-            self.connector = conn_type
-        if self.connector == conn_type:
-            if isinstance(node, Node) and (node.connector == conn_type or
-                    len(node) == 1):
-                self.children.extend(node.children)
-            else:
-                self.children.append(node)
-        else:
-            obj = self._new_instance(self.children, self.connector,
-                    self.negated)
-            self.connector = conn_type
-            self.children = [obj, node]
-
-    def negate(self):
-        """
-        Negate the sense of the root connector. This reorganises the children
-        so that the current node has a single child: a negated node containing
-        all the previous children. This slightly odd construction makes adding
-        new children behave more intuitively.
-
-        Interpreting the meaning of this negate is up to client code. This
-        method is useful for implementing "not" arrangements.
-        """
-        self.children = [self._new_instance(self.children, self.connector,
-                not self.negated)]
-        self.connector = self.default
-
-    def start_subtree(self, conn_type):
-        """
-        Sets up internal state so that new nodes are added to a subtree of the
-        current node. The conn_type specifies how the sub-tree is joined to the
-        existing children.
-        """
-        if len(self.children) == 1:
-            self.connector = conn_type
-        elif self.connector != conn_type:
-            self.children = [self._new_instance(self.children, self.connector,
-                    self.negated)]
-            self.connector = conn_type
-            self.negated = False
-
-        self.subtree_parents.append(self.__class__(self.children,
-                self.connector, self.negated))
-        self.connector = self.default
-        self.negated = False
-        self.children = []
-
-    def end_subtree(self):
-        """
-        Closes off the most recently unmatched start_subtree() call.
-
-        This puts the current state into a node of the parent tree and returns
-        the current instances state to be the parent.
-        """
-        obj = self.subtree_parents.pop()
-        node = self.__class__(self.children, self.connector)
-        self.connector = obj.connector
-        self.negated = obj.negated
-        self.children = obj.children
-        self.children.append(node)
-
diff --git a/webapp/django/utils/tzinfo.py b/webapp/django/utils/tzinfo.py
deleted file mode 100644
index 58cfcd5..0000000
--- a/webapp/django/utils/tzinfo.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"Implementation of tzinfo classes for use with datetime.datetime."
-
-import locale
-import time
-from datetime import timedelta, tzinfo
-from django.utils.encoding import smart_unicode
-
-try:
-    DEFAULT_ENCODING = locale.getdefaultlocale()[1] or 'ascii'
-except:
-    # Any problems at all determining the locale and we fallback. See #5846.
-    DEFAULT_ENCODING = 'ascii'
-
-class FixedOffset(tzinfo):
-    "Fixed offset in minutes east from UTC."
-    def __init__(self, offset):
-        if isinstance(offset, timedelta):
-            self.__offset = offset
-            offset = self.__offset.seconds // 60
-        else:
-            self.__offset = timedelta(minutes=offset)
-
-        self.__name = u"%+03d%02d" % (offset / 60, offset % 60)
-
-    def __repr__(self):
-        return self.__name
-
-    def utcoffset(self, dt):
-        return self.__offset
-
-    def tzname(self, dt):
-        return self.__name
-
-    def dst(self, dt):
-        return timedelta(0)
-
-class LocalTimezone(tzinfo):
-    "Proxy timezone information from time module."
-    def __init__(self, dt):
-        tzinfo.__init__(self)
-        self._tzname = self.tzname(dt)
-
-    def __repr__(self):
-        return self._tzname
-
-    def utcoffset(self, dt):
-        if self._isdst(dt):
-            return timedelta(seconds=-time.altzone)
-        else:
-            return timedelta(seconds=-time.timezone)
-
-    def dst(self, dt):
-        if self._isdst(dt):
-            return timedelta(seconds=-time.altzone) - timedelta(seconds=-time.timezone)
-        else:
-            return timedelta(0)
-
-    def tzname(self, dt):
-        try:
-            return smart_unicode(time.tzname[self._isdst(dt)], DEFAULT_ENCODING)
-        except UnicodeDecodeError:
-            return None
-
-    def _isdst(self, dt):
-        tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1)
-        try:
-            stamp = time.mktime(tt)
-        except (OverflowError, ValueError):
-            # 32 bit systems can't handle dates after Jan 2038, and certain
-            # systems can't handle dates before ~1901-12-01:
-            #
-            # >>> time.mktime((1900, 1, 13, 0, 0, 0, 0, 0, 0))
-            # OverflowError: mktime argument out of range
-            # >>> time.mktime((1850, 1, 13, 0, 0, 0, 0, 0, 0))
-            # ValueError: year out of range
-            #
-            # In this case, we fake the date, because we only care about the
-            # DST flag.
-            tt = (2037,) + tt[1:]
-            stamp = time.mktime(tt)
-        tt = time.localtime(stamp)
-        return tt.tm_isdst > 0
diff --git a/webapp/django/utils/version.py b/webapp/django/utils/version.py
deleted file mode 100644
index cf80856..0000000
--- a/webapp/django/utils/version.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import django
-import os.path
-import re
-
-def get_svn_revision(path=None):
-    """
-    Returns the SVN revision in the form SVN-XXXX,
-    where XXXX is the revision number.
-
-    Returns SVN-unknown if anything goes wrong, such as an unexpected
-    format of internal SVN files.
-
-    If path is provided, it should be a directory whose SVN info you want to
-    inspect. If it's not provided, this will use the root django/ package
-    directory.
-    """
-    rev = None
-    if path is None:
-        path = django.__path__[0]
-    entries_path = '%s/.svn/entries' % path
-
-    if os.path.exists(entries_path):
-        entries = open(entries_path, 'r').read()
-        # Versions >= 7 of the entries file are flat text.  The first line is
-        # the version number. The next set of digits after 'dir' is the revision.
-        if re.match('(\d+)', entries):
-            rev_match = re.search('\d+\s+dir\s+(\d+)', entries)
-            if rev_match:
-                rev = rev_match.groups()[0]
-        # Older XML versions of the file specify revision as an attribute of
-        # the first entries node.
-        else:
-            from xml.dom import minidom
-            dom = minidom.parse(entries_path)
-            rev = dom.getElementsByTagName('entry')[0].getAttribute('revision')
-
-    if rev:
-        return u'SVN-%s' % rev
-    return u'SVN-unknown'
diff --git a/webapp/django/utils/xmlutils.py b/webapp/django/utils/xmlutils.py
deleted file mode 100644
index a1eb5fb..0000000
--- a/webapp/django/utils/xmlutils.py
+++ /dev/null
@@ -1,14 +0,0 @@
-"""
-Utilities for XML generation/parsing.
-"""
-
-from xml.sax.saxutils import XMLGenerator
-
-class SimplerXMLGenerator(XMLGenerator):
-    def addQuickElement(self, name, contents=None, attrs=None):
-        "Convenience method for adding an element with no children"
-        if attrs is None: attrs = {}
-        self.startElement(name, attrs)
-        if contents is not None:
-            self.characters(contents)
-        self.endElement(name)
diff --git a/webapp/django/views/__init__.py b/webapp/django/views/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/views/__init__.py
+++ /dev/null
diff --git a/webapp/django/views/debug.py b/webapp/django/views/debug.py
deleted file mode 100644
index 72631b3..0000000
--- a/webapp/django/views/debug.py
+++ /dev/null
@@ -1,802 +0,0 @@
-import os
-import re
-import sys
-import datetime
-
-from django.conf import settings
-from django.template import Template, Context, TemplateDoesNotExist
-from django.utils.html import escape
-from django.http import HttpResponse, HttpResponseServerError, HttpResponseNotFound
-from django.utils.encoding import smart_unicode
-
-HIDDEN_SETTINGS = re.compile('SECRET|PASSWORD|PROFANITIES_LIST')
-
-def linebreak_iter(template_source):
-    yield 0
-    p = template_source.find('\n')
-    while p >= 0:
-        yield p+1
-        p = template_source.find('\n', p+1)
-    yield len(template_source) + 1
-
-def get_safe_settings():
-    "Returns a dictionary of the settings module, with sensitive settings blurred out."
-    settings_dict = {}
-    for k in dir(settings):
-        if k.isupper():
-            if HIDDEN_SETTINGS.search(k):
-                settings_dict[k] = '********************'
-            else:
-                settings_dict[k] = getattr(settings, k)
-    return settings_dict
-
-def technical_500_response(request, exc_type, exc_value, tb):
-    """
-    Create a technical server error response. The last three arguments are
-    the values returned from sys.exc_info() and friends.
-    """
-    reporter = ExceptionReporter(request, exc_type, exc_value, tb)
-    html = reporter.get_traceback_html()
-    return HttpResponseServerError(html, mimetype='text/html')
-
-class ExceptionReporter:
-    """
-    A class to organize and coordinate reporting on exceptions.
-    """
-    def __init__(self, request, exc_type, exc_value, tb):
-        self.request = request
-        self.exc_type = exc_type
-        self.exc_value = exc_value
-        self.tb = tb
-
-        self.template_info = None
-        self.template_does_not_exist = False
-        self.loader_debug_info = None
-
-        # Handle deprecated string exceptions
-        if isinstance(self.exc_type, basestring):
-            self.exc_value = Exception('Deprecated String Exception: %r' % self.exc_type)
-            self.exc_type = type(self.exc_value)
-
-    def get_traceback_html(self):
-        "Return HTML code for traceback."
-
-        if issubclass(self.exc_type, TemplateDoesNotExist):
-            from django.template.loader import template_source_loaders
-            self.template_does_not_exist = True
-            self.loader_debug_info = []
-            for loader in template_source_loaders:
-                try:
-                    source_list_func = getattr(__import__(loader.__module__, {}, {}, ['get_template_sources']), 'get_template_sources')
-                    # NOTE: This assumes exc_value is the name of the template that
-                    # the loader attempted to load.
-                    template_list = [{'name': t, 'exists': os.path.exists(t)} \
-                        for t in source_list_func(str(self.exc_value))]
-                except (ImportError, AttributeError):
-                    template_list = []
-                self.loader_debug_info.append({
-                    'loader': loader.__module__ + '.' + loader.__name__,
-                    'templates': template_list,
-                })
-        if settings.TEMPLATE_DEBUG and hasattr(self.exc_value, 'source'):
-            self.get_template_exception_info()
-
-        frames = self.get_traceback_frames()
-
-        unicode_hint = ''
-        if issubclass(self.exc_type, UnicodeError):
-            start = getattr(self.exc_value, 'start', None)
-            end = getattr(self.exc_value, 'end', None)
-            if start is not None and end is not None:
-                unicode_str = self.exc_value.args[1]
-                unicode_hint = smart_unicode(unicode_str[max(start-5, 0):min(end+5, len(unicode_str))], 'ascii', errors='replace')
-        from django import get_version
-        t = Template(TECHNICAL_500_TEMPLATE, name='Technical 500 template')
-        c = Context({
-            'exception_type': self.exc_type.__name__,
-            'exception_value': smart_unicode(self.exc_value, errors='replace'),
-            'unicode_hint': unicode_hint,
-            'frames': frames,
-            'lastframe': frames[-1],
-            'request': self.request,
-            'request_protocol': self.request.is_secure() and "https" or "http",
-            'settings': get_safe_settings(),
-            'sys_executable': sys.executable,
-            'sys_version_info': '%d.%d.%d' % sys.version_info[0:3],
-            'server_time': datetime.datetime.now(),
-            'django_version_info': get_version(),
-            'sys_path' : sys.path,
-            'template_info': self.template_info,
-            'template_does_not_exist': self.template_does_not_exist,
-            'loader_debug_info': self.loader_debug_info,
-        })
-        return t.render(c)
-
-    def get_template_exception_info(self):
-        origin, (start, end) = self.exc_value.source
-        template_source = origin.reload()
-        context_lines = 10
-        line = 0
-        upto = 0
-        source_lines = []
-        before = during = after = ""
-        for num, next in enumerate(linebreak_iter(template_source)):
-            if start >= upto and end <= next:
-                line = num
-                before = escape(template_source[upto:start])
-                during = escape(template_source[start:end])
-                after = escape(template_source[end:next])
-            source_lines.append( (num, escape(template_source[upto:next])) )
-            upto = next
-        total = len(source_lines)
-
-        top = max(1, line - context_lines)
-        bottom = min(total, line + 1 + context_lines)
-
-        self.template_info = {
-            'message': self.exc_value.args[0],
-            'source_lines': source_lines[top:bottom],
-            'before': before,
-            'during': during,
-            'after': after,
-            'top': top,
-            'bottom': bottom,
-            'total': total,
-            'line': line,
-            'name': origin.name,
-        }
-
-    def _get_lines_from_file(self, filename, lineno, context_lines, loader=None, module_name=None):
-        """
-        Returns context_lines before and after lineno from file.
-        Returns (pre_context_lineno, pre_context, context_line, post_context).
-        """
-        source = None
-        if loader is not None and hasattr(loader, "get_source"):
-            source = loader.get_source(module_name)
-            if source is not None:
-                source = source.splitlines()
-        if source is None:
-            try:
-                f = open(filename)
-                try:
-                    source = f.readlines()
-                finally:
-                    f.close()
-            except (OSError, IOError):
-                pass
-        if source is None:
-            return None, [], None, []
-
-        encoding = 'ascii'
-        for line in source[:2]:
-            # File coding may be specified. Match pattern from PEP-263
-            # (http://www.python.org/dev/peps/pep-0263/)
-            match = re.search(r'coding[:=]\s*([-\w.]+)', line)
-            if match:
-                encoding = match.group(1)
-                break
-        source = [unicode(sline, encoding, 'replace') for sline in source]
-
-        lower_bound = max(0, lineno - context_lines)
-        upper_bound = lineno + context_lines
-
-        pre_context = [line.strip('\n') for line in source[lower_bound:lineno]]
-        context_line = source[lineno].strip('\n')
-        post_context = [line.strip('\n') for line in source[lineno+1:upper_bound]]
-
-        return lower_bound, pre_context, context_line, post_context
-
-    def get_traceback_frames(self):
-        frames = []
-        tb = self.tb
-        while tb is not None:
-            # support for __traceback_hide__ which is used by a few libraries
-            # to hide internal frames.
-            if tb.tb_frame.f_locals.get('__traceback_hide__'):
-                tb = tb.tb_next
-                continue
-            filename = tb.tb_frame.f_code.co_filename
-            function = tb.tb_frame.f_code.co_name
-            lineno = tb.tb_lineno - 1
-            loader = tb.tb_frame.f_globals.get('__loader__')
-            module_name = tb.tb_frame.f_globals.get('__name__')
-            pre_context_lineno, pre_context, context_line, post_context = self._get_lines_from_file(filename, lineno, 7, loader, module_name)
-            if pre_context_lineno is not None:
-                frames.append({
-                    'tb': tb,
-                    'filename': filename,
-                    'function': function,
-                    'lineno': lineno + 1,
-                    'vars': tb.tb_frame.f_locals.items(),
-                    'id': id(tb),
-                    'pre_context': pre_context,
-                    'context_line': context_line,
-                    'post_context': post_context,
-                    'pre_context_lineno': pre_context_lineno + 1,
-                })
-            tb = tb.tb_next
-
-        if not frames:
-            frames = [{
-                'filename': '&lt;unknown&gt;',
-                'function': '?',
-                'lineno': '?',
-                'context_line': '???',
-            }]
-
-        return frames
-
-    def format_exception(self):
-        """
-        Return the same data as from traceback.format_exception.
-        """
-        import traceback
-        frames = self.get_traceback_frames()
-        tb = [ (f['filename'], f['lineno'], f['function'], f['context_line']) for f in frames ]
-        list = ['Traceback (most recent call last):\n']
-        list += traceback.format_list(tb)
-        list += traceback.format_exception_only(self.exc_type, self.exc_value)
-        return list
-
-
-def technical_404_response(request, exception):
-    "Create a technical 404 error response. The exception should be the Http404."
-    try:
-        tried = exception.args[0]['tried']
-    except (IndexError, TypeError):
-        tried = []
-    else:
-        if not tried:
-            # tried exists but is an empty list. The URLconf must've been empty.
-            return empty_urlconf(request)
-
-    t = Template(TECHNICAL_404_TEMPLATE, name='Technical 404 template')
-    c = Context({
-        'root_urlconf': settings.ROOT_URLCONF,
-        'request_path': request.path[1:], # Trim leading slash
-        'urlpatterns': tried,
-        'reason': str(exception),
-        'request': request,
-        'request_protocol': request.is_secure() and "https" or "http",
-        'settings': get_safe_settings(),
-    })
-    return HttpResponseNotFound(t.render(c), mimetype='text/html')
-
-def empty_urlconf(request):
-    "Create an empty URLconf 404 error response."
-    t = Template(EMPTY_URLCONF_TEMPLATE, name='Empty URLConf template')
-    c = Context({
-        'project_name': settings.SETTINGS_MODULE.split('.')[0]
-    })
-    return HttpResponse(t.render(c), mimetype='text/html')
-
-#
-# Templates are embedded in the file so that we know the error handler will
-# always work even if the template loader is broken.
-#
-
-TECHNICAL_500_TEMPLATE = """
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8">
-  <meta name="robots" content="NONE,NOARCHIVE">
-  <title>{{ exception_type }} at {{ request.path|escape }}</title>
-  <style type="text/css">
-    html * { padding:0; margin:0; }
-    body * { padding:10px 20px; }
-    body * * { padding:0; }
-    body { font:small sans-serif; }
-    body>div { border-bottom:1px solid #ddd; }
-    h1 { font-weight:normal; }
-    h2 { margin-bottom:.8em; }
-    h2 span { font-size:80%; color:#666; font-weight:normal; }
-    h3 { margin:1em 0 .5em 0; }
-    h4 { margin:0 0 .5em 0; font-weight: normal; }
-    table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
-    tbody td, tbody th { vertical-align:top; padding:2px 3px; }
-    thead th { padding:1px 6px 1px 3px; background:#fefefe; text-align:left; font-weight:normal; font-size:11px; border:1px solid #ddd; }
-    tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
-    table.vars { margin:5px 0 2px 40px; }
-    table.vars td, table.req td { font-family:monospace; }
-    table td.code { width:100%; }
-    table td.code div { overflow:hidden; }
-    table.source th { color:#666; }
-    table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }
-    ul.traceback { list-style-type:none; }
-    ul.traceback li.frame { margin-bottom:1em; }
-    div.context { margin: 10px 0; }
-    div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; }
-    div.context ol li { font-family:monospace; white-space:pre; color:#666; cursor:pointer; }
-    div.context ol.context-line li { color:black; background-color:#ccc; }
-    div.context ol.context-line li span { float: right; }
-    div.commands { margin-left: 40px; }
-    div.commands a { color:black; text-decoration:none; }
-    #summary { background: #ffc; }
-    #summary h2 { font-weight: normal; color: #666; }
-    #explanation { background:#eee; }
-    #template, #template-not-exist { background:#f6f6f6; }
-    #template-not-exist ul { margin: 0 0 0 20px; }
-    #unicode-hint { background:#eee; }
-    #traceback { background:#eee; }
-    #requestinfo { background:#f6f6f6; padding-left:120px; }
-    #summary table { border:none; background:transparent; }
-    #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }
-    #requestinfo h3 { margin-bottom:-1em; }
-    .error { background: #ffc; }
-    .specific { color:#cc3300; font-weight:bold; }
-    h2 span.commands { font-size:.7em;}
-    span.commands a:link {color:#5E5694;}
-    pre.exception_value { font-family: sans-serif; color: #666; font-size: 1.5em; margin: 10px 0 10px 0; }
-  </style>
-  <script type="text/javascript">
-  //<!--
-    function getElementsByClassName(oElm, strTagName, strClassName){
-        // Written by Jonathan Snook, http://www.snook.ca/jon; Add-ons by Robert Nyman, http://www.robertnyman.com
-        var arrElements = (strTagName == "*" && document.all)? document.all :
-        oElm.getElementsByTagName(strTagName);
-        var arrReturnElements = new Array();
-        strClassName = strClassName.replace(/\-/g, "\\-");
-        var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
-        var oElement;
-        for(var i=0; i<arrElements.length; i++){
-            oElement = arrElements[i];
-            if(oRegExp.test(oElement.className)){
-                arrReturnElements.push(oElement);
-            }
-        }
-        return (arrReturnElements)
-    }
-    function hideAll(elems) {
-      for (var e = 0; e < elems.length; e++) {
-        elems[e].style.display = 'none';
-      }
-    }
-    window.onload = function() {
-      hideAll(getElementsByClassName(document, 'table', 'vars'));
-      hideAll(getElementsByClassName(document, 'ol', 'pre-context'));
-      hideAll(getElementsByClassName(document, 'ol', 'post-context'));
-      hideAll(getElementsByClassName(document, 'div', 'pastebin'));
-    }
-    function toggle() {
-      for (var i = 0; i < arguments.length; i++) {
-        var e = document.getElementById(arguments[i]);
-        if (e) {
-          e.style.display = e.style.display == 'none' ? 'block' : 'none';
-        }
-      }
-      return false;
-    }
-    function varToggle(link, id) {
-      toggle('v' + id);
-      var s = link.getElementsByTagName('span')[0];
-      var uarr = String.fromCharCode(0x25b6);
-      var darr = String.fromCharCode(0x25bc);
-      s.innerHTML = s.innerHTML == uarr ? darr : uarr;
-      return false;
-    }
-    function switchPastebinFriendly(link) {
-      s1 = "Switch to copy-and-paste view";
-      s2 = "Switch back to interactive view";
-      link.innerHTML = link.innerHTML == s1 ? s2 : s1;
-      toggle('browserTraceback', 'pastebinTraceback');
-      return false;
-    }
-    //-->
-  </script>
-</head>
-<body>
-<div id="summary">
-  <h1>{{ exception_type }} at {{ request.path|escape }}</h1>
-  <pre class="exception_value">{{ exception_value|escape }}</pre>
-  <table class="meta">
-    <tr>
-      <th>Request Method:</th>
-      <td>{{ request.META.REQUEST_METHOD }}</td>
-    </tr>
-    <tr>
-      <th>Request URL:</th>
-      <td>{{ request_protocol }}://{{ request.META.HTTP_HOST }}{{ request.path|escape }}</td>
-    </tr>
-    <tr>
-      <th>Exception Type:</th>
-      <td>{{ exception_type }}</td>
-    </tr>
-    <tr>
-      <th>Exception Value:</th>
-      <td><pre>{{ exception_value|escape }}<pre></td>
-    </tr>
-    <tr>
-      <th>Exception Location:</th>
-      <td>{{ lastframe.filename|escape }} in {{ lastframe.function|escape }}, line {{ lastframe.lineno }}</td>
-    </tr>
-    <tr>
-      <th>Python Executable:</th>
-      <td>{{ sys_executable|escape }}</td>
-    </tr>
-    <tr>
-      <th>Python Version:</th>
-      <td>{{ sys_version_info }}</td>
-    </tr>
-    <tr>
-      <th>Python Path:</th>
-      <td>{{ sys_path }}</td>
-    </tr>
-    <tr>
-      <th>Server time:</th>
-      <td>{{server_time|date:"r"}}</td>
-    </tr>
-  </table>
-</div>
-{% if unicode_hint %}
-<div id="unicode-hint">
-    <h2>Unicode error hint</h2>
-    <p>The string that could not be encoded/decoded was: <strong>{{ unicode_hint|escape }}</strong></p>
-</div>
-{% endif %}
-{% if template_does_not_exist %}
-<div id="template-not-exist">
-    <h2>Template-loader postmortem</h2>
-    {% if loader_debug_info %}
-        <p>Django tried loading these templates, in this order:</p>
-        <ul>
-        {% for loader in loader_debug_info %}
-            <li>Using loader <code>{{ loader.loader }}</code>:
-                <ul>{% for t in loader.templates %}<li><code>{{ t.name }}</code> (File {% if t.exists %}exists{% else %}does not exist{% endif %})</li>{% endfor %}</ul>
-            </li>
-        {% endfor %}
-        </ul>
-    {% else %}
-        <p>Django couldn't find any templates because your <code>TEMPLATE_LOADERS</code> setting is empty!</p>
-    {% endif %}
-</div>
-{% endif %}
-{% if template_info %}
-<div id="template">
-   <h2>Template error</h2>
-   <p>In template <code>{{ template_info.name }}</code>, error at line <strong>{{ template_info.line }}</strong></p>
-   <h3>{{ template_info.message }}</h3>
-   <table class="source{% if template_info.top %} cut-top{% endif %}{% ifnotequal template_info.bottom template_info.total %} cut-bottom{% endifnotequal %}">
-   {% for source_line in template_info.source_lines %}
-   {% ifequal source_line.0 template_info.line %}
-       <tr class="error"><th>{{ source_line.0 }}</th>
-       <td>{{ template_info.before }}<span class="specific">{{ template_info.during }}</span>{{ template_info.after }}</td></tr>
-   {% else %}
-      <tr><th>{{ source_line.0 }}</th>
-      <td>{{ source_line.1 }}</td></tr>
-   {% endifequal %}
-   {% endfor %}
-   </table>
-</div>
-{% endif %}
-<div id="traceback">
-  <h2>Traceback <span class="commands"><a href="#" onclick="return switchPastebinFriendly(this);">Switch to copy-and-paste view</a></span></h2>
-  {% autoescape off %}
-  <div id="browserTraceback">
-    <ul class="traceback">
-      {% for frame in frames %}
-        <li class="frame">
-          <code>{{ frame.filename|escape }}</code> in <code>{{ frame.function|escape }}</code>
-
-          {% if frame.context_line %}
-            <div class="context" id="c{{ frame.id }}">
-              {% if frame.pre_context %}
-                <ol start="{{ frame.pre_context_lineno }}" class="pre-context" id="pre{{ frame.id }}">{% for line in frame.pre_context %}<li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')">{{ line|escape }}</li>{% endfor %}</ol>
-              {% endif %}
-              <ol start="{{ frame.lineno }}" class="context-line"><li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')">{{ frame.context_line|escape }} <span>...</span></li></ol>
-              {% if frame.post_context %}
-                <ol start='{{ frame.lineno|add:"1" }}' class="post-context" id="post{{ frame.id }}">{% for line in frame.post_context %}<li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')">{{ line|escape }}</li>{% endfor %}</ol>
-              {% endif %}
-            </div>
-          {% endif %}
-
-          {% if frame.vars %}
-            <div class="commands">
-                <a href="#" onclick="return varToggle(this, '{{ frame.id }}')"><span>&#x25b6;</span> Local vars</a>
-            </div>
-            <table class="vars" id="v{{ frame.id }}">
-              <thead>
-                <tr>
-                  <th>Variable</th>
-                  <th>Value</th>
-                </tr>
-              </thead>
-              <tbody>
-                {% for var in frame.vars|dictsort:"0" %}
-                  <tr>
-                    <td>{{ var.0|escape }}</td>
-                    <td class="code"><div>{{ var.1|pprint|escape }}</div></td>
-                  </tr>
-                {% endfor %}
-              </tbody>
-            </table>
-          {% endif %}
-        </li>
-      {% endfor %}
-    </ul>
-  </div>
-  {% endautoescape %}
-  <form action="http://dpaste.com/" name="pasteform" id="pasteform" method="post">
-  <div id="pastebinTraceback" class="pastebin">
-    <input type="hidden" name="language" value="PythonConsole">
-    <input type="hidden" name="title" value="{{ exception_type|escape }} at {{ request.path|escape }}">
-    <input type="hidden" name="source" value="Django Dpaste Agent">
-    <input type="hidden" name="poster" value="Django">
-    <textarea name="content" id="traceback_area" cols="140" rows="25">
-Environment:
-
-Request Method: {{ request.META.REQUEST_METHOD }}
-Request URL: {{ request_protocol }}://{{ request.META.HTTP_HOST }}{{ request.path|escape }}
-Django Version: {{ django_version_info }}
-Python Version: {{ sys_version_info }}
-Installed Applications:
-{{ settings.INSTALLED_APPS|pprint }}
-Installed Middleware:
-{{ settings.MIDDLEWARE_CLASSES|pprint }}
-
-{% if template_does_not_exist %}Template Loader Error:
-{% if loader_debug_info %}Django tried loading these templates, in this order:
-{% for loader in loader_debug_info %}Using loader {{ loader.loader }}:
-{% for t in loader.templates %}{{ t.name }} (File {% if t.exists %}exists{% else %}does not exist{% endif %})
-{% endfor %}{% endfor %}
-{% else %}Django couldn't find any templates because your TEMPLATE_LOADERS setting is empty!
-{% endif %}
-{% endif %}{% if template_info %}
-Template error:
-In template {{ template_info.name }}, error at line {{ template_info.line }}
-   {{ template_info.message }}{% for source_line in template_info.source_lines %}{% ifequal source_line.0 template_info.line %}
-   {{ source_line.0 }} : {{ template_info.before }} {{ template_info.during }} {{ template_info.after }}
-{% else %}
-   {{ source_line.0 }} : {{ source_line.1 }}
-{% endifequal %}{% endfor %}{% endif %}
-Traceback:
-{% for frame in frames %}File "{{ frame.filename|escape }}" in {{ frame.function|escape }}
-{% if frame.context_line %}  {{ frame.lineno }}. {{ frame.context_line|escape }}{% endif %}
-{% endfor %}
-Exception Type: {{ exception_type|escape }} at {{ request.path|escape }}
-Exception Value: {{ exception_value|escape }}
-</textarea>
-  <br><br>
-  <input type="submit" value="Share this traceback on a public Web site">
-  </div>
-</form>
-</div>
-
-<div id="requestinfo">
-  <h2>Request information</h2>
-
-  <h3 id="get-info">GET</h3>
-  {% if request.GET %}
-    <table class="req">
-      <thead>
-        <tr>
-          <th>Variable</th>
-          <th>Value</th>
-        </tr>
-      </thead>
-      <tbody>
-        {% for var in request.GET.items %}
-          <tr>
-            <td>{{ var.0 }}</td>
-            <td class="code"><div>{{ var.1|pprint }}</div></td>
-          </tr>
-        {% endfor %}
-      </tbody>
-    </table>
-  {% else %}
-    <p>No GET data</p>
-  {% endif %}
-
-  <h3 id="post-info">POST</h3>
-  {% if request.POST %}
-    <table class="req">
-      <thead>
-        <tr>
-          <th>Variable</th>
-          <th>Value</th>
-        </tr>
-      </thead>
-      <tbody>
-        {% for var in request.POST.items %}
-          <tr>
-            <td>{{ var.0 }}</td>
-            <td class="code"><div>{{ var.1|pprint }}</div></td>
-          </tr>
-        {% endfor %}
-      </tbody>
-    </table>
-  {% else %}
-    <p>No POST data</p>
-  {% endif %}
-
-  <h3 id="cookie-info">COOKIES</h3>
-  {% if request.COOKIES %}
-    <table class="req">
-      <thead>
-        <tr>
-          <th>Variable</th>
-          <th>Value</th>
-        </tr>
-      </thead>
-      <tbody>
-        {% for var in request.COOKIES.items %}
-          <tr>
-            <td>{{ var.0 }}</td>
-            <td class="code"><div>{{ var.1|pprint }}</div></td>
-          </tr>
-        {% endfor %}
-      </tbody>
-    </table>
-  {% else %}
-    <p>No cookie data</p>
-  {% endif %}
-
-  <h3 id="meta-info">META</h3>
-  <table class="req">
-    <thead>
-      <tr>
-        <th>Variable</th>
-        <th>Value</th>
-      </tr>
-    </thead>
-    <tbody>
-      {% for var in request.META.items|dictsort:"0" %}
-        <tr>
-          <td>{{ var.0 }}</td>
-          <td class="code"><div>{{ var.1|pprint }}</div></td>
-        </tr>
-      {% endfor %}
-    </tbody>
-  </table>
-
-  <h3 id="settings-info">Settings</h3>
-  <h4>Using settings module <code>{{ settings.SETTINGS_MODULE }}</code></h4>
-  <table class="req">
-    <thead>
-      <tr>
-        <th>Setting</th>
-        <th>Value</th>
-      </tr>
-    </thead>
-    <tbody>
-      {% for var in settings.items|dictsort:"0" %}
-        <tr>
-          <td>{{ var.0 }}</td>
-          <td class="code"><div>{{ var.1|pprint }}</div></td>
-        </tr>
-      {% endfor %}
-    </tbody>
-  </table>
-
-</div>
-
-<div id="explanation">
-  <p>
-    You're seeing this error because you have <code>DEBUG = True</code> in your
-    Django settings file. Change that to <code>False</code>, and Django will
-    display a standard 500 page.
-  </p>
-</div>
-</body>
-</html>
-"""
-
-TECHNICAL_404_TEMPLATE = """
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8">
-  <title>Page not found at {{ request.path|escape }}</title>
-  <meta name="robots" content="NONE,NOARCHIVE">
-  <style type="text/css">
-    html * { padding:0; margin:0; }
-    body * { padding:10px 20px; }
-    body * * { padding:0; }
-    body { font:small sans-serif; background:#eee; }
-    body>div { border-bottom:1px solid #ddd; }
-    h1 { font-weight:normal; margin-bottom:.4em; }
-    h1 span { font-size:60%; color:#666; font-weight:normal; }
-    table { border:none; border-collapse: collapse; width:100%; }
-    td, th { vertical-align:top; padding:2px 3px; }
-    th { width:12em; text-align:right; color:#666; padding-right:.5em; }
-    #info { background:#f6f6f6; }
-    #info ol { margin: 0.5em 4em; }
-    #info ol li { font-family: monospace; }
-    #summary { background: #ffc; }
-    #explanation { background:#eee; border-bottom: 0px none; }
-  </style>
-</head>
-<body>
-  <div id="summary">
-    <h1>Page not found <span>(404)</span></h1>
-    <table class="meta">
-      <tr>
-        <th>Request Method:</th>
-        <td>{{ request.META.REQUEST_METHOD }}</td>
-      </tr>
-      <tr>
-        <th>Request URL:</th>
-      <td>{{ request_protocol }}://{{ request.META.HTTP_HOST }}{{ request.path|escape }}</td>
-      </tr>
-    </table>
-  </div>
-  <div id="info">
-    {% if urlpatterns %}
-      <p>
-      Using the URLconf defined in <code>{{ settings.ROOT_URLCONF }}</code>,
-      Django tried these URL patterns, in this order:
-      </p>
-      <ol>
-        {% for pattern in urlpatterns %}
-          <li>{{ pattern }}</li>
-        {% endfor %}
-      </ol>
-      <p>The current URL, <code>{{ request_path|escape }}</code>, didn't match any of these.</p>
-    {% else %}
-      <p>{{ reason }}</p>
-    {% endif %}
-  </div>
-
-  <div id="explanation">
-    <p>
-      You're seeing this error because you have <code>DEBUG = True</code> in
-      your Django settings file. Change that to <code>False</code>, and Django
-      will display a standard 404 page.
-    </p>
-  </div>
-</body>
-</html>
-"""
-
-EMPTY_URLCONF_TEMPLATE = """
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en"><head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8">
-  <meta name="robots" content="NONE,NOARCHIVE"><title>Welcome to Django</title>
-  <style type="text/css">
-    html * { padding:0; margin:0; }
-    body * { padding:10px 20px; }
-    body * * { padding:0; }
-    body { font:small sans-serif; }
-    body>div { border-bottom:1px solid #ddd; }
-    h1 { font-weight:normal; }
-    h2 { margin-bottom:.8em; }
-    h2 span { font-size:80%; color:#666; font-weight:normal; }
-    h3 { margin:1em 0 .5em 0; }
-    h4 { margin:0 0 .5em 0; font-weight: normal; }
-    table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
-    tbody td, tbody th { vertical-align:top; padding:2px 3px; }
-    thead th { padding:1px 6px 1px 3px; background:#fefefe; text-align:left; font-weight:normal; font-size:11px; border:1px solid #ddd; }
-    tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
-    ul { margin-left: 2em; margin-top: 1em; }
-    #summary { background: #e0ebff; }
-    #summary h2 { font-weight: normal; color: #666; }
-    #explanation { background:#eee; }
-    #instructions { background:#f6f6f6; }
-    #summary table { border:none; background:transparent; }
-  </style>
-</head>
-
-<body>
-<div id="summary">
-  <h1>It worked!</h1>
-  <h2>Congratulations on your first Django-powered page.</h2>
-</div>
-
-<div id="instructions">
-  <p>Of course, you haven't actually done any work yet. Here's what to do next:</p>
-  <ul>
-    <li>If you plan to use a database, edit the <code>DATABASE_*</code> settings in <code>{{ project_name }}/settings.py</code>.</li>
-    <li>Start your first app by running <code>python {{ project_name }}/manage.py startapp [appname]</code>.</li>
-  </ul>
-</div>
-
-<div id="explanation">
-  <p>
-    You're seeing this message because you have <code>DEBUG = True</code> in your
-    Django settings file and you haven't configured any URLs. Get to work!
-  </p>
-</div>
-</body></html>
-"""
diff --git a/webapp/django/views/decorators/__init__.py b/webapp/django/views/decorators/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/webapp/django/views/decorators/__init__.py
+++ /dev/null
diff --git a/webapp/django/views/decorators/cache.py b/webapp/django/views/decorators/cache.py
deleted file mode 100644
index 8b620c1..0000000
--- a/webapp/django/views/decorators/cache.py
+++ /dev/null
@@ -1,47 +0,0 @@
-"""
-Decorator for views that tries getting the page from the cache and
-populates the cache if the page isn't in the cache yet.
-
-The cache is keyed by the URL and some data from the headers. Additionally
-there is the key prefix that is used to distinguish different cache areas
-in a multi-site setup. You could use the sites.get_current().domain, for
-example, as that is unique across a Django project.
-
-Additionally, all headers from the response's Vary header will be taken into
-account on caching -- just like the middleware does.
-"""
-
-try:
-    from functools import wraps
-except ImportError:
-    from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
-
-from django.utils.decorators import decorator_from_middleware
-from django.utils.cache import patch_cache_control, add_never_cache_headers
-from django.middleware.cache import CacheMiddleware
-
-cache_page = decorator_from_middleware(CacheMiddleware)
-
-def cache_control(**kwargs):
-
-    def _cache_controller(viewfunc):
-
-        def _cache_controlled(request, *args, **kw):
-            response = viewfunc(request, *args, **kw)
-            patch_cache_control(response, **kwargs)
-            return response
-
-        return wraps(viewfunc)(_cache_controlled)
-
-    return _cache_controller
-
-def never_cache(view_func):
-    """
-    Decorator that adds headers to a response so that it will
-    never be cached.
-    """
-    def _wrapped_view_func(request, *args, **kwargs):
-        response = view_func(request, *args, **kwargs)
-        add_never_cache_headers(response)
-        return response
-    return wraps(view_func)(_wrapped_view_func)
diff --git a/webapp/django/views/decorators/gzip.py b/webapp/django/views/decorators/gzip.py
deleted file mode 100644
index dc6edad..0000000
--- a/webapp/django/views/decorators/gzip.py
+++ /dev/null
@@ -1,6 +0,0 @@
-"Decorator for views that gzips pages if the client supports it."
-
-from django.utils.decorators import decorator_from_middleware
-from django.middleware.gzip import GZipMiddleware
-
-gzip_page = decorator_from_middleware(GZipMiddleware)
diff --git a/webapp/django/views/decorators/http.py b/webapp/django/views/decorators/http.py
deleted file mode 100644
index dd4f90e..0000000
--- a/webapp/django/views/decorators/http.py
+++ /dev/null
@@ -1,39 +0,0 @@
-"""
-Decorators for views based on HTTP headers.
-"""
-
-try:
-    from functools import wraps
-except ImportError:
-    from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
-
-from django.utils.decorators import decorator_from_middleware
-from django.middleware.http import ConditionalGetMiddleware
-from django.http import HttpResponseNotAllowed
-
-conditional_page = decorator_from_middleware(ConditionalGetMiddleware)
-
-def require_http_methods(request_method_list):
-    """
-    Decorator to make a view only accept particular request methods.  Usage::
-
-        @require_http_methods(["GET", "POST"])
-        def my_view(request):
-            # I can assume now that only GET or POST requests make it this far
-            # ...
-
-    Note that request methods should be in uppercase.
-    """
-    def decorator(func):
-        def inner(request, *args, **kwargs):
-            if request.method not in request_method_list:
-                return HttpResponseNotAllowed(request_method_list)
-            return func(request, *args, **kwargs)
-        return wraps(func)(inner)
-    return decorator
-
-require_GET = require_http_methods(["GET"])
-require_GET.__doc__ = "Decorator to require that a view only accept the GET method."
-
-require_POST = require_http_methods(["POST"])
-require_POST.__doc__ = "Decorator to require that a view only accept the POST method."
\ No newline at end of file
diff --git a/webapp/django/views/decorators/vary.py b/webapp/django/views/decorators/vary.py
deleted file mode 100644
index ea1b8d3..0000000
--- a/webapp/django/views/decorators/vary.py
+++ /dev/null
@@ -1,40 +0,0 @@
-try:
-    from functools import wraps
-except ImportError:
-    from django.utils.functional import wraps  # Python 2.3, 2.4 fallback.
-
-from django.utils.cache import patch_vary_headers
-
-def vary_on_headers(*headers):
-    """
-    A view decorator that adds the specified headers to the Vary header of the
-    response. Usage:
-
-       @vary_on_headers('Cookie', 'Accept-language')
-       def index(request):
-           ...
-
-    Note that the header names are not case-sensitive.
-    """
-    def decorator(func):
-        def inner_func(*args, **kwargs):
-            response = func(*args, **kwargs)
-            patch_vary_headers(response, headers)
-            return response
-        return wraps(func)(inner_func)
-    return decorator
-
-def vary_on_cookie(func):
-    """
-    A view decorator that adds "Cookie" to the Vary header of a response. This
-    indicates that a page's contents depends on cookies. Usage:
-
-        @vary_on_cookie
-        def index(request):
-            ...
-    """
-    def inner_func(*args, **kwargs):
-        response = func(*args, **kwargs)
-        patch_vary_headers(response, ('Cookie',))
-        return response
-    return wraps(func)(inner_func)
diff --git a/webapp/django/views/defaults.py b/webapp/django/views/defaults.py
deleted file mode 100644
index 8a8fa47..0000000
--- a/webapp/django/views/defaults.py
+++ /dev/null
@@ -1,89 +0,0 @@
-from django.core.exceptions import ObjectDoesNotExist
-from django.template import Context, RequestContext, loader
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.sites.models import Site
-from django import http
-
-def shortcut(request, content_type_id, object_id):
-    "Redirect to an object's page based on a content-type ID and an object ID."
-    # Look up the object, making sure it's got a get_absolute_url() function.
-    try:
-        content_type = ContentType.objects.get(pk=content_type_id)
-        obj = content_type.get_object_for_this_type(pk=object_id)
-    except ObjectDoesNotExist:
-        raise http.Http404, "Content type %s object %s doesn't exist" % (content_type_id, object_id)
-    try:
-        absurl = obj.get_absolute_url()
-    except AttributeError:
-        raise http.Http404, "%s objects don't have get_absolute_url() methods" % content_type.name
-
-    # Try to figure out the object's domain, so we can do a cross-site redirect
-    # if necessary.
-
-    # If the object actually defines a domain, we're done.
-    if absurl.startswith('http://') or absurl.startswith('https://'):
-        return http.HttpResponseRedirect(absurl)
-
-    object_domain = None
-
-    # Otherwise, we need to introspect the object's relationships for a
-    # relation to the Site object
-    opts = obj._meta
-
-    # First, look for an many-to-many relationship to sites
-    for field in opts.many_to_many:
-        if field.rel.to is Site:
-            try:
-                object_domain = getattr(obj, field.name).all()[0].domain
-            except IndexError:
-                pass
-            if object_domain is not None:
-                break
-
-    # Next look for a many-to-one relationship to site
-    if object_domain is None:
-        for field in obj._meta.fields:
-            if field.rel and field.rel.to is Site:
-                try:
-                    object_domain = getattr(obj, field.name).domain
-                except Site.DoesNotExist:
-                    pass
-                if object_domain is not None:
-                    break
-
-    # Fall back to the current site (if possible)
-    if object_domain is None:
-        try:
-            object_domain = Site.objects.get_current().domain
-        except Site.DoesNotExist:
-            pass
-
-    # If all that malarkey found an object domain, use it; otherwise fall back
-    # to whatever get_absolute_url() returned.
-    if object_domain is not None:
-        protocol = request.is_secure() and 'https' or 'http'
-        return http.HttpResponseRedirect('%s://%s%s' % (protocol, object_domain, absurl))
-    else:
-        return http.HttpResponseRedirect(absurl)
-
-def page_not_found(request, template_name='404.html'):
-    """
-    Default 404 handler.
-
-    Templates: `404.html`
-    Context:
-        request_path
-            The path of the requested URL (e.g., '/app/pages/bad_page/')
-    """
-    t = loader.get_template(template_name) # You need to create a 404.html template.
-    return http.HttpResponseNotFound(t.render(RequestContext(request, {'request_path': request.path})))
-
-def server_error(request, template_name='500.html'):
-    """
-    500 error handler.
-
-    Templates: `500.html`
-    Context: None
-    """
-    t = loader.get_template(template_name) # You need to create a 500.html template.
-    return http.HttpResponseServerError(t.render(Context({})))
diff --git a/webapp/django/views/generic/__init__.py b/webapp/django/views/generic/__init__.py
deleted file mode 100644
index 95c5fa9..0000000
--- a/webapp/django/views/generic/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-class GenericViewError(Exception):
-    """A problem in a generic view."""
-    pass
diff --git a/webapp/django/views/generic/create_update.py b/webapp/django/views/generic/create_update.py
deleted file mode 100644
index 634fb1b..0000000
--- a/webapp/django/views/generic/create_update.py
+++ /dev/null
@@ -1,210 +0,0 @@
-from django.forms.models import ModelFormMetaclass, ModelForm
-from django.template import RequestContext, loader
-from django.http import Http404, HttpResponse, HttpResponseRedirect
-from django.core.xheaders import populate_xheaders
-from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured
-from django.utils.translation import ugettext
-from django.contrib.auth.views import redirect_to_login
-from django.views.generic import GenericViewError
-
-
-def apply_extra_context(extra_context, context):
-    """
-    Adds items from extra_context dict to context.  If a value in extra_context
-    is callable, then it is called and the result is added to context.
-    """
-    for key, value in extra_context.iteritems():
-        if callable(value):
-            context[key] = value()
-        else:
-            context[key] = value
-
-def get_model_and_form_class(model, form_class):
-    """
-    Returns a model and form class based on the model and form_class
-    parameters that were passed to the generic view.
-
-    If ``form_class`` is given then its associated model will be returned along
-    with ``form_class`` itself.  Otherwise, if ``model`` is given, ``model``
-    itself will be returned along with a ``ModelForm`` class created from
-    ``model``.
-    """
-    if form_class:
-        return form_class._meta.model, form_class
-    if model:
-        # The inner Meta class fails if model = model is used for some reason.
-        tmp_model = model
-        # TODO: we should be able to construct a ModelForm without creating
-        # and passing in a temporary inner class.
-        class Meta:
-            model = tmp_model
-        class_name = model.__name__ + 'Form'
-        form_class = ModelFormMetaclass(class_name, (ModelForm,), {'Meta': Meta})
-        return model, form_class
-    raise GenericViewError("Generic view must be called with either a model or"
-                           " form_class argument.")
-
-def redirect(post_save_redirect, obj):
-    """
-    Returns a HttpResponseRedirect to ``post_save_redirect``.
-
-    ``post_save_redirect`` should be a string, and can contain named string-
-    substitution place holders of ``obj`` field names.
-
-    If ``post_save_redirect`` is None, then redirect to ``obj``'s URL returned
-    by ``get_absolute_url()``.  If ``obj`` has no ``get_absolute_url`` method,
-    then raise ImproperlyConfigured.
-
-    This function is meant to handle the post_save_redirect parameter to the
-    ``create_object`` and ``update_object`` views.
-    """
-    if post_save_redirect:
-        return HttpResponseRedirect(post_save_redirect % obj.__dict__)
-    elif hasattr(obj, 'get_absolute_url'):
-        return HttpResponseRedirect(obj.get_absolute_url())
-    else:
-        raise ImproperlyConfigured(
-            "No URL to redirect to.  Either pass a post_save_redirect"
-            " parameter to the generic view or define a get_absolute_url"
-            " method on the Model.")
-
-def lookup_object(model, object_id, slug, slug_field):
-    """
-    Return the ``model`` object with the passed ``object_id``.  If
-    ``object_id`` is None, then return the the object whose ``slug_field``
-    equals the passed ``slug``.  If ``slug`` and ``slug_field`` are not passed,
-    then raise Http404 exception.
-    """
-    lookup_kwargs = {}
-    if object_id:
-        lookup_kwargs['%s__exact' % model._meta.pk.name] = object_id
-    elif slug and slug_field:
-        lookup_kwargs['%s__exact' % slug_field] = slug
-    else:
-        raise GenericViewError(
-            "Generic view must be called with either an object_id or a"
-            " slug/slug_field.")
-    try:
-        return model.objects.get(**lookup_kwargs)
-    except ObjectDoesNotExist:
-        raise Http404("No %s found for %s"
-                      % (model._meta.verbose_name, lookup_kwargs))
-
-def create_object(request, model=None, template_name=None,
-        template_loader=loader, extra_context=None, post_save_redirect=None,
-        login_required=False, context_processors=None, form_class=None):
-    """
-    Generic object-creation function.
-
-    Templates: ``<app_label>/<model_name>_form.html``
-    Context:
-        form
-            the form for the object
-    """
-    if extra_context is None: extra_context = {}
-    if login_required and not request.user.is_authenticated():
-        return redirect_to_login(request.path)
-
-    model, form_class = get_model_and_form_class(model, form_class)
-    if request.method == 'POST':
-        form = form_class(request.POST, request.FILES)
-        if form.is_valid():
-            new_object = form.save()
-            if request.user.is_authenticated():
-                request.user.message_set.create(message=ugettext("The %(verbose_name)s was created successfully.") % {"verbose_name": model._meta.verbose_name})
-            return redirect(post_save_redirect, new_object)
-    else:
-        form = form_class()
-
-    # Create the template, context, response
-    if not template_name:
-        template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        'form': form,
-    }, context_processors)
-    apply_extra_context(extra_context, c)
-    return HttpResponse(t.render(c))
-
-def update_object(request, model=None, object_id=None, slug=None,
-        slug_field='slug', template_name=None, template_loader=loader,
-        extra_context=None, post_save_redirect=None, login_required=False,
-        context_processors=None, template_object_name='object',
-        form_class=None):
-    """
-    Generic object-update function.
-
-    Templates: ``<app_label>/<model_name>_form.html``
-    Context:
-        form
-            the form for the object
-        object
-            the original object being edited
-    """
-    if extra_context is None: extra_context = {}
-    if login_required and not request.user.is_authenticated():
-        return redirect_to_login(request.path)
-
-    model, form_class = get_model_and_form_class(model, form_class)
-    obj = lookup_object(model, object_id, slug, slug_field)
-
-    if request.method == 'POST':
-        form = form_class(request.POST, request.FILES, instance=obj)
-        if form.is_valid():
-            obj = form.save()
-            if request.user.is_authenticated():
-                request.user.message_set.create(message=ugettext("The %(verbose_name)s was updated successfully.") % {"verbose_name": model._meta.verbose_name})
-            return redirect(post_save_redirect, obj)
-    else:
-        form = form_class(instance=obj)
-
-    if not template_name:
-        template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        'form': form,
-        template_object_name: obj,
-    }, context_processors)
-    apply_extra_context(extra_context, c)
-    response = HttpResponse(t.render(c))
-    populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.attname))
-    return response
-
-def delete_object(request, model, post_delete_redirect, object_id=None,
-        slug=None, slug_field='slug', template_name=None,
-        template_loader=loader, extra_context=None, login_required=False,
-        context_processors=None, template_object_name='object'):
-    """
-    Generic object-delete function.
-
-    The given template will be used to confirm deletetion if this view is
-    fetched using GET; for safty, deletion will only be performed if this
-    view is POSTed.
-
-    Templates: ``<app_label>/<model_name>_confirm_delete.html``
-    Context:
-        object
-            the original object being deleted
-    """
-    if extra_context is None: extra_context = {}
-    if login_required and not request.user.is_authenticated():
-        return redirect_to_login(request.path)
-
-    obj = lookup_object(model, object_id, slug, slug_field)
-
-    if request.method == 'POST':
-        obj.delete()
-        if request.user.is_authenticated():
-            request.user.message_set.create(message=ugettext("The %(verbose_name)s was deleted.") % {"verbose_name": model._meta.verbose_name})
-        return HttpResponseRedirect(post_delete_redirect)
-    else:
-        if not template_name:
-            template_name = "%s/%s_confirm_delete.html" % (model._meta.app_label, model._meta.object_name.lower())
-        t = template_loader.get_template(template_name)
-        c = RequestContext(request, {
-            template_object_name: obj,
-        }, context_processors)
-        apply_extra_context(extra_context, c)
-        response = HttpResponse(t.render(c))
-        populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.attname))
-        return response
diff --git a/webapp/django/views/generic/date_based.py b/webapp/django/views/generic/date_based.py
deleted file mode 100644
index c5f1748..0000000
--- a/webapp/django/views/generic/date_based.py
+++ /dev/null
@@ -1,352 +0,0 @@
-import datetime
-import time
-
-from django.template import loader, RequestContext
-from django.core.exceptions import ObjectDoesNotExist
-from django.core.xheaders import populate_xheaders
-from django.db.models.fields import DateTimeField
-from django.http import Http404, HttpResponse
-
-def archive_index(request, queryset, date_field, num_latest=15,
-        template_name=None, template_loader=loader,
-        extra_context=None, allow_empty=True, context_processors=None,
-        mimetype=None, allow_future=False, template_object_name='latest'):
-    """
-    Generic top-level archive of date-based objects.
-
-    Templates: ``<app_label>/<model_name>_archive.html``
-    Context:
-        date_list
-            List of years
-        latest
-            Latest N (defaults to 15) objects by date
-    """
-    if extra_context is None: extra_context = {}
-    model = queryset.model
-    if not allow_future:
-        queryset = queryset.filter(**{'%s__lte' % date_field: datetime.datetime.now()})
-    date_list = queryset.dates(date_field, 'year')[::-1]
-    if not date_list and not allow_empty:
-        raise Http404, "No %s available" % model._meta.verbose_name
-
-    if date_list and num_latest:
-        latest = queryset.order_by('-'+date_field)[:num_latest]
-    else:
-        latest = None
-
-    if not template_name:
-        template_name = "%s/%s_archive.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        'date_list' : date_list,
-        template_object_name : latest,
-    }, context_processors)
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    return HttpResponse(t.render(c), mimetype=mimetype)
-
-def archive_year(request, year, queryset, date_field, template_name=None,
-        template_loader=loader, extra_context=None, allow_empty=False,
-        context_processors=None, template_object_name='object', mimetype=None,
-        make_object_list=False, allow_future=False):
-    """
-    Generic yearly archive view.
-
-    Templates: ``<app_label>/<model_name>_archive_year.html``
-    Context:
-        date_list
-            List of months in this year with objects
-        year
-            This year
-        object_list
-            List of objects published in the given month
-            (Only available if make_object_list argument is True)
-    """
-    if extra_context is None: extra_context = {}
-    model = queryset.model
-    now = datetime.datetime.now()
-
-    lookup_kwargs = {'%s__year' % date_field: year}
-
-    # Only bother to check current date if the year isn't in the past and future objects aren't requested.
-    if int(year) >= now.year and not allow_future:
-        lookup_kwargs['%s__lte' % date_field] = now
-    date_list = queryset.filter(**lookup_kwargs).dates(date_field, 'month')
-    if not date_list and not allow_empty:
-        raise Http404
-    if make_object_list:
-        object_list = queryset.filter(**lookup_kwargs)
-    else:
-        object_list = []
-    if not template_name:
-        template_name = "%s/%s_archive_year.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        'date_list': date_list,
-        'year': year,
-        '%s_list' % template_object_name: object_list,
-    }, context_processors)
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    return HttpResponse(t.render(c), mimetype=mimetype)
-
-def archive_month(request, year, month, queryset, date_field,
-        month_format='%b', template_name=None, template_loader=loader,
-        extra_context=None, allow_empty=False, context_processors=None,
-        template_object_name='object', mimetype=None, allow_future=False):
-    """
-    Generic monthly archive view.
-
-    Templates: ``<app_label>/<model_name>_archive_month.html``
-    Context:
-        month:
-            (date) this month
-        next_month:
-            (date) the first day of the next month, or None if the next month is in the future
-        previous_month:
-            (date) the first day of the previous month
-        object_list:
-            list of objects published in the given month
-    """
-    if extra_context is None: extra_context = {}
-    try:
-        date = datetime.date(*time.strptime(year+month, '%Y'+month_format)[:3])
-    except ValueError:
-        raise Http404
-
-    model = queryset.model
-    now = datetime.datetime.now()
-
-    # Calculate first and last day of month, for use in a date-range lookup.
-    first_day = date.replace(day=1)
-    if first_day.month == 12:
-        last_day = first_day.replace(year=first_day.year + 1, month=1)
-    else:
-        last_day = first_day.replace(month=first_day.month + 1)
-    lookup_kwargs = {
-        '%s__gte' % date_field: first_day,
-        '%s__lt' % date_field: last_day,
-    }
-
-    # Only bother to check current date if the month isn't in the past and future objects are requested.
-    if last_day >= now.date() and not allow_future:
-        lookup_kwargs['%s__lte' % date_field] = now
-    object_list = queryset.filter(**lookup_kwargs)
-    if not object_list and not allow_empty:
-        raise Http404
-
-    # Calculate the next month, if applicable.
-    if allow_future:
-        next_month = last_day + datetime.timedelta(days=1)
-    elif last_day < datetime.date.today():
-        next_month = last_day + datetime.timedelta(days=1)
-    else:
-        next_month = None
-
-    if not template_name:
-        template_name = "%s/%s_archive_month.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        '%s_list' % template_object_name: object_list,
-        'month': date,
-        'next_month': next_month,
-        'previous_month': first_day - datetime.timedelta(days=1),
-    }, context_processors)
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    return HttpResponse(t.render(c), mimetype=mimetype)
-
-def archive_week(request, year, week, queryset, date_field,
-        template_name=None, template_loader=loader,
-        extra_context=None, allow_empty=True, context_processors=None,
-        template_object_name='object', mimetype=None, allow_future=False):
-    """
-    Generic weekly archive view.
-
-    Templates: ``<app_label>/<model_name>_archive_week.html``
-    Context:
-        week:
-            (date) this week
-        object_list:
-            list of objects published in the given week
-    """
-    if extra_context is None: extra_context = {}
-    try:
-        date = datetime.date(*time.strptime(year+'-0-'+week, '%Y-%w-%U')[:3])
-    except ValueError:
-        raise Http404
-
-    model = queryset.model
-    now = datetime.datetime.now()
-
-    # Calculate first and last day of week, for use in a date-range lookup.
-    first_day = date
-    last_day = date + datetime.timedelta(days=7)
-    lookup_kwargs = {
-        '%s__gte' % date_field: first_day,
-        '%s__lt' % date_field: last_day,
-    }
-
-    # Only bother to check current date if the week isn't in the past and future objects aren't requested.
-    if last_day >= now.date() and not allow_future:
-        lookup_kwargs['%s__lte' % date_field] = now
-    object_list = queryset.filter(**lookup_kwargs)
-    if not object_list and not allow_empty:
-        raise Http404
-    if not template_name:
-        template_name = "%s/%s_archive_week.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        '%s_list' % template_object_name: object_list,
-        'week': date,
-    })
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    return HttpResponse(t.render(c), mimetype=mimetype)
-
-def archive_day(request, year, month, day, queryset, date_field,
-        month_format='%b', day_format='%d', template_name=None,
-        template_loader=loader, extra_context=None, allow_empty=False,
-        context_processors=None, template_object_name='object',
-        mimetype=None, allow_future=False):
-    """
-    Generic daily archive view.
-
-    Templates: ``<app_label>/<model_name>_archive_day.html``
-    Context:
-        object_list:
-            list of objects published that day
-        day:
-            (datetime) the day
-        previous_day
-            (datetime) the previous day
-        next_day
-            (datetime) the next day, or None if the current day is today
-    """
-    if extra_context is None: extra_context = {}
-    try:
-        date = datetime.date(*time.strptime(year+month+day, '%Y'+month_format+day_format)[:3])
-    except ValueError:
-        raise Http404
-
-    model = queryset.model
-    now = datetime.datetime.now()
-
-    if isinstance(model._meta.get_field(date_field), DateTimeField):
-        lookup_kwargs = {'%s__range' % date_field: (datetime.datetime.combine(date, datetime.time.min), datetime.datetime.combine(date, datetime.time.max))}
-    else:
-        lookup_kwargs = {date_field: date}
-
-    # Only bother to check current date if the date isn't in the past and future objects aren't requested.
-    if date >= now.date() and not allow_future:
-        lookup_kwargs['%s__lte' % date_field] = now
-    object_list = queryset.filter(**lookup_kwargs)
-    if not allow_empty and not object_list:
-        raise Http404
-
-    # Calculate the next day, if applicable.
-    if allow_future:
-        next_day = date + datetime.timedelta(days=1)
-    elif date < datetime.date.today():
-        next_day = date + datetime.timedelta(days=1)
-    else:
-        next_day = None
-
-    if not template_name:
-        template_name = "%s/%s_archive_day.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        '%s_list' % template_object_name: object_list,
-        'day': date,
-        'previous_day': date - datetime.timedelta(days=1),
-        'next_day': next_day,
-    }, context_processors)
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    return HttpResponse(t.render(c), mimetype=mimetype)
-
-def archive_today(request, **kwargs):
-    """
-    Generic daily archive view for today. Same as archive_day view.
-    """
-    today = datetime.date.today()
-    kwargs.update({
-        'year': str(today.year),
-        'month': today.strftime('%b').lower(),
-        'day': str(today.day),
-    })
-    return archive_day(request, **kwargs)
-
-def object_detail(request, year, month, day, queryset, date_field,
-        month_format='%b', day_format='%d', object_id=None, slug=None,
-        slug_field='slug', template_name=None, template_name_field=None,
-        template_loader=loader, extra_context=None, context_processors=None,
-        template_object_name='object', mimetype=None, allow_future=False):
-    """
-    Generic detail view from year/month/day/slug or year/month/day/id structure.
-
-    Templates: ``<app_label>/<model_name>_detail.html``
-    Context:
-        object:
-            the object to be detailed
-    """
-    if extra_context is None: extra_context = {}
-    try:
-        date = datetime.date(*time.strptime(year+month+day, '%Y'+month_format+day_format)[:3])
-    except ValueError:
-        raise Http404
-
-    model = queryset.model
-    now = datetime.datetime.now()
-
-    if isinstance(model._meta.get_field(date_field), DateTimeField):
-        lookup_kwargs = {'%s__range' % date_field: (datetime.datetime.combine(date, datetime.time.min), datetime.datetime.combine(date, datetime.time.max))}
-    else:
-        lookup_kwargs = {date_field: date}
-
-    # Only bother to check current date if the date isn't in the past and future objects aren't requested.
-    if date >= now.date() and not allow_future:
-        lookup_kwargs['%s__lte' % date_field] = now
-    if object_id:
-        lookup_kwargs['%s__exact' % model._meta.pk.name] = object_id
-    elif slug and slug_field:
-        lookup_kwargs['%s__exact' % slug_field] = slug
-    else:
-        raise AttributeError, "Generic detail view must be called with either an object_id or a slug/slugfield"
-    try:
-        obj = queryset.get(**lookup_kwargs)
-    except ObjectDoesNotExist:
-        raise Http404, "No %s found for" % model._meta.verbose_name
-    if not template_name:
-        template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
-    if template_name_field:
-        template_name_list = [getattr(obj, template_name_field), template_name]
-        t = template_loader.select_template(template_name_list)
-    else:
-        t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        template_object_name: obj,
-    }, context_processors)
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    response = HttpResponse(t.render(c), mimetype=mimetype)
-    populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.name))
-    return response
diff --git a/webapp/django/views/generic/list_detail.py b/webapp/django/views/generic/list_detail.py
deleted file mode 100644
index 27e36bd..0000000
--- a/webapp/django/views/generic/list_detail.py
+++ /dev/null
@@ -1,145 +0,0 @@
-from django.template import loader, RequestContext
-from django.http import Http404, HttpResponse
-from django.core.xheaders import populate_xheaders
-from django.core.paginator import Paginator, InvalidPage
-from django.core.exceptions import ObjectDoesNotExist
-
-def object_list(request, queryset, paginate_by=None, page=None,
-        allow_empty=True, template_name=None, template_loader=loader,
-        extra_context=None, context_processors=None, template_object_name='object',
-        mimetype=None):
-    """
-    Generic list of objects.
-
-    Templates: ``<app_label>/<model_name>_list.html``
-    Context:
-        object_list
-            list of objects
-        is_paginated
-            are the results paginated?
-        results_per_page
-            number of objects per page (if paginated)
-        has_next
-            is there a next page?
-        has_previous
-            is there a prev page?
-        page
-            the current page
-        next
-            the next page
-        previous
-            the previous page
-        pages
-            number of pages, total
-        hits
-            number of objects, total
-        last_on_page
-            the result number of the last of object in the
-            object_list (1-indexed)
-        first_on_page
-            the result number of the first object in the
-            object_list (1-indexed)
-        page_range:
-            A list of the page numbers (1-indexed).
-    """
-    if extra_context is None: extra_context = {}
-    queryset = queryset._clone()
-    if paginate_by:
-        paginator = Paginator(queryset, paginate_by, allow_empty_first_page=allow_empty)
-        if not page:
-            page = request.GET.get('page', 1)
-        try:
-            page_number = int(page)
-        except ValueError:
-            if page == 'last':
-                page_number = paginator.num_pages
-            else:
-                # Page is not 'last', nor can it be converted to an int.
-                raise Http404
-        try:
-            page_obj = paginator.page(page_number)
-        except InvalidPage:
-            raise Http404
-        c = RequestContext(request, {
-            '%s_list' % template_object_name: page_obj.object_list,
-            'paginator': paginator,
-            'page_obj': page_obj,
-
-            # Legacy template context stuff. New templates should use page_obj
-            # to access this instead.
-            'is_paginated': page_obj.has_other_pages(),
-            'results_per_page': paginator.per_page,
-            'has_next': page_obj.has_next(),
-            'has_previous': page_obj.has_previous(),
-            'page': page_obj.number,
-            'next': page_obj.next_page_number(),
-            'previous': page_obj.previous_page_number(),
-            'first_on_page': page_obj.start_index(),
-            'last_on_page': page_obj.end_index(),
-            'pages': paginator.num_pages,
-            'hits': paginator.count,
-            'page_range': paginator.page_range,
-        }, context_processors)
-    else:
-        c = RequestContext(request, {
-            '%s_list' % template_object_name: queryset,
-            'paginator': None,
-            'page_obj': None,
-            'is_paginated': False,
-        }, context_processors)
-        if not allow_empty and len(queryset) == 0:
-            raise Http404
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    if not template_name:
-        model = queryset.model
-        template_name = "%s/%s_list.html" % (model._meta.app_label, model._meta.object_name.lower())
-    t = template_loader.get_template(template_name)
-    return HttpResponse(t.render(c), mimetype=mimetype)
-
-def object_detail(request, queryset, object_id=None, slug=None,
-        slug_field='slug', template_name=None, template_name_field=None,
-        template_loader=loader, extra_context=None,
-        context_processors=None, template_object_name='object',
-        mimetype=None):
-    """
-    Generic detail of an object.
-
-    Templates: ``<app_label>/<model_name>_detail.html``
-    Context:
-        object
-            the object
-    """
-    if extra_context is None: extra_context = {}
-    model = queryset.model
-    if object_id:
-        queryset = queryset.filter(pk=object_id)
-    elif slug and slug_field:
-        queryset = queryset.filter(**{slug_field: slug})
-    else:
-        raise AttributeError, "Generic detail view must be called with either an object_id or a slug/slug_field."
-    try:
-        obj = queryset.get()
-    except ObjectDoesNotExist:
-        raise Http404, "No %s found matching the query" % (model._meta.verbose_name)
-    if not template_name:
-        template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
-    if template_name_field:
-        template_name_list = [getattr(obj, template_name_field), template_name]
-        t = template_loader.select_template(template_name_list)
-    else:
-        t = template_loader.get_template(template_name)
-    c = RequestContext(request, {
-        template_object_name: obj,
-    }, context_processors)
-    for key, value in extra_context.items():
-        if callable(value):
-            c[key] = value()
-        else:
-            c[key] = value
-    response = HttpResponse(t.render(c), mimetype=mimetype)
-    populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.name))
-    return response
diff --git a/webapp/django/views/generic/simple.py b/webapp/django/views/generic/simple.py
deleted file mode 100644
index 0a68b82..0000000
--- a/webapp/django/views/generic/simple.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from django.template import loader, RequestContext
-from django.http import HttpResponse, HttpResponsePermanentRedirect, HttpResponseGone
-
-def direct_to_template(request, template, extra_context=None, mimetype=None, **kwargs):
-    """
-    Render a given template with any extra URL parameters in the context as
-    ``{{ params }}``.
-    """
-    if extra_context is None: extra_context = {}
-    dictionary = {'params': kwargs}
-    for key, value in extra_context.items():
-        if callable(value):
-            dictionary[key] = value()
-        else:
-            dictionary[key] = value
-    c = RequestContext(request, dictionary)
-    t = loader.get_template(template)
-    return HttpResponse(t.render(c), mimetype=mimetype)
-
-def redirect_to(request, url, **kwargs):
-    """
-    Redirect to a given URL.
-
-    The given url may contain dict-style string formatting, which will be
-    interpolated against the params in the URL.  For example, to redirect from
-    ``/foo/<id>/`` to ``/bar/<id>/``, you could use the following URLconf::
-
-        urlpatterns = patterns('',
-            ('^foo/(?P<id>\d+)/$', 'django.views.generic.simple.redirect_to', {'url' : '/bar/%(id)s/'}),
-        )
-
-    If the given url is ``None``, a HttpResponseGone (410) will be issued.
-    """
-    if url is not None:
-        return HttpResponsePermanentRedirect(url % kwargs)
-    else:
-        return HttpResponseGone()
diff --git a/webapp/django/views/i18n.py b/webapp/django/views/i18n.py
deleted file mode 100644
index e141c1d..0000000
--- a/webapp/django/views/i18n.py
+++ /dev/null
@@ -1,193 +0,0 @@
-from django import http
-from django.utils.translation import check_for_language, activate, to_locale, get_language
-from django.utils.text import javascript_quote
-from django.conf import settings
-import os
-import gettext as gettext_module
-
-def set_language(request):
-    """
-    Redirect to a given url while setting the chosen language in the
-    session or cookie. The url and the language code need to be
-    specified in the request parameters.
-
-    Since this view changes how the user will see the rest of the site, it must
-    only be accessed as a POST request. If called as a GET request, it will
-    redirect to the page in the request (the 'next' parameter) without changing
-    any state.
-    """
-    next = request.REQUEST.get('next', None)
-    if not next:
-        next = request.META.get('HTTP_REFERER', None)
-    if not next:
-        next = '/'
-    response = http.HttpResponseRedirect(next)
-    if request.method == 'POST':
-        lang_code = request.POST.get('language', None)
-        if lang_code and check_for_language(lang_code):
-            if hasattr(request, 'session'):
-                request.session['django_language'] = lang_code
-            else:
-                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
-    return response
-
-NullSource = """
-/* gettext identity library */
-
-function gettext(msgid) { return msgid; }
-function ngettext(singular, plural, count) { return (count == 1) ? singular : plural; }
-function gettext_noop(msgid) { return msgid; }
-"""
-
-LibHead = """
-/* gettext library */
-
-var catalog = new Array();
-"""
-
-LibFoot = """
-
-function gettext(msgid) {
-  var value = catalog[msgid];
-  if (typeof(value) == 'undefined') {
-    return msgid;
-  } else {
-    return (typeof(value) == 'string') ? value : value[0];
-  }
-}
-
-function ngettext(singular, plural, count) {
-  value = catalog[singular];
-  if (typeof(value) == 'undefined') {
-    return (count == 1) ? singular : plural;
-  } else {
-    return value[pluralidx(count)];
-  }
-}
-
-function gettext_noop(msgid) { return msgid; }
-"""
-
-SimplePlural = """
-function pluralidx(count) { return (count == 1) ? 0 : 1; }
-"""
-
-InterPolate = r"""
-function interpolate(fmt, obj, named) {
-  if (named) {
-    return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])});
-  } else {
-    return fmt.replace(/%s/g, function(match){return String(obj.shift())});
-  }
-}
-"""
-
-PluralIdx = r"""
-function pluralidx(n) {
-  var v=%s;
-  if (typeof(v) == 'boolean') {
-    return v ? 1 : 0;
-  } else {
-    return v;
-  }
-}
-"""
-
-def null_javascript_catalog(request, domain=None, packages=None):
-    """
-    Returns "identity" versions of the JavaScript i18n functions -- i.e.,
-    versions that don't actually do anything.
-    """
-    return http.HttpResponse(NullSource + InterPolate, 'text/javascript')
-
-def javascript_catalog(request, domain='djangojs', packages=None):
-    """
-    Returns the selected language catalog as a javascript library.
-
-    Receives the list of packages to check for translations in the
-    packages parameter either from an infodict or as a +-delimited
-    string from the request. Default is 'django.conf'.
-
-    Additionally you can override the gettext domain for this view,
-    but usually you don't want to do that, as JavaScript messages
-    go to the djangojs domain. But this might be needed if you
-    deliver your JavaScript source from Django templates.
-    """
-    if request.GET:
-        if 'language' in request.GET:
-            if check_for_language(request.GET['language']):
-                activate(request.GET['language'])
-    if packages is None:
-        packages = ['django.conf']
-    if type(packages) in (str, unicode):
-        packages = packages.split('+')
-    packages = [p for p in packages if p == 'django.conf' or p in settings.INSTALLED_APPS]
-    default_locale = to_locale(settings.LANGUAGE_CODE)
-    locale = to_locale(get_language())
-    t = {}
-    paths = []
-    # first load all english languages files for defaults
-    for package in packages:
-        p = __import__(package, {}, {}, [''])
-        path = os.path.join(os.path.dirname(p.__file__), 'locale')
-        paths.append(path)
-        try:
-            catalog = gettext_module.translation(domain, path, ['en'])
-            t.update(catalog._catalog)
-        except IOError:
-            # 'en' catalog was missing. This is harmless.
-            pass
-    # next load the settings.LANGUAGE_CODE translations if it isn't english
-    if default_locale != 'en':
-        for path in paths:
-            try:
-                catalog = gettext_module.translation(domain, path, [default_locale])
-            except IOError:
-                catalog = None
-            if catalog is not None:
-                t.update(catalog._catalog)
-    # last load the currently selected language, if it isn't identical to the default.
-    if locale != default_locale:
-        for path in paths:
-            try:
-                catalog = gettext_module.translation(domain, path, [locale])
-            except IOError:
-                catalog = None
-            if catalog is not None:
-                t.update(catalog._catalog)
-    src = [LibHead]
-    plural = None
-    if '' in t:
-        for l in t[''].split('\n'):
-            if l.startswith('Plural-Forms:'):
-                plural = l.split(':',1)[1].strip()
-    if plural is not None:
-        # this should actually be a compiled function of a typical plural-form:
-        # Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
-        plural = [el.strip() for el in plural.split(';') if el.strip().startswith('plural=')][0].split('=',1)[1]
-        src.append(PluralIdx % plural)
-    else:
-        src.append(SimplePlural)
-    csrc = []
-    pdict = {}
-    for k, v in t.items():
-        if k == '':
-            continue
-        if type(k) in (str, unicode):
-            csrc.append("catalog['%s'] = '%s';\n" % (javascript_quote(k), javascript_quote(v)))
-        elif type(k) == tuple:
-            if k[0] not in pdict:
-                pdict[k[0]] = k[1]
-            else:
-                pdict[k[0]] = max(k[1], pdict[k[0]])
-            csrc.append("catalog['%s'][%d] = '%s';\n" % (javascript_quote(k[0]), k[1], javascript_quote(v)))
-        else:
-            raise TypeError, k
-    csrc.sort()
-    for k,v in pdict.items():
-        src.append("catalog['%s'] = [%s];\n" % (javascript_quote(k), ','.join(["''"]*(v+1))))
-    src.extend(csrc)
-    src.append(LibFoot)
-    src.append(InterPolate)
-    src = ''.join(src)
-    return http.HttpResponse(src, 'text/javascript')
diff --git a/webapp/django/views/static.py b/webapp/django/views/static.py
deleted file mode 100644
index 5a4d3ab..0000000
--- a/webapp/django/views/static.py
+++ /dev/null
@@ -1,133 +0,0 @@
-"""
-Views and functions for serving static files. These are only to be used
-during development, and SHOULD NOT be used in a production setting.
-"""
-
-import mimetypes
-import os
-import posixpath
-import re
-import stat
-import urllib
-from email.Utils import parsedate_tz, mktime_tz
-
-from django.template import loader
-from django.http import Http404, HttpResponse, HttpResponseRedirect, HttpResponseNotModified
-from django.template import Template, Context, TemplateDoesNotExist
-from django.utils.http import http_date
-
-def serve(request, path, document_root=None, show_indexes=False):
-    """
-    Serve static files below a given point in the directory structure.
-
-    To use, put a URL pattern such as::
-
-        (r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root' : '/path/to/my/files/'})
-
-    in your URLconf. You must provide the ``document_root`` param. You may
-    also set ``show_indexes`` to ``True`` if you'd like to serve a basic index
-    of the directory.  This index view will use the template hardcoded below,
-    but if you'd like to override it, you can create a template called
-    ``static/directory_index``.
-    """
-
-    # Clean up given path to only allow serving files below document_root.
-    path = posixpath.normpath(urllib.unquote(path))
-    path = path.lstrip('/')
-    newpath = ''
-    for part in path.split('/'):
-        if not part:
-            # Strip empty path components.
-            continue
-        drive, part = os.path.splitdrive(part)
-        head, part = os.path.split(part)
-        if part in (os.curdir, os.pardir):
-            # Strip '.' and '..' in path.
-            continue
-        newpath = os.path.join(newpath, part).replace('\\', '/')
-    if newpath and path != newpath:
-        return HttpResponseRedirect(newpath)
-    fullpath = os.path.join(document_root, newpath)
-    if os.path.isdir(fullpath):
-        if show_indexes:
-            return directory_index(newpath, fullpath)
-        raise Http404, "Directory indexes are not allowed here."
-    if not os.path.exists(fullpath):
-        raise Http404, '"%s" does not exist' % fullpath
-    # Respect the If-Modified-Since header.
-    statobj = os.stat(fullpath)
-    if not was_modified_since(request.META.get('HTTP_IF_MODIFIED_SINCE'),
-                              statobj[stat.ST_MTIME], statobj[stat.ST_SIZE]):
-        return HttpResponseNotModified()
-    mimetype = mimetypes.guess_type(fullpath)[0] or 'application/octet-stream'
-    contents = open(fullpath, 'rb').read()
-    response = HttpResponse(contents, mimetype=mimetype)
-    response["Last-Modified"] = http_date(statobj[stat.ST_MTIME])
-    response["Content-Length"] = len(contents)
-    return response
-
-DEFAULT_DIRECTORY_INDEX_TEMPLATE = """
-<!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" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
-    <meta http-equiv="Content-Language" content="en-us" />
-    <meta name="robots" content="NONE,NOARCHIVE" />
-    <title>Index of {{ directory|escape }}</title>
-  </head>
-  <body>
-    <h1>Index of {{ directory|escape }}</h1>
-    <ul>
-      {% for f in file_list %}
-      <li><a href="{{ f|urlencode }}">{{ f|escape }}</a></li>
-      {% endfor %}
-    </ul>
-  </body>
-</html>
-"""
-
-def directory_index(path, fullpath):
-    try:
-        t = loader.get_template('static/directory_index')
-    except TemplateDoesNotExist:
-        t = Template(DEFAULT_DIRECTORY_INDEX_TEMPLATE, name='Default directory index template')
-    files = []
-    for f in os.listdir(fullpath):
-        if not f.startswith('.'):
-            if os.path.isdir(os.path.join(fullpath, f)):
-                f += '/'
-            files.append(f)
-    c = Context({
-        'directory' : path + '/',
-        'file_list' : files,
-    })
-    return HttpResponse(t.render(c))
-
-def was_modified_since(header=None, mtime=0, size=0):
-    """
-    Was something modified since the user last downloaded it?
-
-    header
-      This is the value of the If-Modified-Since header.  If this is None,
-      I'll just return True.
-
-    mtime
-      This is the modification time of the item we're talking about.
-
-    size
-      This is the size of the item we're talking about.
-    """
-    try:
-        if header is None:
-            raise ValueError
-        matches = re.match(r"^([^;]+)(; length=([0-9]+))?$", header,
-                           re.IGNORECASE)
-        header_mtime = mktime_tz(parsedate_tz(matches.group(1)))
-        header_len = matches.group(3)
-        if header_len and int(header_len) != size:
-            raise ValueError
-        if mtime > header_mtime:
-            raise ValueError
-    except (AttributeError, ValueError):
-        return True
-    return False
diff --git a/webapp/git_upload.py b/webapp/git_upload.py
deleted file mode 100755
index a1890ed..0000000
--- a/webapp/git_upload.py
+++ /dev/null
@@ -1,270 +0,0 @@
-#!/usr/bin/env python2.5
-#
-# Copyright 2007 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import getpass
-import logging
-import optparse
-import os
-import subprocess
-import sys
-from tempfile import mkstemp
-
-from codereview.proto_client import HttpRpc, Proxy
-from codereview.review_pb2 import ReviewService_Stub
-from codereview.upload_bundle_pb2 import *
-
-try:
-  import readline
-except ImportError:
-  pass
-
-MAX_SEGMENT_SIZE = 1020 * 1024
-
-# The logging verbosity:
-#  0: Errors only.
-#  1: Status messages.
-#  2: Info logs.
-#  3: Debug logs.
-verbosity = 1
-
-def StatusUpdate(msg):
-  """Print a status message to stdout.
-
-  If 'verbosity' is greater than 0, print the message.
-
-  Args:
-    msg: The string to print.
-  """
-  if verbosity > 0:
-    print msg
-
-
-def ErrorExit(msg):
-  """Print an error message to stderr and exit."""
-  print >>sys.stderr, msg
-  sys.exit(1)
-
-
-def RunShell(command, args=(), silent_ok=False):
-  command = "%s %s" % (command, " ".join(args))
-  logging.info("Running %s", command)
-  stream = os.popen(command, "r")
-  data = stream.read()
-  if stream.close():
-    ErrorExit("Got error status from %s" % command)
-  if not silent_ok and not data:
-    ErrorExit("No output from %s" % command)
-  return data
-
-
-def RunGit(*args):
-  argv = ["git"]
-  argv += args
-  retcode = subprocess.call(argv)
-  if retcode != 0:
-    raise OSError, retcode
-
-def GitVal(*args):
-  data = RunShell("git", args)
-  if data.rfind("\n") == len(data) - 1:
-    return data[0 : len(data) - 1]
-  return data
-
-
-parser = optparse.OptionParser(usage="%prog [options] [-- diff_options]")
-
-# Logging
-group = parser.add_option_group("Logging options")
-group.add_option("-q", "--quiet", action="store_const", const=0,
-                 dest="verbose", help="Print errors only.")
-group.add_option("-v", "--verbose", action="store_const", const=2,
-                 dest="verbose", default=1,
-                 help="Print info level logs (default).")
-group.add_option("--noisy", action="store_const", const=3,
-                 dest="verbose", help="Print all logs.")
-
-# Review server
-group = parser.add_option_group("Review server options")
-group.add_option("-s", "--server", action="store", dest="server",
-                 default="codereview.appspot.com",
-                 metavar="SERVER",
-                 help=("The server to upload to. The format is host[:port]. "
-                       "Defaults to 'codereview.appspot.com'."))
-group.add_option("-e", "--email", action="store", dest="email",
-                 metavar="EMAIL", default=None,
-                 help="The username to use. Will prompt if omitted.")
-group.add_option("-H", "--host", action="store", dest="host",
-                 metavar="HOST", default=None,
-                 help="Overrides the Host header sent with all RPCs.")
-group.add_option("--no_cookies", action="store_false",
-                 dest="save_cookies", default=True,
-                 help="Do not save authentication cookies to local disk.")
-
-# Git
-group = parser.add_option_group("Git options")
-group.add_option("-p", "--project", action="store", dest="dest_project",
-                 metavar="PROJECT",
-                 help=("Name of the Git repository to submit into."))
-group.add_option("-b", "--branch", action="store", dest="dest_branch",
-                 metavar="BRANCH",
-                 help=("Name of the branch the changes are proposed for."))
-group.add_option("-B", "--base", action="store", dest="base_commit",
-                 default="refs/remotes/origin/master",
-                 metavar="COMMIT",
-                 help=("Base commit for the bundle."))
-group.add_option('-c', '--commit', action='store', dest='src_commit',
-                 default="HEAD",
-                 metavar="COMMIT",
-                 help=("Commit to start uploading from."))
-group.add_option('-r', '--replace', action='append', dest='replace',
-                 metavar='CHANGE:COMMIT',
-                 help='Replace a patch set on an existing change')
-
-def GetRpcServer(options):
-  """Returns an RpcServer.
-
-  Returns:
-    A new RpcServer, on which RPC calls can be made.
-  """
-
-  def GetUserCredentials():
-    """Prompts the user for a username and password."""
-    email = options.email
-    if email is None:
-      email = raw_input("Email: ").strip()
-    password = getpass.getpass("Password for %s: " % email)
-    return (email, password)
-
-  # If this is the dev_appserver, use fake authentication.
-  host = (options.host or options.server).lower()
-  if host == "localhost" or host.startswith("localhost:"):
-    email = options.email
-    if email is None:
-      email = "test@example.com"
-      logging.info("Using debug user %s.  Override with --email" % email)
-
-    server = HttpRpc(
-        options.server,
-        lambda: (email, "password"),
-        host_override=options.host,
-        extra_headers={"Cookie":
-                       'dev_appserver_login="%s:False"' % email})
-    # Don't try to talk to ClientLogin.
-    server.authenticated = True
-    return server
-
-  if options.save_cookies:
-    cookie_file = ".gerrit_cookies"
-  else:
-    cookie_file = None
-
-  return HttpRpc(options.server, GetUserCredentials,
-                 host_override=options.host,
-                 cookie_file=cookie_file)
-
-
-def RealMain(argv, data=None):
-  logging.basicConfig(format=("%(asctime).19s %(levelname)s %(filename)s:"
-                              "%(lineno)s %(message)s "))
-  os.environ['LC_ALL'] = 'C'
-  options, args = parser.parse_args(argv[1:])
-
-  global verbosity
-  verbosity = options.verbose
-  if verbosity >= 3:
-    logging.getLogger().setLevel(logging.DEBUG)
-  elif verbosity >= 2:
-    logging.getLogger().setLevel(logging.INFO)
-
-  srv = GetRpcServer(options)
-  review = Proxy(ReviewService_Stub(srv))
-
-  git_dir = GitVal("rev-parse","--git-dir")
-
-  revlist = GitVal("rev-list",
-                   "^" + options.base_commit,
-                   options.src_commit).split("\n")
-
-  replace_changes = dict()
-  if options.replace:
-    for line in options.replace:
-      change_id, commit_id = line.split(':')
-      replace_changes[change_id] = commit_id
-
-  tmp_fd, tmp_bundle = mkstemp(".bundle", ".gpq", git_dir)
-  os.close(tmp_fd)
-
-  try:
-    RunGit("bundle", "create",
-           tmp_bundle,
-           "^" + options.base_commit,
-           options.src_commit)
-    fd = open(tmp_bundle, "rb")
-
-    bundle_id = None
-    segment_id = 0
-    next_data = fd.read(MAX_SEGMENT_SIZE)
-
-    while len(next_data) > 0:
-      this_data = next_data
-      next_data = fd.read(MAX_SEGMENT_SIZE)
-      segment_id += 1
-    
-      if bundle_id is None:
-        req = UploadBundleRequest()
-        req.dest_project = options.dest_project
-        req.dest_branch = options.dest_branch
-        for c in revlist:
-          req.contained_object.append(c)
-        for change_id,commit_id in replace_changes.iteritems():
-          r = req.replace.add()
-          r.change_id = change_id
-          r.object_id = commit_id
-      else:
-        req = UploadBundleContinue()
-        req.bundle_id = bundle_id
-        req.segment_id = segment_id
-
-      req.bundle_data = this_data
-      if len(next_data) > 0:
-        req.partial_upload = True
-      else:
-        req.partial_upload = False
-
-      if bundle_id is None:
-        rsp = review.UploadBundle(req)
-      else:
-        rsp = review.ContinueBundle(req)
-
-      if rsp.status_code == UploadBundleResponse.CONTINUE:
-        bundle_id = rsp.bundle_id
-      else:
-        print rsp
-        break
-  finally:
-    os.unlink(tmp_bundle)
-
-def main():
-  try:
-    RealMain(sys.argv)
-  except KeyboardInterrupt:
-    print
-    StatusUpdate("Interrupted.")
-    sys.exit(1)
-
-
-if __name__ == "__main__":
-  main()
diff --git a/webapp/index.yaml b/webapp/index.yaml
deleted file mode 100644
index cd79b51..0000000
--- a/webapp/index.yaml
+++ /dev/null
@@ -1,186 +0,0 @@
-indexes:
-
-# AUTOGENERATED
-
-# This index.yaml is automatically updated whenever the dev_appserver
-# detects that a new type of query is run.  If you want to manage the
-# index.yaml file manually, remove the above marker line (the line
-# saying "# AUTOGENERATED").  If you want to manage some indexes
-# manually, move them above the marker line.  The index.yaml file is
-# automatically uploaded to the admin console when you next deploy
-# your application using appcfg.py.
-
-# Used once in query history.
-- kind: Account
-  properties:
-  - name: cla_verified
-  - name: welcomed
-  - name: email
-
-# Unused in query history -- copied from input.
-- kind: Account
-  properties:
-  - name: welcomed
-  - name: cla_verified
-  - name: email
-
-# Used 2772 times in query history.
-- kind: Branch
-  properties:
-  - name: status
-  - name: merge_submitted
-
-# Used 50 times in query history.
-- kind: BuildAttempt
-  properties:
-  - name: success
-  - name: started
-
-# Used 11 times in query history.
-- kind: Change
-  properties:
-  - name: claimed
-  - name: closed
-  - name: dest_project
-  - name: modified
-    direction: desc
-
-# Used 16 times in query history.
-- kind: Change
-  properties:
-  - name: claimed
-  - name: closed
-  - name: dest_project
-    direction: desc
-  - name: modified
-    direction: desc
-
-# Used 26 times in query history.
-- kind: Change
-  properties:
-  - name: closed
-  - name: modified
-    direction: desc
-
-# Used 467 times in query history.
-- kind: Change
-  properties:
-  - name: closed
-  - name: owner
-  - name: modified
-    direction: desc
-
-# Used 234 times in query history.
-- kind: Change
-  properties:
-  - name: closed
-  - name: reviewers
-  - name: modified
-    direction: desc
-
-# Unused in query history -- copied from input.
-- kind: Change
-  properties:
-  - name: modified
-    direction: desc
-
-# Unused in query history -- copied from input.
-- kind: Change
-  properties:
-  - name: owner
-  - name: modified
-    direction: desc
-
-# Unused in query history -- copied from input.
-- kind: Change
-  properties:
-  - name: reviewers
-  - name: modified
-    direction: desc
-
-# Unused in query history -- copied from input.
-- kind: Comment
-  properties:
-  - name: left
-  - name: lineno
-  - name: patch
-  - name: date
-
-# Unused in query history -- copied from input.
-- kind: Comment
-  properties:
-  - name: left
-  - name: patch
-  - name: date
-
-# Unused in query history -- copied from input.
-- kind: Comment
-  properties:
-  - name: patch
-  - name: date
-
-# Used once in query history.
-- kind: Comment
-  ancestor: yes
-
-# Unused in query history -- copied from input.
-- kind: Comment
-  ancestor: yes
-  properties:
-  - name: author
-  - name: draft
-
-# Used 172 times in query history.
-- kind: Message
-  properties:
-  - name: change
-  - name: date
-
-# Used once in query history.
-- kind: Message
-  ancestor: yes
-
-# Used 173 times in query history.
-- kind: Patch
-  properties:
-  - name: patchset
-  - name: filename
-
-# Used once in query history.
-- kind: Patch
-  ancestor: yes
-
-# Used 322 times in query history.
-- kind: PatchSet
-  properties:
-  - name: change
-  - name: id
-
-# Used 2 times in query history.
-- kind: PatchSet
-  ancestor: yes
-
-# Used once in query history.
-- kind: PatchSetFilenames
-  ancestor: yes
-
-# Unused in query history -- copied from input.
-- kind: ReceivedBundle
-  properties:
-  - name: owner
-  - name: created
-    direction: desc
-
-# Used 2145 times in query history.
-- kind: ReceivedBundle
-  properties:
-  - name: state
-  - name: created
-
-# Used 7 times in query history.
-- kind: ReceivedBundleSegment
-  ancestor: yes
-
-# Used 243 times in query history.
-- kind: ReviewStatus
-  ancestor: yes
diff --git a/webapp/main.py b/webapp/main.py
deleted file mode 100644
index a6cfa93..0000000
--- a/webapp/main.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Main program for Gerrit.
-
-This is also a template for running a Django app under Google App
-Engine, especially when using a newer version of Django than provided
-in the App Engine standard library.
-
-The site-specific code is all in other files: urls.py, models.py,
-views.py, settings.py.
-"""
-
-# Standard Python imports.
-import os
-import sys
-import logging
-
-# Log a message each time this module get loaded.
-logging.info('Loading %s, app version = %s',
-             __name__, os.getenv('CURRENT_VERSION_ID'))
-
-# Delete the preloaded copy of Django.
-for key in [key for key in sys.modules if key.startswith('django')]:
-  del sys.modules[key]
-
-# Force sys.path to have our own directory first, so we can import from it.
-sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
-sys.path.insert(0, os.path.abspath('django.zip'))
-sys.path.insert(0, os.path.abspath('froofle.zip'))
-sys.path.insert(0, os.path.abspath('codereview.zip'))
-
-# Fail early if we can't import Django.  Log identifying information.
-import django
-logging.info('django.__file__ = %r, django.VERSION = %r',
-             django.__file__, django.VERSION)
-assert django.VERSION[0] >= 1,"This Django version is too old"
-
-# AppEngine imports.
-from google.appengine.ext.webapp import util
-
-# Helper to enter the debugger.  This passes in __stdin__ and
-# __stdout__, because stdin and stdout are connected to the request
-# and response streams.  You must import this from __main__ to use it.
-# (I tried to make it universally available via __builtin__, but that
-# doesn't seem to work for some reason.)
-def BREAKPOINT():
-  import pdb
-  p = pdb.Pdb(None, sys.__stdin__, sys.__stdout__)
-  p.set_trace()
-
-# Custom Django configuration.
-from django.conf import settings
-settings._target = None
-os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
-
-# Import various parts of Django.
-import django.core.handlers.wsgi
-import django.core.signals
-import django.db
-import django.dispatch.dispatcher
-import django.forms
-
-# Work-around to avoid warning about django.newforms in djangoforms.
-django.newforms = django.forms
-
-def log_exception(*args, **kwds):
-  """Django signal handler to log an exception."""
-  cls, err = sys.exc_info()[:2]
-  logging.exception('Exception in request: %s: %s', cls.__name__, err)
-
-# Log all exceptions detected by Django.
-django.core.signals.got_request_exception.connect(log_exception)
-
-# Unregister Django's default rollback event handler.
-django.core.signals.got_request_exception.disconnect(
-    django.db._rollback_on_exception)
-
-correct_path = None
-def real_main():
-  """Main program.
-  """
-  global correct_path
-
-  if correct_path is None:
-    correct_path = list(sys.path)
-  else:
-    sys.path[:] = correct_path
-
-  application = django.core.handlers.wsgi.WSGIHandler()
-  util.run_wsgi_app(application)
-
-def profile_main():
-  """Main program for profiling.
-  """
-  import cProfile, pstats, StringIO
-  prof = cProfile.Profile()
-  prof = prof.runctx('real_main()', globals(), locals())
-  stream = StringIO.StringIO()
-  stats = pstats.Stats(prof, stream=stream)
-  # stats.strip_dirs()  # Don't; too many modules are named __init__.py.
-  stats.sort_stats('time')  # 'time', 'cumulative' or 'calls'
-  stats.print_stats()  # Optional arg: how many to print
-  # The rest is optional.
-  # stats.print_callees()
-  # stats.print_callers()
-  print '\n<hr>'
-  print '<h1>Profile</h1>'
-  print '<pre>'
-  print stream.getvalue()[:1000000]
-  print '</pre>'
-
-# Set this to profile_main to enable profiling.
-main = real_main
-
-if __name__ == '__main__':
-  main()
diff --git a/webapp/settings.py b/webapp/settings.py
deleted file mode 100644
index aed92fc..0000000
--- a/webapp/settings.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2008 Google Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Minimal Django settings."""
-
-import os
-
-APPEND_SLASH = False
-DEBUG = os.environ['SERVER_SOFTWARE'].startswith('Dev')
-INSTALLED_APPS = (
-    'codereview',
-)
-MIDDLEWARE_CLASSES = (
-    'codereview.middleware.NoCacheMiddleware',
-    'django.middleware.common.CommonMiddleware',
-    'django.middleware.http.ConditionalGetMiddleware',
-    'codereview.middleware.AddUserToRequestMiddleware',
-    'codereview.middleware.ClearXsrfKeyMiddleware',
-)
-ROOT_URLCONF = 'codereview.urls'
-TEMPLATE_CONTEXT_PROCESSORS = ()
-TEMPLATE_DEBUG = DEBUG
-TEMPLATE_DIRS = (
-    os.path.join(os.path.dirname(__file__), 'templates'),
-    )
-TEMPLATE_LOADERS = (
-    'django.template.loaders.filesystem.load_template_source',
-    )
-
diff --git a/webapp/static/ajax.js b/webapp/static/ajax.js
deleted file mode 100644
index bc80e9b..0000000
--- a/webapp/static/ajax.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2008 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var PROGRESS_ELEMENT_ID = "ajax_progress";
-var CONNECTION_ERROR_ELEMENT_ID = "ajax_error";
-
-var g_filesLoading = 0;
-
-/**
- * Asynchronously get a url that contains a json file, and call the callback
- * when done.
- *
- * The callback should have the following prototype:
- *  callback(boolean success, Object result)
- *
- * Returns an object that can be used to cancel the request.
- */
-function get_file_contents(url, callback) {
-    var running = true;
-
-    function set_progress_visibility(visible) {
-        var progress = document.getElementById(PROGRESS_ELEMENT_ID);
-        if (progress) {
-            progress.style.display = visible ? "block" : "none";
-        }
-    }
-
-    show_bad_connection_error(null);
-
-    var req;
-    if (window.XMLHttpRequest) {
-        req = new XMLHttpRequest();
-    } else if (window.ActiveXObject) {
-        req = new ActiveXObject("Microsoft.XMLHTTP");
-    } else {
-        return;
-    }
-
-    g_filesLoading++;
-    if (g_filesLoading > 0) {
-        set_progress_visibility(true);
-    }
-
-    req.open("GET", url, true);
-
-    req.onreadystatechange = function() {
-        if (req.readyState == 4) {
-            if (req.status == 200) {
-                callback(true, req.responseText);
-            } else {
-                callback(false, null);
-            }
-            g_filesLoading--;
-            if (g_filesLoading == 0) {
-                set_progress_visibility(false);
-            }
-            running = false;
-        }
-    };
-
-    req.send(null);
-
-
-    var controller = new Object();
-    controller.cancel = function() {
-        req.abort();
-        if (running) {
-            g_filesLoading--;
-            if (g_filesLoading == 0) {
-                set_progress_visibility(false);
-            }
-            running = false;
-        }
-    };
-    return controller;
-}
-
-/**
- * like get_file_contents, but converts the result to a json object
- */
-function get_json(url, callback) {
-    return get_file_contents(url, function(success, data) {
-                callback(success, eval("(" + data + ")"));
-            });
-}
-
-function show_bad_connection_error(err) {
-    var errorDiv = document.getElementById(CONNECTION_ERROR_ELEMENT_ID);
-    if (errorDiv) {
-        if (err) {
-            errorDiv.style.display = "block";
-        } else {
-            errorDiv.style.display = "none";
-        }
-    }
-}
-
-
diff --git a/webapp/static/android_heart.png b/webapp/static/android_heart.png
deleted file mode 100644
index 2b05dbd..0000000
--- a/webapp/static/android_heart.png
+++ /dev/null
Binary files differ
diff --git a/webapp/static/application_version b/webapp/static/application_version
deleted file mode 100644
index e69de29..0000000
--- a/webapp/static/application_version
+++ /dev/null
diff --git a/webapp/static/bug.png b/webapp/static/bug.png
deleted file mode 100644
index e832ce9..0000000
--- a/webapp/static/bug.png
+++ /dev/null
Binary files differ
diff --git a/webapp/static/check.png b/webapp/static/check.png
deleted file mode 100644
index 3e7db83..0000000
--- a/webapp/static/check.png
+++ /dev/null
Binary files differ
diff --git a/webapp/static/corp_cla.html b/webapp/static/corp_cla.html
deleted file mode 100644
index 1808425..0000000
--- a/webapp/static/corp_cla.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<html>
-<body>
-<div style="text-align: left;">
-
-
-<font
-size="4">Android Open Source Project<br>Corporate Contributor License Grant ("Grant"), v1.0</font></h2><h3 class="title" style="text-align: center;"><a href="http://code.google.com/legal/corporate-cla-v1.0.html" style="color: rgb(85, 26, 139);"><span style="background-color: rgb(255, 255, 0);">http://code.google.com/legal/corporate-cla-v1.0.html</span></a></h3><p>In order to clarify the intellectual property license granted with
-Contributions from any person or entity, the Android Open Source
-Project (the "Project") must have a Contributor License Grant
-("Grant") on file that has been signed by each Contributor, indicating
-agreement to the license terms below. This license is for your
-protection as a Contributor as well as the protection of the Project
-and the Android Open Source Project Leads (the "Project Leads");
-it does not change your rights to use your own Contributions for
-any other purpose.</p><p>This version of the Grant allows an entity
-(the "Corporation") to submit Contributions to the Project Leads,
-to authorize Contributions submitted by its designated employees
-to the Project Leads, and to grant copyright and patent licenses
-thereto. If you have not already done so, please complete and send
-an original signed Grant to</p><blockquote>Google Inc.<br>Attn:
-Open Source Program Office<br>1600 Amphitheatre Pkwy<br>Building
-43<br>Mountain View, CA 94043<br>U.S.A.<br></blockquote><p>Scanned
-agreements may also be emailed in PDF form to
-cla-submissions@google.com</p><p>If necessary, you may send it by
-facsimile to (650) 887-1625. Please read this document carefully
-before signing and keep a copy for your records.</p><pre style="border: 1px solid silver; margin: 2em; padding: 0.5em; color: rgb(0, 112, 0); font-size: 100%; background-color: rgb(245, 245, 245);">Corporation name: ___________________________________________________<br><br><br><br>Corporation address: ________________________________________________<br><br><br><br>_____________________________________________________________________<br><br><br><br>_____________________________________________________________________<br><br><br><br>Point of Contact: ___________________________________________________<br><br><br><br>E-Mail: ____________________________________________________________<br><br><br><br>Telephone: _____________________<br><br><br><br>Fax: ___________________________<br><br></pre><p>You accept and agree
-to the following terms and conditions for Your present and future
-Contributions submitted to the Project. Except for the license
-granted herein to the Project Leads and recipients of software
-distributed by the Project Leads, You reserve all right, title, and
-interest in and to Your Contributions.</p><ol><li style="margin-bottom:
-0.25em;"><p>Definitions.</p><p>"You" (or "Your") shall mean the
-copyright owner or legal entity authorized by the copyright owner
-that is making this Grant to the Project Leads. For legal entities,
-the entity making a Contribution and all other entities that control,
-are controlled by, or are under common control with that entity are
-considered to be a single Contributor. For the purposes of this
-definition, "control" means (i) the power, direct or indirect, to
-cause the direction or management of such entity, whether by contract
-or otherwise, or (ii) ownership of fifty percent (50%) or more of
-the outstanding shares, or (iii) beneficial ownership of such
-entity.</p><p>"Contribution" shall mean the code, documentation or
-other original works of authorship expressly identified in Schedule
-B, as well as any original work of authorship, including any
-modifications or additions to an existing work, that is intentionally
-submitted by You to the Project Leads for inclusion in, or documentation
-of, any of the products managed or maintained by the Project Leads
-(the "Work"). For the purposes of this definition, "submitted" means
-any form of electronic, verbal, or written communication sent to
-the Project Leads or their representatives, including but not limited
-to communication on electronic mailing lists, source code control
-systems, and issue tracking systems that are managed by, or on
-behalf of, the Project Leads for the purpose of discussing and
-improving the Work, but excluding communication that is conspicuously
-marked or otherwise designated in writing by You as "Not a
-Contribution."</p></li><li style="margin-bottom: 0.25em;"><p>Grant
-of Copyright License. Subject to the terms and conditions of this
-Grant, You hereby grant to the Project Leads and to recipients of
-software distributed by the Project Leads a perpetual, worldwide,
-non-exclusive, no-charge, royalty-free, irrevocable copyright license
-to reproduce, prepare derivative works of, publicly display, publicly
-perform, sublicense, and distribute Your Contributions and such
-derivative works.</p></li><li style="margin-bottom: 0.25em;"><p>Grant
-of Patent License. Subject to the terms and conditions of this
-Grant, You hereby grant to the Project Leads and to recipients of
-software distributed by the Project Leads a perpetual, worldwide,
-non-exclusive, no-charge, royalty-free, irrevocable (except as
-stated in this section) patent license to make, have made, use,
-offer to sell, sell, import, and otherwise transfer the Work, where
-such license applies only to those patent claims licensable by You
-that are necessarily infringed by Your Contribution(s) alone or by
-combination of Your Contribution(s) with the Work to which such
-Contribution(s) was submitted. If any entity institutes patent
-litigation against You or any other entity (including a cross-claim
-or counterclaim in a lawsuit) alleging that your Contribution, or
-the Work to which you have contributed, constitutes direct or
-contributory patent infringement, then any patent licenses granted
-to that entity under this Grant for that Contribution or Work shall
-terminate as of the date such litigation is filed.</p></li><li
-style="margin-bottom: 0.25em;"><p>You represent that You are legally
-entitled to grant the above license. You represent further that
-each employee of the Corporation designated on Schedule A below (or
-in a subsequent written modification to that Schedule) is authorized
-to submit Contributions on behalf of the Corporation.</p></li><li
-style="margin-bottom: 0.25em;"><p>You represent that each of Your
-Contributions is Your original creation (see section 7 for submissions
-on behalf of others).</p></li><li style="margin-bottom: 0.25em;"><p>You
-are not expected to provide support for Your Contributions, except
-to the extent You desire to provide support. You may provide support
-for free, for a fee, or not at all. Unless required by applicable
-law or agreed to in writing, You provide Your Contributions on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
-express or implied, including, without limitation, any warranties
-or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
-FOR A PARTICULAR PURPOSE.</p></li><li style="margin-bottom: 0.25em;"><p>Should You wish to submit work that is not Your original
-creation, You may submit it to the Project Leads separately from
-any Contribution, identifying the complete details of its source
-and of any license or other restriction (including, but not limited
-to, related patents, trademarks, and license agreements) of which
-you are personally aware, and conspicuously marking the work as
-"Submitted on behalf of a third-party: [named here]". <span
-style="background-color: rgb(255, 255, 0);"></span><span
-style="background-color: rgb(255, 255, 0);"><br></span></p></li><li
-style="margin-bottom: 0.25em;"><p>It is your responsibility to
-notify the Project Leads when any change is required to the list
-of designated employees authorized to submit Contributions on behalf
-of the Corporation, or to the Corporation's Point of Contact with
-the Project.</p></li></ol><pre style="border: 1px solid silver; margin: 2em; padding: 0.5em; color: rgb(0, 112, 0); font-size: 100%; background-color: rgb(245, 245, 245);"> <br><br><br>Please sign: __________________________________   Date: _______________<br><br> <br><br>Title: _______________________________________________________________<br><br> <br><br>Corporation: __________________________________________________________<br><br></pre><h3><font size="3">Schedule A</font></h3>[Initial list of designated employees.  NB: authorization is not tied to particular Contributions.]<h3><font size="3">Schedule B</font></h3>[Identification of optional concurrent software grant. Would be left blank or omitted if there is no concurrent software grant.]<br>
-</body>
-</html>
diff --git a/webapp/static/customLogo.png b/webapp/static/customLogo.png
deleted file mode 100644
index 87a7f38..0000000
--- a/webapp/static/customLogo.png
+++ /dev/null
Binary files differ
diff --git a/webapp/static/favicon.ico b/webapp/static/favicon.ico
deleted file mode 100644
index bc024d6..0000000
--- a/webapp/static/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/webapp/static/opentriangle.gif b/webapp/static/opentriangle.gif
deleted file mode 100644
index fefe684..0000000
--- a/webapp/static/opentriangle.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/static/robots.txt b/webapp/static/robots.txt
deleted file mode 100644
index c033917..0000000
--- a/webapp/static/robots.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Directions for web crawlers.
-# See http://www.robotstxt.org/wc/norobots.html.
-
-User-agent: HTTrack
-User-agent: puf
-User-agent: MSIECrawler
-User-agent: Nutch
-Disallow: /
diff --git a/webapp/static/script.js b/webapp/static/script.js
deleted file mode 100644
index 6d550c9..0000000
--- a/webapp/static/script.js
+++ /dev/null
@@ -1,2821 +0,0 @@
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Generic helpers
-
-/**
- * Create a new XMLHttpRequest in a cross-browser-compatible way.
- * @return XMLHttpRequest object
- */
-function M_getXMLHttpRequest() {
-  try {
-    return new XMLHttpRequest();
-  } catch (e) { }
-
-  try {
-    return new ActiveXObject("Msxml2.XMLHTTP");
-  } catch (e) { }
-
-  try {
-    return new ActiveXObject("Microsoft.XMLHTTP");
-  } catch (e) { }
-
-  return null;
-}
-
-/**
- * Finds the element's parent in the DOM tree.
- * @param {Element} element The element whose parent we want to find
- * @return The parent element of the given element
- */
-function M_getParent(element) {
-  if (element.parentNode) {
-    return element.parentNode;
-  } else if (element.parentElement) {
-    // IE compatibility. Why follow standards when you can make up your own?
-    return element.parentElement;
-  }
-  return null;
-}
-
-/**
- * Finds the event's target in a way that works on all browsers.
- * @param {Event} e The event object whose target we want to find
- * @return The element receiving the event
- */
-function M_getEventTarget(e) {
-  var src = e.srcElement ? e.srcElement : e.target;
-  return src;
-}
-
-/**
- * Function to determine if we are in a KHTML-based browser(Konq/Safari).
- * @return Boolean of whether we are in a KHTML browser
- */
-function M_isKHTML() {
-  var agt = navigator.userAgent.toLowerCase();
-  return (agt.indexOf("safari") != -1) || (agt.indexOf("khtml") != -1);
-}
-
-/**
- * Function to determine if we are running in an IE browser.
- * @return Boolean of whether we are running in IE
- */
-function M_isIE() {
-  return (navigator.userAgent.toLowerCase().indexOf("msie") != -1) &&
-         !window.opera;
-}
-
-/**
- * Stop the event bubbling in a browser-independent way. Sometimes required
- * when it is not easy to return true when an event is handled.
- * @param {Window} win The window in which this event is happening
- * @param {Event} e The event that we want to cancel
- */
-function M_stopBubble(win, e) {
-  if (!e) {
-    e = win.event;
-  }
-  e.cancelBubble = true;
-  if (e.stopPropagation) {
-    e.stopPropagation();
-  }
-}
-
-/**
- * Return distance in pixels from the top of the document to the given element.
- * @param {Element} element The element whose offset we want to find
- * @return Integer value of the height of the element from the top
- */
-function M_getPageOffsetTop(element) {
-  var y = element.offsetTop;
-  if (element.offsetParent != null) {
-    y += M_getPageOffsetTop(element.offsetParent);
-  }
-  return y;
-}
-
-/**
- * Return distance in pixels of the given element from the left of the document.
- * @param {Element} element The element whose offset we want to find
- * @return Integer value of the horizontal position of the element
- */
-function M_getPageOffsetLeft(element) {
-  var x = element.offsetLeft;
-  if (element.offsetParent != null) {
-    x += M_getPageOffsetLeft(element.offsetParent);
-  }
-  return x;
-}
-
-/**
- * Find the height of the window viewport.
- * @param {Window} win The window whose viewport we would like to measure
- * @return Integer value of the height of the given window
- */
-function M_getWindowHeight(win) {
-  return M_getWindowPropertyByBrowser_(win, M_getWindowHeightGetters_);
-}
-
-/**
- * Find the vertical scroll position of the given window.
- * @param {Window} win The window whose scroll position we want to find
- * @return Integer value of the scroll position of the given window
- */
-function M_getScrollTop(win) {
-  return M_getWindowPropertyByBrowser_(win, M_getScrollTopGetters_);
-}
-
-/**
- * Scroll the target element into view at 1/3rd of the window height only if
- * the scrolling direction matches the direction that was asked for.
- * @param {Window} win The window in which the element resides
- * @param {Element} element The element that we want to bring into view
- * @param {Integer} direction Positive for scroll down, negative for scroll up
- */
-function M_scrollIntoView(win, element, direction) {
-  var elTop = M_getPageOffsetTop(element);
-  var winHeight = M_getWindowHeight(win);
-  var targetScroll = elTop - winHeight / 3;
-  var scrollTop = M_getScrollTop(win);
-
-  if ((direction > 0 && scrollTop < targetScroll) ||
-      (direction < 0 && scrollTop > targetScroll)) {
-    win.scrollTo(M_getPageOffsetLeft(element), targetScroll);
-  }
-}
-
-/**
- * Returns whether the element is visible.
- * @param {Window} win The window that the element resides in
- * @param {Element} element The element whose visibility we want to determine
- * @return Boolean of whether the element is visible in the window or not
- */
-function M_isElementVisible(win, element) {
-  var elTop = M_getPageOffsetTop(element);
-  var winHeight = M_getWindowHeight(win);
-  var winTop = M_getScrollTop(win);
-  if (elTop < winTop || elTop > winTop + winHeight) {
-    return false;
-  }
-  return true;
-}
-
-// Cross-browser compatibility quirks and methodology borrowed from
-// common.js
-
-var M_getWindowHeightGetters_ = {
-  ieQuirks_: function(win) {
-    return win.document.body.clientHeight;
-  },
-  ieStandards_: function(win) {
-    return win.document.documentElement.clientHeight;
-  },
-  dom_: function(win) {
-    return win.innerHeight;
-  }
-};
-
-var M_getScrollTopGetters_ = {
-  ieQuirks_: function(win) {
-    return win.document.body.scrollTop;
-  },
-  ieStandards_: function(win) {
-    return win.document.documentElement.scrollTop;
-  },
-  dom_: function(win) {
-    return win.pageYOffset;
-  }
-};
-
-/**
- * Slightly modified from common.js: Konqueror has the CSS1Compat property
- * but requires the standard DOM functionlity, not the IE one.
- */
-function M_getWindowPropertyByBrowser_(win, getters) {
-  try {
-    if (!M_isKHTML() && "compatMode" in win.document &&
-        win.document.compatMode == "CSS1Compat") {
-      return getters.ieStandards_(win);
-    } else if (M_isIE()) {
-      return getters.ieQuirks_(win);
-    }
-  } catch (e) {
-    // Ignore for now and fall back to DOM method
-  }
-
-  return getters.dom_(win);
-}
-
-// Global search box magic (global.html)
-
-/**
- * Handle the onblur action of the search box, replacing it with greyed out
- * instruction text when it is empty.
- * @param {Element} element The search box element
- */
-function M_onSearchBlur(element) {
-  var defaultMsg = "Enter a changelist#, user, or group";
-  if (element.value.length == 0 || element.value == defaultMsg) {
-    element.style.color = "gray";
-    element.value = defaultMsg;
-  } else {
-    element.style.color = "";
-  }
-}
-
-/**
- * Handle the onfocus action of the search box, emptying it out if no new text
- * was entered.
- * @param {Element} element The search box element
- */
-function M_onSearchFocus(element) {
-  if (element.style.color == "gray") {
-    element.style.color = "";
-    element.value = "";
-  }
-}
-
-// Inline diffs (changelist.html)
-
-/**
- * Creates an iframe to load the diff in the background and when that's done,
- * calls a function to transfer the contents of the iframe into the current DOM.
- * @param {Integer} suffix The number associated with that diff
- * @param {String} url The URL that the diff should be fetched from
- * @return false (for event bubbling purposes)
- */
-function M_showInlineDiff(suffix, url) {
-  var hide = document.getElementById("hide-" + suffix);
-  var show = document.getElementById("show-" + suffix);
-  var frameDiv = document.getElementById("frameDiv-" + suffix);
-  var dumpDiv = document.getElementById("dumpDiv-" + suffix);
-  var diffTR = document.getElementById("diffTR-" + suffix);
-  var hideAll = document.getElementById("hide-alldiffs");
-  var showAll = document.getElementById("show-alldiffs");
-
-  /* Twiddle the "show/hide all diffs" link */
-  if (hide.style.display != "") {
-    M_CL_hiddenInlineDiffCount -= 1;
-    if (M_CL_hiddenInlineDiffCount == M_CL_maxHiddenInlineDiffCount) {
-      showAll.style.display = "inline";
-      hideAll.style.display = "none";
-    } else {
-      showAll.style.display = "none";
-      hideAll.style.display = "inline";
-    }
-  }
-
-  hide.style.display = "";
-  show.style.display = "none";
-  dumpDiv.style.display = "block"; // XXX why not ""?
-  diffTR.style.display = "";
-  if (!frameDiv.innerHTML) {
-    if (M_isKHTML()) {
-      frameDiv.style.display = "block"; // XXX why not ""?
-    }
-    frameDiv.innerHTML = "<iframe src='" + url + "'" +
-    " onload='M_dumpInlineDiffContent(this, \"" + suffix + "\")'"+
-    "height=1>your browser does not support iframes!</iframe>";
-  }
-  return false;
-}
-
-/**
- * Hides the diff that was retrieved with M_showInlineDiff.
- * @param {Integer} suffix The number associated with the diff we want to hide
- */
-function M_hideInlineDiff(suffix) {
-  var hide = document.getElementById("hide-" + suffix);
-  var show = document.getElementById("show-" + suffix);
-  var dumpDiv = document.getElementById("dumpDiv-" + suffix);
-  var diffTR = document.getElementById("diffTR-" + suffix);
-  var hideAll = document.getElementById("hide-alldiffs");
-  var showAll = document.getElementById("show-alldiffs");
-
-  /* Twiddle the "show/hide all diffs" link */
-  if (hide.style.display != "none") {
-    M_CL_hiddenInlineDiffCount += 1;
-    if (M_CL_hiddenInlineDiffCount == M_CL_maxHiddenInlineDiffCount) {
-      showAll.style.display = "inline";
-      hideAll.style.display = "none";
-    } else {
-      showAll.style.display = "none";
-      hideAll.style.display = "inline";
-    }
-  }
-
-  hide.style.display = "none";
-  show.style.display = "inline";
-  diffTR.style.display = "none";
-  dumpDiv.style.display = "none";
-  return false;
-}
-
-/**
- * Dumps the content of the given iframe into the appropriate div in order
- * for the diff to be displayed.
- * @param {Element} iframe The IFRAME that contains the diff data
- * @param {Integer} suffix The number associated with the diff
- */
-function M_dumpInlineDiffContent(iframe, suffix) {
-  var dumpDiv = document.getElementById("dumpDiv-" + suffix);
-  dumpDiv.style.display = "block"; // XXX why not ""?
-  dumpDiv.innerHTML = iframe.contentWindow.document.body.innerHTML;
-  // TODO: The following should work on all browsers instead of the
-  // innerHTML hack above. At this point I don't remember what the exact
-  // problem was, but it didn't work for some reason.
-  // dumpDiv.appendChild(iframe.contentWindow.document.body);
-  if (M_isKHTML()) {
-    var frameDiv = document.getElementById("frameDiv-" + suffix);
-    frameDiv.style.display = "none";
-  }
-}
-
-/**
- * Goes through all the diffs and triggers the onclick action on them which
- * should start the mechanism for displaying them.
- * @param {Integer} num The number of diffs to display (0-indexed)
- */
-function M_showAllDiffs(num) {
-  for (var i = 0; i < num; i++) {
-    var link = document.getElementById('show-' + i);
-    // Since the user may not have JS, the template only shows the diff inline
-    // for the onclick action, not the href. In order to activate it, we must
-    // call the link's onclick action.
-    if (link.className.indexOf("reverted") == -1) {
-      link.onclick();
-    }
-  }
-}
-
-/**
- * Goes through all the diffs and hides them by triggering the hide link.
- * @param {Integer} num The number of diffs to hide (0-indexed)
- */
-function M_hideAllDiffs(num) {
-  for (var i = 0; i < num; i++) {
-    var link = document.getElementById('hide-' + i);
-    // If the user tries to hide, that means they have JS, which in turn means
-    // that we can just set href in the href of the hide link.
-    link.onclick();
-  }
-}
-
-// Inline comment submission forms (changelist.html, file.html)
-
-/**
- * Changes the elements display style to "" which renders it visible.
- * @param {String} id The id of the target element
- */
-function M_showElement(id) {
-  var elt = document.getElementById(id);
-  if (elt) elt.style.display = "";
-}
-
-/**
- * Changes the elements display style to "none" which renders it invisible.
- * @param {String} id The id of the target element
- */
-function M_hideElement(id) {
-  var elt = document.getElementById(id);
-  if (elt) elt.style.display = "none";
-}
-
-/**
- * Toggle the visibility of a section. The little indicator triangle will also
- * be toggled.
- * @param {String} id The id of the target element
- */
-var isSectionOpen = new Array();
-function M_toggleSection(id) {
-  var sectionStyle = document.getElementById(id).style;
-  var pointerStyle = document.getElementById(id + "-pointer").style;
-
-  if (sectionStyle.display == "none") {
-    sectionStyle.display = "";
-    pointerStyle.backgroundImage = "url('/static/opentriangle.gif')";
-    isSectionOpen[id] = true;
-  } else {
-    sectionStyle.display = "none";
-    pointerStyle.backgroundImage = "url('/static/closedtriangle.gif')";
-    isSectionOpen[id] = false;
-  }
-}
-
-var patchSetState = new Array();
-function M_onPatchSetReady() {
-  if (http_request.readyState != 4)
-    return;
-
-  var id = http_request.div_id;
-  var s = document.getElementById(id);
-  if (http_request.status == 200) {
-	patchSetState[id] = 1;
-    s.innerHTML = http_request.responseText;
-  } else {
-	patchSetState[id] = -1;
-    s.innerHTML = '<div style="color:red">'
-	  + 'Could not load the patchset.<br />'
-	  + http_request.status
-	  + '</div>';
-  }
-}
-
-/**
- * Toggle the visiblity of a PatchSet section.
- * @param {String} change_id the id of the change.
- * @param {String} patchset_id the id of the patchset.
- */
-function M_togglePatchSetSection(change_id, patchset_id) {
-  var id = 'ps-' + patchset_id;
-  M_toggleSection(id);
-  if (isSectionOpen[id]) {
-    if (patchSetState[id] == 1)
-      return;
-
-    var s = document.getElementById(id);
-    http_request = M_getXMLHttpRequest();
-    if (!http_request) {
-      patchSetState[id] = -1;
-      s.innerHTML = '<div style="color:red">Could not load.</div>';
-      return;
-    }
-
-    s.innerHTML = '<div>Loading...</div>';
-    var u = '/' + change_id + '/ajax_patchset/' + patchset_id;
-    http_request.open('GET', u, true);
-    http_request.onreadystatechange = M_onPatchSetReady;
-    http_request.div_id = id;
-    http_request.send(null);
-  }
-}
-
-function M_onPagedReady () {
-  if (http_request.readyState != 4)
-    return;
-
-  var section = http_request.section_name;
-  var links = document.getElementById('paged-' + section + '-links');
-  var progs = document.getElementById('paged-' + section + '-progress');
-
-  if (http_request.status != 200) {
-    links.style.display = '';
-    progs.style.display = 'none';
-    return;
-  }
-
-  var t = document.getElementById(http_request.table_id);
-  var last;
-  for (var i = 0; i < t.rows.length;) {
-    var r = t.rows[i];
-    if (r.className.indexOf('pagedrow-'+section) >= 0) {
-      t.deleteRow(i);
-      last = t.rows[i];
-    } else {
-      i++;
-    }
-  }
-
-  var text = http_request.responseText;
-  var lf = text.indexOf('\n');
-  var info = text.substring(0,lf).split(',');
-
-  var tmp = document.createElement('table');
-  tmp.innerHTML = text.substring(lf + 1);
-  while (0 < tmp.rows.length) {
-    if (last)
-      last.parentNode.insertBefore(tmp.rows[0], last);
-    else
-      t.tBodies[0].appendChild(tmp.rows[0]);
-  }
-
-  var opos = document.getElementById('paged-'+section+'-opos');
-  var oend = document.getElementById('paged-'+section+'-oend');
-
-  var opre = document.getElementById('paged-'+section+'-opre');
-  var onex = document.getElementById('paged-'+section+'-onex');
-
-  var prev = document.getElementById('paged-'+section+'-prev');
-  var next = document.getElementById('paged-'+section+'-next');
-
-  opos.innerHTML = info[0];
-  oend.innerHTML = info[1];
-  opre.innerHTML = info[2];
-  onex.innerHTML = info[3];
-
-  prev.style.display = info[2]!='' && parseInt(info[2]) ? '' : 'none';
-  next.style.display = info[3]!='' && parseInt(info[3]) ? '' : 'none';
-
-  links.style.display = '';
-  progs.style.display = 'none';
-
-  if (http_request.after_update)
-    http_request.after_update();
-}
-
-function M_PagedExec(base_url, section, table_id, offset, after) {
-  http_request = M_getXMLHttpRequest();
-  if (!http_request)
-    return;
-
-  var links = document.getElementById('paged-' + section + '-links');
-  var progs = document.getElementById('paged-' + section + '-progress');
-
-  links.style.display = 'none';
-  progs.style.display = '';
-
-  http_request.open('GET', base_url + '/' + offset, true);
-  http_request.onreadystatechange = M_onPagedReady;
-  http_request.section_name = section;
-  http_request.table_id = table_id;
-  http_request.after_update = after;
-  http_request.send(null);
-}
-
-function M_PagedPrev(base_url, section, table_id, after) {
-  var p = document.getElementById('paged-' + section + '-opre');
-  M_PagedExec(base_url, section, table_id, p.textContent, after);
-}
-
-function M_PagedNext(base_url, section, table_id, after) {
-  var p = document.getElementById('paged-' + section + '-onex');
-  M_PagedExec(base_url, section, table_id, p.textContent, after);
-}
-
-/**
- * Toggle the visibility of the "Quick LGTM" link on the changelist page.
- * @param {String} id The id of the target element
- */
-function M_toggleQuickLGTM(id) {
-  M_toggleSection(id);
-  window.scrollTo(0, document.body.offsetHeight);
-}
-
-// Comment expand/collapse
-
-/**
- * Toggles whether the specified changelist comment is expanded/collapsed.
- * @param {Integer} cid The comment id, 0-indexed
- */
-function M_switchChangelistComment(cid) {
-  M_switchCommentCommon_('cl', String(cid));
-}
-
-/**
- * Toggles whether the specified file comment is expanded/collapsed.
- * @param {Integer} cid The comment id, 0-indexed
- */
-function M_switchFileComment(cid) {
-  M_switchCommentCommon_('file', String(cid));
-}
-
-/**
- * Toggles whether the specified inline comment is expanded/collapsed.
- * @param {Integer} cid The comment id, 0-indexed
- * @param {Integer} lineno The lineno associated with the comment
- * @param {String} side The side (a/b) associated with the comment
- */
-function M_switchInlineComment(cid, lineno, side) {
-  M_switchCommentCommon_('inline', String(cid) + "-" + lineno + "-" + side);
-}
-
-/**
- * Toggles whether the specified comment is expanded/collapsed on
- * comment_form.html.
- * @param {Integer} cid The comment id, 0-indexed
- */
-function M_switchReviewComment(cid) {
-  M_switchCommentCommon_('cl', String(cid));
-}
-
-/**
- * Toggle whether a moved_out region is expanded/collapsed.
- * @param {Integer} start_line the line number of the first line to toggle
- * @param {Integer} end_line the line number of the first line not to toggle
- * We toggle all lines in [first_line, end_line).
- */
-function M_switchMoveOut(start_line, end_line) {
-  for (var x = start_line; x < end_line; x++) {
-    var regionname = "move_out-" + x;
-    var region = document.getElementById(regionname);
-    if (region.style.display == "none") {
-      region.style.display = "";
-    } else {
-      region.style.display = "none";
-    }
-  }
-  hookState.gotoHook(0);
-}
-
-/**
- * Used to expand all comments, hiding the preview and showing the comment.
- * @param {String} prefix The level of the comment -- one of
- *                        ('cl', 'file', 'inline')
- * @param {Integer} num_comments The number of comments to show
- */
-function M_showAllComments(prefix, num_comments) {
-  for (var i = 0; i < num_comments; i++) {
-    document.getElementById(prefix + "-preview-" + i).style.visibility =
-        "hidden";
-    document.getElementById(prefix + "-comment-" + i).style.display = "";
-  }
-}
-
-/**
- * Used to collpase all comments, showing the preview and hiding the comment.
- * @param {String} prefix The level of the comment -- one of
- *                        ('cl', 'file', 'inline')
- * @param {Integer} num_comments The number of comments to hide
- */
-function M_hideAllComments(prefix, num_comments) {
-  for (var i = 0; i < num_comments; i++) {
-    document.getElementById(prefix + "-preview-" + i).style.visibility =
-        "visible";
-    document.getElementById(prefix + "-comment-" + i).style.display = "none";
-  }
-}
-
-// Common methods for comment handling (changelist.html, file.html,
-// comment_form.html)
-
-/**
- * Toggles whether the specified comment is expanded/collapsed. Works in
- * the review form.
- * @param {String} prefix The prefix of the comment element name.
- * @param {String} suffix The suffix of the comment element name.
- */
-function M_switchCommentCommon_(prefix, suffix) {
-  prefix && (prefix +=  '-');
-  suffix && (suffix =  '-' + suffix);
-  var previewSpan = document.getElementById(prefix + 'preview' + suffix);
-  var commentDiv = document.getElementById(prefix + 'comment' + suffix);
-  if (!previewSpan || !commentDiv) {
-    alert('Failed to find comment element: ' +
-          prefix + 'comment' + suffix + '. Please send ' +
-          'this message with the URL to the app owner');
-    return;
-  }
-  if (previewSpan.style.visibility == 'hidden') {
-    previewSpan.style.visibility = 'visible';
-    commentDiv.style.display = 'none';
-  } else {
-    previewSpan.style.visibility = 'hidden';
-    commentDiv.style.display = '';
-  }
-}
-
-/**
- * Expands all inline comments.
- */
-function M_expandAllInlineComments() {
-  M_showAllInlineComments();
-  var comments = document.getElementsByName("inline-comment");
-  var commentsLength = comments.length;
-  for (var i = 0; i < commentsLength; i++) {
-    comments[i].style.display = "";
-  }
-  var previews = document.getElementsByName("inline-preview");
-  var previewsLength = previews.length;
-  for (var i = 0; i < previewsLength; i++) {
-    previews[i].style.display = "none";
-  }
-}
-
-/**
- * Collapses all inline comments.
- */
-function M_collapseAllInlineComments() {
-  M_showAllInlineComments();
-  var comments = document.getElementsByName("inline-comment");
-  var commentsLength = comments.length;
-  for (var i = 0; i < commentsLength; i++) {
-    comments[i].style.display = "none";
-  }
-  var previews = document.getElementsByName("inline-preview");
-  var previewsLength = previews.length;
-  for (var i = 0; i < previewsLength; i++) {
-    previews[i].style.display = "";
-  }
-}
-
-// Non-inline comment actions
-
-/**
- * Sets up a reply form for a given comment (non-inline).
- * @param {String} author The author of the comment being replied to
- * @param {String} written_time The formatted time when that comment was written
- * @param {String} ccs A string containing the ccs to default to
- * @param {Integer} cid The number of the comment being replied to, so that the
- *                      form may be placed in the appropriate location
- * @param {String} prefix The level of the comment -- one of
- *                        ('cl', 'file', 'inline')
- * @param {Integer} opt_lineno (optional) The line number the comment should be
- *                                        attached to
- * @param {String} opt_snapshot (optional) The snapshot ID of the comment being
- *                                         replied to
- */
-function M_replyToComment(author, written_time, ccs, cid, prefix, opt_lineno,
-                          opt_snapshot) {
-  var form = document.getElementById("comment-form-" + cid);
-  if (!form) {
-    form = document.getElementById("dareplyform");
-    if (!form) {
-      form = document.getElementById("daform"); // XXX for file.html
-    }
-    form = form.cloneNode(true);
-    form.name = form.id = "comment-form-" + cid;
-    M_createResizer_(form, cid);
-    document.getElementById(prefix + "-comment-" + cid).appendChild(form);
-  }
-  form.style.display = "";
-  form.reply_to.value = cid;
-  form.ccs.value = ccs;
-  if (typeof opt_lineno != 'undefined' && typeof opt_snapshot != 'undefined') {
-    form.lineno.value = opt_lineno;
-    form.snapshot.value = opt_snapshot;
-  }
-  form.text.value = "On " + written_time + ", " + author + " wrote:\n";
-  var divs = document.getElementsByName("comment-text-" + cid);
-  M_setValueFromDivs(divs, form.text);
-  form.text.value += "\n";
-  form.text.focus();
-}
-
-
-/**
-/* TODO(andi): docstring
- */
-function M_replyToMessage(message_id, written_time, author) {
-  var form = document.getElementById('message-reply-form');
-  form = form.cloneNode(true);
-  if (typeof form.message == 'undefined') {
-    var form_template = document.getElementById('message-reply-form');
-    form = document.createElement('form');
-    form.setAttribute('method', 'POST');
-    form.setAttribute('action', form_template.getAttribute('action'));
-    form.innerHTML = form_template.innerHTML;
-  }
-  container = document.getElementById('message-reply-'+message_id);
-  container.appendChild(form);
-  container.style.display = '';
-  form.discard.onclick = function () {
-    document.getElementById('message-reply-href-'+message_id).style.display = "";
-    document.getElementById('message-reply-'+message_id).innerHTML = "";
-    document.getElementById('message-reply-'+message_id).style.display = "none";
-  }
-  form.send_mail.id = 'message-reply-send-mail-'+message_id;
-  var lbl = document.getElementById(form.send_mail.id).nextSibling.nextSibling;
-  lbl.setAttribute('for', form.send_mail.id);
-  form.message.value = "On " + written_time + ", " + author + " wrote:\n";
-  var divs = document.getElementsByName("cl-message-" + message_id);
-  M_setValueFromDivs(divs, form.message);
-  form.message.value += "\n";
-  form.message.focus();
-  M_addTextResizer_(form);
-  document.getElementById('message-reply-href-'+message_id).style.display = "none";
-}
-
-
-/**
- * Edits a non-inline draft comment.
- * @param {Integer} cid The number of the comment to be edited
- */
-function M_editComment(cid) {
-  var suffix = String(cid);
-  var form = document.getElementById("comment-form-" + suffix);
-  if (!form) {
-    alert("Form " + suffix + " does not exist. Please send this message " +
-          "with the URL to the app owner");
-    return false;
-  }
-  var texts = document.getElementsByName("comment-text-" + suffix);
-  var textsLength = texts.length;
-  for (var i = 0; i < textsLength; i++) {
-    texts[i].style.display = "none";
-  }
-  M_hideElement("edit-link-" + suffix);
-  M_hideElement("undo-link-" + suffix);
-  form.style.display = "";
-  form.text.focus();
-}
-
-/**
- * Used to cancel comment editing, this will revert the text of the comment
- * and hide its form.
- * @param {Element} form The form that contains this comment
- * @param {Integer} cid The number of the comment being hidden
- */
-function M_resetAndHideComment(form, cid) {
-  form.text.blur();
-  form.text.value = form.oldtext.value;
-  form.style.display = "none";
-  var texts = document.getElementsByName("comment-text-" + cid);
-  var textsLength = texts.length;
-  for (var i = 0; i < textsLength; i++) {
-    texts[i].style.display = "";
-  }
-  M_showElement("edit-link-" + cid);
-}
-
-/**
- * Removing a draft comment is the same as setting its text contents to nothing.
- * @param {Element} form The form containing the draft comment to be discarded
- * @return true in order for the form submission to continue
- */
-function M_removeComment(form) {
-  form.text.value = "";
-  return true;
-}
-
-
-// Inline comments (file.html)
-
-/**
- * Helper method to assign an onclick handler to an inline 'Cancel' button.
- * @param {Element} form The form containing the cancel button
- * @param {Function} cancelHandler A function with one 'form' argument
- * @param {Array} opt_handlerParams An array whose first three elements are:
- *   {String} cid The number of the comment
- *   {String} lineno The line number of the comment
- *   {String} side 'a' or 'b'
- */
-function M_assignToCancel_(form, cancelHandler, opt_handlerParams) {
-  var elementsLength = form.elements.length;
-  for (var i = 0; i < elementsLength; ++i) {
-    if (form.elements[i].getAttribute("name") == "cancel") {
-      form.elements[i].onclick = function() {
-        if (typeof opt_handlerParams != "undefined") {
-          var cid = opt_handlerParams[0];
-          var lineno = opt_handlerParams[1];
-          var side = opt_handlerParams[2];
-          cancelHandler(form, cid, lineno, side);
-        } else {
-          cancelHandler(form);
-        }
-      };
-      return;
-    }
-  }
-}
-
-/**
- * Helper method to assign an onclick handler to an inline '[+]' link.
- * @param {Element} form The form containing the resizer
- * @param {String} suffix The suffix of the comment form id: lineno-side
- */
-function M_createResizer_(form, suffix) {
-  if (!form.hasResizer) {
-    var resizer = document.getElementById("resizer").cloneNode(true);
-    resizer.onclick = function() {
-      var form = document.getElementById("comment-form-" + suffix);
-      if (!form) return;
-      form.text.rows += 5;
-      form.text.focus();
-    };
-
-    // Using form.elements would be far more concise, but this hack is
-    // necessary because Konqueror/Safari don't populate form.elements at this
-    // point if the form is cloned.
-    var formContainer = null;
-    for (formContainer = form.firstChild; formContainer;
-         formContainer = formContainer.nextSibling) {
-      if (formContainer.getAttribute &&
-          formContainer.getAttribute("name") == "form-container") break;
-    }
-    if (!formContainer) return;
-
-    for (var n = formContainer.firstChild; n; n = n.nextSibling) {
-      if (n.nodeName == "TEXTAREA") {
-        formContainer.insertBefore(resizer, n.nextSibling);
-        resizer.style.display = "";
-      }
-    }
-    form.hasResizer = true;
-  }
-}
-
-/**
- * Like M_createResizer_(), but updates the form's first textarea field.
- * This is assumed not to be the last field.
- * @param {Element} form The form whose textarea field to update.
- */
-function M_addTextResizer_(form) {
-  var elementsLength = form.elements.length;
-  for (var i = 0; i < elementsLength; ++i) {
-    var node = form.elements[i];
-    if (node.nodeName == "TEXTAREA") {
-      var parent = M_getParent(node);
-      var resizer = document.getElementById("resizer").cloneNode(true);
-      var next = node.nextSibling;
-      parent.insertBefore(resizer, next);
-      resizer.onclick = function() {
-	node.rows += 5;
-	node.focus();
-      };
-      resizer.style.display = "";
-      if (next && next.className == "resizer") { // Remove old resizer.
-	parent.removeChild(next);
-      }
-      break;
-    }
-  }
-}
-
-/**
- * Helper method to assign an onclick handler to an inline 'Save' button.
- * @param {Element} form The form containing the save button
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- */
-function M_assignToSave_(form, cid, lineno, side) {
-  var elementsLength = form.elements.length;
-  for (var i = 0; i < elementsLength; ++i) {
-    if (form.elements[i].getAttribute("name") == "save") {
-      form.elements[i].onclick = function() {
-        return M_submitInlineComment(form, cid, lineno, side);
-      };
-      return;
-    }
-  }
-}
-
-/**
- * Creates an inline comment at the given line number and side of the diff.
- * @param {String} lineno The line number of the new comment
- * @param {String} side Either 'a' or 'b' signifying the side of the diff
- */
-function M_createInlineComment(lineno, side) {
-  // The first field of the suffix is typically the cid, but we choose '-1'
-  // here since the backend has not assigned the new comment a cid yet.
-  var suffix = "-1-" + lineno + "-" + side;
-  var form = document.getElementById("comment-form-" + suffix);
-  if (!form) {
-    form = document.getElementById("dainlineform").cloneNode(true);
-    if (typeof form.save == "undefined") {
-      // For Opera form elements of the cloned form aren't accessible
-      // by name but using innerHTML works.
-      form = document.createElement("form");
-      form.innerHTML = document.getElementById("dainlineform").innerHTML;
-    }
-    form.name = form.id = "comment-form-" + suffix;
-    M_assignToCancel_(form, M_removeTempInlineComment);
-    M_createResizer_(form, suffix);
-    M_assignToSave_(form, "-1", lineno, side);
-    // There is a "text" node before the "div" node
-    form.childNodes[1].setAttribute("name", "comment-border");
-    var id = (side == 'a' ? "old" : "new") + "-line-" + lineno;
-    var td = document.getElementById(id);
-    td.appendChild(form);
-    var tr = M_getParent(td);
-    tr.setAttribute("name", "hook");
-    hookState.updateHooks();
-  }
-  form.style.display = "";
-  form.lineno.value = lineno;
-  if (side == 'b') {
-    form.snapshot.value = new_snapshot;
-  } else {
-    form.snapshot.value = old_snapshot;
-  }
-  form.side.value = side;
-  var savedDraftKey = "new-" + form.lineno.value + "-" + form.snapshot.value;
-  M_restoreDraftText_(savedDraftKey, form);
-  form.text.focus();
-  hookState.gotoHook(0);
-}
-
-/**
- * Removes a never-submitted 'Reply' inline comment from existence (created via
- * M_replyToInlineComment).
- * @param {Element} form The form that contains the comment to be removed
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- */
-function M_removeTempReplyInlineComment(form, cid, lineno, side) {
-  var divInlineComment = M_getParent(form);
-  var divCommentBorder = M_getParent(divInlineComment);
-  var td = M_getParent(divCommentBorder);
-  var tr = M_getParent(td);
-  form.cancel.blur();
-  // The order of the subsequent lines is sensitive to browser compatibility.
-  var suffix = cid + "-" + lineno + "-" + side;
-  M_saveDraftText_("reply-" + suffix, form.text.value);
-  divInlineComment.removeChild(form);
-  M_updateRowHook(tr);
-}
-
-/**
- * Removes a never-submitted inline comment from existence (created via
- * M_createInlineComment). Saves the existing text for the next time a draft is
- * created on the same line.
- * @param {Element} form The form that contains the comment to be removed
- */
-function M_removeTempInlineComment(form) {
-  var td = M_getParent(form);
-  var tr = M_getParent(td);
-  // The order of the subsequent lines is sensitive to browser compatibility.
-  var savedDraftKey = "new-" + form.lineno.value + "-" + form.snapshot.value;
-  M_saveDraftText_(savedDraftKey, form.text.value);
-  form.cancel.blur();
-  td.removeChild(form);
-  M_updateRowHook(tr);
-}
-
-/**
- * Helper to edit a draft inline comment.
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- * @return {Element} The form that contains the comment
- */
-function M_editInlineCommentCommon_(cid, lineno, side) {
-  var suffix = cid + "-" + lineno + "-" + side;
-  var form = document.getElementById("comment-form-" + suffix);
-  if (!form) {
-    alert("Form " + suffix + " does not exist. Please send this message " +
-          "with the URL to the app owner");
-    return false;
-  }
-  M_createResizer_(form, suffix);
-  var texts = document.getElementsByName("comment-text-" + suffix);
-  var textsLength = texts.length;
-  for (var i = 0; i < textsLength; i++) {
-    texts[i].style.display = "none";
-  }
-  M_hideElement("edit-link-" + suffix);
-  M_hideElement("undo-link-" + suffix);
-  form.style.display = "";
-  var parent = document.getElementById("inline-comment-" + suffix);
-  if (parent && parent.style.display == "none") {
-    M_switchInlineComment(cid, lineno, side);
-  }
-  form.text.focus();
-  hookState.gotoHook(0);
-  return form;
-}
-
-/**
- * Edits a draft inline comment.
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- */
-function M_editInlineComment(cid, lineno, side) {
-  M_editInlineCommentCommon_(cid, lineno, side);
-}
-
-/**
- * Restores a canceled draft inline comment for editing.
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- */
-function M_restoreEditInlineComment(cid, lineno, side) {
-  var form = M_editInlineCommentCommon_(cid, lineno, side);
-  var savedDraftKey = "edit-" + cid + "-" + lineno + "-" + side;
-  M_restoreDraftText_(savedDraftKey, form, false);
-}
-
-/**
- * Helper to reply to an inline comment.
- * @param {String} author The author of the comment being replied to
- * @param {String} written_time The formatted time when that comment was written
- * @param {String} ccs A string containing the ccs to default to
- * @param {String} cid The number of the comment being replied to, so that the
- *                     form may be placed in the appropriate location
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- * @param {String} opt_reply The response to pre-fill with.
- * @param {Boolean} opt_submit This will submit the comment right after
- *                             creation. Only makes sense when opt_reply is set
- * @return {Element} The form that contains the comment
- */
-function M_replyToInlineCommentCommon_(author, written_time, cid, lineno,
-                                       side, opt_reply, opt_submit) {
-  var suffix = cid + "-" + lineno + "-" + side;
-  var form = document.getElementById("comment-form-" + suffix);
-  if (!form) {
-    form = document.getElementById("dainlineform").cloneNode(true);
-    form.name = form.id = "comment-form-" + suffix;
-    M_assignToCancel_(form, M_removeTempReplyInlineComment,
-                      [cid, lineno, side]);
-    M_assignToSave_(form, cid, lineno, side);
-    M_createResizer_(form, suffix);
-    var parent = document.getElementById("inline-comment-" + suffix);
-    if (parent.style.display == "none") {
-      M_switchInlineComment(cid, lineno, side);
-    }
-    parent.appendChild(form);
-  }
-  form.style.display = "";
-  form.lineno.value = lineno;
-  if (side == 'b') {
-    form.snapshot.value = new_snapshot;
-  } else {
-    form.snapshot.value = old_snapshot;
-  }
-  form.side.value = side;
-  if (!M_restoreDraftText_("reply-" + suffix, form, false) ||
-      typeof opt_reply != "undefined") {
-    form.text.value = "On " + written_time + ", " + author + " wrote:\n";
-    var divs = document.getElementsByName("comment-text-" + suffix);
-    M_setValueFromDivs(divs, form.text);
-    form.text.value += "\n";
-    if (typeof opt_reply != "undefined") {
-      form.text.value += opt_reply;
-    }
-    if (opt_submit) {
-      M_submitInlineComment(form, cid, lineno, side);
-      return;
-    }
-  }
-  form.text.focus();
-  hookState.gotoHook(0);
-  return form;
-}
-
-/**
- * Replies to an inline comment.
- * @param {String} author The author of the comment being replied to
- * @param {String} written_time The formatted time when that comment was written
- * @param {String} ccs A string containing the ccs to default to
- * @param {String} cid The number of the comment being replied to, so that the
- *                     form may be placed in the appropriate location
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- * @param {String} opt_reply The response to pre-fill with.
- * @param {Boolean} opt_submit This will submit the comment right after
- *                             creation. Only makes sense when opt_reply is set
- */
-function M_replyToInlineComment(author, written_time, cid, lineno, side,
-                                opt_reply, opt_submit) {
-  M_replyToInlineCommentCommon_(author, written_time, cid, lineno, side,
-                                opt_reply, opt_submit);
-}
-
-/**
- * Restores a canceled draft inline comment for reply.
- * @param {String} author The author of the comment being replied to
- * @param {String} written_time The formatted time when that comment was written
- * @param {String} ccs A string containing the ccs to default to
- * @param {String} cid The number of the comment being replied to, so that the
- *                     form may be placed in the appropriate location
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- */
-function M_restoreReplyInlineComment(author, written_time, cid, lineno,
-                                     side) {
-  var form = M_replyToInlineCommentCommon_(author, written_time, cid,
-                                           lineno, side);
-  var savedDraftKey = "reply-" + cid + "-" + lineno + "-" + side;
-  M_restoreDraftText_(savedDraftKey, form, false);
-}
-
-/**
- * Updates an inline comment td with the given HTML.
- * @param {Element} td The TD that contains the inline comment
- * @param {String} html The text to be put into .innerHTML of the td
- */
-function M_updateInlineComment(td, html) {
-  var tr = M_getParent(td);
-  if (!tr) {
-    alert("TD had no parent. Please notify the app owner.");
-    return;
-  }
-  // The server sends back " " to make things empty, for Safari
-  if (html.length <= 1) {
-    td.innerHTML = "";
-    M_updateRowHook(tr);
-  } else {
-    td.innerHTML = html;
-    tr.name = "hook";
-    hookState.updateHooks();
-  }
-}
-
-/**
- * Updates a comment tr's name, depending on whether there are now comments
- * in it or not. Also updates the hook cache if required. Assumes that the
- * given TR already has name == "hook" and only tries to remove it if all
- * are empty.
- * @param {Element} tr The TR containing the potential comments
- */
-function M_updateRowHook(tr) {
-  if (!(tr && tr.cells)) return;
-  // If all of the TR's cells are empty, remove the hook name
-  var i = 0;
-  var numCells = tr.cells.length;
-  for (i = 0; i < numCells; i++) {
-    if (tr.cells[i].innerHTML != "") {
-      break;
-    }
-  }
-  if (i == numCells) {
-    tr.setAttribute("name",  "");
-    hookState.updateHooks();
-  }
-  hookState.gotoHook(0);
-}
-
-/**
- * Submits an inline comment and updates the DOM in AJAX fashion with the new
- * comment data for that line.
- * @param {Element} form The form containing the submitting comment
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- * @return true if AJAX fails and the form should be submitted the "old" way,
- *         or false if the form is submitted using AJAX, preventing the regular
- *         form submission from proceeding
- */
-function M_submitInlineComment(form, cid, lineno, side) {
-  var td = null;
-  if (form.side.value == 'a') {
-    td = document.getElementById("old-line-" + form.lineno.value);
-  } else {
-    td = document.getElementById("new-line-" + form.lineno.value);
-  }
-  if (!td) {
-    alert("Could not find snapshot " + form.snapshot.value + "! Please let " +
-          "the app owner know.");
-    return true;
-  }
-
-  // Clear saved draft state for affected new, edited, and replied comments
-  if (typeof cid != "undefined" && typeof lineno != "undefined" && side) {
-    var suffix = cid + "-" + lineno + "-" + side;
-    M_clearDraftText_("new-" + lineno + "-" + form.snapshot.value);
-    M_clearDraftText_("edit-" + suffix);
-    M_clearDraftText_("reply-" + suffix);
-    M_hideElement("undo-link-" + suffix);
-  }
-
-  var httpreq = M_getXMLHttpRequest();
-  if (!httpreq) {
-    // No AJAX. Oh well. Go ahead and submit this the old way.
-    return true;
-  }
-
-  // Konqueror jumps to a random location for some reason
-  var scrollTop = M_getScrollTop(window);
-
-  var aborted = false;
-
-  reenable_form = function() {
-    form.save.disabled = false;
-    form.cancel.disabled = false;
-    if (form.discard != null) {
-      form.discard.disabled = false;
-    }
-    form.text.disabled = false;
-    form.style.cursor = "auto";
-  };
-
-  // This timeout can potentially race with the request coming back OK. In
-  // general, if it hasn't come back for 60 seconds, it won't ever come back.
-  var httpreq_timeout = setTimeout(function() {
-    aborted = true;
-    httpreq.abort();
-    reenable_form();
-    alert("Comment could not be submitted for 60 seconds. Please ensure " +
-          "connectivity (and that the server is up) and try again.");
-  }, 60000);
-
-  httpreq.onreadystatechange = function () {
-    // Firefox 2.0, at least, runs this with readyState = 4 but all other
-    // fields unset when the timeout aborts the request, against all
-    // documentation.
-    if (httpreq.readyState == 4 && !aborted) {
-      clearTimeout(httpreq_timeout);
-      if (httpreq.status == 200) {
-        M_updateInlineComment(td, httpreq.responseText);
-      } else {
-        reenable_form();
-        alert("An error occurred while trying to submit the comment: " +
-              httpreq.statusText);
-      }
-      if (M_isKHTML()) {
-        window.scrollTo(0, scrollTop);
-      }
-    }
-  }
-  httpreq.open("POST", "/inline_draft", true);
-  httpreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
-  var req = [];
-  var len = form.elements.length;
-  for (var i = 0; i < len; i++) {
-    var element = form.elements[i];
-    if (element.type == "hidden" || element.type == "textarea") {
-      req.push(element.name + "=" + encodeURIComponent(element.value));
-    }
-  }
-  req.push("side=" + side);
-
-  // Disable forever. If this succeeds, then the form will end up getting
-  // rewritten, and if it fails, the page should get a refresh anyways.
-  form.save.blur();
-  form.save.disabled = true;
-  form.cancel.blur();
-  form.cancel.disabled = true;
-  if (form.discard != null) {
-    form.discard.blur();
-    form.discard.disabled = true;
-  }
-  form.text.blur();
-  form.text.disabled = true;
-  form.style.cursor = "wait";
-
-  // Send the request
-  httpreq.send(req.join("&"));
-
-  // No need to resubmit this form.
-  return false;
-}
-
-/**
- * Removes a draft inline comment.
- * @param {Element} form The form that contains the comment to be removed
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- */
-function M_removeInlineComment(form, cid, lineno, side) {
-  // Update state to save the canceled edit text
-  var snapshot = side == "a" ? old_snapshot : new_snapshot;
-  var savedDraftKey = "new-" + lineno + "-" + snapshot;
-  var savedText = form.text.value;
-  form.text.value = "";
-  var ret = M_submitInlineComment(form, cid, lineno, side);
-  M_saveDraftText_(savedDraftKey, savedText);
-  return ret;
-}
-
-/**
- * Combines all the divs from a single comment (generated by multiple buckets)
- * and undoes the escaping work done by Django filters, and inserts the result
- * into a given textarea.
- * @param {Array} divs An array of div elements to be combined
- * @param {Element} text The textarea whose value needs to be updated
- */
-function M_setValueFromDivs(divs, text) {
-  lines = [];
-  var divsLength = divs.length;
-  for (var i = 0; i < divsLength; i++) {
-    lines = lines.concat(divs[i].innerHTML.split("\n"));
-  }
-  for (var i = 0; i < lines.length; i++) {
-    // Undo the <a> tags added by urlize and enliven
-    lines[i] = lines[i].replace(/<a[^>]*>/ig, "");
-    lines[i] = lines[i].replace(/<\/a>/ig, "");
-    // Undo the escape Django filter
-    lines[i] = lines[i].replace(/&gt;/ig, ">");
-    lines[i] = lines[i].replace(/&lt;/ig, "<");
-    lines[i] = lines[i].replace(/&quot;/ig, "\"");
-    lines[i] = lines[i].replace(/&#39;/ig, "'");
-    lines[i] = lines[i].replace(/&amp;/ig, "&"); // Must be last
-    text.value += "> " + lines[i] + "\n";
-  }
-}
-
-/**
- * Undo an edit of a draft inline comment, i.e. discard changes.
- * @param {Element} form The form containing the edits
- * @param {String} cid The number of the comment
- * @param {String} lineno The line number of the comment
- * @param {String} side 'a' or 'b'
- */
-function M_resetAndHideInlineComment(form, cid, lineno, side) {
-  // Update canceled edit state
-  var suffix = cid + "-" + lineno + "-" + side;
-  M_saveDraftText_("edit-" + suffix, form.text.value);
-  if (form.text.value != form.oldtext.value) {
-    M_showElement("undo-link-" + suffix);
-  }
-
-  form.text.blur();
-  form.text.value = form.oldtext.value;
-  form.style.display = "none";
-  var texts = document.getElementsByName("comment-text-" + suffix);
-  var textsLength = texts.length;
-  for (var i = 0; i < textsLength; i++) {
-    texts[i].style.display = "";
-  }
-  M_showElement("edit-link-" + suffix);
-  hookState.gotoHook(0);
-}
-
-/**
- * Toggles whether we display quoted text or not, both for inline and regular
- * comments. Inline comments will have lineno and side defined.
- * @param {String} cid The comment number
- * @param {String} bid The bucket number in that comment
- * @param {String} lineno (optional) Line number of the comment
- * @param {String} side (optional) 'a' or 'b'
- */
-function M_switchQuotedText(cid, bid, lineno, side) {
-  var tmp = ""
-  if (typeof lineno != 'undefined' && typeof side != 'undefined')
-    tmp = "-" + lineno + "-" + side;
-  var div = document.getElementById("comment-text-" + cid + tmp + "-" + bid)
-  if (div.style.display == "none") {
-    div.style.display = "";
-  } else {
-    div.style.display = "none";
-  }
-  if (tmp != "") {
-    hookState.gotoHook(0);
-  }
-}
-
-/**
- * Handler for the double click event in the code table element. Creates a new
- * inline comment for that line of code on the right side of the diff.
- * @param {Event} evt The event object for this double-click event
- */
-function M_handleTableDblClick(evt) {
-  if (!logged_in) {
-    if (!login_warned) {
-      login_warned = true;
-      alert("Please sign in to enter inline comments.");
-    }
-    return;
-  }
-  var evt = evt ? evt : (event ? event : null);
-  var target = M_getEventTarget(evt);
-  if (target.tagName == 'INPUT' || target.tagName == 'TEXTAREA') {
-    return;
-  }
-  while (target != null && target.tagName != 'TD') {
-    target = M_getParent(target);
-  }
-  if (target == null) {
-    return;
-  }
-  var side = null;
-  if (target.id.substr(0, 7) == "newcode") {
-    side = 'b';
-  } else if (target.id.substr(0, 7) == "oldcode") {
-    side = 'a';
-  }
-  if (side != null) {
-    M_createInlineComment(parseInt(target.id.substr(7)), side);
-  }
-}
-
-/**
- * Makes all inline comments visible. This is the default view.
- */
-function M_showAllInlineComments() {
-  var hide = document.getElementById("hide-all-inline");
-  var show = document.getElementById("show-all-inline");
-  hide.style.display = "";
-  var elements = document.getElementsByName("comment-border");
-  var elementsLength = elements.length;
-  for (var i = 0; i < elementsLength; i++) {
-    var tr = M_getParent(M_getParent(elements[i]));
-    tr.style.display = "";
-    tr.name = "hook";
-  }
-  show.style.display = "none";
-  hookState.updateHooks();
-}
-
-/**
- * Hides all inline comments, to make code easier ot read.
- */
-function M_hideAllInlineComments() {
-  var hide = document.getElementById("hide-all-inline");
-  var show = document.getElementById("show-all-inline");
-  show.style.display = "";
-  var elements = document.getElementsByName("comment-border");
-  var elementsLength = elements.length;
-  for (var i = 0; i < elementsLength; i++) {
-    var tr = M_getParent(M_getParent(elements[i]));
-    tr.style.display = "none";
-    tr.name = "";
-  }
-  hide.style.display = "none";
-  hookState.updateHooks();
-}
-
-/**
- * Flips between making inline comments visible and invisible.
- */
-function M_toggleAllInlineComments() {
-  var show = document.getElementById("show-all-inline");
-  if (!show) {
-    return;
-  }
-  if (show.style.display == "none") {
-    M_hideAllInlineComments();
-  } else {
-    M_showAllInlineComments();
-  }
-}
-
-// File view keyboard navigation
-
-/**
- * M_HookState class. Keeps track of the current 'hook' that we are on and
- * responds to n/p/N/P events.
- * @param {Window} win The window that the table is in.
- * @constructor
- */
-function M_HookState(win) {
-  /**
-   * -2 == top of page; -1 == diff; or index into hooks array
-   * @type Integer
-   */
-  this.hookPos = -2;
-
-  /**
-   * A cache of visible table rows with tr.name == "hook"
-   * @type Array
-   */
-  this.visibleHookCache = [];
-
-  /**
-   * The indicator element that we move around
-   * @type Element
-   */
-  this.indicator = document.getElementById("hook-sel");
-
-  /**
-   * Caches whether we are in an IE browser
-   * @type Boolean
-   */
-  this.isIE = M_isIE();
-
-  /**
-   * The window that the table with the hooks is in
-   * @type Window
-   */
-  this.win = win;
-}
-
-/**
- * Find all the hook locations in a browser-portable fashion, and store them
- * in a cache.
- * @return Array of TR elements.
- */
-M_HookState.prototype.computeHooks_ = function() {
-  var allHooks = null;
-  if (this.isIE) {
-    // IE only recognizes the 'name' attribute on tags that are supposed to
-    // have one, such as... not TR.
-    var tmpHooks = document.getElementsByTagName("TR");
-    var tmpHooksLength = tmpHooks.length;
-    allHooks = [];
-    for (var i = 0; i < tmpHooksLength; i++) {
-      if (tmpHooks[i].name == "hook") {
-        allHooks.push(tmpHooks[i]);
-      }
-    }
-  } else {
-    allHooks = document.getElementsByName("hook");
-  }
-  var visibleHooks = [];
-  var allHooksLength = allHooks.length;
-  for (var i = 0; i < allHooksLength; i++) {
-    var hook = allHooks[i];
-    if (hook.style.display == "") {
-      visibleHooks.push(hook);
-    }
-  }
-  this.visibleHookCache = visibleHooks;
-  return visibleHooks;
-};
-
-/**
- * Recompute all the hook positions, update the hookPos, and update the
- * indicator's position if necessary, but do not scroll.
- */
-M_HookState.prototype.updateHooks = function() {
-  var curHook = null;
-  if (this.hookPos >= 0 && this.hookPos < this.visibleHookCache.length) {
-    curHook = this.visibleHookCache[this.hookPos];
-  }
-  this.computeHooks_();
-  var newHookPos = -1;
-  if (curHook != null) {
-    for (var i = 0; i < this.visibleHookCache.length; i++) {
-      if (this.visibleHookCache[i] == curHook) {
-        newHookPos = i;
-        break;
-      }
-    }
-  }
-  if (newHookPos != -1) {
-    this.hookPos = newHookPos;
-  }
-  this.gotoHook(0);
-};
-
-/**
- * Update the indicator's position to be at the top of the table row.
- * @param {Element} tr The tr whose top the indicator will be lined up with.
- */
-M_HookState.prototype.updateIndicator_ = function(tr) {
-  // Find out where the table's top is, and add one so that when we align
-  // the position indicator, it takes off 1px from one tr and 1px from another.
-  // This must be computed every time since the top of the table may move due
-  // to window resizing.
-  var tableTop = M_getPageOffsetTop(document.getElementById("table-top")) + 1;
-
-  this.indicator.style.top = String(M_getPageOffsetTop(tr) -
-                                    tableTop) + "px";
-  var totWidth = 0;
-  var numCells = tr.cells.length;
-  for (var i = 0; i < numCells; i++) {
-    totWidth += tr.cells[i].clientWidth;
-  }
-  this.indicator.style.left = "0px";
-  this.indicator.style.width = totWidth + "px";
-  this.indicator.style.display = "";
-};
-
-/**
- * Update the indicator's position, and potentially scroll to the proper
- * location. Computes the new position based on current scroll position, and
- * whether the previously selected hook was visible.
- * @param {Integer} direction Scroll direction: -1 for up only, 1 for down only,
- *                            0 for no scrolling.
- */
-M_HookState.prototype.gotoHook = function(direction) {
-  var hooks = this.visibleHookCache;
-
-  // Hide the current selection image
-  this.indicator.style.display = "none";
-
-  // Add a border to all td's in the selected row
-  if (this.hookPos < -1) {
-    if (direction != 0) {
-      window.scrollTo(0, 0);
-    }
-    this.hookPos = -2;
-  } else if (this.hookPos == -1) {
-    var diffs = document.getElementsByName("diffs");
-    if (diffs && diffs.length >= 1) {
-      diffs = diffs[0];
-    }
-    if (diffs && direction != 0) {
-      window.scrollTo(0, M_getPageOffsetTop(diffs));
-    }
-    this.updateIndicator_(document.getElementById("thecode").rows[0]);
-  } else {
-    if (this.hookPos < hooks.length) {
-      var hook = hooks[this.hookPos];
-      for (var i = 0; i < hook.cells.length; i++) {
-        var td = hook.cells[i];
-        if (td.id != null && td.id != "") {
-          if (direction != 0) {
-            M_scrollIntoView(this.win, td, direction);
-          }
-          break;
-        }
-      }
-      // Found one!
-      this.updateIndicator_(hook);
-    } else {
-      if (direction != 0) {
-        window.scrollTo(0, document.body.offsetHeight);
-      }
-      this.hookPos = hooks.length;
-      var thecode = document.getElementById("thecode");
-      this.updateIndicator_(thecode.rows[thecode.rows.length - 1]);
-    }
-  }
-};
-
-/**
- * Set this.hookPos to the next desired hook.
- * @param {Boolean} findComment Whether to look only for comment hooks
- */
-M_HookState.prototype.incrementHook_ = function(findComment) {
-  var hooks = this.visibleHookCache;
-  if (findComment) {
-    this.hookPos = Math.max(0, this.hookPos + 1);
-    while (this.hookPos < hooks.length &&
-           hooks[this.hookPos].className != "inline-comments") {
-      this.hookPos++;
-    }
-  } else {
-    this.hookPos = Math.min(hooks.length, this.hookPos + 1);
-  }
-};
-
-/**
- * Set this.hookPos to the previous desired hook.
- * @param {Boolean} findComment Whether to look only for comment hooks
- */
-M_HookState.prototype.decrementHook_ = function(findComment) {
-  var hooks = this.visibleHookCache;
-  if (findComment) {
-    this.hookPos = Math.min(hooks.length - 1, this.hookPos - 1);
-    while (this.hookPos >= 0 &&
-           hooks[this.hookPos].className != "inline-comments") {
-      this.hookPos--;
-    }
-  } else {
-    this.hookPos = Math.max(-2, this.hookPos - 1);
-  }
-};
-
-/**
- * Find the first document element in sorted array elts whose vertical position
- * is greater than the given height from the top of the document. Optionally
- * look only for comment elements.
- *
- * @param {Integer} height The height in pixels from the top
- * @param {Array.<Element>} elts Document elements
- * @param {Boolean} findComment Whether to look only for comment elements
- * @return {Integer} The index of such an element, or elts.length otherwise
- */
-function M_findElementAfter_(height, elts, findComment) {
-  for (var i = 0; i < elts.length; ++i) {
-    if (M_getPageOffsetTop(elts[i]) > height) {
-      if (!findComment || elts[i].className == "inline-comments") {
-        return i;
-      }
-    }
-  }
-  return elts.length;
-}
-
-/**
- * Find the last document element in sorted array elts whose vertical position
- * is less than the given height from the top of the document. Optionally
- * look only for comment elements.
- *
- * @param {Integer} height The height in pixels from the top
- * @param {Array.<Element>} elts Document elements
- * @param {Boolean} findComment Whether to look only for comment elements
- * @return {Integer} The index of such an element, or -1 otherwise
- */
-function M_findElementBefore_(height, elts, findComment) {
-  for (var i = elts.length - 1; i >= 0; --i) {
-    if (M_getPageOffsetTop(elts[i]) < height) {
-      if (!findComment || elts[i].className == "inline-comments") {
-        return i;
-      }
-    }
-  }
-  return -1;
-}
-
-/**
- * Move to the next hook indicator and scroll.
- * @param opt_findComment {Boolean} Whether to look only for comment hooks
- */
-M_HookState.prototype.gotoNextHook = function(opt_findComment) {
-  // If the current hook is not on the page, select the first hook that is
-  // either on the screen or below.
-  var hooks = this.visibleHookCache;
-  var diffs = document.getElementsByName("diffs");
-  var thecode = document.getElementById("thecode");
-  var findComment = Boolean(opt_findComment);
-  if (diffs && diffs.length >= 1) {
-    diffs = diffs[0];
-  }
-  if (this.hookPos >= 0 && this.hookPos < hooks.length &&
-      M_isElementVisible(this.win, hooks[this.hookPos].cells[0])) {
-    this.incrementHook_(findComment);
-  } else if (this.hookPos == -2 &&
-             (M_isElementVisible(this.win, diffs) ||
-              M_getScrollTop(this.win) < M_getPageOffsetTop(diffs))) {
-    this.incrementHook_(findComment)
-  } else if (this.hookPos < hooks.length || (this.hookPos >= hooks.length &&
-             !M_isElementVisible(
-               this.win, thecode.rows[thecode.rows.length - 1].cells[0]))) {
-    var scrollTop = M_getScrollTop(this.win);
-    this.hookPos = M_findElementAfter_(scrollTop, hooks, findComment);
-  }
-  this.gotoHook(1);
-};
-
-/**
- * Move to the previous hook indicator and scroll.
- * @param opt_findComment {Boolean} Whether to look only for comment hooks
- */
-M_HookState.prototype.gotoPrevHook = function(opt_findComment) {
-  // If the current hook is not on the page, select the last hook that is
-  // above the bottom of the screen window.
-  var hooks = this.visibleHookCache;
-  var diffs = document.getElementsByName("diffs");
-  var findComment = Boolean(opt_findComment);
-  if (diffs && diffs.length >= 1) {
-    diffs = diffs[0];
-  }
-  if (this.hookPos == 0 && findComment) {
-    this.hookPos = -2;
-  } else if (this.hookPos >= 0 && this.hookPos < hooks.length &&
-      M_isElementVisible(this.win, hooks[this.hookPos].cells[0])) {
-    this.decrementHook_(findComment);
-  } else if (this.hookPos > hooks.length) {
-    this.hookPos = hooks.length;
-  } else if (this.hookPos == -1 && M_isElementVisible(this.win, diffs)) {
-    this.decrementHook_(findComment);
-  } else if (this.hookPos == -2 && M_getScrollTop(this.win) == 0) {
-  } else {
-    var scrollBot = M_getScrollTop(this.win) + M_getWindowHeight(this.win);
-    this.hookPos = M_findElementBefore_(scrollBot, hooks, findComment);
-  }
-  // The top of the diffs table is irrelevant if we want comment hooks.
-  if (findComment && this.hookPos <= -1) {
-    this.hookPos = -2;
-  }
-  this.gotoHook(-1);
-};
-
-/**
- * If the currently selected hook is a comment, either respond to it or edit
- * the draft if there is one already. Prefer the right side of the table.
- */
-M_HookState.prototype.respond = function() {
-  var hooks = this.visibleHookCache;
-  if (this.hookPos >= 0 && this.hookPos < hooks.length &&
-      M_isElementVisible(this.win, hooks[this.hookPos].cells[0])) {
-    // Go through this tr and try responding to the last comment. The general
-    // hope is that these are returned in DOM order
-    var comments = hooks[this.hookPos].getElementsByTagName("div");
-    var commentsLength = comments.length;
-    if (comments && commentsLength > 0) {
-      var last = null;
-      for (var i = commentsLength - 1; i >= 0; i--) {
-        if (comments[i].getAttribute("name") == "comment-border") {
-          last = comments[i];
-          break;
-        }
-      }
-      if (last) {
-        var links = last.getElementsByTagName("a");
-        if (links) {
-          for (var i = links.length - 1; i >= 0; i--) {
-            if (links[i].getAttribute("name") == "comment-reply" &&
-                links[i].style.display != "none") {
-              document.location.href = links[i].href;
-              return;
-            }
-          }
-        }
-      }
-    }
-    // Create a comment at this line
-    // TODO: Implement this in a sane fashion, e.g. opens up a comment
-    // at the end of the diff chunk.
-    /*
-    var tr = hooks[this.hookPos];
-    for (var i = tr.cells.length - 1; i >= 0; i--) {
-      if (tr.cells[i].id.substr(0, 7) == "newcode") {
-        createInlineComment(parseInt(tr.cells[i].id.substr(7)), 'b');
-        return;
-      } else if (tr.cells[i].id.substr(0, 7) == "oldcode") {
-        createInlineComment(parseInt(tr.cells[i].id.substr(7)), 'a');
-        return;
-      }
-    }
-    */
-  }
-};
-
-// Intra-line diff handling
-
-/**
- * IntraLineDiff class. Initializes structures to keep track of highlighting
- * state.
- * @constructor
- */
-function M_IntraLineDiff() {
-  /**
-   * Whether we are showing intra-line changes or not
-   * @type Boolean
-   */
-  this.intraLine = true;
-
-  /**
-   * "oldreplace" css rule
-   * @type CSSStyleRule
-   */
-  this.oldReplace = null;
-
-  /**
-   * "oldlight" css rule
-   * @type CSSStyleRule
-   */
-  this.oldLight = null;
-
-  /**
-   * "newreplace" css rule
-   * @type CSSStyleRule
-   */
-  this.newReplace = null;
-
-  /**
-   * "newlight" css rule
-   * @type CSSStyleRule
-   */
-  this.newLight = null;
-
-  /**
-   * backup of the "oldreplace" css rule's background color
-   * @type DOMString
-   */
-  this.saveOldReplaceBkgClr = null;
-
-  /**
-   * backup of the "newreplace" css rule's background color
-   * @type DOMString
-   */
-  this.saveNewReplaceBkgClr = null;
-
-  /**
-   * "oldreplace1" css rule's background color
-   * @type DOMString
-   */
-  this.oldIntraBkgClr = null;
-
-  /**
-   * "newreplace1" css rule's background color
-   * @type DOMString
-   */
-  this.newIntraBkgClr = null;
-
-  this.findStyles_();
-}
-
-/**
- * Finds the styles in the document and keeps references to them in this class
- * instance.
- */
-M_IntraLineDiff.prototype.findStyles_ = function() {
-  var ss = document.styleSheets[0];
-  var rules = [];
-  if (ss.cssRules) {
-    rules = ss.cssRules;
-  } else if (ss.rules) {
-    rules = ss.rules;
-  }
-  for (var i = 0; i < rules.length; i++) {
-    var rule = rules[i];
-    if (rule.selectorText == ".oldreplace1") {
-      this.oldIntraBkgClr = rule.style.backgroundColor;
-    } else if (rule.selectorText == ".newreplace1") {
-      this.newIntraBkgClr = rule.style.backgroundColor;
-    } else if (rule.selectorText == ".oldreplace") {
-      this.oldReplace = rule;
-      this.saveOldReplaceBkgClr = this.oldReplace.style.backgroundColor;
-    } else if (rule.selectorText == ".newreplace") {
-      this.newReplace = rule;
-      this.saveNewReplaceBkgClr = this.newReplace.style.backgroundColor;
-    } else if (rule.selectorText == ".oldlight") {
-      this.oldLight = rule;
-    } else if (rule.selectorText == ".newlight") {
-      this.newLight = rule;
-    }
-  }
-};
-
-/**
- * Toggle the highlighting of the intra line diffs, alternatively turning
- * them on and off.
- */
-M_IntraLineDiff.prototype.toggle = function() {
-  if (this.intraLine) {
-    this.oldReplace.style.backgroundColor = this.oldIntraBkgClr;
-    this.oldLight.style.backgroundColor = this.oldIntraBkgClr;
-    this.newReplace.style.backgroundColor = this.newIntraBkgClr;
-    this.newLight.style.backgroundColor = this.newIntraBkgClr;
-    this.intraLine = false;
-  } else {
-    this.oldReplace.style.backgroundColor = this.saveOldReplaceBkgClr;
-    this.oldLight.style.backgroundColor = this.saveOldReplaceBkgClr;
-    this.newReplace.style.backgroundColor = this.saveNewReplaceBkgClr;
-    this.newLight.style.backgroundColor = this.saveNewReplaceBkgClr;
-    this.intraLine = true;
-  }
-};
-
-/**
- * A click handler common to just about every page, set in global.html.
- * @param {Event} evt The event object that triggered this handler.
- * @return false if the event was handled.
- */
-function M_clickCommon(evt) {
-  if (helpDisplayed) {
-    var help = document.getElementById("help");
-    help.style.display = "none";
-    helpDisplayed = false;
-    return false;
-  }
-  return true;
-}
-
-/**
- * Common keypress handling code for all pages.
- * @param {Event} evt The event object that triggered this callback
- * @param {function(string)} handler Handles the specific key pressed;
- *        returns false if the key press was handled.
- * @param {function(Event, Node, int, string)} input_handler
- *        Handles the event in case that the event source is an input field.
- *        returns false if the key press was handled.
- * @return false if the event was handled
- */
-function M_keyPressCommon(evt, handler, input_handler) {
-  var evt = (evt) ? evt : ((event) ? event : null);
-  if (evt) {
-    var src = M_getEventTarget(evt);
-    var nodename = src.nodeName;
-    var key, code;
-    if (evt.keyCode) {
-      code = evt.keyCode;
-    } else if (evt.which) {
-      code = evt.which;
-    }
-    key = String.fromCharCode(code);
-    if (nodename == "TEXTAREA" || nodename == "INPUT" ) {
-      if (typeof input_handler != 'undefined') {
-        return input_handler(evt, src, code, key);
-      }
-      return true;
-    }
-    if (evt.altKey || evt.altLeft ||
-        evt.ctrlKey || evt.ctrlLeft ||
-        evt.metaKey) {
-      // Ignore if any modifier keys are set
-      return true;
-    }
-    if (key == '?' ||
-	code == (window.event ? 27 /* ESC */ : evt.DOM_VK_ESCAPE)) {
-      var help = document.getElementById("help");
-      if (help && typeof helpDisplayed != "undefined") {
-	// Only allow the help to be turned on with the ? key.
-	if (helpDisplayed || key == '?') {
-	  helpDisplayed = !helpDisplayed;
-	}
-	help.style.display = helpDisplayed ? "" : "none";
-      }
-      return false;
-    }
-    return handler(key);
-  }
-  return true;
-}
-
-/**
- * Helper event handler for the keypress event in a comment textarea.
- * @param {Event} evt The event object that triggered this callback
- * @param {Node} src The textarea document element
- * @param {int} code The key code of the key press
- * @param {String} key The string describing the key press
- * @return false if the key press was handled
- */
-function M_commentTextKeyPress_(evt, src, code, key) {
-  if (src.nodeName == "TEXTAREA") {
-    if (evt.ctrlKey || evt.ctrlLeft) {
-      if (key == 's' || code == 19 /* ASCII code for ^S */) {
-        // Save the form corresponding to this text area.
-        M_disableCarefulUnload();
-        if (src.form.save.onclick) {
-          return src.form.save.onclick();
-        } else {
-          src.form.submit();
-          return false;
-        }
-      }
-    } else if (evt.altKey || evt.altLeft) {
-    } else if (evt.shiftKey || evt.shiftLeft) {
-    } else if (evt.metaKey) {
-    } else {
-      if (code == (window.event ? 27 /* ASCII code for Escape */
-                                : evt.DOM_VK_ESCAPE)) {
-        return src.form.cancel.onclick();
-      }
-    }
-  }
-  return true;
-}
-
-
-/**
- * Go to the next file (the change page is included in the cycle
- */
-function M_gotoNextFile() {
-  var nextFile = document.getElementById('nextFile');
-  if (nextFile) {
-    document.location.href = nextFile.href;
-  } else {
-    M_upToChangelist();
-  }
-}
-
-/**
- * Go to the previous file (the change page is included in the cycle)
- */
-function M_gotoPrevFile() {
-  var prevFile = document.getElementById('prevFile');
-  if (prevFile) {
-    document.location.href = prevFile.href;
-  } else {
-    M_upToChangelist();
-  }
-}
-
-/**
- * Event handler for the keypress event in the file view.
- * @param {Event} evt The event object that triggered this callback
- * @return false if the key press was handled
- */
-function M_keyPress(evt) {
-  return M_keyPressCommon(evt, function(key) {
-    if (key == 'n') {
-      // next diff
-      if (hookState) hookState.gotoNextHook();
-    } else if (key == 'p') {
-      // previous diff
-      if (hookState) hookState.gotoPrevHook();
-    } else if (key == 'N') {
-      // next comment
-      if (hookState) hookState.gotoNextHook(true);
-    } else if (key == 'P') {
-      // previous comment
-      if (hookState) hookState.gotoPrevHook(true);
-    } else if (key == 'j') {
-      // next file
-      M_gotoNextFile();
-    } else if (key == 'k') {
-      // prev file
-      M_gotoPrevFile();
-    } else if (key == 'm') {
-      // publish comments
-      document.location.href = publish_link;
-    } else if (key == 'u') {
-      // up to CL
-      M_upToChangelist();
-    } else if (key == 'i') {
-      // toggle intra line diff
-      if (intraLineDiff) intraLineDiff.toggle();
-    } else if (key == 's') {
-      // toggle show/hide inline comments
-      M_toggleAllInlineComments();
-    } else if (key == 'e') {
-      M_expandAllInlineComments();
-    } else if (key == 'c') {
-      M_collapseAllInlineComments();
-    } else if (key == '\r' || key == '\n') {
-      // respond to current comment
-      if (hookState) hookState.respond();
-    } else {
-      return true;
-    }
-    return false;
-  }, M_commentTextKeyPress_);
-}
-
-/**
- * Event handler for the keypress event in the changelist view.
- * @param {Event} evt The event object that triggered this callback
- * @return false if the key press was handled
- */
-function M_changelistKeyPress(evt) {
-  return M_keyPressCommon(evt, function(key) {
-    if (key == 'o' || key == '\r' || key == '\n') {
-      if (dashboardState) {
-	var child = dashboardState.curTR.cells[1].firstChild;
-	while (child && child.nextSibling && child.nodeName != "A") {
-	  child = child.nextSibling;
-	}
-	if (child && child.nodeName == "A") {
-	  location.href = child.href;
-	}
-      }
-    } else if (key == 'i') {
-      if (dashboardState) {
-	var child = dashboardState.curTR.cells[2].firstChild;
-	while (child && child.nextSibling &&
-	       (child.nodeName != "A" || child.style.display == "none")) {
-	  child = child.nextSibling;
-	}
-	if (child && child.nodeName == "A") {
-	  child.onclick();
-	}
-      }
-    } else if (key == 'I') {
-      if (M_CL_hiddenInlineDiffCount == M_CL_maxHiddenInlineDiffCount) {
-        M_showAllDiffs(M_CL_maxHiddenInlineDiffCount);
-      } else {
-	M_hideAllDiffs(M_CL_maxHiddenInlineDiffCount);
-      }
-    } else if (key == 'k') {
-      if (dashboardState) dashboardState.gotoPrev();
-    } else if (key == 'j') {
-      if (dashboardState) dashboardState.gotoNext();
-    } else if (key == 'm') {
-      document.location.href = publish_link;
-    } else if (key == 'u') {
-      // back to dashboard
-      document.location.href = '/';
-    } else {
-      return true;
-    }
-    return false;
-  });
-}
-
-/**
- * Goes from the file view back up to the changelist view.
- */
-function M_upToChangelist() {
-  var upCL = document.getElementById('upCL');
-  if (upCL) {
-    document.location.href = upCL.href;
-  }
-}
-
-/**
- * Asynchronously request static analysis warnings as comments.
- * @param {String} cl The current changelist
- * @param {String} depot_path The id of the target element
- * @param {String} a The version number of the left side to be analyzed
- * @param {String} b The version number of the right side to be analyzed
- */
-function M_getBugbotComments(cl, depot_path, a, b) {
-  var httpreq = M_getXMLHttpRequest();
-  if (!httpreq) {
-    return;
-  }
-
-  // Konqueror jumps to a random location for some reason
-  var scrollTop = M_getScrollTop(window);
-
-  httpreq.onreadystatechange = function () {
-    // Firefox 2.0, at least, runs this with readyState = 4 but all other
-    // fields unset when the timeout aborts the request, against all
-    // documentation.
-    if (httpreq.readyState == 4) {
-      if (httpreq.status == 200) {
-        M_updateWarningStatus(httpreq.responseText);
-      }
-      if (M_isKHTML()) {
-        window.scrollTo(0, scrollTop);
-      }
-    }
-  }
-  httpreq.open("GET", "/warnings/" + cl + "/" + depot_path +
-               "?a=" + a + "&b=" + b, true);
-  httpreq.send(null);
-}
-
-/**
- * Updates a warning status td with the given HTML.
- * @param {String} result The new html to replace the existing content
- */
-function M_updateWarningStatus(result) {
-  var elem = document.getElementById("warnings");
-  elem.innerHTML = result;
-  if (hookState) hookState.updateHooks();
-}
-
-/* Ripped off from Caribou */
-var M_CONFIRM_DISCARD_NEW_MSG = "Your draft comment has not been saved " +
-                                "or sent.\n\nDiscard your comment?";
-
-var M_useCarefulUnload = true;
-
-
-/**
- * Return an alert if the specified textarea is visible and non-empty.
- */
-function M_carefulUnload(text_area_id) {
-  return function () {
-    var text_area = document.getElementById(text_area_id);
-    if (!text_area) return;
-    var text_parent = M_getParent(text_area);
-    if (M_useCarefulUnload && text_area.style.display != "none"
-                           && text_parent.style.display != "none"
-                           && goog.string.trim(text_area.value)) {
-      return M_CONFIRM_DISCARD_NEW_MSG;
-    }
-  };
-}
-
-function M_disableCarefulUnload() {
-  M_useCarefulUnload = false;
-}
-
-// History Table
-
-/**
- * Toggles visibility of the snapshots that belong to the given parent.
- * @param {String} parent The parent's index
- * @param {Boolean} opt_show If present, whether to show or hide the group
- */
-function M_toggleGroup(parent, opt_show) {
-  var children = M_historyChildren[parent];
-  if (children.length == 1) {  // No children.
-    return;
-  }
-
-  var show = (typeof opt_show != "undefined") ? opt_show :
-    (document.getElementById("history-" + children[1]).style.display != "");
-  for (var i = 1; i < children.length; i++) {
-    var child = document.getElementById("history-" + children[i]);
-    child.style.display = show ? "" : "none";
-  }
-
-  var arrow = document.getElementById("triangle-" + parent);
-  if (arrow) {
-    arrow.className = "triangle-" + (show ? "open" : "closed");
-  }
-}
-
-/**
- * Makes the given groups visible.
- * @param {Array.<Number>} parents The indexes of the parents of the groups
- *     to show.
- */
-function M_expandGroups(parents) {
-  for (var i = 0; i < parents.length; i++) {
-    M_toggleGroup(parents[i], true);
-  }
-  document.getElementById("history-expander").style.display = "none";
-  document.getElementById("history-collapser").style.display = "";
-}
-
-/**
- * Hides the given parents, except for groups that contain the
- * selected radio buttons.
- * @param {Array.<Number>} parents The indexes of the parents of the groups
- *     to hide.
- */
-function M_collapseGroups(parents) {
-  // Find the selected snapshots
-  var parentsToLeaveOpen = {};
-  var form = document.getElementById("history-form");
-  var formLength = form.a.length;
-  for (var i = 0; i < formLength; i++) {
-    if (form.a[i].checked || form.b[i].checked) {
-      var element = "history-" + form.a[i].value;
-      var name = document.getElementById(element).getAttribute("name");
-      if (name != "parent") {
-        // The name of a child is "parent-%d" % parent_index.
-        var parentIndex = Number(name.match(/parent-(\d+)/)[1]);
-        parentsToLeaveOpen[parentIndex] = true;
-      }
-    }
-  }
-
-  // Collapse the parents we need to collapse.
-  for (var i = 0; i < parents.length; i++) {
-    if (!(parents[i] in parentsToLeaveOpen)) {
-      M_toggleGroup(parents[i], false);
-    }
-  }
-  document.getElementById("history-expander").style.display = "";
-  document.getElementById("history-collapser").style.display = "none";
-}
-
-/**
- * Expands the reverted files section of the files list in the changelist view.
- *
- * @param {String} tableid The id of the table element that contains hidden TR's
- * @param {String} hide The id of the element to hide after this is completed.
- */
-function M_showRevertedFiles(tableid, hide) {
-  var table = document.getElementById(tableid);
-  if (!table) return;
-  var rowsLength = table.rows.length;
-  for (var i = 0; i < rowsLength; i++) {
-    var row = table.rows[i];
-    if (row.getAttribute("name") == "afile") row.style.display = "";
-  }
-  if (dashboardState) dashboardState.initialize();
-  var h = document.getElementById(hide);
-  if (h) h.style.display = "none";
-}
-
-// Undo draft cancel
-
-/**
- * An associative array mapping keys that identify inline comments to draft
- * text values.
- *   New inline comments have keys 'new-lineno-snapshot_id'
- *   Edit inline comments have keys 'edit-cid-lineno-side'
- *   Reply inline comments have keys 'reply-cid-lineno-side'
- * @type Object
- */
-var M_savedInlineDrafts = new Object();
-
-/**
- * Saves draft text from a form.
- * @param {String} draftKey The key identifying the saved draft text
- * @param {String} text The draft text to be saved
- */
-function M_saveDraftText_(draftKey, text) {
-  M_savedInlineDrafts[draftKey] = text;
-}
-
-/**
- * Clears saved draft text. Does nothing with an invalid key.
- * @param {String} draftKey The key identifying the saved draft text
- */
-function M_clearDraftText_(draftKey) {
-  delete M_savedInlineDrafts[draftKey];
-}
-
-/**
- * Restores saved draft text to a form. Does nothing with an invalid key.
- * @param {String} draftKey The key identifying the saved draft text
- * @param {Element} form The form that contains the comment to be restored
- * @param {Element} opt_selectAll Whether the restored text should be selected.
- *                                True by default.
- * @return {Boolean} true if we found a saved draft and false otherwise
- */
-function M_restoreDraftText_(draftKey, form, opt_selectAll) {
-  if (M_savedInlineDrafts[draftKey]) {
-    form.text.value = M_savedInlineDrafts[draftKey];
-    if (typeof opt_selectAll == 'undefined' || opt_selectAll) {
-      form.text.select();
-    }
-    return true;
-  }
-  return false;
-}
-
-// Dashboard CL navigation
-
-/**
- * M_DashboardState class. Keeps track of the current position of
- * the selector on the dashboard, and moves it on keypress.
- * @param {Window} win The window that the dashboard table is in.
- * @param {String} trName The name of TRs that we will move between.
- * @param {String} cookieName The cookie name to store the marker position into.
- * @constructor
- */
-function M_DashboardState(win, trName, cookieName) {
-  /**
-   * The position of the marker, 0-indexed into the trCache array.
-   * @ype Integer
-   */
-  this.trPos = 0;
-
-  /**
-   * The current TR object that the marker is pointing at.
-   * @type Element
-   */
-  this.curTR = null;
-
-  /**
-   * Array of tr rows that we are moving between. Computed once (updateable).
-   * @type Array
-   */
-  this.trCache = [];
-
-  /**
-   * The window that the table is in, used for positioning information.
-   * @type Window
-   */
-  this.win = win;
-
-  /**
-   * The expected name of tr's that we are going to cache.
-   * @type String
-   */
-  this.trName = trName;
-
-  /**
-   * The name of the cookie value where the marker position is stored.
-   * @type String
-   */
-  this.cookieName = cookieName;
-
-  this.initialize();
-}
-
-/**
- * Initializes the clCache array, and moves the marker into the first position.
- */
-M_DashboardState.prototype.initialize = function() {
-  var filter = function(arr, lambda) {
-    var ret = [];
-    var arrLength = arr.length;
-    for (var i = 0; i < arrLength; i++) {
-      if (lambda(arr[i])) {
-	ret.push(arr[i]);
-      }
-    }
-    return ret;
-  };
-  var cache;
-  if (M_isIE()) {
-    // IE does not recognize the 'name' attribute on TR tags
-    cache = filter(document.getElementsByTagName("TR"),
-		   function (elem) { return elem.name == this.trName; });
-  } else {
-    cache = document.getElementsByName(this.trName);
-  }
-
-  this.trCache = filter(cache, function (elem) {
-    return elem.style.display != "none";
-  });
-
-  if (document.cookie && this.cookieName) {
-    cookie_values = document.cookie.split(";");
-    for (var i=0; i<cookie_values.length; i++) {
-      name = cookie_values[i].split("=")[0].replace(/ /g, '');
-      if (name == this.cookieName) {
-        this.trPos = cookie_values[i].split("=")[1];
-      }
-    }
-  }
-
-  this.goto_(0);
-}
-
-/**
- * Moves the cursor to the curCL position, and potentially scrolls the page to
- * bring the cursor into view.
- * @param {Integer} direction Positive for scrolling down, negative for
- *                            scrolling up, and 0 for no scrolling.
- */
-M_DashboardState.prototype.goto_ = function(direction) {
-  var oldTR = this.curTR;
-  if (oldTR) {
-    oldTR.cells[0].firstChild.style.visibility = "hidden";
-  }
-  this.curTR = this.trCache[this.trPos];
-  this.curTR.cells[0].firstChild.style.visibility = "";
-  if (this.cookieName) {
-    document.cookie = this.cookieName+'='+this.trPos;
-  }
-
-  if (!M_isElementVisible(this.win, this.curTR)) {
-    M_scrollIntoView(this.win, this.curTR, direction);
-  }
-}
-
-/**
- * Moves the cursor up one.
- */
-M_DashboardState.prototype.gotoPrev = function() {
-  if (this.trPos > 0) this.trPos--;
-  this.goto_(-1);
-}
-
-/**
- * Moves the cursor down one.
- */
-M_DashboardState.prototype.gotoNext = function() {
-  if (this.trPos < this.trCache.length - 1) this.trPos++;
-  this.goto_(1);
-}
-
-/**
- * Event handler for dashboard key presses. Dispatches cursor moves, as well as
- * opening CLs.
- */
-function M_dashboardKeyPress(evt) {
-  return M_keyPressCommon(evt, function(key) {
-    if (key == 'k') {
-      if (dashboardState) dashboardState.gotoPrev();
-    } else if (key == 'j') {
-      if (dashboardState) dashboardState.gotoNext();
-    } else if (key == 'o' || key == '\r' || key == '\n') {
-      if (dashboardState) {
-	var child = dashboardState.curTR.cells[2].firstChild;
-	while (child && child.nodeName != "A") {
-	  child = child.firstChild;
-	}
-	if (child) {
-	  location.href = child.href;
-	}
-      }
-    } else {
-      return true;
-    }
-    return false;
-  });
-}
-
-/*
- * Function to request more context between diff chunks.
- * See _ShortenBuffer() in codereview/engine.py.
- */
-function M_expandSkipped(id_before, id_after, where, id_skip) {
-  links = document.getElementById('skiplinks-'+id_skip).childNodes;
-  for (var i=0; i<links.length; i++) {
-	links[i].href = '#skiplinks-'+id_skip;
-  }
-  tr = document.getElementById('skip-'+id_skip);
-  var httpreq = M_getXMLHttpRequest();
-  if (!httpreq) {
-    html = '<td colspan="2" style="text-align: center;">';
-    html = html + 'Failed to retrieve additional lines. ';
-    html = html + 'Please update your context settings.';
-    html = html + '</td>';
-    tr.innerHTML = html;
-  }
-  aborted = false;
-  httpreq.onreadystatechange = function () {
-    if (httpreq.readyState == 4 && !aborted) {
-      if (httpreq.status == 200) {
-        response = eval('('+httpreq.responseText+')');
-        for (var i=0; i<response.length; i++) {
-          var data = response[i];
-          var row = document.createElement("tr");
-          for (var j=0; j<data[0].length; j++) {
-            row.setAttribute(data[0][j][0], data[0][j][1]);
-          }
-          if ( where == 't' ) {
-            tr.parentNode.insertBefore(row, tr);
-          } else {
-            tr.parentNode.insertBefore(row, tr.nextSibling);
-          }
-          row.innerHTML = data[1];
-        }
-        var curr = document.getElementById('skipcount-'+id_skip);
-        var new_count = parseInt(curr.innerHTML)-response.length/2;
-        if ( new_count > 0 ) {
-          if ( where == 'b' ) {
-            var new_before = id_before;
-            var new_after = id_after-response.length/2;
-          } else {
-            var new_before = id_before+response.length/2;
-            var new_after = id_after;
-          }
-          curr.innerHTML = new_count;
-          if ( new_count <= 10 ) {
-  	    html = '<a href="javascript:M_expandSkipped('+new_before;
-            html += ','+new_after+',\'b\','+id_skip+');">Show</a>  ';
-          } else {
-            var html = '<a href="javascript:M_expandSkipped('+new_before;
-            html += ','+new_after+',\'t\', '+id_skip+');">Show 10 above</a> ';
-            html += '<a href="javascript:M_expandSkipped('+new_before;
-            html += ','+new_after+',\'b\','+id_skip+');">Show 10 below</a> ';
-          }
-          document.getElementById('skiplinks-'+(id_skip)).innerHTML = html;
-        } else {
-          tr.parentNode.removeChild(tr);
-        }
-        if (hookState.hookPos != -2 &&
-            M_isElementVisible(window, hookState.indicator)) {
-          hookState.gotoHook(-1);
-        }
-      }
-    }
-  }
-
-  url = skipped_lines_url+id_before+'/'+id_after+'/'+where;
-  httpreq.open('GET', url, true);
-  httpreq.send('');
-}
-
-/**
- * Finds the element position.
- */
-function M_getElementPosition(obj) {
-  var curleft = curtop = 0;
-  if (obj.offsetParent) {
-    do {
-      curleft += obj.offsetLeft;
-      curtop += obj.offsetTop;
-    } while (obj = obj.offsetParent);
-  }
-  return [curleft,curtop];
-}
-
-/**
- * Position the user info popup according to the mouse event coordinates
- */
-function M_positionUserInfoPopup(obj, userPopupDiv) {
-  pos = M_getElementPosition(obj);
-  userPopupDiv.style.left = pos[0] + "px";
-  userPopupDiv.style.top = pos[1] + 20 + "px";
-}
-
-/**
- * Brings up user info popup using ajax
- */
-function M_showUserInfoPopup(obj) {
-  var DIV_ID = "userPopupDiv";
-  var userPopupDiv = document.getElementById(DIV_ID);
-  var url = obj.getAttribute("href")
-  var index = url.indexOf("/user/");
-  var user_key = url.substring(index + 6);
-
-  if (!userPopupDiv) {
-    var userPopupDiv = document.createElement("div");
-    userPopupDiv.className = "popup";
-    userPopupDiv.id = DIV_ID;
-    userPopupDiv.filter = 'alpha(opacity=85)';
-    userPopupDiv.opacity = '0.85';
-    userPopupDiv.innerHTML = "";
-    userPopupDiv.onmouseout = function() {
-      userPopupDiv.style.visibility = 'hidden';
-    }
-    document.body.appendChild(userPopupDiv);
-  }
-  M_positionUserInfoPopup(obj, userPopupDiv);
-
-  var httpreq = M_getXMLHttpRequest();
-  if (!httpreq) {
-    return true;
-  }
-
-  var aborted = false;
-  var httpreq_timeout = setTimeout(function() {
-    aborted = true;
-    httpreq.abort();
-  }, 5000);
-
-  httpreq.onreadystatechange = function () {
-    if (httpreq.readyState == 4 && !aborted) {
-      clearTimeout(httpreq_timeout);
-      if (httpreq.status == 200) {
-        userPopupDiv = document.getElementById(DIV_ID);
-        userPopupDiv.innerHTML=httpreq.responseText;
-        userPopupDiv.style.visibility = "visible";
-      } else {
-        //Better fail silently here because it's not
-        //critical functionality
-      }
-    }
-  }
-  httpreq.open("GET", "/user_popup/" + user_key, true);
-  httpreq.send(null);
-  obj.onmouseout = function() {
-    aborted = true;
-    userPopupDiv.style.visibility = 'hidden';
-    obj.onmouseout = null;
-  }
-}
-
-/**
- * TODO(jiayao,andi): docstring
- */
-function M_showPopUp(obj, id) {
-  var popup = document.getElementById(id);
-  var pos = M_getElementPosition(obj);
-  popup.style.left = pos[0]+'px';
-  popup.style.top = pos[1]+20+'px';
-  popup.style.visibility = 'visible';
-  obj.onmouseout = function() {
-    popup.style.visibility = 'hidden';
-    obj.onmouseout = null;
-  }
-}
-
-/**
- * TODO(andi): docstring
- */
-function M_jumpToPatch(select, change, patchset, unified) {
-  if ( unified ) {
-    part = 'patch';
-  } else {
-    part = 'diff';
-  }
-  document.location.href = '/'+change+'/'+part+'/'+patchset+'/'+select.value;
-}
-
-/**
- * Add or remove a star to/from the given change.
- * @param {Integer} id The change id.
- * @param {String} url The url fragment to append: "/star" or "/unstar".
- */
-function M_setChangeStar_(id, url, xsrf) {
-  var httpreq = M_getXMLHttpRequest();
-  if (!httpreq) {
-    return true;
-  }
-  httpreq.onreadystatechange = function () {
-    if (httpreq.readyState == 4) {
-      if (httpreq.status == 200) {
-	  var elem = document.getElementById("change-star-" + id);
-	  elem.innerHTML = httpreq.responseText;
-      }
-    }
-  }
-
-  body = ''
-  body += 'change_id=' + escape('' + id);
-  body += '&'
-  body += 'xsrf=' + xsrf.replace(/\+/g, '%2B')
-
-  httpreq.open("POST", url, true);
-  httpreq.setRequestHeader('Content-Type',
-                           'application/x-www-form-urlencoded');
-  httpreq.send(body)
-}
diff --git a/webapp/static/style.css b/webapp/static/style.css
deleted file mode 100644
index 1b7208a..0000000
--- a/webapp/static/style.css
+++ /dev/null
@@ -1,718 +0,0 @@
-div {
-}
-
-body {
-  min-width: 600px;
-  margin: 0;
-  padding: 5px 5px 0 5px;
-  border: 0px;
-}
-
-
-/* ****** Common styles ****** */
-
-/* the little gray help text */
-.tips {
-  color: #777;
-  font-size: 12px; 
-  border-collapse: collapse;
-}
-
-.tips td, .tips th {
-  border: 0;
-  padding: 0;
-}
-
-.tips th {
-  padding-right: 5px;
-  font-weight: normal;
-}
-
-
-.disabled {
-  color: #444;
-}
-
-
-
-/* ****** The stuff at the top ****** */
-
-#top_nav, #masthead {
-  margin: 0 -5px 0 -5px;
-  padding: 0px 5px 0 5px;
-  border-bottom: 1px solid #b0bdcc;
-}
-
-#top_nav_left {
-  float: left;
-}
-
-#top_nav_right {
-  text-align: right;
-  right: 0;
-  font-size: 13px;
-  font-family: Arial, sans-serif;
-  margin-top: -1px;
-  padding-bottom: 5px;
-}
-
-#masthead {
-  height: 86px;
-}
-
-#masthead_logotype {
-  padding: 0;
-  margin: 7px 0 0 2px;
-  float: left;
-}
-
-#masthead_bugdroid {
-  margin-right: -5px;
-  float: right;
-}
-
-#ajax_progress, #ajax_error {
-  background-color: red;
-  color: white;
-  position: absolute;
-  top: 0;
-  left: 0;
-  padding: 4px 10px 2px 10px;
-}
-
-/* ****** Left nav bar ****** */
-
-#left_nav, #main_content {
-  float: left;
-}
-
-#left_nav {
-  font-family: Arial,Verdana,sans-serif;
-  font-size: 13px;
-  width: 155px;
-  margin-top: 5px;
-}
-
-.left_nav_box {
-  margin: 10px 0 6px 0;
-  overflow: hidden;
-  border: 1px solid #b0bdcc;
-  background-color: #d4e9a9;
-}
-
-#left_nav h4 {
-  font-weight: bold;
-  margin: 0;
-  padding: 3px 5px 3px 5px;
-  background-color: #a5c639;
-  color: white;
-}
-
-#left_nav ul {
-  list-style: none;
-  margin: 5px;
-  padding: 0;
-}
-
-#left_nav ul li {
-  font-family: Verdana,sans-serif;
-  font-size: 12px;
-}
-
-#left_nav ul a {
-  outline-color: -moz-use-text-color;
-  outline-style: none;
-  outline-width: medium;
-  color: #336600;
-}
-
-#left_nav ul a:visited {
-  color: #551a8b;
-}
-
-#left_nav ul a:hover {
-  color: #551a8b;
-}
-
-/* ****** Right / expandable column ****** */
-#main_content_parent {
-  float: right;
-  position: absolute;
-  margin-top: 8px;
-  left: 180px;
-  right: 25px;
-}
-
-#page_footer {
-  color: #b0bdcc;
-  padding-bottom: 15px;
-  text-align: right;
-  right: 0;
-}
-
-/* ****** Main content ****** */
-
-#main_content {
-  width: 100%;
-  min-width: 435px;
-  font-family: Arial,Verdana,sans-serif;
-  font-size: 11pt;
-  padding: 0 0 20px 0;
-}
-
-h1 {
-  margin: 3px 0 8px 0;
-  padding: 0;
-  font-size: 16pt;
-  font-weight: bold;
-}
-
-h2 {
-  padding: 8px 0 8px 0;
-  padding: 0;
-  font-size: 13pt;
-  font-weight: bold;
-}
-
-/* ****** Changes ****** */
-
-.change-list {
-  width: 100%;
-  border-collapse: separate;
-  border-spacing: 0;
-}
-
-.change-list th {
-  background-color: #d4e9a9;
-  white-space: nowrap;
-}
-
-.change-list .header-columns, .change-list .header-title {
-  border-top: solid 8px white;
-}
-
-.change-list td, .change-list th {
-  text-align: left;
-  padding: 2px 6px 1px 6px;
-  margin: 0;
-}
-
-.change-list .header-columns {
-  font-weight: normal;
-  padding-top: 1px;
-}
-
-.change-list .header-columns {
-  border: 1px solid white;
-}
-
-.change-list td {
-  border-bottom: 1px solid #d4e9a9;
-  border-right: 1px solid #d4e9a9;
-}
-
-.change-list td:first-child {
-  border-bottom: 1px solid #d4e9a9;
-  border-left: 1px solid #d4e9a9;
-}
-
-.change-list td.selection {
-  border-right: hidden;
-  width: 14px;
-}
-
-.change-list td.star {
-  border-bottom: 1px solid #d4e9a9;
-  border-right: hidden;
-}
-
-.change-list .disabled {
-  color: #444;
-}
-
-.change-list th.subject {
-  width: 250px;
-}
-
-.change-list td.modified {
-  white-space: nowrap;
-}
-
-/* ****** User Info Popup ****** */
-
-.popup {
-  visibility: hidden;
-  background-color: #a5c639;
-  border: 4px solid white;
-  position: absolute;
-}
-
-.popup-name {
-  background-color: #a5c639;
-  color: white;
-  margin: 4px 4px 0 4px;
-  border-left: 2px solid white;
-  border-top: 2px solid white;
-  border-right: 2px solid white;
-  padding: 3px 8px 3px 8px;
-}
-
-.popup-info {
-  background-color: white;
-  margin: 0 4px 4px 4px;
-  padding: 11px;
-}
-
-/* ****** User Info Popup ****** */
-
-.more_options_dialog {
-  background-color: #d4e9a9;
-  border: 4px solid white;
-  position: absolute;
-  border-collapse: collapse;
-  max-width: 400px;
-}
-
-.more_options_dialog tr {
-  border-top: 2px solid white;
-}
-
-.more_options_dialog td {
-  padding: 6px 8px 6px 8px;
-  font-size: 13px;
-}
-
-.more_options_dialog th {
-  text-align: left;
-  padding: 3px 0px 3px 8px;
-  background-color: #a5c639;
-  color: white;
-  font-size: 13px;
-}
-
-/* ****** Settings ****** */
-
-.settings {
-  width: 100%;
-  margin-bottom: 20px;
-  border-collapse: collapse;
-  border-spacing: 0;
-  border: 1px solid #b0bdcc;
-}
-
-.settings th, .settings td {
-  border: 2px solid white;
-  text-align: left;
-  vertical-align: top;
-}
-
-.settings thead th {
-  background-color: #a5c639;
-  color: white;
-  padding: 1px 10px 1px 10px;
-}
-
-.settings tbody th, .settings tbody td {
-  background-color: #d4e9a9;
-  padding: 5px 10px 5px 10px;
-  white-space: nowrap;
-}
-
-.settings tbody td {
-  width: 100%;
-}
-
-
-/* ****** User Info Popup ****** */
-
-.project-field {
-  display: block;
-}
-
-
-/* ****** Change page ****** */
-
-.toggled_section {
-  margin: 0 0 20px 0;
-  padding: 0 0 0 15px;
-}
-
-.toggled_section h2 {
-  margin: 0 0 10px 0;
-  padding: 0;
-}
-
-.toggled_section_pointer {
-  margin-left: -15px;
-  padding-left: 15px;
-  background-image: url('/static/closedtriangle.gif');
-  background-position: center left;
-  background-repeat: no-repeat;
-  background-align: left;
-  text-decoration: none;
-  color: black;
-}
-
-.opentriangle {
-  background-image: url('/static/opentriangle.gif');
-}
-
-.change_description {
-  padding: 0;
-  margin: 0;
-}
-
-.change_details {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-.change_details th {
-  text-align: left;
-  padding: 2px 10px 2px 5px;
-  background-color: #d4e9a9;
-  border-bottom: 2px solid white;
-}
-
-.change_details tr.first th {
-  border-top: 2px solid #d4e9a9;
-  padding-top: 0;
-}
-
-.change_details tr.last th {
-  border-bottom: 1px solid #d4e9a9;
-  padding-bottom: 1px;
-}
-
-.change_details td {
-  border: 1px solid #d4e9a9;
-  padding: 2px 10px 2px 5px;
-}
-
-.change_details tr.spacer td {
-  border: none;
-  height: 10px;
-}
-
-table.change_info_table {
-  border-collapse: collapse;
-  border-spacing: 0;
-  border-top: hidden;
-}
-
-table.change_info_table th {
-  border: 2px solid white;
-  font-weight: normal;
-  text-align: left;
-  vertical-align: top;
-  background-color: #d4e9a9;
-  padding: 2px 4px 0px 6px;
-  white-space: nowrap;
-  border-bottom: hidden;
-}
-
-table.change_info_table th.leftmost {
-  border-left: 2px solid #d4e9a9;
-}
-
-table.change_info_table th.rightmost {
-  border-right: 1px solid #d4e9a9;
-}
-
-table.change_info_table td {
-  border: 1px solid #d4e9a9;
-  padding: 2px 6px 1px 6px;
-}
-
-table.change_info_table .score {
-  text-align: center;
-}
-
-table.change_info_table .hint {
-  border: none;
-  background-color: white;
-  color: #444;
-}
-
-.change_actions {
-  margin-top: 5px;
-}
-
-.change_actions .action {
-  padding-right: 30px;
-  vertical-align: top;
-}
-
-.change_status {
-  margin: 5px 0 0 0;
-}
-
-.change_status ul {
-  margin: 0;
-  padding: 0 0 0 20px;
-}
-
-/** messages **/
-
-.message {
-  border: 1px solid #d4e9a9;
-  margin-top: 5px;
-  margin-bottom: 5px;
-}
-
-.message .header {
-  background-color: #d4e9a9;
-  white-space: nowrap;
-  cursor: pointer;
-  overflow: hidden;
-}
-
-.message .message-body {
-  padding: 5px;
-}
-
-.message .message-body pre {
-  margin: 0;
-  padding: 0;
-  font-size: 13px;
-}
-
-.message .message-actions {
-  padding: 0 5px 0 5px;
-  border-top: 1px solid #d4e9a9;
-  font-size: 12px;
-}
-
-.message .message-reply {
-  padding: 5px 5px 5px 5px;
-}
-
-/* ****** Selection widget ****** */
-
-#hook-sel {
-  position: absolute;
-  background: #06c;
-  width: 1px;
-  height: 2px;
-  font-size: 0; /* Work-around for an IE bug */
-}
-
-/* ****** Diff page ****** */
-
-.code_diff {
-  margin-top: 90px;
-  margin-left: -175px;
-  width: 100%;
-  display: table;
-  border: 1px solid #b0bdcc;
-}
-
-.code_diff .codenav {
-  background-color: #d4e9a9;
-  padding: 2px 5px 2px 5px;
-  text-align: center;
-}
-
-.code_diff th {
-  padding: 3px 0 3px 0;
-  font-size: 12px;
-  min-width: 450px;
-}
-
-.comment-border textarea {
-  margin: 5px 5px 5px 0;
-  font-size: 12px;
-}
-
-.comment-border {
-  background-color: #d4e9a9;
-  padding: 5px;
-  font-size: 12px;
-}
-
-div.inline-comment-title {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis; /* An IE-only feature */
-  cursor: pointer;
-}
-
-.comment-text {
-  font-family: monospace;
-  font-size: 12px;
-  padding: 5px;
-}
-
-/** begin code **/
-
-/* Old/new styles for replace, delete, insert, equal, blank (no text) */
-.olddark, .newdark, .oldreplace, .olddelete, .oldinsert, .oldequal, .oldblank,
-.oldlight, .newlight, .oldreplace1, .newreplace1,
-.newreplace, .newdelete, .newinsert, .newequal, .newblank,
-.oldmove, .oldchangemove, .oldchangemove1, .oldmove_out, .oldchangemove_out,
-.newmove, .newchangemove, .newchangemove1,
-.udiffadd, .udiffremove, .udiff, .debug-info {
-  white-space: pre;
-  font-family: monospace;
-  font-size: 12px;
-  vertical-align: top;
-}
-
-.oldlight {
-  background-color: #fee;
-  font-size: 100%;
-}
-
-.newlight {
-  background-color: #dfd;
-  font-size: 100%;
-}
-
-.olddark {
-  background-color: #faa;
-  font-size: 100%;
-}
-
-.newdark {
-  background-color: #9f9;
-  font-size: 100%;
-}
-
-.oldblank, .newblank {
-  background-color: #eee;
-}
-
-.oldreplace1 {
-  background-color: #faa;
-}
-
-.newreplace1 {
-  background-color: #9f9;
-}
-
-.newchangemove1 {
-  background-color: #9f9;
-}
-
-.oldreplace {
-  background-color: #fee;
-}
-
-.olddelete {
-  background-color: #faa;
-}
-
-.newreplace {
-  background-color: #dfd;
-}
-
-.newchangemove {
-  background-color: #dfd;
-}
-
-.newinsert {
-  background-color: #9f9;
-}
-
-.oldinsert, newdelete {
-  background-color: #ddd;
-}
-
-.oldequal, .newequal, .newmove {
-  background-color: #fff;
-}
-
-.oldmove, .oldchangemove, .oldchangemove1, .moved_header, .moved_lno {
-  background-color: #ff9;
-}
-
-.oldmove_out, .oldchangemove_out, .moved_out_header {
-  background-color: #fc8;
-}
-
-.movelight {
-  background-color: #ff9;
-  font-size: 100%;
-}
-
-.oldmovedark {
-  background-color: #faa;
-  font-size: 100%;
-}
-
-.newmovedark {
-  background-color: #9f9;
-  font-size: 100%;
-}
-
-.visualtab {
-	color: red;
-	font-weight: bold;
-}
-
-#signin-link {
-  margin-top: 20px;
-}
-
-/** end code **/
-
-
-/* ****** Publish page ****** */
-/* Also used on Edit/Add reviewers page */
-
-.publish_table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-.publish_table th {
-  vertical-align: top;
-  text-align: left;
-  background-color: #d4e9a9;
-  padding: 4px 15px 0 10px;
-  border-top: 2px solid white;
-  border-bottom: 2px solid white;
-}
-
-.publish_table td {
-  padding: 5px 10px 5px 10px;
-  border-top: 2px solid #d4e9a9;
-  border-bottom: 2px solid #d4e9a9;
-}
-
-.publish_table tr.first td {
-}
-
-.publish_table tr.first th {
-  border-top: 2px solid #d4e9a9;
-
-}
-
-.publish_table tr.last td {
-}
-
-.publish_table tr.last th {
-  border-bottom: 2px solid #d4e9a9;
-}
-
-.publish_table tr.buttons td {
-  border-bottom: hidden;
-  border-right: hidden;
-}
-
-.publish_table tr.buttons th {
-  border-bottom: hidden;
-  border-right: hidden;
-}
-
-.publish_table ul {
-  list-style: none;
-  padding: 0;
-  margin: 0;
-}
-
-/* ****** Edit/Add reviewers page ****** */
-#reviewers_mom td {
-  border: none;
-}
-
diff --git a/webapp/static/widgets.js b/webapp/static/widgets.js
deleted file mode 100644
index 08e764c..0000000
--- a/webapp/static/widgets.js
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Copyright (C) 2008 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-// utilities
-// =============================================================================
-
-function trim(str)
-{
-    return str.replace(/^\s+|\s+$/g, '');
-}
-
-function add_input(mom, type, name, value)
-{
-    var input = document.createElement("input");
-    input.type = type;
-    if (name) input.name = name
-    if (value) input.value = value;
-    mom.appendChild(input);
-    return input;
-}
-
-function add_option(select, text, value, selected)
-{
-    var opt = document.createElement("option");
-    opt.text = text;
-    opt.value = value;
-    opt.selected = selected;
-    select.appendChild(opt);
-    return opt;
-}
-
-function set_error(me, error)
-{
-    var o = me.error_div;
-    if (error) {
-        var N = o.childNodes.length;
-        for (var i=0; i<N; i++) {
-            o.removeChild(o.childNodes[0]);
-        }
-        o.appendChild(document.createTextNode(error));
-        o.style.display = "block";
-    } else {
-        o.style.display = "none";
-    }
-}
-
-// inline confirmation dialogs
-// =============================================================================
-function show_confirmation_dialog(button, dialog) {
-    document.getElementById(dialog).style.display = 'block';
-    document.getElementById(button).style.display = 'none';
-}
-
-function hide_confirmation_dialog(button, dialog) {
-    document.getElementById(dialog).style.display = 'none';
-    document.getElementById(button).style.display = 'inline';
-}
-
-
-
-// UserGroupField
-// =============================================================================
-
-function UserGroupField_add_keydown(ev, me)
-{
-    if (ev.keyCode == 13) {
-        // enter
-        UserGroupField_add(me);
-        return false;
-    }
-    return true;
-}
-
-function UserGroupField_insertEntry(me, data, read_only)
-{
-    var entry = new Object();
-    entry.type = data["type"];
-    entry.key = data["key"];
-    if (entry.type == "user") {
-        entry.display_name = data["real_name"] + " <" + data["email"] + ">";
-    } else if (entry.type == "group") {
-        entry.display_name = "Group: " + data["name"];
-    }
-
-    entry.tr = me.table.insertRow(me.table.rows.length-1);
-    var td = entry.tr.insertCell(-1);
-    td.appendChild(document.createTextNode(entry.display_name));
-    var td = entry.tr.insertCell(-1);
-
-    if (read_only) {
-      me.read_only[me.read_only.length] = entry;
-    } else {
-      var input = document.createElement("input");
-      var input = add_input(td, "button", null, "remove");
-      input.onclick = function () { UserGroupField_remove(me, entry); };
-      add_input(td, "hidden", me.name + "_keys", entry.key);
-
-      me.people[me.people.length] = entry;
-    }
-}
-
-function UserGroupField_insertField(mom, name, allow_users, allow_groups,
-    initial, read_only)
-{
-    var me = new Object();
-    me.name = name;
-    me.allow_users = allow_users;
-    me.allow_groups = allow_groups;
-    me.people = []; // The users and groups already added
-    me.read_only = []; // the read-only users & groups
-
-    // the table
-    me.table = document.createElement("table");
-
-    // the add field button
-    var tr = me.table.insertRow(-1);
-    var td = tr.insertCell(-1);
-    me.add_text = add_input(td, "text", name + "_add", "");
-    me.add_text.onkeypress = function(ev) {
-            return UserGroupField_add_keydown(ev, me);
-        };
-    var td = tr.insertCell(-1);
-    var add_button = add_input(td, "button", null, "add");
-    add_button.onclick = function() {
-            UserGroupField_add(me);
-        };
-    var td = tr.insertCell(-1);
-    me.error_div = document.createElement("div");
-    me.error_div.style.display = "none";
-    me.error_div.style.color = "red"; // TODO(joeo) CSS!
-    td.appendChild(me.error_div);
-
-    for (var i=0; i<read_only.length; i++) {
-        UserGroupField_insertEntry(me, read_only[i], true);
-    }
-
-    for (var i=0; i<initial.length; i++) {
-        UserGroupField_insertEntry(me, initial[i], false);
-    }
-
-    mom.appendChild(me.table);
-}
-
-function UserGroupField_userInList(me, key, type, list) {
-    for (var i=0; i<list.length; i++) {
-        if (list[i].key == key) {
-            if (type == "user") {
-                set_error(me, "That user is already added.");
-            } else {
-                set_error(me, "That group is already added.");
-            }
-            return true;
-        }
-    }
-    return false;
-}
-
-function UserGroupField_add(me)
-{
-    // figure out the value they want
-    var val = trim(me.add_text.value);
-    if (val.length == 0) {
-        // bail if it is empty
-        me.add_text.value = "";
-        return;
-    }
-
-    if (me.add_text.ajaxController) {
-        me.add_text.ajaxController.cancel();
-    }
-    me.add_text.ajaxController = get_json(
-            "/user_info?op=get_user_info&id=" + escape(val)
-                + "&allow_users=" + me.allow_users + "&allow_groups=" + me.allow_groups,
-            function(success, result) {
-                if (!success) {
-                    show_bad_connection_error("UserGroupField_add_callback");
-                    return;
-                }
-                
-                if (!result) {
-                    if (me.allow_users && me.allow_groups) {
-                        set_error(me, "Not a registered email address or group name.");
-                    } else if (me.allow_users) {
-                        set_error(me, "Not a registered email address.");
-                    } else if (me.allow_groups) {
-                        set_error(me, "Not a registered group name.");
-                    }
-                    return;
-                }
-
-                // check to make sure it is not a duplicate
-                var key = result["key"];
-                var type = result["type"];
-                if (UserGroupField_userInList(me, key, type, me.people)
-                        || UserGroupField_userInList(me, key, type, me.read_only)) {
-                    return;
-                }
-
-                // add the new row and hidden inputs
-                UserGroupField_insertEntry(me, result, false);
-
-                // clear the error and text box
-                set_error(me, null);
-                me.add_text.value = "";
-            });
-}
-
-function UserGroupField_remove(me, entry)
-{
-    for (var i in me.people) {
-        if (me.people[i] == entry) {
-            entry.tr.parentNode.removeChild(entry.tr)
-            me.people.splice(i, 1);
-            break;
-        }
-    }
-}
-
-
-// ApproversField
-// =============================================================================
-
-function ApproversField_insertEntry(me, entry)
-{
-    var files;
-    var key;
-    var approvers;
-    var verifiers;
-    var submitters;
-    var bad_files;
-    if (entry) {
-        files = entry["files"];
-        bad_files = entry["bad_files"];
-        key = entry["key"];
-        approvers = entry["approvers"];
-        verifiers = entry["verifiers"];
-        submitters = entry["submitters"];
-    } else {
-        files = "";
-        bad_files = "";
-        key = "added_" + me.key_index;
-        me.key_index = me.key_index + 1;
-        approvers = [];
-        verifiers = [];
-        submitters = [];
-    }
-    var field_key = me.name + "_" + key;
-
-    var tr = me.table.insertRow(me.table.rows.length);
-    var td = tr.insertCell(-1);
-
-    var style = me.styles["approval"];
-    if (style) {
-        td.className = style;
-    }
-
-    if (bad_files.length > 0) {
-        var bad_files_div = document.createElement("div");
-        td.appendChild(bad_files_div);
-        bad_files_div.className = "bad_files";
-        bad_files_div.appendChild(document.createTextNode("Illegal file paths:"));
-        var bad_files_ul = document.createElement("ul");
-        bad_files_div.appendChild(bad_files_ul);
-        for (var i in bad_files) {
-            var bad_file_li = document.createElement("li");
-            bad_files_ul.appendChild(bad_file_li);
-            bad_file_li.appendChild(document.createTextNode(bad_files[i]));
-        }
-    }
-
-    var textarea = document.createElement("textarea");
-    textarea.name = field_key + "_files";
-    textarea.cols = 100;
-    textarea.rows = 5;
-    textarea.appendChild(document.createTextNode(files));
-    td.appendChild(textarea);
-
-    me.keys_field = add_input(td, "hidden", me.name + "_keys", key);
-
-    var field_table = document.createElement("table");
-    field_table.width = "100%";
-    td.appendChild(field_table);
-    var field_tr = field_table.insertRow(-1);
-    var field_td = document.createElement("th");
-    field_tr.appendChild(field_td);
-    field_td.appendChild(document.createTextNode("Approvers"));
-
-    field_td = document.createElement("th");
-    field_tr.appendChild(field_td);
-    field_td.appendChild(document.createTextNode("Verifiers"));
-
-    field_td = document.createElement("th");
-    field_tr.appendChild(field_td);
-    field_td.appendChild(document.createTextNode("Submitters"));
-
-    var field_tr = field_table.insertRow(-1);
-    field_td = field_tr.insertCell(-1);
-    UserGroupField_insertField(field_td, field_key + "_approvers", true, true,
-            approvers, []);
-    
-    field_td = field_tr.insertCell(-1);
-    UserGroupField_insertField(field_td, field_key + "_verifiers", true, true,
-            verifiers, []);
-
-    field_td = field_tr.insertCell(-1);
-    UserGroupField_insertField(field_td, field_key + "_submitters", true, true,
-            submitters, []);
-    
-    var td = tr.insertCell(-1);
-    td.vAlign = "top";
-    var input = add_input(td, "button", null, "remove");
-    input.onclick = function () { ApproversField_remove(me, tr); };
-    if (style) {
-        td.className = style;
-    }
-}
-
-function ApproversField_insertField(mom, name, initial, styles)
-{
-    var me = new Object();
-    me.name = name;
-    me.key_index = 0;
-    me.styles = styles;
-
-    mom = document.getElementById(mom);
-
-    me.div = document.createElement("div");
-    me.table = document.createElement("table");
-    me.div.appendChild(me.table);
-
-    for (var i=0; i<initial.length; i++) {
-        ApproversField_insertEntry(me, initial[i]);
-    }
-
-    var add_button = add_input(me.div, "button", null, "Add Approver");
-    add_button.onclick = function() { ApproversField_add(me); };
-
-    mom.appendChild(me.div);
-}
-
-function ApproversField_add(me)
-{
-    ApproversField_insertEntry(me, null);
-}
-
-function ApproversField_remove(me, tr)
-{
-    me.table.deleteRow(tr);
-}
-
-
-// ApproversField
-// =============================================================================
-
-function ProjectField_insertEntry(me, name, project_list, value)
-{
-    var s = document.createElement("select");
-    s.name = name;
-    s.className = "project-field"
-    me.mom.appendChild(s);
-    add_option(s, "--", null, value == null);
-    for (var i in project_list) {
-        var p = project_list[i];
-        add_option(s, p["name"], p["key"], p["key"] == value);
-    }
-    me.last = s;
-
-    s.onclick = function() {
-            if (s.selectedIndex == 0) {
-                // the -- item
-                if (s != me.last) {
-                    me.mom.removeChild(s);
-                }
-            } else {
-                if (s == me.last) {
-                    ProjectField_insertEntry(me, name, project_list, "--");
-                }
-            }
-        };
-}
-
-function ProjectField_insertField(mom, name, project_list, initial)
-{
-    var me = new Object();
-    me.mom = mom;
-
-    var current = new Array(initial.length);
-    for (var i in initial) {
-        current[i] = initial[i];
-    }
-
-    for (var i in current) {
-        ProjectField_insertEntry(me, name, project_list, current[i]);
-    }
-    ProjectField_insertEntry(me, name, project_list, null);
-}
-
diff --git a/webapp/static/x.png b/webapp/static/x.png
deleted file mode 100644
index 825397b..0000000
--- a/webapp/static/x.png
+++ /dev/null
Binary files differ
diff --git a/webapp/static/zippyplus.gif b/webapp/static/zippyplus.gif
deleted file mode 100644
index 596b212..0000000
--- a/webapp/static/zippyplus.gif
+++ /dev/null
Binary files differ
diff --git a/webapp/templates/404.html b/webapp/templates/404.html
deleted file mode 100644
index e45a7d3..0000000
--- a/webapp/templates/404.html
+++ /dev/null
@@ -1 +0,0 @@
-<h1>404 Not Found</h1>
diff --git a/webapp/templates/500.html b/webapp/templates/500.html
deleted file mode 100644
index 58e8bf1..0000000
--- a/webapp/templates/500.html
+++ /dev/null
@@ -1 +0,0 @@
-<h1>500 Server Error</h1>
diff --git a/webapp/templates/admin.html b/webapp/templates/admin.html
deleted file mode 100644
index 0ae226e..0000000
--- a/webapp/templates/admin.html
+++ /dev/null
@@ -1,7 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Admin{%endblock%}
-{%block body%}
-
-
-{%endblock%}
-
diff --git a/webapp/templates/admin_base.html b/webapp/templates/admin_base.html
deleted file mode 100644
index 134134f..0000000
--- a/webapp/templates/admin_base.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{%extends "base.html"%}
-
-{%block mainmenu2%}
-  <div class="left_nav_box">
-  <h4>Admin</h4>
-  <ul>
-  {% if request.user_is_admin %}
-    <li><a href="{%url codereview.people.admin_users%}">Users</a></li>
-    <li><a href="{%url codereview.people.admin_groups%}">Groups</a></li>
-  {% endif %}
-  {% if request.user_is_admin or request.projects_owned_by_user %}
-    <li><a href="{%url codereview.project.project_list%}">Projects</a></li>
-  {% endif %}
-  {% if is_gae_admin %}
-    <li><a href="{%url codereview.views.admin_settings%}">Settings</a></li>
-  {% endif %}
-  </ul>
-  </div><!-- div class="left_nav_box" -->
-{%endblock%}
-
-
diff --git a/webapp/templates/admin_datastore_delete.html b/webapp/templates/admin_datastore_delete.html
deleted file mode 100644
index d5a36d1..0000000
--- a/webapp/templates/admin_datastore_delete.html
+++ /dev/null
@@ -1,47 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Data Store Delete{%endblock%}
-{%block body%}
-
-<h2>Data Store Delete</h2>
-
-<div id="warning-message">
-<p>If you really mean to delete your data
-store enter <code>DELETE EVERYTHING</code>
-into the box below.
-</p>
-
-<p><b><i><font color="rd">
-Once started, there is no going back from this operation.
-</font></i></b></p>
-</div>
-
-<p id="active-message" style="display:none">
-<font color="red"><blink>Deleting... please wait ...</blink></font>
-</p>
-
-<form
-  name="delete_form"
-  method="POST"
-  action="{%url codereview.views.admin_datastore_delete%}">
-<table>
-{{form}}
-<tr><td><input type="submit" value="Delete Everything" /></td></tr>
-</table>
-</form>
-
-<script type="text/javascript"><!--
-if (document.delete_form.really.value == 'DELETE EVERYTHING') {
-  var hide;
-
-  hide = document.getElementById('warning-message');
-  hide.style.display = 'none';
-
-  hide = document.getElementById('active-message');
-  hide.style.display = 'inline';
-
-  setTimeout('document.delete_form.submit()', 500);
-}
-// -->
-</script>
-
-{%endblock%}
diff --git a/webapp/templates/admin_datastore_upgrade.html b/webapp/templates/admin_datastore_upgrade.html
deleted file mode 100644
index 33aae7f..0000000
--- a/webapp/templates/admin_datastore_upgrade.html
+++ /dev/null
@@ -1,45 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Data Store Upgrade{%endblock%}
-{%block body%}
-
-<h2>Data Store Upgrade</h2>
-
-<div id="warning-message">
-<p>If you really mean to upgrade your data store enter
-<code>UPGRADE</code> into the box below.</p>
-
-<p><b><i><font color="rd">
-Once started, there is no going back from this operation.
-</font></i></b></p>
-</div>
-
-<p id="active-message" style="display:none">
-<font color="red"><blink>Upgrading... please wait ...</blink></font>
-</p>
-
-<form
-  name="upgrade_form"
-  method="POST"
-  action="{%url codereview.views.admin_datastore_upgrade%}">
-<table>
-{{form}}
-<tr><td><input type="submit" value="Upgrade" /></td></tr>
-</table>
-</form>
-
-<script type="text/javascript"><!--
-if (document.upgrade_form.really.value == 'UPGRADE') {
-  var hide;
-
-  hide = document.getElementById('warning-message');
-  hide.style.display = 'none';
-
-  hide = document.getElementById('active-message');
-  hide.style.display = 'inline';
-
-  setTimeout('document.upgrade_form.submit()', 500);
-}
-// -->
-</script>
-
-{%endblock%}
diff --git a/webapp/templates/admin_group.html b/webapp/templates/admin_group.html
deleted file mode 100644
index 086b1e3..0000000
--- a/webapp/templates/admin_group.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Users{%endblock%}
-{%block body%}
-
-{%if group%}
-<h2>Group {{group.name}}</h2>
-{%else%}
-<h2>New Group</h2>
-{%endif%}
-
-<form
-{%if group%}
-action="{%url codereview.people.admin_group group.name%}"
-{%else%}
-action="{%url codereview.people.admin_group_new%}"
-{%endif%}
-method="post">
-<table>
-{{form}}
-<tr><td><input name="save" type="submit" value="Save"></td></tr>
-</table>
-</form>
-
-{%if group and is_gae_admin%}
-<h2>Delete Group {{group.name}}</h2>
-
-<form action="{{del_url}}" method="post">
-{{del_url|form_xsrf}}
-<input type="submit" value="Delete Group"> There is no undo!
-</form>
-{%endif%}
-
-{%endblock%}
diff --git a/webapp/templates/admin_groups.html b/webapp/templates/admin_groups.html
deleted file mode 100644
index 7c4eea2..0000000
--- a/webapp/templates/admin_groups.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Groups{%endblock%}
-{%block body%}
-
-<h2>Groups</h2>
-
-<p><a href="{%url codereview.people.admin_group_new%}">New Group</a></p>
-<div class="change-list" style="width: inherit;">
-  <table id="queues" style="width: inherit;">
-    <tr>
-        <th>Name</th>
-        <th>Description</th>
-    </tr>
-    {%for group in groups%}
-    <tr>
-        <td><a href="{%url codereview.people.admin_group group.name%}">{{group.name}}</a></td>
-        <td>{{group.comment}}</td>
-    </tr>
-    {%endfor%}
-  </table>
-</div>
-
-{%endblock%}
diff --git a/webapp/templates/admin_project.html b/webapp/templates/admin_project.html
deleted file mode 100644
index 8bda24a..0000000
--- a/webapp/templates/admin_project.html
+++ /dev/null
@@ -1,57 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Users{%endblock%}
-{%block body%}
-
-{%if project%}
-<h2>Project {{project.name}}</h2>
-{%else%}
-<h2>New Project</h2>
-{%endif%}
-
-<form
-{%if project%}
-action="{%url codereview.project.project_edit project.name%}"
-{%else%}
-action="{%url codereview.project.project_new%}"
-{%endif%}
-method="post">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-<table class="largeform">
-<tr><th class="largeform_field">{{form.name.label_tag}}</th></tr>
-<tr><td class="largeform_field">{{form.name}}</td></tr>
-
-<tr><th class="largeform_field">{{form.comment.label_tag}}</th></tr>
-<tr><td class="largeform_field">{{form.comment}}</td></tr>
-
-<tr><th class="largeform_field">{{form.owners.label_tag}}</th></tr>
-<tr><td class="largeform_field">{{form.owners}}</td></tr>
-
-<tr><th class="largeform_field">Code Review</th></tr>
-<tr><td class="largeform_field">{{form.code_reviews}}</td></tr>
-
-
-<tr><td>
-    <input name="save" type="submit" value="Save">
-</td></tr>
-</table>
-</form>
-
-{%if project and is_gae_admin%}
-<h2>Delete Project {{project.name}}</h2>
-
-<form action="{{del_url}}" method="post">
-{{del_url|form_xsrf}}
-<input type="submit" value="Delete Project"> There is no undo!
-</form>
-{%endif%}
-
-{%endblock%}
diff --git a/webapp/templates/admin_projects.html b/webapp/templates/admin_projects.html
deleted file mode 100644
index 2ad86d0..0000000
--- a/webapp/templates/admin_projects.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Project{%endblock%}
-{%block body%}
-
-<h2>Projects</h2>
-
-{% if request.user_is_admin %}
-<p><a href="{%url codereview.project.project_new%}">New Project</a></p>
-{% endif %}
-
-<div class="change-list" style="width: inherit;">
-  <table id="queues" style="width: inherit;">
-    <tr>
-        <th>Name</th>
-        <th>Description</th>
-    </tr>
-    {%for project in projects%}
-    <tr>
-        <td><a href="{%url codereview.project.project_edit project.name%}">{{project.name}}</a></td>
-        <td>{{project.comment}}</td>
-    </tr>
-    {%endfor%}
-  </table>
-</div>
-
-{%endblock%}
diff --git a/webapp/templates/admin_settings.html b/webapp/templates/admin_settings.html
deleted file mode 100644
index 5533727..0000000
--- a/webapp/templates/admin_settings.html
+++ /dev/null
@@ -1,61 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Settings{%endblock%}
-{%block body%}
-
-<h2>Settings</h2>
-
-<h3>Schema Version:</h3>
-<table border="1">
-<tr>
-  <th>Data Store</th>
-  <th>Source Code</th>
-</tr>
-<tr>
-  <td>{{settings.schema_version}}</td>
-  <td>{{CUR_SCHEMA_VERSION}}</td>
-</tr>
-</table>
-
-<h3>Internal API Key:</h3>
-<code>{{settings.internal_api_key}}</code><br/>
-
-<h3>"From" email:</h3>
-<code>{%if settings.from_email %}{{settings.from_email}}{%else%}NONE SET{%endif%}</code>
-<form method="get" action="/admin/settings/from_email" style="margin-left: 30px; display: inline;">
-  <input type="submit" value="Edit"/>
-</form>
-<form method="post" action="/admin/settings/from_email_test"  style="display: inline;">
-  <input type="hidden" name="xsrf" value="{{from_email_test_xsrf}}"/>
-  <input type="submit" value="Test" />
-</form>
-
-<h3>"Merge Log" email:</h3>
-(CC'd on all merge messages)<br />
-<code>{%if settings.merge_log_email %}{{settings.merge_log_email}}{%else%}NONE SET{%endif%}</code>
-<form method="get" action="/admin/settings/merge_log_email" style="margin-left: 30px; display: inline;">
-  <input type="submit" value="Edit"/>
-</form>
-
-<h3>Track code for <a href="http://www.google.com/analytics/">Google Analytics</a>:</h3>
-<form method="get" action="/admin/settings/analytics">
-  <code>{%if settings.analytics %}{{settings.analytics}}{%else%}NONE SET{%endif%}</code>
-  <input type="submit" value="Edit" style="margin-left: 30px;"/>
-</form>
-
-<h3>Canonical URL</h3>
-(used in emails)<br/>
-<code>{%if settings.canonical_url %}{{settings.canonical_url}}{%else%}NONE SET{%endif%}</code>
-<form method="get" action="/admin/settings/canonical_url" style="margin-left: 30px; display: inline;">
-  <input type="submit" value="Edit"/>
-</form>
-
-<h3>Source Browser URL</h3>
-<code>{%if settings.source_browser_url %}{{settings.source_browser_url}}{%else%}NONE SET{%endif%}</code>
-<form method="get" action="/admin/settings/source_browser_url"
-    style="margin-left: 30px; display: inline;">
-  <input type="submit" value="Edit"/>
-</form>
-
-
-
-{%endblock%}
diff --git a/webapp/templates/admin_settings_analytics.html b/webapp/templates/admin_settings_analytics.html
deleted file mode 100644
index 3968f9d..0000000
--- a/webapp/templates/admin_settings_analytics.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Settings: Analytics{%endblock%}
-{%block body%}
-
-<form action="/admin/settings/analytics" method="post">
-<table>
-{{form}}
-<tr><td><input name="save" type="submit" value="Save"></td></tr>
-</table>
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/admin_settings_canonical_url.html b/webapp/templates/admin_settings_canonical_url.html
deleted file mode 100644
index daf4eb5..0000000
--- a/webapp/templates/admin_settings_canonical_url.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Settings: From email{%endblock%}
-{%block body%}
-
-<form action="/admin/settings/canonical_url" method="post">
-<table>
-{{form}}
-
-<p>The url should contain the http and should not contain a trailing slash.
-For example: http://review.source.android.com.</p>
-<tr><td><input name="save" type="submit" value="Save"></td></tr>
-</table>
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/admin_settings_from_email.html b/webapp/templates/admin_settings_from_email.html
deleted file mode 100644
index 3d130a6..0000000
--- a/webapp/templates/admin_settings_from_email.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Settings: From email{%endblock%}
-{%block body%}
-
-<form action="/admin/settings/from_email" method="post">
-<table>
-{{form}}
-<tr><td><input name="save" type="submit" value="Save"></td></tr>
-</table>
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/admin_settings_from_email_test.html b/webapp/templates/admin_settings_from_email_test.html
deleted file mode 100644
index 1af151d..0000000
--- a/webapp/templates/admin_settings_from_email_test.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Settings{%endblock%}
-{%block body%}
-
-<h1>From Email</h1>
-
-<b>Status</b>
-<pre style="border: 1px solid gray; min-height: 10px;">{{status}}</pre>
-<b>Email</b>
-<pre style="border: 1px solid gray; min-height: 10px;">{{address}}</pre>
-
-{%endblock%}
-
diff --git a/webapp/templates/admin_settings_merge_log_email.html b/webapp/templates/admin_settings_merge_log_email.html
deleted file mode 100644
index f98f79a..0000000
--- a/webapp/templates/admin_settings_merge_log_email.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Settings: Merge Log Email{%endblock%}
-{%block body%}
-
-<form action="/admin/settings/merge_log_email" method="post">
-<table>
-{{form}}
-<tr><td><input name="save" type="submit" value="Save"></td></tr>
-</table>
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/admin_settings_source_browser_url.html b/webapp/templates/admin_settings_source_browser_url.html
deleted file mode 100644
index 163113c..0000000
--- a/webapp/templates/admin_settings_source_browser_url.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Settings: Source Browser URL{%endblock%}
-{%block body%}
-
-<form action="/admin/settings/source_browser_url" method="post">
-<table>
-{{form}}
-
-<p>The url should contain %(id)s, which will be replaced by the revision id
-and %(project)s, which will be replaced by the project name.</p>
-<tr><td><input name="save" type="submit" value="Save"></td></tr>
-</table>
-</form>
-
-{%endblock%}
-
diff --git a/webapp/templates/admin_unverified_clas.html b/webapp/templates/admin_unverified_clas.html
deleted file mode 100644
index 57bbf28..0000000
--- a/webapp/templates/admin_unverified_clas.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Unverified CLAs{%endblock%}
-{%block body%}
-
-<h2>Unverified CLAs</h2>
-
-<table class="change-list">
-<tr>
-  <th>Email Address</th>
-  <th>Name</th>
-  <th>Created</th>
-</tr>
-{%for u in unverified_users%}
-<tr>
-  <td><a href="{%url codereview.people.admin_user u.email%}">{{u.email}}</td>
-  <td>{{u.real_name}}</td>
-  <td>{{u.created}}</td>
-</tr>
-{%endfor%}
-<tr>
-  <th colspan="3" style="text-align: right;">
-  {%if next_email%}
-    <a href="{%url codereview.people.admin_unverified_clas%}?first={{next_email}}">Next {{next_size}} &gt;</a>
-  {%endif%}
-  </th>
-</tr>
-</table>
-
-{%endblock%}
diff --git a/webapp/templates/admin_user.html b/webapp/templates/admin_user.html
deleted file mode 100644
index ce1c188..0000000
--- a/webapp/templates/admin_user.html
+++ /dev/null
@@ -1,79 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Users{%endblock%}
-{%block body%}
-
-<h2>User {{email}}</h2>
-
-<form action="{%url codereview.people.admin_user email%}" method="POST">
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-{{form.dest}}
-
-<table class="largeform">
-<tr><th class="largeform_field">User Information</th></tr>
-<tr><td class="largeform_field">
-<table>
-  <tr><th>Name:</th>
-      <td>{{form.real_name}}{{form.real_name.errors}}</td>
-  </tr>
-  <tr><th>Preferred Email:</th>
-      <td>{{form.preferred_email}}{{form.preferred_email.errors}}</td>
-  </tr>
-  <tr><th>Mailing address:</th>
-      <td>{{form.mailing_address}}{{form.mailing_address.errors}}</td>
-  </tr>
-  <tr><th>Country:</th>
-      <td>{{form.mailing_address_country}}{{form.mailing_address_country.errors}}</td>
-  </tr>
-  <tr><th>Phone Number:</th>
-      <td>{{form.phone_number}}{{form.phone_number.errors}}</td>
-  </tr>
-  <tr><th>Fax Number:</th>
-      <td>{{form.fax_number}}{{form.fax_number.errors}}</td>
-  </tr>
-</table>
-</table>
-
-<table class="largeform">
-<tr><th class="largeform_field">Groups</th></tr>
-<tr><td class="largeform_field">{{form.groups}}</td></tr>
-</table>
-
-<table class="largeform">
-<tr><th class="largeform_field">Contributor License Agreement</th></tr>
-<tr><td class="largeform_field">
-<table>
-  <tr><th>CLA Verified:</th>
-      <td>{{form.cla_verified}}
-      <font color="#555">Changes to this field are logged.</font>
-      </td>
-  </tr>
-  <tr><th>CLA Verified By:</th>
-      <td>{{form.initial.cla_verified_by}}</td>
-  </tr>
-  <tr><th>CLA First Verified:</th>
-      <td>{{form.initial.cla_verified_timestamp}}</td>
-  </tr>
-  <tr><th>Individual CLA Version:</th>
-      <td>{{form.initial.individual_cla_version}}</td>
-  </tr>
-  <tr><th>Individual CLA Timestamp:</th>
-      <td>{{form.initial.individual_cla_timestamp}}</td>
-  </tr>
-  <tr><th>Comments:</th>
-      <td>{{form.cla_comments}}</td>
-  </tr>
-</table>
-</table>
-
-<input name="save" type="submit" value="Save">
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/admin_users.html b/webapp/templates/admin_users.html
deleted file mode 100644
index 23a6cd0..0000000
--- a/webapp/templates/admin_users.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{%extends "admin_base.html"%}
-{%block title1%}Users{%endblock%}
-{%block body%}
-
-<h2>Users</h2>
-
-<script>
-function user_button_submit() {
-  var email = document.getElementById('straight_to_user').value;
-  url = '/admin/user/' + email;
-  document.getElementById('straight_to_user_form').action = url;
-}
-</script>
-<form id="straight_to_user_form" style="margin: 15px;" onsubmit="user_button_submit()">
-  <label for="straight_to_user">Email Address:</label>
-  <input type="text" id="straight_to_user" />
-  <input type="submit" value="Edit User"/>
-</form>
-
-<h2>User Lists</h2>
-<ul>
-  <li><a href="{%url codereview.people.admin_unverified_clas%}">Unverified CLAs</a></li>
-</ul>
-
-{%endblock%}
diff --git a/webapp/templates/base.html b/webapp/templates/base.html
deleted file mode 100644
index 7319988..0000000
--- a/webapp/templates/base.html
+++ /dev/null
@@ -1,203 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-  "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-  <title>
-    {%if is_dev%}
-      (DEV)
-    {%endif%}
-    {%block title1%}
-      {%if patch%}{{patch.filename}} -{%endif%}
-    {%endblock%}
-    {%block title2%}
-      {%if change%}Change {{change.key.id}}: {{change.subject|truncatewords:11}} -{%endif%}
-    {%endblock%}
-    Code Review
-  </title>
-  <link rel="icon" href="/favicon.ico" />
-  <link type="text/css" rel="stylesheet" href="/static/style.css" />
-  <script type="text/javascript" src="/static/ajax.js"></script>
-  <script type="text/javascript" src="/static/script.js"></script>
-  <script type="text/javascript" src="/static/widgets.js"></script>
-{%if star_url%}
-  <script type="text/javascript"><!--
-  function M_addChangeStar(id) {
-    return M_setChangeStar_(id, '{{star_url}}', '{{star_url|bare_xsrf}}');
-  }
-  function M_removeChangeStar(id) {
-    return M_setChangeStar_(id, '{{unstar_url}}', '{{unstar_url|bare_xsrf}}');
-  }
-  // -->
-  </script>
-{%endif%}
-{%block additionalhead%}{%endblock%}
-</head>
-<body>
-
-<div id="ajax_progress" class="ajax_progress" style="display: none;">
-    Loading
-</div>
-<div id="ajax_error" style="display: none;">
-    There was an error connecting to the server.  Please try again.
-</div>
-
-<!-- Begin help window -->
-<script type="text/javascript"><!--
-var helpDisplayed = false;
-document.onclick = M_clickCommon;
-{%if change%}
-var publish_link = "{%url codereview.views.publish change.key.id%}";
-{%endif%}
-// -->
-</script>
-<div id="help" style="display: none;">
-{%block help%}{%endblock%}
-<div style="font-size: medium; text-align: center;">Keyboard Shortcuts</div>
-<hr />
-<table width="100%">
-
-  <tr valign="top">
-    <td>
-      <table width="100%">
-        <tr>
-          <td></td><th>File</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">u</span> <b>:</b></td><td>up to change</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">m</span> <b>:</b></td><td>publish + mail comments</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to file after / before current file</td>
-        </tr>
-        <tr>
-          <td></td><th>Side-by-side diff</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">i</span> <b>:</b></td><td>toggle intra-line diffs</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">e</span> <b>:</b></td><td>expand all comments</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">c</span> <b>:</b></td><td>collapse all comments</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">s</span> <b>:</b></td><td>toggle showing all comments</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">n</span> / <span class="letter">p</span> <b>:</b></td><td>next / previous diff chunk or comment</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">N</span> / <span class="letter">P</span> <b>:</b></td><td>next / previous comment</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>respond to / edit current comment</td>
-        </tr>
-      </table>
-    </td>
-    <td>
-      <table width="100%"> 
-        <tr>
-         <td></td><th>Change</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">u</span> <b>:</b></td><td>up to list of changes</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">m</span> <b>:</b></td><td>publish + mail comments</td>
-        </tr>
-        <tr><td>&nbsp;</td></tr>
-        <tr><td></td><th>Change List</th></tr>
-        <tr>
-          <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to change after / before current change</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">o</span> / <span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>open current change</td>
-        </tr>
-        <tr><td>&nbsp;</td></tr>
-        <tr><td>&nbsp;</td></tr>
-        <tr>
-          <td></td><th>Comment editing</th>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">&lt;Ctrl&gt;</span> + <span class="letter">s</span> <b>:</b></td><td>save comment</td>
-        </tr>
-        <tr>
-          <td class="shortcut"><span class="letter">&lt;Esc&gt;</span> <b>:</b></td><td>cancel edit</td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-
-</table>
-</div>
-<!-- End help window -->
-
-<div id="top_nav">
-<div id="top_nav_left">
-{%if is_dev%}
-  <font style="color:green; font-weight:bold">DEVELOPMENT SERVER</font>
-{%endif%}
-</div>
-
-<div id="top_nav_right">
-{%if user%}
-  <b>{{user.email}} ({{user|real_name:"x"}})</b> |
-  <a class="novisit" href="{%url codereview.settings.settings%}">Settings</a> |
-{%endif%}
-{%if is_dev%}
-  <a class="novisit" target="_blank" href="/_ah/admin">Dev Admin</a> |
-{%endif%}
-{%if user%}
-  <a class="novisit" href="{{sign_out}}">Sign out</a>
-{% else %}
-  <a class="novisit" href="{{sign_in}}">Sign in</a>
-{%endif%}
-</div><!-- top_nav_right -->
-</div><!-- top_nav -->
-
-<div id="masthead">
-<a href="/"><img id="masthead_logotype" src="/static/customLogo.png" border="0" /></a>
-<img id="masthead_bugdroid"  src="/static/android_heart.png"/>
-</div>
-
-<div id="left_nav">
-  {%if user %}
-  <div class="left_nav_box">
-    <h4>Tools</h4>
-    <ul>
-      <li><a href="{%url codereview.views.mine %}">Code Review</a></li>
-      {%if request.show_admin_tab %}
-      <li><a href="{%url codereview.views.admin %}">Admin</a></li>
-      {%endif %}
-    </ul>
-  </div><!-- div class="left_nav_box" -->
-  {%endif %}
-{%block mainmenu2%}{%endblock%}
-</div>
-
-
-<div id="main_content_parent">
-<div id="main_content">
-{%block body%}BODY GOES HERE{%endblock%}
-</div><!-- main_content -->
-<div id="page_footer">
-{%include "live_revision.html"%}
-</div><!-- page_footer -->
-</div><!-- main_content_parent -->
-{%if analytics%}
-<script type="text/javascript">
-  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." :
-  "http://www.");
-  document.write(unescape("%3Cscript src='" + gaJsHost +
-  "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-  var pageTracker = _gat._getTracker("{{analytics}}");
-  pageTracker._trackPageview();
-</script>
-{%endif%}
-</body>
-</html>
diff --git a/webapp/templates/bundle_heading.html b/webapp/templates/bundle_heading.html
deleted file mode 100644
index 5caf258..0000000
--- a/webapp/templates/bundle_heading.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<tr align="left">
-  <th class="first" colspan="3" align="right">Id</th>
-  <th>Status</th>
-  <th>Owner</th>
-  <th colspan="2">Repository</th>
-  <th colspan="2">Branch</th>
-  <th>Submitted</th>
-  <th>Last updated</th>
-</tr>
diff --git a/webapp/templates/bundle_row.html b/webapp/templates/bundle_row.html
deleted file mode 100644
index 38ac75e..0000000
--- a/webapp/templates/bundle_row.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<tr name="change">
-  <td class="first" width="14"><img src="/static/closedtriangle.gif" 
-    style="visibility: hidden;" width="12" height="9" /></td>
-  <td width="17" align="center"></td>
-  <td align="right">
-    <div class="subject">{{bundle.key.id}}</div>
-  </td>
-  <td align="left">{{bundle.state}}</td>
-  <td><div class="users">{{bundle.owner|show_user}}</div></td>
-  <td colspan="2" align="left">{{bundle.dest_project.name}}</td>
-  <td colspan="2" align="left">{%if bundle.dest_branch %}{{bundle.dest_branch.short_name}}{%endif %}</td>
-  <td><div class="date">{{bundle.created|timesince}}</div></td>
-  <td><div class="date">{{bundle.modified|timesince}}</div></td>
-</tr>
diff --git a/webapp/templates/change.html b/webapp/templates/change.html
deleted file mode 100644
index 539543e..0000000
--- a/webapp/templates/change.html
+++ /dev/null
@@ -1,336 +0,0 @@
-{%extends "change_base.html"%}
-
-{%block change_body%}
-
-{%if last_patchset.draft_count%}
-  <div class="error">
-    You have <b>{{last_patchset.draft_count}} draft</b>
-    comment{{last_patchset.draft_count|pluralize}}. Drafts are not viewable by others;
-    use <a class="novisit" href="{%url codereview.views.publish change.key.id%}">
-    Publish Comments &amp; Approvals</a> ('m') to let others view them.
-  </div>
-{%endif%}
-
-
-<div class="toggled_section">
-  <h2><a id="change-description-pointer"
-     href="javascript:M_toggleSection('change-description')"
-     class="toggled_section_pointer opentriangle">
-    Description</a></h2>
-  <div id="change-description">
-  <table width="100%" style=""><tr><td style="vertical-align: top;">
-{%if change.description%}
-    <pre class="change_description">{{change.description|wordwrap:80|urlize}}</pre>
-{%endif%}</td><td style="vertical-align: top;" align="right">
-    <table class="change_details">
-      <tr class="first">
-        <th>Project</th>
-        <td>{{change.dest_project.name}}</td>
-      </tr>
-      <tr>
-        <th>Branch</th>
-        <td>{{change.dest_branch.short_name}}</td>
-      </tr>
-      <tr>
-        <th>Uploaded</th>
-        <td>{{change.created|timesince}} ago<br />
-            by {{change.owner|show_user}}</td>
-      </tr>
-      <tr class="last">
-        <th>Modified</th>
-        <td>{{change.modified|timesince}} ago</td>
-      </tr>
-    </table>
-  </td></tr>
-  </table>
-  </div>
-</div>
-
-<div class="toggled_section">
-  <h2>
-    <a id="ps-dependson-pointer"
-       href="javascript:M_toggleSection('ps-dependson')"
-       class="toggled_section_pointer {%if show_dependencies %}opentriangle{% endif %}">
-        Dependencies
-    </a>
-  </h2>
-  <div id="ps-dependson"
-       style="{%if not show_dependencies %}display:none{% endif %}">
-    {{dependencies_table}}
-  </div>
-</div>
-
-<div class="toggled_section">
-  <h2>
-    <a id="ps-approvals-pointer"
-       href="javascript:M_toggleSection('ps-approvals')"
-       class="toggled_section_pointer opentriangle">
-        Approvals
-    </a>
-  </h2>
-  <div id="ps-approvals" style="padding-left:4px;">
-    <table class="change_info_table" cellpadding="0" cellspacing="0" border="0" id="">
-      <tr>
-        <th class="leftmost" colspan="2">Reviewer</th>
-        <th class="score">Verified</th>
-        <th class="score rightmost">Code review</th>
-        <th class="hint"></th>
-      </tr>
-      <tr>
-        <td>{{change.owner|show_user}}</td>
-        <td></td>
-        <td class="score">{%if author_status.verified %}<img src="/static/check.png">{%endif%}</td>
-        <td class="score">{{author_status.lgtm|review_status_icons}}</td>
-        <td class="hint">{% ifequal author_status.lgtm "lgtm" %}Self approved.{% endifequal %}</td>
-      </tr>
-      {% for rs in review_status %}
-      <tr>
-        <td>{{rs.user|show_user}}</td>
-        <td>{{rs.user_type}}</td>
-        <td class="score">{%if rs.verified %}<img src="/static/check.png">{%endif%}</td>
-        <td class="score">{{rs.lgtm|review_status_icons}}</td>
-        <td class="hint">{{rs.lgtm|review_status_text}}</font>
-      </tr>
-      {% endfor %}
-    </table>
-
-    {%if user%}
-    <table class="change_actions"><tr>
-      <td class="action">
-        <form method="get" action="{%url codereview.views.publish change.key.id%}">
-          <input type="submit" value="Publish Comments &amp; Approvals" />
-        </form>
-      </td>
-
-      <td class="action">
-        <form action="{{merge_url}}" method="post">
-          {{merge_url|form_xsrf}}
-          <input type="submit"
-            {%if show_submit_button %}{%else%}disabled{%endif%}
-              value="{%if show_submit_button %}Submit Patch Set {{last_patchset.id}}{%else%}Can't Submit{%endif%}"/>
-        </form>
-        <div class="change_status">
-          {%if last_patchset and not last_patchset.complete%}
-            Patch Set Still Uploading
-          {%endif%}
-          {%if change.is_submitted%}
-            {%if change.merged%}
-              Merged
-            {%else%}
-              Merge Pending
-            {%endif%}
-          {%else%}
-            {%if ready_to_submit%}
-              {%if show_submit_button%}
-              {%else%}
-                Ready to submit
-              {%endif%}
-            {%else%}
-              <ul>
-                {%if last_patchset and not last_patchset.complete%}
-                  <li>Patch Set Still Uploading</li>
-                {%endif%}
-                {%if is_rejected %}
-                  <li>Change Rejected</li>
-                {%endif%}
-                {%if not is_approved %}
-                  <li>Needs Code Review</li>
-                {%endif%}
-                {%if not is_verified %}
-                  <li>Needs Verification</li>
-                {%endif%}
-              </ul>
-            {%endif%}
-          {%endif%}
-      </td>
-
-      <td class="action">
-      {%if show_more_options %}
-        <script type="text/javascript">
-        </script>
-        <input type="button" id="more_options" value="More options..."
-                 onclick="show_confirmation_dialog('more_options', 'more_options_div');" />
-        <table id="more_options_div" style="display: none;" class="more_options_dialog">
-          <tr><th colspan="2">
-            More options
-          </td></tr>
-          {%if show_edit_reviewers_button %}
-          <tr><td>
-            <form action="{{reviewers_url}}" method="get" style="display: inline;">
-                <input type="submit" value="Edit reviewers...">
-            </form>
-          </td>
-          <td>
-            Edit the reviewers for this change.
-          </td></tr>
-          {% endif %}
-          {%if show_add_reviewers_button %}
-          <tr><td>
-            <form action="{{reviewers_url}}" method="get" style="display: inline;">
-                <input type="submit" value="Add reviewers...">
-            </form>
-          </td>
-          <td>
-            Add reviewers to this change.
-          </td></tr>
-          {% endif %}
-          {%if show_remove_self_button %}
-          <tr><td>
-            <form action="{{remove_self_url}}" method="post" style="display: inline;">
-                {{remove_self_url|form_xsrf}}
-                <input type="submit" value="Remove my review">
-            </form>
-          </td>
-          <td>
-            Remove yourself as a reviewer, will also remove any positive or
-            negative scores.
-          </td></tr>
-          {% endif %}
-          <tr><td>
-            <form action="{{delete_url}}" method="post" style="display: inline;">
-                {{delete_url|form_xsrf}}
-                <input type="submit" value="Delete">
-            </form>
-          </td>
-          <td>
-            Delete this change<br/><b>(there is no undo!)</b>
-            <br/>
-          </td></tr>
-          <tr><td colspan=2>
-            <input type="button" value="Cancel"
-                    onclick="hide_confirmation_dialog('more_options', 'more_options_div');" />
-          </td></tr>
-        </table>
-      {%endif%}
-      </td>
-    </tr></table>
-    {%endif%}
-  </div>
-</div>
-
-{%for patchset in patchsets%}
-<div class="toggled_section">
-  <h2>
-    <a id="ps-{{patchset.key.id}}-pointer"
-       href="javascript:M_togglePatchSetSection('{{change.key.id}}','{{patchset.key.id}}')"
-       class="toggled_section_pointer {%if forloop.last%}opentriangle{%endif%}">
-      Patch Set {{patchset.id}}</a>
-      <font style="font-weight: normal; font-size: 12px;">
-        <a href="{{patchset|patchset_browse_url}}">{{patchset.revision_hash}}</a></font>
-  </h2>
-  {%if forloop.last%}
-    <div id="ps-{{patchset.key.id}}">
-      {%include "patchset.html"%}
-    </div>
-  {%else%}
-    <div id="ps-{{patchset.key.id}}"
-         style="display:none">
-    </div>
-  {%endif%}
-</div>
-{%endfor%}
-
-{%if messages%}
-<div class="toggled_section">
-  <h2>
-    <a id="messages-pointer"
-       href="javascript:M_toggleSection('messages')"
-       class="toggled_section_pointer opentriangle">
-      Messages
-    </a>
-  </h2>
-
-  {%if messages%}<div><i>Total messages: {{messages|length}}</i></div>{%endif%}
-
-  <div id="messages">
-    <div style="margin-bottom: .5em;">
-      <a href="javascript:M_showAllComments('cl', {{messages|length}})">
-        Expand All Messages</a>
-      |
-      <a href="javascript:M_hideAllComments('cl', {{messages|length}})">
-        Collapse All Messages</a>
-    </div>
- 
-    {%for message in messages%}
-      <div class="message">
-        <div class="header">
-          <table border="0" width="100%" cellspacing="0" cellpadding="0">
-            <tr class="comment_title"
-                onclick="M_switchChangelistComment({{forloop.counter0}})">
-              <td style="padding-left: 5px; white-space: nowrap;">
-                <b>{{message.sender|real_name}}</b>
-              </td>
-              <td>
-                <table style="table-layout:fixed; white-space: nowrap;"
-                       width="100%">
-                  <tr>
-                    <td>
-                      <div style="white-space: nowrap; overflow: hidden;{%if forloop.last%} visibility: hidden;{%endif%}"
-                           class="extra"
-                           id="cl-preview-{{forloop.counter0}}">
-                          {{message.text|truncatewords:15}}
-                       </div>
-                    </td>
-                  </tr>
-                </table>
-              </td>
-              <td align="right" style="white-space: nowrap; padding-right: 5px;">
-                {{message.date|timesince}} ago
-              </td>
-            </tr>
-          </table>
-        </div>
-
-        <div id="cl-comment-{{forloop.counter0}}"
-             {%if forloop.last%}{%else%}style="display: none;"{%endif%}>
-          <div class="message-body">
-            <pre name="cl-message-{{forloop.counter0}}"
-            >{{message.text|wordwrap:80|urlize}}</pre>
-          </div>
-        </div>
-
-      </div>
-    {%endfor%}
-    
-    
-    <div>
-      <a href="javascript:M_showAllComments('cl', {{messages|length}})">
-      Expand All Messages</a>
-      |
-      <a href="javascript:M_hideAllComments('cl', {{messages|length}})">
-      Collapse All Messages</a>
-    </div>
-
-  </div>
-</div>
-{%endif%}
-
-
-<script language="JavaScript" type="text/javascript">
-  <!--
-    document.onkeypress = function(evt) { return M_changelistKeyPress(evt); }
-  // -->
-</script>
-
-
-{%if user%}
-  <div style="display:none;">
-    <form method="POST" action="{{reply_url}}" id="message-reply-form">
-      <div>
-        <textarea rows="7" cols="70" name="message"></textarea>
-      </div>
-      {{reply_url|form_xsrf}}
-      <input type="hidden" name="message_only" value="1" />
-      <input type="submit" value="Send Message" />
-      <input type="button" value="Discard" name="discard" />
-      <input type="checkbox" name="send_mail" value="1" 
-             id="message-reply-send-mail" checked="checked" />
-      <label>Send mail to reviewers</label>
-    </form>
-  </div>
-  <a id="resizer" class="resizer" style="display:none;cursor:pointer">
-    <img src="/static/zippyplus.gif">
-  </a>
-{%endif%}
-
-{%endblock%}
diff --git a/webapp/templates/change_base.html b/webapp/templates/change_base.html
deleted file mode 100644
index 88bae54..0000000
--- a/webapp/templates/change_base.html
+++ /dev/null
@@ -1,30 +0,0 @@
-{%extends "changes_base.html"%}
-
-{%block body%}
-  <h1>
-    {%include "change_star.html"%}
-    <a id="upCL" href="{%url codereview.views.show change.key.id%}"
-               onmouseover="M_showPopUp(this, 'popup-change');">
-            Change {{change.key.id}}</a>:
-    {{change.subject|truncatewords:11}} {{change|closed_label}}
-  </h1>
-
-  {%block change_body%}BODY GOES HERE{%endblock%}
-
-{%endblock%}
-
-
-{%block popup%}
-  {%if change%}
-    <div class="popup" id="popup-change">
-      <b>Change {{change.key.id}}: {{change.subject|truncatewords:11}}
-      {{change|closed_label}}</b><br/>
-      Created {{change.created|timesince}} ago by {{change.owner|real_name}}<br/>
-      Modified {{change.modified|timesince}} ago<br/>
-      Reviewers: {{change.reviewers|real_names}}<br/>
-      Comments: {{change.num_comments}}
-      {%if change.num_drafts%} <span style="color: red;">+
-	{{change.num_drafts}} drafts</span>{%endif%}
-    </div>
-  {%endif%}
-{%endblock%}
diff --git a/webapp/templates/change_revision_unknown.html b/webapp/templates/change_revision_unknown.html
deleted file mode 100644
index 7119535..0000000
--- a/webapp/templates/change_revision_unknown.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{%extends "change_base.html"%}
-
-{% block body %}
-Revision <code>{{hash}}</code> not found.
-{% endblock %}
diff --git a/webapp/templates/change_revision_uploading.html b/webapp/templates/change_revision_uploading.html
deleted file mode 100644
index f41b52e..0000000
--- a/webapp/templates/change_revision_uploading.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{%extends "change_base.html"%}
-
-{%block additionalhead%}
-<meta http-equiv="Refresh" content="5; URL=/r/{{hash}}" />
-{%endblock%}
-
-{% block body %}
-<p>The upload of <code>{{hash}}</code> is still being processed.</p>
-<p>Please try again in a few seconds.</p>
-<p>If your browser does not automatically refresh this page,
-<a href="/r/{{hash}}">click here</a>.</p>
-{% endblock %}
diff --git a/webapp/templates/change_star.html b/webapp/templates/change_star.html
deleted file mode 100644
index 2083e0f..0000000
--- a/webapp/templates/change_star.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<span id="change-star-{{change.key.id}}">
-  {%if change.is_starred%}
-    <a href="javascript:M_removeChangeStar({{change.key.id}})">
-      <img src="/static/star-lite.gif" width="15" height="15" border="0"></a>
-  {%else%}
-    {%if request.user%}
-      <a href="javascript:M_addChangeStar({{change.key.id}})">
-	<img src="/static/star-dark.gif" width="15" height="15" border="0"></a>
-    {%endif%}
-  {%endif%}
-</span>
diff --git a/webapp/templates/changes_base.html b/webapp/templates/changes_base.html
deleted file mode 100644
index 0405214..0000000
--- a/webapp/templates/changes_base.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{%extends "base.html" %}
-
-{%block mainmenu2 %}
-  <div class="left_nav_box">
-  <h4>Code Reviews</h4>
-  {%if user %}
-  <ul>
-    <li><a href="{%url codereview.views.mine %}">My Changes</a></li>
-    <li><a href="{%url codereview.views.unclaimed %}">Unclaimed Changes</a></li>
-    <li><a href="{%url codereview.views.all_unclaimed %}">All Unclaimed Changes</a></li>
-    <li><a href="{%url codereview.views.open_changes %}">Open Changes</a></li>
-    <li><a href="{%url codereview.views.all_changes %}">All Changes</a></li>
-    <li><a href="{%url codereview.views.starred %}">Starred Changes</a></li>
-  </ul>
-  {%else%}
-  <ul>
-    <li><a href="{%url codereview.views.open_changes %}">Open Changes</a></li>
-    <li><a href="{%url codereview.views.all_unclaimed %}">All Unclaimed Changes</a></li>
-    <li><a href="{%url codereview.views.all_changes %}">All Changes</a></li>
-    <li id="signin-link">
-      <a class="novisit" href="{{sign_in}}">Sign in</a> with your
-      <a href="https://www.google.com/accounts/NewAccount">Google Account</a>
-      to add comments.
-    </li>
-  </ul>
-  {%endif%}
-  </div><!-- div class="left_nav_box" -->
-{%endblock%}
-
diff --git a/webapp/templates/context_select.html b/webapp/templates/context_select.html
deleted file mode 100644
index 6f14ca8..0000000
--- a/webapp/templates/context_select.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<form method="GET" action="">
-  <select id="context" name="context" 
-  onchange="this.form.elements[1].disabled=true; this.form.submit()">
-    {%for val in context_values%}
-      <option value="{{val}}"
-      {%ifequal val context%} selected="selected"{%endifequal%}>
-      {{val}} lines</option>
-    {%endfor%}
-  </select>
-  <input type="submit" value="Adjust context" style="display: none;"/>
-</form>
diff --git a/webapp/templates/delete_loop.html b/webapp/templates/delete_loop.html
deleted file mode 100644
index 6566920..0000000
--- a/webapp/templates/delete_loop.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{%extends "change_base.html"%}
-{%block title1%}Deleting Change -{%endblock%}
-{%block change_body%}
-<form action="{{del_url}}" method="post">
-<input type="hidden" value="{{del_url|xsrf}}" />
-<input type="submit" value="Continue">
-</form>
-{%endblock%}
diff --git a/webapp/templates/diff.html b/webapp/templates/diff.html
deleted file mode 100644
index c5a2f9a..0000000
--- a/webapp/templates/diff.html
+++ /dev/null
@@ -1,140 +0,0 @@
-{%extends "change_base.html"%}
-
-{%block change_body%}
-
-<script language="JavaScript" type="text/javascript"><!--
-function keyPressIntermediary(evt) {
-  return M_keyPress(evt);
-}
-document.onkeypress = keyPressIntermediary;
-{%if user%}
-logged_in = true;
-{%else%}
-logged_in = false;
-login_warned = false;
-{%endif%}
-// -->
-</script>
-
-
-{%if user%}
-<!-- Form used by in-line comment JS; XXX filled in by JS code -->
-<form id="dainlineform" style="display: none;"
-      action="{{inline_draft_url}}" method="post">
-  <div class="comment-border" name="form-container">
-    {{inline_draft_url|form_xsrf}}
-    <input type="hidden" name="snapshot" value="XXX">
-    <input type="hidden" name="lineno" value="XXX">
-    <input type="hidden" name="side" value="XXX">
-    <input type="hidden" name="change" value="{{change.key.id}}">
-    <input type="hidden" name="patchset" value="{{patchset.key.id}}">
-    <input type="hidden" name="patch" value="{{patch.id}}">
-    <textarea name="text" cols="60" rows="5"></textarea><br>
-    <input type="submit" name="save" value="Save"
-           onclick="return M_submitInlineComment(this.form);">
-    <input type="reset" name="cancel" value="Cancel"
-           onclick="M_removeTempInlineComment(this.form)">
-  </div>
-  <div class="comment-border" style="padding: 0pt;"></div>
-</form>
-<a id="resizer" style="display:none;cursor:pointer"><img src="/static/zippyplus.gif"></a>
-{%endif%}
-
-
-
-
-<table style="width: 100%; margin-top: 5px;"><tr>
-  <td style="vertical-align: top; padding-right: 50px;">
-  {%if user%}
-    <div>
-      <form method="get" action="{%url codereview.views.publish change.key.id%}">
-        <input type="submit" value="Publish Comments &amp; Approvals" />
-      </form>
-    </div>
-    <table class="tips" style="margin-top: 10px;">
-      <tr><th>p</th><td>previous comment</td></tr>
-      <tr><th>n</th><td>next comment</td></tr>
-    </table>
-    <div class="tips" style="margin-top: 5px;">
-      Double-click a line to add a draft in-line comment.<br/>
-      <span style="color:#f77">Draft comments are only viewable by you.</span>
-    </div>
-  {%else%}
-    Please Sign in to add in-line comments.
-  {%endif%}
-  </td>
-  <td style="vertical-align: top;">
-    <table class="change_details">
-      <tr class="first">
-        <th>Project</th>
-        <td>{{change.dest_project.name}}</td>
-      </tr>
-      <tr>
-        <th>File</th>
-        <td>
-          <select onchange="M_jumpToPatch(this, {{change.key.id}}, {{patchset.key.id}});">
-            {%for jump_patch in patchset.patches %}
-              <option value="{{jump_patch.id}}"
-                {%ifequal jump_patch.id patch.id%} selected="selected"{%endifequal%}
-                >{{jump_patch.filename}}</option>
-            {% endfor %}
-          </select>
-        </td>
-      </tr>
-      <tr class="last">
-      <tr>
-        <th>Branch</th>
-        <td>{{change.dest_branch.short_name}}</td>
-      </tr>
-      <tr class="spacer"><td></td></tr>
-      <tr class="first last">
-        <th>Diff context</th>
-        <td>{%include "context_select.html"%}</td>
-      </tr>
-    </table>
-
-  </td>
-  <td>
-  </td>
-</tr></table>
-
-
-<div class="code_diff">
-{%include "diff_navigation.html"%}
-
-<div style="position:relative;" id="table-top">
-
-<span id="hook-sel" style="display:none;"></span>
-
-<table border="0" cellpadding="0" cellspacing="0" id="thecode" style="width: 100%;"
-       ondblclick="M_handleTableDblClick(event)">
-<colgroup style="width: 50%;">
-<colgroup style="width: 50%;">
-<tr><th>OLD</th><th>NEW</th></tr>
-
-{%for row in rows%}{{row|safe}}{%endfor%}
-
-<tr><th>OLD</th><th>NEW</th></tr>
-
-</table>
-
-</div>
-{%include "diff_navigation.html"%}
-</div>
-
-</script>
-<script language="JavaScript" type="text/javascript"><!--
-var old_snapshot = "old";
-var new_snapshot = "new";
-var intraLineDiff = new M_IntraLineDiff();
-var hookState = new M_HookState(window);
-hookState.updateHooks();
-
-var skipped_lines_url =
-'/{{change.key.id}}/diff_skipped_lines/{{patchset.key.id}}/{{patch.id}}/'
-;
-
-// -->
-</script>
-{%endblock%}
-
diff --git a/webapp/templates/diff2.html b/webapp/templates/diff2.html
deleted file mode 100644
index fb5eb65..0000000
--- a/webapp/templates/diff2.html
+++ /dev/null
@@ -1,192 +0,0 @@
-{%extends "change_base.html"%}
-{%block title1%}{{patch_right.filename}} -{%endblock%}
-{%block body%}
-
-<script language="JavaScript" type="text/javascript"><!--
-function keyPressIntermediary(evt) {
-  return M_keyPress(evt);
-}
-document.onkeypress = keyPressIntermediary;
-{%if user%}
-logged_in = true;
-{%else%}
-logged_in = false;
-login_warned = false;
-{%endif%}
-// -->
-</script>
-
-{%if user%}
-<!-- Form used by in-line comment JS; XXX filled in by JS code -->
-<form id="dainlineform" style="display: none;"
-      action="{{inline_draft_url}}" method="post">
-  <div class="comment-border" name="form-container">
-    {{inline_draft_url|form_xsrf}}
-    <input type="hidden" name="snapshot" value="XXX">
-    <input type="hidden" name="lineno" value="XXX">
-    <input type="hidden" name="side" value="XXX">
-    <input type="hidden" name="change" value="{{change.key.id}}">
-    <input type="hidden" name="ps_left" value="{{ps_left.key.id}}">
-    <input type="hidden" name="patch_left" value="{{patch_left.id}}">
-    <input type="hidden" name="ps_right" value="{{ps_right.key.id}}">
-    <input type="hidden" name="patch_right" value="{{patch_right.id}}">
-    <textarea name="text" cols="60" rows="5"></textarea><br>
-    <input type="submit" name="save" value="Save"
-           onclick="return M_submitInlineComment(this.form);">
-    <input type="reset" name="cancel" value="Cancel"
-           onclick="M_removeTempInlineComment(this.form)">
-  </div>
-  <div class="comment-border" style="padding: 0pt;"></div>
-</form>
-<a id="resizer" style="display:none;cursor:pointer"><img src="/static/zippyplus.gif"></a>
-{%endif%}
-
-<div style="float: left;">
-  <h2 style="margin-bottom: 0em; margin-top: 0em;">Delta Between Patch Sets {{ps_left.id}} and {{ps_right.id}}: {{patch_right.filename}}</h2>
-  <div style="margin-top: .2em;">
-    {%include "change_star.html"%}
-    <b>Change <a href="{%url codereview.views.show change.key.id%}" onmouseover="M_showPopUp(this, 'popup-change');" id="upCL">{{change.key.id}}</a>:</b>
-  {{change.subject|truncatewords:11}} {{change|closed_label}}
-  </div>
-  <div style="margin-top: .4em;">
-    <b>Left Patch Set: {%if ps_left.message%}{{ps_left.message}}{%endif%}</b>
-    <span class="extra">
-    Created {{ps_left.created|timesince}} ago
-    {%ifnotequal ps_left.owner change.owner%}
-    by <b>{{ps_left.owner|show_user}}</b>{%endifnotequal%}
-    </span>
-  </div>
-  <div style="margin-top: .4em;">
-    <b>Right Patch Set: {%if ps_right.message%}{{ps_right.message}}{%endif%}</b>
-    <span class="extra">
-    Created {{ps_right.created|timesince}} ago
-    {%ifnotequal ps_right.owner change.owner%}
-    by <b>{{ps_right.owner|show_user}}</b>{%endifnotequal%}
-    </span>
-  </div>
-  <div style="margin-top: .4em;" class="help">
-    Use n/p to move between diff chunks;
-    N/P to move between comments.
-    {%if user%}
-    Double-click a line to add a draft in-line comment.
-    <br><span style="color:red">Draft comments are only viewable by you;</span>
-    use <a href="{%url codereview.views.publish change.key.id%}" class="novisit">Publish Comments &amp; Approvals</a> ('m') to let others view them.
-    {%else%}
-    Please Sign in to add in-line comments.
-    {%endif%}
-  </div>
-</div>
-<div style="float: right; color: #333333; background-color: #eeeeec; border: 1px solid lightgray; -moz-border-radius: 5px 5px 5px 5px; padding: 5px;">
-  <div>{%include "context_select.html"%}</div>
-  <div>
-    File: <select onchange="M_jumpToPatch(this, {{change.key.id}}, {{patchset.key.id}});">
-      {% for jump_patch in ps_right.patches %}
-        <option value="{{jump_patch.id}}"
-         {%ifequal jump_patch.id patch.id%} selected="selected"{%endifequal%}>{{jump_patch.filename}}</option>
-      {% endfor %}
-    </select>
-  </div>
-  <div>
-    Left: <a href="{%url codereview.views.diff change.key.id,ps_left.key.id,patch_left.id%}"
-             title="View regular side by side diff">Side by side diff</a>
-          <br/>
-    Right: <a href="{%url codereview.views.diff change.key.id,ps_right.key.id,patch_right.id%}"
-              title="View regular side by side diff">Side by side diff</a>
-    {%if user%}
-  </div>
-  <div style="margin-top: 5px;">
-    <a class="novisit" href="{%url codereview.views.publish change.key.id%}">Publish Comments &amp; Approvals</a> ('m')
-    {%endif%}
-  </div>
-</div>
-<div style="clear: both;"></div>
-
-
-<div class="code" style="margin-top: 1.3em; display: table; margin-left: auto; margin-right: auto;">
-<div class="codenav">
-{%comment%}
-For some reason,
-{%url codereview.views.diff change.key.id,patchset.key.id,patch.prev.key.id%}
-doesn't work.  Go figure.  Bleah.  So use absolute URLs.
-{%endcomment%}
-{%if patch_right.prev%}
-<a id="prevFile" 
-   href="/{{change.key.id}}/diff2/{{ps_left.key.id}}:{{ps_right.key.id}}/{{patch_right.prev.id}}">
-&laquo; {{patch_right.prev.filename}}</a> ('k'){%else%}
-<span class="disabled">&laquo; no previous file</span>{%endif%}
-|
-{%if patch_right.next%}
-<a id="nextFile"
-   href="/{{change.key.id}}/diff2/{{ps_left.key.id}}:{{ps_right.key.id}}/{{patch_right.next.id}}">
-{{patch_right.next.filename}} &raquo;</a> ('j'){%else%}
-<span class="disabled">no next file &raquo;</span>{%endif%}
-|
-<a href="javascript:if (intraLineDiff) intraLineDiff.toggle()">
-Toggle Intra-line Diffs</a> ('i')
-|
-<a href="javascript:M_expandAllInlineComments()">Expand Comments</a> ('e')
-|
-<a href="javascript:M_collapseAllInlineComments()">Collapse Comments</a> ('c')
-|
-<a id="show-all-inline"
-   style="display:none"
-   href="javascript:M_showAllInlineComments()">Show Comments</a>
-<a id="hide-all-inline"
-   href="javascript:M_hideAllInlineComments()">Hide Comments</a> ('s')
-</div>
-<div style="position:relative" id="table-top">
-
-<span id="hook-sel" style="display:none;"></span>
-
-<table border="0" cellpadding="0" cellspacing="0" id="thecode"
-       ondblclick="M_handleTableDblClick(event)">
-
-<tr><th>LEFT (Patch Set {{ps_left.id}})</th><th>RIGHT (Patch Set {{ps_right.id}})</th></tr>
-
-{%for row in rows%}{{row|safe}}{%endfor%}
-
-<tr><th>LEFT</th><th>RIGHT</th></tr>
-
-</table>
-
-</div>
-
-<div class="codenav">
-{%if patch_right.prev%}
-<a id="prevFile"
-   href="/{{change.key.id}}/diff2/{{ps_left.key.id}}:{{ps_right.key.id}}/{{patch_right.prev.id}}">
-&laquo; {{patch_right.prev.filename}}</a> ('k'){%else%}
-<span class="disabled">&laquo; no previous file</span>{%endif%}
-|
-{%if patch_right.next%}
-<a id="nextFile"
-   href="/{{change.key.id}}/diff2/{{ps_left.key.id}}:{{ps_right.key.id}}/{{patch_right.next.id}}">
-{{patch_right.next.filename}} &raquo;</a> ('j'){%else%}
-<span class="disabled">no next file &raquo;</span>{%endif%}
-|
-<a href="javascript:if (intraLineDiff) intraLineDiff.toggle()">
-Toggle Intra-line Diffs</a> ('i')
-|
-<a href="javascript:M_expandAllInlineComments()">Expand Comments</a> ('e')
-|
-<a href="javascript:M_collapseAllInlineComments()">Collapse Comments</a> ('c')
-|
-<a href="javascript:M_toggleAllInlineComments()">
-Toggle Comments</a> ('s')
-</div>
-
-</div>
-</script>
-<script language="JavaScript" type="text/javascript"><!--
-var old_snapshot = "new";
-var new_snapshot = "new";
-var intraLineDiff = new M_IntraLineDiff();
-var hookState = new M_HookState(window);
-hookState.updateHooks();
-
-var skipped_lines_url = ('/' + {{change.key.id}} + '/diff2_skipped_lines/' +
-                         {{ps_left.key.id}} + ':' + {{ps_right.key.id}} + '/' +
-                         '{{patch_right.id}}' + '/');
-// -->
-</script>
-{%endblock%}
diff --git a/webapp/templates/diff_navigation.html b/webapp/templates/diff_navigation.html
deleted file mode 100644
index 7dfacfd..0000000
--- a/webapp/templates/diff_navigation.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<div class="tips codenav">
-{%comment%}
-For some reason,
-{%url codereview.views.diff change.key.id,patchset.key.id,patch.prev.key.id%}
-doesn't work.  Go figure.  Bleah.  So use absolute URLs.
-{%endcomment%}
-{%if patch.prev%}
-<a id="prevFile" 
-   href="/{{change.key.id}}/diff/{{patchset.key.id}}/{%spaceless%}
-   {{patch.prev.id}}{%if context%}?context={{context}}{%endif%}
-   {%endspaceless%}">
-&laquo; {{patch.prev.filename}}</a> ('k'){%else%}
-<span class="disabled">&laquo; no previous file</span>{%endif%}
-|
-<span class="disabled">{{patch.filename|file_leaf}}</span>
-|
-{%if patch.next%}
-<a id="nextFile"
-   href="/{{change.key.id}}/diff/{{patchset.key.id}}/{%spaceless%}
-   {{patch.next.id}}{%if context %}?context={{context}}{%endif%}
-   {%endspaceless%}">
-{{patch.next.filename}} &raquo;</a> ('j'){%else%}
-<span class="disabled">no next file &raquo;</span>{%endif%}
-|
-
-<a href="javascript:if (intraLineDiff) intraLineDiff.toggle()">
-Toggle Intra-line Diffs</a> ('i')
-|
-<a href="javascript:M_expandAllInlineComments()">Expand Comments</a> ('e')
-|
-<a href="javascript:M_collapseAllInlineComments()">Collapse Comments</a> ('c')
-|
-<a id="show-all-inline"
-   style="display:none"
-   href="javascript:M_showAllInlineComments()">Show Comments</a>
-<a id="hide-all-inline"
-   href="javascript:M_hideAllInlineComments()">Hide Comments</a> ('s')
-</div>
diff --git a/webapp/templates/hello.html b/webapp/templates/hello.html
deleted file mode 100644
index 01a900c..0000000
--- a/webapp/templates/hello.html
+++ /dev/null
@@ -1,7 +0,0 @@
-{%extends "base.html"%}
-{%block title1%}Settings -{%endblock%}
-{%block body%}
-<h2>Hi!</h2>
-
-
-{%endblock%}
diff --git a/webapp/templates/inline_comment.html b/webapp/templates/inline_comment.html
deleted file mode 100644
index a832a15..0000000
--- a/webapp/templates/inline_comment.html
+++ /dev/null
@@ -1,67 +0,0 @@
-{%for c in comments%}
-<div class="comment-border{%if c.confidence%} conf{{c.confidence}}{%endif%} {{c.backend}}" name="comment-border">
-<div class="inline-comment-title" onclick="M_switchInlineComment({{forloop.counter0}}, {{lineno}}, '{{side}}')">
-{%if c.draft%}<b>(Draft)</b>{%else%}<b>{{c.author|real_name}}</b>{%endif%}
-{%if c.confidence_text%} <b>(confidence {{c.confidence_text}})</b>{%endif%}
-{{c.date|date:"Y/m/d H:i:s"}}
-<span id="inline-preview-{{forloop.counter0}}-{{lineno}}-{{side}}" 
-  class="extra" name="inline-preview"
-  {%if c.draft%}style="visibility: hidden"{%endif%}>{{c.shorttext}}</span>
-</div>
-<div id="inline-comment-{{forloop.counter0}}-{{lineno}}-{{side}}"
-     class="inline-comment"
-     name="inline-comment"
-     {%if c.draft%}ondblclick="M_editInlineComment({{forloop.counter0}}, {{lineno}}, '{{side}}'); M_stopBubble(window, event);"{%endif%}
-     {%if not c.draft%}style="display: none"{%endif%}>
-{%for bucket in c.buckets%}
-{%if bucket.quoted%}
-<div><a class="comment-hide-link" href="javascript:M_switchQuotedText({{forloop.parentloop.counter0}}, {{forloop.counter0}}, {{lineno}}, '{{side}}')">(Un)hide quoted text</a></div>
-{%endif%}
-<div name="comment-text-{{forloop.parentloop.counter0}}-{{lineno}}-{{side}}"
-id="comment-text-{{forloop.parentloop.counter0}}-{{lineno}}-{{side}}-{{forloop.counter0}}"
-class="{%if bucket.quoted%}comment-text-quoted{%else%}comment-text{%endif%}"
-{%if bucket.quoted%}style="display: none"{%endif%}
->{{bucket.text|wordwrap:"80"|escape|urlize}}</div>
-{%endfor%}
-{%if c.draft%}
-<a name="comment-reply"
-   id="edit-link-{{forloop.counter0}}-{{lineno}}-{{side}}"
-   href="javascript:M_editInlineComment({{forloop.counter0}}, {{lineno}}, '{{side}}')"><b>Edit</b></a>
-<a name="comment-reply"
-   id="undo-link-{{forloop.counter0}}-{{lineno}}-{{side}}"
-   style="display:none"
-   href="javascript:M_restoreEditInlineComment({{forloop.counter0}}, {{lineno}}, '{{side}}')"><b>Undo cancel</b></a>
-<form id="comment-form-{{forloop.counter0}}-{{lineno}}-{{side}}"
-      name="comment-form-{{forloop.counter0}}-{{lineno}}-{{side}}"
-      style="display:none" action="{{inline_draft_url}}" method = "POST">
-<div name="form-container">
-{{inline_draft_url|form_xsrf}}
-<input type="hidden" name="change" value="{{change.key.id}}">
-<input type="hidden" name="patchset" value="{{patchset.key.id}}">
-<input type="hidden" name="patch" value="{{patch.id}}">
-<input type="hidden" name="snapshot" value="{{snapshot}}">
-<input type="hidden" name="side" value="{{side}}">
-<input type="hidden" name="file" value="{{file.depot_path|escape}}">
-<input type="hidden" name="lineno" value="{{lineno}}">
-<input type="hidden" name="oldtext" value="{{c.text}}">
-{%if c.message_id%}<input type="hidden" name="message_id" value="{{c.message_id}}">{%endif%}
-<textarea name="text" cols="60" rows="5">{{c.text}}</textarea><br>
-<input type="submit" name="save" value="Save" onclick="return M_submitInlineComment(this.form, {{forloop.counter0}}, {{lineno}}, '{{side}}')">
-<input type="reset" name="cancel" value="Cancel" onclick="M_resetAndHideInlineComment(this.form, {{forloop.counter0}}, {{lineno}}, '{{side}}')">
-<input type="submit" name="discard" value="Discard" onclick="return M_removeInlineComment(this.form, {{forloop.counter0}}, {{lineno}}, '{{side}}')">
-</div>
-</form>
-{%else%}
-{%if user%}
-<a name="comment-reply"
-   href="javascript:M_replyToInlineComment('{{c.author|real_name:"x"}}', '{{c.date|date:"Y/m/d H:i:s"}}', {{forloop.counter0}}, {{lineno}}, '{{side}}')"
-><b>Reply</b></a>
-{%if c.backend%}<a href="javascript:M_replyToInlineComment('{{c.author|real_name:"x"}}', '{{c.date|date:"Y/m/d H:i:s"}}', {{forloop.counter0}}, {{lineno}}, '{{side}}', 'Please fix.', true)"><b>Please fix</b></a>
-{%else%}<a href="javascript:M_replyToInlineComment('{{c.author|real_name:"x"}}', '{{c.date|date:"Y/m/d H:i:s"}}', {{forloop.counter0}}, {{lineno}}, '{{side}}', 'Done.', true)"><b>Done</b></a>{%endif%}
-{%ifequal c.backend "bugbot"%} &nbsp; <a target="_blank" href="http://bugbotexp{{file.depot_path|escape}}"><b>&raquo; Suppress</b></a>{%endifequal%}
-{%endif%}
-{%endif%}
-</div>
-</div>
-{%endfor%}
-<div class="comment-border" style="padding: 0"></div>
diff --git a/webapp/templates/list_changes.html b/webapp/templates/list_changes.html
deleted file mode 100644
index 54e5628..0000000
--- a/webapp/templates/list_changes.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{%extends "changes_base.html"%}
-
-{%block title1%}{{title}} -{%endblock%}
-
-{%block body%}
-
-<script language="JavaScript" type="text/javascript"><!--
-function keyPressIntermediary(evt) {
-  return M_dashboardKeyPress(evt);
-}
-document.onkeypress = keyPressIntermediary;
--->
-</script>
-
-
-<h1>{{title}}</h1>
-
-<div>
-  {%if newest%}
-    <a class="novisit" href="{{newest}}">&laquo; Newest</a>
-  {%endif%}
-  {%if prev%}
-    <a class="novisit" href="{{prev}}">&lsaquo; Newer</a>
-  {%endif%}
-  <b>{{first}}{%if last%} - {{last}}{%endif%}</b>
-  {%if next%}<a class="novisit" href="{{next}}">Older &rsaquo;</a>
-  {%else%}<span style="color:gray">Older &rsaquo;</span>{%endif%}
-</div>
-
-{{changes}}
-
-<script language="JavaScript" type="text/javascript"><!--
-var dashboardState = new M_DashboardState(window,'change');
--->
-</script>
-{%endblock%}
diff --git a/webapp/templates/live_revision.html b/webapp/templates/live_revision.html
deleted file mode 100644
index e69de29..0000000
--- a/webapp/templates/live_revision.html
+++ /dev/null
diff --git a/webapp/templates/mails/clean_merge.txt b/webapp/templates/mails/clean_merge.txt
deleted file mode 100644
index 8121c52..0000000
--- a/webapp/templates/mails/clean_merge.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-{%autoescape off%}
-Change {{change.key.id}} has been successfully merged into the
-{{change.dest_branch.short_name}} branch of {{change.dest_project.name}}.
-
-{%endautoescape%}
diff --git a/webapp/templates/mails/comment-email.txt b/webapp/templates/mails/comment-email.txt
deleted file mode 100644
index d515ac6..0000000
--- a/webapp/templates/mails/comment-email.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-{%autoescape off%}{%if message%}{{message|wordwrap:"72"}}
-
-{%endif%}{%if details%}{{details|wordwrap:"72"}}
-{%endif%}{%endautoescape%}
diff --git a/webapp/templates/mails/comment.txt b/webapp/templates/mails/comment.txt
deleted file mode 100644
index cc4a5a8..0000000
--- a/webapp/templates/mails/comment.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-{%autoescape off%}{%if message%}{{message|wordwrap:"72"}}
-{%endif%}{%endautoescape%}
diff --git a/webapp/templates/mails/from_email_test.txt b/webapp/templates/mails/from_email_test.txt
deleted file mode 100644
index 3a6891d..0000000
--- a/webapp/templates/mails/from_email_test.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-
-Test.
-
-If you received this email in error, we apologize.  Please reply-all and
-we'll make sure it doesn't happen again.
-
-
-
diff --git a/webapp/templates/mails/missing_dependency.txt b/webapp/templates/mails/missing_dependency.txt
deleted file mode 100644
index a9511da..0000000
--- a/webapp/templates/mails/missing_dependency.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-{%autoescape off%}
-Your change could not be merged because of a missing dependency.
-
-As soon as all dependencies are submitted, your change will be
-resubmitted automatically.
-
-{%endautoescape%}
diff --git a/webapp/templates/mails/path_conflict.txt b/webapp/templates/mails/path_conflict.txt
deleted file mode 100644
index 32016bb..0000000
--- a/webapp/templates/mails/path_conflict.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-{%autoescape off%}
-Your change could not been merged due to a path conflict.
-
-Please merge (or rebase) the change locally and upload the
-resolution for review.
-
-{%endautoescape%}
diff --git a/webapp/templates/patch.html b/webapp/templates/patch.html
deleted file mode 100644
index 47b513b..0000000
--- a/webapp/templates/patch.html
+++ /dev/null
@@ -1,153 +0,0 @@
-{%extends "change_base.html"%}
-{%block body%}
-
-<script language="JavaScript" type="text/javascript"><!--
-function keyPressIntermediary(evt) {
-  return M_keyPress(evt);
-}
-document.onkeypress = keyPressIntermediary;
-{%if user%}
-logged_in = true;
-{%else%}
-logged_in = false;
-login_warned = false;
-{%endif%}
-// -->
-</script>
-
-{%if user%}
-<!-- Form used by in-line comment JS; XXX filled in by JS code -->
-<form id="dainlineform" style="display: none;"
-      action="{{inline_draft_url}}" method="post">
-  <div class="comment-border" name="form-container">
-    {{inline_draft_url|form_xsrf}}
-    <input type="hidden" name="snapshot" value="XXX">
-    <input type="hidden" name="lineno" value="XXX">
-    <input type="hidden" name="side" value="XXX">
-    <input type="hidden" name="change" value="{{change.key.id}}">
-    <input type="hidden" name="patchset" value="{{patchset.key.id}}">
-    <input type="hidden" name="patch" value="{{patch.id}}">
-    <textarea name="text" cols="60" rows="5"></textarea><br>
-    <input type="submit" name="save" value="Save"
-           onclick="return M_submitInlineComment(this.form);">
-    <input type="reset" name="cancel" value="Cancel"
-           onclick="M_removeTempInlineComment(this.form)">
-  </div>
-  <div class="comment-border" style="padding: 0pt;"></div>
-</form>
-<a id="resizer" style="display:none;cursor:pointer"><img src="/static/zippyplus.gif"></a>
-{%endif%}
-
-<div style="float: left;">
-  <h2 style="margin-bottom: 0em; margin-top: 0em;">Unified Diff: {{patch.filename}}</h2>
-  {%ifnotequal patch.nav_type "patch"%}
-    <span style="color:red">Side-by-side diff isn't available for this file because of its large size.</span>
-  {%endifnotequal%}
-  <div style="margin-top: .2em;">{%include "change_star.html"%}
-    <b>Change <a href="{%url codereview.views.show change.key.id%}" onmouseover="M_showPopUp(this, 'popup-change');" id="upCL">{{change.key.id}}</a>:</b>
-  {{change.subject|truncatewords:11}} {{change|closed_label}}
-  </div>
-  <div style="margin-top: .4em;">
-    <b>Patch Set: {%if patchset.message%}{{patchset.message}}{%endif%}</b>
-    <span class="extra">
-    Created {{patchset.created|timesince}} ago
-    {%ifnotequal patchset.owner change.owner%}
-    by <b>{{patchset.owner|show_user}}</b>{%endifnotequal%}
-    </span>
-  </div>
-  <div style="margin-top: .4em;" class="help">
-    Use n/p to move between diff chunks;
-    N/P to move between comments.
-    {%if user%}
-    Double-click a line to add a draft in-line comment.
-    <br><span style="color:red">Draft comments are only viewable by you;</span>
-    use <a href="{%url codereview.views.publish change.key.id%}" class="novisit">Publish Comments &amp; Approvals</a> ('m') to let others view them.
-    {%else%}
-    Please Sign in to add in-line comments.
-    {%endif%}
-  </div>
-</div>
-<div style="float: right; color: #333333; background-color: #eeeeec; border: 1px solid lightgray; -moz-border-radius: 5px 5px 5px 5px; padding: 5px;">
-  <div>
-    File: <select onchange="M_jumpToPatch(this, {{change.key.id}}, {{patchset.key.id}}, true);">
-      {% for jump_patch in patchset.patch_set %}
-        <option value="{{jump_patch.id}}"
-         {%ifequal jump_patch.id patch.id%} selected="selected"{%endifequal%}>{{jump_patch.filename}}</option>
-      {% endfor %}
-    </select>
-  </div>
-  <div style="margin-top: 5px;">
-    <a href="{%url codereview.views.diff change.key.id,patchset.key.id,patch.id%}">
-    View side by-side-diff with in-line comments</a>
-  </div>
-  {%if user%}
-  <div style="margin-top: 5px;">
-    <a class="novisit" href="{%url codereview.views.publish change.key.id%}">Publish Comments &amp; Approvals</a> ('m')
-  </div>
-  {%endif%}
-</div>
-<div style="clear: both;"></div>
-
-<div class="code" style="margin-top: 1.3em; display: table; margin-left: auto; margin-right: auto;">
-
-<div class="codenav">
-{%if patch.prev%}
-<a id="prevFile" 
-   href="{%url codereview.views.patch change.key.id,patchset.key.id,patch.prev.id%}">
-&laquo; {{patch.prev.filename}}</a> ('k'){%else%}
-<span class="disabled">&laquo; no previous file</span>{%endif%}
-|
-{%if patch.next%}
-<a id="nextFile"
-   href="{%url codereview.views.patch change.key.id,patchset.key.id,patch.next.id%}">
-{{patch.next.filename}} &raquo;</a> ('j'){%else%}
-<span class="disabled">no next file &raquo;</span>{%endif%}
-|
-<a href="javascript:M_expandAllInlineComments()">Expand Comments</a> ('e')
-|
-<a href="javascript:M_collapseAllInlineComments()">Collapse Comments</a> ('c')
-|
-<a id="show-all-inline"
-   style="display:none"
-   href="javascript:M_showAllInlineComments()">Show Comments</a>
-<a id="hide-all-inline"
-   href="javascript:M_hideAllInlineComments()">Hide Comments</a> ('s')
-</div>
-
-<div style="position:relative" id="table-top">
-
-<span id="hook-sel" style="display:none;"></span>
-
-<table style="padding: 5px;" cellpadding="0" cellspacing="0" id="thecode"
-       ondblclick="M_handleTableDblClick(event)">
-{%for row in rows%}{{row|safe}}{%endfor%}
-</table>
-
-</div>
-<div class="codenav">
-{%if patch.prev%}
-<a id="prevFile"
-   href="{%url codereview.views.patch change.key.id,patchset.key.id,patch.prev.id%}">
-&laquo; {{patch.prev.filename}}</a> ('k'){%else%}
-<span class="disabled">&laquo; no previous file</span>{%endif%}
-|
-{%if patch.next%}
-<a id="nextFile"
-   href="{%url codereview.views.patch change.key.id,patchset.key.id,patch.next.id%}">
-{{patch.next.filename}} &raquo;</a> ('j'){%else%}
-<span class="disabled">no next file &raquo;</span>{%endif%}
-</div>
-</div>
-
-</script>
-<script language="JavaScript" type="text/javascript"><!--
-var old_snapshot = "old";
-var new_snapshot = "new";
-var intraLineDiff = new M_IntraLineDiff();
-var hookState = new M_HookState(window);
-hookState.updateHooks();
-
-
-// -->
-</script>
-{%endblock%}
diff --git a/webapp/templates/patchset.html b/webapp/templates/patchset.html
deleted file mode 100644
index 308d71d..0000000
--- a/webapp/templates/patchset.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<div class="change-list">
-  <table style="clear:both;padding-bottom: 10px;">
-  {%if patchset.n_comments or patchset.n_drafts%}
-    <tr>
-      <th>Comments:</th>
-      <td>{{patchset.n_comments}}
-      {%if patchset.n_drafts%}
-        <span style="color:red">
-          <b>+ {{patchset.n_drafts}} draft{{patchset.n_drafts|pluralize}}</b>
-        </span>
-      {%endif%}
-      </td>
-    </tr>
-  {%endif%}
-    <tr>
-      <th>Created:</th>
-      <td>{{patchset.created|timesince}} ago
-      {%ifnotequal patchset.owner change.owner%}<br />
-      by <b>{{patchset.owner|real_name}}</b>{%endifnotequal%}
-      </td>
-    </tr>
-    <tr>
-      <th>Download:</th> 
-      <td>
-        <code style="white-space: nowrap">repo download {{patchset.change.dest_project.name}} {{patchset.change.key.id}}/{{patchset.id}}</code>
-      </td>
-    </tr>
-  </table>
- 
-{%if patchset.freaking_huge%}
-  <div style="margin-top: 5px; float: left;" class="error">
-  Patch Set {{patchset.id}} has too many files.
-  </div>
-  <div style="clear:both;"></div>
-{%else%}
-  <table class="change_info_table" style="clear:both;">
-    <tr align="left">
-      <th class="leftmost"></th>
-      <th>File Path</th>
-      <th>Delta From</th>
-      <th>Comments</th>
-      <th colspan="2" class="rightmost">Diff</th>
-    </tr>
-
-  {%for patch in patchset.patches%}
-    {%if make_next_prev_links %}
-      <!-- These two links are for the javascript j/k and h/l key shortcuts -->
-      {%if forloop.first %}
-        <a style="display:none" id="nextFile" href="" />
-      {%endif%}
-      {%if forloop.last%}
-      <a style="display:none" id="prevFile" href="" />
-      {%endif%}
-    {%endif%}
-    <tr>
-      <td>{%if patch.status%}{{patch.status}}{%endif%}</td>
-      <td>
-        <a class="noul"
-         {%if patch.multi_way_diff%}
-           href="{%url codereview.views.patch change.key.id,patch.patchset.key.id,patch.id%}"
-         {%else%}
-           href="{%url codereview.views.diff change.key.id,patch.patchset.key.id,patch.id%}"
-         {%endif%}
-          >{{patch.filename}}
-        </a>
-      </td>
-      <td>
-        {%for other in patch.other_patch_versions%}<a href="/{{change.key.id}}/diff2/{{other.patchset_id}}:{{patchset.key.id}}/{{patch.id}}" title="Delta from patch set {{other.patchset_name}}">{{other.patchset_name}}</a>&nbsp;{%endfor%}
-      </td>
-      <td>
-        {%if patch.num_comments or patch.num_drafts%}<b>{%endif%}
-          {{patch.num_comments}} comment{{patch.num_comments|pluralize}}
-          {%if patch.num_drafts%}
-          <span style="color:red">+
-            {{patch.num_drafts}} draft{{patch.num_drafts|pluralize}}
-          </span>
-        {%endif%}
-        {%if patch.num_comments or patch.num_drafts%}</b>{%endif%}
-      </td>
-      <td>
-      {%if not patch.multi_way_diff%}
-        <a href="{%url codereview.views.diff change.key.id,patch.patchset.key.id,patch.id%}">
-          Side-by-Side
-        </a>
-      {%endif%}
-      </td>
-      <td>
-        <a href="{%url codereview.views.patch change.key.id,patch.patchset.key.id,patch.id%}">
-          Unified
-        </a>
-      </td>
-    </tr>
-  {%endfor%}
-  </table>
-{%endif%}
-
-  {%if not patchset.complete%}
-    <div style="margin-top: 5px; float: left;" class="error">
-    Patch Set {{patchset.id}} is still being uploaded ...
-    </div>
-    <div style="clear:both;"></div>
-  {%endif%}
-</div>
diff --git a/webapp/templates/publish.html b/webapp/templates/publish.html
deleted file mode 100644
index 4f7cd59..0000000
--- a/webapp/templates/publish.html
+++ /dev/null
@@ -1,65 +0,0 @@
-{%extends "change_base.html"%}
-{%block title1%}Publish Comments &amp; Approvals -{%endblock%}
-{%block change_body%}
-<h2>Publish Comments &amp; Approvals</h2>
-
-<div>
-  <form action="{%url codereview.views.publish change.key.id%}"
-        method="post" id="publish-form">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-  <table class="publish_table">
-  
-  <tr class="first"><th>Reviewers</th><td>{{form.reviewers}}</td></tr>
-  <tr><th>CC</th><td>{{form.cc}}
-    {%for e in form.cc.errors %}<br/><font color=red>{{e}}</font>{%endfor%}
-  </td></tr>
-
-  <tr><th>Message</th><td>{{form.message}}</td></tr>
-  <tr><th>Code Review</th><td>{{form.lgtm}}</td></tr>
-  {%if form.verified %}
-  <tr><th></th>
-    <td>{{form.verified}}<label for="id_verified"> Verified</label></td></tr>
-  {%endif%}
-  <tr class="last"><th></th><td>
-    {%if form.abandoned %}
-      {{form.abandoned}}<label for="id_abandoned"> Abandoned</label>
-    {%else%}
-      <input disabled type="checkbox" {%if form.is_abandoned %}checked{%endif%}/>
-      <font class="disabled"> Abandoned</font>
-    {%endif%}
-  </td> </tr>
-  <tr class="buttons"><td></td>
-    <td>
-      <input type="submit" value="Publish Comments &amp; Approvals">
-      &nbsp;
-      {{form.send_mail}} Send mail</td>
-    </td>
-  </tr>
-  </table>
-  </form>
-
-  <a id="resizer" style="display:none;cursor:pointer">
-  <img src="/static/zippyplus.gif"></a>
-  <script language="JavaScript" type="text/javascript"><!--
-  M_addTextResizer_(document.getElementById("publish-form"));
-  --></script>
-
-</div>
-{%if preview%}
-<div style="margin-top: 3em;">
-  <h3>Unpublished Drafts:</h3>
-  <pre class="description">{{preview|wordwrap:"80"|urlize}}</pre>
-</div>
-{%endif%}
-<div style="clear:both"></div>
-
-{%endblock%}
diff --git a/webapp/templates/reviewers.html b/webapp/templates/reviewers.html
deleted file mode 100644
index 253b4e0..0000000
--- a/webapp/templates/reviewers.html
+++ /dev/null
@@ -1,54 +0,0 @@
-{%extends "change_base.html"%}
-{%block title1%}{%if can_edit %}Edit{%else%}Add{%endif%} Reviewers -{%endblock%}
-{%block change_body%}
-<h2>{%if can_edit %}Edit{%else%}Add{%endif%} Reviewers</h2>
-
-<div>
-  <form action="{%url codereview.views.reviewers change.key.id%}"
-        method="post" id="publish-form">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-  <table class="publish_table">
-
-  <tr class="first"><th>Reviewers</th><td>{{form.reviewers}}</td></tr>
-  <tr class="last"><th>Message<br/>
-        <font style="font-weight: normal;">(only sent to<br/>
-            reviewers that<br/>
-            you add)
-        </th><td><pre>{{fixed_message}}</pre>
-      {{form.message}}</td></tr>
-
-  <tr class="buttons"><td></td>
-    <td>
-      <input type="submit" value="Save">
-      &nbsp;
-      {{form.send_mail}} Send mail to new reviewers
-    </td>
-  </tr>
-  </table>
-  </form>
-
-  <a id="resizer" style="display:none;cursor:pointer">
-  <img src="/static/zippyplus.gif"></a>
-  <script language="JavaScript" type="text/javascript"><!--
-  M_addTextResizer_(document.getElementById("publish-form"));
-  --></script>
-
-</div>
-{%if preview%}
-<div style="margin-top: 3em;">
-  <h3>Unpublished Drafts:</h3>
-  <pre class="description">{{preview|wordwrap:"80"|urlize}}</pre>
-</div>
-{%endif%}
-<div style="clear:both"></div>
-
-{%endblock%}
diff --git a/webapp/templates/settings.html b/webapp/templates/settings.html
deleted file mode 100644
index 8139287..0000000
--- a/webapp/templates/settings.html
+++ /dev/null
@@ -1,42 +0,0 @@
-{%extends "base.html"%}
-{%block title1%}Settings -{%endblock%}
-{%block body%}
-<h1>Settings for {{user.email}}</h1>
-
-<form action="{%url codereview.settings.settings%}" method="POST">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-<table class="settings">
-<thead>
-<tr><th colspan="2">Display Options</th></tr>
-</thead>
-<tbody>
-<tr><th>Diff context</th>
-    <td>{{form.context}}{{form.context.errors}}</td></tr>
-</td></tr>
-</tbody>
-</table>
-
-
-<table class="settings">
-<thead>
-<tr><th colspan="2">Projects</th></tr>
-</thead>
-<tbody>
-<tr><th>View unclaimed changes<br/>for projects</th>
-    <td>{{form.unclaimed_changes_projects}}</td></tr>
-</tbody>
-</table>
-
-<input type="submit" value="Update Settings">
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/settings_welcome_1.html b/webapp/templates/settings_welcome_1.html
deleted file mode 100644
index 6f54f6f..0000000
--- a/webapp/templates/settings_welcome_1.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{%extends "base.html"%}
-{%block title1%}Settings -{%endblock%}
-{%block body%}
-<h2>Hi!</h2>
-
-<form name="welcome" action="{{post_url}}" method="POST">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-{{form.dest}}
-<input type="hidden" name="step" value="1" />
-
-<p>Hi, welcome to Android.  Before we can get going, we need a little bit of
-information from you.</p>
-
-<table class="settings">
-<tr><th>Your name</th></tr>
-<tr><td>Please enter your real name. 
-This is the name that will be shown to other users on this site.
-
-<p><b style="margin-right: 10px;">Your full name: </b> {{form.real_name}} 
-
-<p><i>Also, we can't accept code submitted without knowing who really submitted it.</i>
-
-</td></tr>
-</table>
-<input type="submit" value="Continue">
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/settings_welcome_2.html b/webapp/templates/settings_welcome_2.html
deleted file mode 100644
index e55daf7..0000000
--- a/webapp/templates/settings_welcome_2.html
+++ /dev/null
@@ -1,63 +0,0 @@
-{%extends "base.html"%}
-{%block title1%}Settings -{%endblock%}
-{%block body%}
-<h2>Hi!</h2>
-
-<form name="welcome" action="{{post_url}}" method="POST">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-{{form.dest}}
-<input type="hidden" name="step" value="2" />
-
-<p>Hi, welcome to Android.  Before we can get going, we need a little bit of
-information from you.</p>
-
-<table class="settings">
-<tbody>
-<tr><th>Contributor License Grant</th></tr>
-<tr><td style="white-space: normal;">
-<p>If you're going to contribute code, we need you to sign a "contributor
-license grant."  This affirms that you are granting the Android Project 
-the right to use the code you contribute.  Please read the agreement for all
-of the details.
-<p>Which one would you like?</p>
-<ul style="list-style: none; padding-left: 4em; text-indent: -2em;">
-  <li><input type="radio" id="id_cla_none" value="none" name="cla"
-      {% ifequal form.initial.cla 'none' %}checked{% endifequal %}
-      /><label
-      for="id_cla_none"> <b>None right now.</b>
-      If you don't want to do this now, you can go to your user settings
-      page and do it later.<br/>
-      </label></li>
-  <li><input type="radio" id="id_cla_individual" value="individual" name="cla"
-      {% ifequal form.initial.cla 'individual' %}checked{% endifequal %}
-      /><label for="id_cla_individual"> <b>Individual.</b>
-      If you are going to be contributing code on your own, this is the one
-      you want.  You can sign this one online.</label></li>
-  <li><input type="radio" id="id_cla_corporate" value="corporate" name="cla"
-      {% ifequal form.initial.cla 'corporate' %}checked{% endifequal %}
-      /><label for="id_cla_corporate"> <b>Corporate.</b>
-      If you are going to be contributing code
-      on behalf of your company, this is the one you want.  We'll give
-      you a form that will need to printed, signed and sent back via
-      post, email or fax.</label></li>
-</ul>
-</td></tr>
-</tbody>
-</table>
-
-<input type="button" name="back" value="Back" onclick="document.welcome.submit();">
-<input type="submit" name="continue" value="Continue">
-
-</form>
-
-{%endblock%}
-
diff --git a/webapp/templates/settings_welcome_3_corporate.html b/webapp/templates/settings_welcome_3_corporate.html
deleted file mode 100644
index d99db04..0000000
--- a/webapp/templates/settings_welcome_3_corporate.html
+++ /dev/null
@@ -1,68 +0,0 @@
-{%extends "base.html"%}
-{%block title1%}Settings -{%endblock%}
-{%block body%}
-<h2>Hi!</h2>
-
-<form name="welcome" action="{{post_url}}" method="POST">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-{{form.dest}}
-<input type="hidden" name="step" value="3corp" />
-
-<p>Hi, welcome to Android.  Before we can get going, we need a little bit of
-information from you.</p>
-
-<table class="settings">
-<tr><th>Contributor License Grant</th></tr>
-<tr><td style="background-color: white; white-space: normal;">
-
-Please print out this document:
-<div style="padding-left: 30px; font-family: monospace;"><br/><a href="/static/corp_cla.html" target="_blank">Corporate Contributor License Agreement</a></div>
-
-<p>Next have an authorized person sign it.
-
-<p>Then send it via one of the following methods:
-
-<p>Email a scanned copy to:
-<div style="padding-left: 30px; font-family: monospace;">
-    cla-submissions@google.com
-</div>
-
-<p>Fax to:
-<div style="padding-left: 30px; font-family: monospace;">
-    (650) 887-1625
-</div>
-
-<p>Or via post to:
-
-<div style="padding-left: 30px; font-family: monospace;">
-    Google Inc.<br/>
-    Attn: Open Source Program Office<br/>
-    1600 Amphitheatre Pkwy<br/>
-    Building 43<br/>
-    Mountain View, CA 94043<br/>
-    U.S.A.<br/>
-</div>
-
-<p>We will contact you with further details when we receive your completed paperwork.
-
-</td></tr>
-<tr><td height=10></td></tr>
-</table>
-
-
-<input type="button" name="back" value="Back" onclick="document.welcome.submit();">
-<input type="submit" name="continue" value="Continue">
-
-</form>
-
-{%endblock%}
-
diff --git a/webapp/templates/settings_welcome_3_individual.html b/webapp/templates/settings_welcome_3_individual.html
deleted file mode 100644
index 079cdec..0000000
--- a/webapp/templates/settings_welcome_3_individual.html
+++ /dev/null
@@ -1,160 +0,0 @@
-{%extends "base.html"%}
-{%block title1%}Settings -{%endblock%}
-{%block body%}
-<h2>Hi!</h2>
-
-<form name="welcome" action="{{post_url}}" method="POST">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-{{form.dest}}
-<input type="hidden" name="step" value="3ind" />
-
-<p>Hi, welcome to Android.  Before we can get going, we need a little bit of
-information from you.</p>
-
-<table class="settings">
-<tr><th>Individual Contributor License Grant</th></tr>
-<tr><td style="background-color: white; white-space: normal;">
-
-<p
-{% if form.i_agree.errors %}
-    style="color: red;"
-{% endif %}
->Please read the following, and agree to it by typing the words "I AGREE" in the box below.</p>
-
-
-<div style="padding: 0 30px 0 30px;">
-
-
-<div dir="ltr"><p style="margin:0px">In
-order to clarify the intellectual property license granted with
-Contributions from any person or entity, the Android Open Source
-Project (the "Project") must have a Contributor License Grant ("Grant")
-on file that has been signed by each Contributor, indicating agreement
-to the license terms below. This license is for your protection as a
-Contributor as well as the protection of the Project and the Android
-Open Source Project Leads (the "Project Leads"); it does not change
-your rights to use your own Contributions for any other purpose.  If
-you have not already done so, please complete and send an original
-signed Grant to</p><blockquote style="border:1px dashed rgb(221, 221, 221);padding:10px">Google Inc.<br />Attn: Open Source Program Office<br />1600 Amphitheatre Pkwy<br />Building 43<br />Mountain View, CA 94043<br />U.S.A.<br /></blockquote><p style="margin:0px">Scanned
-agreements may also be emailed in PDF form to
-cla-submissions@google.com, sent by facsimile to (650) 887-1625, or
-signed electronically with the form below.</p><p style="margin:0px">Please read this document carefully before signing and keep a copy for your records.</p><pre style="border:1px solid silver;margin:2em;padding:0.5em;color:rgb(0, 112, 0);font-size:100%;background-color:rgb(245, 245, 245)"> <br /><br />Full name: ____________________________  E-Mail: ______________________<br />   <br />    <br />   <br />Mailing Address: ______________________  Telephone: ___________________<br />   <br />    <br />   <br />_______________________________________  Facsimile: ___________________<br />   <br />    <br />   <br />_______________________________________  Country:   ___________________<br />   <br />   <br /></pre><p style="margin:0px">You
-accept and agree to the following terms and conditions for Your present
-and future Contributions submitted to the Project. Except for the
-license granted herein to the Project Leads and recipients of software
-distributed by the Project Leads, You reserve all right, title, and
-interest in and to Your Contributions.</p><p style="margin:0px"><br /></p><ol style="margin-top:0px;margin-bottom:0px"><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Definitions.
-"You" (or "Your") shall mean the copyright owner or legal entity
-authorized by the copyright owner that is making this Grant. For legal
-entities, the entity making a Contribution and all other entities that
-control, are controlled by, or are under common control with that
-entity are considered to be a single Contributor. For the purposes of
-this definition, "control" means (i) the power, direct or indirect, to
-cause the direction or management of such entity, whether by contract
-or otherwise, or (ii) ownership of fifty percent (50%) or more of the
-outstanding shares, or (iii) beneficial ownership of such entity.
-"Contribution" shall mean any original work of authorship, including
-any modifications or additions to an existing work, that is
-intentionally submitted by You to the Project Leads for inclusion in,
-or documentation of, any of the products managed or maintained by the
-Project Leads (the "Work"). For the purposes of this definition,
-"submitted" means any form of electronic, verbal, or written
-communication sent to the Project Leads or their representatives,
-including but not limited to communication on electronic mailing lists,
-source code control systems, and issue tracking systems that are
-managed by, or on behalf of, the Project Leads for the purpose of
-discussing and improving the Work, but excluding communication that is
-conspicuously marked or otherwise designated in writing by You as "Not
-a Contribution."</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Grant
-of Copyright License. Subject to the terms and conditions of this
-Grant, You hereby grant to the Project Leads and to recipients of
-software distributed by the Project Leads a perpetual, worldwide,
-non-exclusive, no-charge, royalty-free, irrevocable copyright license
-to reproduce, prepare derivative works of, publicly display, publicly
-perform, sublicense, and distribute Your Contributions and such
-derivative works.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Grant
-of Patent License. Subject to the terms and conditions of this Grant,
-You hereby grant to the Project Leads and to recipients of software
-distributed by the Project Leads a perpetual, worldwide, non-exclusive,
-no-charge, royalty-free, irrevocable (except as stated in this section)
-patent license to make, have made, use, offer to sell, sell, import,
-and otherwise transfer the Work, where such license applies only to
-those patent claims licensable by You that are necessarily infringed by
-Your Contribution(s) alone or by combination of Your Contribution(s)
-with the Work to which such Contribution(s) was submitted. If any
-entity institutes patent litigation against You or any other entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-your Contribution, or the Work to which you have contributed,
-constitutes direct or contributory patent infringement, then any patent
-licenses granted to that entity under this Grant for that Contribution
-or Work shall terminate as of the date such litigation is filed.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
-represent that you are legally entitled to grant the above license. If
-your employer(s) has rights to intellectual property that you create
-that includes your Contributions, you represent that you have received
-permission to make Contributions on behalf of that employer, that your
-employer has waived such rights for your Contributions to the Project
-Leads, or that your employer has executed a separate Corporate
-Contributor License Grant with the Project Leads.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
-represent that each of Your Contributions is Your original creation
-(see section 7 for submissions on behalf of others). You represent that
-Your Contribution submissions include complete details of any
-third-party license or other restriction (including, but not limited
-to, related patents and trademarks) of which you are personally aware
-and which are associated with any part of Your Contributions.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
-are not expected to provide support for Your Contributions, except to
-the extent You desire to provide support. You may provide support for
-free, for a fee, or not at all. Unless required by applicable law or
-agreed to in writing, You provide Your Contributions on an "AS IS"
-BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-implied, including, without limitation, any warranties or conditions of
-TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
-PURPOSE.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Should
-You wish to submit work that is not Your original creation, You may
-submit it to the Project Leads separately from any Contribution,
-identifying the complete details of its source and of any license or
-other restriction (including, but not limited to, related patents,
-trademarks, and license agreements) of which you are personally aware,
-and conspicuously marking the work as "Submitted on behalf of a
-third-party: [named here]".  <span style="background-color:rgb(255, 255, 0)"><br /></span></p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
-agree to notify the Project Leads of any facts or circumstances of
-which you become aware that would make these representations inaccurate
-in any respect.</p></li></ol></div>
-
-
-</div>
-
-<p>I agree: {{form.i_agree}}</p>
-</td></tr>
-<tr><td height=10></td></tr>
-</table>
-
-<p>We need to collect the following information as well:
-<table cellspacing=0 cellpadding=0>
-<tr><td><b>Mailing Address</b></td>
-    <td>{{form.mailing_address}}{{form.mailing_address.errors}}</td></tr>
-<tr><td><b>Country</b></td>
-    <td>{{form.mailing_address_country}}{{form.mailing_address_country.errors}}</td></tr>
-<tr><td><b>Phone Number</b></td>
-    <td>{{form.phone_number}}{{form.phone_number.errors}}</td></tr>
-<tr><td><b>Fax Number (optional)</b></td>
-    <td>{{form.fax_number}}{{form.fax_number.errors}}</td></tr>
-</table>
-</p>
-
-
-<input type="button" name="back" value="Back" onclick="document.welcome.submit();">
-<input type="submit" name="continue" value="Continue">
-
-</form>
-
-{%endblock%}
-
diff --git a/webapp/templates/settings_welcome_4.html b/webapp/templates/settings_welcome_4.html
deleted file mode 100644
index a362578..0000000
--- a/webapp/templates/settings_welcome_4.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{%extends "base.html"%}
-{%block title1%}Settings -{%endblock%}
-{%block body%}
-<h2>Hi!</h2>
-
-<form name="welcome" action="{{post_url}}" method="POST">
-
-{{form.xsrf}}
-{%if form.xsrf.errors%}
-<ul>
-  {%for e in form.xsrf.errors%}
-    <li>{{e}}</li>
-  {%endfor%}
-</ul>
-{%endif%}
-
-{{form.dest}}
-<input type="hidden" name="step" value="4" />
-
-<p>Thanks!  Happy androiding.</p>
-
-
-<input type="submit" value="Done">
-</form>
-
-{%endblock%}
diff --git a/webapp/templates/starred.html b/webapp/templates/starred.html
deleted file mode 100644
index 25a732e..0000000
--- a/webapp/templates/starred.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{%extends "changes_base.html"%}
-
-{%block title1%}Starred Changes -{%endblock%}
-
-{%block body%}
-
-<script language="JavaScript" type="text/javascript"><!--
-function keyPressIntermediary(evt) {
-  return M_dashboardKeyPress(evt);
-}
-document.onkeypress = keyPressIntermediary;
--->
-</script>
-
-<h1>Starred Changes</h1>
-
-{{changes}}
-
-<script language="JavaScript" type="text/javascript"><!--
-var dashboardState = new M_DashboardState(window,'change');
--->
-</script>
-{%endblock%}
diff --git a/webapp/templates/unclaimed.html b/webapp/templates/unclaimed.html
deleted file mode 100644
index 33eb6eb..0000000
--- a/webapp/templates/unclaimed.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{%extends "changes_base.html"%}
-{%block title1%}Unclaimed changes -{%endblock%}
-
-{%block body%}
-
-<script language="JavaScript" type="text/javascript"><!--
-function keyPressIntermediary(evt) {
-  return M_dashboardKeyPress(evt);
-}
-document.onkeypress = keyPressIntermediary;
--->
-</script>
-
-
-<h1>Unclaimed changes</h1>
-
-{{changes}}
-
-
-<script language="JavaScript" type="text/javascript"><!--
-var dashboardState = new M_DashboardState(window,'change');
--->
-</script>
-
-{%endblock%}
diff --git a/webapp/templates/user.html b/webapp/templates/user.html
deleted file mode 100644
index 3a92ffb..0000000
--- a/webapp/templates/user.html
+++ /dev/null
@@ -1,27 +0,0 @@
-{%extends "changes_base.html"%}
-
-{%block title1%}Changes for {{email|real_name}} -{%endblock%}
-
-{%block body%}
-
-<script language="JavaScript" type="text/javascript"><!--
-function keyPressIntermediary(evt) {
-  return M_dashboardKeyPress(evt);
-}
-document.onkeypress = keyPressIntermediary;
--->
-</script>
-
-
-<h1>Changes for {{email|real_name}}</h1>
-
-{{changes}}
-
-<script language="JavaScript" type="text/javascript"><!--
-var dashboardState = new M_DashboardState(window,'change', 'M_myDashboardChangeMarker');
-function M_OnAfterPaged() {
-  dashboardState = new M_DashboardState(window,'change', 'M_myDashboardChangeMarker');
-}
--->
-</script>
-{%endblock%}
diff --git a/webapp/templates/user_popup.html b/webapp/templates/user_popup.html
deleted file mode 100644
index 95e8067..0000000
--- a/webapp/templates/user_popup.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="popup-name">
-<b>{{account.real_name}}</b><br/>
-{{account.email}}
-</div>
-<div class="popup-info">
-{%if not account.cla_verified%}<br/><i>No CLA</i>{%endif%}
-</div>
